From ff489a2f764419b9217a6bef5da7bbbf81556883 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Mon, 15 Mar 2021 12:14:48 -0400 Subject: [PATCH] implement human.match and embedding demo --- CHANGELOG.md | 5 +- README.md | 8 +- demo/embedding.html | 5 +- demo/embedding.js | 38 +- demo/faces.json | 102 ++ dist/demo-browser-index.js | 430 ++--- dist/demo-browser-index.js.map | 4 +- dist/human.esm-nobundle.js | 14 +- dist/human.esm-nobundle.js.map | 4 +- dist/human.esm.js | 416 ++--- dist/human.esm.js.map | 4 +- dist/human.js | 416 ++--- dist/human.js.map | 4 +- dist/human.node-gpu.js | 10 +- dist/human.node-gpu.js.map | 4 +- dist/human.node.js | 10 +- dist/human.node.js.map | 4 +- src/embedding/embedding.ts | 25 +- src/human.ts | 9 +- tsconfig.json | 4 +- typedoc/assets/icons.png | Bin 0 -> 9615 bytes typedoc/assets/icons@2x.png | Bin 0 -> 28144 bytes typedoc/assets/js/search.js | 2 +- typedoc/assets/typedoc.css | 2494 ++++++++++++++++++++++++++++ typedoc/assets/typedoc.js | 248 +++ typedoc/assets/widgets.png | Bin 0 -> 480 bytes typedoc/assets/widgets@2x.png | Bin 0 -> 855 bytes typedoc/classes/human.html | 49 +- typedoc/index.html | 5 +- types/src/embedding/embedding.d.ts | 14 +- types/src/human.d.ts | 10 + wiki | 2 +- 32 files changed, 3642 insertions(+), 698 deletions(-) create mode 100644 demo/faces.json create mode 100644 typedoc/assets/icons.png create mode 100644 typedoc/assets/icons@2x.png create mode 100644 typedoc/assets/typedoc.css create mode 100644 typedoc/assets/typedoc.js create mode 100644 typedoc/assets/widgets.png create mode 100644 typedoc/assets/widgets@2x.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 98a45106..3aceb31d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # @vladmandic/human -Version: **1.1.4** +Version: **1.1.5** Description: **Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition** Author: **Vladimir Mandic ** @@ -9,8 +9,9 @@ Repository: **** ## Changelog -### **HEAD -> main** 2021/03/15 mandic00@live.com +### **1.1.5** 2021/03/15 mandic00@live.com +- full rebuild ### **1.1.4** 2021/03/14 mandic00@live.com diff --git a/README.md b/README.md index cb1fafd4..e4feb414 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ Check out [**Live Demo**](https://vladmandic.github.io/human/demo/index.html) fo - [**Code Repository**](https://github.com/vladmandic/human) - [**NPM Package**](https://www.npmjs.com/package/@vladmandic/human) - [**Issues Tracker**](https://github.com/vladmandic/human/issues) -- [**API Specification**](https://vladmandic.github.io/human/typedoc/classes/human.html) +- [**API Specification**](https://vladmandic.github.io/human/typedoc/index.html) - [**Change Log**](https://github.com/vladmandic/human/blob/main/CHANGELOG.md)
@@ -45,7 +45,7 @@ Check out [**Live Demo**](https://vladmandic.github.io/human/demo/index.html) fo - [**Usage & Functions**](https://github.com/vladmandic/human/wiki/Usage) - [**Configuration Details**](https://github.com/vladmandic/human/wiki/Configuration) - [**Output Details**](https://github.com/vladmandic/human/wiki/Outputs) -- [**Face Embedding and Recognition**](https://github.com/vladmandic/human/wiki/Embedding) +- [**Face Recognition & Face Embedding**](https://github.com/vladmandic/human/wiki/Embedding) - [**Gesture Recognition**](https://github.com/vladmandic/human/wiki/Gesture)
@@ -160,9 +160,7 @@ Build target is `JavaScript` **EMCAScript version 2018**
For details see [**Wiki Pages**](https://github.com/vladmandic/human/wiki) -and [**API Specification**](https://vladmandic.github.io/human/typedoc/classes/human.html) - - +and [**API Specification**](https://vladmandic.github.io/human/typedoc/index.html)
diff --git a/demo/embedding.html b/demo/embedding.html index b5aae282..d6a6309f 100644 --- a/demo/embedding.html +++ b/demo/embedding.html @@ -17,8 +17,7 @@ @@ -28,7 +27,7 @@

Selected Face (Enhanced):
-

Extracted Faces - click on a face to sort by simmilarity:
+

Extracted Faces - click on a face to sort by simmilarity and get a known face match:
diff --git a/demo/embedding.js b/demo/embedding.js index 6f744ab3..c55e15ec 100644 --- a/demo/embedding.js +++ b/demo/embedding.js @@ -27,6 +27,7 @@ const userConfig = { const human = new Human(userConfig); // new instance of human const all = []; // array that will hold all detected faces +let db = []; // array that holds all known faces function log(...msg) { const dt = new Date(); @@ -52,16 +53,18 @@ async function analyze(face) { const canvases = document.getElementsByClassName('face'); for (const canvas of canvases) { // calculate simmilarity from selected face to current one in the loop - const res = human.simmilarity(face.embedding, all[canvas.tag.sample][canvas.tag.face].embedding, 2); + const simmilarity = human.simmilarity(face.embedding, all[canvas.tag.sample][canvas.tag.face].embedding, 2); + // get best match + const person = (simmilarity > 0.99) ? await human.match(face.embedding, db) : { name: '' }; // draw the canvas and simmilarity score - canvas.title = res; + canvas.title = simmilarity; await human.tf.browser.toPixels(all[canvas.tag.sample][canvas.tag.face].tensor, canvas); const ctx = canvas.getContext('2d'); ctx.font = 'small-caps 1rem "Lato"'; ctx.fillStyle = 'rgba(0, 0, 0, 1)'; - ctx.fillText(`${(100 * res).toFixed(1)}%`, 3, 23); + ctx.fillText(`${(100 * simmilarity).toFixed(1)}% ${person.name}`, 3, 23); ctx.fillStyle = 'rgba(255, 255, 255, 1)'; - ctx.fillText(`${(100 * res).toFixed(1)}%`, 4, 24); + ctx.fillText(`${(100 * simmilarity).toFixed(1)}% ${person.name}`, 4, 24); } // sort all faces by simmilarity @@ -71,10 +74,11 @@ async function analyze(face) { .forEach((canvas) => sorted.appendChild(canvas)); } -async function faces(index, res) { +function faces(index, res, fileName) { all[index] = res.face; for (const i in res.face) { // log(res.face[i]); + all[index][i].fileName = fileName; const canvas = document.createElement('canvas'); canvas.tag = { sample: index, face: i }; canvas.width = 200; @@ -98,7 +102,7 @@ async function process(index, image) { const img = new Image(128, 128); img.onload = () => { // must wait until image is loaded human.detect(img).then((res) => { - faces(index, res); // then wait until image is analyzed + faces(index, res, image); // then wait until image is analyzed log('Add image:', index + 1, image, 'faces:', res.face.length); document.getElementById('images').appendChild(img); // and finally we can add it resolve(true); @@ -109,10 +113,24 @@ async function process(index, image) { }); } +async function createDB() { + log('Creating Faces DB...'); + for (const image of all) { + for (const face of image) db.push({ name: 'unknown', source: face.fileName, embedding: face.embedding }); + } + log(db); +} + async function main() { + // pre-load human models await human.load(); + + // download db with known faces + let res = await fetch('/demo/faces.json'); + db = (res && res.ok) ? await res.json() : []; + // enumerate all sample images in /assets - let res = await fetch('/assets'); + res = await fetch('/assets'); let dir = (res && res.ok) ? await res.json() : []; let images = dir.filter((img) => (img.endsWith('.jpg') && img.includes('sample'))); @@ -125,9 +143,15 @@ async function main() { log('Enumerated:', images.length, 'images'); for (let i = 0; i < images.length; i++) await process(i, images[i]); + // print stats const num = all.reduce((prev, cur) => prev += cur.length, 0); log('Extracted faces:', num, 'from images:', all.length); log(human.tf.engine().memory()); + + // if we didn't download db, generate it from current faces + if (!db || db.length === 0) await createDB(); + else log('Loaded Faces DB:', db.length); + log('Ready'); } diff --git a/demo/faces.json b/demo/faces.json new file mode 100644 index 00000000..b8a3086f --- /dev/null +++ b/demo/faces.json @@ -0,0 +1,102 @@ +[ + {"name":"ai","source":"/assets/human-sample-body.jpg","embedding":[2.632819652557373,-1.8534836769104004,2.0401153564453125,3.813028573989868,5.152552604675293,6.58387565612793,2.4153120517730713,2.082664728164673,0.3327586054801941,0.17205268144607544,5.120293140411377,1.617830753326416,3.1026532649993896,2.7013072967529297,0.1472797989845276,-1.038870930671692,0.3460932970046997,4.156325340270996,-1.9277260303497314,2.797736644744873,-1.2892825603485107,-0.932479739189148,-1.577938199043274,2.96262264251709,0.6901331543922424,0.7790188193321228,3.3546159267425537,4.170460224151611,2.4029643535614014,2.4153995513916016,7.513936996459961,0.760761559009552,3.87839412689209,2.2368433475494385,4.52793025970459,3.0775957107543945,7.378010272979736,0.693946361541748,0.9722083806991577,-0.08031022548675537,0.8972775936126709,3.0948381423950195,-2.927286386489868,2.2278172969818115,1.4562621116638184,3.585336446762085,0.25836098194122314,0.8692380785942078,-1.0305207967758179,4.409884452819824,2.7043652534484863,0.24168598651885986,1.4065028429031372,3.4056718349456787,-2.670849323272705,-0.6984208822250366,1.8843040466308594,3.7271180152893066,-0.6245003938674927,2.029428005218506,1.0139710903167725,-0.1857536882162094,7.380436420440674,-0.6864844560623169,4.08783483505249,2.797520399093628,2.552427291870117,1.3243433237075806,3.0222601890563965,-1.2373747825622559,1.5369131565093994,2.3841617107391357,6.338289260864258,-0.05198868364095688,3.736786365509033,2.097527503967285,2.985576868057251,0.7369013428688049,1.422063946723938,1.7589749097824097,2.2876720428466797,-3.4810562133789062,0.0411430224776268,-1.3324987888336182,5.488070964813232,5.893683910369873,-1.6745970249176025,4.128052234649658,5.796738147735596,-0.47520363330841064,1.6041868925094604,-0.07592896372079849,3.408623695373535,-3.963695764541626,0.8829345703125,1.9032931327819824,-0.03466296195983887,3.512486696243286,0.8704050183296204,1.3959259986877441,3.3144397735595703,3.5231525897979736,2.423771619796753,-1.4420123100280762,-1.1175397634506226,-0.2175596058368683,1.4456498622894287,3.4149553775787354,1.7066714763641357,7.442162036895752,0.19832634925842285,2.695158004760742,-1.9821420907974243,-1.7717232704162598,2.385333776473999,3.5953750610351562,4.657474040985107,3.8053250312805176,-2.5774874687194824,7.2682576179504395,7.651699542999268,2.051459312438965,1.3751811981201172,1.5495699644088745,2.8508734703063965,1.8448424339294434,4.445915222167969,5.99959135055542]}, + {"name":"ai","source":"/assets/human-sample-upper.jpg","embedding":[2.6325736045837402,-1.896245002746582,2.045835256576538,3.847133159637451,5.199227333068848,6.546524524688721,2.3987605571746826,2.085646629333496,0.45049378275871277,0.11018520593643188,5.097535610198975,1.6303584575653076,3.1931252479553223,2.606764793395996,0.18255586922168732,-1.0074219703674316,0.34237802028656006,4.104962348937988,-1.905716896057129,2.843079090118408,-1.248280644416809,-0.9019556045532227,-1.5919030904769897,2.982581853866577,0.6626156568527222,0.7556057572364807,3.3284759521484375,4.159197807312012,2.3414506912231445,2.551730155944824,7.529127597808838,0.6663525700569153,3.860088586807251,2.219045400619507,4.572721004486084,3.0434253215789795,7.454827308654785,0.6660099029541016,0.9399895668029785,-0.0026611322537064552,0.8508875966072083,3.1566810607910156,-2.9671425819396973,2.204562187194824,1.4100857973098755,3.5934159755706787,0.2809133231639862,0.8983461260795593,-0.9524282813072205,4.447203159332275,2.683058738708496,0.2422364056110382,1.4247742891311646,3.383274555206299,-2.7009270191192627,-0.6786880493164062,1.8709454536437988,3.827646493911743,-0.7044640183448792,2.0185844898223877,1.0230170488357544,-0.18107351660728455,7.3489909172058105,-0.6838576793670654,4.070804119110107,2.829263925552368,2.618147134780884,1.269655466079712,2.9531140327453613,-1.2589155435562134,1.608024001121521,2.371519088745117,6.4716057777404785,-0.026894595474004745,3.727175712585449,2.062455177307129,3.024171829223633,0.7058811187744141,1.362200379371643,1.7762037515640259,2.306410312652588,-3.4347877502441406,0.08676023036241531,-1.3611153364181519,5.6003193855285645,5.980785846710205,-1.643685221672058,4.166049957275391,5.7857537269592285,-0.4724814295768738,1.6234017610549927,-0.0553336963057518,3.416914463043213,-3.9784035682678223,0.8990692496299744,1.865018606185913,-0.044466495513916016,3.5496091842651367,0.864181399345398,1.4057711362838745,3.3665645122528076,3.5534827709198,2.375967502593994,-1.4002387523651123,-1.1034283638000488,-0.16382050514221191,1.4234563112258911,3.405228614807129,1.6537060737609863,7.41360330581665,0.21080166101455688,2.7163336277008057,-1.9445806741714478,-1.7395108938217163,2.447376251220703,3.615108013153076,4.691690921783447,3.758175849914551,-2.612560987472534,7.267806529998779,7.683725357055664,2.0505924224853516,1.4103114604949951,1.5260381698608398,2.8641774654388428,1.8348380327224731,4.470002174377441,6.017690181732178]}, + {"name":"vlad","source":"/assets/sample-me.jpg","embedding":[2.5900189876556396,-1.8493444919586182,1.9835259914398193,3.8217780590057373,5.1665873527526855,6.525186061859131,2.561455726623535,2.087310552597046,0.38029658794403076,0.14207765460014343,5.098351955413818,1.702004313468933,3.2160849571228027,2.595149517059326,0.12998367846012115,-1.0525381565093994,0.32646435499191284,4.145035266876221,-1.9011698961257935,2.7681307792663574,-1.2871737480163574,-0.9531185626983643,-1.5329985618591309,3.061450481414795,0.7060976028442383,0.7504143714904785,3.359311819076538,4.232873916625977,2.359882354736328,2.4927213191986084,7.454580783843994,0.672012209892273,3.9339377880096436,2.2296788692474365,4.529542922973633,3.0070080757141113,7.31287956237793,0.6944543719291687,0.9653680324554443,-0.0564618855714798,0.8919284343719482,3.110649585723877,-2.978621006011963,2.1861677169799805,1.4273782968521118,3.6517441272735596,0.28165578842163086,0.891737163066864,-0.9719194173812866,4.503098964691162,2.713473081588745,0.2578325867652893,1.356194257736206,3.3807530403137207,-2.636099100112915,-0.7481908798217773,1.885284185409546,3.788494348526001,-0.7228155732154846,1.9114784002304077,1.076922059059143,-0.16143286228179932,7.324334621429443,-0.5901540517807007,4.10653829574585,2.8679914474487305,2.5622291564941406,1.2447638511657715,2.9062273502349854,-1.2582941055297852,1.6216624975204468,2.339794635772705,6.379128932952881,-0.12090913206338882,3.709955930709839,2.065856456756592,2.954566240310669,0.7436725497245789,1.2972092628479004,1.7756400108337402,2.3161911964416504,-3.483646869659424,0.07969698309898376,-1.3553637266159058,5.613911151885986,5.947682857513428,-1.6782454252243042,4.185906410217285,5.730557918548584,-0.4087097942829132,1.6057591438293457,-0.005825720727443695,3.5186614990234375,-3.990689516067505,0.8584508299827576,1.8990256786346436,0.08882451057434082,3.4892165660858154,0.7851445078849792,1.4427073001861572,3.3177545070648193,3.566845417022705,2.3791451454162598,-1.4272167682647705,-1.1488851308822632,-0.16280926764011383,1.4787423610687256,3.410184621810913,1.6682499647140503,7.444202423095703,0.16663086414337158,2.6942665576934814,-2.044496536254883,-1.8098183870315552,2.403891086578369,3.6315131187438965,4.695732593536377,3.698683023452759,-2.554070234298706,7.310980319976807,7.687976360321045,2.024632692337036,1.4011845588684082,1.5832425355911255,2.8331968784332275,1.8440544605255127,4.51305627822876,6.056835174560547]}, + {"name":"alexis","source":"/assets/sample1.jpg","embedding":[2.6220028400421143,-1.9634236097335815,2.0719263553619385,3.8394839763641357,5.16372537612915,6.609616756439209,2.4937000274658203,2.0811586380004883,0.40155065059661865,0.0837935209274292,5.06865930557251,1.6711525917053223,3.2903082370758057,2.555140495300293,0.19408650696277618,-0.9758405685424805,0.3413245677947998,4.155128002166748,-1.8846684694290161,2.799661159515381,-1.2843937873840332,-1.010032057762146,-1.4888741970062256,3.0491511821746826,0.6336706876754761,0.767266571521759,3.349506139755249,4.245261192321777,2.440908908843994,2.7017760276794434,7.455664157867432,0.6184694766998291,3.883138418197632,2.1539723873138428,4.520030975341797,2.9928669929504395,7.375985622406006,0.6717917323112488,0.9712884426116943,-0.0100853918120265,0.8526095151901245,3.039827585220337,-2.9766886234283447,2.1293575763702393,1.4415464401245117,3.605546474456787,0.31351521611213684,0.921099066734314,-0.9445091485977173,4.474116325378418,2.663583993911743,0.19648519158363342,1.4195882081985474,3.3377203941345215,-2.5879464149475098,-0.7453886866569519,1.8901017904281616,3.7913665771484375,-0.6964565515518188,1.9578710794448853,1.1180946826934814,-0.2538634240627289,7.320497035980225,-0.6793853044509888,4.040229320526123,2.6853036880493164,2.5834295749664307,1.2822095155715942,2.8107082843780518,-1.2351183891296387,1.6115974187850952,2.334956169128418,6.286960124969482,-0.05626554414629936,3.7349417209625244,2.053333282470703,2.998037815093994,0.662434458732605,1.3509551286697388,1.7625104188919067,2.2246735095977783,-3.468756675720215,0.13874182105064392,-1.390148639678955,5.606996059417725,5.896704196929932,-1.5269999504089355,4.186192512512207,5.798532009124756,-0.41770973801612854,1.5981247425079346,-0.037744611501693726,3.5603857040405273,-4.01340913772583,0.8978443145751953,1.9589396715164185,0.08262515068054199,3.5976979732513428,1.0631425380706787,1.4336599111557007,3.3175597190856934,3.4941563606262207,2.314587116241455,-1.3502159118652344,-1.159122347831726,-0.15121373534202576,1.4071160554885864,3.3126349449157715,1.6990278959274292,7.425572872161865,0.17488983273506165,2.7493433952331543,-1.9803650379180908,-1.8188410997390747,2.3936734199523926,3.595047950744629,4.6732707023620605,3.7390201091766357,-2.6092052459716797,7.256951332092285,7.833373069763184,2.0144686698913574,1.4203150272369385,1.4346904754638672,2.8626956939697266,1.88999342918396,4.49700403213501,6.112844467163086]}, + {"name":"sarah","source":"/assets/sample1.jpg","embedding":[2.559656858444214,-1.8411784172058105,1.9883928298950195,3.814300775527954,5.15916109085083,6.5470733642578125,2.4963133335113525,2.13112473487854,0.3156498372554779,0.158963143825531,5.089685916900635,1.6251804828643799,3.1654155254364014,2.5685062408447266,0.08400832116603851,-1.0481151342391968,0.3320004940032959,4.171568870544434,-1.9581518173217773,2.8377809524536133,-1.2709572315216064,-0.9380781054496765,-1.5368053913116455,3.10551118850708,0.7219958901405334,0.7117589712142944,3.3288683891296387,4.131329536437988,2.358229398727417,2.470755100250244,7.502570629119873,0.7091884016990662,3.897678852081299,2.141340494155884,4.475994110107422,3.0033364295959473,7.360060214996338,0.652222752571106,0.93265700340271,0.08409441262483597,0.9100633263587952,3.110537052154541,-2.9419758319854736,2.1610357761383057,1.3829855918884277,3.6733782291412354,0.30465179681777954,0.8947247862815857,-1.0310540199279785,4.578690528869629,2.703425884246826,0.2633908689022064,1.3101028203964233,3.348618745803833,-2.679436445236206,-0.7476475238800049,1.804710865020752,3.753554105758667,-0.6420974135398865,1.9241379499435425,1.0569149255752563,-0.08214875310659409,7.305266857147217,-0.6186181306838989,4.024109363555908,2.877620220184326,2.5545825958251953,1.3004024028778076,2.918537139892578,-1.2595055103302002,1.5226476192474365,2.2886857986450195,6.3548502922058105,-0.1276393085718155,3.7028744220733643,2.0300443172454834,2.868292808532715,0.7616357207298279,1.3133074045181274,1.76425302028656,2.351719379425049,-3.482783079147339,0.12931595742702484,-1.396401286125183,5.533890724182129,5.920528411865234,-1.6194854974746704,4.152456283569336,5.670758247375488,-0.4276384115219116,1.625288724899292,-0.0012586042284965515,3.513430595397949,-4.05360221862793,0.817730724811554,1.9467147588729858,-0.00031447410583496094,3.437225103378296,0.7784369587898254,1.380751609802246,3.334360361099243,3.5351996421813965,2.392747640609741,-1.4375560283660889,-1.210105299949646,-0.1848624050617218,1.4695719480514526,3.508028507232666,1.6344435214996338,7.466677665710449,0.18665343523025513,2.6778829097747803,-2.086676836013794,-1.8707185983657837,2.4330286979675293,3.6451613903045654,4.761197090148926,3.683509349822998,-2.513519287109375,7.265147686004639,7.736569881439209,2.0202269554138184,1.4263200759887695,1.643897533416748,2.80124568939209,1.7617441415786743,4.487902641296387,6.02086067199707]}, + {"name":"christina","source":"/assets/sample1.jpg","embedding":[2.5474510192871094,-1.8390625715255737,2.0940897464752197,3.84991455078125,5.1701507568359375,6.546799182891846,2.538175344467163,2.1566545963287354,0.24814216792583466,0.2558648884296417,5.11081600189209,1.7041875123977661,3.166745901107788,2.725644111633301,0.06863529980182648,-1.0326486825942993,0.3032193183898926,4.169030666351318,-1.927351951599121,2.8324532508850098,-1.27372145652771,-0.9550896286964417,-1.5480897426605225,3.0963008403778076,0.6578935384750366,0.7318544983863831,3.428626537322998,4.229432106018066,2.41568660736084,2.4594857692718506,7.456352710723877,0.7859219312667847,4.003815650939941,2.2024242877960205,4.595172882080078,3.0415537357330322,7.37786865234375,0.6894636154174805,0.9754812717437744,-0.0002488798927515745,0.930666446685791,3.070913791656494,-2.974440574645996,2.2689833641052246,1.4118547439575195,3.651376724243164,0.23726291954517365,0.9349232912063599,-0.9866828322410583,4.559563159942627,2.719599485397339,0.2282407432794571,1.3791648149490356,3.2755444049835205,-2.76654052734375,-0.8746973872184753,1.8062297105789185,3.805222272872925,-0.653156042098999,1.9753741025924683,1.0574934482574463,-0.10877799242734909,7.392546653747559,-0.7023404836654663,4.11200475692749,2.801875352859497,2.5769405364990234,1.3194198608398438,2.8652329444885254,-1.1750081777572632,1.5035936832427979,2.2190589904785156,6.455835342407227,-0.14468686282634735,3.6559853553771973,2.0674757957458496,2.991123676300049,0.7158001661300659,1.4730582237243652,1.778687834739685,2.3486781120300293,-3.4624900817871094,0.09534092247486115,-1.3551560640335083,5.462046146392822,5.804930210113525,-1.6633799076080322,4.11922025680542,5.736302852630615,-0.41297489404678345,1.6106059551239014,-0.08982303738594055,3.5729377269744873,-4.098006248474121,0.851313591003418,1.8363978862762451,-0.05999279022216797,3.579502820968628,0.8745561242103577,1.3772963285446167,3.2512636184692383,3.5859646797180176,2.5350887775421143,-1.4299845695495605,-1.2183302640914917,-0.19015012681484222,1.4673720598220825,3.484694719314575,1.7306519746780396,7.480323314666748,0.2592816650867462,2.766357183456421,-2.058363437652588,-1.7790416479110718,2.4070167541503906,3.6133310794830322,4.643085479736328,3.7754967212677,-2.494140148162842,7.26638126373291,7.7269511222839355,1.9882006645202637,1.4422607421875,1.5413992404937744,2.871943712234497,1.8368159532546997,4.475429058074951,5.989312171936035]}, + {"name":"flower","source":"/assets/sample2.jpg","embedding":[2.5208733081817627,-1.8328635692596436,2.011408805847168,3.8250861167907715,5.155392169952393,6.576012134552002,2.461378335952759,2.1034634113311768,0.3453800678253174,0.1465851366519928,5.096503257751465,1.685908317565918,3.2063848972320557,2.6328108310699463,0.05033694580197334,-1.0595507621765137,0.33150482177734375,4.144128322601318,-1.9444507360458374,2.830080986022949,-1.2834914922714233,-0.9204854965209961,-1.5467119216918945,2.9751477241516113,0.6619331240653992,0.7650797963142395,3.386850357055664,4.276195049285889,2.3595707416534424,2.5014395713806152,7.494724750518799,0.6617620587348938,3.9079294204711914,2.2004661560058594,4.496933937072754,3.020428419113159,7.359061241149902,0.6976069211959839,0.9318602085113525,-0.014437798410654068,0.8869738578796387,3.0595216751098633,-2.92421555519104,2.221475839614868,1.475831151008606,3.66068434715271,0.23513798415660858,0.9509623050689697,-0.9475982189178467,4.535303115844727,2.7236828804016113,0.1853484958410263,1.4162706136703491,3.30045747756958,-2.7770724296569824,-0.8138395547866821,1.802795171737671,3.7847740650177,-0.7177636027336121,1.9085654020309448,1.0506608486175537,-0.16736182570457458,7.289915084838867,-0.6059466004371643,4.071817398071289,2.7687880992889404,2.5523319244384766,1.311021089553833,2.856027126312256,-1.258541226387024,1.5424940586090088,2.317599058151245,6.3892717361450195,-0.12249530851840973,3.657728433609009,2.034860134124756,3.012681245803833,0.6856632232666016,1.3631607294082642,1.791754961013794,2.3297104835510254,-3.475127935409546,0.1147216409444809,-1.4617308378219604,5.538691997528076,5.909744739532471,-1.6474345922470093,4.150871276855469,5.727175235748291,-0.36504504084587097,1.5302561521530151,-0.06819726526737213,3.5091958045959473,-4.05015230178833,0.8442506194114685,1.8371208906173706,0.0261002779006958,3.537003993988037,0.8417278528213501,1.4675415754318237,3.2928466796875,3.527146100997925,2.4676685333251953,-1.436280369758606,-1.1569126844406128,-0.20871609449386597,1.5128544569015503,3.4452524185180664,1.6988874673843384,7.48867130279541,0.2106838822364807,2.722097158432007,-2.1071319580078125,-1.8191025257110596,2.3951025009155273,3.6673693656921387,4.669248580932617,3.721266984939575,-2.5216219425201416,7.25785493850708,7.758392333984375,2.0608115196228027,1.444704532623291,1.579551100730896,2.868480682373047,1.8316733837127686,4.4774274826049805,6.008660316467285]}, + {"name":"mia","source":"/assets/sample2.jpg","embedding":[2.58931303024292,-1.8655214309692383,2.0702033042907715,3.8305766582489014,5.1206583976745605,6.528889179229736,2.454308271408081,2.1161539554595947,0.3870100677013397,0.1646241396665573,5.1086883544921875,1.6367902755737305,3.1830697059631348,2.5703682899475098,0.155397430062294,-1.033541202545166,0.3479963541030884,4.129441261291504,-1.933590054512024,2.9342260360717773,-1.2971206903457642,-0.9161542057991028,-1.5492781400680542,3.088886260986328,0.7201505303382874,0.7107810974121094,3.352221965789795,4.162141799926758,2.4029922485351562,2.5508899688720703,7.453816890716553,0.6854913830757141,3.9114749431610107,2.2133312225341797,4.514401435852051,3.0179736614227295,7.3805060386657715,0.6938313245773315,0.9633960723876953,0.015146762132644653,0.9296491742134094,3.1731667518615723,-2.932488441467285,2.1700878143310547,1.393710732460022,3.643794298171997,0.28895238041877747,0.8899999260902405,-0.9998338222503662,4.528660297393799,2.6515166759490967,0.2068997323513031,1.328238844871521,3.2943027019500732,-2.691952705383301,-0.7138586044311523,1.812699556350708,3.8573343753814697,-0.7057433724403381,2.0070550441741943,1.0019334554672241,-0.187765970826149,7.3476386070251465,-0.6688811779022217,4.07995080947876,2.9095945358276367,2.630448341369629,1.277847409248352,2.92563533782959,-1.258184552192688,1.5386470556259155,2.233611583709717,6.4917707443237305,-0.10675709694623947,3.671114444732666,2.050348997116089,2.919762134552002,0.684817373752594,1.286055326461792,1.7324410676956177,2.3198206424713135,-3.440401554107666,0.11025892198085785,-1.4229472875595093,5.498158931732178,5.995183944702148,-1.6565468311309814,4.148870468139648,5.754525661468506,-0.338323712348938,1.6517006158828735,-0.03737334907054901,3.499523639678955,-4.001281261444092,0.8591251373291016,1.8800954818725586,0.07392716407775879,3.5119521617889404,0.7812492847442627,1.4381043910980225,3.356397867202759,3.5600996017456055,2.332627296447754,-1.389826774597168,-1.0870426893234253,-0.14451314508914948,1.3702844381332397,3.442629337310791,1.6623897552490234,7.446126461029053,0.21568149328231812,2.7353978157043457,-1.9896869659423828,-1.894898533821106,2.4696900844573975,3.6113762855529785,4.67072868347168,3.8188540935516357,-2.498027801513672,7.358267307281494,7.68994665145874,2.034151792526245,1.4268362522125244,1.529801368713379,2.8145062923431396,1.8412926197052002,4.5145158767700195,6.0213799476623535]}, + {"name":"unknown","source":"/assets/sample3.jpg","embedding":[2.613889217376709,-1.9037662744522095,2.0397469997406006,3.8060097694396973,5.132326126098633,6.5655646324157715,2.4677011966705322,2.0627517700195312,0.40967708826065063,0.1507280170917511,5.120298385620117,1.6028329133987427,3.157466411590576,2.641305446624756,0.187655970454216,-1.06019926071167,0.31065523624420166,4.107962131500244,-1.9069300889968872,2.816370725631714,-1.2767738103866577,-0.9193957448005676,-1.5388318300247192,3.04818058013916,0.6568799614906311,0.6860447525978088,3.377952814102173,4.198588848114014,2.4084935188293457,2.4840199947357178,7.518953323364258,0.7087287306785583,3.8497254848480225,2.2229809761047363,4.495811462402344,3.0019993782043457,7.379114151000977,0.707609236240387,0.9713938236236572,-0.03308345004916191,0.8931179642677307,3.1325747966766357,-2.8984997272491455,2.1771960258483887,1.3964191675186157,3.6216750144958496,0.23771698772907257,0.8991860747337341,-1.0329704284667969,4.501802921295166,2.6717801094055176,0.20888003706932068,1.4136016368865967,3.3906137943267822,-2.6716787815093994,-0.7706736922264099,1.8478940725326538,3.7900164127349854,-0.6807656288146973,1.9766812324523926,1.0278831720352173,-0.20999924838542938,7.3536553382873535,-0.6647384762763977,4.089972972869873,2.7865073680877686,2.5901124477386475,1.2593750953674316,2.9156911373138428,-1.2541096210479736,1.5748804807662964,2.329035758972168,6.336118221282959,-0.09822974354028702,3.696476697921753,2.0257418155670166,2.9598429203033447,0.7170559167861938,1.3671735525131226,1.7425737380981445,2.281400203704834,-3.464808702468872,0.08304823935031891,-1.3698694705963135,5.534830093383789,5.9364166259765625,-1.629414677619934,4.145874977111816,5.773837566375732,-0.4404506981372833,1.5636076927185059,-0.02603192627429962,3.424870014190674,-3.9663665294647217,0.8751355409622192,1.896346092224121,0.01605367660522461,3.5543112754821777,0.8562659025192261,1.4480621814727783,3.3099560737609863,3.560811996459961,2.3690741062164307,-1.3867627382278442,-1.0912492275238037,-0.16526100039482117,1.4186567068099976,3.4061167240142822,1.7010079622268677,7.425540447235107,0.17899107933044434,2.7201597690582275,-1.9745534658432007,-1.890002727508545,2.424260139465332,3.561357021331787,4.654160976409912,3.793438196182251,-2.577291250228882,7.290639400482178,7.653107643127441,2.061249256134033,1.3730158805847168,1.5004684925079346,2.851680040359497,1.826780080795288,4.504153251647949,6.006846904754639]}, + {"name":"sarah","source":"/assets/sample3.jpg","embedding":[2.5678751468658447,-1.854535698890686,2.0133752822875977,3.802790880203247,5.11942720413208,6.543687343597412,2.5426294803619385,2.142937421798706,0.3547900319099426,0.15789464116096497,5.081432819366455,1.6505811214447021,3.226499557495117,2.5986557006835938,0.11870115250349045,-1.0762428045272827,0.30978256464004517,4.143486976623535,-1.899134874343872,2.7840795516967773,-1.30295991897583,-0.9069166779518127,-1.5439162254333496,3.0950050354003906,0.712689995765686,0.7287704944610596,3.358452320098877,4.2049970626831055,2.3741910457611084,2.5136351585388184,7.431371688842773,0.6591036319732666,3.9734585285186768,2.2081401348114014,4.5156731605529785,3.007689952850342,7.320577144622803,0.7066023349761963,1.0118331909179688,-0.026494890451431274,0.8982194662094116,3.071955680847168,-2.934901237487793,2.1900579929351807,1.4019594192504883,3.662290573120117,0.24839146435260773,0.8988685607910156,-0.9675729870796204,4.5230712890625,2.662419080734253,0.26583415269851685,1.3379484415054321,3.331080913543701,-2.6381330490112305,-0.781671404838562,1.8491718769073486,3.8344552516937256,-0.6884869337081909,1.942716121673584,1.059956431388855,-0.14821475744247437,7.316732883453369,-0.5982552170753479,4.079000473022461,2.7969889640808105,2.5435049533843994,1.2776423692703247,2.8520278930664062,-1.2307941913604736,1.602138876914978,2.250831365585327,6.325702667236328,-0.08876156061887741,3.653956174850464,2.0232722759246826,2.910655975341797,0.7504196763038635,1.2921892404556274,1.7424721717834473,2.2890071868896484,-3.4569051265716553,0.06365111470222473,-1.3409411907196045,5.623508453369141,5.990020275115967,-1.6249878406524658,4.204540729522705,5.728385925292969,-0.4163529872894287,1.6291613578796387,-0.009912706911563873,3.518287420272827,-3.9828732013702393,0.8304682970046997,1.9309213161468506,0.07673263549804688,3.48518705368042,0.8360035419464111,1.3707478046417236,3.2816388607025146,3.562530517578125,2.398526906967163,-1.4197702407836914,-1.1652146577835083,-0.13660141825675964,1.4513131380081177,3.4513447284698486,1.7265431880950928,7.436068534851074,0.16712263226509094,2.72625732421875,-2.0651769638061523,-1.8272901773452759,2.4016427993774414,3.6309189796447754,4.649004936218262,3.6635098457336426,-2.5352165699005127,7.273446083068848,7.70109748840332,2.054104804992676,1.3771010637283325,1.5667425394058228,2.850579261779785,1.834526538848877,4.482205390930176,6.03590202331543]}, + {"name":"erika","source":"/assets/sample3.jpg","embedding":[2.5636441707611084,-1.9434462785720825,1.9789983034133911,3.7881662845611572,5.190979480743408,6.5063700675964355,2.451991558074951,2.111708402633667,0.34991687536239624,0.09047183394432068,5.081074237823486,1.6423938274383545,3.288255214691162,2.6171374320983887,0.11458683758974075,-1.0653595924377441,0.3236386775970459,4.147320747375488,-1.9271814823150635,2.7694029808044434,-1.3086574077606201,-0.9457217454910278,-1.5469216108322144,3.0096395015716553,0.7154858708381653,0.7648659944534302,3.339785099029541,4.203872203826904,2.3662915229797363,2.584550619125366,7.495005130767822,0.6364900469779968,3.9254329204559326,2.227773427963257,4.5202956199646,3.03938364982605,7.404693126678467,0.644219160079956,0.9545771479606628,0.032373085618019104,0.8963852524757385,3.068540573120117,-3.0111911296844482,2.1507511138916016,1.439998745918274,3.6131179332733154,0.27355676889419556,0.8402045369148254,-0.9891458749771118,4.483809471130371,2.6740529537200928,0.26393386721611023,1.3572726249694824,3.380192756652832,-2.592221975326538,-0.7040075659751892,1.8462570905685425,3.7719900608062744,-0.6607531905174255,1.9217361211776733,1.0670931339263916,-0.16267354786396027,7.352175235748291,-0.568188488483429,4.0495924949646,2.860386848449707,2.587672710418701,1.2374261617660522,2.8451030254364014,-1.2637789249420166,1.6807329654693604,2.3629119396209717,6.427724838256836,-0.05873030424118042,3.7120461463928223,2.0684943199157715,3.002655506134033,0.6916741132736206,1.3406771421432495,1.73896062374115,2.298091173171997,-3.4654996395111084,0.09394986927509308,-1.3416415452957153,5.588557243347168,6.006748676300049,-1.6157917976379395,4.1794304847717285,5.698288917541504,-0.4683243930339813,1.5974845886230469,0.005358293652534485,3.4871628284454346,-4.004045009613037,0.8781707286834717,1.9275438785552979,0.052112698554992676,3.5029938220977783,0.8710107803344727,1.4160504341125488,3.36556077003479,3.524561882019043,2.3689632415771484,-1.4114916324615479,-1.148003101348877,-0.18127994239330292,1.4347947835922241,3.3993468284606934,1.7131335735321045,7.429121494293213,0.18972858786582947,2.6643428802490234,-1.9611492156982422,-1.805516004562378,2.4146101474761963,3.66634464263916,4.735147953033447,3.7396738529205322,-2.520770311355591,7.289150238037109,7.711277961730957,2.0213301181793213,1.4589285850524902,1.5782992839813232,2.8279688358306885,1.858110785484314,4.491386413574219,6.051551342010498]}, + {"name":"tasia","source":"/assets/sample4.jpg","embedding":[2.5260939598083496,-1.8774821758270264,2.0289790630340576,3.8256406784057617,5.1311187744140625,6.535203456878662,2.512928009033203,2.1377346515655518,0.3247241973876953,0.14730045199394226,5.102212429046631,1.6797044277191162,3.217525005340576,2.6251440048217773,0.08409097790718079,-1.0457919836044312,0.3475184440612793,4.169931411743164,-1.9110548496246338,2.7959039211273193,-1.2547657489776611,-0.9040023684501648,-1.5432071685791016,3.065021276473999,0.68393474817276,0.7143710255622864,3.392162561416626,4.217555522918701,2.3475210666656494,2.5141971111297607,7.490817070007324,0.6900362968444824,3.9332518577575684,2.1597437858581543,4.545146465301514,3.0797622203826904,7.363931655883789,0.659468948841095,0.9386814832687378,0.022774722427129745,0.9095640182495117,3.0721383094787598,-2.9030351638793945,2.2076761722564697,1.4942361116409302,3.62968373298645,0.24206408858299255,0.9324575066566467,-0.9222999811172485,4.531370639801025,2.707585573196411,0.23825934529304504,1.3557029962539673,3.2980806827545166,-2.7477924823760986,-0.7924832105636597,1.8175523281097412,3.7913336753845215,-0.7198175191879272,1.9419769048690796,1.0880711078643799,-0.14198383688926697,7.3039469718933105,-0.6149673461914062,4.0281572341918945,2.837103843688965,2.6037001609802246,1.2716424465179443,2.855720043182373,-1.239786982536316,1.5997086763381958,2.282073736190796,6.386008262634277,-0.09429975599050522,3.682377815246582,2.0353212356567383,2.977858304977417,0.7019906044006348,1.342715859413147,1.7723594903945923,2.3123579025268555,-3.491102695465088,0.05277327448129654,-1.3647246360778809,5.574000358581543,5.983837604522705,-1.5873631238937378,4.172670841217041,5.669782638549805,-0.38247403502464294,1.574684977531433,-0.011229477822780609,3.5270884037017822,-4.082957744598389,0.8843024373054504,1.9162167310714722,-0.015400886535644531,3.5047852993011475,0.8279033899307251,1.4387054443359375,3.298377513885498,3.5535221099853516,2.494525909423828,-1.4356169700622559,-1.1636680364608765,-0.21209822595119476,1.487468957901001,3.4861905574798584,1.690018653869629,7.449258804321289,0.24139732122421265,2.688352108001709,-2.035331964492798,-1.7855831384658813,2.363762140274048,3.6339125633239746,4.717222690582275,3.7219765186309814,-2.5593039989471436,7.294679641723633,7.752767086029053,2.0341949462890625,1.470762014389038,1.5740511417388916,2.853980779647827,1.839569330215454,4.483726978302002,6.014623165130615]}, + {"name":"jen","source":"/assets/sample4.jpg","embedding":[2.5169260501861572,-1.8775805234909058,1.9447237253189087,3.788177490234375,5.087573528289795,6.517879486083984,2.527571201324463,2.0575883388519287,0.3395177125930786,0.10258778929710388,5.117152214050293,1.7277957201004028,3.2438626289367676,2.6532349586486816,0.08829453587532043,-1.0221177339553833,0.32104814052581787,4.173779487609863,-1.9090220928192139,2.801701784133911,-1.2802802324295044,-0.874927818775177,-1.4308278560638428,2.948770046234131,0.6802517175674438,0.7741816639900208,3.3773033618927,4.289693355560303,2.3645339012145996,2.535998582839966,7.467940807342529,0.6020511388778687,3.8796536922454834,2.272710084915161,4.481436729431152,3.058711051940918,7.43323278427124,0.6967639327049255,0.9124497175216675,-0.00001752236858010292,0.9101729393005371,3.066612482070923,-2.954509735107422,2.202482223510742,1.4337085485458374,3.655831813812256,0.2523265480995178,0.9024661779403687,-0.9247808456420898,4.554049968719482,2.7180628776550293,0.27242085337638855,1.370881199836731,3.370673418045044,-2.720226764678955,-0.7543334364891052,1.8847999572753906,3.7253952026367188,-0.7294330596923828,1.867619514465332,1.044736623764038,-0.1586834192276001,7.329392910003662,-0.5283059477806091,4.067036151885986,2.942436456680298,2.6204276084899902,1.1712360382080078,2.8043792247772217,-1.2093775272369385,1.6065154075622559,2.4013304710388184,6.323165416717529,-0.06171439215540886,3.7075421810150146,2.0619654655456543,3.0032153129577637,0.7062752842903137,1.2701002359390259,1.742393970489502,2.349222421646118,-3.4687845706939697,0.054260216653347015,-1.3733106851577759,5.663959980010986,6.050576686859131,-1.616536021232605,4.206343650817871,5.699847221374512,-0.3545844256877899,1.4971343278884888,0.0054197534918785095,3.4307470321655273,-4.13053035736084,0.8582978844642639,1.9251600503921509,0.08083856105804443,3.491389036178589,0.9179723262786865,1.4878171682357788,3.3297934532165527,3.5132789611816406,2.4840340614318848,-1.4580193758010864,-1.123245358467102,-0.17261536419391632,1.5648226737976074,3.5005781650543213,1.7432501316070557,7.473391056060791,0.20878306031227112,2.7451555728912354,-2.1330692768096924,-1.828832983970642,2.4257102012634277,3.753049373626709,4.729434967041016,3.744828462600708,-2.5582995414733887,7.280819416046143,7.752939701080322,2.0403566360473633,1.4840736389160156,1.5632991790771484,2.8569839000701904,1.7815042734146118,4.516500473022461,6.036046504974365]}, + {"name":"carolina","source":"/assets/sample4.jpg","embedding":[2.5537729263305664,-1.872563362121582,1.9821645021438599,3.7623565196990967,5.062843322753906,6.563014984130859,2.492764949798584,2.082665205001831,0.3564959168434143,0.12754246592521667,5.102994918823242,1.6695075035095215,3.1540281772613525,2.632873773574829,0.07839231193065643,-1.0029171705245972,0.2714121341705322,4.175675868988037,-1.9341217279434204,2.7976715564727783,-1.3118420839309692,-0.899225115776062,-1.5464138984680176,2.9890975952148438,0.6725373268127441,0.7830907106399536,3.4110777378082275,4.1887922286987305,2.3353116512298584,2.544363260269165,7.45879602432251,0.6423363089561462,3.9212236404418945,2.2260730266571045,4.48098611831665,3.005439281463623,7.30954647064209,0.7219234108924866,0.960588276386261,-0.0010618901578709483,0.863469123840332,3.0483038425445557,-2.938796281814575,2.1542317867279053,1.4657868146896362,3.6048102378845215,0.22548869252204895,0.8947277069091797,-0.9577637910842896,4.471469402313232,2.7117905616760254,0.23593786358833313,1.333275318145752,3.420969247817993,-2.66827130317688,-0.8174825310707092,1.839085340499878,3.8084840774536133,-0.7372423410415649,1.8148680925369263,1.075120210647583,-0.14921534061431885,7.352649688720703,-0.619225263595581,4.062875747680664,2.7859299182891846,2.5297086238861084,1.2564425468444824,2.886749505996704,-1.224046230316162,1.5967682600021362,2.396010160446167,6.408997535705566,-0.039827439934015274,3.7001850605010986,2.064011573791504,2.915519952774048,0.7382900714874268,1.3197507858276367,1.7635674476623535,2.267883777618408,-3.4505441188812256,0.04778755456209183,-1.4230551719665527,5.589917182922363,5.936242580413818,-1.693733811378479,4.155204772949219,5.764064311981201,-0.3917728662490845,1.591632604598999,-0.028685837984085083,3.4821221828460693,-4.00302791595459,0.8667710423469543,1.9443646669387817,0.025157570838928223,3.502220630645752,0.8839329481124878,1.4256393909454346,3.2851827144622803,3.478022575378418,2.394883155822754,-1.4307425022125244,-1.0844720602035522,-0.16930551826953888,1.4580645561218262,3.4282946586608887,1.7400438785552979,7.454490661621094,0.11473646759986877,2.7361700534820557,-2.0684890747070312,-1.8531018495559692,2.430013656616211,3.6622097492218018,4.622562885284424,3.7670466899871826,-2.5682144165039062,7.294605731964111,7.694040775299072,2.039015293121338,1.3956886529922485,1.5627094507217407,2.8358561992645264,1.8150861263275146,4.477121353149414,6.03574275970459]}, + {"name":"christina","source":"/assets/sample4.jpg","embedding":[2.5656979084014893,-1.8767030239105225,1.9715497493743896,3.8175392150878906,5.167355537414551,6.5757269859313965,2.510861873626709,2.1037957668304443,0.3612907826900482,0.12164837121963501,5.118904113769531,1.6680357456207275,3.2338016033172607,2.5798799991607666,0.09100785106420517,-1.0188630819320679,0.28107720613479614,4.1596503257751465,-1.907288908958435,2.8297653198242188,-1.2174817323684692,-0.93697589635849,-1.536344289779663,3.096111297607422,0.7021865844726562,0.7919716835021973,3.3958756923675537,4.22845983505249,2.362107038497925,2.494873523712158,7.4689435958862305,0.6833665370941162,3.941427230834961,2.1998093128204346,4.5260186195373535,3.015047550201416,7.404354095458984,0.6658239364624023,0.9304542541503906,0.03782891109585762,0.8969664573669434,3.115649700164795,-2.974907159805298,2.162148952484131,1.484002947807312,3.6359872817993164,0.2877071797847748,0.8941917419433594,-0.9608507752418518,4.547544479370117,2.6807963848114014,0.24753840267658234,1.3463672399520874,3.3715837001800537,-2.643932819366455,-0.7340145707130432,1.856491208076477,3.7387564182281494,-0.7079486846923828,1.8959437608718872,1.0918970108032227,-0.1635105460882187,7.4165825843811035,-0.6359677314758301,4.065680980682373,2.8811185359954834,2.5846776962280273,1.2614428997039795,2.8562538623809814,-1.2052913904190063,1.58152174949646,2.373035192489624,6.353482723236084,-0.11600721627473831,3.6855263710021973,2.044910192489624,2.9736998081207275,0.727804958820343,1.3168971538543701,1.778480052947998,2.292435646057129,-3.4711430072784424,0.09415457397699356,-1.409987211227417,5.64048957824707,5.968129634857178,-1.6563670635223389,4.205769062042236,5.75467586517334,-0.4197944700717926,1.5615594387054443,-0.019408389925956726,3.4577388763427734,-4.077136039733887,0.918622612953186,1.8904573917388916,0.02224266529083252,3.5239028930664062,0.8669246435165405,1.4585038423538208,3.4066805839538574,3.5772316455841064,2.4603822231292725,-1.3828175067901611,-1.136765718460083,-0.16431614756584167,1.4769039154052734,3.4382832050323486,1.6425644159317017,7.460044860839844,0.1990337371826172,2.698042631149292,-2.0500669479370117,-1.7785940170288086,2.4188263416290283,3.6501402854919434,4.680995941162109,3.684587240219116,-2.604489326477051,7.29527473449707,7.777261257171631,1.9848757982254028,1.4318666458129883,1.557229995727539,2.894068479537964,1.8292973041534424,4.467833995819092,5.98494815826416]}, + {"name":"unknown","source":"/assets/sample5.jpg","embedding":[2.562732219696045,-1.8441741466522217,1.9922096729278564,3.795717716217041,5.159786701202393,6.548375606536865,2.4760398864746094,2.1132659912109375,0.3550240397453308,0.11899429559707642,5.113697052001953,1.7011737823486328,3.169153928756714,2.6694865226745605,0.1259302794933319,-1.0714458227157593,0.3207353353500366,4.125342845916748,-1.9047726392745972,2.7759780883789062,-1.329750657081604,-0.969417154788971,-1.5745229721069336,3.022068738937378,0.6969385743141174,0.7533788681030273,3.391390085220337,4.267996311187744,2.4249351024627686,2.498161792755127,7.4868669509887695,0.6496672630310059,3.8808798789978027,2.2251899242401123,4.508967399597168,2.995771884918213,7.272598743438721,0.729840874671936,0.9784753322601318,-0.034593384712934494,0.8590927124023438,3.1075363159179688,-2.9246041774749756,2.173434019088745,1.3871662616729736,3.6091251373291016,0.26413285732269287,0.8917757868766785,-1.0099303722381592,4.450762748718262,2.724382162094116,0.23699204623699188,1.3654626607894897,3.477524518966675,-2.6811044216156006,-0.7427452206611633,1.9209603071212769,3.7182252407073975,-0.7232070565223694,1.864579200744629,1.1112017631530762,-0.20008976757526398,7.325389862060547,-0.6291221380233765,4.121822357177734,2.7649102210998535,2.5010108947753906,1.263646125793457,2.8983359336853027,-1.2641448974609375,1.5689245462417603,2.411846399307251,6.329458713531494,-0.0869976356625557,3.702418804168701,2.0574111938476562,2.9552505016326904,0.7193841934204102,1.3238537311553955,1.8033838272094727,2.3244786262512207,-3.458988666534424,0.03827658295631409,-1.3789530992507935,5.577350616455078,5.897762775421143,-1.706750750541687,4.189837455749512,5.751448631286621,-0.41770443320274353,1.6016850471496582,-0.019088752567768097,3.4663350582122803,-3.9986109733581543,0.8618916869163513,1.9012932777404785,0.049151062965393066,3.50836443901062,0.8758785724639893,1.4721331596374512,3.2900023460388184,3.502291440963745,2.3844244480133057,-1.409796118736267,-1.1121448278427124,-0.19382396340370178,1.5065301656723022,3.389289617538452,1.706339716911316,7.4580230712890625,0.1370360255241394,2.69978928565979,-2.0501201152801514,-1.7739124298095703,2.403513193130493,3.6267974376678467,4.671957969665527,3.740006923675537,-2.597254753112793,7.244260311126709,7.691912651062012,2.0296666622161865,1.3904166221618652,1.5617021322250366,2.8313543796539307,1.8063716888427734,4.4983038902282715,6.0230021476745605]}, + {"name":"unknown","source":"/assets/sample5.jpg","embedding":[2.6406877040863037,-1.8506823778152466,2.044294595718384,3.8343918323516846,5.200953483581543,6.5752410888671875,2.452744722366333,2.1012697219848633,0.37684473395347595,0.12104940414428711,5.1212029457092285,1.6215133666992188,3.153916835784912,2.6275813579559326,0.1390768438577652,-1.0166071653366089,0.3324373960494995,4.149209022521973,-1.9435110092163086,2.8305249214172363,-1.286940574645996,-0.9355957508087158,-1.5452666282653809,3.069758892059326,0.6947525143623352,0.7593865990638733,3.3624143600463867,4.221154689788818,2.3837249279022217,2.5317635536193848,7.480698585510254,0.685671865940094,3.8631293773651123,2.1960608959198,4.551044464111328,3.084695816040039,7.448819160461426,0.6629762649536133,0.8927943110466003,-0.007353095803409815,0.8890596628189087,3.0993735790252686,-2.934113025665283,2.162673234939575,1.4352675676345825,3.599219799041748,0.3079906105995178,0.8789352178573608,-0.9945840239524841,4.493597984313965,2.656599283218384,0.22938254475593567,1.3989841938018799,3.4289071559906006,-2.669661045074463,-0.7394721508026123,1.9118326902389526,3.7924787998199463,-0.7149069905281067,2.007763624191284,1.0487897396087646,-0.2156156748533249,7.397518634796143,-0.6691502928733826,4.083553791046143,2.822916269302368,2.6081225872039795,1.2593727111816406,2.9670791625976562,-1.2584259510040283,1.604196548461914,2.418898582458496,6.4068379402160645,-0.060701437294483185,3.735518217086792,2.0152575969696045,2.9739928245544434,0.6580678224563599,1.359180212020874,1.7640407085418701,2.355851173400879,-3.4239132404327393,0.10715965926647186,-1.37312912940979,5.522481918334961,6.003233432769775,-1.6856834888458252,4.182624816894531,5.75447416305542,-0.45919308066368103,1.6699341535568237,-0.00880558043718338,3.479464292526245,-4.04083776473999,0.9182513356208801,1.8773165941238403,-0.07651829719543457,3.516193389892578,0.8713936805725098,1.3806928396224976,3.3309412002563477,3.563227891921997,2.4428391456604004,-1.419891357421875,-1.086740255355835,-0.16975796222686768,1.4484366178512573,3.375322103500366,1.6308391094207764,7.4628005027771,0.23366117477416992,2.6564724445343018,-1.990160346031189,-1.8175945281982422,2.450100898742676,3.639904499053955,4.724326133728027,3.7810957431793213,-2.603135347366333,7.294433116912842,7.694591522216797,2.081556797027588,1.4028923511505127,1.5537922382354736,2.8275506496429443,1.8332666158676147,4.493777275085449,6.017716407775879]}, + {"name":"jhoi","source":"/assets/sample5.jpg","embedding":[2.6337265968322754,-1.8729597330093384,2.0294835567474365,3.852196455001831,5.1036481857299805,6.579833030700684,2.4699041843414307,2.0690579414367676,0.37357786297798157,0.140181303024292,5.09849214553833,1.6537045240402222,3.1640169620513916,2.573363780975342,0.22765818238258362,-1.0442992448806763,0.3685857653617859,4.093879699707031,-1.9243758916854858,2.7871646881103516,-1.3050979375839233,-0.9595461487770081,-1.4968942403793335,3.0606799125671387,0.682316243648529,0.7316522002220154,3.3030285835266113,4.233870983123779,2.357177257537842,2.5658247470855713,7.466795921325684,0.6712511777877808,3.8682703971862793,2.247354030609131,4.554039478302002,3.0348682403564453,7.3939409255981445,0.7012253403663635,0.9489813446998596,-0.025814902037382126,0.9002248644828796,3.1451163291931152,-2.9471113681793213,2.1361541748046875,1.4180412292480469,3.6186959743499756,0.25968843698501587,0.8976772427558899,-0.9721943736076355,4.487122058868408,2.654553174972534,0.22613975405693054,1.4401096105575562,3.3480513095855713,-2.6897053718566895,-0.7252334356307983,1.8990416526794434,3.8234944343566895,-0.7092412710189819,2.000554084777832,1.0743030309677124,-0.21811547875404358,7.344902992248535,-0.6244215369224548,4.0347795486450195,2.799325704574585,2.615220069885254,1.2493034601211548,2.9213461875915527,-1.247643232345581,1.5737286806106567,2.3119146823883057,6.413532257080078,-0.07748439908027649,3.7336266040802,2.0554397106170654,2.9970815181732178,0.69472736120224,1.329116940498352,1.7386783361434937,2.32354736328125,-3.4821462631225586,0.144974485039711,-1.369493842124939,5.609760284423828,5.9886651039123535,-1.612423062324524,4.173707485198975,5.713383674621582,-0.37278610467910767,1.6100722551345825,-0.0044188424944877625,3.472055196762085,-3.9835875034332275,0.8669388294219971,1.882576823234558,0.03186476230621338,3.4956846237182617,0.8399120569229126,1.4138128757476807,3.3370747566223145,3.545015573501587,2.396275758743286,-1.3988714218139648,-1.1294180154800415,-0.18098247051239014,1.4450747966766357,3.37524151802063,1.660125494003296,7.498106956481934,0.18790030479431152,2.6840593814849854,-1.972084641456604,-1.839069128036499,2.4314417839050293,3.608469247817993,4.753474235534668,3.77947735786438,-2.554314374923706,7.296199798583984,7.673752784729004,2.0401434898376465,1.4011180400848389,1.5452115535736084,2.867615222930908,1.812498688697815,4.500205039978027,6.031494140625]}, + {"name":"patty","source":"/assets/sample5.jpg","embedding":[2.6227734088897705,-1.9049509763717651,2.030238151550293,3.8399250507354736,5.178863048553467,6.576553821563721,2.4865899085998535,2.0442395210266113,0.37846890091896057,0.1250433325767517,5.115227699279785,1.6358463764190674,3.1899547576904297,2.654477119445801,0.18422597646713257,-1.003791332244873,0.29430246353149414,4.157558441162109,-1.9272007942199707,2.837322950363159,-1.3131932020187378,-0.9498555660247803,-1.5752712488174438,3.0376694202423096,0.6929625272750854,0.7339851260185242,3.3640151023864746,4.193583011627197,2.441892623901367,2.541616678237915,7.523538589477539,0.7033094763755798,3.8986146450042725,2.202346086502075,4.50692892074585,3.032379627227783,7.388175010681152,0.6888409852981567,0.9575339555740356,-0.025374820455908775,0.9001724123954773,3.1118931770324707,-2.9387431144714355,2.1515774726867676,1.441076397895813,3.596464157104492,0.30412793159484863,0.8941569328308105,-1.0418455600738525,4.509280681610107,2.7075328826904297,0.21659734845161438,1.4067037105560303,3.4502670764923096,-2.6221580505371094,-0.7344905734062195,1.8949421644210815,3.7871572971343994,-0.7283819913864136,1.989538550376892,1.0775330066680908,-0.23310616612434387,7.367831230163574,-0.6763758063316345,4.092623710632324,2.7966573238372803,2.5900356769561768,1.250409722328186,2.910048246383667,-1.2594107389450073,1.6022472381591797,2.399925947189331,6.36770486831665,-0.07659303396940231,3.713029384613037,2.037260055541992,3.004693031311035,0.6812979578971863,1.3268029689788818,1.7426501512527466,2.308166027069092,-3.4291388988494873,0.1018310934305191,-1.3823541402816772,5.601450443267822,5.986040115356445,-1.580468773841858,4.143108367919922,5.7768120765686035,-0.4443928599357605,1.6386585235595703,-0.028227701783180237,3.487076997756958,-4.003749370574951,0.8779817819595337,1.8995692729949951,0.02159571647644043,3.5630133152008057,0.8809337615966797,1.4402433633804321,3.334500789642334,3.533015727996826,2.409838914871216,-1.4012094736099243,-1.0991299152374268,-0.1968056559562683,1.4353113174438477,3.3711256980895996,1.7311173677444458,7.48743200302124,0.20553630590438843,2.684366464614868,-1.9422452449798584,-1.8432339429855347,2.406613349914551,3.6414291858673096,4.6980180740356445,3.8014442920684814,-2.5925889015197754,7.303013324737549,7.727940559387207,2.0692174434661865,1.411984920501709,1.5441327095031738,2.8338353633880615,1.8440552949905396,4.502214431762695,6.018298149108887]}, + {"name":"unknown","source":"/assets/sample5.jpg","embedding":[2.629164218902588,-1.855141520500183,2.072028875350952,3.8075578212738037,5.259504318237305,6.534080505371094,2.5173137187957764,1.9735562801361084,0.502526581287384,0.17043262720108032,5.078159332275391,1.675845742225647,3.090029001235962,2.6912713050842285,0.20449993014335632,-1.0264222621917725,0.2857809066772461,4.123594760894775,-1.9084182977676392,2.810425043106079,-1.3111220598220825,-0.9593255519866943,-1.5994409322738647,2.9995274543762207,0.6329758763313293,0.8004221320152283,3.3632972240448,4.214975357055664,2.4327948093414307,2.6060242652893066,7.562050819396973,0.7348776459693909,3.8592402935028076,2.256141185760498,4.502914905548096,3.0668609142303467,7.363846778869629,0.7052671909332275,0.9334794878959656,-0.07304792106151581,0.8953290581703186,3.1704421043395996,-2.9085025787353516,2.1929943561553955,1.3706881999969482,3.5498509407043457,0.30309733748435974,0.8806688189506531,-1.0220298767089844,4.443471431732178,2.75767183303833,0.2179780900478363,1.427734136581421,3.4131968021392822,-2.6300511360168457,-0.7179458737373352,1.9071916341781616,3.8061442375183105,-0.6740559935569763,1.968021273612976,1.0833592414855957,-0.17993779480457306,7.355076789855957,-0.7341331243515015,4.066069602966309,2.7311553955078125,2.5646445751190186,1.1994768381118774,2.942700147628784,-1.2399669885635376,1.6249231100082397,2.386584520339966,6.476730823516846,-0.10098395496606827,3.7216696739196777,2.0810294151306152,3.077907085418701,0.5722059607505798,1.3834402561187744,1.7744147777557373,2.3361966609954834,-3.457059860229492,0.14431683719158173,-1.3391563892364502,5.592372417449951,5.905331611633301,-1.6442667245864868,4.106716156005859,5.764373779296875,-0.3982217013835907,1.6010346412658691,-0.01752987504005432,3.46388840675354,-3.9613866806030273,0.8390128016471863,1.8410216569900513,0.004632830619812012,3.530129909515381,0.9520032405853271,1.5202008485794067,3.278032064437866,3.4940719604492188,2.3467609882354736,-1.3383163213729858,-1.0870572328567505,-0.26160869002342224,1.397029161453247,3.3658881187438965,1.7446105480194092,7.4008073806762695,0.14113092422485352,2.6887173652648926,-1.9851999282836914,-1.8292620182037354,2.434570550918579,3.5639424324035645,4.735525608062744,3.875230550765991,-2.5307886600494385,7.305710792541504,7.670794486999512,2.015334367752075,1.4407930374145508,1.4823585748672485,2.8515145778656006,1.78096604347229,4.540014743804932,6.0260701179504395]}, + {"name":"reish","source":"/assets/sample6.jpg","embedding":[2.548675775527954,-1.85484778881073,2.0297014713287354,3.832578182220459,5.1883392333984375,6.508610248565674,2.573542594909668,2.0823605060577393,0.39706361293792725,0.16155895590782166,5.114172458648682,1.6892130374908447,3.2311367988586426,2.665208339691162,0.08887872099876404,-1.0684962272644043,0.299044668674469,4.143718719482422,-1.8875524997711182,2.8264386653900146,-1.3137025833129883,-0.9235771298408508,-1.5730648040771484,3.097815752029419,0.7193562388420105,0.8073567152023315,3.407668113708496,4.243398666381836,2.377880811691284,2.5058560371398926,7.4467573165893555,0.6420092582702637,3.970966339111328,2.166832685470581,4.521419048309326,3.0496885776519775,7.3437676429748535,0.6812267303466797,1.007511854171753,-0.007577371783554554,0.9213863015174866,3.0361342430114746,-2.9567618370056152,2.2019665241241455,1.445097804069519,3.634016513824463,0.29141348600387573,0.8794282078742981,-0.9568318128585815,4.542912006378174,2.7105605602264404,0.26281529664993286,1.339281678199768,3.3554415702819824,-2.6070971488952637,-0.7674261927604675,1.855838656425476,3.7164154052734375,-0.7486086487770081,1.966522455215454,1.0937910079956055,-0.12044461816549301,7.342723369598389,-0.586626410484314,4.037304401397705,2.865767478942871,2.5477025508880615,1.247507929801941,2.8354194164276123,-1.2309069633483887,1.5549405813217163,2.285273551940918,6.3773884773254395,-0.13744038343429565,3.673415184020996,2.019346237182617,3.0274624824523926,0.6846932172775269,1.3224059343338013,1.7705000638961792,2.3029427528381348,-3.470616579055786,0.0721597820520401,-1.381178855895996,5.643268585205078,5.953620910644531,-1.670851707458496,4.200847148895264,5.752808094024658,-0.35519248247146606,1.585832118988037,0.012259915471076965,3.467705488204956,-4.067174911499023,0.8399085402488708,1.912428379058838,0.051888108253479004,3.4878358840942383,0.8316560983657837,1.489992618560791,3.3256924152374268,3.5287070274353027,2.4664511680603027,-1.375749945640564,-1.2093703746795654,-0.18813231587409973,1.4534763097763062,3.411487579345703,1.7195836305618286,7.507517337799072,0.2182927131652832,2.6709256172180176,-2.064296245574951,-1.8435673713684082,2.4350411891937256,3.6378014087677,4.7315545082092285,3.7167739868164062,-2.5394184589385986,7.289902210235596,7.764496803283691,2.0506818294525146,1.446710228919983,1.5948312282562256,2.922896385192871,1.822963833808899,4.490623950958252,6.016166687011719]}, + {"name":"tasia","source":"/assets/sample6.jpg","embedding":[2.594707489013672,-1.8774728775024414,2.0170769691467285,3.79282283782959,5.176435470581055,6.5313520431518555,2.519521951675415,2.116149425506592,0.3905431628227234,0.1835976243019104,5.111903190612793,1.662508249282837,3.1783607006073,2.6371562480926514,0.13732455670833588,-1.131819248199463,0.3507882356643677,4.1293864250183105,-1.8521199226379395,2.7923214435577393,-1.2889364957809448,-0.933600127696991,-1.5801364183425903,3.0036847591400146,0.6792635321617126,0.7849235534667969,3.349701166152954,4.236748695373535,2.3720035552978516,2.49286150932312,7.470754623413086,0.6853639483451843,3.9012320041656494,2.2200570106506348,4.485729217529297,3.0373237133026123,7.312068462371826,0.7069067358970642,0.9965048432350159,0.017613183706998825,0.9045748710632324,3.0830109119415283,-2.9104344844818115,2.1545164585113525,1.3642635345458984,3.6617488861083984,0.26177722215652466,0.8883702754974365,-1.0299652814865112,4.507626533508301,2.7023627758026123,0.2519550025463104,1.3772250413894653,3.3776230812072754,-2.699608564376831,-0.7264126539230347,1.8502458333969116,3.749837636947632,-0.6810058355331421,1.983084797859192,1.0496519804000854,-0.19521141052246094,7.319430351257324,-0.5936540961265564,4.094868183135986,2.8569142818450928,2.526181221008301,1.2937167882919312,2.9453225135803223,-1.234817385673523,1.5647609233856201,2.3152780532836914,6.335237979888916,-0.12180838733911514,3.7086267471313477,2.0249950885772705,2.972249984741211,0.7102864980697632,1.3544892072677612,1.7695486545562744,2.334956407546997,-3.4634454250335693,0.10781687498092651,-1.378180980682373,5.535003185272217,5.96103572845459,-1.6664694547653198,4.152630805969238,5.7353081703186035,-0.38425958156585693,1.554624319076538,-0.026633284986019135,3.4808096885681152,-4.001407623291016,0.8128964900970459,1.8847603797912598,0.0578385591506958,3.501187562942505,0.7890467643737793,1.4407893419265747,3.293436050415039,3.551636219024658,2.3828983306884766,-1.425416350364685,-1.1689825057983398,-0.1449451595544815,1.4605087041854858,3.414674758911133,1.7578924894332886,7.4536519050598145,0.1557866632938385,2.7466022968292236,-2.0723021030426025,-1.8296395540237427,2.4136123657226562,3.5948486328125,4.692744731903076,3.731682062149048,-2.495614767074585,7.28713846206665,7.726444721221924,2.0210788249969482,1.4089689254760742,1.573668360710144,2.8717446327209473,1.8347870111465454,4.502897262573242,6.041593551635742]}, + {"name":"unknown","source":"/assets/sample6.jpg","embedding":[2.5980093479156494,-1.8437066078186035,2.0084962844848633,3.8102920055389404,5.134908199310303,6.530165195465088,2.5296857357025146,2.096266746520996,0.3810025453567505,0.1573539674282074,5.093877792358398,1.6893939971923828,3.1940364837646484,2.6477110385894775,0.09117544442415237,-1.084351658821106,0.3689245581626892,4.140715599060059,-1.912139654159546,2.7976722717285156,-1.2888071537017822,-0.9487046003341675,-1.505733847618103,3.075974464416504,0.7214687466621399,0.7533462047576904,3.368637800216675,4.222426891326904,2.3732759952545166,2.4668242931365967,7.449767589569092,0.6883657574653625,3.968242883682251,2.21927547454834,4.501402378082275,3.051158905029297,7.352653503417969,0.7012189626693726,0.9896645545959473,-0.0033825081773102283,0.9076189994812012,3.0740864276885986,-2.9441347122192383,2.1782596111297607,1.3852729797363281,3.664360284805298,0.2814340889453888,0.8784878253936768,-0.9790730476379395,4.531776428222656,2.695873975753784,0.23421958088874817,1.3509175777435303,3.372545003890991,-2.6929025650024414,-0.7416471838951111,1.836573600769043,3.746192455291748,-0.6926783919334412,1.9483882188796997,1.0526925325393677,-0.1527567058801651,7.335973739624023,-0.6009229421615601,4.056854248046875,2.847494125366211,2.5499205589294434,1.2824095487594604,2.8918421268463135,-1.2352172136306763,1.5622800588607788,2.2832815647125244,6.384528636932373,-0.1007583886384964,3.6945853233337402,2.037597894668579,2.916534662246704,0.7243836522102356,1.371353030204773,1.7314976453781128,2.341078758239746,-3.467884063720703,0.09039221704006195,-1.3916608095169067,5.5301194190979,5.963033676147461,-1.6635788679122925,4.154679775238037,5.732049465179443,-0.3684699833393097,1.6168725490570068,-0.0010870546102523804,3.54976224899292,-4.066892147064209,0.8392263054847717,1.8915249109268188,0.06548511981964111,3.4695992469787598,0.7993115186691284,1.439651370048523,3.310835599899292,3.5733888149261475,2.413609266281128,-1.3971986770629883,-1.1600652933120728,-0.12443412840366364,1.4528485536575317,3.416276454925537,1.7094476222991943,7.47695779800415,0.1885768175125122,2.6851155757904053,-2.0414154529571533,-1.8321685791015625,2.3929505348205566,3.624924659729004,4.714524745941162,3.7009639739990234,-2.517127752304077,7.302300453186035,7.731609344482422,2.030244827270508,1.4060142040252686,1.6270493268966675,2.8380486965179443,1.81571364402771,4.495322227478027,6.040866374969482]}, + {"name":"miriam","source":"/assets/sample6.jpg","embedding":[2.6082072257995605,-1.8606325387954712,2.0776455402374268,3.8274478912353516,5.15142297744751,6.495200157165527,2.5330419540405273,2.093918561935425,0.372165322303772,0.166782408952713,5.1352620124816895,1.6469860076904297,3.2111613750457764,2.6669816970825195,0.07663163542747498,-1.1044403314590454,0.35021311044692993,4.14402961730957,-1.9012268781661987,2.8289172649383545,-1.396093487739563,-0.9303927421569824,-1.5718344449996948,3.031207323074341,0.6898900866508484,0.7261682748794556,3.34330415725708,4.221867084503174,2.374180555343628,2.54423189163208,7.50541353225708,0.6751331090927124,3.9720399379730225,2.2731690406799316,4.540695667266846,3.08259916305542,7.378612518310547,0.7056003212928772,1.0104159116744995,-0.005158735439181328,0.9235577583312988,3.110309362411499,-2.953824996948242,2.1805453300476074,1.3646639585494995,3.6314895153045654,0.30267488956451416,0.843851625919342,-1.0466645956039429,4.55849027633667,2.6897473335266113,0.22655442357063293,1.3900879621505737,3.3579814434051514,-2.6340487003326416,-0.7562585473060608,1.8447380065917969,3.7331953048706055,-0.6576758623123169,2.0184195041656494,1.0813333988189697,-0.15743505954742432,7.352078914642334,-0.6338657140731812,4.047367095947266,2.8196558952331543,2.5878381729125977,1.317381501197815,2.916038990020752,-1.2245121002197266,1.6158066987991333,2.3162753582000732,6.385507583618164,-0.06315886974334717,3.699434757232666,2.0707478523254395,2.9637866020202637,0.6760364174842834,1.399814486503601,1.6641485691070557,2.3063244819641113,-3.482081890106201,0.07684916257858276,-1.3162751197814941,5.582126617431641,5.970830917358398,-1.6859866380691528,4.180302143096924,5.691990852355957,-0.44140756130218506,1.5523656606674194,-0.03893306106328964,3.4874227046966553,-3.9724481105804443,0.8384265899658203,1.9015134572982788,0.06326866149902344,3.526590585708618,0.9224397540092468,1.443936824798584,3.26810359954834,3.5128111839294434,2.428309917449951,-1.3915553092956543,-1.1452382802963257,-0.20204080641269684,1.4616625308990479,3.3676512241363525,1.775093913078308,7.436295032501221,0.17665794491767883,2.7071151733398438,-2.021156072616577,-1.847758173942566,2.3864970207214355,3.5794153213500977,4.702028274536133,3.791159152984619,-2.596895217895508,7.2975664138793945,7.655696868896484,2.029205322265625,1.4162559509277344,1.579390287399292,2.880601167678833,1.7834744453430176,4.491006374359131,5.994032382965088]}, + {"name":"unknown","source":"/private/me (1).jpg","embedding":[2.636183023452759,-1.8833365440368652,2.000525712966919,3.8123629093170166,5.135047435760498,6.554183006286621,2.4370908737182617,2.1324427127838135,0.4332449734210968,0.15137037634849548,5.138564109802246,1.6564234495162964,3.1268980503082275,2.657947301864624,0.1321631371974945,-1.0545949935913086,0.29264241456985474,4.13259220123291,-1.8708319664001465,2.8244028091430664,-1.298622727394104,-0.922788143157959,-1.622169852256775,2.918370008468628,0.6706928610801697,0.741424560546875,3.3667991161346436,4.19907283782959,2.3966894149780273,2.504586696624756,7.556633472442627,0.6968533992767334,3.8696062564849854,2.1856353282928467,4.483304500579834,3.0142300128936768,7.305285930633545,0.7032361030578613,0.9793638586997986,-0.01506256777793169,0.8875635862350464,3.102780818939209,-2.8836324214935303,2.1539740562438965,1.3930912017822266,3.607032299041748,0.27072712779045105,0.9197925925254822,-1.0427724123001099,4.487823009490967,2.697007656097412,0.26806628704071045,1.3725810050964355,3.4364943504333496,-2.7174649238586426,-0.7680432796478271,1.8332300186157227,3.7299304008483887,-0.6902168989181519,1.9698854684829712,1.058247685432434,-0.1491716504096985,7.344734191894531,-0.6796141266822815,4.047149181365967,2.8523592948913574,2.486710786819458,1.228583574295044,2.9555206298828125,-1.222159504890442,1.5481547117233276,2.346123456954956,6.391811847686768,-0.12225031852722168,3.7044379711151123,2.0164902210235596,2.9963433742523193,0.6855494976043701,1.3554271459579468,1.7876362800598145,2.273165702819824,-3.432553768157959,0.07411471009254456,-1.4014664888381958,5.5580010414123535,5.941430568695068,-1.6219507455825806,4.130770206451416,5.747267723083496,-0.4365425109863281,1.5857089757919312,-0.07072394341230392,3.4491443634033203,-3.9467849731445312,0.8286364674568176,1.887052059173584,0.07268059253692627,3.507586717605591,0.8538615703582764,1.4473801851272583,3.265807628631592,3.529430627822876,2.302333354949951,-1.3714344501495361,-1.0753523111343384,-0.205000638961792,1.3866835832595825,3.359739303588867,1.6510945558547974,7.445849895477295,0.1703670620918274,2.685957431793213,-2.0128962993621826,-1.7901103496551514,2.4064526557922363,3.608959674835205,4.704669952392578,3.778108596801758,-2.5614733695983887,7.24196720123291,7.654518127441406,2.0524120330810547,1.4161584377288818,1.5111289024353027,2.848456621170044,1.8387246131896973,4.491361618041992,6.004093647003174]}, + {"name":"unknown","source":"/private/me (1).jpg","embedding":[2.64131236076355,-1.9176812171936035,2.0114779472351074,3.8396127223968506,5.234966278076172,6.4943366050720215,2.5106735229492188,2.0457277297973633,0.306010365486145,0.1143728494644165,5.084072113037109,1.6908044815063477,3.2041571140289307,2.649832248687744,0.20014993846416473,-0.9882811903953552,0.2929040193557739,4.1535515785217285,-1.930662751197815,2.782086133956909,-1.224439024925232,-0.9501943588256836,-1.5802159309387207,3.054708242416382,0.6859691739082336,0.8046319484710693,3.3624751567840576,4.161312580108643,2.431372880935669,2.529951810836792,7.481481075286865,0.7135802507400513,3.8763020038604736,2.2197415828704834,4.5524821281433105,3.061539649963379,7.359123229980469,0.7012830376625061,0.9445726871490479,-0.02748587727546692,0.8663468360900879,3.1297709941864014,-2.964812994003296,2.221712350845337,1.4345835447311401,3.6294500827789307,0.314481645822525,0.9234185814857483,-1.0480761528015137,4.485690593719482,2.7107064723968506,0.2209032028913498,1.3882313966751099,3.37860107421875,-2.6416501998901367,-0.7539243102073669,1.872985601425171,3.7989137172698975,-0.6916304230690002,1.9921218156814575,1.0888665914535522,-0.2053724080324173,7.405567646026611,-0.6876199245452881,4.054915904998779,2.8473687171936035,2.5686142444610596,1.2396976947784424,2.8952157497406006,-1.2782577276229858,1.630885124206543,2.405397653579712,6.415137767791748,-0.10778762400150299,3.7576961517333984,2.070876121520996,3.002274990081787,0.6719961762428284,1.3750547170639038,1.730831503868103,2.299997091293335,-3.468604803085327,0.06746247410774231,-1.3507418632507324,5.569245338439941,5.896195888519287,-1.6235401630401611,4.152815341949463,5.740753173828125,-0.47021111845970154,1.6332179307937622,-0.051606349647045135,3.5422513484954834,-4.086313724517822,0.8881010413169861,1.8705806732177734,-0.03408241271972656,3.4999916553497314,0.8536494970321655,1.3894469738006592,3.368647813796997,3.572514772415161,2.497753858566284,-1.4103957414627075,-1.0853673219680786,-0.21445335447788239,1.4877822399139404,3.4389967918395996,1.6501579284667969,7.445405006408691,0.24836832284927368,2.688667058944702,-1.9796603918075562,-1.7340266704559326,2.4208085536956787,3.6600964069366455,4.7669878005981445,3.7216570377349854,-2.5545125007629395,7.299359321594238,7.669223308563232,2.0182881355285645,1.4041516780853271,1.5264277458190918,2.9048564434051514,1.8571115732192993,4.468411922454834,6.070717811584473]}, + {"name":"unknown","source":"/private/me (10).jpg","embedding":[2.590285062789917,-1.8598562479019165,2.0337395668029785,3.8239734172821045,5.156854152679443,6.562276363372803,2.454721212387085,2.1242263317108154,0.4398443400859833,0.14094099402427673,5.137767314910889,1.667630910873413,3.155125856399536,2.62048602104187,0.1410001665353775,-1.0823752880096436,0.3269047737121582,4.123254299163818,-1.8661880493164062,2.8169198036193848,-1.3798502683639526,-0.9040647745132446,-1.573701024055481,2.956899404525757,0.7033829092979431,0.7451306581497192,3.363154411315918,4.175751209259033,2.364614248275757,2.5595591068267822,7.529820442199707,0.6433004140853882,3.876450538635254,2.2498669624328613,4.519550800323486,3.0345699787139893,7.359000205993652,0.6821855306625366,0.9857543110847473,-0.0314321331679821,0.8482362031936646,3.1096742153167725,-2.915870428085327,2.2021405696868896,1.3928635120391846,3.61130428314209,0.2943963408470154,0.8619450330734253,-0.9830583930015564,4.4567389488220215,2.6877150535583496,0.2694443464279175,1.3749345541000366,3.4240143299102783,-2.6292991638183594,-0.7480536699295044,1.868239164352417,3.791334390640259,-0.7229674458503723,1.957445502281189,1.0706465244293213,-0.19319842755794525,7.345728874206543,-0.6537905931472778,4.099642753601074,2.8673954010009766,2.577021360397339,1.2414273023605347,2.9401774406433105,-1.3012011051177979,1.592720627784729,2.3936920166015625,6.39865255355835,-0.0697675496339798,3.708590030670166,2.0623621940612793,2.981595516204834,0.6792803406715393,1.317644476890564,1.7711122035980225,2.3003146648406982,-3.4639840126037598,0.05386438965797424,-1.3801536560058594,5.59829044342041,5.985548973083496,-1.686570405960083,4.137213230133057,5.772088527679443,-0.4119539260864258,1.6201832294464111,-0.04150944948196411,3.4277169704437256,-3.950057029724121,0.8431973457336426,1.8840581178665161,0.11427187919616699,3.497673511505127,0.8877072334289551,1.4439213275909424,3.246039867401123,3.547908306121826,2.3232293128967285,-1.3739837408065796,-1.0165565013885498,-0.16297022998332977,1.4147287607192993,3.3581998348236084,1.674390196800232,7.426025390625,0.1722264289855957,2.6858623027801514,-2.008209466934204,-1.787869930267334,2.412229061126709,3.6354594230651855,4.73906946182251,3.812352180480957,-2.594733238220215,7.263243198394775,7.679519176483154,2.02115797996521,1.4112755060195923,1.5403650999069214,2.814643144607544,1.828935980796814,4.49611234664917,6.000331401824951]}, + {"name":"unknown","source":"/private/me (10).jpg","embedding":[2.6335608959198,-1.897902488708496,2.043968915939331,3.8141396045684814,5.1211137771606445,6.55656623840332,2.5027759075164795,2.0921566486358643,0.42911040782928467,0.15721943974494934,5.181310176849365,1.626835584640503,3.1412672996520996,2.652768611907959,0.1089656725525856,-1.0192216634750366,0.2841508388519287,4.158165454864502,-1.872626781463623,2.8699722290039062,-1.2918692827224731,-0.9285043478012085,-1.5832977294921875,2.9719247817993164,0.7111831903457642,0.7495326995849609,3.3828933238983154,4.191388130187988,2.418365240097046,2.5246119499206543,7.531887054443359,0.7020514011383057,3.8696980476379395,2.219055414199829,4.5159831047058105,2.989736318588257,7.345823764801025,0.7289078235626221,0.9691449403762817,-0.01498405821621418,0.9215766787528992,3.1271212100982666,-2.892897605895996,2.1616458892822266,1.396846890449524,3.601278781890869,0.3181988596916199,0.886890172958374,-1.0388374328613281,4.525437831878662,2.6795566082000732,0.2542617917060852,1.3631813526153564,3.430358648300171,-2.6623342037200928,-0.7900266647338867,1.8226211071014404,3.7210094928741455,-0.748304009437561,2.018143653869629,1.0979262590408325,-0.10695681720972061,7.347464084625244,-0.6574127674102783,4.027853012084961,2.9041271209716797,2.5573971271514893,1.270564317703247,2.8992714881896973,-1.2132928371429443,1.514922857284546,2.425788164138794,6.40627384185791,-0.0760142058134079,3.7251811027526855,2.0324254035949707,2.9504103660583496,0.6804295778274536,1.3621684312820435,1.7713356018066406,2.275848627090454,-3.4747719764709473,0.019512690603733063,-1.3962290287017822,5.577608108520508,5.970184326171875,-1.659466028213501,4.112735748291016,5.8060622215271,-0.4336688220500946,1.597751259803772,-0.015134170651435852,3.4372732639312744,-3.9745969772338867,0.8850979804992676,1.9087855815887451,0.05352163314819336,3.5244648456573486,0.8350841999053955,1.4636155366897583,3.2798380851745605,3.505072593688965,2.3780479431152344,-1.4066202640533447,-1.056552529335022,-0.18125282227993011,1.4102774858474731,3.3466429710388184,1.6680108308792114,7.457283020019531,0.17100435495376587,2.721799373626709,-2.010643720626831,-1.8686367273330688,2.410522937774658,3.629138946533203,4.728349208831787,3.8031647205352783,-2.6119163036346436,7.304636478424072,7.682125568389893,2.0476880073547363,1.4048250913619995,1.5400761365890503,2.8713197708129883,1.8386822938919067,4.504031658172607,6.007662773132324]}, + {"name":"unknown","source":"/private/me (10).jpg","embedding":[2.6436989307403564,-1.9376133680343628,1.9913803339004517,3.8229517936706543,5.139373302459717,6.59238862991333,2.4944252967834473,2.0542449951171875,0.39853668212890625,0.10601237416267395,5.1140642166137695,1.6318439245224,3.1930079460144043,2.6387627124786377,0.17981670796871185,-1.0212464332580566,0.34129971265792847,4.146657466888428,-1.9155601263046265,2.8171257972717285,-1.2868578433990479,-0.9601961970329285,-1.5272765159606934,2.9869751930236816,0.6843404769897461,0.7264200448989868,3.2963671684265137,4.183802604675293,2.413601875305176,2.587053060531616,7.505055904388428,0.6589455008506775,3.8460967540740967,2.2293624877929688,4.484375953674316,3.0019187927246094,7.407766342163086,0.6633405089378357,0.9337310791015625,-0.052376993000507355,0.9165529608726501,3.1108968257904053,-2.939333200454712,2.1551222801208496,1.4054590463638306,3.62089204788208,0.30296963453292847,0.9201098084449768,-1.0243130922317505,4.473766326904297,2.724858283996582,0.21042293310165405,1.404036045074463,3.4286608695983887,-2.686960220336914,-0.7352741360664368,1.8643007278442383,3.789250612258911,-0.6765406131744385,1.9602477550506592,1.0433156490325928,-0.19919298589229584,7.394474983215332,-0.6493436694145203,4.07133150100708,2.856520891189575,2.583486318588257,1.2062889337539673,2.9014370441436768,-1.2089452743530273,1.5824811458587646,2.3786206245422363,6.368433952331543,-0.05014629662036896,3.7244458198547363,2.053328275680542,2.9822158813476562,0.7106595635414124,1.3208595514297485,1.7464500665664673,2.282346248626709,-3.446772336959839,0.11242794990539551,-1.389528512954712,5.602215766906738,5.9543328285217285,-1.5228371620178223,4.179470062255859,5.794439315795898,-0.42840802669525146,1.6076916456222534,0.0037878528237342834,3.448287010192871,-4.044399738311768,0.8616650104522705,1.8749819993972778,0.04642343521118164,3.569504737854004,0.8766940236091614,1.4690337181091309,3.330606698989868,3.5142853260040283,2.4264137744903564,-1.3895840644836426,-1.0898876190185547,-0.17008380591869354,1.4435620307922363,3.3642172813415527,1.7092397212982178,7.429944038391113,0.2188672423362732,2.7020010948181152,-2.01556658744812,-1.8292803764343262,2.424408435821533,3.6480448246002197,4.687546730041504,3.7768023014068604,-2.5712897777557373,7.30406379699707,7.715243816375732,2.0913515090942383,1.406986951828003,1.533611536026001,2.8892433643341064,1.8309794664382935,4.5325517654418945,6.0672993659973145]}, + {"name":"unknown","source":"/private/me (10).jpg","embedding":[2.639174461364746,-1.8258947134017944,2.023822784423828,3.8097751140594482,5.053798675537109,6.621023654937744,2.4461684226989746,2.070026397705078,0.4437294602394104,0.09987843036651611,5.131322383880615,1.60047447681427,3.0991456508636475,2.6334640979766846,0.1378876268863678,-1.034468650817871,0.35500842332839966,4.144853115081787,-1.903915286064148,2.833312749862671,-1.3257505893707275,-0.8726229667663574,-1.5453548431396484,2.9713315963745117,0.6942793726921082,0.7629820108413696,3.3326332569122314,4.180256366729736,2.3833296298980713,2.5371391773223877,7.534635066986084,0.6573648452758789,3.844320297241211,2.2748968601226807,4.460755825042725,2.999135971069336,7.387706756591797,0.6864281296730042,0.9589430093765259,-0.026045117527246475,0.9010632038116455,3.151120185852051,-2.916529417037964,2.1558916568756104,1.3860546350479126,3.642014980316162,0.280394047498703,0.87677001953125,-1.0044522285461426,4.499008655548096,2.6490085124969482,0.2766561806201935,1.3732579946517944,3.459221124649048,-2.6300926208496094,-0.7318198084831238,1.870775580406189,3.768585681915283,-0.7147287726402283,1.9519902467727661,1.0219454765319824,-0.15123379230499268,7.345049858093262,-0.6273566484451294,4.091079235076904,2.845506429672241,2.582540273666382,1.2023169994354248,2.9336652755737305,-1.256787657737732,1.5919266939163208,2.449971914291382,6.318143844604492,-0.07129380106925964,3.688127040863037,2.0281014442443848,2.963041305541992,0.7090938091278076,1.301979660987854,1.72655189037323,2.3264174461364746,-3.447974681854248,0.06207609921693802,-1.3559043407440186,5.621737957000732,6.052567481994629,-1.5813161134719849,4.156209468841553,5.787923812866211,-0.427504301071167,1.6115938425064087,-0.006970405578613281,3.350926637649536,-3.9511754512786865,0.8479645252227783,1.8984293937683105,0.0698007345199585,3.512437343597412,0.8905879855155945,1.3721888065338135,3.255502462387085,3.5145788192749023,2.3192789554595947,-1.414312481880188,-0.9985859990119934,-0.12056541442871094,1.4035435914993286,3.404463052749634,1.716738224029541,7.4385175704956055,0.16149014234542847,2.7037487030029297,-2.0170321464538574,-1.884429693222046,2.452099084854126,3.6520698070526123,4.728445053100586,3.8089120388031006,-2.6095945835113525,7.27117919921875,7.654913902282715,2.093219041824341,1.3857316970825195,1.5203205347061157,2.8393924236297607,1.7978581190109253,4.500595569610596,6.008423328399658]}, + {"name":"unknown","source":"/private/me (10).jpg","embedding":[2.647451639175415,-1.9255152940750122,1.9741928577423096,3.826338291168213,5.110308647155762,6.5589375495910645,2.5825047492980957,2.0774779319763184,0.4466853141784668,0.1405196487903595,5.123239994049072,1.6784541606903076,3.1764369010925293,2.6172914505004883,0.18874697387218475,-1.0322952270507812,0.40943437814712524,4.1327948570251465,-1.859973430633545,2.7985451221466064,-1.273140788078308,-0.9404546618461609,-1.4891778230667114,2.905702829360962,0.6797444820404053,0.7588565349578857,3.322774648666382,4.239273548126221,2.3974690437316895,2.5698769092559814,7.496520042419434,0.7451505661010742,3.969378709793091,2.2934200763702393,4.509340286254883,3.0313401222229004,7.419113636016846,0.6006356477737427,0.9531933069229126,-0.03296529874205589,0.9169430136680603,3.190096378326416,-2.8749659061431885,2.1807425022125244,1.3665012121200562,3.644810199737549,0.3256782293319702,0.878747820854187,-0.9664838910102844,4.5703253746032715,2.744450330734253,0.2771654725074768,1.39303457736969,3.3435652256011963,-2.689516067504883,-0.7247787714004517,1.7938001155853271,3.6650757789611816,-0.6657290458679199,2.034536123275757,1.0850125551223755,-0.22733630239963531,7.3468523025512695,-0.6479368209838867,4.021889686584473,2.9191248416900635,2.635862112045288,1.1936637163162231,2.8863072395324707,-1.2467107772827148,1.5496022701263428,2.3404600620269775,6.429875373840332,-0.12092413753271103,3.730670690536499,2.0315823554992676,2.9691693782806396,0.6749041676521301,1.3724064826965332,1.7175040245056152,2.2588906288146973,-3.474620819091797,0.08821124583482742,-1.330112099647522,5.645598411560059,6.046074867248535,-1.4719876050949097,4.192404747009277,5.789748191833496,-0.3697739839553833,1.5523544549942017,-0.041843950748443604,3.479231595993042,-4.045770168304443,0.7774235010147095,1.8946574926376343,0.06016123294830322,3.611124038696289,0.9403237104415894,1.4528924226760864,3.3566222190856934,3.611212968826294,2.3825366497039795,-1.3270304203033447,-1.0883458852767944,-0.09431754797697067,1.4170958995819092,3.4220714569091797,1.771291971206665,7.381215572357178,0.21545690298080444,2.8052327632904053,-1.9453095197677612,-1.7971256971359253,2.3890466690063477,3.5885543823242188,4.730105400085449,3.738992691040039,-2.573230028152466,7.353693962097168,7.7142791748046875,2.004236936569214,1.4593015909194946,1.497004508972168,2.886996030807495,1.7929275035858154,4.486544609069824,5.990472793579102]}, + {"name":"unknown","source":"/private/me (11).jpg","embedding":[2.6031699180603027,-1.878393292427063,2.018523931503296,3.809048652648926,5.171663761138916,6.584053039550781,2.501054048538208,2.0278995037078857,0.36282068490982056,0.12286114692687988,5.105127811431885,1.6526862382888794,3.148529052734375,2.6404311656951904,0.11897724866867065,-1.018181324005127,0.29251450300216675,4.174905776977539,-1.9170337915420532,2.8264570236206055,-1.285387396812439,-0.9040650725364685,-1.5670934915542603,3.0665323734283447,0.6779236793518066,0.7659757733345032,3.3645496368408203,4.212312698364258,2.401956796646118,2.5250332355499268,7.471255302429199,0.6524763703346252,3.9277377128601074,2.2070515155792236,4.509652614593506,3.0561764240264893,7.3939595222473145,0.6702566146850586,0.9587159156799316,-0.0011803631205111742,0.8957582116127014,3.1124846935272217,-2.963930368423462,2.195007562637329,1.4690641164779663,3.6275806427001953,0.2745715379714966,0.9042091369628906,-0.9682283997535706,4.518435955047607,2.6985507011413574,0.21960937976837158,1.394371509552002,3.40682053565979,-2.6276967525482178,-0.7763012647628784,1.8662828207015991,3.8011484146118164,-0.7397639751434326,1.9592276811599731,1.0266022682189941,-0.1926034688949585,7.388737678527832,-0.6177551746368408,4.098398685455322,2.8299520015716553,2.6261074542999268,1.263841986656189,2.9049735069274902,-1.2519596815109253,1.5746803283691406,2.339016914367676,6.375256061553955,-0.11109078675508499,3.6921684741973877,2.025003433227539,2.9695634841918945,0.7260317206382751,1.2980226278305054,1.761092185974121,2.308037519454956,-3.415950059890747,0.06381333619356155,-1.3781386613845825,5.603347301483154,5.991002559661865,-1.6134294271469116,4.182441234588623,5.795797348022461,-0.4271126091480255,1.6017024517059326,-0.020833715796470642,3.419827699661255,-4.047609329223633,0.9147379398345947,1.9214799404144287,0.02295517921447754,3.512038469314575,0.8317130208015442,1.4132760763168335,3.340006113052368,3.5674941539764404,2.4342684745788574,-1.448285698890686,-1.1041345596313477,-0.14580699801445007,1.4468380212783813,3.4606149196624756,1.7344915866851807,7.473224639892578,0.2000531554222107,2.7285542488098145,-2.030331611633301,-1.8380799293518066,2.4279165267944336,3.674739360809326,4.699521064758301,3.753140449523926,-2.529858350753784,7.320374965667725,7.698485851287842,2.0597383975982666,1.4031660556793213,1.5702482461929321,2.8883442878723145,1.830949306488037,4.517314910888672,6.009822368621826]}, + {"name":"unknown","source":"/private/me (11).jpg","embedding":[2.5455493927001953,-1.7935487031936646,2.0460469722747803,3.8300774097442627,5.145997524261475,6.5713629722595215,2.522812604904175,2.0482337474823,0.3483692705631256,0.1760542094707489,5.155263900756836,1.685558795928955,3.0780582427978516,2.6610453128814697,0.09877404570579529,-1.140064001083374,0.311873197555542,4.176944255828857,-1.9203574657440186,2.8669891357421875,-1.3311034440994263,-0.8758280873298645,-1.537975788116455,3.0646281242370605,0.704826831817627,0.7483859658241272,3.363447427749634,4.2988362312316895,2.428300619125366,2.4294118881225586,7.505870819091797,0.6744214296340942,3.9577434062957764,2.305671215057373,4.497779846191406,3.0358147621154785,7.30279016494751,0.724079966545105,0.9420911073684692,-0.05556318536400795,0.8803331851959229,3.0750513076782227,-2.9282097816467285,2.1961276531219482,1.4106125831604004,3.685208797454834,0.24164444208145142,0.880553126335144,-0.9303152561187744,4.517025947570801,2.6662628650665283,0.20478035509586334,1.4079376459121704,3.3613884449005127,-2.7338171005249023,-0.7639601826667786,1.850723147392273,3.774044990539551,-0.679591178894043,1.9132940769195557,1.0092365741729736,-0.15114611387252808,7.411240100860596,-0.6259092688560486,4.090146064758301,2.8322365283966064,2.548367977142334,1.2351689338684082,2.9561829566955566,-1.274697184562683,1.5090898275375366,2.285947561264038,6.359994411468506,-0.15199540555477142,3.66756010055542,2.0081419944763184,2.9810307025909424,0.6948102116584778,1.3794143199920654,1.7681900262832642,2.3771605491638184,-3.4498074054718018,0.05859540402889252,-1.3869389295578003,5.524980068206787,5.942277908325195,-1.711583137512207,4.143214225769043,5.741661548614502,-0.366872102022171,1.598691701889038,-0.04380042850971222,3.4329144954681396,-3.9913766384124756,0.8246552348136902,1.8646633625030518,0.07616901397705078,3.4387502670288086,0.7936415076255798,1.4400821924209595,3.2397031784057617,3.5473060607910156,2.340620517730713,-1.3863731622695923,-1.076815128326416,-0.16200041770935059,1.5008660554885864,3.4027204513549805,1.7382047176361084,7.489905834197998,0.19551798701286316,2.682396411895752,-2.1341450214385986,-1.8823683261871338,2.4651646614074707,3.687927722930908,4.6470818519592285,3.7393908500671387,-2.5029067993164062,7.2321672439575195,7.6478047370910645,2.06584095954895,1.4328958988189697,1.58347749710083,2.882542133331299,1.7527860403060913,4.533435821533203,5.932251453399658]}, + {"name":"unknown","source":"/private/me (11).jpg","embedding":[2.6420278549194336,-1.9174046516418457,2.035226345062256,3.803447961807251,5.129156589508057,6.547118186950684,2.534867286682129,2.047065258026123,0.3731060028076172,0.11783230304718018,5.112705230712891,1.6485975980758667,3.2021913528442383,2.6481266021728516,0.10589134693145752,-1.0221729278564453,0.3249216079711914,4.153372764587402,-1.915891408920288,2.7918097972869873,-1.3059982061386108,-0.9189378023147583,-1.5317426919937134,3.0204343795776367,0.6914634108543396,0.7825333476066589,3.350797176361084,4.22995662689209,2.400583267211914,2.525921583175659,7.5131072998046875,0.6570901274681091,3.9245080947875977,2.271528720855713,4.508175373077393,3.0532498359680176,7.401944637298584,0.7148317098617554,0.9760452508926392,-0.04322674870491028,0.9252949953079224,3.140296220779419,-2.9503400325775146,2.152512311935425,1.401667594909668,3.611473321914673,0.2882944345474243,0.8671243190765381,-1.0260759592056274,4.545630931854248,2.6985719203948975,0.22847166657447815,1.3953300714492798,3.4023895263671875,-2.6592087745666504,-0.7721515893936157,1.8768601417541504,3.7199835777282715,-0.7355932593345642,1.9897137880325317,1.0688713788986206,-0.16333118081092834,7.368991851806641,-0.6381640434265137,4.054019927978516,2.900465488433838,2.6405436992645264,1.2780424356460571,2.916106939315796,-1.2136311531066895,1.617728590965271,2.3644373416900635,6.413387775421143,-0.08605640381574631,3.7285923957824707,2.0364880561828613,2.996799945831299,0.6808568239212036,1.3672164678573608,1.7020742893218994,2.309396743774414,-3.4935522079467773,0.07130037248134613,-1.311956524848938,5.616556644439697,6.018482685089111,-1.6552413702011108,4.183866500854492,5.73902702331543,-0.4199962317943573,1.5633658170700073,-0.000039868056774139404,3.467317819595337,-4.0391316413879395,0.8919018507003784,1.9006626605987549,0.023341774940490723,3.501774311065674,0.8675349950790405,1.4694623947143555,3.2812750339508057,3.513462543487549,2.48356294631958,-1.4028067588806152,-1.0832369327545166,-0.17482580244541168,1.4474889039993286,3.390752077102661,1.730446696281433,7.463934898376465,0.2013193964958191,2.710815906524658,-1.999121904373169,-1.8539907932281494,2.399879217147827,3.6459386348724365,4.748393535614014,3.8018412590026855,-2.600130558013916,7.342609882354736,7.684487342834473,2.062542200088501,1.4373295307159424,1.5631518363952637,2.884615659713745,1.7998334169387817,4.509555816650391,6.024741172790527]}, + {"name":"unknown","source":"/private/me (11).jpg","embedding":[2.5915374755859375,-1.8717970848083496,1.9900524616241455,3.819045305252075,5.156206130981445,6.571995735168457,2.5091757774353027,2.0768332481384277,0.3583061397075653,0.11651989817619324,5.117424488067627,1.651672124862671,3.1601381301879883,2.650104284286499,0.14128664135932922,-1.0531256198883057,0.3434130549430847,4.1398138999938965,-1.9219822883605957,2.780261278152466,-1.307484745979309,-0.9367281794548035,-1.5477173328399658,3.025465726852417,0.6954535841941833,0.7736212015151978,3.3718292713165283,4.225364685058594,2.382672071456909,2.505887031555176,7.482944965362549,0.6775718331336975,3.928989887237549,2.249767780303955,4.512218475341797,3.0484907627105713,7.3664326667785645,0.6635797023773193,0.9598926901817322,-0.05096733942627907,0.900168240070343,3.112436056137085,-2.949458122253418,2.1847074031829834,1.4309723377227783,3.6306328773498535,0.2657989263534546,0.8851056694984436,-0.9833256602287292,4.496250152587891,2.707102060317993,0.2466924637556076,1.375553846359253,3.404374361038208,-2.6541426181793213,-0.7460355758666992,1.879568338394165,3.751783609390259,-0.7074940204620361,1.9564437866210938,1.0577733516693115,-0.1801985502243042,7.355653762817383,-0.6267148852348328,4.08821964263916,2.8446662425994873,2.6062614917755127,1.2663061618804932,2.8891658782958984,-1.2613557577133179,1.5633710622787476,2.3751511573791504,6.398602485656738,-0.0884554386138916,3.7114081382751465,2.057126522064209,2.9725186824798584,0.7094802260398865,1.3253933191299438,1.767869234085083,2.3020753860473633,-3.4642627239227295,0.05891730636358261,-1.3506197929382324,5.591399192810059,6.003182888031006,-1.6155788898468018,4.201815128326416,5.756683826446533,-0.4141632914543152,1.5825389623641968,-0.01432374119758606,3.43691086769104,-4.001803398132324,0.8613297939300537,1.9265694618225098,0.04475891590118408,3.5163755416870117,0.8746976256370544,1.4517297744750977,3.32838773727417,3.5549912452697754,2.415536880493164,-1.4102342128753662,-1.1104230880737305,-0.1795164793729782,1.460558295249939,3.457003116607666,1.7323541641235352,7.477568626403809,0.19105783104896545,2.7198212146759033,-2.0032641887664795,-1.8422327041625977,2.3936338424682617,3.6318585872650146,4.714864253997803,3.7443137168884277,-2.576864004135132,7.3224778175354,7.685489654541016,2.0246951580047607,1.4173396825790405,1.571953535079956,2.853299140930176,1.8050837516784668,4.489247798919678,6.007247447967529]}, + {"name":"unknown","source":"/private/me (11).jpg","embedding":[2.580580711364746,-1.918790340423584,2.0104048252105713,3.7815489768981934,5.165987014770508,6.552803993225098,2.4876692295074463,2.0833611488342285,0.38306334614753723,0.13439857959747314,5.132238864898682,1.6392574310302734,3.208041191101074,2.676894426345825,0.09635370969772339,-1.0176180601119995,0.3330678343772888,4.162088871002197,-1.9033398628234863,2.814762830734253,-1.3234257698059082,-0.8993461728096008,-1.548732042312622,2.9874298572540283,0.7014360427856445,0.7734942436218262,3.37864089012146,4.215899467468262,2.4004502296447754,2.552515983581543,7.52168083190918,0.6624860167503357,3.928659677505493,2.2400763034820557,4.514474391937256,3.0513148307800293,7.398160457611084,0.6639324426651001,0.9476824998855591,-0.010414312593638897,0.9066298007965088,3.0938222408294678,-2.968336582183838,2.2085869312286377,1.4228979349136353,3.6252808570861816,0.2948797941207886,0.8711899518966675,-1.0013432502746582,4.5277485847473145,2.6924946308135986,0.24437570571899414,1.3914567232131958,3.404454231262207,-2.6224026679992676,-0.7730329036712646,1.8395781517028809,3.752957582473755,-0.7055402398109436,1.9827606678009033,1.0550825595855713,-0.16868269443511963,7.356998920440674,-0.6185701489448547,4.062637805938721,2.8593523502349854,2.610543727874756,1.2600619792938232,2.878708839416504,-1.2775670289993286,1.5820696353912354,2.368579149246216,6.395886421203613,-0.10233195871114731,3.7073733806610107,2.0349667072296143,3.0059523582458496,0.6861251592636108,1.3633975982666016,1.753886103630066,2.3049368858337402,-3.449270248413086,0.06018742918968201,-1.3424382209777832,5.597109794616699,5.999800682067871,-1.6041147708892822,4.165872097015381,5.763487815856934,-0.4433777332305908,1.5882354974746704,-0.014291413128376007,3.4094250202178955,-4.021803379058838,0.8556352853775024,1.922572374343872,0.03328824043273926,3.500741958618164,0.8671818971633911,1.456870675086975,3.31463360786438,3.5466196537017822,2.471315622329712,-1.4187164306640625,-1.0661653280258179,-0.18044418096542358,1.4740171432495117,3.442960023880005,1.730847954750061,7.450572967529297,0.2050642967224121,2.7018775939941406,-2.001922607421875,-1.8543235063552856,2.401407480239868,3.654768705368042,4.735042572021484,3.7597877979278564,-2.5619683265686035,7.329643726348877,7.680811405181885,2.065887689590454,1.4345066547393799,1.5954302549362183,2.8917076587677,1.8113548755645752,4.498791217803955,6.027212142944336]}, + {"name":"unknown","source":"/private/me (11).jpg","embedding":[2.603168487548828,-1.857020616531372,2.0077250003814697,3.7944672107696533,5.138036727905273,6.590862274169922,2.4905996322631836,2.0411040782928467,0.35915783047676086,0.13944390416145325,5.1368489265441895,1.634641170501709,3.1071321964263916,2.688527822494507,0.13469298183918,-1.0396699905395508,0.32275253534317017,4.163567066192627,-1.9460499286651611,2.8291563987731934,-1.3190878629684448,-0.8817658424377441,-1.5558054447174072,3.0319066047668457,0.6663503646850586,0.7594850659370422,3.368597984313965,4.206393241882324,2.4034712314605713,2.478379726409912,7.5092949867248535,0.6804002523422241,3.884861707687378,2.2372913360595703,4.50185489654541,3.0503909587860107,7.3768086433410645,0.6868937015533447,0.9326237440109253,-0.03789615258574486,0.8914119005203247,3.0850088596343994,-2.935178279876709,2.20637845993042,1.44520902633667,3.650545120239258,0.25553664565086365,0.8921084403991699,-0.9844958186149597,4.5066657066345215,2.6848180294036865,0.2212289273738861,1.391905426979065,3.440356492996216,-2.6509337425231934,-0.7852901816368103,1.8680453300476074,3.7866458892822266,-0.6928526759147644,1.963325023651123,1.0109364986419678,-0.19211965799331665,7.405058860778809,-0.642262876033783,4.126369476318359,2.8429694175720215,2.5933568477630615,1.2583625316619873,2.9375054836273193,-1.2604700326919556,1.5429025888442993,2.3683700561523438,6.387172698974609,-0.09140955656766891,3.7063426971435547,2.0175938606262207,2.970136880874634,0.7493087649345398,1.342146396636963,1.7588938474655151,2.3242063522338867,-3.441344738006592,0.058210380375385284,-1.3619563579559326,5.573765277862549,6.0003886222839355,-1.6006507873535156,4.154842376708984,5.775213718414307,-0.4232064485549927,1.605880618095398,-0.01805701106786728,3.380794048309326,-4.031274795532227,0.8509363532066345,1.9032509326934814,-0.001443028450012207,3.504669427871704,0.8092775940895081,1.418200135231018,3.315765857696533,3.585322380065918,2.4484596252441406,-1.4544029235839844,-1.0612704753875732,-0.15613779425621033,1.4317620992660522,3.4789576530456543,1.7354850769042969,7.473927974700928,0.19976875185966492,2.725876808166504,-2.039693593978882,-1.8634341955184937,2.4279887676239014,3.6741743087768555,4.6905035972595215,3.7661635875701904,-2.5335116386413574,7.298789978027344,7.666792392730713,2.0818986892700195,1.3911882638931274,1.5964102745056152,2.8790295124053955,1.8018739223480225,4.52113151550293,6.009427070617676]}, + {"name":"unknown","source":"/private/me (11).jpg","embedding":[2.564194440841675,-1.8792903423309326,2.0134589672088623,3.805222988128662,5.212940692901611,6.5654215812683105,2.508835554122925,2.0434746742248535,0.35817575454711914,0.10086715221405029,5.147434234619141,1.6380937099456787,3.1558947563171387,2.6333186626434326,0.14268071949481964,-1.070752501487732,0.32676661014556885,4.161478042602539,-1.9436285495758057,2.805953025817871,-1.3353019952774048,-0.9332390427589417,-1.5443753004074097,3.0337119102478027,0.6874675154685974,0.8301929831504822,3.355130195617676,4.205940246582031,2.4381186962127686,2.5484564304351807,7.528141021728516,0.6838299036026001,3.9564194679260254,2.2784910202026367,4.497756004333496,3.09145450592041,7.412079334259033,0.6531041860580444,0.8948262333869934,0.006800719536840916,0.8459938764572144,3.0734901428222656,-2.9902477264404297,2.1575160026550293,1.4390286207199097,3.6165473461151123,0.3333732485771179,0.8385732173919678,-1.0274642705917358,4.49946403503418,2.7074320316314697,0.26544684171676636,1.401284098625183,3.3938777446746826,-2.6256604194641113,-0.7132143378257751,1.8845007419586182,3.8181731700897217,-0.6816918849945068,2.0043904781341553,1.0281684398651123,-0.20038674771785736,7.453309059143066,-0.6822059750556946,4.051696300506592,2.8086230754852295,2.6118016242980957,1.248307704925537,2.9885051250457764,-1.3328204154968262,1.5874232053756714,2.4271397590637207,6.455626487731934,-0.09693797677755356,3.76310133934021,2.093017578125,3.0223405361175537,0.630304753780365,1.4353573322296143,1.7709484100341797,2.343766689300537,-3.4390761852264404,0.09700566530227661,-1.348123550415039,5.527406215667725,5.940155982971191,-1.6518023014068604,4.1527323722839355,5.756538391113281,-0.4855169653892517,1.6283562183380127,-0.07496745884418488,3.423893928527832,-3.97487735748291,0.8473853468894958,1.899783730506897,-0.006443023681640625,3.478736639022827,0.8632434606552124,1.4651116132736206,3.333411693572998,3.590341329574585,2.425144672393799,-1.4096629619598389,-1.058980941772461,-0.20715661346912384,1.4861210584640503,3.4355556964874268,1.7466340065002441,7.4598894119262695,0.17967388033866882,2.6934306621551514,-1.929484486579895,-1.8835333585739136,2.4267096519470215,3.6419506072998047,4.724894046783447,3.78073787689209,-2.5239481925964355,7.319744110107422,7.661963939666748,2.020922899246216,1.4536137580871582,1.5821915864944458,2.8960516452789307,1.8037153482437134,4.479964733123779,5.99614143371582]}, + {"name":"unknown","source":"/private/me (12).jpg","embedding":[2.5416181087493896,-1.8651787042617798,1.996846318244934,3.8268299102783203,5.197497844696045,6.5459089279174805,2.494717597961426,2.1176750659942627,0.36988991498947144,0.12015825510025024,5.116972923278809,1.7103760242462158,3.2593116760253906,2.614969491958618,0.1330481320619583,-1.0868792533874512,0.321802020072937,4.142430782318115,-1.9088916778564453,2.7987635135650635,-1.333006739616394,-0.9455402493476868,-1.5265452861785889,3.021307945251465,0.7181881070137024,0.7749853730201721,3.374570846557617,4.261005401611328,2.355088710784912,2.5411009788513184,7.450517654418945,0.6263643503189087,3.9060449600219727,2.2511775493621826,4.544330596923828,3.00390362739563,7.347078800201416,0.6650590300559998,0.9418907165527344,0.008672020398080349,0.8630342483520508,3.0373294353485107,-2.958754062652588,2.2040278911590576,1.4457446336746216,3.6551477909088135,0.27210527658462524,0.8702974319458008,-0.9623599648475647,4.451400279998779,2.6929690837860107,0.23553374409675598,1.3483498096466064,3.374905586242676,-2.661674976348877,-0.7476003766059875,1.8780322074890137,3.8028013706207275,-0.7024624347686768,1.9081918001174927,1.0706560611724854,-0.15498752892017365,7.336440086364746,-0.5996069312095642,4.07685661315918,2.863076686859131,2.5665035247802734,1.2527421712875366,2.865718126296997,-1.2947068214416504,1.6179256439208984,2.3606700897216797,6.340869903564453,-0.0804486870765686,3.6819450855255127,2.06381893157959,3.028226137161255,0.6923941969871521,1.3410029411315918,1.7864396572113037,2.3254687786102295,-3.4599392414093018,0.09989960491657257,-1.360793113708496,5.600832939147949,5.909093856811523,-1.6888647079467773,4.183101177215576,5.740880966186523,-0.4240911602973938,1.5772069692611694,-0.02077586203813553,3.4956214427948,-3.983912706375122,0.8516712784767151,1.8595705032348633,0.08893680572509766,3.5233147144317627,0.83834308385849,1.4810794591903687,3.293719530105591,3.535087823867798,2.4071285724639893,-1.418152928352356,-1.1367056369781494,-0.16755367815494537,1.5108864307403564,3.382763147354126,1.6712315082550049,7.419247150421143,0.1849263608455658,2.670973062515259,-2.0447287559509277,-1.7836568355560303,2.4422178268432617,3.669764995574951,4.677007675170898,3.730201482772827,-2.5567922592163086,7.229283332824707,7.73384428024292,1.9986639022827148,1.4245085716247559,1.5883417129516602,2.8419244289398193,1.857173204421997,4.499309062957764,6.027304649353027]}, + {"name":"unknown","source":"/private/me (12).jpg","embedding":[2.6065289974212646,-1.8835304975509644,1.9923349618911743,3.8343231678009033,5.14085578918457,6.493807315826416,2.523113965988159,2.1083157062530518,0.4339213967323303,0.16784749925136566,5.0847015380859375,1.697636365890503,3.2258553504943848,2.6467068195343018,0.1143389418721199,-1.0978587865829468,0.36406028270721436,4.103157997131348,-1.8380656242370605,2.768188714981079,-1.2514435052871704,-0.9621707201004028,-1.5461349487304688,3.0270442962646484,0.7047803401947021,0.7634686231613159,3.3546292781829834,4.213956832885742,2.3531877994537354,2.5013604164123535,7.479294776916504,0.6905142068862915,3.9830667972564697,2.233898401260376,4.502645969390869,3.046992063522339,7.298892498016357,0.7288062572479248,1.004396915435791,-0.03899764642119408,0.901431679725647,3.1070895195007324,-2.844533920288086,2.2069125175476074,1.3828974962234497,3.6610231399536133,0.28050997853279114,0.9417515993118286,-0.9742093682289124,4.557832717895508,2.7671749591827393,0.2591952681541443,1.3955539464950562,3.297135591506958,-2.743412494659424,-0.7679437398910522,1.8370741605758667,3.736725330352783,-0.7335930466651917,1.9304285049438477,1.0709850788116455,-0.16387781500816345,7.314688682556152,-0.6315768361091614,4.045194625854492,2.847334861755371,2.559197425842285,1.20576810836792,2.8969478607177734,-1.2501153945922852,1.6094251871109009,2.2783281803131104,6.465895652770996,-0.15304654836654663,3.6924049854278564,2.023944139480591,2.954437732696533,0.6974590420722961,1.3466503620147705,1.744634985923767,2.297950506210327,-3.4800071716308594,0.11175736039876938,-1.456070065498352,5.550791263580322,5.9281415939331055,-1.6579463481903076,4.105710983276367,5.712429046630859,-0.40867072343826294,1.5434715747833252,-0.034594133496284485,3.5644917488098145,-3.9348931312561035,0.8245596289634705,1.8273439407348633,0.1551140546798706,3.573613166809082,0.7844843864440918,1.4847615957260132,3.2382378578186035,3.54962158203125,2.3698461055755615,-1.3769121170043945,-1.1220357418060303,-0.12436578422784805,1.4647974967956543,3.3516182899475098,1.7611207962036133,7.466256618499756,0.19316047430038452,2.773716449737549,-2.0551698207855225,-1.8113338947296143,2.3805713653564453,3.5881636142730713,4.681880950927734,3.7172305583953857,-2.5645763874053955,7.311169624328613,7.7316460609436035,2.0616395473480225,1.4274946451187134,1.5276645421981812,2.8883349895477295,1.8369333744049072,4.483088493347168,5.9945573806762695]}, + {"name":"unknown","source":"/private/me (12).jpg","embedding":[2.5721144676208496,-1.8255000114440918,1.9816336631774902,3.8233041763305664,5.157554626464844,6.523059844970703,2.6269941329956055,2.0751993656158447,0.3291189670562744,0.151513934135437,5.086723327636719,1.7156660556793213,3.185992956161499,2.580012321472168,0.1277165412902832,-1.056700348854065,0.3057827949523926,4.122142314910889,-1.894266128540039,2.832327127456665,-1.2649040222167969,-0.9633370041847229,-1.573003888130188,3.0877058506011963,0.7297453880310059,0.7855453491210938,3.4003210067749023,4.221661567687988,2.3436107635498047,2.492293357849121,7.3605875968933105,0.6765989065170288,3.992518186569214,2.226527214050293,4.503766059875488,3.078904628753662,7.381341934204102,0.6847103834152222,0.9805574417114258,-0.010510649532079697,0.9947007894515991,3.0904927253723145,-2.942203998565674,2.1566832065582275,1.4033721685409546,3.63161301612854,0.2511998414993286,0.861123263835907,-0.9916762113571167,4.57863712310791,2.723792314529419,0.23156338930130005,1.3632711172103882,3.332857370376587,-2.651291608810425,-0.7825636267662048,1.866165041923523,3.729613780975342,-0.6734960079193115,1.9706501960754395,1.1190145015716553,-0.1395752876996994,7.402683734893799,-0.576077401638031,4.0538153648376465,2.8724136352539062,2.5364468097686768,1.2537071704864502,2.8875434398651123,-1.2219065427780151,1.5700139999389648,2.3094139099121094,6.380260944366455,-0.13488739728927612,3.6703224182128906,2.050311326980591,2.973747968673706,0.7198164463043213,1.2981234788894653,1.758035659790039,2.2778122425079346,-3.488168716430664,0.06779535114765167,-1.3763643503189087,5.6059722900390625,5.952660083770752,-1.665061593055725,4.214478015899658,5.76864767074585,-0.3725391924381256,1.544657588005066,0.017658188939094543,3.5024116039276123,-4.13819694519043,0.8499925136566162,1.9301522970199585,0.05480766296386719,3.509977102279663,0.916958749294281,1.4399278163909912,3.380575180053711,3.545987367630005,2.526492118835449,-1.4005870819091797,-1.205274224281311,-0.1837780624628067,1.4767495393753052,3.3904972076416016,1.6977050304412842,7.407194137573242,0.20897701382637024,2.738093852996826,-2.050306558609009,-1.7702305316925049,2.43416690826416,3.6630024909973145,4.663422584533691,3.659688711166382,-2.5350253582000732,7.2939653396606445,7.740452766418457,2.0479860305786133,1.4440803527832031,1.5667839050292969,2.8934760093688965,1.8351950645446777,4.472929000854492,5.9898786544799805]}, + {"name":"unknown","source":"/private/me (12).jpg","embedding":[2.5708508491516113,-1.890397310256958,2.023984909057617,3.790060520172119,5.179903030395508,6.527217864990234,2.5191078186035156,2.1049885749816895,0.417841374874115,0.13438376784324646,5.086918354034424,1.6740877628326416,3.264256238937378,2.603628635406494,0.05518181622028351,-1.0744901895523071,0.35252976417541504,4.121880531311035,-1.8904346227645874,2.80444073677063,-1.3003606796264648,-0.9523624181747437,-1.51439368724823,3.06502628326416,0.738021194934845,0.7705078125,3.352182388305664,4.210651874542236,2.4091527462005615,2.543362855911255,7.448211669921875,0.6101016998291016,3.9724342823028564,2.238077402114868,4.513548374176025,3.001370429992676,7.327130317687988,0.6884743571281433,0.9856209754943848,-0.00694813160225749,0.8780484199523926,3.0840470790863037,-2.9088525772094727,2.1389272212982178,1.3915092945098877,3.649517774581909,0.297846257686615,0.8544912934303284,-0.9618818759918213,4.485932350158691,2.695394992828369,0.23083573579788208,1.3426378965377808,3.357266902923584,-2.6595263481140137,-0.7659447193145752,1.8285859823226929,3.798139810562134,-0.7575834393501282,1.9621436595916748,1.093518614768982,-0.19658613204956055,7.323286056518555,-0.5836708545684814,4.041478633880615,2.8266031742095947,2.6142194271087646,1.2679014205932617,2.8257269859313965,-1.2705328464508057,1.6373162269592285,2.307281732559204,6.354426860809326,-0.07505513727664948,3.682549238204956,2.012540817260742,2.9382240772247314,0.7015788555145264,1.3647624254226685,1.731965184211731,2.3183040618896484,-3.453474998474121,0.07246220856904984,-1.3840506076812744,5.609245300292969,5.952171802520752,-1.6246123313903809,4.170143127441406,5.749453067779541,-0.3917064368724823,1.5795395374298096,-0.008104130625724792,3.536190986633301,-4.048418045043945,0.8449114561080933,1.8819140195846558,0.11500442028045654,3.5084986686706543,0.8257015347480774,1.4711475372314453,3.308727741241455,3.554650068283081,2.4138429164886475,-1.4133251905441284,-1.1409629583358765,-0.10996808111667633,1.4596432447433472,3.380261182785034,1.7296139001846313,7.462764739990234,0.1532764434814453,2.74444317817688,-2.059231758117676,-1.81917405128479,2.4056947231292725,3.6072611808776855,4.692144393920898,3.7222156524658203,-2.5376672744750977,7.312516212463379,7.766623020172119,2.0376288890838623,1.397405743598938,1.5877293348312378,2.8309953212738037,1.849583625793457,4.502514839172363,6.033630847930908]}, + {"name":"unknown","source":"/private/me (12).jpg","embedding":[2.603865385055542,-1.9016538858413696,2.0201399326324463,3.840406894683838,5.195404529571533,6.491240501403809,2.5592668056488037,2.0805258750915527,0.3899896740913391,0.1403971016407013,5.064670562744141,1.6837507486343384,3.244666576385498,2.6230225563049316,0.08883582800626755,-1.0287095308303833,0.3365146517753601,4.139089107513428,-1.8895859718322754,2.8410072326660156,-1.2564491033554077,-0.9837454557418823,-1.5232410430908203,3.090797185897827,0.6989564299583435,0.7549137473106384,3.3941259384155273,4.27255392074585,2.3961760997772217,2.5598647594451904,7.421407222747803,0.6652892231941223,3.9598426818847656,2.15069580078125,4.497219562530518,2.9651553630828857,7.360738754272461,0.7319522500038147,0.9905009269714355,0.011242596432566643,0.9166455268859863,3.144534111022949,-2.946467161178589,2.149301290512085,1.3883578777313232,3.603816270828247,0.3205288052558899,0.8854538202285767,-1.0064306259155273,4.574192047119141,2.7129337787628174,0.2390604317188263,1.3601990938186646,3.369037389755249,-2.692448139190674,-0.7894697785377502,1.8489701747894287,3.7894129753112793,-0.7843055725097656,1.893127679824829,1.059683084487915,-0.18907666206359863,7.334519386291504,-0.6236064434051514,4.048874855041504,2.8801629543304443,2.5626773834228516,1.289736270904541,2.858781337738037,-1.2268964052200317,1.5965315103530884,2.242459535598755,6.429259777069092,-0.1107974499464035,3.685938596725464,1.9879268407821655,2.922840118408203,0.6824072003364563,1.3320368528366089,1.7316392660140991,2.3109617233276367,-3.4646148681640625,0.09811083227396011,-1.4107332229614258,5.583372592926025,5.943301200866699,-1.6091506481170654,4.155604839324951,5.730416774749756,-0.338880717754364,1.5840284824371338,-0.0003137066960334778,3.5983481407165527,-4.0606465339660645,0.8524474501609802,1.8706305027008057,0.07139372825622559,3.4628536701202393,0.7818688154220581,1.4846031665802002,3.327650785446167,3.5218427181243896,2.420783519744873,-1.4069814682006836,-1.1447219848632812,-0.13389016687870026,1.4830150604248047,3.4139833450317383,1.7366235256195068,7.501056671142578,0.16952592134475708,2.7047245502471924,-2.0775716304779053,-1.877703070640564,2.3904266357421875,3.5805978775024414,4.720322132110596,3.7247955799102783,-2.51057767868042,7.355691432952881,7.803173065185547,2.036109447479248,1.3917133808135986,1.6038455963134766,2.8406801223754883,1.7881293296813965,4.560789108276367,6.056074142456055]}, + {"name":"unknown","source":"/private/me (13).jpg","embedding":[2.6144156455993652,-1.817764401435852,2.031841516494751,3.8294637203216553,5.150733947753906,6.593743324279785,2.520289659500122,2.0747103691101074,0.39621496200561523,0.14518651366233826,5.134289741516113,1.6804240942001343,3.10939621925354,2.6215591430664062,0.16298460960388184,-1.077073097229004,0.36439865827560425,4.144093990325928,-1.8993016481399536,2.840559720993042,-1.3760098218917847,-0.9190480709075928,-1.5348780155181885,2.9628567695617676,0.6818903684616089,0.7870699167251587,3.324359893798828,4.200313568115234,2.3571937084198,2.5469753742218018,7.523523330688477,0.6695166826248169,3.9140641689300537,2.3115251064300537,4.519423961639404,3.091874361038208,7.414587497711182,0.6674467325210571,0.9519186019897461,-0.014513639733195305,0.874845027923584,3.1223599910736084,-2.9344494342803955,2.2054038047790527,1.3735063076019287,3.658635139465332,0.3004308342933655,0.879231870174408,-0.943803608417511,4.490253448486328,2.7104978561401367,0.26097172498703003,1.416711449623108,3.3669815063476562,-2.683680772781372,-0.7369851469993591,1.8850449323654175,3.797290802001953,-0.6768419742584229,1.972996711730957,1.058126449584961,-0.22569487988948822,7.4069108963012695,-0.626087486743927,4.085954666137695,2.883598566055298,2.5779824256896973,1.209288477897644,2.9246981143951416,-1.2994476556777954,1.567496418952942,2.358027696609497,6.377395153045654,-0.03207157179713249,3.6927998065948486,2.0643150806427,3.0276875495910645,0.670674741268158,1.3633522987365723,1.732797622680664,2.337161064147949,-3.4636330604553223,0.09672559797763824,-1.334775686264038,5.590221405029297,5.981818199157715,-1.645168662071228,4.168018817901611,5.75601863861084,-0.3933100700378418,1.5948601961135864,-0.027644991874694824,3.4447860717773438,-3.970168352127075,0.8312643766403198,1.8670989274978638,0.0712428092956543,3.4936397075653076,0.9320104718208313,1.4082940816879272,3.2539706230163574,3.547112226486206,2.3354156017303467,-1.387303113937378,-1.0369592905044556,-0.12940184772014618,1.465376377105713,3.388861656188965,1.7394458055496216,7.467165946960449,0.18103832006454468,2.699533700942993,-2.0452792644500732,-1.8443670272827148,2.4434475898742676,3.658153533935547,4.747559547424316,3.784430980682373,-2.5905075073242188,7.246850490570068,7.6649932861328125,2.0221028327941895,1.424296259880066,1.5531353950500488,2.8565988540649414,1.7886195182800293,4.489959239959717,5.977360725402832]}, + {"name":"unknown","source":"/private/me (13).jpg","embedding":[2.55639386177063,-1.850875735282898,2.026682138442993,3.849701166152954,5.210960865020752,6.577901840209961,2.54394793510437,2.140563488006592,0.39312663674354553,0.16204795241355896,5.1432929039001465,1.6891571283340454,3.138072967529297,2.637439489364624,0.10727865248918533,-1.106583833694458,0.32392460107803345,4.151019096374512,-1.8799307346343994,2.831620931625366,-1.3398559093475342,-0.9554500579833984,-1.5691322088241577,2.9136064052581787,0.7017050385475159,0.7777516841888428,3.390817880630493,4.2245025634765625,2.349498987197876,2.4992575645446777,7.515909194946289,0.6933475136756897,3.905244827270508,2.2603445053100586,4.512962341308594,3.015390157699585,7.325294494628906,0.6774067878723145,0.978509783744812,-0.002332433359697461,0.8967546224594116,3.072862386703491,-2.9068398475646973,2.209770679473877,1.361274242401123,3.6474952697753906,0.3020256757736206,0.8819056749343872,-1.0303006172180176,4.491001605987549,2.724569797515869,0.2584433853626251,1.3662673234939575,3.4026262760162354,-2.6478829383850098,-0.7427371740341187,1.8676351308822632,3.698425769805908,-0.6914315819740295,1.9738695621490479,1.116645097732544,-0.15031227469444275,7.334294319152832,-0.6268576979637146,4.0601372718811035,2.8693151473999023,2.497988224029541,1.2655980587005615,2.9119908809661865,-1.2581984996795654,1.5756902694702148,2.3710439205169678,6.368264675140381,-0.09504081308841705,3.70015549659729,2.0899243354797363,2.994236707687378,0.6803903579711914,1.3591604232788086,1.7855932712554932,2.30440092086792,-3.4800472259521484,0.05524541437625885,-1.359391450881958,5.5880255699157715,5.9488444328308105,-1.6875519752502441,4.165985584259033,5.759009838104248,-0.3881106972694397,1.556104063987732,-0.0272042378783226,3.497373580932617,-3.9854369163513184,0.8398630023002625,1.910226821899414,0.08300626277923584,3.491258382797241,0.9004721641540527,1.4405252933502197,3.262422561645508,3.5568487644195557,2.3800363540649414,-1.41006600856781,-1.0833942890167236,-0.166335329413414,1.4652000665664673,3.347597599029541,1.6879122257232666,7.4321184158325195,0.14056020975112915,2.7090044021606445,-2.0552902221679688,-1.7940776348114014,2.418679714202881,3.6345958709716797,4.71174955368042,3.77028226852417,-2.5839593410491943,7.251337051391602,7.713431358337402,2.0091936588287354,1.4279429912567139,1.556323766708374,2.8713481426239014,1.7987115383148193,4.484426975250244,6.0187249183654785]}, + {"name":"unknown","source":"/private/me (13).jpg","embedding":[2.5802114009857178,-1.8725835084915161,2.0159010887145996,3.829636573791504,5.178216934204102,6.576616287231445,2.4928598403930664,2.1058106422424316,0.3623879551887512,0.1158919632434845,5.105551242828369,1.6946632862091064,3.1919891834259033,2.5969598293304443,0.13464900851249695,-1.063084602355957,0.35495316982269287,4.132017135620117,-1.898039698600769,2.8103091716766357,-1.3331022262573242,-0.9455187916755676,-1.5612379312515259,3.033776044845581,0.7218207716941833,0.7587748169898987,3.333239793777466,4.244556427001953,2.3895723819732666,2.5403921604156494,7.483357906341553,0.644062340259552,3.89957594871521,2.2512588500976562,4.517646312713623,3.004521369934082,7.323047161102295,0.6610606908798218,0.9629074335098267,-0.03636392205953598,0.8655555248260498,3.0802853107452393,-2.9383609294891357,2.1642348766326904,1.4132682085037231,3.662838935852051,0.2713266611099243,0.9039843082427979,-0.979177713394165,4.49343729019165,2.6907379627227783,0.22774317860603333,1.3797541856765747,3.4012820720672607,-2.6758289337158203,-0.7474748492240906,1.8729374408721924,3.809946060180664,-0.7110689878463745,1.9294939041137695,1.0636018514633179,-0.2036341279745102,7.3377509117126465,-0.6121547222137451,4.092146873474121,2.8155806064605713,2.567580461502075,1.2496201992034912,2.8757145404815674,-1.2458202838897705,1.6311522722244263,2.3532462120056152,6.329006195068359,-0.09753156453371048,3.6798572540283203,2.0443897247314453,2.9838359355926514,0.7044016718864441,1.3151155710220337,1.7614922523498535,2.339158058166504,-3.4436769485473633,0.10203953087329865,-1.4000550508499146,5.622824192047119,5.962156295776367,-1.6383061408996582,4.176991939544678,5.74354362487793,-0.4097382128238678,1.5823124647140503,-0.007526330649852753,3.4785382747650146,-3.990640878677368,0.858589768409729,1.8674112558364868,0.11145758628845215,3.520730972290039,0.8832578063011169,1.449600338935852,3.307438611984253,3.5182669162750244,2.368342876434326,-1.4185675382614136,-1.1099426746368408,-0.14787201583385468,1.5023930072784424,3.3560163974761963,1.724724531173706,7.426065921783447,0.18026334047317505,2.6752099990844727,-2.086923360824585,-1.8106749057769775,2.3972034454345703,3.6293742656707764,4.682252407073975,3.716732978820801,-2.5929718017578125,7.283663272857666,7.735496520996094,2.0575616359710693,1.3986170291900635,1.5496236085891724,2.850926399230957,1.817408800125122,4.516244411468506,6.026617050170898]}, + {"name":"unknown","source":"/private/me (13).jpg","embedding":[2.589827299118042,-1.840192437171936,2.0390727519989014,3.8501627445220947,5.143692970275879,6.554434299468994,2.483381986618042,2.1610233783721924,0.4168035686016083,0.15283775329589844,5.1404709815979,1.7055197954177856,3.1712799072265625,2.5978028774261475,0.1174977719783783,-1.1260464191436768,0.3405783772468567,4.125907897949219,-1.8404607772827148,2.839620590209961,-1.3713223934173584,-0.9167638421058655,-1.5508345365524292,2.9512035846710205,0.7286399602890015,0.7428601980209351,3.353877067565918,4.197733402252197,2.3844382762908936,2.5269358158111572,7.489986419677734,0.6724908351898193,3.8946025371551514,2.2692360877990723,4.513548374176025,3.031431198120117,7.3620219230651855,0.680765688419342,0.984433650970459,-0.03655671328306198,0.8491721153259277,3.086643695831299,-2.885065793991089,2.208925485610962,1.3707618713378906,3.6562230587005615,0.2882830500602722,0.8644081950187683,-0.9616687893867493,4.473896026611328,2.702873945236206,0.26996129751205444,1.3613865375518799,3.3949639797210693,-2.6482276916503906,-0.7510665655136108,1.8770533800125122,3.7676143646240234,-0.6943960189819336,1.9818322658538818,1.0800995826721191,-0.16129569709300995,7.329812526702881,-0.6534479856491089,4.064438343048096,2.8705697059631348,2.5383071899414062,1.2039715051651,2.961583137512207,-1.3134957551956177,1.5529764890670776,2.3809542655944824,6.42203950881958,-0.09308746457099915,3.702821731567383,2.0727436542510986,2.9942734241485596,0.677500307559967,1.3258628845214844,1.789797306060791,2.3107175827026367,-3.454500675201416,0.079152911901474,-1.3640632629394531,5.590442180633545,5.964859962463379,-1.6868923902511597,4.12382698059082,5.737767219543457,-0.4010794460773468,1.5977773666381836,-0.07485765963792801,3.476381540298462,-3.9429972171783447,0.7747551202774048,1.8804421424865723,0.12484002113342285,3.5091843605041504,0.9154767394065857,1.4284491539001465,3.2182974815368652,3.564103364944458,2.327061653137207,-1.3484867811203003,-1.0363973379135132,-0.14929160475730896,1.4286116361618042,3.3438191413879395,1.6574504375457764,7.374860763549805,0.15433025360107422,2.6996676921844482,-2.0414788722991943,-1.7658369541168213,2.4396958351135254,3.640698194503784,4.717041015625,3.7923946380615234,-2.5869812965393066,7.221705436706543,7.663039684295654,2.0300278663635254,1.4289828538894653,1.5369393825531006,2.8089239597320557,1.8194494247436523,4.489638328552246,5.996174335479736]}, + {"name":"unknown","source":"/private/me (13).jpg","embedding":[2.5705225467681885,-1.9466760158538818,2.0322184562683105,3.78765869140625,5.1914544105529785,6.551868438720703,2.4823622703552246,2.0666251182556152,0.40886369347572327,0.14062345027923584,5.0938029289245605,1.662576675415039,3.2642571926116943,2.6221706867218018,0.10817800462245941,-1.0470088720321655,0.3176265358924866,4.139450550079346,-1.8928194046020508,2.8259198665618896,-1.3286616802215576,-0.9859291315078735,-1.5839723348617554,3.035712957382202,0.7228060960769653,0.7588857412338257,3.3545167446136475,4.20365047454834,2.4589591026306152,2.611701011657715,7.46806001663208,0.6342408657073975,3.9545843601226807,2.208401679992676,4.508530139923096,2.9793803691864014,7.366562843322754,0.7141128182411194,0.9800624251365662,-0.03500223904848099,0.903007984161377,3.072329044342041,-2.9369497299194336,2.155665636062622,1.409665822982788,3.618095636367798,0.32126498222351074,0.8700519800186157,-0.9867855310440063,4.4708709716796875,2.726182222366333,0.17347615957260132,1.3886547088623047,3.376784563064575,-2.6162517070770264,-0.7660404443740845,1.8374844789505005,3.8337762355804443,-0.6894946098327637,1.9821442365646362,1.0955150127410889,-0.21003220975399017,7.344353675842285,-0.6435484886169434,4.051049709320068,2.7357959747314453,2.6148855686187744,1.2520081996917725,2.832967519760132,-1.2592417001724243,1.6035847663879395,2.3141050338745117,6.385908603668213,-0.06845349073410034,3.662700653076172,2.0182578563690186,2.9472100734710693,0.6782788038253784,1.3995020389556885,1.757504940032959,2.2699360847473145,-3.4430735111236572,0.08758588880300522,-1.415900468826294,5.582304954528809,5.880324363708496,-1.6020065546035767,4.128495693206787,5.804650783538818,-0.44540682435035706,1.6019089221954346,-0.003981038928031921,3.4908900260925293,-3.9670827388763428,0.8533244132995605,1.9246259927749634,0.11087608337402344,3.5784080028533936,0.9081637859344482,1.5192649364471436,3.319857120513916,3.510603427886963,2.38899827003479,-1.3864924907684326,-1.1284253597259521,-0.1848183274269104,1.439361810684204,3.3551106452941895,1.7642600536346436,7.438180923461914,0.16053035855293274,2.750347852706909,-1.9939273595809937,-1.8617511987686157,2.4158294200897217,3.6191165447235107,4.621229648590088,3.767115354537964,-2.534487724304199,7.329762935638428,7.7641282081604,2.063131332397461,1.401789903640747,1.5361649990081787,2.8513622283935547,1.8635796308517456,4.498495101928711,6.032886028289795]}, + {"name":"unknown","source":"/private/me (14).jpg","embedding":[2.5334203243255615,-1.8623501062393188,1.9695210456848145,3.8135488033294678,5.1376237869262695,6.534337043762207,2.502772569656372,2.150453567504883,0.3505878150463104,0.12658679485321045,5.130496501922607,1.6642870903015137,3.240330219268799,2.5817790031433105,0.1127607524394989,-1.075533390045166,0.3743777275085449,4.123716831207275,-1.9257543087005615,2.777496814727783,-1.2923065423965454,-0.9728891849517822,-1.4936251640319824,3.0729944705963135,0.7004222869873047,0.762241542339325,3.34126877784729,4.197210311889648,2.352915048599243,2.540992498397827,7.460414409637451,0.661292314529419,3.8817636966705322,2.262380599975586,4.526104927062988,3.003180980682373,7.35360050201416,0.6514248847961426,0.9198848009109497,-0.008593190461397171,0.8850045204162598,3.076986312866211,-2.956357479095459,2.18105149269104,1.41934335231781,3.6583170890808105,0.24543637037277222,0.879913330078125,-0.9954172968864441,4.460281848907471,2.682915687561035,0.20609378814697266,1.3739391565322876,3.362295389175415,-2.6831343173980713,-0.7746116518974304,1.8940578699111938,3.7858965396881104,-0.6807147860527039,1.9145910739898682,1.0642050504684448,-0.16969233751296997,7.340137958526611,-0.5978361964225769,4.066685676574707,2.8157782554626465,2.6039347648620605,1.2522881031036377,2.8385872840881348,-1.2546273469924927,1.6047824621200562,2.369661569595337,6.325219631195068,-0.09580214321613312,3.680507183074951,2.0598340034484863,2.9679195880889893,0.7493165731430054,1.3554308414459229,1.765244960784912,2.3108434677124023,-3.4743239879608154,0.10307352244853973,-1.3755784034729004,5.589725971221924,5.91909122467041,-1.6346111297607422,4.197259902954102,5.739369869232178,-0.41347211599349976,1.5324307680130005,-0.01339208334684372,3.4604225158691406,-4.025146007537842,0.865868866443634,1.8702741861343384,0.11130917072296143,3.5273356437683105,0.8527358770370483,1.4742329120635986,3.3440632820129395,3.5257370471954346,2.443693161010742,-1.4463165998458862,-1.1309539079666138,-0.17259566485881805,1.5538464784622192,3.3978629112243652,1.6697964668273926,7.458500862121582,0.16910701990127563,2.6573660373687744,-2.0210585594177246,-1.8407005071640015,2.4026687145233154,3.6408491134643555,4.680130958557129,3.722193717956543,-2.5675265789031982,7.285536766052246,7.733079433441162,1.9955847263336182,1.4338102340698242,1.5717296600341797,2.839367628097534,1.79449462890625,4.503143787384033,6.039484977722168]}, + {"name":"unknown","source":"/private/me (14).jpg","embedding":[2.549551010131836,-1.8692665100097656,2.0015785694122314,3.79610538482666,5.1790876388549805,6.54586935043335,2.5142643451690674,2.087827682495117,0.3778836131095886,0.11631351709365845,5.12914514541626,1.7027720212936401,3.243351936340332,2.6528756618499756,0.10252830386161804,-1.0744916200637817,0.3261502981185913,4.136232852935791,-1.8970396518707275,2.817473888397217,-1.3552589416503906,-0.9254686832427979,-1.5098134279251099,3.0327610969543457,0.7118644714355469,0.7679759860038757,3.37658953666687,4.2696075439453125,2.3631231784820557,2.5296432971954346,7.464924335479736,0.6142221689224243,3.9066619873046875,2.2626147270202637,4.529277324676514,2.9973409175872803,7.35780668258667,0.6682297587394714,0.9485002756118774,-0.005714999046176672,0.8594667911529541,3.018515110015869,-2.9267873764038086,2.2060537338256836,1.4357777833938599,3.6650197505950928,0.250968873500824,0.8916366100311279,-0.9383599758148193,4.446873188018799,2.707524538040161,0.21539126336574554,1.35380220413208,3.3904950618743896,-2.6821701526641846,-0.7620011568069458,1.8778347969055176,3.7932727336883545,-0.7117226123809814,1.8894641399383545,1.053558349609375,-0.17266671359539032,7.346255302429199,-0.6121927499771118,4.0831379890441895,2.849199056625366,2.595137119293213,1.2390761375427246,2.8657031059265137,-1.2932409048080444,1.5782521963119507,2.362483263015747,6.343245983123779,-0.06957114487886429,3.664362668991089,2.039292812347412,3.0319437980651855,0.7011592984199524,1.3501315116882324,1.7657155990600586,2.330569267272949,-3.447556972503662,0.10139713436365128,-1.3725178241729736,5.612124919891357,5.911233901977539,-1.701856255531311,4.1858367919921875,5.750222682952881,-0.4122031629085541,1.5673506259918213,-0.02487027645111084,3.467815399169922,-3.9975368976593018,0.8607878684997559,1.863948106765747,0.09303951263427734,3.524733066558838,0.8346997499465942,1.476608157157898,3.264486074447632,3.5355820655822754,2.4132235050201416,-1.4153835773468018,-1.11478853225708,-0.15539593994617462,1.5043134689331055,3.3986828327178955,1.7233763933181763,7.452959060668945,0.17856520414352417,2.6929376125335693,-2.0641634464263916,-1.8140473365783691,2.4416067600250244,3.6971840858459473,4.6690897941589355,3.7293498516082764,-2.5844295024871826,7.230723857879639,7.7383880615234375,2.0360562801361084,1.4295885562896729,1.5983409881591797,2.8398497104644775,1.8466508388519287,4.514397144317627,6.0008978843688965]}, + {"name":"unknown","source":"/private/me (14).jpg","embedding":[2.536924362182617,-1.8733404874801636,2.036778688430786,3.7950854301452637,5.167192459106445,6.530060291290283,2.535797595977783,2.122223377227783,0.37885746359825134,0.14969807863235474,5.103476047515869,1.6809592247009277,3.2317893505096436,2.626357316970825,0.09774081408977509,-1.092527151107788,0.3241409659385681,4.121084213256836,-1.9110522270202637,2.806925058364868,-1.3155492544174194,-0.9400174617767334,-1.5765337944030762,3.080422878265381,0.7031710147857666,0.7326188683509827,3.334289789199829,4.188663959503174,2.3867714405059814,2.513629198074341,7.456228733062744,0.6710094213485718,3.9931704998016357,2.2331085205078125,4.518011093139648,3.0225670337677,7.3167643547058105,0.6556401252746582,0.9930838346481323,-0.025288572534918785,0.8732860088348389,3.0630910396575928,-2.9422383308410645,2.16652774810791,1.435088038444519,3.6405904293060303,0.2651653289794922,0.8679508566856384,-0.9436359405517578,4.451883316040039,2.7027432918548584,0.21272140741348267,1.3773233890533447,3.3643996715545654,-2.6489028930664062,-0.768640398979187,1.838097333908081,3.8236451148986816,-0.6769701838493347,1.953260064125061,1.0882900953292847,-0.1860370635986328,7.334361553192139,-0.6184118986129761,4.083760738372803,2.728916883468628,2.561446189880371,1.283838152885437,2.83414626121521,-1.2668403387069702,1.5847623348236084,2.2779736518859863,6.350169658660889,-0.0836467370390892,3.672617197036743,2.0358664989471436,2.941513776779175,0.6999644041061401,1.3926490545272827,1.758057713508606,2.326284408569336,-3.4415438175201416,0.1005076989531517,-1.381069540977478,5.598423957824707,5.924047470092773,-1.6536586284637451,4.1525654792785645,5.749014854431152,-0.38571488857269287,1.6306211948394775,-0.034369610249996185,3.539560556411743,-4.029841423034668,0.8278416395187378,1.8780466318130493,0.057625651359558105,3.5251832008361816,0.8547933101654053,1.4670460224151611,3.326988697052002,3.560184955596924,2.41092586517334,-1.3689361810684204,-1.1778234243392944,-0.17144587635993958,1.4882588386535645,3.3935952186584473,1.7603040933609009,7.437702178955078,0.1539960503578186,2.706678628921509,-2.0274407863616943,-1.804173231124878,2.3954970836639404,3.6375043392181396,4.644947528839111,3.7297472953796387,-2.4956459999084473,7.281443119049072,7.71742057800293,2.0441372394561768,1.4116650819778442,1.599170207977295,2.843907356262207,1.860363483428955,4.4675679206848145,6.012999057769775]}, + {"name":"unknown","source":"/private/me (14).jpg","embedding":[2.581511974334717,-1.894456386566162,2.0345969200134277,3.80584979057312,5.175370693206787,6.547088623046875,2.537505865097046,2.074849843978882,0.39046788215637207,0.11309409141540527,5.125287055969238,1.6547609567642212,3.1995344161987305,2.65042781829834,0.09778797626495361,-1.0591671466827393,0.3380700349807739,4.123904705047607,-1.8860678672790527,2.810487985610962,-1.2746418714523315,-0.9421951770782471,-1.5139756202697754,3.0118892192840576,0.6771478652954102,0.7867301106452942,3.3632113933563232,4.21101713180542,2.3614792823791504,2.508444309234619,7.505731582641602,0.6639167666435242,3.9524848461151123,2.2834925651550293,4.505465030670166,3.040665864944458,7.3687357902526855,0.7177460193634033,0.9793739914894104,-0.008161677978932858,0.9037047624588013,3.127152919769287,-2.9160447120666504,2.1987156867980957,1.355633020401001,3.651102066040039,0.2525079846382141,0.8820309638977051,-0.9790666699409485,4.498044490814209,2.7067666053771973,0.2332458794116974,1.4008493423461914,3.388040781021118,-2.6447489261627197,-0.7623227834701538,1.8348270654678345,3.7307262420654297,-0.6705533266067505,1.9976062774658203,1.0585395097732544,-0.19478628039360046,7.347317218780518,-0.616511344909668,4.050570964813232,2.827031373977661,2.608938455581665,1.3030385971069336,2.8944196701049805,-1.2465214729309082,1.6038566827774048,2.3799495697021484,6.32711124420166,-0.08490002900362015,3.705780506134033,2.0542337894439697,2.971592903137207,0.695775032043457,1.4280352592468262,1.7247247695922852,2.3014676570892334,-3.4929380416870117,0.081880122423172,-1.3229645490646362,5.602595806121826,5.9769463539123535,-1.628499150276184,4.171123504638672,5.784972667694092,-0.457533061504364,1.553775668144226,-0.027948953211307526,3.47174334526062,-4.001894474029541,0.8617492318153381,1.8871530294418335,0.0549466609954834,3.4991941452026367,0.9092279076576233,1.453859567642212,3.259836196899414,3.5107648372650146,2.3847434520721436,-1.3967628479003906,-1.1263079643249512,-0.1512163281440735,1.4895265102386475,3.3574378490448,1.7168511152267456,7.46741247177124,0.16127508878707886,2.7190613746643066,-2.0020506381988525,-1.847538948059082,2.373173475265503,3.603250503540039,4.733975887298584,3.7237579822540283,-2.5980324745178223,7.290226936340332,7.701063632965088,2.0352418422698975,1.4279751777648926,1.559039831161499,2.85617995262146,1.7935817241668701,4.484691143035889,6.016958236694336]}, + {"name":"unknown","source":"/private/me (14).jpg","embedding":[2.540911912918091,-1.8540639877319336,2.0094242095947266,3.806638240814209,5.149878978729248,6.51244592666626,2.548203706741333,2.0988497734069824,0.4016980230808258,0.1339762806892395,5.114882946014404,1.6997569799423218,3.2033560276031494,2.633784532546997,0.1126466915011406,-1.0723849534988403,0.3302451968193054,4.129756450653076,-1.8949464559555054,2.827219009399414,-1.315225601196289,-0.9290226101875305,-1.5532859563827515,3.077723503112793,0.7068191170692444,0.7974584102630615,3.3853135108947754,4.2527241706848145,2.3425774574279785,2.5211410522460938,7.439972400665283,0.6078354716300964,3.9322988986968994,2.2139642238616943,4.498099327087402,3.032186269760132,7.312493801116943,0.7074037790298462,0.9931190013885498,-0.0014777769101783633,0.8874679803848267,3.048513412475586,-2.955373525619507,2.19535493850708,1.4038909673690796,3.632300853729248,0.2630029618740082,0.8878917098045349,-0.9479947686195374,4.503171920776367,2.6868536472320557,0.2606768012046814,1.3582055568695068,3.370863676071167,-2.6333189010620117,-0.7489500641822815,1.8489494323730469,3.7651114463806152,-0.7477849721908569,1.9215996265411377,1.092176914215088,-0.16544218361377716,7.325399398803711,-0.5821213722229004,4.035869598388672,2.844500780105591,2.516720771789551,1.2785077095031738,2.842682123184204,-1.2632414102554321,1.5998666286468506,2.319967746734619,6.3457932472229,-0.11489371955394745,3.6676509380340576,2.0493392944335938,2.9970998764038086,0.7029761672019958,1.3126140832901,1.7756168842315674,2.3006763458251953,-3.4577393531799316,0.06084868311882019,-1.3657267093658447,5.621018409729004,5.963254928588867,-1.6972297430038452,4.222712516784668,5.7414374351501465,-0.35485270619392395,1.5470212697982788,0.004206426441669464,3.460439443588257,-4.026559352874756,0.8500238656997681,1.9195661544799805,0.0867687463760376,3.4801506996154785,0.8400912284851074,1.4588541984558105,3.321734666824341,3.540846824645996,2.3937296867370605,-1.4084093570709229,-1.169193983078003,-0.15884281694889069,1.476441502571106,3.413827419281006,1.7055394649505615,7.465163230895996,0.17584264278411865,2.688788414001465,-2.063082218170166,-1.8302855491638184,2.424232006072998,3.651980400085449,4.689879417419434,3.6922993659973145,-2.5487565994262695,7.272097587585449,7.7009477615356445,2.0287320613861084,1.435498595237732,1.5820125341415405,2.8894944190979004,1.8300120830535889,4.4819416999816895,6.032259464263916]}, + {"name":"unknown","source":"/private/me (14).jpg","embedding":[2.560478925704956,-1.8606457710266113,1.9807534217834473,3.79780912399292,5.1753621101379395,6.5827789306640625,2.486157178878784,2.0911293029785156,0.33445417881011963,0.14898476004600525,5.124356269836426,1.6779165267944336,3.173515558242798,2.649618148803711,0.11633414030075073,-1.09235680103302,0.33261287212371826,4.174312591552734,-1.944722056388855,2.8096537590026855,-1.3495051860809326,-0.9323212504386902,-1.5212101936340332,2.9938323497772217,0.6890131235122681,0.7746480107307434,3.366787910461426,4.2183709144592285,2.350571393966675,2.521684169769287,7.488949298858643,0.6732984185218811,3.896493911743164,2.2412467002868652,4.5288543701171875,3.0335683822631836,7.399962425231934,0.645216703414917,0.8981289267539978,-0.0024763131514191628,0.8660610914230347,3.0752439498901367,-2.9596879482269287,2.1804802417755127,1.4396418333053589,3.6500720977783203,0.26692765951156616,0.8760876059532166,-0.9536892175674438,4.486845016479492,2.729513645172119,0.2296532690525055,1.3809471130371094,3.3638858795166016,-2.6669399738311768,-0.7346821427345276,1.907447099685669,3.7685112953186035,-0.7016956806182861,1.9348193407058716,1.0499573945999146,-0.20343220233917236,7.364679336547852,-0.6110711097717285,4.0754852294921875,2.8642783164978027,2.558103084564209,1.2282301187515259,2.9177730083465576,-1.2748808860778809,1.5575528144836426,2.352531671524048,6.389008045196533,-0.07213231176137924,3.692272663116455,2.057512044906616,3.0204176902770996,0.7268431186676025,1.352755069732666,1.7823846340179443,2.3309123516082764,-3.4694719314575195,0.10708195716142654,-1.3624616861343384,5.558021545410156,5.912502288818359,-1.651090383529663,4.186135768890381,5.726535320281982,-0.4124735891819,1.552587628364563,-0.034156009554862976,3.434628963470459,-4.020933151245117,0.8612560033798218,1.9009031057357788,0.05525696277618408,3.5197062492370605,0.8561546206474304,1.451408863067627,3.3183364868164062,3.5634450912475586,2.414393663406372,-1.439502477645874,-1.1011509895324707,-0.17943598330020905,1.5112278461456299,3.4406142234802246,1.698815941810608,7.470928192138672,0.19873225688934326,2.6698780059814453,-2.049072742462158,-1.8364052772521973,2.439065933227539,3.6689651012420654,4.697550296783447,3.731245279312134,-2.576998233795166,7.271236419677734,7.698627471923828,2.013864040374756,1.4241327047348022,1.5807627439498901,2.858402967453003,1.8221344947814941,4.5041184425354,5.995450973510742]}, + {"name":"unknown","source":"/private/me (15).jpg","embedding":[2.596717119216919,-1.8804056644439697,2.0215225219726562,3.838484764099121,5.152756690979004,6.662512302398682,2.5106935501098633,2.165090799331665,0.40443700551986694,0.09140244126319885,5.127058029174805,1.6696193218231201,3.190101385116577,2.588317632675171,0.11702073365449905,-1.1550391912460327,0.3677446246147156,4.112433433532715,-1.8207606077194214,2.800131320953369,-1.2395455837249756,-0.8880119323730469,-1.5239191055297852,2.9654698371887207,0.6810312867164612,0.7522733807563782,3.2838168144226074,4.309228420257568,2.3822121620178223,2.5058090686798096,7.489283084869385,0.6060442924499512,3.896730422973633,2.1801083087921143,4.50250244140625,2.908478260040283,7.329241752624512,0.5946815013885498,1.0445644855499268,0.021066615357995033,0.8489177227020264,3.050528049468994,-2.854949712753296,2.1384642124176025,1.403394103050232,3.7247731685638428,0.24171949923038483,0.9450785517692566,-0.9877942204475403,4.628894805908203,2.7224974632263184,0.21501247584819794,1.3687412738800049,3.3407225608825684,-2.656508207321167,-0.8087167739868164,1.801254153251648,3.6693382263183594,-0.7357218861579895,1.9225181341171265,1.0753679275512695,-0.2811548411846161,7.27789831161499,-0.5274381637573242,4.032405376434326,2.795518159866333,2.5310847759246826,1.2171874046325684,2.8042240142822266,-1.1730555295944214,1.5480072498321533,2.234450578689575,6.234613418579102,-0.15836220979690552,3.6345536708831787,1.9337495565414429,2.964630603790283,0.7559931874275208,1.312620997428894,1.821739673614502,2.269946336746216,-3.4976723194122314,0.13753286004066467,-1.4591624736785889,5.670260429382324,6.051512241363525,-1.5244547128677368,4.2641496658325195,5.740346431732178,-0.35724249482154846,1.380307912826538,0.04286973923444748,3.5772626399993896,-3.980132818222046,0.8542444109916687,1.925750732421875,0.12262189388275146,3.528165578842163,0.9293727874755859,1.4376051425933838,3.326172113418579,3.519545793533325,2.2290682792663574,-1.4210063219070435,-1.2142118215560913,-0.0998234897851944,1.3936439752578735,3.3223378658294678,1.6935093402862549,7.505768299102783,0.142404705286026,2.7353146076202393,-2.156456232070923,-1.8277769088745117,2.415493965148926,3.558830499649048,4.721982002258301,3.608741521835327,-2.5826125144958496,7.268709182739258,7.885958194732666,2.0087060928344727,1.3459932804107666,1.4381736516952515,2.870819091796875,1.749355435371399,4.510282039642334,6.025877952575684]}, + {"name":"unknown","source":"/private/me (15).jpg","embedding":[2.7097601890563965,-1.8786269426345825,2.0219805240631104,3.9083914756774902,5.13292121887207,6.604184150695801,2.5303242206573486,2.1145052909851074,0.42816102504730225,0.13632777333259583,5.0743279457092285,1.6497077941894531,3.047714948654175,2.5689427852630615,0.2121623158454895,-1.0862345695495605,0.3469061255455017,4.131718635559082,-1.7931557893753052,2.824130058288574,-1.2307621240615845,-0.9259757995605469,-1.5377461910247803,2.8877015113830566,0.6444169282913208,0.6746541857719421,3.3274292945861816,4.203106880187988,2.410092830657959,2.5386576652526855,7.4944353103637695,0.7306991815567017,3.8695836067199707,2.207481861114502,4.46823787689209,2.9493846893310547,7.3951802253723145,0.5794408321380615,1.0185517072677612,-0.018050264567136765,0.9210665225982666,3.1418378353118896,-2.799039840698242,2.206270456314087,1.3574228286743164,3.6563832759857178,0.2285931408405304,0.9201841950416565,-1.0382806062698364,4.627998352050781,2.781606435775757,0.23342010378837585,1.3944581747055054,3.373319625854492,-2.6895976066589355,-0.8288223743438721,1.7856736183166504,3.7162153720855713,-0.6872465014457703,2.050584554672241,1.08604896068573,-0.2699240446090698,7.268393516540527,-0.6838209629058838,4.055635452270508,2.8041164875030518,2.5419270992279053,1.1586238145828247,2.965635061264038,-1.2197877168655396,1.4510917663574219,2.267824649810791,6.414612293243408,-0.12668582797050476,3.7139244079589844,1.986568570137024,3.003894805908203,0.6840953230857849,1.3277074098587036,1.835135817527771,2.216403007507324,-3.438220500946045,0.10848065465688705,-1.427870750427246,5.504930019378662,6.103174209594727,-1.5300207138061523,4.154016971588135,5.823042869567871,-0.35186710953712463,1.4607449769973755,-0.08607599884271622,3.5874857902526855,-3.946253776550293,0.8061912655830383,1.9486466646194458,0.06658017635345459,3.5631520748138428,1.0028693675994873,1.3494162559509277,3.2874252796173096,3.5615408420562744,2.218191623687744,-1.3789935111999512,-1.0667046308517456,-0.08671679347753525,1.1983213424682617,3.375918388366699,1.7391735315322876,7.428269386291504,0.18265268206596375,2.759645938873291,-2.013596296310425,-1.8497447967529297,2.4687533378601074,3.5719211101531982,4.747674465179443,3.7717678546905518,-2.505316734313965,7.314741134643555,7.7672247886657715,2.036219596862793,1.3736381530761719,1.3834842443466187,2.76419734954834,1.809835433959961,4.474693775177002,5.93501615524292]}, + {"name":"unknown","source":"/private/me (16).jpg","embedding":[2.567237377166748,-1.8620260953903198,2.02413010597229,3.8088982105255127,5.142530918121338,6.5470991134643555,2.543980836868286,2.1121788024902344,0.40887245535850525,0.12292790412902832,5.100003719329834,1.7006611824035645,3.2271854877471924,2.6331701278686523,0.10119538009166718,-1.0934209823608398,0.3682812452316284,4.12217903137207,-1.9102356433868408,2.80875301361084,-1.3307206630706787,-0.9309017658233643,-1.512801170349121,3.0459651947021484,0.7265691757202148,0.7548890113830566,3.3517823219299316,4.268856525421143,2.3814520835876465,2.5406110286712646,7.451411724090576,0.6403368711471558,3.9127800464630127,2.2610857486724854,4.522801399230957,3.0170464515686035,7.346859931945801,0.6642484664916992,0.9455658197402954,-0.017893556505441666,0.8555253744125366,3.0354063510894775,-2.940859079360962,2.185701608657837,1.4056974649429321,3.6697442531585693,0.26246970891952515,0.89071124792099,-0.9382103681564331,4.480512619018555,2.674685001373291,0.21556133031845093,1.3529335260391235,3.3734450340270996,-2.709836006164551,-0.7421728372573853,1.8745311498641968,3.7947821617126465,-0.7397230267524719,1.9021517038345337,1.073554515838623,-0.16688667237758636,7.316512584686279,-0.5927976965904236,4.046849250793457,2.8753905296325684,2.5623972415924072,1.247241735458374,2.875551700592041,-1.2561218738555908,1.6124508380889893,2.327860116958618,6.353431224822998,-0.08023671805858612,3.6807022094726562,2.030038595199585,3.0011277198791504,0.7187229990959167,1.3081743717193604,1.7532607316970825,2.372474193572998,-3.4433605670928955,0.10746645927429199,-1.3955698013305664,5.616178035736084,5.939591407775879,-1.6914011240005493,4.201716423034668,5.726792335510254,-0.358783096075058,1.5769764184951782,0.00859147310256958,3.492931604385376,-4.027536392211914,0.8565366268157959,1.858550786972046,0.10361635684967041,3.504639148712158,0.8054255843162537,1.4694254398345947,3.2831766605377197,3.516871452331543,2.3905093669891357,-1.4284417629241943,-1.1248276233673096,-0.12805166840553284,1.5394681692123413,3.4056386947631836,1.682236671447754,7.456881523132324,0.19030159711837769,2.6704812049865723,-2.102900743484497,-1.7832458019256592,2.4313764572143555,3.677797794342041,4.682124614715576,3.726588487625122,-2.562027931213379,7.252959728240967,7.722976207733154,2.0582921504974365,1.4148035049438477,1.5952458381652832,2.8592965602874756,1.8328298330307007,4.524399757385254,6.022581577301025]}, + {"name":"unknown","source":"/private/me (16).jpg","embedding":[2.540436267852783,-1.8650099039077759,1.991084337234497,3.7605843544006348,5.2009382247924805,6.573361873626709,2.536503314971924,2.0554792881011963,0.3665772080421448,0.14602577686309814,5.122065544128418,1.6745352745056152,3.298013210296631,2.6178133487701416,0.0759674608707428,-1.0652865171432495,0.31604456901550293,4.174167633056641,-1.923261046409607,2.8255178928375244,-1.304882526397705,-0.9340957999229431,-1.5150634050369263,3.039264440536499,0.7203037738800049,0.7555835843086243,3.331291675567627,4.203184604644775,2.395298719406128,2.52649188041687,7.466432571411133,0.6109614968299866,3.9896926879882812,2.2298269271850586,4.492654323577881,3.026927947998047,7.414291858673096,0.6631889939308167,0.9521163702011108,0.00008162506856024265,0.8861008882522583,3.0852627754211426,-2.9857516288757324,2.151492118835449,1.4607106447219849,3.6620986461639404,0.2987985908985138,0.8492814302444458,-0.9259623289108276,4.462805271148682,2.686690330505371,0.21339751780033112,1.3410661220550537,3.390151023864746,-2.5864436626434326,-0.7483495473861694,1.8446767330169678,3.820668935775757,-0.7113721966743469,1.889401912689209,1.0439739227294922,-0.1828911155462265,7.370481491088867,-0.5590004920959473,4.087742805480957,2.8543336391448975,2.5435848236083984,1.2742823362350464,2.823712110519409,-1.25532865524292,1.6608041524887085,2.3276796340942383,6.3924150466918945,-0.0670299306511879,3.6307973861694336,2.0428202152252197,2.9461519718170166,0.7012746334075928,1.3612347841262817,1.742903470993042,2.3106167316436768,-3.4345521926879883,0.12056367099285126,-1.3484101295471191,5.614988327026367,5.992044448852539,-1.6376280784606934,4.1939568519592285,5.748351573944092,-0.41297391057014465,1.5962111949920654,-0.009941011667251587,3.505526542663574,-4.046145439147949,0.8383411169052124,1.9022729396820068,0.06260800361633301,3.483034372329712,0.8989508748054504,1.4312509298324585,3.347963333129883,3.535006046295166,2.391197919845581,-1.4354238510131836,-1.174829125404358,-0.15680430829524994,1.4479024410247803,3.4250855445861816,1.7341822385787964,7.460832118988037,0.16239288449287415,2.7165749073028564,-2.070030450820923,-1.826634407043457,2.4189867973327637,3.6536316871643066,4.668858051300049,3.6936049461364746,-2.501955986022949,7.30690860748291,7.746333122253418,2.028681516647339,1.4067306518554688,1.6061880588531494,2.810344934463501,1.8735363483428955,4.525310039520264,6.047399520874023]}, + {"name":"unknown","source":"/private/me (16).jpg","embedding":[2.5845794677734375,-1.9186532497406006,2.0114221572875977,3.7950987815856934,5.194635391235352,6.53203821182251,2.5154621601104736,2.088651180267334,0.37509360909461975,0.1469143033027649,5.082736968994141,1.659645676612854,3.2831265926361084,2.613420009613037,0.13209494948387146,-1.0353845357894897,0.3191874623298645,4.156691074371338,-1.9020822048187256,2.8299827575683594,-1.2895187139511108,-0.9823387861251831,-1.513058066368103,3.098670244216919,0.7031861543655396,0.7532063722610474,3.3523504734039307,4.234084606170654,2.440906286239624,2.6078908443450928,7.437186241149902,0.6043866872787476,3.9480819702148438,2.232624053955078,4.534492015838623,3.0153892040252686,7.400326728820801,0.6562435626983643,0.9320948123931885,0.005419803783297539,0.8876022696495056,3.0830438137054443,-2.9829490184783936,2.176842451095581,1.3839471340179443,3.628797769546509,0.3298991918563843,0.8688569664955139,-0.9469339847564697,4.530571460723877,2.699424982070923,0.20969095826148987,1.3641455173492432,3.363262176513672,-2.638517379760742,-0.7579107880592346,1.858260154724121,3.851661205291748,-0.7346713542938232,1.9452474117279053,1.0973013639450073,-0.2514583468437195,7.400797367095947,-0.6181061267852783,4.062160968780518,2.802751302719116,2.6061694622039795,1.2471630573272705,2.809809684753418,-1.2713675498962402,1.6237356662750244,2.3027517795562744,6.347377777099609,-0.06193675473332405,3.6695258617401123,2.021916151046753,2.952479124069214,0.6831817030906677,1.3599631786346436,1.7518436908721924,2.305678367614746,-3.4249987602233887,0.12587770819664001,-1.3971827030181885,5.612969875335693,5.9450178146362305,-1.5749218463897705,4.166501998901367,5.770504951477051,-0.4036509096622467,1.6233577728271484,-0.011148616671562195,3.5512006282806396,-4.010279655456543,0.852446973323822,1.8936375379562378,0.08903789520263672,3.5422470569610596,0.932475745677948,1.4406814575195312,3.3578531742095947,3.527956247329712,2.389875888824463,-1.3884587287902832,-1.1571948528289795,-0.12084639072418213,1.4492480754852295,3.3622632026672363,1.7381935119628906,7.453726768493652,0.21784690022468567,2.72424054145813,-2.001143217086792,-1.7987544536590576,2.4164891242980957,3.6366002559661865,4.688863754272461,3.6996655464172363,-2.543191432952881,7.294765949249268,7.775505065917969,2.0378448963165283,1.43989896774292,1.543177843093872,2.8147706985473633,1.8308699131011963,4.501986026763916,6.021905899047852]}, + {"name":"unknown","source":"/private/me (16).jpg","embedding":[2.552300453186035,-1.8688474893569946,2.008690595626831,3.8048770427703857,5.174783229827881,6.5476579666137695,2.484203815460205,2.079575777053833,0.3922722041606903,0.15548178553581238,5.12697172164917,1.6713123321533203,3.222731590270996,2.6507110595703125,0.11402884125709534,-1.0828745365142822,0.3203672170639038,4.145450592041016,-1.9101914167404175,2.81846022605896,-1.3507201671600342,-0.9271014928817749,-1.5542281866073608,2.983130693435669,0.7228126525878906,0.7796874642372131,3.3397960662841797,4.227817535400391,2.3909361362457275,2.5261178016662598,7.514532566070557,0.6408337354660034,3.914116144180298,2.245087146759033,4.526540279388428,3.0212550163269043,7.3507609367370605,0.6641234755516052,0.9553418159484863,0.01743338070809841,0.863695502281189,3.0799458026885986,-2.95877742767334,2.230848550796509,1.4249937534332275,3.6470232009887695,0.30340442061424255,0.9007691144943237,-0.9581327438354492,4.501964092254639,2.733443260192871,0.24885159730911255,1.3768965005874634,3.4016435146331787,-2.6773202419281006,-0.7287477850914001,1.8659491539001465,3.7683122158050537,-0.7044364213943481,1.9380367994308472,1.0662087202072144,-0.19456273317337036,7.347581386566162,-0.5940731763839722,4.0943098068237305,2.8479785919189453,2.583778142929077,1.232973575592041,2.8765830993652344,-1.289659857749939,1.5978212356567383,2.3466713428497314,6.414704322814941,-0.099473737180233,3.697272539138794,2.065333366394043,3.0101053714752197,0.6998263001441956,1.341512680053711,1.7568024396896362,2.3124074935913086,-3.422992706298828,0.049872949719429016,-1.3663866519927979,5.612860202789307,5.944860935211182,-1.647073745727539,4.151813983917236,5.767502307891846,-0.43931275606155396,1.5919450521469116,0.009516283869743347,3.4361813068389893,-3.9520649909973145,0.8675209283828735,1.9018083810806274,0.06123781204223633,3.5146210193634033,0.8282582759857178,1.4756542444229126,3.287989377975464,3.559835910797119,2.393080711364746,-1.4162108898162842,-1.1152509450912476,-0.16350732743740082,1.4704833030700684,3.4207980632781982,1.728125810623169,7.45206356048584,0.1721304953098297,2.690646171569824,-1.9971445798873901,-1.8182899951934814,2.43137264251709,3.6814351081848145,4.70654821395874,3.745593309402466,-2.54939603805542,7.267423152923584,7.709280490875244,2.041208505630493,1.4262826442718506,1.5951437950134277,2.853233575820923,1.831321358680725,4.511006832122803,6.005746841430664]}, + {"name":"unknown","source":"/private/me (16).jpg","embedding":[2.571542739868164,-1.8996392488479614,2.011201858520508,3.8463573455810547,5.167085647583008,6.53554105758667,2.503261089324951,2.0357003211975098,0.38925692439079285,0.1573786735534668,5.0875043869018555,1.6853517293930054,3.2266576290130615,2.6617515087127686,0.1297084093093872,-1.0403872728347778,0.33477193117141724,4.124542236328125,-1.9137468338012695,2.846733570098877,-1.265504240989685,-0.9775357246398926,-1.4978939294815063,3.105478286743164,0.6906669735908508,0.7346572279930115,3.343485116958618,4.268771171569824,2.4631495475769043,2.5256893634796143,7.447239398956299,0.637923002243042,3.941518783569336,2.1865434646606445,4.52810001373291,3.013120174407959,7.380893707275391,0.6843079924583435,0.9457777738571167,-0.026362629607319832,0.9254080653190613,3.1246511936187744,-2.904310464859009,2.19913387298584,1.4282034635543823,3.6317901611328125,0.29350417852401733,0.8937999606132507,-0.9515687227249146,4.545914649963379,2.68632173538208,0.19417382776737213,1.4156396389007568,3.3446946144104004,-2.696462392807007,-0.7683679461479187,1.872912049293518,3.757782459259033,-0.7553670406341553,1.9561704397201538,1.0111219882965088,-0.2447090595960617,7.416744709014893,-0.6225225329399109,4.08271598815918,2.8532471656799316,2.6283373832702637,1.263197422027588,2.8733274936676025,-1.2433604001998901,1.5920981168746948,2.2572202682495117,6.388658046722412,-0.13519319891929626,3.675884485244751,1.9891119003295898,2.9541029930114746,0.7292550802230835,1.3496992588043213,1.735604166984558,2.3328232765197754,-3.4445505142211914,0.08706393092870712,-1.4385943412780762,5.607736587524414,5.979711532592773,-1.5758177042007446,4.172212600708008,5.789668560028076,-0.39165303111076355,1.5375385284423828,0.03582485020160675,3.519932270050049,-4.0450053215026855,0.841005265712738,1.8667343854904175,0.09155118465423584,3.5704822540283203,0.8225672245025635,1.4575449228286743,3.3386740684509277,3.530226230621338,2.4257545471191406,-1.4028983116149902,-1.1527719497680664,-0.12321656942367554,1.4798033237457275,3.3406035900115967,1.7439186573028564,7.504176139831543,0.24079138040542603,2.7472755908966064,-2.0476303100585938,-1.8545283079147339,2.451033353805542,3.6466071605682373,4.694079399108887,3.718744993209839,-2.5596108436584473,7.296206474304199,7.777182102203369,2.0600287914276123,1.4245312213897705,1.5532076358795166,2.8401923179626465,1.7920511960983276,4.537542819976807,6.01207971572876]}, + {"name":"unknown","source":"/private/me (17).jpg","embedding":[2.5536346435546875,-1.911563754081726,2.0197689533233643,3.834547281265259,5.1872100830078125,6.502318859100342,2.5551230907440186,2.1356613636016846,0.3880001902580261,0.14351952075958252,5.095374584197998,1.699488878250122,3.2895021438598633,2.6321396827697754,0.051083918660879135,-1.0412296056747437,0.33772850036621094,4.1527934074401855,-1.9167970418930054,2.8321995735168457,-1.3100900650024414,-0.9678200483322144,-1.5172698497772217,3.0672266483306885,0.7320494651794434,0.762609601020813,3.3936104774475098,4.221018314361572,2.3758411407470703,2.5968422889709473,7.442187309265137,0.6212412714958191,3.968233108520508,2.2253267765045166,4.527431964874268,3.0294406414031982,7.386621952056885,0.6698170304298401,0.9591271877288818,-0.025488145649433136,0.9151884317398071,3.076032876968384,-2.971771717071533,2.1844184398651123,1.4029433727264404,3.6491973400115967,0.29370829463005066,0.8520227074623108,-0.959634006023407,4.516861915588379,2.7025249004364014,0.22360192239284515,1.3649214506149292,3.331697702407837,-2.624180316925049,-0.7560759782791138,1.8640321493148804,3.7991154193878174,-0.7251771688461304,1.942976951599121,1.1062923669815063,-0.12891581654548645,7.338822364807129,-0.5884804725646973,4.030619144439697,2.8839480876922607,2.5717239379882812,1.250861644744873,2.8207848072052,-1.2641266584396362,1.6175904273986816,2.302401542663574,6.454868793487549,-0.12281608581542969,3.6730704307556152,2.0568337440490723,3.0106685161590576,0.6704661846160889,1.3544572591781616,1.7373287677764893,2.312610626220703,-3.4766392707824707,0.09223290532827377,-1.349769949913025,5.608164310455322,5.954842567443848,-1.6448551416397095,4.178988933563232,5.712307929992676,-0.3843502998352051,1.5928908586502075,-0.018168441951274872,3.505814790725708,-4.0401201248168945,0.8248411417007446,1.9052579402923584,0.09854817390441895,3.5213749408721924,0.8781819343566895,1.4575482606887817,3.312115430831909,3.547886610031128,2.4633238315582275,-1.4154832363128662,-1.1384131908416748,-0.15510500967502594,1.463678002357483,3.396878957748413,1.715480089187622,7.459963321685791,0.21405228972434998,2.700131893157959,-2.0340240001678467,-1.8416900634765625,2.4145584106445312,3.639676094055176,4.693100929260254,3.7605183124542236,-2.545856475830078,7.331491947174072,7.750817775726318,2.0228052139282227,1.460486650466919,1.5787138938903809,2.851353645324707,1.8557506799697876,4.507178783416748,6.035850524902344]}, + {"name":"unknown","source":"/private/me (17).jpg","embedding":[2.614476203918457,-1.8617600202560425,2.018059730529785,3.8651444911956787,5.209804058074951,6.491746425628662,2.5134432315826416,2.051409959793091,0.33524289727211,0.17633402347564697,5.048403739929199,1.683668613433838,3.2210936546325684,2.642836093902588,0.039820022881031036,-1.0836803913116455,0.33582544326782227,4.165086269378662,-1.9116594791412354,2.808626651763916,-1.2725435495376587,-0.9878971576690674,-1.5641367435455322,3.1331276893615723,0.766785204410553,0.7400626540184021,3.357632637023926,4.318857192993164,2.446906566619873,2.514249563217163,7.382239818572998,0.6371147036552429,3.9743971824645996,2.156555414199829,4.536720275878906,3.0368943214416504,7.341372013092041,0.7269959449768066,0.9984879493713379,-0.024672508239746094,0.9357627034187317,3.0402748584747314,-2.9868626594543457,2.2108824253082275,1.4754884243011475,3.6683132648468018,0.34273117780685425,0.9021633863449097,-0.9518741965293884,4.5399556159973145,2.7082831859588623,0.21518997848033905,1.349887728691101,3.3081068992614746,-2.7207682132720947,-0.765246570110321,1.8381158113479614,3.77531361579895,-0.751318633556366,1.9815593957901,1.025977373123169,-0.0950407162308693,7.3352813720703125,-0.6200587749481201,4.034505367279053,2.8733487129211426,2.513953685760498,1.3236525058746338,2.8769469261169434,-1.2629834413528442,1.5397257804870605,2.1937448978424072,6.380238056182861,-0.13819468021392822,3.663508415222168,1.9888238906860352,2.9285619258880615,0.6915738582611084,1.2767584323883057,1.7481460571289062,2.316368818283081,-3.4427554607391357,0.10047781467437744,-1.3912489414215088,5.5578227043151855,5.919177055358887,-1.6477535963058472,4.166525363922119,5.664514064788818,-0.3384009897708893,1.603893756866455,-0.020755380392074585,3.556525707244873,-4.00779914855957,0.8319039344787598,1.8523772954940796,0.07773339748382568,3.4585812091827393,0.7326841354370117,1.4492772817611694,3.251957654953003,3.5207300186157227,2.441645622253418,-1.3923559188842773,-1.2180293798446655,-0.1412675678730011,1.4728014469146729,3.4021713733673096,1.7302442789077759,7.506698131561279,0.21838465332984924,2.66352915763855,-2.136888027191162,-1.8126220703125,2.430443525314331,3.6530351638793945,4.682628631591797,3.6957762241363525,-2.4919166564941406,7.279233455657959,7.77890157699585,2.0858473777770996,1.425742745399475,1.6582810878753662,2.878906011581421,1.7952461242675781,4.546848773956299,6.025562286376953]}, + {"name":"unknown","source":"/private/me (17).jpg","embedding":[2.586799383163452,-1.8297357559204102,2.0358870029449463,3.8283467292785645,5.191067695617676,6.517894744873047,2.522280693054199,2.100454807281494,0.41225582361221313,0.15707039833068848,5.1046833992004395,1.6915369033813477,3.2342309951782227,2.6550276279449463,0.08698992431163788,-1.0862075090408325,0.3358648419380188,4.1485419273376465,-1.9102485179901123,2.8256876468658447,-1.3062665462493896,-0.9716744422912598,-1.516737461090088,3.0606236457824707,0.7384393215179443,0.7986756563186646,3.3573434352874756,4.292453289031982,2.4386096000671387,2.528278112411499,7.437742710113525,0.6379275918006897,3.902284622192383,2.216430425643921,4.531628608703613,3.037569522857666,7.36420202255249,0.6719114780426025,0.9730547666549683,0.009525133296847343,0.91786789894104,3.0722920894622803,-2.960909605026245,2.169081211090088,1.4228712320327759,3.654649496078491,0.31494155526161194,0.8565276861190796,-0.9286578297615051,4.5437726974487305,2.6814310550689697,0.23844704031944275,1.3742806911468506,3.3775475025177,-2.6837825775146484,-0.7520437240600586,1.8618111610412598,3.7422375679016113,-0.7543771862983704,1.958051085472107,1.0720500946044922,-0.1423557698726654,7.355719089508057,-0.5565024018287659,4.069042205810547,2.9172608852386475,2.540727376937866,1.2821427583694458,2.8307411670684814,-1.2297269105911255,1.5962777137756348,2.282410144805908,6.330131530761719,-0.13413284718990326,3.6767656803131104,2.0006117820739746,2.9853692054748535,0.6919533610343933,1.2782819271087646,1.74833345413208,2.3227620124816895,-3.4357080459594727,0.07398555427789688,-1.4112825393676758,5.627096652984619,5.968672752380371,-1.631304144859314,4.162104606628418,5.719252586364746,-0.307040810585022,1.589119553565979,0.014665648341178894,3.4979946613311768,-4.052182197570801,0.812289297580719,1.8585922718048096,0.10963404178619385,3.5003795623779297,0.8173285722732544,1.4899684190750122,3.2992594242095947,3.4937171936035156,2.437021493911743,-1.4033992290496826,-1.1658935546875,-0.10050604492425919,1.5013728141784668,3.3551290035247803,1.7577840089797974,7.480721950531006,0.21567735075950623,2.6873409748077393,-2.0890920162200928,-1.8108259439468384,2.430605173110962,3.676136016845703,4.706225872039795,3.7414848804473877,-2.5239622592926025,7.290107250213623,7.7644524574279785,2.0842466354370117,1.433599591255188,1.6005146503448486,2.8887531757354736,1.815004587173462,4.553650856018066,6.02672004699707]}, + {"name":"unknown","source":"/private/me (17).jpg","embedding":[2.546393871307373,-1.9021143913269043,2.0440473556518555,3.7751784324645996,5.195907115936279,6.542916297912598,2.5012426376342773,2.0786306858062744,0.3543985188007355,0.1077377200126648,5.098302364349365,1.6413254737854004,3.2927796840667725,2.618332862854004,0.1019066870212555,-1.0680769681930542,0.36047714948654175,4.158400058746338,-1.9429348707199097,2.7981622219085693,-1.321125864982605,-0.9434123635292053,-1.4990274906158447,3.058560609817505,0.7432209849357605,0.7774142622947693,3.3245835304260254,4.219855785369873,2.385772466659546,2.5945229530334473,7.472092628479004,0.5943235754966736,3.8962979316711426,2.2169089317321777,4.496638298034668,3.0276780128479004,7.396300315856934,0.6426024436950684,0.8936793804168701,0.02310469187796116,0.8675369024276733,3.0189077854156494,-2.9967617988586426,2.141843557357788,1.438484787940979,3.6519904136657715,0.29410338401794434,0.8443778157234192,-0.9435529112815857,4.4656453132629395,2.7108540534973145,0.2233424037694931,1.3454279899597168,3.36403226852417,-2.668482780456543,-0.7322359681129456,1.8265454769134521,3.7921195030212402,-0.7431138157844543,1.9390697479248047,1.0692312717437744,-0.17190924286842346,7.362441539764404,-0.601489245891571,4.042072772979736,2.8740904331207275,2.590484142303467,1.2596732378005981,2.8399579524993896,-1.27895188331604,1.652112603187561,2.376075506210327,6.355226993560791,-0.0940493494272232,3.6855392456054688,2.0442819595336914,3.0195393562316895,0.6860455274581909,1.3101915121078491,1.7398147583007812,2.347064256668091,-3.429446220397949,0.14591464400291443,-1.35716712474823,5.580350875854492,5.965422630310059,-1.603209376335144,4.195190906524658,5.710989952087402,-0.3788997530937195,1.5911693572998047,0.005101688206195831,3.4801535606384277,-4.040226936340332,0.831483006477356,1.895020842552185,0.020796895027160645,3.5550477504730225,0.8645250201225281,1.4797446727752686,3.3241758346557617,3.5360493659973145,2.42399001121521,-1.4151029586791992,-1.120431661605835,-0.16725054383277893,1.4838062524795532,3.3905112743377686,1.680665135383606,7.401683330535889,0.26627519726753235,2.666841506958008,-2.0381581783294678,-1.8289756774902344,2.442474603652954,3.6874818801879883,4.717169761657715,3.7549569606781006,-2.582688093185425,7.273134708404541,7.727644920349121,2.0547640323638916,1.4533988237380981,1.598852276802063,2.842592477798462,1.8248076438903809,4.520145416259766,6.048870086669922]}, + {"name":"unknown","source":"/private/me (17).jpg","embedding":[2.5698516368865967,-1.7984811067581177,2.0123093128204346,3.827755928039551,5.147643566131592,6.605350494384766,2.5419936180114746,2.101212739944458,0.39341622591018677,0.14043766260147095,5.1018781661987305,1.6643553972244263,3.0946831703186035,2.5312650203704834,0.1359506994485855,-1.0587810277938843,0.327150821685791,4.16261100769043,-1.9039323329925537,2.87532114982605,-1.2487472295761108,-0.9669051170349121,-1.4897078275680542,3.033855676651001,0.6971724033355713,0.741790235042572,3.3385629653930664,4.150419235229492,2.4146342277526855,2.513784646987915,7.481375217437744,0.7098734974861145,3.9117817878723145,2.2217519283294678,4.50998592376709,2.9907689094543457,7.39471435546875,0.6455278396606445,0.9233233332633972,-0.04930901899933815,0.8807048797607422,3.1583080291748047,-2.9276275634765625,2.1392574310302734,1.340531349182129,3.6460957527160645,0.29224497079849243,0.8794741630554199,-0.9995623230934143,4.517228603363037,2.700328826904297,0.23590858280658722,1.380806803703308,3.3905348777770996,-2.6971614360809326,-0.7036685347557068,1.8602471351623535,3.801051378250122,-0.6949944496154785,1.8767677545547485,1.0687063932418823,-0.15784680843353271,7.361060619354248,-0.6198331117630005,4.082452774047852,2.8835229873657227,2.6288583278656006,1.1845664978027344,2.919922113418579,-1.2527711391448975,1.580761194229126,2.3492953777313232,6.331504821777344,-0.12407031655311584,3.666863441467285,2.007328987121582,2.955245018005371,0.7191094160079956,1.3425357341766357,1.7677547931671143,2.315078020095825,-3.467928409576416,0.07386741787195206,-1.41400146484375,5.5210700035095215,5.928359508514404,-1.57668936252594,4.1460700035095215,5.75443172454834,-0.38494059443473816,1.5931552648544312,-0.008958697319030762,3.463636636734009,-4.025735378265381,0.8624966740608215,1.8961880207061768,0.07249855995178223,3.5123143196105957,0.8801449537277222,1.4166194200515747,3.3286380767822266,3.555208206176758,2.341559648513794,-1.4103467464447021,-1.0807701349258423,-0.13747766613960266,1.4597512483596802,3.3849449157714844,1.6235522031784058,7.453537464141846,0.18445050716400146,2.6772301197052,-2.057175397872925,-1.8155680894851685,2.4071907997131348,3.590040445327759,4.667532444000244,3.773170232772827,-2.560433864593506,7.294912338256836,7.700218200683594,1.9890300035476685,1.372612476348877,1.5140219926834106,2.7947468757629395,1.821826457977295,4.514107704162598,5.990942478179932]}, + {"name":"unknown","source":"/private/me (17).jpg","embedding":[2.5378987789154053,-1.8733060359954834,2.028517723083496,3.8048365116119385,5.159885883331299,6.509623050689697,2.5081124305725098,2.105095863342285,0.363015353679657,0.18067991733551025,5.103998184204102,1.6951241493225098,3.196868419647217,2.640834093093872,0.09043978154659271,-1.0980197191238403,0.34155356884002686,4.134396076202393,-1.9136803150177002,2.8379907608032227,-1.3397924900054932,-0.9635416865348816,-1.5559316873550415,3.0839853286743164,0.6962336301803589,0.7655867338180542,3.366617202758789,4.245967388153076,2.4182684421539307,2.534477472305298,7.449616432189941,0.6214234828948975,3.9561614990234375,2.25201678276062,4.520538806915283,3.023538589477539,7.313444137573242,0.6851294636726379,0.9692059755325317,0.012540812604129314,0.9020182490348816,3.0620181560516357,-2.92897629737854,2.2010319232940674,1.4132804870605469,3.6623024940490723,0.2844417691230774,0.8906888365745544,-0.937084436416626,4.494709014892578,2.7064597606658936,0.19977252185344696,1.3700790405273438,3.333134651184082,-2.6826534271240234,-0.7838566899299622,1.8423166275024414,3.82806658744812,-0.7340497374534607,1.9277657270431519,1.0855951309204102,-0.18496477603912354,7.387535095214844,-0.6242678165435791,4.087822437286377,2.757808208465576,2.5880610942840576,1.287622094154358,2.83186674118042,-1.276041030883789,1.594085693359375,2.2693774700164795,6.362260818481445,-0.09510529041290283,3.6584441661834717,2.0299928188323975,2.9590871334075928,0.6953747868537903,1.390352487564087,1.7369152307510376,2.3396341800689697,-3.445737838745117,0.09752891212701797,-1.4269545078277588,5.564643383026123,5.898366451263428,-1.6528037786483765,4.136819362640381,5.766469478607178,-0.37918564677238464,1.6293509006500244,-0.03905477374792099,3.498413324356079,-3.99062180519104,0.8298707008361816,1.8944469690322876,0.10665130615234375,3.559465169906616,0.8432482481002808,1.4555277824401855,3.2983410358428955,3.5495264530181885,2.420539617538452,-1.3777151107788086,-1.1493417024612427,-0.15551698207855225,1.5186269283294678,3.374079465866089,1.7771193981170654,7.469174861907959,0.20098036527633667,2.754476308822632,-2.0416455268859863,-1.8275725841522217,2.43092942237854,3.646658420562744,4.609074115753174,3.7238574028015137,-2.544788360595703,7.249035358428955,7.733943939208984,2.033629894256592,1.43015456199646,1.5846543312072754,2.8675386905670166,1.8350930213928223,4.48455810546875,6.008752822875977]}, + {"name":"unknown","source":"/private/me (18).jpg","embedding":[2.591581344604492,-1.8640841245651245,2.0043153762817383,3.8076252937316895,5.211127758026123,6.598719596862793,2.524270534515381,2.0640170574188232,0.40857404470443726,0.19182783365249634,5.080896377563477,1.642622709274292,3.261833429336548,2.585092782974243,0.09305118024349213,-1.0494590997695923,0.28106582164764404,4.198124885559082,-1.9335910081863403,2.882905960083008,-1.2955247163772583,-0.9937202334403992,-1.5386327505111694,3.0840678215026855,0.6854766607284546,0.7713830471038818,3.3193328380584717,4.148672580718994,2.4219939708709717,2.5596654415130615,7.498049259185791,0.6406803131103516,3.9697208404541016,2.169132709503174,4.502650737762451,2.997076988220215,7.390248775482178,0.6670610904693604,0.9055349826812744,0.007141737267374992,0.8721633553504944,3.091076374053955,-2.941159725189209,2.0966343879699707,1.4199540615081787,3.618032932281494,0.34604281187057495,0.8577181100845337,-0.9497826099395752,4.503453731536865,2.675032377243042,0.22519519925117493,1.3762273788452148,3.389686346054077,-2.570842981338501,-0.7372381091117859,1.8609451055526733,3.8472816944122314,-0.7419615387916565,1.9406533241271973,1.0807578563690186,-0.1844768524169922,7.367941856384277,-0.5890690088272095,4.062318325042725,2.8033835887908936,2.5094687938690186,1.258922815322876,2.843038320541382,-1.2647110223770142,1.6175272464752197,2.3646154403686523,6.364486217498779,-0.09987890720367432,3.6484742164611816,2.035139560699463,2.9485812187194824,0.6658306121826172,1.3528950214385986,1.7728385925292969,2.2964634895324707,-3.4361798763275146,0.12787961959838867,-1.3860538005828857,5.6325836181640625,5.9484477043151855,-1.5757771730422974,4.147834300994873,5.765387535095215,-0.4061092138290405,1.628461241722107,-0.0031113401055336,3.555262804031372,-4.020681858062744,0.8582804203033447,1.915513277053833,0.07193994522094727,3.4997355937957764,0.9251164793968201,1.3798612356185913,3.3464863300323486,3.51849102973938,2.374345541000366,-1.4235278367996216,-1.175587773323059,-0.17615166306495667,1.4272263050079346,3.352108955383301,1.7163468599319458,7.508182048797607,0.18111452460289001,2.6742708683013916,-2.0134191513061523,-1.848580002784729,2.393296480178833,3.610407590866089,4.709940433502197,3.717505693435669,-2.5126001834869385,7.310874938964844,7.734988212585449,1.9742631912231445,1.378808856010437,1.5649155378341675,2.787015676498413,1.8837778568267822,4.5167388916015625,6.074494361877441]}, + {"name":"unknown","source":"/private/me (18).jpg","embedding":[2.5511960983276367,-1.8839917182922363,2.0274109840393066,3.7573790550231934,5.172876834869385,6.530385494232178,2.4371955394744873,2.069153070449829,0.4298466444015503,0.09763380885124207,5.126368522644043,1.6225395202636719,3.2710700035095215,2.6144208908081055,0.04294532164931297,-0.9888544082641602,0.3199256658554077,4.125763416290283,-1.9134635925292969,2.860790967941284,-1.3442338705062866,-0.8964621424674988,-1.5435972213745117,3.0568833351135254,0.719378650188446,0.74405437707901,3.3129212856292725,4.163912773132324,2.338865280151367,2.506483554840088,7.511133193969727,0.6387631893157959,3.854970693588257,2.1752023696899414,4.512297630310059,2.9888691902160645,7.3917927742004395,0.642411470413208,0.8911540508270264,-0.04229319095611572,0.8921459913253784,3.0153348445892334,-2.888827085494995,2.113145589828491,1.4499740600585938,3.616431713104248,0.3356558680534363,0.8566628694534302,-0.9805514812469482,4.494815826416016,2.7540524005889893,0.21834325790405273,1.3344924449920654,3.3620073795318604,-2.6268324851989746,-0.7718683481216431,1.8337522745132446,3.7776458263397217,-0.7457853555679321,1.949169635772705,1.081856608390808,-0.19321724772453308,7.320702075958252,-0.6171994209289551,4.044994354248047,2.874545097351074,2.598965644836426,1.217747449874878,2.905574321746826,-1.249686360359192,1.5862730741500854,2.4430758953094482,6.410976409912109,-0.03708881512284279,3.6974196434020996,2.0452632904052734,2.9568560123443604,0.7724336385726929,1.2949433326721191,1.7887752056121826,2.275625705718994,-3.4789845943450928,0.1328173726797104,-1.4226490259170532,5.579926013946533,5.969688415527344,-1.5724061727523804,4.168313980102539,5.7337846755981445,-0.4086894989013672,1.5981732606887817,-0.011097267270088196,3.4365572929382324,-4.028861999511719,0.8172972798347473,1.8861624002456665,0.004705071449279785,3.586554765701294,0.7725746035575867,1.502842903137207,3.36266827583313,3.563114643096924,2.4166717529296875,-1.423008918762207,-1.1070579290390015,-0.2269894778728485,1.4196538925170898,3.3649418354034424,1.6080602407455444,7.437427043914795,0.2059992551803589,2.671058177947998,-1.997154712677002,-1.8469709157943726,2.4295668601989746,3.667168617248535,4.708169460296631,3.7472493648529053,-2.639491558074951,7.352453708648682,7.723482608795166,2.104541540145874,1.4155040979385376,1.5900709629058838,2.789215326309204,1.8149299621582031,4.498173236846924,6.043108940124512]}, + {"name":"unknown","source":"/private/me (18).jpg","embedding":[2.658377170562744,-1.865321159362793,2.0278713703155518,3.7905681133270264,5.16383695602417,6.575436592102051,2.4900314807891846,2.0600061416625977,0.35828670859336853,0.17443740367889404,5.166219711303711,1.645376205444336,3.1953139305114746,2.6612730026245117,0.1378941535949707,-1.103534460067749,0.25738370418548584,4.11961555480957,-1.8874377012252808,2.8950119018554688,-1.3569130897521973,-0.8599451184272766,-1.614802598953247,3.041959762573242,0.6679399609565735,0.7587019801139832,3.4062623977661133,4.2600274085998535,2.401252031326294,2.4797403812408447,7.500125885009766,0.6737279295921326,3.8926031589508057,2.198580741882324,4.534106254577637,3.0157134532928467,7.371166706085205,0.6770150661468506,0.9248498678207397,0.010274950414896011,0.8786496520042419,3.0185141563415527,-2.918548583984375,2.2248964309692383,1.4810218811035156,3.6438779830932617,0.2973939776420593,0.8776612281799316,-1.0191811323165894,4.536520004272461,2.734876871109009,0.23239412903785706,1.3727972507476807,3.3963780403137207,-2.6256706714630127,-0.8117842674255371,1.8306190967559814,3.8107237815856934,-0.6405209898948669,2.0245954990386963,1.0462689399719238,-0.23052333295345306,7.445237636566162,-0.7111271023750305,4.1119842529296875,2.859088659286499,2.5011484622955322,1.2961562871932983,2.9518930912017822,-1.2752668857574463,1.4611138105392456,2.3068978786468506,6.454941749572754,-0.0701092928647995,3.708200693130493,2.0510401725769043,3.038456439971924,0.753817081451416,1.356671929359436,1.7944916486740112,2.2822022438049316,-3.468844175338745,0.09920134395360947,-1.3821591138839722,5.5049967765808105,5.932666301727295,-1.7540842294692993,4.118997573852539,5.813079357147217,-0.45672231912612915,1.5721714496612549,-0.08748025447130203,3.4605712890625,-3.9939019680023193,0.844805121421814,1.8511959314346313,0.027150869369506836,3.5575921535491943,0.8402342796325684,1.4860875606536865,3.308478355407715,3.572032928466797,2.383308172225952,-1.3943839073181152,-1.103873372077942,-0.15978386998176575,1.3588875532150269,3.4198873043060303,1.662363052368164,7.447969913482666,0.20996367931365967,2.698133945465088,-2.0367648601531982,-1.8697749376296997,2.4612820148468018,3.6668972969055176,4.61899995803833,3.7701478004455566,-2.5799810886383057,7.270660877227783,7.702347755432129,2.0160810947418213,1.3989349603652954,1.5658297538757324,2.8763082027435303,1.8672369718551636,4.4911909103393555,5.988940238952637]}, + {"name":"unknown","source":"/private/me (19).jpg","embedding":[2.543456554412842,-1.8880950212478638,1.9911503791809082,3.7497549057006836,5.14248514175415,6.529226303100586,2.491591453552246,2.08119797706604,0.3693290650844574,0.12755191326141357,5.1303839683532715,1.6963889598846436,3.284999370574951,2.679352283477783,0.14606153964996338,-1.0813498497009277,0.32195574045181274,4.165313720703125,-1.9392898082733154,2.8038406372070312,-1.3353642225265503,-0.9549000859260559,-1.527477502822876,2.9875588417053223,0.7457888126373291,0.8062086701393127,3.3732166290283203,4.266787528991699,2.4068429470062256,2.5705554485321045,7.490652084350586,0.6167078614234924,3.9245572090148926,2.222397565841675,4.515629768371582,3.024416208267212,7.374936580657959,0.6735194325447083,0.9417082667350769,0.037468697875738144,0.8786259293556213,3.0456531047821045,-2.9472756385803223,2.142336845397949,1.4243342876434326,3.5921308994293213,0.32124489545822144,0.8392125368118286,-0.9786949753761292,4.485979080200195,2.709582805633545,0.22873204946517944,1.3304041624069214,3.3968505859375,-2.6945319175720215,-0.726114809513092,1.8752708435058594,3.768883466720581,-0.7255144119262695,1.9141933917999268,1.0899550914764404,-0.1622592657804489,7.363682746887207,-0.5999736785888672,4.0387372970581055,2.870591163635254,2.558401584625244,1.2556519508361816,2.7973439693450928,-1.2766400575637817,1.6294318437576294,2.354383707046509,6.428552150726318,-0.0516979955136776,3.710176944732666,2.077316999435425,3.042767286300659,0.654051661491394,1.3566069602966309,1.7372554540634155,2.323322296142578,-3.4473037719726562,0.06790359318256378,-1.3743406534194946,5.596533298492432,5.953171730041504,-1.6722826957702637,4.188319683074951,5.746199131011963,-0.3845425844192505,1.6091221570968628,-0.02552838623523712,3.4586997032165527,-4.023436546325684,0.8455294370651245,1.881115198135376,0.07440769672393799,3.5160887241363525,0.8589732050895691,1.555884599685669,3.347007989883423,3.5317940711975098,2.442431688308716,-1.3777108192443848,-1.0996108055114746,-0.18376296758651733,1.5080783367156982,3.4006686210632324,1.7315561771392822,7.437947750091553,0.18102902173995972,2.6495726108551025,-2.0142667293548584,-1.8316411972045898,2.402132034301758,3.672356605529785,4.683845043182373,3.748502492904663,-2.545161247253418,7.271519660949707,7.713173866271973,2.0336594581604004,1.4566926956176758,1.5910131931304932,2.904799699783325,1.824268102645874,4.522495746612549,6.052294731140137]}, + {"name":"unknown","source":"/private/me (19).jpg","embedding":[2.559401512145996,-1.880770206451416,2.027362108230591,3.8152835369110107,5.191560745239258,6.58612060546875,2.4465672969818115,2.1460001468658447,0.34602147340774536,0.13911715149879456,5.134161949157715,1.679574728012085,3.2258448600769043,2.6167900562286377,0.20640483498573303,-1.0694724321365356,0.37275540828704834,4.117031097412109,-1.9429938793182373,2.7758116722106934,-1.3255616426467896,-0.9749789834022522,-1.51444673538208,3.0138468742370605,0.7310162782669067,0.7886849641799927,3.359851837158203,4.231875896453857,2.3771796226501465,2.5707428455352783,7.39843225479126,0.6072381734848022,3.8498358726501465,2.1996076107025146,4.552607536315918,3.0428924560546875,7.456920623779297,0.6166585683822632,0.9271764159202576,-0.007881349883973598,0.8855549097061157,3.0496513843536377,-2.9691176414489746,2.195948362350464,1.4508236646652222,3.6301143169403076,0.2519657015800476,0.8834238052368164,-0.9496065378189087,4.475240230560303,2.7166807651519775,0.20679235458374023,1.3647735118865967,3.328583240509033,-2.7270705699920654,-0.7662765979766846,1.8863576650619507,3.7872798442840576,-0.7512776851654053,1.982609748840332,1.0680867433547974,-0.20127913355827332,7.371621608734131,-0.610953152179718,4.0473151206970215,2.8520967960357666,2.6162173748016357,1.1983360052108765,2.854475975036621,-1.2737433910369873,1.5583724975585938,2.3047401905059814,6.370856761932373,-0.057985104620456696,3.7101340293884277,2.039224147796631,3.0445055961608887,0.7095986604690552,1.3178757429122925,1.826897382736206,2.362414836883545,-3.448763132095337,0.1326563060283661,-1.4096574783325195,5.539607524871826,5.9584479331970215,-1.6130101680755615,4.194350719451904,5.741283893585205,-0.3529788851737976,1.5731815099716187,0.015360049903392792,3.466792345046997,-4.056821823120117,0.8285067677497864,1.89047110080719,0.004687905311584473,3.5258679389953613,0.8709354400634766,1.4782568216323853,3.3609683513641357,3.539184093475342,2.4761312007904053,-1.4237220287322998,-1.1491467952728271,-0.18405988812446594,1.4962183237075806,3.3780100345611572,1.6162683963775635,7.426105976104736,0.26237061619758606,2.6961052417755127,-2.0669658184051514,-1.7755861282348633,2.4549498558044434,3.661062002182007,4.731505393981934,3.767636299133301,-2.6400110721588135,7.236387729644775,7.783176422119141,2.0324671268463135,1.4454905986785889,1.5516188144683838,2.8715972900390625,1.813708782196045,4.502579689025879,6.029852867126465]}, + {"name":"unknown","source":"/private/me (19).jpg","embedding":[2.568603754043579,-1.8725171089172363,2.030614137649536,3.818572521209717,5.130815029144287,6.502110004425049,2.4854178428649902,2.111748456954956,0.3439326286315918,0.15625113248825073,5.1079301834106445,1.6774320602416992,3.201231002807617,2.6403074264526367,0.11199560761451721,-1.065415620803833,0.33441418409347534,4.1435980796813965,-1.9231953620910645,2.850396156311035,-1.3351829051971436,-0.9259371757507324,-1.556681513786316,3.0603840351104736,0.707998514175415,0.7713253498077393,3.4069952964782715,4.206799030303955,2.366823434829712,2.544179677963257,7.437344551086426,0.665116012096405,3.940464496612549,2.223034620285034,4.5329742431640625,3.037348747253418,7.355318069458008,0.6636849045753479,0.9466552734375,0.040226198732852936,0.9412505626678467,3.068636178970337,-2.9138782024383545,2.1773955821990967,1.4275305271148682,3.6525371074676514,0.28494924306869507,0.879102349281311,-0.9907463788986206,4.4860734939575195,2.6952266693115234,0.23568332195281982,1.3161742687225342,3.3427011966705322,-2.703915596008301,-0.7607161998748779,1.8616430759429932,3.7752130031585693,-0.7026945352554321,1.974631428718567,1.0727083683013916,-0.15897497534751892,7.3801493644714355,-0.6762855052947998,4.036233901977539,2.8318192958831787,2.5671966075897217,1.246564507484436,2.927807569503784,-1.2504795789718628,1.5886528491973877,2.3000330924987793,6.406830787658691,-0.07079380750656128,3.700892686843872,2.032529592514038,2.954129219055176,0.7353261113166809,1.3419116735458374,1.7187143564224243,2.3346023559570312,-3.4393632411956787,0.12081975489854813,-1.4165033102035522,5.517998695373535,5.948915481567383,-1.661568522453308,4.167387008666992,5.716672897338867,-0.36130252480506897,1.619132161140442,-0.04986560344696045,3.503753900527954,-4.052438735961914,0.7991467118263245,1.8980411291122437,0.04748678207397461,3.498415946960449,0.7644527554512024,1.436768651008606,3.3332388401031494,3.5485875606536865,2.42956280708313,-1.3696011304855347,-1.1368598937988281,-0.18615679442882538,1.475929617881775,3.417444944381714,1.693993091583252,7.434126377105713,0.21028941869735718,2.687263011932373,-2.0686423778533936,-1.8028806447982788,2.441986560821533,3.6449027061462402,4.6712141036987305,3.752734899520874,-2.5746545791625977,7.269845008850098,7.703002452850342,2.0669503211975098,1.434106707572937,1.5827157497406006,2.8762755393981934,1.8091192245483398,4.4968366622924805,6.0505242347717285]}, + {"name":"unknown","source":"/private/me (19).jpg","embedding":[2.613463878631592,-1.8885349035263062,1.990407109260559,3.829728603363037,5.125926494598389,6.47679328918457,2.579909563064575,2.0366108417510986,0.3065378665924072,0.21117138862609863,5.088490009307861,1.679421305656433,3.2661638259887695,2.629488706588745,0.019705768674612045,-1.0843212604522705,0.2530396580696106,4.21366024017334,-1.9516921043395996,2.8283019065856934,-1.302736759185791,-0.972744345664978,-1.5896626710891724,3.167445421218872,0.7458817362785339,0.7297101616859436,3.43327260017395,4.274200916290283,2.3749778270721436,2.482797622680664,7.415210247039795,0.6961477994918823,3.931309938430786,2.1226143836975098,4.475740432739258,3.0449347496032715,7.340030193328857,0.7570507526397705,0.9791584610939026,-0.05516672134399414,0.9443365931510925,3.0227982997894287,-2.970851182937622,2.184109926223755,1.4440687894821167,3.6278328895568848,0.34955719113349915,0.9098562598228455,-0.9730216860771179,4.57209587097168,2.725729465484619,0.2098231017589569,1.3120903968811035,3.3840086460113525,-2.6188199520111084,-0.7853658199310303,1.8567578792572021,3.7974390983581543,-0.7239417433738708,1.9259252548217773,1.046028971672058,-0.1477160006761551,7.34928035736084,-0.6662858724594116,4.058521747589111,2.9221744537353516,2.4762275218963623,1.314098596572876,2.894437074661255,-1.2304906845092773,1.6183946132659912,2.270930528640747,6.424492835998535,-0.09885721653699875,3.701295852661133,2.0275137424468994,2.931070566177368,0.7253633141517639,1.3607087135314941,1.6836411952972412,2.3379909992218018,-3.4933807849884033,0.03224731236696243,-1.390284776687622,5.527686595916748,5.935692310333252,-1.7340800762176514,4.144371509552002,5.7112579345703125,-0.3914572298526764,1.688266634941101,-0.019733726978302002,3.5738463401794434,-4.0601372718811035,0.8515050411224365,1.8569350242614746,0.03122568130493164,3.4454379081726074,0.6887921690940857,1.4808053970336914,3.2851462364196777,3.5453784465789795,2.4680099487304688,-1.3853684663772583,-1.1858779191970825,-0.19642694294452667,1.459597110748291,3.4247212409973145,1.6651779413223267,7.507447242736816,0.19726771116256714,2.629676342010498,-2.082627058029175,-1.8122695684432983,2.408780097961426,3.6631760597229004,4.650667190551758,3.7244157791137695,-2.501708745956421,7.307376384735107,7.694602012634277,2.0306904315948486,1.4290556907653809,1.6366839408874512,2.9023144245147705,1.8735566139221191,4.557575225830078,6.046750068664551]}, + {"name":"unknown","source":"/private/me (19).jpg","embedding":[2.576181650161743,-1.8586994409561157,2.0154030323028564,3.83120059967041,5.188349723815918,6.571287155151367,2.5505731105804443,2.08005690574646,0.36264991760253906,0.12602859735488892,5.139479637145996,1.7005637884140015,3.191225290298462,2.6409966945648193,0.06216690316796303,-1.1162422895431519,0.3431882858276367,4.164624214172363,-1.9200036525726318,2.8540263175964355,-1.331284999847412,-0.940647542476654,-1.5500426292419434,3.0545458793640137,0.7201452851295471,0.768829345703125,3.3327786922454834,4.268660545349121,2.3615283966064453,2.529554843902588,7.4421305656433105,0.655735433101654,3.9407668113708496,2.260798931121826,4.503055572509766,2.9988560676574707,7.392437934875488,0.6384299993515015,0.921377420425415,0.014719565398991108,0.9238070249557495,3.0702171325683594,-2.9064645767211914,2.1383206844329834,1.4329062700271606,3.6398329734802246,0.2875204086303711,0.8495475649833679,-0.9826062917709351,4.514974117279053,2.716003179550171,0.1849650889635086,1.3681241273880005,3.3763022422790527,-2.669631242752075,-0.7640585899353027,1.874599814414978,3.7617547512054443,-0.6924159526824951,1.9494600296020508,1.0599982738494873,-0.1975908875465393,7.416962146759033,-0.5768722295761108,4.06060791015625,2.8773131370544434,2.562340497970581,1.166650652885437,2.8757996559143066,-1.2364637851715088,1.5775046348571777,2.3645472526550293,6.397902965545654,-0.06774193793535233,3.6785569190979004,2.027679204940796,2.9918391704559326,0.7082904577255249,1.3780659437179565,1.772860050201416,2.3087055683135986,-3.4444048404693604,0.09950672090053558,-1.3989708423614502,5.566833019256592,5.973907470703125,-1.6598191261291504,4.18846321105957,5.74360466003418,-0.36683186888694763,1.5489332675933838,0.004472307860851288,3.488351583480835,-4.094348430633545,0.8215734958648682,1.8740379810333252,0.0541912317276001,3.514613151550293,0.9059408903121948,1.4472347497940063,3.3403639793395996,3.539295196533203,2.4605143070220947,-1.4275436401367188,-1.1165138483047485,-0.162568137049675,1.472069501876831,3.3458762168884277,1.7215849161148071,7.444565773010254,0.17462056875228882,2.689199924468994,-2.0696325302124023,-1.8563508987426758,2.4725234508514404,3.691434144973755,4.664228916168213,3.7322967052459717,-2.5618183612823486,7.294601917266846,7.738105297088623,2.089304208755493,1.4218460321426392,1.5603299140930176,2.871397018432617,1.8460289239883423,4.514421463012695,6.012920379638672]}, + {"name":"unknown","source":"/private/me (19).jpg","embedding":[2.5401227474212646,-1.8447450399398804,2.055659294128418,3.8096261024475098,5.143681049346924,6.533315658569336,2.5298538208007812,2.1122994422912598,0.32890963554382324,0.1360953450202942,5.129607677459717,1.6878383159637451,3.236392021179199,2.6732754707336426,0.08583708107471466,-1.0485060214996338,0.33122700452804565,4.170554161071777,-1.9565272331237793,2.836655378341675,-1.3280612230300903,-0.9491308331489563,-1.4992682933807373,3.0410068035125732,0.71578049659729,0.78346848487854,3.3874337673187256,4.2020583152771,2.371535539627075,2.558180093765259,7.484783172607422,0.6609408259391785,3.918011426925659,2.208172559738159,4.5444254875183105,3.078385353088379,7.417019844055176,0.6631800532341003,0.9117270112037659,0.029684752225875854,0.8762046098709106,3.102010488510132,-2.9631600379943848,2.1618034839630127,1.4058271646499634,3.6337738037109375,0.2948569059371948,0.8661652207374573,-0.9556954503059387,4.48724889755249,2.7071735858917236,0.22697040438652039,1.3811827898025513,3.3769617080688477,-2.725297212600708,-0.7437177896499634,1.8629165887832642,3.7794084548950195,-0.6926876902580261,1.9251396656036377,1.0530270338058472,-0.13786301016807556,7.389509677886963,-0.6158457398414612,4.088088512420654,2.8587992191314697,2.629326105117798,1.27497136592865,2.8591396808624268,-1.2690285444259644,1.581858515739441,2.385528564453125,6.395630359649658,-0.08411483466625214,3.6800789833068848,2.0757782459259033,3.0325534343719482,0.6809776425361633,1.3749922513961792,1.7064943313598633,2.367902994155884,-3.43880295753479,0.11377276480197906,-1.3445132970809937,5.527683734893799,5.919193744659424,-1.649504542350769,4.154598712921143,5.705836772918701,-0.38206589221954346,1.5934871435165405,-0.028497546911239624,3.440263509750366,-4.116441249847412,0.8398051857948303,1.8663512468338013,-0.013574719429016113,3.510099411010742,0.8668140769004822,1.4520156383514404,3.3183557987213135,3.515265464782715,2.5269346237182617,-1.4095197916030884,-1.128636360168457,-0.20176129043102264,1.5316718816757202,3.416884183883667,1.7488077878952026,7.463601589202881,0.2483004331588745,2.6606040000915527,-2.065666913986206,-1.833013892173767,2.3759615421295166,3.6414451599121094,4.69663143157959,3.805356979370117,-2.6019763946533203,7.273619651794434,7.735384941101074,2.0260109901428223,1.424971580505371,1.609156847000122,2.8903121948242188,1.8338600397109985,4.501183032989502,6.021463871002197]}, + {"name":"unknown","source":"/private/me (2).jpg","embedding":[2.5663068294525146,-1.85060453414917,2.0236833095550537,3.8071231842041016,5.185642242431641,6.541574001312256,2.537503719329834,2.0883688926696777,0.3678796589374542,0.1445021629333496,5.084367752075195,1.7045646905899048,3.2546792030334473,2.6064224243164062,0.08607318997383118,-1.0633217096328735,0.3579702377319336,4.13988733291626,-1.9437570571899414,2.8158249855041504,-1.340696096420288,-0.9615220427513123,-1.494492530822754,3.10125732421875,0.7416996955871582,0.7388795018196106,3.3792481422424316,4.256285667419434,2.374390125274658,2.5394325256347656,7.41975212097168,0.6173949837684631,3.946068286895752,2.245476722717285,4.540467739105225,3.030210494995117,7.347965240478516,0.6599754095077515,0.9497025609016418,-0.03736211359500885,0.8973699808120728,3.04408860206604,-2.9645466804504395,2.2035019397735596,1.438677191734314,3.6725761890411377,0.26424601674079895,0.880340039730072,-0.9585131406784058,4.4632134437561035,2.666485548019409,0.21954873204231262,1.3402769565582275,3.344513177871704,-2.6585748195648193,-0.7552663087844849,1.8866703510284424,3.8321216106414795,-0.7347885370254517,1.922102689743042,1.0641018152236938,-0.1389002501964569,7.326257705688477,-0.5736947059631348,4.0661187171936035,2.8737714290618896,2.5904250144958496,1.2622177600860596,2.8422958850860596,-1.2987308502197266,1.624740719795227,2.3069732189178467,6.37442684173584,-0.07960689067840576,3.676870107650757,2.051238536834717,3.000170946121216,0.7093694806098938,1.3019176721572876,1.7398779392242432,2.3528554439544678,-3.455341339111328,0.10937018692493439,-1.3505579233169556,5.60431432723999,5.924976825714111,-1.6951353549957275,4.206969261169434,5.700438976287842,-0.3776993751525879,1.6091152429580688,-0.012822665274143219,3.511356830596924,-4.035311222076416,0.871762216091156,1.878798007965088,0.1022188663482666,3.5070276260375977,0.7895615696907043,1.4460821151733398,3.289325714111328,3.540062427520752,2.448002576828003,-1.4464292526245117,-1.1552834510803223,-0.13625024259090424,1.5151174068450928,3.4299304485321045,1.6738226413726807,7.44907283782959,0.19638022780418396,2.659867763519287,-2.068019390106201,-1.839707374572754,2.444941520690918,3.681318759918213,4.680666446685791,3.745771884918213,-2.5506935119628906,7.27937650680542,7.736947536468506,2.0436666011810303,1.4068338871002197,1.6217167377471924,2.8433408737182617,1.8680540323257446,4.533637046813965,6.033740997314453]}, + {"name":"unknown","source":"/private/me (2).jpg","embedding":[2.570902109146118,-1.8810263872146606,2.05645751953125,3.77555775642395,5.174440860748291,6.553764343261719,2.4593193531036377,2.0868618488311768,0.33256441354751587,0.15588483214378357,5.1260857582092285,1.6203182935714722,3.157378911972046,2.5936622619628906,0.10377548635005951,-1.0496978759765625,0.34697502851486206,4.136928558349609,-1.953980565071106,2.8494627475738525,-1.374082326889038,-0.9620907306671143,-1.556654453277588,3.036031723022461,0.7522663474082947,0.7737301588058472,3.3598949909210205,4.2388081550598145,2.408764600753784,2.5421228408813477,7.432195663452148,0.6566185355186462,3.9083433151245117,2.3068292140960693,4.541475296020508,3.078035831451416,7.382828712463379,0.6562129259109497,0.9457494020462036,0.014372570440173149,0.8910578489303589,3.0504958629608154,-2.9647552967071533,2.1871843338012695,1.4471379518508911,3.6454925537109375,0.3240031599998474,0.8285068869590759,-0.9999279975891113,4.489231109619141,2.6720120906829834,0.16830578446388245,1.3725757598876953,3.354013204574585,-2.657656669616699,-0.771563708782196,1.8403669595718384,3.7963337898254395,-0.6681861877441406,1.9250102043151855,1.0468815565109253,-0.15169216692447662,7.374878406524658,-0.6754422187805176,4.0895304679870605,2.7817440032958984,2.599222183227539,1.3056122064590454,2.9067959785461426,-1.2603648900985718,1.628890872001648,2.341168165206909,6.430057525634766,-0.054833974689245224,3.6611223220825195,2.0473127365112305,2.9433326721191406,0.7098004817962646,1.3294129371643066,1.7394237518310547,2.3245041370391846,-3.4481890201568604,0.09124661237001419,-1.4404637813568115,5.501570224761963,5.870296955108643,-1.6710832118988037,4.140283584594727,5.757951736450195,-0.4105086326599121,1.6197876930236816,-0.02695276588201523,3.427218437194824,-3.965120792388916,0.860321044921875,1.8739547729492188,0.08654642105102539,3.548241138458252,0.8526176810264587,1.457462191581726,3.3227145671844482,3.5069868564605713,2.396270990371704,-1.4372062683105469,-1.1137312650680542,-0.17448930442333221,1.4988243579864502,3.386798620223999,1.7554383277893066,7.407776355743408,0.20067977905273438,2.760829448699951,-2.0092735290527344,-1.84909188747406,2.4551119804382324,3.6392006874084473,4.616799831390381,3.813149929046631,-2.5753486156463623,7.292464256286621,7.709885597229004,2.0800042152404785,1.4333181381225586,1.5750306844711304,2.857675790786743,1.7984007596969604,4.50404167175293,5.981439113616943]}, + {"name":"unknown","source":"/private/me (20).jpg","embedding":[2.5492961406707764,-1.8166913986206055,1.9885497093200684,3.8197686672210693,5.158733367919922,6.533557415008545,2.5380055904388428,2.0727264881134033,0.3599381446838379,0.13348239660263062,5.090030670166016,1.6938267946243286,3.2129712104797363,2.623310089111328,0.06066287308931351,-1.0834261178970337,0.32716137170791626,4.142520904541016,-1.9308830499649048,2.806640386581421,-1.3105412721633911,-0.9291189908981323,-1.496971845626831,3.1100268363952637,0.7356958985328674,0.7620155215263367,3.352698564529419,4.232963562011719,2.383826971054077,2.476545810699463,7.421293258666992,0.6253810524940491,3.9337046146392822,2.1965746879577637,4.500846862792969,3.029292345046997,7.378756523132324,0.680852472782135,0.9506822824478149,-0.023962469771504402,0.8855460286140442,3.0552713871002197,-2.9626896381378174,2.2026028633117676,1.4576643705368042,3.694124221801758,0.2821788191795349,0.8867810368537903,-0.9048146605491638,4.51195764541626,2.6818761825561523,0.22121669352054596,1.35820734500885,3.3675897121429443,-2.670700788497925,-0.7754796743392944,1.8846111297607422,3.792184591293335,-0.7335641384124756,1.8833287954330444,1.0388257503509521,-0.15913435816764832,7.377270698547363,-0.5412683486938477,4.104293346405029,2.8420636653900146,2.5579681396484375,1.282762050628662,2.862555980682373,-1.27840256690979,1.5861927270889282,2.2992522716522217,6.326983451843262,-0.10921922326087952,3.6568851470947266,2.0255987644195557,2.943390369415283,0.763041079044342,1.29009211063385,1.7509355545043945,2.3634283542633057,-3.4482622146606445,0.10996387898921967,-1.4380500316619873,5.594103813171387,5.961909294128418,-1.6704285144805908,4.193047523498535,5.720469951629639,-0.37340572476387024,1.5964276790618896,0.007260851562023163,3.4740235805511475,-4.072216510772705,0.831008791923523,1.9013725519180298,0.09469437599182129,3.4684720039367676,0.7813226580619812,1.428632140159607,3.3159990310668945,3.528414011001587,2.4748992919921875,-1.4398460388183594,-1.16845703125,-0.1226242184638977,1.5295944213867188,3.402644395828247,1.723159909248352,7.488105773925781,0.18005037307739258,2.6868717670440674,-2.119870185852051,-1.8204617500305176,2.4500386714935303,3.718266487121582,4.675628662109375,3.671544313430786,-2.572185516357422,7.254160404205322,7.752039432525635,2.080655097961426,1.4035354852676392,1.6427335739135742,2.8458738327026367,1.788501501083374,4.531735420227051,6.021481513977051]}, + {"name":"unknown","source":"/private/me (20).jpg","embedding":[2.567303419113159,-1.8538278341293335,2.0418944358825684,3.8351073265075684,5.183257102966309,6.546076774597168,2.455620765686035,2.075699806213379,0.3808806240558624,0.1955428570508957,5.081320762634277,1.6937346458435059,3.199000597000122,2.620540142059326,0.09412158280611038,-1.076130747795105,0.29643839597702026,4.162327289581299,-1.9595305919647217,2.8775439262390137,-1.3347378969192505,-0.9826458096504211,-1.5181797742843628,3.0795836448669434,0.7238129377365112,0.7452783584594727,3.3509302139282227,4.263908863067627,2.430387258529663,2.4722445011138916,7.492509841918945,0.6364754438400269,3.886742115020752,2.2115001678466797,4.504996299743652,3.021437406539917,7.322633743286133,0.6358364820480347,0.932052731513977,-0.019533267244696617,0.857196569442749,3.0069642066955566,-2.922499895095825,2.2030129432678223,1.4348665475845337,3.6731462478637695,0.299979031085968,0.8622927069664001,-0.9572880864143372,4.549000263214111,2.6840908527374268,0.2111371010541916,1.3679914474487305,3.3089921474456787,-2.664384603500366,-0.7429008483886719,1.8584175109863281,3.80135178565979,-0.7106887698173523,1.9013384580612183,1.0507960319519043,-0.2128235250711441,7.3357439041137695,-0.6220487356185913,4.0696282386779785,2.8008968830108643,2.5484869480133057,1.2354682683944702,2.870790719985962,-1.2667070627212524,1.5807404518127441,2.256199598312378,6.4078688621521,-0.13815031945705414,3.657992124557495,2.0704450607299805,3.0518181324005127,0.7296394109725952,1.3046969175338745,1.7674471139907837,2.3415369987487793,-3.4493343830108643,0.078150674700737,-1.4199961423873901,5.601596832275391,5.897716045379639,-1.6656638383865356,4.141995906829834,5.728294849395752,-0.3758365213871002,1.5896077156066895,-0.008010268211364746,3.4966988563537598,-3.975468635559082,0.8439696431159973,1.8843944072723389,0.11414062976837158,3.5104012489318848,0.8053849935531616,1.4761847257614136,3.3320748805999756,3.581883430480957,2.328763008117676,-1.3896887302398682,-1.10750150680542,-0.14673468470573425,1.4630147218704224,3.4154746532440186,1.7047911882400513,7.483680248260498,0.1995631456375122,2.6772165298461914,-2.0666990280151367,-1.8070156574249268,2.4860148429870605,3.6913018226623535,4.684101581573486,3.7772226333618164,-2.491792917251587,7.223943710327148,7.7203521728515625,2.014744281768799,1.4160988330841064,1.5683016777038574,2.843566417694092,1.8037927150726318,4.557834625244141,6.014561653137207]}, + {"name":"unknown","source":"/private/me (20).jpg","embedding":[2.5613696575164795,-1.9217125177383423,1.9858102798461914,3.785449743270874,5.1882004737854,6.546658039093018,2.5063798427581787,2.1033644676208496,0.35073429346084595,0.1251187026500702,5.128818511962891,1.714508295059204,3.2485506534576416,2.6282498836517334,0.09970961511135101,-1.0639468431472778,0.3613434433937073,4.1571855545043945,-1.916266918182373,2.835927963256836,-1.2958093881607056,-0.9320369362831116,-1.537583827972412,3.0044991970062256,0.6986867189407349,0.7743954062461853,3.36472487449646,4.219018459320068,2.385605812072754,2.5519638061523438,7.474699974060059,0.6511977910995483,3.923825979232788,2.2440481185913086,4.509999752044678,3.0230648517608643,7.40596866607666,0.6420053839683533,0.932166576385498,0.02824339084327221,0.9100918173789978,3.082474708557129,-2.9308481216430664,2.162332773208618,1.435530185699463,3.6347930431365967,0.2475273460149765,0.8810179829597473,-0.9974297285079956,4.481230735778809,2.699521064758301,0.21744465827941895,1.3638381958007812,3.391493320465088,-2.6729369163513184,-0.7164286375045776,1.9039539098739624,3.7439217567443848,-0.715736985206604,1.9444745779037476,1.0737314224243164,-0.1847783774137497,7.392612934112549,-0.607296884059906,4.034239768981934,2.901625633239746,2.5960915088653564,1.206587314605713,2.9042274951934814,-1.2508738040924072,1.6543093919754028,2.368878126144409,6.378047466278076,-0.0625477135181427,3.696013927459717,2.056344509124756,3.0276997089385986,0.6814035773277283,1.3584647178649902,1.748007893562317,2.33225679397583,-3.478855848312378,0.09243490546941757,-1.368243932723999,5.5723419189453125,5.971989154815674,-1.6323778629302979,4.200181484222412,5.7416768074035645,-0.3736792206764221,1.5242468118667603,-0.017553724348545074,3.448629856109619,-4.081903457641602,0.8889870047569275,1.8922821283340454,0.0718463659286499,3.5483593940734863,0.9070627093315125,1.4734362363815308,3.371140956878662,3.5446267127990723,2.4575490951538086,-1.4164294004440308,-1.0785915851593018,-0.1666930913925171,1.4859358072280884,3.4026083946228027,1.663346767425537,7.4590959548950195,0.19711291790008545,2.669032573699951,-2.0167641639709473,-1.802167296409607,2.415273666381836,3.645479917526245,4.708413124084473,3.765730857849121,-2.5768954753875732,7.308681011199951,7.727941513061523,2.0222673416137695,1.4367177486419678,1.558584451675415,2.8520665168762207,1.8441290855407715,4.49890661239624,6.04949951171875]}, + {"name":"unknown","source":"/private/me (20).jpg","embedding":[2.5528407096862793,-1.8645751476287842,2.007941961288452,3.811037063598633,5.201586723327637,6.5475053787231445,2.503143548965454,2.1028621196746826,0.36107340455055237,0.12160748243331909,5.10963773727417,1.7045676708221436,3.2692036628723145,2.6315977573394775,0.10492997616529465,-1.0689036846160889,0.33519142866134644,4.158600330352783,-1.931747317314148,2.810976505279541,-1.3466731309890747,-0.9616118669509888,-1.5053443908691406,3.047590494155884,0.731802225112915,0.7767529487609863,3.375361919403076,4.246633529663086,2.375074863433838,2.5500974655151367,7.451347827911377,0.6186339259147644,3.9156441688537598,2.2372536659240723,4.533174514770508,3.008538007736206,7.371218204498291,0.6483339667320251,0.9321462512016296,-0.008923297747969627,0.8720251321792603,3.0357184410095215,-2.9747116565704346,2.2006542682647705,1.4239404201507568,3.662229299545288,0.2852030098438263,0.8612245321273804,-0.9621687531471252,4.469388961791992,2.7072625160217285,0.2338949739933014,1.3357983827590942,3.386523723602295,-2.6508243083953857,-0.7459325790405273,1.8851741552352905,3.7998337745666504,-0.7183417677879333,1.905584692955017,1.0619754791259766,-0.14888395369052887,7.349410057067871,-0.5766384601593018,4.083784580230713,2.8750126361846924,2.584981679916382,1.2330665588378906,2.8458080291748047,-1.2904129028320312,1.6247828006744385,2.3589367866516113,6.357874393463135,-0.07641326636075974,3.682648181915283,2.0569703578948975,3.0112082958221436,0.697439432144165,1.319234848022461,1.7606090307235718,2.3311591148376465,-3.450047254562378,0.10670308768749237,-1.352126955986023,5.595858573913574,5.915607452392578,-1.6578763723373413,4.198021411895752,5.728818893432617,-0.40667596459388733,1.5815930366516113,-0.004174098372459412,3.497929334640503,-4.011249542236328,0.8585512638092041,1.8832167387008667,0.08689582347869873,3.5153589248657227,0.8437193632125854,1.486383318901062,3.2972793579101562,3.5311214923858643,2.406595468521118,-1.4296560287475586,-1.116474986076355,-0.14714446663856506,1.4905227422714233,3.398322343826294,1.6688964366912842,7.434680461883545,0.1975111961364746,2.6569936275482178,-2.049604654312134,-1.8335679769515991,2.4382076263427734,3.673156261444092,4.693524360656738,3.7418482303619385,-2.560063362121582,7.256118297576904,7.730640411376953,2.02724289894104,1.406891107559204,1.606539011001587,2.8287742137908936,1.8406797647476196,4.527645587921143,6.039095878601074]}, + {"name":"unknown","source":"/private/me (22).jpg","embedding":[2.5847606658935547,-1.8699164390563965,2.0039403438568115,3.8015029430389404,5.147099018096924,6.558201789855957,2.506838321685791,2.078977108001709,0.38594773411750793,0.13424378633499146,5.120615005493164,1.6484620571136475,3.189126968383789,2.653094530105591,0.12301776558160782,-1.030318260192871,0.3128282427787781,4.151389122009277,-1.9181697368621826,2.796447992324829,-1.2787798643112183,-0.9110140800476074,-1.5534546375274658,3.0375919342041016,0.6858456134796143,0.7444391250610352,3.3775627613067627,4.207510471343994,2.416656970977783,2.514147996902466,7.487285614013672,0.6659029722213745,3.8885598182678223,2.203322649002075,4.509624481201172,3.020815849304199,7.372034072875977,0.6923007965087891,0.9535053968429565,-0.043225906789302826,0.9143876433372498,3.1271018981933594,-2.9304745197296143,2.168147087097168,1.435309886932373,3.6174964904785156,0.27391254901885986,0.899273157119751,-1.024409532546997,4.53281307220459,2.684913158416748,0.2462489902973175,1.358449935913086,3.394125461578369,-2.6546952724456787,-0.77204430103302,1.8618496656417847,3.789942502975464,-0.7495033740997314,1.9757829904556274,1.0666097402572632,-0.1520737111568451,7.361785411834717,-0.596422553062439,4.062081813812256,2.8575844764709473,2.565253496170044,1.2715600728988647,2.902310609817505,-1.2240976095199585,1.581076979637146,2.3687796592712402,6.376415729522705,-0.09375086426734924,3.7133188247680664,2.036999464035034,2.9715850353240967,0.7084578275680542,1.2979778051376343,1.7679455280303955,2.304828405380249,-3.4649481773376465,0.08961329609155655,-1.3721657991409302,5.598234176635742,6.0095109939575195,-1.6285017728805542,4.182028293609619,5.738987922668457,-0.4077434241771698,1.5953415632247925,-0.032743267714977264,3.461275815963745,-4.039315700531006,0.8732829689979553,1.9234710931777954,0.0339503288269043,3.523698091506958,0.838456392288208,1.4341685771942139,3.315261125564575,3.530167579650879,2.4599769115448,-1.4380688667297363,-1.0929348468780518,-0.18840894103050232,1.4276046752929688,3.4072837829589844,1.679530382156372,7.465285778045654,0.2084721326828003,2.7126290798187256,-2.044111967086792,-1.825701117515564,2.410501480102539,3.6507041454315186,4.734348297119141,3.7586710453033447,-2.590991735458374,7.313049793243408,7.687243938446045,2.0653254985809326,1.4137227535247803,1.550866961479187,2.887453317642212,1.826521635055542,4.513177394866943,6.054008483886719]}, + {"name":"unknown","source":"/private/me (22).jpg","embedding":[2.593034505844116,-1.8897258043289185,2.001708984375,3.7962374687194824,5.133172988891602,6.559476375579834,2.495619535446167,2.058783769607544,0.3895173966884613,0.1114594042301178,5.1037516593933105,1.6377711296081543,3.169839859008789,2.6522228717803955,0.12383413314819336,-1.0216290950775146,0.32118237018585205,4.155738353729248,-1.9220473766326904,2.805265426635742,-1.2690527439117432,-0.9001289010047913,-1.5356451272964478,3.0149614810943604,0.7033615708351135,0.7561385035514832,3.3569655418395996,4.21858024597168,2.408555746078491,2.5171687602996826,7.491156101226807,0.6629739999771118,3.8767385482788086,2.228461742401123,4.501487731933594,3.0045526027679443,7.388469696044922,0.6786977052688599,0.9580879211425781,-0.027652544900774956,0.9024912118911743,3.096038341522217,-2.9373698234558105,2.1854796409606934,1.4473401308059692,3.630690097808838,0.2745175063610077,0.9065156579017639,-0.9998788237571716,4.54265832901001,2.700942039489746,0.2365742027759552,1.3603185415267944,3.4029674530029297,-2.6595687866210938,-0.7751268148422241,1.851755142211914,3.799619197845459,-0.7339968681335449,1.9560949802398682,1.0377057790756226,-0.1323777139186859,7.3376688957214355,-0.5967955589294434,4.060693264007568,2.860206127166748,2.6172540187835693,1.2603951692581177,2.8869876861572266,-1.2446229457855225,1.5998152494430542,2.375730276107788,6.386575222015381,-0.1016804426908493,3.7187087535858154,2.0396902561187744,2.988257646560669,0.7110557556152344,1.3019555807113647,1.769215703010559,2.3105368614196777,-3.454758882522583,0.07229223847389221,-1.3881281614303589,5.615429878234863,6.016341209411621,-1.609847068786621,4.169121742248535,5.744210243225098,-0.4147849380970001,1.5905612707138062,-0.01622001826763153,3.4330477714538574,-4.031858921051025,0.8737121820449829,1.9288768768310547,0.0447850227355957,3.523176908493042,0.8479778170585632,1.4373126029968262,3.3087122440338135,3.5508363246917725,2.442166328430176,-1.434485673904419,-1.0910089015960693,-0.17046068608760834,1.4333759546279907,3.4372806549072266,1.6995218992233276,7.434793949127197,0.1924760341644287,2.7368669509887695,-2.058314561843872,-1.8256618976593018,2.4360339641571045,3.6854395866394043,4.715097427368164,3.7541818618774414,-2.5693562030792236,7.319178104400635,7.693719387054443,2.0847251415252686,1.4317654371261597,1.543982982635498,2.878617763519287,1.8263460397720337,4.5187554359436035,6.040789604187012]}, + {"name":"unknown","source":"/private/me (22).jpg","embedding":[2.5740766525268555,-1.8340120315551758,2.0202410221099854,3.827486991882324,5.177506446838379,6.576799392700195,2.506207227706909,2.043689727783203,0.37997275590896606,0.0998930037021637,5.109051704406738,1.6515884399414062,3.1378965377807617,2.6607134342193604,0.10813172161579132,-1.042926549911499,0.33601629734039307,4.145848751068115,-1.9174400568008423,2.801664352416992,-1.296909213066101,-0.9392205476760864,-1.5495012998580933,3.0454046726226807,0.7051510214805603,0.7498286962509155,3.360118865966797,4.18604850769043,2.4284820556640625,2.5105373859405518,7.4951982498168945,0.6815500259399414,3.9353926181793213,2.266138792037964,4.517222881317139,3.0634846687316895,7.399305820465088,0.7080419063568115,0.9613831639289856,-0.05460108444094658,0.8723281025886536,3.1463429927825928,-2.9646475315093994,2.17233943939209,1.4046273231506348,3.6279828548431396,0.29663148522377014,0.86711585521698,-0.9852820634841919,4.4886674880981445,2.6859538555145264,0.22723785042762756,1.4047077894210815,3.4251341819763184,-2.660707473754883,-0.7111205458641052,1.8851245641708374,3.8112986087799072,-0.7396358847618103,1.9566028118133545,1.0563111305236816,-0.16262440383434296,7.35330057144165,-0.609902024269104,4.106926441192627,2.831730365753174,2.6263346672058105,1.290548324584961,2.9395694732666016,-1.3004969358444214,1.5998680591583252,2.389108419418335,6.412198543548584,-0.043384917080402374,3.7275941371917725,2.078298568725586,2.990069627761841,0.6915364265441895,1.3767398595809937,1.7514660358428955,2.343881130218506,-3.4454007148742676,0.056788504123687744,-1.3438547849655151,5.567558288574219,5.998991012573242,-1.614945650100708,4.178461074829102,5.72722053527832,-0.437651127576828,1.6216262578964233,-0.07495870441198349,3.403346300125122,-4.02650260925293,0.9156337976455688,1.877751350402832,0.01884913444519043,3.5154268741607666,0.8470322489738464,1.4365640878677368,3.2867021560668945,3.5352237224578857,2.472304582595825,-1.4404746294021606,-1.0499347448349,-0.1881730854511261,1.475228190422058,3.433567762374878,1.736404299736023,7.454525947570801,0.16964736580848694,2.708853244781494,-1.9855800867080688,-1.8047816753387451,2.3982813358306885,3.6352193355560303,4.7245283126831055,3.7785096168518066,-2.59071946144104,7.304351806640625,7.643026351928711,2.0580062866210938,1.402944803237915,1.5954201221466064,2.877248525619507,1.801491141319275,4.493088245391846,5.997134685516357]}, + {"name":"unknown","source":"/private/me (22).jpg","embedding":[2.60770845413208,-1.872574806213379,2.004474401473999,3.7900052070617676,5.125697612762451,6.579520225524902,2.497689723968506,2.0380330085754395,0.37987881898880005,0.09998470544815063,5.111848831176758,1.6444880962371826,3.161409616470337,2.677155017852783,0.13973483443260193,-1.0219286680221558,0.3432709574699402,4.154613971710205,-1.9244251251220703,2.786054849624634,-1.296866774559021,-0.8835272192955017,-1.5428732633590698,3.0161023139953613,0.6887516975402832,0.776753842830658,3.3453731536865234,4.216913223266602,2.4016175270080566,2.516378164291382,7.5063157081604,0.6657562255859375,3.8807411193847656,2.2516801357269287,4.502349853515625,3.037740468978882,7.374075412750244,0.7155563235282898,0.9379362463951111,-0.03677339106798172,0.8908057808876038,3.1392829418182373,-2.956644296646118,2.1698479652404785,1.4298689365386963,3.6292195320129395,0.2789536118507385,0.8803940415382385,-0.9975408315658569,4.5069355964660645,2.664149761199951,0.2596372067928314,1.4089593887329102,3.415060520172119,-2.6498188972473145,-0.7458735108375549,1.8801193237304688,3.7699077129364014,-0.7180145978927612,1.9771827459335327,1.0163601636886597,-0.1536296159029007,7.363101482391357,-0.6005272269248962,4.091120719909668,2.8687729835510254,2.6117753982543945,1.262917399406433,2.9304709434509277,-1.26503586769104,1.5866607427597046,2.411860466003418,6.363188743591309,-0.084966741502285,3.721742630004883,2.032001256942749,2.977684736251831,0.7147782444953918,1.299378514289856,1.762455701828003,2.34120774269104,-3.447028636932373,0.07180752605199814,-1.3315048217773438,5.6046061515808105,6.007874011993408,-1.608920693397522,4.170120716094971,5.73984956741333,-0.42981576919555664,1.6008933782577515,-0.025160670280456543,3.4025330543518066,-4.022830486297607,0.868561863899231,1.899955153465271,0.019098520278930664,3.5114803314208984,0.8204846978187561,1.4073090553283691,3.2886385917663574,3.5409810543060303,2.432150363922119,-1.4545514583587646,-1.0636746883392334,-0.16231834888458252,1.4514210224151611,3.4350950717926025,1.712720274925232,7.465457916259766,0.19758805632591248,2.7334766387939453,-2.0139565467834473,-1.8365117311477661,2.4264674186706543,3.6666388511657715,4.744832515716553,3.778212785720825,-2.559937000274658,7.303767204284668,7.663697719573975,2.083552598953247,1.4170445203781128,1.5806896686553955,2.8876986503601074,1.804028868675232,4.504930019378662,6.037779808044434]}, + {"name":"unknown","source":"/private/me (22).jpg","embedding":[2.60062837600708,-1.8554810285568237,1.9969959259033203,3.828386068344116,5.154632091522217,6.59841775894165,2.499176263809204,2.037996530532837,0.37727659940719604,0.11655941605567932,5.128663539886475,1.6733651161193848,3.166031837463379,2.6228981018066406,0.17286153137683868,-1.0074468851089478,0.3264541029930115,4.141788005828857,-1.897444248199463,2.7982635498046875,-1.3122583627700806,-0.9194692969322205,-1.5108702182769775,3.0178654193878174,0.7041465044021606,0.7629109621047974,3.332432508468628,4.183843612670898,2.411287784576416,2.549316883087158,7.483931541442871,0.6789789199829102,3.8941431045532227,2.2611019611358643,4.519397258758545,3.040933132171631,7.3892645835876465,0.7063430547714233,0.907098114490509,-0.044566988945007324,0.8880730271339417,3.1314470767974854,-2.9428629875183105,2.131413698196411,1.411175012588501,3.6525444984436035,0.2801874876022339,0.8726668357849121,-1.0267996788024902,4.509000778198242,2.66617751121521,0.23491065204143524,1.3921787738800049,3.4048852920532227,-2.6514251232147217,-0.7502448558807373,1.893833875656128,3.803685426712036,-0.7177212238311768,2.0206449031829834,1.0836671590805054,-0.2066785991191864,7.356706142425537,-0.6125168204307556,4.060103416442871,2.8213932514190674,2.5901904106140137,1.2361445426940918,2.92191481590271,-1.2544018030166626,1.588513970375061,2.45167875289917,6.325839996337891,-0.060245610773563385,3.73237681388855,2.0506961345672607,2.980559825897217,0.6997604966163635,1.3000277280807495,1.7645140886306763,2.3179237842559814,-3.4430224895477295,0.09925344586372375,-1.3757843971252441,5.594646453857422,6.023829936981201,-1.5983922481536865,4.169253826141357,5.745967388153076,-0.4017462730407715,1.5899913311004639,-0.03162726014852524,3.463322401046753,-4.060574531555176,0.8558099865913391,1.9162349700927734,0.06596219539642334,3.5270423889160156,0.8600751161575317,1.4008747339248657,3.3219029903411865,3.536067008972168,2.4213128089904785,-1.44160795211792,-1.0658289194107056,-0.1870517134666443,1.4584590196609497,3.3836324214935303,1.6931157112121582,7.461721897125244,0.19062989950180054,2.6596760749816895,-2.033179759979248,-1.818843126296997,2.399923801422119,3.65722393989563,4.749746322631836,3.7506415843963623,-2.5948963165283203,7.294800281524658,7.679084777832031,2.076038360595703,1.4020808935165405,1.5477371215820312,2.8564260005950928,1.8100367784500122,4.497739791870117,6.0350494384765625]}, + {"name":"unknown","source":"/private/me (23).jpg","embedding":[2.6480062007904053,-1.8861987590789795,2.047321319580078,3.8469202518463135,5.177926063537598,6.654901027679443,2.4737389087677,2.1306796073913574,0.4356929063796997,0.2185327410697937,5.1836066246032715,1.578055739402771,3.0760185718536377,2.5419065952301025,0.21150167286396027,-1.1013344526290894,0.3636445999145508,4.139716148376465,-1.8444217443466187,2.8937461376190186,-1.3357170820236206,-0.9110091328620911,-1.5097179412841797,2.918820858001709,0.6850993633270264,0.7252968549728394,3.2961490154266357,4.178044319152832,2.3500521183013916,2.4860007762908936,7.5343451499938965,0.6642555594444275,3.8918068408966064,2.2485833168029785,4.499752521514893,2.973217248916626,7.400613307952881,0.5089207887649536,0.9669814109802246,-0.037437062710523605,0.8825796246528625,3.0871407985687256,-2.818535327911377,2.243537187576294,1.3449605703353882,3.712088108062744,0.28975969552993774,0.8713536858558655,-1.0032118558883667,4.553282260894775,2.747786283493042,0.2529327869415283,1.3666855096817017,3.402574062347412,-2.53244686126709,-0.7907942533493042,1.8173680305480957,3.7132272720336914,-0.637065052986145,1.9956825971603394,1.08107328414917,-0.25938716530799866,7.345576763153076,-0.6376993060112,4.028772354125977,2.855714797973633,2.5943195819854736,1.174596905708313,2.9463253021240234,-1.2796505689620972,1.4948371648788452,2.3494114875793457,6.3466877937316895,-0.1049409732222557,3.6874337196350098,1.9918241500854492,2.9729275703430176,0.7368647456169128,1.313805103302002,1.7711384296417236,2.2613141536712646,-3.4746103286743164,0.1585720032453537,-1.3992081880569458,5.614877223968506,6.042173385620117,-1.5879569053649902,4.204769134521484,5.787146091461182,-0.4058590531349182,1.5168707370758057,0.04017730802297592,3.5109915733337402,-3.9669349193573,0.8209787607192993,1.99326753616333,0.1601778268814087,3.568615674972534,0.9779354929924011,1.3621491193771362,3.3625104427337646,3.6193478107452393,2.1857643127441406,-1.3939934968948364,-1.088395595550537,-0.07098227739334106,1.2875192165374756,3.3517467975616455,1.6384518146514893,7.4208526611328125,0.20329293608665466,2.7601819038391113,-2.0550944805145264,-1.8445801734924316,2.498063802719116,3.6186888217926025,4.757911682128906,3.7593941688537598,-2.567049503326416,7.233890533447266,7.770416736602783,2.004978895187378,1.3735443353652954,1.4442209005355835,2.7451820373535156,1.7716385126113892,4.475780010223389,5.987890243530273]}, + {"name":"unknown","source":"/private/me (23).jpg","embedding":[2.6131811141967773,-1.8824117183685303,2.017205238342285,3.7560529708862305,5.239328384399414,6.5977559089660645,2.483267068862915,2.0500094890594482,0.3896569311618805,0.2539648413658142,5.16179895401001,1.6038737297058105,3.111769199371338,2.575624704360962,0.1970025599002838,-1.0863884687423706,0.3386579751968384,4.110873222351074,-1.9163873195648193,2.840060234069824,-1.3439688682556152,-0.9378960132598877,-1.5813243389129639,2.9896326065063477,0.648681640625,0.745854377746582,3.3461897373199463,4.095609664916992,2.3608365058898926,2.5173895359039307,7.529775619506836,0.7470158934593201,3.884246587753296,2.1485230922698975,4.511539936065674,3.079047441482544,7.439940452575684,0.5642374157905579,0.918853759765625,0.023771462962031364,0.9096369743347168,3.1551222801208496,-2.878243923187256,2.2310447692871094,1.3457776308059692,3.6646828651428223,0.29183945059776306,0.8544962406158447,-1.0311975479125977,4.529298305511475,2.793506622314453,0.2710132598876953,1.4116932153701782,3.3515939712524414,-2.5735926628112793,-0.7283671498298645,1.8751521110534668,3.7379307746887207,-0.5858038067817688,2.085153102874756,1.0927252769470215,-0.21776379644870758,7.3736748695373535,-0.6639353632926941,4.027358531951904,2.7573022842407227,2.609785318374634,1.2599561214447021,2.9336328506469727,-1.2923544645309448,1.5187678337097168,2.3304331302642822,6.388134479522705,-0.06478957086801529,3.745386838912964,2.0436956882476807,2.9915900230407715,0.7285799980163574,1.3424994945526123,1.7316848039627075,2.2840287685394287,-3.470144748687744,0.21071460843086243,-1.387581467628479,5.515865325927734,5.983716011047363,-1.627728819847107,4.201290130615234,5.782570838928223,-0.42385339736938477,1.5786629915237427,-0.009778566658496857,3.4604945182800293,-4.056708812713623,0.8034220337867737,1.999019742012024,0.054796576499938965,3.62979793548584,1.0056302547454834,1.4067516326904297,3.4133291244506836,3.611189126968384,2.4072914123535156,-1.3494127988815308,-1.1670831441879272,-0.1869916021823883,1.3281309604644775,3.377311944961548,1.6710882186889648,7.390679836273193,0.20453980565071106,2.7167067527770996,-1.9432439804077148,-1.8356044292449951,2.44602108001709,3.5698606967926025,4.717349529266357,3.754145860671997,-2.5869991779327393,7.275163650512695,7.731075763702393,1.9860531091690063,1.4180247783660889,1.518878698348999,2.830238103866577,1.7901729345321655,4.431358337402344,6.02503776550293]}, + {"name":"unknown","source":"/private/me (23).jpg","embedding":[2.578232526779175,-1.8198883533477783,1.990760087966919,3.7645199298858643,5.047111988067627,6.615146160125732,2.5135498046875,2.1010754108428955,0.35921114683151245,0.1804589033126831,5.162034034729004,1.6041191816329956,3.033405303955078,2.600534677505493,0.2080904245376587,-1.0898112058639526,0.355651319026947,4.130411624908447,-1.899075984954834,2.785217761993408,-1.2819476127624512,-0.8081097602844238,-1.5568901300430298,2.9530463218688965,0.6488692164421082,0.737778902053833,3.297149896621704,4.140289306640625,2.408067226409912,2.4624226093292236,7.507540225982666,0.7117983102798462,3.9133338928222656,2.1842620372772217,4.521843910217285,3.092973232269287,7.390007019042969,0.5442262887954712,0.9791857004165649,-0.03984657675027847,0.9541498422622681,3.131878614425659,-2.8783531188964844,2.192111015319824,1.4431068897247314,3.649470090866089,0.22203472256660461,0.8942099213600159,-0.9664198160171509,4.5656609535217285,2.735903739929199,0.25192391872406006,1.3646098375320435,3.356741189956665,-2.612967014312744,-0.7743451595306396,1.7924460172653198,3.6686251163482666,-0.6551300883293152,2.025502920150757,1.0602139234542847,-0.2052883505821228,7.316273212432861,-0.577440619468689,4.083645343780518,2.7789299488067627,2.6204352378845215,1.2809361219406128,2.8629655838012695,-1.2323317527770996,1.5289552211761475,2.282320976257324,6.344781875610352,-0.09693019837141037,3.7288923263549805,1.9978362321853638,2.9169087409973145,0.7757123708724976,1.2689969539642334,1.709986925125122,2.230894088745117,-3.518195629119873,0.09192285686731339,-1.361660361289978,5.601065158843994,6.134261608123779,-1.5389641523361206,4.243949890136719,5.758847236633301,-0.3635709285736084,1.5465178489685059,0.0374109223484993,3.424407720565796,-4.006425857543945,0.8554248213768005,2.043001174926758,0.012879729270935059,3.5169270038604736,0.9501907825469971,1.4428366422653198,3.3827879428863525,3.5456466674804688,2.3234612941741943,-1.3938655853271484,-1.1490834951400757,-0.19971133768558502,1.3760899305343628,3.4966578483581543,1.7290469408035278,7.428011894226074,0.20212942361831665,2.7927348613739014,-2.028587818145752,-1.8248447179794312,2.4205379486083984,3.593573570251465,4.699721336364746,3.692443609237671,-2.564121961593628,7.288430213928223,7.632373809814453,1.9956609010696411,1.4179463386535645,1.5330809354782104,2.8271102905273438,1.7659015655517578,4.469824314117432,5.981473445892334]}, + {"name":"unknown","source":"/private/me (3).jpg","embedding":[2.598719835281372,-1.9598923921585083,1.9555959701538086,3.7723968029022217,5.131573677062988,6.542025566101074,2.4998843669891357,2.110374689102173,0.38618898391723633,0.1083328127861023,5.091183185577393,1.707983374595642,3.3256337642669678,2.5522079467773438,0.05067512392997742,-1.0759148597717285,0.3063671588897705,4.1526780128479,-1.911110758781433,2.7623205184936523,-1.2836265563964844,-0.9613263607025146,-1.5153576135635376,3.062781810760498,0.7744473218917847,0.7548197507858276,3.3108997344970703,4.249308109283447,2.428565502166748,2.600548267364502,7.37977933883667,0.622145414352417,3.920997381210327,2.189697027206421,4.516768932342529,2.977339506149292,7.427048683166504,0.7138110995292664,0.9594913721084595,0.008281785063445568,0.9016106724739075,2.9529953002929688,-2.9889187812805176,2.1046299934387207,1.4851930141448975,3.652761936187744,0.34482541680336,0.8301825523376465,-0.9899954795837402,4.538515090942383,2.716665744781494,0.16880345344543457,1.2836859226226807,3.373660087585449,-2.596424102783203,-0.7443669438362122,1.856177806854248,3.778170585632324,-0.6933572292327881,1.9210546016693115,1.0694897174835205,-0.13527937233448029,7.22238826751709,-0.5480174422264099,4.011054515838623,2.9828543663024902,2.5196316242218018,1.158887267112732,2.8263556957244873,-1.2358983755111694,1.6420553922653198,2.250807285308838,6.399858474731445,-0.0920252799987793,3.74739933013916,2.0122268199920654,2.889463186264038,0.7513607144355774,1.2575011253356934,1.7407286167144775,2.24354887008667,-3.511899709701538,0.12708675861358643,-1.4469486474990845,5.6409735679626465,6.009578227996826,-1.5969213247299194,4.204156875610352,5.6931304931640625,-0.34227436780929565,1.6023027896881104,0.048829734325408936,3.5614686012268066,-4.041717529296875,0.832038402557373,1.949089765548706,0.13435673713684082,3.4795875549316406,0.8857951760292053,1.5602099895477295,3.3809468746185303,3.4909281730651855,2.3769381046295166,-1.4216136932373047,-1.195312738418579,-0.20733225345611572,1.4483476877212524,3.396306037902832,1.6177231073379517,7.422821044921875,0.1744714379310608,2.6719794273376465,-2.138758897781372,-1.7233307361602783,2.4554080963134766,3.7219221591949463,4.678767681121826,3.6699378490448,-2.493558168411255,7.362656593322754,7.747381210327148,2.0972464084625244,1.4357634782791138,1.534688949584961,2.8424832820892334,1.860376000404358,4.565379619598389,6.112041473388672]}, + {"name":"unknown","source":"/private/me (5).jpg","embedding":[2.537389039993286,-1.8377608060836792,2.0259199142456055,3.777737617492676,5.110318660736084,6.489539623260498,2.5362775325775146,2.163883686065674,0.3121744394302368,0.1721581220626831,5.1059370040893555,1.7184406518936157,3.3127100467681885,2.6723897457122803,0.06632091104984283,-1.1280410289764404,0.355807900428772,4.150660514831543,-1.879550576210022,2.7852749824523926,-1.327073574066162,-0.9809165000915527,-1.5743532180786133,3.0377414226531982,0.7117767930030823,0.7846153378486633,3.34753155708313,4.225005149841309,2.3163511753082275,2.5040500164031982,7.381387710571289,0.6307091116905212,4.003767013549805,2.2067580223083496,4.5122971534729,3.0580239295959473,7.3483686447143555,0.7194192409515381,1.0648572444915771,0.0180971622467041,0.9302344918251038,3.017273426055908,-2.9891936779022217,2.1696665287017822,1.4756525754928589,3.604656457901001,0.2723636329174042,0.8283678293228149,-0.9828988313674927,4.480941295623779,2.65647292137146,0.2914978861808777,1.3351354598999023,3.3673126697540283,-2.586115598678589,-0.7622084617614746,1.8559437990188599,3.6989481449127197,-0.6788990497589111,1.989617109298706,1.0815038681030273,-0.1732242852449417,7.310188293457031,-0.5596921443939209,4.03494119644165,2.8303401470184326,2.509807825088501,1.3110198974609375,2.815244436264038,-1.216292142868042,1.579374074935913,2.2825026512145996,6.290037631988525,-0.05697590857744217,3.6678264141082764,2.0352566242218018,2.893021583557129,0.7205661535263062,1.4064356088638306,1.7040159702301025,2.3021795749664307,-3.506293535232544,0.02175372838973999,-1.2774566411972046,5.614354133605957,6.000582695007324,-1.6668751239776611,4.212925434112549,5.716252326965332,-0.40396568179130554,1.5946015119552612,-0.012509062886238098,3.5449912548065186,-4.083869934082031,0.8164097666740417,1.9135950803756714,0.022133946418762207,3.4079575538635254,0.8228511810302734,1.401888370513916,3.320251941680908,3.535031795501709,2.4614436626434326,-1.3708767890930176,-1.2572747468948364,-0.199579119682312,1.5166867971420288,3.393310070037842,1.7254912853240967,7.466623306274414,0.16697466373443604,2.66876220703125,-2.072629928588867,-1.769774079322815,2.3361549377441406,3.6247780323028564,4.644382476806641,3.6322948932647705,-2.509458541870117,7.269248962402344,7.728500843048096,2.0563580989837646,1.431924819946289,1.6344707012176514,2.8849098682403564,1.8844610452651978,4.456796646118164,6.078134059906006]}, + {"name":"unknown","source":"/private/me (5).jpg","embedding":[2.5861473083496094,-1.8459240198135376,1.9951798915863037,3.8182501792907715,5.185474395751953,6.521435737609863,2.581411361694336,2.0956904888153076,0.34625598788261414,0.1231432557106018,5.080548286437988,1.7245819568634033,3.2485313415527344,2.57421612739563,0.10965505987405777,-1.0704056024551392,0.36868369579315186,4.123535633087158,-1.917710781097412,2.795884132385254,-1.2838680744171143,-0.9928408861160278,-1.5293482542037964,3.071251630783081,0.7332115173339844,0.7414847016334534,3.347252368927002,4.254985809326172,2.335338830947876,2.535910129547119,7.417576789855957,0.6475334167480469,3.948744535446167,2.249577283859253,4.5381760597229,3.0258073806762695,7.318221092224121,0.6796926259994507,0.9678003191947937,-0.018992308527231216,0.9003339409828186,3.056469678878784,-2.9944396018981934,2.202486276626587,1.4144225120544434,3.658705472946167,0.2687263786792755,0.8868272304534912,-0.9685119390487671,4.500828266143799,2.706575632095337,0.2477082908153534,1.3383159637451172,3.3208606243133545,-2.6914703845977783,-0.7314297556877136,1.8908636569976807,3.81554913520813,-0.7186293005943298,1.942188024520874,1.081369400024414,-0.14013510942459106,7.321749687194824,-0.5529161095619202,4.0502610206604,2.9454166889190674,2.558039665222168,1.2408924102783203,2.8574023246765137,-1.2795383930206299,1.621135950088501,2.2975590229034424,6.394889831542969,-0.1021430566906929,3.6857213973999023,2.0633060932159424,2.9629080295562744,0.7046248912811279,1.3027878999710083,1.7658188343048096,2.326080322265625,-3.497653007507324,0.1024535670876503,-1.3756383657455444,5.597639083862305,5.893517971038818,-1.6902940273284912,4.227128028869629,5.671785831451416,-0.3729170262813568,1.5572270154953003,0.02214685082435608,3.5622732639312744,-3.9981749057769775,0.8788662552833557,1.883607029914856,0.0860903263092041,3.4771888256073,0.8131077289581299,1.4844083786010742,3.297010660171509,3.5037920475006104,2.4125051498413086,-1.4570808410644531,-1.206143856048584,-0.17855137586593628,1.4990994930267334,3.409611701965332,1.6313451528549194,7.469999313354492,0.20375433564186096,2.6694674491882324,-2.0882787704467773,-1.8249667882919312,2.4377782344818115,3.6590943336486816,4.6920247077941895,3.687234878540039,-2.5384438037872314,7.287998199462891,7.7343974113464355,2.0263760089874268,1.4303292036056519,1.5869404077529907,2.8286328315734863,1.8542877435684204,4.519495010375977,6.039646625518799]}, + {"name":"unknown","source":"/private/me (5).jpg","embedding":[2.5379817485809326,-1.8896561861038208,1.9529331922531128,3.775347948074341,5.124813079833984,6.529773235321045,2.5040812492370605,2.1050498485565186,0.3287712335586548,0.2169378697872162,5.1461310386657715,1.7235608100891113,3.267239809036255,2.63545298576355,0.0704883560538292,-1.0540337562561035,0.3126654624938965,4.159470558166504,-1.930293083190918,2.8075461387634277,-1.3195174932479858,-0.9506635665893555,-1.5517443418502808,3.0164082050323486,0.7230757474899292,0.8090164661407471,3.386472463607788,4.2152509689331055,2.338972806930542,2.517139196395874,7.454281806945801,0.6314632892608643,3.945716142654419,2.213160514831543,4.506756782531738,3.152137279510498,7.389829635620117,0.728782594203949,0.9917808771133423,-0.006127391941845417,0.9748557209968567,3.093803644180298,-2.973494529724121,2.162430763244629,1.4233754873275757,3.5994982719421387,0.2563267946243286,0.838495135307312,-0.984004020690918,4.539135932922363,2.6776459217071533,0.25884050130844116,1.344870924949646,3.3518800735473633,-2.597827434539795,-0.7147104740142822,1.8747023344039917,3.6686525344848633,-0.7351218461990356,1.9332859516143799,1.146334171295166,-0.17881453037261963,7.350741863250732,-0.5797394514083862,4.000214576721191,2.8894951343536377,2.563706398010254,1.28447425365448,2.795099973678589,-1.1886235475540161,1.586608648300171,2.360506772994995,6.354246139526367,-0.021974164992570877,3.7036705017089844,2.081718683242798,2.963883399963379,0.7541074156761169,1.3314566612243652,1.7238116264343262,2.2768142223358154,-3.5487427711486816,-0.02495361864566803,-1.3559865951538086,5.716245174407959,5.992679595947266,-1.6800552606582642,4.232723712921143,5.748111248016357,-0.3688122630119324,1.57381010055542,0.008641064167022705,3.4720168113708496,-4.080828666687012,0.8372765779495239,1.9959235191345215,0.08612489700317383,3.4657044410705566,0.9305629730224609,1.4558905363082886,3.407985210418701,3.4442667961120605,2.4696478843688965,-1.3839659690856934,-1.227329969406128,-0.26680195331573486,1.5610589981079102,3.428814649581909,1.7229533195495605,7.473962306976318,0.21211764216423035,2.6767845153808594,-2.0766940116882324,-1.7879903316497803,2.377856731414795,3.6513893604278564,4.6810221672058105,3.6801280975341797,-2.6004409790039062,7.265649318695068,7.688594341278076,2.031297206878662,1.4563473463058472,1.5980360507965088,2.957585573196411,1.8093622922897339,4.469593524932861,6.032081127166748]}, + {"name":"unknown","source":"/private/me (5).jpg","embedding":[2.5681915283203125,-1.8545998334884644,1.9978582859039307,3.731726884841919,5.152441024780273,6.461087703704834,2.45516037940979,2.1389174461364746,0.3312798738479614,0.18884584307670593,5.102518558502197,1.6715130805969238,3.1905558109283447,2.7117269039154053,0.13208451867103577,-1.146889567375183,0.33486324548721313,4.110666275024414,-1.916005253791809,2.757951021194458,-1.3389402627944946,-0.9802695512771606,-1.5837334394454956,3.0288257598876953,0.7235262393951416,0.728424608707428,3.349776029586792,4.266811370849609,2.430058479309082,2.4445507526397705,7.455657482147217,0.6714109182357788,3.958322763442993,2.2092530727386475,4.521832466125488,3.0904674530029297,7.278249740600586,0.674628734588623,1.0405888557434082,-0.038522664457559586,0.8458859920501709,3.0893971920013428,-2.9666507244110107,2.215548515319824,1.388539433479309,3.6276988983154297,0.23967868089675903,0.8642595410346985,-1.0202385187149048,4.452725887298584,2.659189224243164,0.1898382306098938,1.3846073150634766,3.3775479793548584,-2.697775363922119,-0.681487500667572,1.8499842882156372,3.8033556938171387,-0.7088780999183655,1.9506690502166748,1.0846445560455322,-0.21380718052387238,7.278443336486816,-0.6189926862716675,4.090234279632568,2.6726789474487305,2.540581703186035,1.3384432792663574,2.860041618347168,-1.2671854496002197,1.5445036888122559,2.2336061000823975,6.309290885925293,-0.06042879819869995,3.706794500350952,2.0558512210845947,2.8903114795684814,0.7106568813323975,1.3671839237213135,1.7630624771118164,2.3134233951568604,-3.4849941730499268,0.012280866503715515,-1.3640708923339844,5.535026550292969,5.829186916351318,-1.748630166053772,4.208250045776367,5.727187633514404,-0.41868922114372253,1.5927425622940063,-0.004342220723628998,3.5029687881469727,-4.009774208068848,0.8857181072235107,1.9607065916061401,0.0456538200378418,3.4772586822509766,0.8008815050125122,1.4656239748001099,3.330502510070801,3.5497207641601562,2.341567277908325,-1.392256498336792,-1.2419514656066895,-0.18232643604278564,1.541562557220459,3.461125373840332,1.738067388534546,7.430217266082764,0.15749382972717285,2.7391586303710938,-2.03983736038208,-1.8008618354797363,2.3753349781036377,3.586381196975708,4.550113201141357,3.654303550720215,-2.4984185695648193,7.231968879699707,7.621511459350586,2.06756854057312,1.3971853256225586,1.595313549041748,2.855333089828491,1.7957555055618286,4.455448150634766,5.997472763061523]}, + {"name":"unknown","source":"/private/me (6).jpg","embedding":[2.5589301586151123,-1.868035078048706,1.9579535722732544,3.8195040225982666,5.125430107116699,6.516571521759033,2.518543004989624,2.09476637840271,0.3272167146205902,0.11810964345932007,5.096566200256348,1.62968111038208,3.235828161239624,2.6669344902038574,0.12461091578006744,-1.0436021089553833,0.3498234152793884,4.154374122619629,-1.9700522422790527,2.7586801052093506,-1.3024576902389526,-0.912769079208374,-1.5288554430007935,3.0749902725219727,0.6921308636665344,0.7734845876693726,3.3661327362060547,4.190606117248535,2.3402087688446045,2.5033793449401855,7.499088764190674,0.686432421207428,3.9305992126464844,2.305751323699951,4.521847724914551,3.0446696281433105,7.379778861999512,0.7355889081954956,0.9373013973236084,-0.029330210760235786,0.8989622592926025,3.1245737075805664,-3.026226758956909,2.191211462020874,1.4642529487609863,3.6570260524749756,0.2625419795513153,0.8819431662559509,-0.9585743546485901,4.470292091369629,2.6797003746032715,0.2489270269870758,1.3861346244812012,3.3623833656311035,-2.705946683883667,-0.7355036735534668,1.8977426290512085,3.8327977657318115,-0.7358565926551819,1.9498264789581299,1.0348951816558838,-0.11699426919221878,7.3731536865234375,-0.6009101867675781,4.136968612670898,2.905611276626587,2.5706145763397217,1.3211627006530762,2.9136059284210205,-1.2615704536437988,1.6681272983551025,2.402000665664673,6.405958652496338,-0.07192756235599518,3.698631525039673,2.0834083557128906,2.983848810195923,0.7240599989891052,1.3537225723266602,1.7588657140731812,2.3754372596740723,-3.4651694297790527,0.09636811912059784,-1.3240679502487183,5.552083492279053,6.011430263519287,-1.637957215309143,4.169527053833008,5.701470851898193,-0.43719884753227234,1.6299996376037598,-0.04761849343776703,3.438612461090088,-3.963895082473755,0.8470916152000427,1.849564552307129,-0.0320969820022583,3.4838807582855225,0.7347127795219421,1.4200661182403564,3.2967376708984375,3.587658166885376,2.530090093612671,-1.474921703338623,-1.1318399906158447,-0.194803848862648,1.5363407135009766,3.4824578762054443,1.73409903049469,7.511043071746826,0.2326233983039856,2.7136645317077637,-1.9728186130523682,-1.8406107425689697,2.358731269836426,3.6804428100585938,4.717072486877441,3.7493200302124023,-2.5757665634155273,7.332758903503418,7.667888164520264,2.068514585494995,1.4368417263031006,1.6219415664672852,2.8857228755950928,1.835004448890686,4.481453895568848,6.036839008331299]}, + {"name":"unknown","source":"/private/me (6).jpg","embedding":[2.616938829421997,-1.881876826286316,2.000271797180176,3.786508321762085,5.13923454284668,6.538856506347656,2.5075249671936035,2.0538170337677,0.36548370122909546,0.13059240579605103,5.104921817779541,1.6489269733428955,3.2183096408843994,2.671518325805664,0.15867732465267181,-1.0249083042144775,0.3173767328262329,4.171529293060303,-1.9437205791473389,2.7537782192230225,-1.288089394569397,-0.9261924028396606,-1.5465025901794434,3.052093982696533,0.6876513361930847,0.769805908203125,3.3499395847320557,4.2423810958862305,2.3795151710510254,2.5634217262268066,7.494149208068848,0.6952897906303406,3.8983347415924072,2.2377681732177734,4.509152412414551,3.0499444007873535,7.412250995635986,0.7260150909423828,0.9228620529174805,-0.029664434492588043,0.8995770812034607,3.1319420337677,-2.9944255352020264,2.1718502044677734,1.4423906803131104,3.582226037979126,0.2872169017791748,0.9111883640289307,-1.0123553276062012,4.530871868133545,2.7001407146453857,0.25079232454299927,1.3782918453216553,3.3879456520080566,-2.682878255844116,-0.7376601696014404,1.895404577255249,3.8278050422668457,-0.7293645739555359,1.958448886871338,1.0602327585220337,-0.17187660932540894,7.381196975708008,-0.6305861473083496,4.065903663635254,2.8730850219726562,2.624854326248169,1.2359403371810913,2.913522958755493,-1.237137794494629,1.601897120475769,2.3722572326660156,6.424071311950684,-0.0812511146068573,3.727916955947876,2.0459506511688232,2.989725112915039,0.6835180521011353,1.3229883909225464,1.7615195512771606,2.3191077709198,-3.483025074005127,0.09436114132404327,-1.363951325416565,5.590949535369873,5.9903740882873535,-1.6178216934204102,4.168121814727783,5.7375969886779785,-0.4107702076435089,1.6421443223953247,-0.014698781073093414,3.4797868728637695,-4.030405521392822,0.8848828673362732,1.8969873189926147,-0.012169957160949707,3.50343918800354,0.8246837854385376,1.4616872072219849,3.3205857276916504,3.5149452686309814,2.4853525161743164,-1.4211974143981934,-1.1147263050079346,-0.20787841081619263,1.4830412864685059,3.4227399826049805,1.7184735536575317,7.494418621063232,0.2379947304725647,2.7029504776000977,-1.964664101600647,-1.8304598331451416,2.4119491577148438,3.655109405517578,4.735581874847412,3.7559313774108887,-2.5780227184295654,7.337298393249512,7.680065631866455,2.056300163269043,1.444051742553711,1.5615267753601074,2.9059877395629883,1.8052445650100708,4.504344463348389,6.036397933959961]}, + {"name":"unknown","source":"/private/me (8).jpg","embedding":[2.561844825744629,-1.88634192943573,1.9937130212783813,3.8082404136657715,5.166207313537598,6.552684307098389,2.4707210063934326,2.075601100921631,0.30355119705200195,0.14278972148895264,5.109976768493652,1.668649673461914,3.178764820098877,2.668041467666626,0.18890972435474396,-1.063730239868164,0.338090717792511,4.146813869476318,-1.9485819339752197,2.7967374324798584,-1.3244149684906006,-0.9488842487335205,-1.538743019104004,3.0047943592071533,0.6896612048149109,0.755533754825592,3.3853065967559814,4.23698091506958,2.393054485321045,2.5223872661590576,7.47925329208374,0.6879820227622986,3.8740994930267334,2.300194501876831,4.534759998321533,3.0747458934783936,7.414395332336426,0.6265047192573547,0.9217983484268188,-0.06716294586658478,0.8875153660774231,3.145237684249878,-2.958353042602539,2.2425639629364014,1.433763027191162,3.6139988899230957,0.25506705045700073,0.8821209669113159,-0.97268146276474,4.440948009490967,2.723630428314209,0.21476946771144867,1.3766305446624756,3.3904218673706055,-2.678744077682495,-0.7106247544288635,1.9286963939666748,3.822397470474243,-0.6738181114196777,1.9462926387786865,1.0346044301986694,-0.19355973601341248,7.381861686706543,-0.6429148316383362,4.1065850257873535,2.8399362564086914,2.6179709434509277,1.2821054458618164,2.945760488510132,-1.2836487293243408,1.5290205478668213,2.3283822536468506,6.429048538208008,-0.006676508579403162,3.750788688659668,2.0762953758239746,2.975597620010376,0.7174789905548096,1.3529670238494873,1.764441967010498,2.323361396789551,-3.4999091625213623,0.031247392296791077,-1.3142136335372925,5.534368515014648,5.8740010261535645,-1.6435136795043945,4.1413373947143555,5.7351393699646,-0.4575818181037903,1.5701451301574707,-0.05209442973136902,3.3824050426483154,-3.9638583660125732,0.9275931715965271,1.9363682270050049,0.03447723388671875,3.5533571243286133,0.9022066593170166,1.486527442932129,3.353914976119995,3.5653650760650635,2.422046422958374,-1.4336844682693481,-1.096764087677002,-0.20495067536830902,1.4441941976547241,3.435187816619873,1.7217602729797363,7.430504322052002,0.20522773265838623,2.7150585651397705,-1.9480456113815308,-1.7844836711883545,2.406830072402954,3.6316821575164795,4.607589244842529,3.768054246902466,-2.613988161087036,7.282078266143799,7.683811187744141,2.007702589035034,1.4464342594146729,1.5428447723388672,2.8855934143066406,1.8267062902450562,4.47481632232666,5.992048740386963]}, + {"name":"unknown","source":"/private/me (9).jpg","embedding":[2.553959369659424,-1.88601553440094,2.025599479675293,3.8213605880737305,5.168097019195557,6.587497711181641,2.5203166007995605,2.108882427215576,0.3766043782234192,0.0879313051700592,5.123169422149658,1.6654446125030518,3.2182962894439697,2.614431381225586,0.12914791703224182,-1.0902971029281616,0.35412782430648804,4.1336236000061035,-1.9127192497253418,2.777447462081909,-1.325484037399292,-0.9451302886009216,-1.5342624187469482,2.997931480407715,0.6571435332298279,0.7952494621276855,3.3767497539520264,4.16769552230835,2.3963465690612793,2.596766710281372,7.509230613708496,0.6629320383071899,3.9263830184936523,2.229663133621216,4.507966995239258,3.0397400856018066,7.401484489440918,0.6404275894165039,0.9270164370536804,-0.00015286682173609734,0.8454705476760864,3.0734267234802246,-2.9168124198913574,2.1789281368255615,1.4051005840301514,3.631277322769165,0.31127792596817017,0.8671098351478577,-0.9723552465438843,4.477025508880615,2.7543373107910156,0.22935360670089722,1.4216887950897217,3.3447186946868896,-2.663133382797241,-0.7617460489273071,1.8494129180908203,3.7911455631256104,-0.6815203428268433,1.976639986038208,1.082425594329834,-0.22384171187877655,7.377834796905518,-0.632286548614502,4.095860958099365,2.7814133167266846,2.6236395835876465,1.2200498580932617,2.8630571365356445,-1.3175907135009766,1.5656993389129639,2.370687484741211,6.3987627029418945,-0.0780203640460968,3.7340517044067383,2.046506643295288,3.0287632942199707,0.6748313307762146,1.4261757135391235,1.771493673324585,2.2897844314575195,-3.4786581993103027,0.1243770495057106,-1.387905240058899,5.5348663330078125,5.897387504577637,-1.594063401222229,4.1417131423950195,5.767293453216553,-0.4452425539493561,1.5335159301757812,-0.03601115196943283,3.485572099685669,-4.006654262542725,0.8427433371543884,1.880389928817749,0.05666613578796387,3.5629525184631348,0.962212085723877,1.4959638118743896,3.3147172927856445,3.5573463439941406,2.4150807857513428,-1.3755759000778198,-1.065839171409607,-0.1732083559036255,1.446897029876709,3.36482310295105,1.7277812957763672,7.4336371421813965,0.18652573227882385,2.7440054416656494,-1.9731563329696655,-1.8553398847579956,2.416865587234497,3.620012044906616,4.699839115142822,3.783925771713257,-2.5906765460968018,7.2652459144592285,7.739256381988525,1.9968140125274658,1.4515620470046997,1.5445610284805298,2.86242413520813,1.847245693206787,4.475623607635498,6.036394119262695]}, + {"name":"unknown","source":"/private/me (9).jpg","embedding":[2.5303452014923096,-1.8771402835845947,1.9994933605194092,3.8083486557006836,5.1425371170043945,6.5165205001831055,2.487051248550415,2.0782272815704346,0.34812095761299133,0.1121976375579834,5.125119209289551,1.6849318742752075,3.249948501586914,2.665935516357422,0.1509377807378769,-1.0328595638275146,0.36562615633010864,4.132029056549072,-1.9359941482543945,2.812084197998047,-1.289088487625122,-0.968620777130127,-1.532354474067688,3.054558515548706,0.7208488583564758,0.773872971534729,3.377100706100464,4.226986885070801,2.3881938457489014,2.5831751823425293,7.442962646484375,0.6238150000572205,3.878483772277832,2.2331717014312744,4.545619964599609,3.0188026428222656,7.415510177612305,0.6530216336250305,0.9232930541038513,-0.020442571491003036,0.8984354138374329,3.080033302307129,-2.9706811904907227,2.1769802570343018,1.451796054840088,3.614370107650757,0.2790546417236328,0.887536346912384,-0.9510584473609924,4.47535514831543,2.711857557296753,0.20307043194770813,1.37941575050354,3.3970279693603516,-2.7102644443511963,-0.7360364198684692,1.9334861040115356,3.76920223236084,-0.7558143734931946,1.9242361783981323,1.0524275302886963,-0.1782590001821518,7.378748893737793,-0.5923794507980347,4.06052303314209,2.8761608600616455,2.6005642414093018,1.2257661819458008,2.875314950942993,-1.2575939893722534,1.6083651781082153,2.351201057434082,6.414801120758057,-0.04017826169729233,3.698659896850586,2.0525550842285156,3.0067150592803955,0.6920363903045654,1.322387933731079,1.7612955570220947,2.3364298343658447,-3.463836908340454,0.0921044573187828,-1.377920150756836,5.588221549987793,5.94017219543457,-1.645682692527771,4.202531337738037,5.730659484863281,-0.3758125603199005,1.5536638498306274,0.009419575333595276,3.456552743911743,-4.063302040100098,0.9222211837768555,1.8797848224639893,0.014844536781311035,3.5229573249816895,0.862989604473114,1.531733512878418,3.3554069995880127,3.5116233825683594,2.4763545989990234,-1.4464006423950195,-1.138928771018982,-0.18242469429969788,1.4796916246414185,3.400740623474121,1.6782922744750977,7.477255344390869,0.2242695689201355,2.6602675914764404,-2.018833637237549,-1.7925702333450317,2.4146530628204346,3.6495237350463867,4.702375411987305,3.7900819778442383,-2.6045982837677,7.322883605957031,7.768923282623291,2.0236217975616455,1.4255650043487549,1.5536441802978516,2.8508951663970947,1.8145583868026733,4.521081447601318,6.031826019287109]} +] \ No newline at end of file diff --git a/dist/demo-browser-index.js b/dist/demo-browser-index.js index 10d22830..16f00330 100644 --- a/dist/demo-browser-index.js +++ b/dist/demo-browser-index.js @@ -5,31 +5,31 @@ author: ' */ -var z8=Object.create,Sh=Object.defineProperty,P8=Object.getPrototypeOf,L8=Object.prototype.hasOwnProperty,W8=Object.getOwnPropertyNames,B8=Object.getOwnPropertyDescriptor;var pf=e=>Sh(e,"__esModule",{value:!0});var G2=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),xr=(e,t)=>{for(var n in t)Sh(e,n,{get:t[n],enumerable:!0})},V8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of W8(t))!L8.call(e,r)&&r!=="default"&&Sh(e,r,{get:()=>t[r],enumerable:!(n=B8(t,r))||n.enumerable});return e},Th=e=>V8(pf(Sh(e!=null?z8(P8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var q2=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},Ne=(e,t,n)=>(q2(e,t,"read from private field"),n?n.call(e):t.get(e)),ia=(e,t,n,r)=>(q2(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var z6=G2(O6=>{pf(O6);xr(O6,{MediaPipeFaceMesh:()=>zg,load:()=>Yae});var zg=class{constructor(t,n,r,a){this.facePipeline=new Og(t,n,r),this.config=a}async estimateFaces(t,n){let r=await this.facePipeline.predict(t,n),a=[];for(let s of r||[]){if(s.isDisposedInternal)continue;let i=s.coords?s.coords.arraySync():[],o=i.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),l={};if(i&&i.length>0)for(let h of Object.keys(Jr))l[h]=Jr[h].map(d=>i[d]);let u=s.box?[Math.max(0,s.box.startPoint[0]),Math.max(0,s.box.startPoint[1]),Math.min(t.shape[1],s.box.endPoint[0])-s.box.startPoint[0],Math.min(t.shape[2],s.box.endPoint[1])-s.box.startPoint[1]]:0,c=s.box?[Math.max(0,s.box.startPoint[0]/t.shape[2]),Math.max(0,s.box.startPoint[1]/t.shape[1]),Math.min(t.shape[1],s.box.endPoint[0]-s.box.startPoint[0])/t.shape[2],Math.min(t.shape[2],s.box.endPoint[1]-s.box.startPoint[1])/t.shape[1]]:[];a.push({confidence:s.faceConfidence||s.boxConfidence||0,boxConfidence:s.boxConfidence,faceConfidence:s.faceConfidence,box:u,mesh:i,boxRaw:c,meshRaw:o,annotations:l,image:s.image?s.image.clone():null}),s.coords&&s.coords.dispose(),s.image&&s.image.dispose()}return a}},Wi=[null,null,null];async function Yae(e){Wi=await Promise.all([!Wi[0]&&e.face.enabled?E6(e):null,!Wi[1]&&e.face.mesh.enabled?Ot(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!Wi[2]&&e.face.iris.enabled?Ot(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new zg(Wi[0],Wi[1],Wi[2],e);return e.face.mesh.enabled&&e.debug&&Fe(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&Fe(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}O6.triangulation=Li});var C0=G2(s2=>{pf(s2);xr(s2,{NUM_KEYPOINTS:()=>nse,connectedPartIndices:()=>ase,partChannels:()=>ise,partIds:()=>i2,partNames:()=>tse,poseChain:()=>sse});var tse=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],nse=s2.partNames.length,i2=s2.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),rse=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],ase=rse.map(([e,t])=>[i2[e],i2[t]]),sse=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],ise=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function Fe(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function X2(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var Eh={};xr(Eh,{Abs:()=>so,Acos:()=>io,Acosh:()=>oo,AdadeltaOptimizer:()=>tp,AdagradOptimizer:()=>np,AdamOptimizer:()=>rp,AdamaxOptimizer:()=>ap,Add:()=>Ra,AddN:()=>fs,All:()=>Dh,Any:()=>Oh,ArgMax:()=>ms,ArgMin:()=>yu,Asin:()=>lo,Asinh:()=>uo,Atan:()=>co,Atan2:()=>po,Atanh:()=>ho,AvgPool:()=>As,AvgPool3D:()=>gu,AvgPool3DGrad:()=>Ph,AvgPoolGrad:()=>zh,BackendWasm:()=>D3,BatchMatMul:()=>ys,BatchToSpaceND:()=>xu,Bincount:()=>Lh,BroadcastTo:()=>u5,Callback:()=>Nv,CallbackList:()=>k7,Cast:()=>gs,Ceil:()=>xs,ClipByValue:()=>Fa,Complex:()=>Wh,ComplexAbs:()=>wu,Concat:()=>fo,Conv2D:()=>ws,Conv2DBackpropFilter:()=>Bh,Conv2DBackpropInput:()=>bs,Conv3D:()=>bu,Conv3DBackpropFilterV2:()=>Vh,Conv3DBackpropInputV2:()=>Uh,Cos:()=>_s,Cosh:()=>mo,CropAndResize:()=>Ao,Cumsum:()=>vs,CustomCallback:()=>N7,DataStorage:()=>Rh,DenseBincount:()=>Hh,DepthToSpace:()=>yo,DepthwiseConv2dNative:()=>ks,DepthwiseConv2dNativeBackpropFilter:()=>jh,DepthwiseConv2dNativeBackpropInput:()=>Gh,Diag:()=>qh,Dilation2D:()=>_u,Dilation2DBackpropFilter:()=>Kh,Dilation2DBackpropInput:()=>Xh,ENV:()=>wr,EarlyStopping:()=>Tv,Elu:()=>go,EluGrad:()=>Zh,Environment:()=>o5,Equal:()=>wo,Erf:()=>xo,Exp:()=>Ns,ExpandDims:()=>bo,Expm1:()=>_o,FFT:()=>Yh,Fill:()=>vu,FlipLeftRight:()=>vo,Floor:()=>Ss,FloorDiv:()=>Ts,FromPixels:()=>dd,FusedBatchNorm:()=>Es,FusedConv2D:()=>oi,FusedDepthwiseConv2D:()=>li,GPGPUContext:()=>bp,GatherNd:()=>Io,GatherV2:()=>ko,GraphModel:()=>a6,Greater:()=>No,GreaterEqual:()=>Cs,History:()=>I7,IFFT:()=>Jh,Identity:()=>Rs,Imag:()=>Qh,InputSpec:()=>Qt,IsFinite:()=>So,IsInf:()=>To,IsNan:()=>Eo,KernelBackend:()=>fu,LRN:()=>Nu,LRNGrad:()=>td,LayerVariable:()=>x7,LayersModel:()=>ya,LeakyRelu:()=>Fs,Less:()=>Co,LessEqual:()=>Ro,LinSpace:()=>ed,Log:()=>Ms,Log1p:()=>Fo,LogSoftmax:()=>c5,LogicalAnd:()=>Mo,LogicalNot:()=>ku,LogicalOr:()=>Iu,MathBackendCPU:()=>lp,MathBackendWebGL:()=>Ll,Max:()=>$s,MaxPool:()=>Os,MaxPool3D:()=>Su,MaxPool3DGrad:()=>rd,MaxPoolGrad:()=>nd,MaxPoolWithArgmax:()=>ad,Maximum:()=>Ds,Mean:()=>zs,Min:()=>Ps,Minimum:()=>Ls,MirrorPad:()=>Tu,Mod:()=>$o,MomentumOptimizer:()=>sp,Multinomial:()=>sd,Multiply:()=>Ws,Neg:()=>Do,NonMaxSuppressionV3:()=>zo,NonMaxSuppressionV4:()=>Po,NonMaxSuppressionV5:()=>Lo,NotEqual:()=>Oo,OP_SCOPE_SUFFIX:()=>b5,OneHot:()=>Bs,OnesLike:()=>Wo,Optimizer:()=>pa,Pack:()=>Bo,PadV2:()=>Vs,Pool:()=>Jk,Pow:()=>Us,Prelu:()=>Hs,Prod:()=>Vo,RMSPropOptimizer:()=>ip,RNN:()=>Zr,Range:()=>Eu,Rank:()=>If,Real:()=>id,RealDiv:()=>Is,Reciprocal:()=>Uo,Reduction:()=>yn,Relu:()=>js,Relu6:()=>qs,Reshape:()=>Ho,ResizeBilinear:()=>Gs,ResizeBilinearGrad:()=>ld,ResizeNearestNeighbor:()=>Cu,ResizeNearestNeighborGrad:()=>od,Reverse:()=>Xs,RotateWithOffset:()=>al,Round:()=>Ks,Rsqrt:()=>Zs,SGDOptimizer:()=>uc,ScatterNd:()=>jo,Select:()=>Go,Selu:()=>qo,Sequential:()=>Kl,Sigmoid:()=>Js,Sign:()=>Zo,Sin:()=>Ys,Sinh:()=>Ko,Slice:()=>Xo,Softmax:()=>ti,Softplus:()=>Yo,SpaceToBatchND:()=>Ru,SparseToDense:()=>ud,SplitV:()=>Jo,Sqrt:()=>Qs,Square:()=>Fu,SquaredDifference:()=>ni,Step:()=>$a,StridedSlice:()=>Qo,Sub:()=>ri,Sum:()=>ei,SymbolicTensor:()=>Cr,Tan:()=>el,Tanh:()=>ai,Tensor:()=>Ge,TensorBuffer:()=>Wt,Tile:()=>Ma,TopK:()=>tl,Transform:()=>cd,Transpose:()=>si,Unique:()=>hd,Unpack:()=>nl,UnsortedSegmentSum:()=>Mu,Variable:()=>Wu,ZerosLike:()=>rl,_FusedMatMul:()=>ii,abs:()=>Bt,acos:()=>Yf,acosh:()=>Jf,add:()=>ie,addN:()=>La,all:()=>kd,any:()=>ju,argMax:()=>Gu,argMin:()=>Qf,asin:()=>em,asinh:()=>tm,atan:()=>nm,atan2:()=>rm,atanh:()=>am,avgPool:()=>Xu,avgPool3d:()=>om,backend:()=>nx,backend_util:()=>R,basicLSTMCell:()=>CN,batchNorm:()=>mi,batchNorm2d:()=>ix,batchNorm3d:()=>ox,batchNorm4d:()=>lx,batchToSpaceND:()=>Ku,bincount:()=>ux,booleanMaskAsync:()=>DE,broadcastTo:()=>Zu,browser:()=>dl,buffer:()=>Ue,callbacks:()=>tre,cast:()=>ge,ceil:()=>lm,clipByValue:()=>Sn,clone:()=>zr,complex:()=>Da,concat:()=>lt,concat1d:()=>cx,concat2d:()=>yl,concat3d:()=>hx,concat4d:()=>dx,constraints:()=>G3,conv1d:()=>Nd,conv2d:()=>ua,conv2dTranspose:()=>Sd,conv3d:()=>cm,conv3dTranspose:()=>JN,copyRegisteredKernels:()=>t9,cos:()=>Yu,cosh:()=>Td,cosineWindow:()=>zm,cumsum:()=>Ed,customGrad:()=>Wr,data:()=>s6,denseBincount:()=>fx,deprecationWarn:()=>Kf,depthToSpace:()=>hm,depthwiseConv2d:()=>gl,deregisterOp:()=>rre,device_util:()=>Vu,diag:()=>iS,dilation2d:()=>dm,disableDeprecationWarnings:()=>HI,dispose:()=>Me,disposeVariables:()=>jI,div:()=>be,divNoNan:()=>pm,dot:()=>mx,dropout:()=>Ox,elu:()=>xl,enableDebugMode:()=>UI,enableProdMode:()=>VI,enclosingPowerOfTwo:()=>zx,engine:()=>Pr,env:()=>J,equal:()=>Ba,erf:()=>fm,exp:()=>Jn,expandDims:()=>mn,expm1:()=>mm,eye:()=>Am,fft:()=>oc,fill:()=>Ju,findBackend:()=>Zf,findBackendFactory:()=>YI,floor:()=>wl,floorDiv:()=>vd,forceHalfFloat:()=>Xb,fused:()=>ja,gather:()=>Ai,gatherND:()=>Dx,gather_util:()=>Vf,getBackend:()=>KI,getGradient:()=>_f,getKernel:()=>pd,getKernelsForBackend:()=>il,gpgpu_util:()=>gb,grad:()=>DS,grads:()=>OS,greater:()=>ur,greaterEqual:()=>Ua,ifft:()=>Il,imag:()=>Cd,image:()=>tt,inTopKAsync:()=>GE,initializers:()=>Q3,input:()=>d7,io:()=>Nn,irfft:()=>Gd,isFinite:()=>Ax,isInf:()=>yx,isNaN:()=>gx,keep:()=>Zt,kernel_impls:()=>Hr,layers:()=>h7,leakyRelu:()=>Qu,less:()=>Rd,lessEqual:()=>yi,linalg:()=>Kx,linspace:()=>xx,loadGraphModel:()=>Ot,loadLayersModel:()=>bne,localResponseNormalization:()=>ym,log:()=>zn,log1p:()=>Fd,logSigmoid:()=>bx,logSoftmax:()=>$d,logSumExp:()=>wm,logicalAnd:()=>cr,logicalNot:()=>ec,logicalOr:()=>Dd,logicalXor:()=>Ix,losses:()=>uR,matMul:()=>Ke,math:()=>z5,max:()=>Qn,maxPool:()=>tc,maxPool3d:()=>bm,maxPoolWithArgmax:()=>Nx,maximum:()=>Br,mean:()=>Tt,memory:()=>_d,metrics:()=>vv,min:()=>_l,minimum:()=>vl,mirrorPad:()=>_m,mod:()=>vm,model:()=>xne,models:()=>kv,moments:()=>Od,movingAverage:()=>PE,mul:()=>P,multiRNNCell:()=>hT,multinomial:()=>Sx,neg:()=>St,nextFrame:()=>op,norm:()=>Zd,notEqual:()=>xi,oneHot:()=>hl,ones:()=>Vr,onesLike:()=>Pn,op:()=>O,outerProduct:()=>AT,pad:()=>ca,pad1d:()=>xT,pad2d:()=>bT,pad3d:()=>vT,pad4d:()=>IT,pool:()=>Tx,pow:()=>ha,prelu:()=>rc,print:()=>R5,prod:()=>zd,profile:()=>kr,rand:()=>$T,randomGamma:()=>PT,randomNormal:()=>Ex,randomUniform:()=>kl,range:()=>Pd,ready:()=>XI,real:()=>ac,reciprocal:()=>Nm,registerBackend:()=>fl,registerCallbackConstructor:()=>_ne,registerGradient:()=>h5,registerKernel:()=>ui,registerOp:()=>nre,regularizers:()=>Iv,relu:()=>Ur,relu6:()=>Ld,removeBackend:()=>ZI,reshape:()=>G,reverse:()=>Ln,reverse1d:()=>qT,reverse2d:()=>KT,reverse3d:()=>YT,reverse4d:()=>QT,rfft:()=>lc,round:()=>Sm,rsqrt:()=>Wd,scalar:()=>Ie,scatterND:()=>$x,scatter_util:()=>Uf,selu:()=>Bd,separableConv2d:()=>Tm,sequential:()=>wne,serialization:()=>ae,setBackend:()=>qI,setPlatform:()=>JI,setWasmPath:()=>AY,setWasmPaths:()=>yY,setWebGLContext:()=>yp,setdiff1dAsync:()=>Cx,shared:()=>Bm,sigmoid:()=>On,sign:()=>Em,signal:()=>lR,sin:()=>Vd,sinh:()=>Ud,slice:()=>$e,slice1d:()=>Hd,slice2d:()=>Cm,slice3d:()=>jd,slice4d:()=>sc,slice_util:()=>fn,softmax:()=>ic,softplus:()=>bl,spaceToBatchND:()=>nc,sparseToDense:()=>Om,spectral:()=>oR,split:()=>Ut,sqrt:()=>an,square:()=>ht,squaredDifference:()=>qd,squeeze:()=>Ha,stack:()=>An,step:()=>Nl,stridedSlice:()=>Rm,sub:()=>we,sum:()=>Re,sumOutType:()=>yd,tan:()=>Fm,tanh:()=>Al,tensor:()=>vr,tensor1d:()=>hn,tensor2d:()=>En,tensor3d:()=>wd,tensor4d:()=>IE,tensor5d:()=>NE,tensor6d:()=>SE,tensor_util:()=>br,test_util:()=>Q5,tidy:()=>B,tile:()=>Va,time:()=>GI,topk:()=>Mm,train:()=>bi,transpose:()=>ot,truncatedNormal:()=>Xd,unique:()=>Kd,unregisterGradient:()=>e9,unregisterKernel:()=>Qk,unsortedSegmentSum:()=>$m,unstack:()=>hr,upcastType:()=>lr,util:()=>v,valueAndGrad:()=>zS,valueAndGrads:()=>PS,variable:()=>Rx,variableGrads:()=>wx,version:()=>Vae,version_converter:()=>nae,version_core:()=>BI,version_cpu:()=>Iw,version_layers:()=>iy,version_wasm:()=>z3,version_webgl:()=>qb,webgl:()=>$L,webgl_util:()=>Gw,where:()=>Tn,whereAsync:()=>Dm,zeros:()=>$t,zerosLike:()=>qe});var U8=Object.create,Ch=Object.defineProperty,H8=Object.getPrototypeOf,j8=Object.prototype.hasOwnProperty,G8=Object.getOwnPropertyNames,q8=Object.getOwnPropertyDescriptor,X8=e=>Ch(e,"__esModule",{value:!0}),rt=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),We=(e,t)=>{for(var n in t)Ch(e,n,{get:t[n],enumerable:!0})},K8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of G8(t))!j8.call(e,r)&&r!=="default"&&Ch(e,r,{get:()=>t[r],enumerable:!(n=q8(t,r))||n.enumerable});return e},no=e=>K8(X8(Ch(e!=null?U8(H8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),Z8=rt(()=>{}),Y8=rt((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),J8=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Q8=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ek=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),tk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],b=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,b=Math.max(b,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),nk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ff=rt(()=>{}),rk=rt((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,N){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,_(n)]:w==null?b():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(_(M.S),n),(x.pass||N||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,N=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(N||(w=[N++]);T{var n=Y8(),r=J8(),a=Q8(),s=ek(),i=tk(),o=nk(),l=rk();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),sk=rt((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ik=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ok=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),lk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),uk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],b=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,b=Math.max(b,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ck=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),hk=rt((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,N){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,_(n)]:w==null?b():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(_(M.S),n),(x.pass||N||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,N=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(N||(w=[N++]);T{var n=sk(),r=ik(),a=ok(),s=lk(),i=uk(),o=ck(),l=hk();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),pu=rt(()=>{}),pk=rt(()=>{}),fk=rt(()=>{}),mk=rt((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};function s(){return Q.buffer!=He&&nn(Q.buffer),bn}function i(){return Q.buffer!=He&&nn(Q.buffer),It}function o(){return Q.buffer!=He&&nn(Q.buffer),_n}function l(){return Q.buffer!=He&&nn(Q.buffer),Kn}function u(){return Q.buffer!=He&&nn(Q.buffer),pn}var c=typeof a!="undefined"?a:{},h,d;c.ready=new Promise(function(I,E){h=I,d=E});var p={},f;for(f in c)c.hasOwnProperty(f)&&(p[f]=c[f]);var m=[],A="./this.program",y=function(I,E){throw E},g=!1,b=!1,_=!1,w=!1;g=typeof window=="object",b=typeof importScripts=="function",_=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!g&&!_&&!b;var x=c.ENVIRONMENT_IS_PTHREAD||!1;x&&(He=c.buffer);var N="";function S(I){return c.locateFile?c.locateFile(I,N):N+I}var T,M,D,z,W,U;if(_){b?N=pu().dirname(N)+"/":N=__dirname+"/",T=function(I,E){return W||(W=require("fs")),U||(U=pu()),I=U.normalize(I),W.readFileSync(I,E?null:"utf8")},D=function(I){var E=T(I,!0);return E.buffer||(E=new Uint8Array(E)),me(E.buffer),E},process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(I){if(!(I instanceof du))throw I}),process.on("unhandledRejection",ra),y=function(I){process.exit(I)},c.inspect=function(){return"[Emscripten Module object]"};var H;try{H=pk()}catch(I){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),I}global.Worker=H.Worker}else w?(typeof read!="undefined"&&(T=function(I){return read(I)}),D=function(I){var E;return typeof readbuffer=="function"?new Uint8Array(readbuffer(I)):(E=read(I,"binary"),me(typeof E=="object"),E)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(y=function(I){quit(I)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(g||b)&&(b?N=self.location.href:typeof document!="undefined"&&document.currentScript&&(N=document.currentScript.src),typeof r!="undefined"&&r&&(N=r),N.indexOf("blob:")!==0?N=N.substr(0,N.lastIndexOf("/")+1):N="",_?(T=function(I,E){return W||(W=require("fs")),U||(U=pu()),I=U.normalize(I),W.readFileSync(I,E?null:"utf8")},D=function(I){var E=T(I,!0);return E.buffer||(E=new Uint8Array(E)),me(E.buffer),E}):(T=function(I){var E=new XMLHttpRequest;return E.open("GET",I,!1),E.send(null),E.responseText},b&&(D=function(I){var E=new XMLHttpRequest;return E.open("GET",I,!1),E.responseType="arraybuffer",E.send(null),new Uint8Array(E.response)}),M=function(I,E,L){var q=new XMLHttpRequest;q.open("GET",I,!0),q.responseType="arraybuffer",q.onload=function(){if(q.status==200||q.status==0&&q.response){E(q.response);return}L()},q.onerror=L,q.send(null)}),z=function(I){document.title=I});_&&typeof performance=="undefined"&&(global.performance=fk().performance);var X=c.print||console.log.bind(console),j=c.printErr||console.warn.bind(console);for(f in p)p.hasOwnProperty(f)&&(c[f]=p[f]);p=null,c.arguments&&(m=c.arguments),c.thisProgram&&(A=c.thisProgram),c.quit&&(y=c.quit);var ee=Atomics.load,Y=Atomics.store,se=Atomics.compareExchange,te;c.wasmBinary&&(te=c.wasmBinary);var oe=c.noExitRuntime||!0;typeof WebAssembly!="object"&&ra("no native wasm support detected");var Q,pe,le=!1,Ae;function me(I,E){I||ra("Assertion failed: "+E)}function Se(I){var E=c["_"+I];return me(E,"Cannot call unknown function "+I+", make sure it is exported"),E}function Ee(I,E,L,q,fe){var ue={string:function(In){var to=0;if(In!=null&&In!==0){var j2=(In.length<<2)+1;to=Ji(j2),st(In,to,j2)}return to},array:function(In){var to=Ji(In.length);return Qe(In,to),to}};function he(In){return E==="string"?ze(In):E==="boolean"?Boolean(In):In}var ve=Se(I),it=[],Xt=0;if(q)for(var Pt=0;Pt=q);){var ue=I[E++];if(!ue)return fe;if(!(ue&128)){fe+=String.fromCharCode(ue);continue}var he=I[E++]&63;if((ue&224)==192){fe+=String.fromCharCode((ue&31)<<6|he);continue}var ve=I[E++]&63;if((ue&240)==224?ue=(ue&15)<<12|he<<6|ve:ue=(ue&7)<<18|he<<12|ve<<6|I[E++]&63,ue<65536)fe+=String.fromCharCode(ue);else{var it=ue-65536;fe+=String.fromCharCode(55296|it>>10,56320|it&1023)}}return fe}function ze(I,E){return I?Le(i(),I,E):""}function at(I,E,L,q){if(!(q>0))return 0;for(var fe=L,ue=L+q-1,he=0;he=55296&&ve<=57343){var it=I.charCodeAt(++he);ve=65536+((ve&1023)<<10)|it&1023}if(ve<=127){if(L>=ue)break;E[L++]=ve}else if(ve<=2047){if(L+1>=ue)break;E[L++]=192|ve>>6,E[L++]=128|ve&63}else if(ve<=65535){if(L+2>=ue)break;E[L++]=224|ve>>12,E[L++]=128|ve>>6&63,E[L++]=128|ve&63}else{if(L+3>=ue)break;E[L++]=240|ve>>18,E[L++]=128|ve>>12&63,E[L++]=128|ve>>6&63,E[L++]=128|ve&63}}return E[L]=0,L-fe}function st(I,E,L){return at(I,i(),E,L)}function ct(I){for(var E=0,L=0;L=55296&&q<=57343&&(q=65536+((q&1023)<<10)|I.charCodeAt(++L)&1023),q<=127?++E:q<=2047?E+=2:q<=65535?E+=3:E+=4}return E}function Qe(I,E){s().set(I,E)}function At(I,E){return I%E>0&&(I+=E-I%E),I}var He,bn,It,Xn,tn,_n,Kn,Dn,pn;function nn(I){He=I,c.HEAP8=bn=new Int8Array(I),c.HEAP16=Xn=new Int16Array(I),c.HEAP32=_n=new Int32Array(I),c.HEAPU8=It=new Uint8Array(I),c.HEAPU16=tn=new Uint16Array(I),c.HEAPU32=Kn=new Uint32Array(I),c.HEAPF32=Dn=new Float32Array(I),c.HEAPF64=pn=new Float64Array(I)}var $r=c.INITIAL_MEMORY||16777216;if(x)Q=c.wasmMemory,He=c.buffer;else if(c.wasmMemory)Q=c.wasmMemory;else if(Q=new WebAssembly.Memory({initial:$r/65536,maximum:2147483648/65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),_&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(He=Q.buffer),$r=He.byteLength,nn(He);var ar,sr=[],_a=[],ta=[],va=[],Hi=[],gr=!1,ah=!1;x||_a.push({func:function(){wh()}}),x&&(gr=!0);function Y0(){if(!x){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)oh(c.preRun.shift());Gi(sr)}}function sh(){gr=!0,Gi(_a)}function J0(){x||Gi(ta)}function ih(){x||(ah=!0)}function vn(){if(!x){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Q0(c.postRun.shift());Gi(Hi)}}function oh(I){sr.unshift(I)}function Q0(I){Hi.unshift(I)}var na=0,ka=null,us=null;function e1(I){me(!x,"addRunDependency cannot be used in a pthread worker"),na++,c.monitorRunDependencies&&c.monitorRunDependencies(na)}function t1(I){if(na--,c.monitorRunDependencies&&c.monitorRunDependencies(na),na==0&&(ka!==null&&(clearInterval(ka),ka=null),us)){var E=us;us=null,E()}}c.preloadedImages={},c.preloadedAudios={};function ra(I){c.onAbort&&c.onAbort(I),x&&console.error("Pthread aborting at "+new Error().stack),I+="",j(I),le=!0,Ae=1,I="abort("+I+"). Build with -s ASSERTIONS=1 for more info.";var E=new WebAssembly.RuntimeError(I);throw d(E),E}function lh(I,E){return String.prototype.startsWith?I.startsWith(E):I.indexOf(E)===0}var ji="data:application/octet-stream;base64,";function uh(I){return lh(I,ji)}var n1="file://";function ch(I){return lh(I,n1)}var kn="tfjs-backend-wasm-threaded-simd.wasm";uh(kn)||(kn=S(kn));function r1(I){try{if(I==kn&&te)return new Uint8Array(te);if(D)return D(I);throw"both async and sync fetching of the wasm failed"}catch(E){ra(E)}}function hh(){if(!te&&(g||b)){if(typeof fetch=="function"&&!ch(kn))return fetch(kn,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+kn+"'";return I.arrayBuffer()}).catch(function(){return r1(kn)});if(M)return new Promise(function(I,E){M(kn,function(L){I(new Uint8Array(L))},E)})}return Promise.resolve().then(function(){return r1(kn)})}function a1(){var I={a:X1};function E(he,ve){var it=he.exports;if(c.asm=it,ar=c.asm.F,pe=ve,!x){var Xt=Te.unusedWorkers.length;Te.unusedWorkers.forEach(function(Pt){Te.loadWasmModuleToWorker(Pt,function(){--Xt||t1("wasm-instantiate")})})}}x||e1("wasm-instantiate");function L(he){E(he.instance,he.module)}function q(he){return hh().then(function(ve){return WebAssembly.instantiate(ve,I)}).then(he,function(ve){j("failed to asynchronously prepare wasm: "+ve),ra(ve)})}function fe(){return!te&&typeof WebAssembly.instantiateStreaming=="function"&&!uh(kn)&&!ch(kn)&&typeof fetch=="function"?fetch(kn,{credentials:"same-origin"}).then(function(he){var ve=WebAssembly.instantiateStreaming(he,I);return ve.then(L,function(it){return j("wasm streaming compile failed: "+it),j("falling back to ArrayBuffer instantiation"),q(L)})}):q(L)}if(c.instantiateWasm)try{var ue=c.instantiateWasm(I,E);return ue}catch(he){return j("Module.instantiateWasm callback failed with error: "+he),!1}return fe().catch(d),{}}var dh={8991:function(I,E){setTimeout(function(){L2(I,E)},0)}};function s1(){Te.initRuntime()}function Gi(I){for(;I.length>0;){var E=I.shift();if(typeof E=="function"){E(c);continue}var L=E.func;typeof L=="number"?E.arg===void 0?ar.get(L)():ar.get(L)(E.arg):L(E.arg===void 0?null:E.arg)}}function qi(I,E){if(I<=0||I>s().length||I&!0||E<0)return-28;if(E==0)return 0;E>=2147483647&&(E=Infinity);var L=Atomics.load(o(),Qi>>2),q=0;if(L==I){var fe=Atomics.compareExchange(o(),Qi>>2,L,0);if(fe==L&&(--E,q=1,E<=0))return 1}var ue=Atomics.notify(o(),I>>2,E);if(ue>=0)return ue+q;throw"Atomics.notify returned an unexpected value "+ue}c._emscripten_futex_wake=qi;function i1(I){if(x)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in killThread!";o()[I+12>>2]=0;var E=Te.pthreads[I];E.worker.terminate(),Te.freeThreadData(E),Te.runningWorkers.splice(Te.runningWorkers.indexOf(E.worker),1),E.worker.pthread=void 0}function o1(I){if(x)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in cancelThread!";var E=Te.pthreads[I];E.worker.postMessage({cmd:"cancel"})}function l1(I){if(x)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in cleanupThread!";o()[I+12>>2]=0;var E=Te.pthreads[I];if(E){var L=E.worker;Te.returnWorkerToPool(L)}}var Te={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var I=8,E=0;E>2]=I;var L=I+152;o()[L>>2]=L;for(var q=hs(512),E=0;E<128;++E)l()[q/4+E]=0;Atomics.store(l(),I+100>>2,q),Atomics.store(l(),I+40>>2,I),Ih(I,!b,1),P2(I)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Te.threadExitHandlers.length>0;)Te.threadExitHandlers.pop()();x&&Zi()&&z2()},threadExit:function(I){var E=Zi();E&&(Atomics.store(l(),E+4>>2,I),Atomics.store(l(),E+0>>2,1),Atomics.store(l(),E+56>>2,1),Atomics.store(l(),E+60>>2,0),Te.runExitHandlers(),qi(E+0,2147483647),Ih(0,0,0),x&&postMessage({cmd:"exit"}))},threadCancel:function(){Te.runExitHandlers();var I=Zi();Atomics.store(l(),I+4>>2,-1),Atomics.store(l(),I+0>>2,1),qi(I+0,2147483647),Ih(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var I in Te.pthreads){var E=Te.pthreads[I];E&&E.worker&&Te.returnWorkerToPool(E.worker)}Te.pthreads={};for(var L=0;L>2];o()[I.threadInfoStruct+100>>2]=0,cu(E),cu(I.threadInfoStruct)}I.threadInfoStruct=0,I.allocatedOwnStack&&I.stackBase&&cu(I.stackBase),I.stackBase=0,I.worker&&(I.worker.pthread=null)}},returnWorkerToPool:function(I){Te.runWithoutMainThreadQueuedCalls(function(){delete Te.pthreads[I.pthread.threadInfoStruct],Te.unusedWorkers.push(I),Te.runningWorkers.splice(Te.runningWorkers.indexOf(I),1),Te.freeThreadData(I.pthread),I.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(I){o()[H2>>2]=0;try{I()}finally{o()[H2>>2]=1}},receiveObjectTransfer:function(I){},loadWasmModuleToWorker:function(I,E){I.onmessage=function(L){var q=L.data,fe=q.cmd;if(I.pthread&&(Te.currentProxiedOperationCallerThread=I.pthread.threadInfoStruct),q.targetThread&&q.targetThread!=Zi()){var ue=Te.pthreads[q.targetThread];ue?ue.worker.postMessage(L.data,q.transferList):console.error('Internal error! Worker sent a message "'+fe+'" to target pthread '+q.targetThread+", but that thread no longer exists!"),Te.currentProxiedOperationCallerThread=void 0;return}if(fe==="processQueuedMainThreadWork")cf();else if(fe==="spawnThread")gh(L.data);else if(fe==="cleanupThread")l1(q.thread);else if(fe==="killThread")i1(q.thread);else if(fe==="cancelThread")o1(q.thread);else if(fe==="loaded")I.loaded=!0,E&&E(I),I.runPthread&&(I.runPthread(),delete I.runPthread);else if(fe==="print")X("Thread "+q.threadId+": "+q.text);else if(fe==="printErr")j("Thread "+q.threadId+": "+q.text);else if(fe==="alert")alert("Thread "+q.threadId+": "+q.text);else if(fe==="exit"){var he=I.pthread&&Atomics.load(l(),I.pthread.threadInfoStruct+64>>2);he&&Te.returnWorkerToPool(I)}else if(fe==="exitProcess")try{O8(q.returnCode)}catch(ve){if(ve instanceof du)return;throw ve}else fe==="cancelDone"?Te.returnWorkerToPool(I):fe==="objectTransfer"?Te.receiveObjectTransfer(L.data):L.data.target==="setimmediate"?I.postMessage(L.data):j("worker sent an unknown command "+fe);Te.currentProxiedOperationCallerThread=void 0},I.onerror=function(L){j("pthread sent an error! "+L.filename+":"+L.lineno+": "+L.message)},_&&(I.on("message",function(L){I.onmessage({data:L})}),I.on("error",function(L){I.onerror(L)}),I.on("exit",function(L){})),I.postMessage({cmd:"load",urlOrBlob:c.mainScriptUrlOrBlob||r,wasmMemory:Q,wasmModule:pe})},allocateUnusedWorker:function(){var I=S("tfjs-backend-wasm-threaded-simd.worker.js");Te.unusedWorkers.push(new Worker(I))},getNewWorker:function(){return Te.unusedWorkers.length==0&&(Te.allocateUnusedWorker(),Te.loadWasmModuleToWorker(Te.unusedWorkers[0])),Te.unusedWorkers.length>0?Te.unusedWorkers.pop():null},busySpinWait:function(I){for(var E=performance.now()+I;performance.now()>2]=I,I}function m1(I,E){if(x)return Ia(1,1,I,E)}function A1(I,E){if(I==E)postMessage({cmd:"processQueuedMainThreadWork"});else if(x)postMessage({targetThread:I,cmd:"processThreadQueue"});else{var L=Te.pthreads[I],q=L&&L.worker;if(!q)return;q.postMessage({cmd:"processThreadQueue"})}return 1}function y1(){ra()}function g1(I,E,L){var q=v1(E,L);return dh[I].apply(null,q)}function x1(I,E){}function w1(I,E,L){if(I<=0||I>s().length||I&!0)return-28;if(g){if(Atomics.load(o(),I>>2)!=E)return-6;for(var q=performance.now(),fe=q+L,ue=Atomics.exchange(o(),Qi>>2,I);;){if(q=performance.now(),q>fe)return ue=Atomics.exchange(o(),Qi>>2,0),-73;if(ue=Atomics.exchange(o(),Qi>>2,0),ue==0)break;if(cf(),Atomics.load(o(),I>>2)!=E)return-6;ue=Atomics.exchange(o(),Qi>>2,I)}return 0}else{var he=Atomics.wait(o(),I>>2,E,L);if(he==="timed-out")return-73;if(he==="not-equal")return-6;if(he==="ok")return 0;throw"Atomics.wait returned an unexpected value "+he}}function b1(I,E,L){i().copyWithin(I,E,E+L)}function _1(){return _?require("os").cpus().length:navigator.hardwareConcurrency}function Ia(I,E){for(var L=arguments.length-2,q=hu(),fe=L,ue=Ji(fe*8),he=ue>>3,ve=0;ve>=2;L=i()[I++];){var q=L<105;q&&E&1&&E++,su.push(q?u()[E++>>1]:o()[E]),++E}return su}function k1(I,E,L){au.length=E;for(var q=L>>3,fe=0;fe>>16),nn(Q.buffer),1}catch(E){}}function S1(I){var E=I1();if(I<=E)return!1;var L=2147483648;if(I>L)return!1;for(var q=1;q<=4;q*=2){var fe=E*(1+.2/q);fe=Math.min(fe,I+100663296);var ue=Math.min(L,At(Math.max(I,fe),65536)),he=N1(ue);if(he)return!0}return!1}var Ve={inEventHandler:0,removeAllEventListeners:function(){for(var I=Ve.eventHandlers.length-1;I>=0;--I)Ve._removeHandler(I);Ve.eventHandlers=[],Ve.deferredCalls=[]},registerRemoveEventListeners:function(){Ve.removeEventListenersRegistered||(va.push(Ve.removeAllEventListeners),Ve.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(I,E,L){function q(he,ve){if(he.length!=ve.length)return!1;for(var it in he)if(he[it]!=ve[it])return!1;return!0}for(var fe in Ve.deferredCalls){var ue=Ve.deferredCalls[fe];if(ue.targetFunction==I&&q(ue.argsList,L))return}Ve.deferredCalls.push({targetFunction:I,precedence:E,argsList:L}),Ve.deferredCalls.sort(function(he,ve){return he.precedence>2]=L,o()[he+4>>2]=q,o()[he+8>>2]=fe,hf(0,I,637534208,E,q,he),Yi(ue)},getTargetThreadForEventCallback:function(I){switch(I){case 1:return 0;case 2:return Te.currentProxiedOperationCallerThread;default:return I}},getNodeNameForTarget:function(I){return I?I==window?"#window":I==screen?"#screen":I&&I.nodeName?I.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function T1(I){var E=ct(I)+1,L=hs(E);return st(I,L,E),L}function E1(I,E,L,q){var fe=hu(),ue=Ji(12),he=0;E&&(he=T1(E)),o()[ue>>2]=he,o()[ue+4>>2]=L,o()[ue+8>>2]=q,hf(0,I,657457152,0,he,ue),Yi(fe)}function C1(I,E,L,q){E=E?ze(E):"",E1(I,E,L,q)}function R1(I){return I>2?ze(I):I}var F1=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function M1(I){I=R1(I);var E=F1[I]||(typeof document!="undefined"?document.querySelector(I):void 0);return E}function iu(I){return M1(I)}function ph(I,E,L){var q=iu(I);if(!q)return-4;if(q.canvasSharedPtr&&(o()[q.canvasSharedPtr>>2]=E,o()[q.canvasSharedPtr+4>>2]=L),q.offscreenCanvas||!q.controlTransferredOffscreen){q.offscreenCanvas&&(q=q.offscreenCanvas);var fe=!1;if(q.GLctxObject&&q.GLctxObject.GLctx){var ue=q.GLctxObject.GLctx.getParameter(2978);fe=ue[0]===0&&ue[1]===0&&ue[2]===q.width&&ue[3]===q.height}q.width=E,q.height=L,fe&&q.GLctxObject.GLctx.viewport(0,0,E,L)}else if(q.canvasSharedPtr){var he=o()[q.canvasSharedPtr+8>>2];return C1(he,I,E,L),1}else return-4;return 0}function fh(I,E,L){return x?Ia(2,1,I,E,L):ph(I,E,L)}function $1(I,E,L){var q=iu(I);return q?ph(I,E,L):fh(I,E,L)}function D1(I){}function O1(I,E){}function z1(I){var E=I.getExtension("ANGLE_instanced_arrays");if(E)return I.vertexAttribDivisor=function(L,q){E.vertexAttribDivisorANGLE(L,q)},I.drawArraysInstanced=function(L,q,fe,ue){E.drawArraysInstancedANGLE(L,q,fe,ue)},I.drawElementsInstanced=function(L,q,fe,ue,he){E.drawElementsInstancedANGLE(L,q,fe,ue,he)},1}function P1(I){var E=I.getExtension("OES_vertex_array_object");if(E)return I.createVertexArray=function(){return E.createVertexArrayOES()},I.deleteVertexArray=function(L){E.deleteVertexArrayOES(L)},I.bindVertexArray=function(L){E.bindVertexArrayOES(L)},I.isVertexArray=function(L){return E.isVertexArrayOES(L)},1}function L1(I){var E=I.getExtension("WEBGL_draw_buffers");if(E)return I.drawBuffers=function(L,q){E.drawBuffersWEBGL(L,q)},1}function W1(I){return!!(I.multiDrawWebgl=I.getExtension("WEBGL_multi_draw"))}var nt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(I){nt.lastError||(nt.lastError=I)},getNewId:function(I){for(var E=nt.counter++,L=I.length;L>2]:-1;fe+=ze(o()[L+ue*4>>2],he<0?void 0:he)}return fe},createContext:function(I,E){var L=I.getContext("webgl",E);if(!L)return 0;var q=nt.registerContext(L,E);return q},registerContext:function(I,E){var L=hs(8);o()[L+4>>2]=Zi();var q={handle:L,attributes:E,version:E.majorVersion,GLctx:I};return I.canvas&&(I.canvas.GLctxObject=q),nt.contexts[L]=q,(typeof E.enableExtensionsByDefault=="undefined"||E.enableExtensionsByDefault)&&nt.initExtensions(q),L},makeContextCurrent:function(I){return nt.currentContext=nt.contexts[I],c.ctx=Na=nt.currentContext&&nt.currentContext.GLctx,!(I&&!Na)},getContext:function(I){return nt.contexts[I]},deleteContext:function(I){nt.currentContext===nt.contexts[I]&&(nt.currentContext=null),typeof Ve=="object"&&Ve.removeAllHandlersOnTarget(nt.contexts[I].GLctx.canvas),nt.contexts[I]&&nt.contexts[I].GLctx.canvas&&(nt.contexts[I].GLctx.canvas.GLctxObject=void 0),cu(nt.contexts[I].handle),nt.contexts[I]=null},initExtensions:function(I){if(I||(I=nt.currentContext),!I.initExtensionsDone){I.initExtensionsDone=!0;var E=I.GLctx;z1(E),P1(E),L1(E),E.disjointTimerQueryExt=E.getExtension("EXT_disjoint_timer_query"),W1(E);var L=E.getSupportedExtensions()||[];L.forEach(function(q){q.indexOf("lose_context")<0&&q.indexOf("debug")<0&&E.getExtension(q)})}},populateUniformTable:function(I){for(var E=nt.programs[I],L=nt.programInfos[I]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},q=L.uniforms,fe=Na.getProgramParameter(E,35718),ue=0;ue>2,q=o()[L+(24>>2)],fe={alpha:!!o()[L+(0>>2)],depth:!!o()[L+(4>>2)],stencil:!!o()[L+(8>>2)],antialias:!!o()[L+(12>>2)],premultipliedAlpha:!!o()[L+(16>>2)],preserveDrawingBuffer:!!o()[L+(20>>2)],powerPreference:B1[q],failIfMajorPerformanceCaveat:!!o()[L+(28>>2)],majorVersion:o()[L+(32>>2)],minorVersion:o()[L+(36>>2)],enableExtensionsByDefault:o()[L+(40>>2)],explicitSwapControl:o()[L+(44>>2)],proxyContextToMainThread:o()[L+(48>>2)],renderViaOffscreenBackBuffer:o()[L+(52>>2)]},ue=iu(I);if(!ue||fe.explicitSwapControl)return 0;var he=nt.createContext(ue,fe);return he}function U1(I,E){return V1(I,E)}var Xi={mappings:{},buffers:[null,[],[]],printChar:function(I,E){var L=Xi.buffers[I];E===0||E===10?((I===1?X:j)(Le(L,0)),L.length=0):L.push(E)},varargs:void 0,get:function(){Xi.varargs+=4;var I=o()[Xi.varargs-4>>2];return I},getStr:function(I){var E=ze(I);return E},get64:function(I,E){return I}};function mh(I){return x?Ia(3,1,I):0}function Ah(I,E,L,q,fe){if(x)return Ia(4,1,I,E,L,q,fe)}function yh(I,E,L,q){if(x)return Ia(5,1,I,E,L,q);for(var fe=0,ue=0;ue>2],ve=o()[E+(ue*8+4)>>2],it=0;it>2]=fe,0}function H1(I){var E=Te.threadExitHandlers.pop();I&&E()}function j1(I,E){Te.threadExitHandlers.push(function(){ar.get(I)(E)})}function gh(I){if(x)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var E=Te.getNewWorker();if(E.pthread!==void 0)throw"Internal error!";if(!I.pthread_ptr)throw"Internal error, no pthread ptr!";Te.runningWorkers.push(E);for(var L=hs(128*4),q=0;q<128;++q)o()[L+q*4>>2]=0;var fe=I.stackBase+I.stackSize,ue=Te.pthreads[I.pthread_ptr]={worker:E,stackBase:I.stackBase,stackSize:I.stackSize,allocatedOwnStack:I.allocatedOwnStack,threadInfoStruct:I.pthread_ptr},he=ue.threadInfoStruct>>2;Atomics.store(l(),he+(64>>2),I.detached),Atomics.store(l(),he+(100>>2),L),Atomics.store(l(),he+(40>>2),ue.threadInfoStruct),Atomics.store(l(),he+(80>>2),I.stackSize),Atomics.store(l(),he+(76>>2),fe),Atomics.store(l(),he+(104>>2),I.stackSize),Atomics.store(l(),he+(104+8>>2),fe),Atomics.store(l(),he+(104+12>>2),I.detached);var ve=O2(),it=ve+40;Atomics.store(l(),he+(172>>2),it),E.pthread=ue;var Xt={cmd:"run",start_routine:I.startRoutine,arg:I.arg,threadInfoStruct:I.pthread_ptr,stackBase:I.stackBase,stackSize:I.stackSize};E.runPthread=function(){Xt.time=performance.now(),E.postMessage(Xt,I.transferList)},E.loaded&&(E.runPthread(),delete E.runPthread)}function G1(I,E,L,q){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!I)return j("pthread_create called with a null thread pointer!"),28;var fe=[],ue=0;if(x&&(fe.length===0||ue))return W2(687865856,I,E,L,q);if(ue)return ue;var he=0,ve=0,it=0;E&&E!=-1?(he=o()[E>>2],he+=81920,ve=o()[E+8>>2],it=o()[E+12>>2]!==0):he=2097152;var Xt=ve==0;Xt?ve=U2(16,he):(ve-=he,me(ve>0));for(var Pt=hs(228),Ta=0;Ta<228>>2;++Ta)l()[(Pt>>2)+Ta]=0;o()[I>>2]=Pt,o()[Pt+12>>2]=Pt;var eo=Pt+152;o()[eo>>2]=eo;var In={stackBase:ve,stackSize:he,allocatedOwnStack:Xt,detached:it,startRoutine:L,pthread_ptr:Pt,arg:q,transferList:fe};return x?(In.cmd="spawnThread",postMessage(In,fe)):gh(In),0}function xh(I){if(x)return Ia(6,1,I);switch(I){case 30:return 16384;case 85:var E=2147483648;return E/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return f1(28),-1}x||Te.initMainThreadBlock();var Na,q1=[null,m1,fh,mh,Ah,yh,xh],X1={e:d1,r:p1,x:A1,b:y1,y:g1,j:x1,c:w1,d:qi,f:cs,p:b1,z:_1,u:k1,q:S1,v:$1,i:D1,t:O1,w:U1,m:mh,n:Ah,g:yh,o:s1,a:Q||c.wasmMemory,k:H1,l:j1,h:G1,s:xh},$2=a1(),wh=c.___wasm_call_ctors=function(){return(wh=c.___wasm_call_ctors=c.asm.A).apply(null,arguments)},K1=c._init=function(){return(K1=c._init=c.asm.B).apply(null,arguments)},Z1=c._register_tensor=function(){return(Z1=c._register_tensor=c.asm.C).apply(null,arguments)},Y1=c._dispose_data=function(){return(Y1=c._dispose_data=c.asm.D).apply(null,arguments)},J1=c._dispose=function(){return(J1=c._dispose=c.asm.E).apply(null,arguments)},Q1=c._Abs=function(){return(Q1=c._Abs=c.asm.G).apply(null,arguments)},ef=c._Add=function(){return(ef=c._Add=c.asm.H).apply(null,arguments)},tf=c._AddN=function(){return(tf=c._AddN=c.asm.I).apply(null,arguments)},nf=c._ArgMax=function(){return(nf=c._ArgMax=c.asm.J).apply(null,arguments)},rf=c._AvgPool=function(){return(rf=c._AvgPool=c.asm.K).apply(null,arguments)},af=c._BatchMatMul=function(){return(af=c._BatchMatMul=c.asm.L).apply(null,arguments)},sf=c._Ceil=function(){return(sf=c._Ceil=c.asm.M).apply(null,arguments)},of=c._ClipByValue=function(){return(of=c._ClipByValue=c.asm.N).apply(null,arguments)},lf=c._Conv2D=function(){return(lf=c._Conv2D=c.asm.O).apply(null,arguments)},bh=c._Conv2DBackpropInput=function(){return(bh=c._Conv2DBackpropInput=c.asm.P).apply(null,arguments)},_h=c._Cos=function(){return(_h=c._Cos=c.asm.Q).apply(null,arguments)},ou=c._CropAndResize=function(){return(ou=c._CropAndResize=c.asm.R).apply(null,arguments)},Ki=c._Cumsum=function(){return(Ki=c._Cumsum=c.asm.S).apply(null,arguments)},uf=c._DepthToSpace=function(){return(uf=c._DepthToSpace=c.asm.T).apply(null,arguments)},lu=c._DepthwiseConv2dNative=function(){return(lu=c._DepthwiseConv2dNative=c.asm.U).apply(null,arguments)},K=c._Equal=function(){return(K=c._Equal=c.asm.V).apply(null,arguments)},re=c._Exp=function(){return(re=c._Exp=c.asm.W).apply(null,arguments)},Ce=c._FlipLeftRight=function(){return(Ce=c._FlipLeftRight=c.asm.X).apply(null,arguments)},et=c._Floor=function(){return(et=c._Floor=c.asm.Y).apply(null,arguments)},Ct=c._FloorDiv=function(){return(Ct=c._FloorDiv=c.asm.Z).apply(null,arguments)},xt=c._FusedBatchNorm=function(){return(xt=c._FusedBatchNorm=c.asm._).apply(null,arguments)},je=c._FusedConv2D=function(){return(je=c._FusedConv2D=c.asm.$).apply(null,arguments)},Xe=c._FusedDepthwiseConv2D=function(){return(Xe=c._FusedDepthwiseConv2D=c.asm.aa).apply(null,arguments)},rn=c._Gather=function(){return(rn=c._Gather=c.asm.ba).apply(null,arguments)},aa=c._GatherNd=function(){return(aa=c._GatherNd=c.asm.ca).apply(null,arguments)},sa=c._Greater=function(){return(sa=c._Greater=c.asm.da).apply(null,arguments)},vh=c._GreaterEqual=function(){return(vh=c._GreaterEqual=c.asm.ea).apply(null,arguments)},uu=c._LeakyRelu=function(){return(uu=c._LeakyRelu=c.asm.fa).apply(null,arguments)},Zn=c._Less=function(){return(Zn=c._Less=c.asm.ga).apply(null,arguments)},Sa=c._LessEqual=function(){return(Sa=c._LessEqual=c.asm.ha).apply(null,arguments)},kh=c._Log=function(){return(kh=c._Log=c.asm.ia).apply(null,arguments)},j4=c._LogicalAnd=function(){return(j4=c._LogicalAnd=c.asm.ja).apply(null,arguments)},G4=c._Max=function(){return(G4=c._Max=c.asm.ka).apply(null,arguments)},q4=c._MaxPool=function(){return(q4=c._MaxPool=c.asm.la).apply(null,arguments)},X4=c._Maximum=function(){return(X4=c._Maximum=c.asm.ma).apply(null,arguments)},K4=c._Mean=function(){return(K4=c._Mean=c.asm.na).apply(null,arguments)},Z4=c._Min=function(){return(Z4=c._Min=c.asm.oa).apply(null,arguments)},Y4=c._Minimum=function(){return(Y4=c._Minimum=c.asm.pa).apply(null,arguments)},J4=c._Multiply=function(){return(J4=c._Multiply=c.asm.qa).apply(null,arguments)},Q4=c._Neg=function(){return(Q4=c._Neg=c.asm.ra).apply(null,arguments)},e8=c._NonMaxSuppressionV3=function(){return(e8=c._NonMaxSuppressionV3=c.asm.sa).apply(null,arguments)},t8=c._NonMaxSuppressionV4=function(){return(t8=c._NonMaxSuppressionV4=c.asm.ta).apply(null,arguments)},n8=c._NonMaxSuppressionV5=function(){return(n8=c._NonMaxSuppressionV5=c.asm.ua).apply(null,arguments)},r8=c._NotEqual=function(){return(r8=c._NotEqual=c.asm.va).apply(null,arguments)},a8=c._OneHot=function(){return(a8=c._OneHot=c.asm.wa).apply(null,arguments)},s8=c._PadV2=function(){return(s8=c._PadV2=c.asm.xa).apply(null,arguments)},i8=c._Pow=function(){return(i8=c._Pow=c.asm.ya).apply(null,arguments)},o8=c._Prelu=function(){return(o8=c._Prelu=c.asm.za).apply(null,arguments)},l8=c._Prod=function(){return(l8=c._Prod=c.asm.Aa).apply(null,arguments)},u8=c._RealDiv=function(){return(u8=c._RealDiv=c.asm.Ba).apply(null,arguments)},c8=c._Relu=function(){return(c8=c._Relu=c.asm.Ca).apply(null,arguments)},h8=c._Relu6=function(){return(h8=c._Relu6=c.asm.Da).apply(null,arguments)},d8=c._ResizeBilinear=function(){return(d8=c._ResizeBilinear=c.asm.Ea).apply(null,arguments)},p8=c._Reverse=function(){return(p8=c._Reverse=c.asm.Fa).apply(null,arguments)},f8=c._RotateWithOffset=function(){return(f8=c._RotateWithOffset=c.asm.Ga).apply(null,arguments)},m8=c._Round=function(){return(m8=c._Round=c.asm.Ha).apply(null,arguments)},A8=c._Rsqrt=function(){return(A8=c._Rsqrt=c.asm.Ia).apply(null,arguments)},y8=c._ScatterNd=function(){return(y8=c._ScatterNd=c.asm.Ja).apply(null,arguments)},g8=c._SelectV2=function(){return(g8=c._SelectV2=c.asm.Ka).apply(null,arguments)},x8=c._Sigmoid=function(){return(x8=c._Sigmoid=c.asm.La).apply(null,arguments)},w8=c._Sin=function(){return(w8=c._Sin=c.asm.Ma).apply(null,arguments)},b8=c._Softmax=function(){return(b8=c._Softmax=c.asm.Na).apply(null,arguments)},_8=c._Sqrt=function(){return(_8=c._Sqrt=c.asm.Oa).apply(null,arguments)},v8=c._Square=function(){return(v8=c._Square=c.asm.Pa).apply(null,arguments)},k8=c._SquaredDifference=function(){return(k8=c._SquaredDifference=c.asm.Qa).apply(null,arguments)},I8=c._Step=function(){return(I8=c._Step=c.asm.Ra).apply(null,arguments)},N8=c._StridedSlice=function(){return(N8=c._StridedSlice=c.asm.Sa).apply(null,arguments)},S8=c._Sub=function(){return(S8=c._Sub=c.asm.Ta).apply(null,arguments)},T8=c._Sum=function(){return(T8=c._Sum=c.asm.Ua).apply(null,arguments)},E8=c._Tanh=function(){return(E8=c._Tanh=c.asm.Va).apply(null,arguments)},C8=c._Tile=function(){return(C8=c._Tile=c.asm.Wa).apply(null,arguments)},R8=c._TopK=function(){return(R8=c._TopK=c.asm.Xa).apply(null,arguments)},F8=c._Transpose=function(){return(F8=c._Transpose=c.asm.Ya).apply(null,arguments)},M8=c.__FusedMatMul=function(){return(M8=c.__FusedMatMul=c.asm.Za).apply(null,arguments)},hs=c._malloc=function(){return(hs=c._malloc=c.asm._a).apply(null,arguments)},cu=c._free=function(){return(cu=c._free=c.asm.$a).apply(null,arguments)},D2=c.___errno_location=function(){return(D2=c.___errno_location=c.asm.ab).apply(null,arguments)},O2=c._emscripten_get_global_libc=function(){return(O2=c._emscripten_get_global_libc=c.asm.bb).apply(null,arguments)},Zi=c._pthread_self=function(){return(Zi=c._pthread_self=c.asm.cb).apply(null,arguments)},z2=c.___pthread_tsd_run_dtors=function(){return(z2=c.___pthread_tsd_run_dtors=c.asm.db).apply(null,arguments)},cf=c._emscripten_main_thread_process_queued_calls=function(){return(cf=c._emscripten_main_thread_process_queued_calls=c.asm.eb).apply(null,arguments)},$8=c._emscripten_current_thread_process_queued_calls=function(){return($8=c._emscripten_current_thread_process_queued_calls=c.asm.fb).apply(null,arguments)},P2=c._emscripten_register_main_browser_thread_id=function(){return(P2=c._emscripten_register_main_browser_thread_id=c.asm.gb).apply(null,arguments)},L2=c.__emscripten_do_dispatch_to_thread=function(){return(L2=c.__emscripten_do_dispatch_to_thread=c.asm.hb).apply(null,arguments)},W2=c._emscripten_sync_run_in_main_thread_4=function(){return(W2=c._emscripten_sync_run_in_main_thread_4=c.asm.ib).apply(null,arguments)},B2=c._emscripten_run_in_main_runtime_thread_js=function(){return(B2=c._emscripten_run_in_main_runtime_thread_js=c.asm.jb).apply(null,arguments)},hf=c.__emscripten_call_on_thread=function(){return(hf=c.__emscripten_call_on_thread=c.asm.kb).apply(null,arguments)},D8=c._emscripten_tls_init=function(){return(D8=c._emscripten_tls_init=c.asm.lb).apply(null,arguments)},Ih=c.__emscripten_thread_init=function(){return(Ih=c.__emscripten_thread_init=c.asm.mb).apply(null,arguments)},hu=c.stackSave=function(){return(hu=c.stackSave=c.asm.nb).apply(null,arguments)},Yi=c.stackRestore=function(){return(Yi=c.stackRestore=c.asm.ob).apply(null,arguments)},Ji=c.stackAlloc=function(){return(Ji=c.stackAlloc=c.asm.pb).apply(null,arguments)},V2=c._emscripten_stack_set_limits=function(){return(V2=c._emscripten_stack_set_limits=c.asm.qb).apply(null,arguments)},U2=c._memalign=function(){return(U2=c._memalign=c.asm.rb).apply(null,arguments)},H2=c.__emscripten_allow_main_runtime_queued_calls=9880,Qi=c.__emscripten_main_thread_futex=11368;c.cwrap=Oe,c.PThread=Te,c.PThread=Te,c.wasmMemory=Q,c.ExitStatus=du;var Nh;function du(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}us=function I(){Nh||df(),Nh||(us=I)};function df(I){if(I=I||m,na>0)return;if(x){h(c),postMessage({cmd:"loaded"});return}if(Y0(),na>0)return;function E(){Nh||(Nh=!0,c.calledRun=!0,!le&&(sh(),J0(),h(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),vn()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),E()},1)):E()}c.run=df;function O8(I,E){if(!(E&&oe&&I===0)){if(!E&&x)throw postMessage({cmd:"exitProcess",returnCode:I}),new du(I);oe||(Te.terminateAllThreads(),Ae=I,ih(),c.onExit&&c.onExit(I),le=!0),y(I,new du(I))}}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return x&&(oe=!1,Te.initWorker()),df(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),Ak=rt((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};var s=typeof a!="undefined"?a:{},i,o;s.ready=new Promise(function(K,re){i=K,o=re});var l={},u;for(u in s)s.hasOwnProperty(u)&&(l[u]=s[u]);var c=[],h="./this.program",d=function(K,re){throw re},p=!1,f=!1,m=!1,A=!1;p=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A=!p&&!m&&!f;var y="";function g(K){return s.locateFile?s.locateFile(K,y):y+K}var b,_,w,x,N,S;m?(f?y=pu().dirname(y)+"/":y=__dirname+"/",b=function(K,re){return N||(N=require("fs")),S||(S=pu()),K=S.normalize(K),N.readFileSync(K,re?null:"utf8")},w=function(K){var re=b(K,!0);return re.buffer||(re=new Uint8Array(re)),X(re.buffer),re},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(K){if(!(K instanceof uf))throw K}),process.on("unhandledRejection",gr),d=function(K){process.exit(K)},s.inspect=function(){return"[Emscripten Module object]"}):A?(typeof read!="undefined"&&(b=function(K){return read(K)}),w=function(K){var re;return typeof readbuffer=="function"?new Uint8Array(readbuffer(K)):(re=read(K,"binary"),X(typeof re=="object"),re)},typeof scriptArgs!="undefined"?c=scriptArgs:typeof arguments!="undefined"&&(c=arguments),typeof quit=="function"&&(d=function(K){quit(K)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",b=function(K){var re=new XMLHttpRequest;return re.open("GET",K,!1),re.send(null),re.responseText},f&&(w=function(K){var re=new XMLHttpRequest;return re.open("GET",K,!1),re.responseType="arraybuffer",re.send(null),new Uint8Array(re.response)}),_=function(K,re,Ce){var et=new XMLHttpRequest;et.open("GET",K,!0),et.responseType="arraybuffer",et.onload=function(){if(et.status==200||et.status==0&&et.response){re(et.response);return}Ce()},et.onerror=Ce,et.send(null)},x=function(K){document.title=K});var T=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in l)l.hasOwnProperty(u)&&(s[u]=l[u]);l=null,s.arguments&&(c=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(d=s.quit);var D;s.wasmBinary&&(D=s.wasmBinary);var z=s.noExitRuntime||!0;typeof WebAssembly!="object"&&gr("no native wasm support detected");var W,U=!1,H;function X(K,re){K||gr("Assertion failed: "+re)}function j(K){var re=s["_"+K];return X(re,"Cannot call unknown function "+K+", make sure it is exported"),re}function ee(K,re,Ce,et,Ct){var xt={string:function(Zn){var Sa=0;if(Zn!=null&&Zn!==0){var kh=(Zn.length<<2)+1;Sa=ou(kh),pe(Zn,Sa,kh)}return Sa},array:function(Zn){var Sa=ou(Zn.length);return le(Zn,Sa),Sa}};function je(Zn){return re==="string"?oe(Zn):re==="boolean"?Boolean(Zn):Zn}var Xe=j(K),rn=[],aa=0;if(et)for(var sa=0;sa=et);)++Ct;if(Ct-re>16&&K.subarray&&se)return se.decode(K.subarray(re,Ct));for(var xt="";re>10,56320|aa&1023)}}return xt}function oe(K,re){return K?te(Ee,K,re):""}function Q(K,re,Ce,et){if(!(et>0))return 0;for(var Ct=Ce,xt=Ce+et-1,je=0;je=55296&&Xe<=57343){var rn=K.charCodeAt(++je);Xe=65536+((Xe&1023)<<10)|rn&1023}if(Xe<=127){if(Ce>=xt)break;re[Ce++]=Xe}else if(Xe<=2047){if(Ce+1>=xt)break;re[Ce++]=192|Xe>>6,re[Ce++]=128|Xe&63}else if(Xe<=65535){if(Ce+2>=xt)break;re[Ce++]=224|Xe>>12,re[Ce++]=128|Xe>>6&63,re[Ce++]=128|Xe&63}else{if(Ce+3>=xt)break;re[Ce++]=240|Xe>>18,re[Ce++]=128|Xe>>12&63,re[Ce++]=128|Xe>>6&63,re[Ce++]=128|Xe&63}}return re[Ce]=0,Ce-Ct}function pe(K,re,Ce){return Q(K,Ee,re,Ce)}function le(K,re){Se.set(K,re)}function Ae(K,re){return K%re>0&&(K+=re-K%re),K}var me,Se,Ee,Oe,Le,ze,at,st,ct;function Qe(K){me=K,s.HEAP8=Se=new Int8Array(K),s.HEAP16=Oe=new Int16Array(K),s.HEAP32=ze=new Int32Array(K),s.HEAPU8=Ee=new Uint8Array(K),s.HEAPU16=Le=new Uint16Array(K),s.HEAPU32=at=new Uint32Array(K),s.HEAPF32=st=new Float32Array(K),s.HEAPF64=ct=new Float64Array(K)}var At=s.INITIAL_MEMORY||16777216,He,bn=[],It=[],Xn=[],tn=[],_n=!1;It.push({func:function(){hh()}});function Kn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)$r(s.preRun.shift());ka(bn)}function Dn(){_n=!0,ka(It)}function pn(){ka(Xn)}function nn(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)ar(s.postRun.shift());ka(tn)}function $r(K){bn.unshift(K)}function ar(K){tn.unshift(K)}var sr=0,_a=null,ta=null;function va(K){sr++,s.monitorRunDependencies&&s.monitorRunDependencies(sr)}function Hi(K){if(sr--,s.monitorRunDependencies&&s.monitorRunDependencies(sr),sr==0&&(_a!==null&&(clearInterval(_a),_a=null),ta)){var re=ta;ta=null,re()}}s.preloadedImages={},s.preloadedAudios={};function gr(K){s.onAbort&&s.onAbort(K),K+="",M(K),U=!0,H=1,K="abort("+K+"). Build with -s ASSERTIONS=1 for more info.";var re=new WebAssembly.RuntimeError(K);throw o(re),re}function ah(K,re){return String.prototype.startsWith?K.startsWith(re):K.indexOf(re)===0}var Y0="data:application/octet-stream;base64,";function sh(K){return ah(K,Y0)}var J0="file://";function ih(K){return ah(K,J0)}var vn="tfjs-backend-wasm.wasm";sh(vn)||(vn=g(vn));function oh(K){try{if(K==vn&&D)return new Uint8Array(D);if(w)return w(K);throw"both async and sync fetching of the wasm failed"}catch(re){gr(re)}}function Q0(){if(!D&&(p||f)){if(typeof fetch=="function"&&!ih(vn))return fetch(vn,{credentials:"same-origin"}).then(function(K){if(!K.ok)throw"failed to load wasm binary file at '"+vn+"'";return K.arrayBuffer()}).catch(function(){return oh(vn)});if(_)return new Promise(function(K,re){_(vn,function(Ce){K(new Uint8Array(Ce))},re)})}return Promise.resolve().then(function(){return oh(vn)})}function na(){var K={a:kn};function re(je,Xe){var rn=je.exports;s.asm=rn,W=s.asm.g,Qe(W.buffer),He=s.asm.m,Hi("wasm-instantiate")}va("wasm-instantiate");function Ce(je){re(je.instance)}function et(je){return Q0().then(function(Xe){return WebAssembly.instantiate(Xe,K)}).then(je,function(Xe){M("failed to asynchronously prepare wasm: "+Xe),gr(Xe)})}function Ct(){return!D&&typeof WebAssembly.instantiateStreaming=="function"&&!sh(vn)&&!ih(vn)&&typeof fetch=="function"?fetch(vn,{credentials:"same-origin"}).then(function(je){var Xe=WebAssembly.instantiateStreaming(je,K);return Xe.then(Ce,function(rn){return M("wasm streaming compile failed: "+rn),M("falling back to ArrayBuffer instantiation"),et(Ce)})}):et(Ce)}if(s.instantiateWasm)try{var xt=s.instantiateWasm(K,re);return xt}catch(je){return M("Module.instantiateWasm callback failed with error: "+je),!1}return Ct().catch(o),{}}function ka(K){for(;K.length>0;){var re=K.shift();if(typeof re=="function"){re(s);continue}var Ce=re.func;typeof Ce=="number"?re.arg===void 0?He.get(Ce)():He.get(Ce)(re.arg):Ce(re.arg===void 0?null:re.arg)}}function us(){gr()}function e1(K,re,Ce){Ee.copyWithin(K,re,re+Ce)}function t1(){return Ee.length}function ra(K){try{return W.grow(K-me.byteLength+65535>>>16),Qe(W.buffer),1}catch(re){}}function lh(K){var re=t1(),Ce=2147483648;if(K>Ce)return!1;for(var et=1;et<=4;et*=2){var Ct=re*(1+.2/et);Ct=Math.min(Ct,K+100663296);var xt=Math.min(Ce,Ae(Math.max(K,Ct),65536)),je=ra(xt);if(je)return!0}return!1}var ji={mappings:{},buffers:[null,[],[]],printChar:function(K,re){var Ce=ji.buffers[K];re===0||re===10?((K===1?T:M)(te(Ce,0)),Ce.length=0):Ce.push(re)},varargs:void 0,get:function(){ji.varargs+=4;var K=ze[ji.varargs-4>>2];return K},getStr:function(K){var re=oe(K);return re},get64:function(K,re){return K}};function uh(K){return 0}function n1(K,re,Ce,et,Ct){}function ch(K,re,Ce,et){for(var Ct=0,xt=0;xt>2],Xe=ze[re+(xt*8+4)>>2],rn=0;rn>2]=Ct,0}var kn={a:us,d:e1,e:lh,f:uh,c:n1,b:ch},r1=na(),hh=s.___wasm_call_ctors=function(){return(hh=s.___wasm_call_ctors=s.asm.h).apply(null,arguments)},a1=s._init=function(){return(a1=s._init=s.asm.i).apply(null,arguments)},dh=s._register_tensor=function(){return(dh=s._register_tensor=s.asm.j).apply(null,arguments)},s1=s._dispose_data=function(){return(s1=s._dispose_data=s.asm.k).apply(null,arguments)},Gi=s._dispose=function(){return(Gi=s._dispose=s.asm.l).apply(null,arguments)},qi=s._Abs=function(){return(qi=s._Abs=s.asm.n).apply(null,arguments)},i1=s._Add=function(){return(i1=s._Add=s.asm.o).apply(null,arguments)},o1=s._AddN=function(){return(o1=s._AddN=s.asm.p).apply(null,arguments)},l1=s._ArgMax=function(){return(l1=s._ArgMax=s.asm.q).apply(null,arguments)},Te=s._AvgPool=function(){return(Te=s._AvgPool=s.asm.r).apply(null,arguments)},u1=s._BatchMatMul=function(){return(u1=s._BatchMatMul=s.asm.s).apply(null,arguments)},c1=s._Ceil=function(){return(c1=s._Ceil=s.asm.t).apply(null,arguments)},h1=s._ClipByValue=function(){return(h1=s._ClipByValue=s.asm.u).apply(null,arguments)},d1=s._Conv2D=function(){return(d1=s._Conv2D=s.asm.v).apply(null,arguments)},p1=s._Conv2DBackpropInput=function(){return(p1=s._Conv2DBackpropInput=s.asm.w).apply(null,arguments)},cs=s._Cos=function(){return(cs=s._Cos=s.asm.x).apply(null,arguments)},f1=s._CropAndResize=function(){return(f1=s._CropAndResize=s.asm.y).apply(null,arguments)},m1=s._Cumsum=function(){return(m1=s._Cumsum=s.asm.z).apply(null,arguments)},A1=s._DepthToSpace=function(){return(A1=s._DepthToSpace=s.asm.A).apply(null,arguments)},y1=s._DepthwiseConv2dNative=function(){return(y1=s._DepthwiseConv2dNative=s.asm.B).apply(null,arguments)},g1=s._Equal=function(){return(g1=s._Equal=s.asm.C).apply(null,arguments)},x1=s._Exp=function(){return(x1=s._Exp=s.asm.D).apply(null,arguments)},w1=s._FlipLeftRight=function(){return(w1=s._FlipLeftRight=s.asm.E).apply(null,arguments)},b1=s._Floor=function(){return(b1=s._Floor=s.asm.F).apply(null,arguments)},_1=s._FloorDiv=function(){return(_1=s._FloorDiv=s.asm.G).apply(null,arguments)},Ia=s._FusedBatchNorm=function(){return(Ia=s._FusedBatchNorm=s.asm.H).apply(null,arguments)},au=s._FusedConv2D=function(){return(au=s._FusedConv2D=s.asm.I).apply(null,arguments)},su=s._FusedDepthwiseConv2D=function(){return(su=s._FusedDepthwiseConv2D=s.asm.J).apply(null,arguments)},v1=s._Gather=function(){return(v1=s._Gather=s.asm.K).apply(null,arguments)},k1=s._GatherNd=function(){return(k1=s._GatherNd=s.asm.L).apply(null,arguments)},I1=s._Greater=function(){return(I1=s._Greater=s.asm.M).apply(null,arguments)},N1=s._GreaterEqual=function(){return(N1=s._GreaterEqual=s.asm.N).apply(null,arguments)},S1=s._LeakyRelu=function(){return(S1=s._LeakyRelu=s.asm.O).apply(null,arguments)},Ve=s._Less=function(){return(Ve=s._Less=s.asm.P).apply(null,arguments)},T1=s._LessEqual=function(){return(T1=s._LessEqual=s.asm.Q).apply(null,arguments)},E1=s._Log=function(){return(E1=s._Log=s.asm.R).apply(null,arguments)},C1=s._LogicalAnd=function(){return(C1=s._LogicalAnd=s.asm.S).apply(null,arguments)},R1=s._Max=function(){return(R1=s._Max=s.asm.T).apply(null,arguments)},F1=s._MaxPool=function(){return(F1=s._MaxPool=s.asm.U).apply(null,arguments)},M1=s._Maximum=function(){return(M1=s._Maximum=s.asm.V).apply(null,arguments)},iu=s._Mean=function(){return(iu=s._Mean=s.asm.W).apply(null,arguments)},ph=s._Min=function(){return(ph=s._Min=s.asm.X).apply(null,arguments)},fh=s._Minimum=function(){return(fh=s._Minimum=s.asm.Y).apply(null,arguments)},$1=s._Multiply=function(){return($1=s._Multiply=s.asm.Z).apply(null,arguments)},D1=s._Neg=function(){return(D1=s._Neg=s.asm._).apply(null,arguments)},O1=s._NonMaxSuppressionV3=function(){return(O1=s._NonMaxSuppressionV3=s.asm.$).apply(null,arguments)},z1=s._NonMaxSuppressionV4=function(){return(z1=s._NonMaxSuppressionV4=s.asm.aa).apply(null,arguments)},P1=s._NonMaxSuppressionV5=function(){return(P1=s._NonMaxSuppressionV5=s.asm.ba).apply(null,arguments)},L1=s._NotEqual=function(){return(L1=s._NotEqual=s.asm.ca).apply(null,arguments)},W1=s._OneHot=function(){return(W1=s._OneHot=s.asm.da).apply(null,arguments)},nt=s._PadV2=function(){return(nt=s._PadV2=s.asm.ea).apply(null,arguments)},B1=s._Pow=function(){return(B1=s._Pow=s.asm.fa).apply(null,arguments)},V1=s._Prelu=function(){return(V1=s._Prelu=s.asm.ga).apply(null,arguments)},U1=s._Prod=function(){return(U1=s._Prod=s.asm.ha).apply(null,arguments)},Xi=s._RealDiv=function(){return(Xi=s._RealDiv=s.asm.ia).apply(null,arguments)},mh=s._Relu=function(){return(mh=s._Relu=s.asm.ja).apply(null,arguments)},Ah=s._Relu6=function(){return(Ah=s._Relu6=s.asm.ka).apply(null,arguments)},yh=s._ResizeBilinear=function(){return(yh=s._ResizeBilinear=s.asm.la).apply(null,arguments)},H1=s._Reverse=function(){return(H1=s._Reverse=s.asm.ma).apply(null,arguments)},j1=s._RotateWithOffset=function(){return(j1=s._RotateWithOffset=s.asm.na).apply(null,arguments)},gh=s._Round=function(){return(gh=s._Round=s.asm.oa).apply(null,arguments)},G1=s._Rsqrt=function(){return(G1=s._Rsqrt=s.asm.pa).apply(null,arguments)},xh=s._ScatterNd=function(){return(xh=s._ScatterNd=s.asm.qa).apply(null,arguments)},Na=s._SelectV2=function(){return(Na=s._SelectV2=s.asm.ra).apply(null,arguments)},q1=s._Sigmoid=function(){return(q1=s._Sigmoid=s.asm.sa).apply(null,arguments)},X1=s._Sin=function(){return(X1=s._Sin=s.asm.ta).apply(null,arguments)},$2=s._Softmax=function(){return($2=s._Softmax=s.asm.ua).apply(null,arguments)},wh=s._Sqrt=function(){return(wh=s._Sqrt=s.asm.va).apply(null,arguments)},K1=s._Square=function(){return(K1=s._Square=s.asm.wa).apply(null,arguments)},Z1=s._SquaredDifference=function(){return(Z1=s._SquaredDifference=s.asm.xa).apply(null,arguments)},Y1=s._Step=function(){return(Y1=s._Step=s.asm.ya).apply(null,arguments)},J1=s._StridedSlice=function(){return(J1=s._StridedSlice=s.asm.za).apply(null,arguments)},Q1=s._Sub=function(){return(Q1=s._Sub=s.asm.Aa).apply(null,arguments)},ef=s._Sum=function(){return(ef=s._Sum=s.asm.Ba).apply(null,arguments)},tf=s._Tanh=function(){return(tf=s._Tanh=s.asm.Ca).apply(null,arguments)},nf=s._Tile=function(){return(nf=s._Tile=s.asm.Da).apply(null,arguments)},rf=s._TopK=function(){return(rf=s._TopK=s.asm.Ea).apply(null,arguments)},af=s._Transpose=function(){return(af=s._Transpose=s.asm.Fa).apply(null,arguments)},sf=s.__FusedMatMul=function(){return(sf=s.__FusedMatMul=s.asm.Ga).apply(null,arguments)},of=s._malloc=function(){return(of=s._malloc=s.asm.Ha).apply(null,arguments)},lf=s._free=function(){return(lf=s._free=s.asm.Ia).apply(null,arguments)},bh=s.stackSave=function(){return(bh=s.stackSave=s.asm.Ja).apply(null,arguments)},_h=s.stackRestore=function(){return(_h=s.stackRestore=s.asm.Ka).apply(null,arguments)},ou=s.stackAlloc=function(){return(ou=s.stackAlloc=s.asm.La).apply(null,arguments)};s.cwrap=Y;var Ki;function uf(K){this.name="ExitStatus",this.message="Program terminated with exit("+K+")",this.status=K}ta=function K(){Ki||lu(),Ki||(ta=K)};function lu(K){if(K=K||c,sr>0||(Kn(),sr>0))return;function re(){Ki||(Ki=!0,s.calledRun=!0,!U&&(Dn(),pn(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),nn()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),re()},1)):re()}if(s.run=lu,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return lu(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),yk=rt((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),gk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),xk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),wk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),bk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],b=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,b=Math.max(b,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),_k=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),vk=rt((e,t)=>{(function(n,r){var a=(0,eval)("this"),s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,N){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,_(n)]:w==null?b():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(_(M.S),n),(x.pass||N||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,N=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(N||(w=[N++]);T{var n=yk(),r=gk(),a=xk(),s=wk(),i=bk(),o=_k(),l=vk();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),kk=rt(()=>{}),Ik="3.3.0",Nk="3.3.0",Sk="3.3.0",Tk="3.3.0",Ek="3.3.0",Ck=1e-7,Rk=1e-4,Rh=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},fu=class{refCount(e){return ir("refCount")}incRef(e){return ir("incRef")}timerAvailable(){return!0}time(e){return ir("time")}read(e){return ir("read")}readSync(e){return ir("readSync")}numDataIds(){return ir("numDataIds")}disposeData(e,t){return ir("disposeData")}write(e,t,n){return ir("write")}move(e,t,n,r,a){return ir("move")}memory(){return ir("memory")}floatPrecision(){return ir("floatPrecision")}epsilon(){return this.floatPrecision()===32?Ck:Rk}dispose(){return ir("dispose")}};function ir(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function Z2(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function Fk(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r,a,s=0;for(;n>0;)s=Math.random()*n|0,n--,r=e[n],a=t[n],e[n]=e[s],t[n]=t[s],e[s]=r,t[s]=a}function mu(e,t,n){return Math.max(e,Math.min(t,n))}function Mk(e){return e%2==0?e:e+1}function $k(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ds(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function ps(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||cn(e)&&!n)for(let r=0;r0,n){return new Promise((r,a)=>{let s=0,i=()=>{if(e()){r();return}s++;let o=t(s);if(n!=null&&s>=n){a();return}setTimeout(i,o)};i()})}function Vk(e,t){let n=1,r=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let a=e.slice();return a[r]=t/n,a}function or(e,t){let n=t.length;return e=e==null?t.map((r,a)=>a):[].concat(e),F(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(r=>Kt(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function Y2(e,t){let n=[],r=[],a=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||a?null:or(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),r.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),r.push(o))}return{newShape:n,keptDims:r}}function J2(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Q2(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function e5(e,t){for(let n=0;nt+=n.length),t}function Ea(e){return typeof e=="string"||e instanceof String}function r5(e){return typeof e=="boolean"}function a5(e){return typeof e=="number"}function Fh(e){return Array.isArray(e)?Fh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":a5(e)?"float32":Ea(e)?"string":r5(e)?"bool":"float32"}function Ca(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Mh(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function s5(e,t,n){let r=new Array;if(t.length===1){let a=t[0];for(let s=0;so*l);for(let o=0;or*a);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return s5(0,e,t)}function Af(e,t){let n=$h(e,t);for(let r=0;rr*a,1);if(t==null||t==="float32")return ao(e,new Float32Array(n));if(t==="int32")return ao(e,new Int32Array(n));if(t==="bool")return ao(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function yf(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function jk(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let a=0;a{let[n,r]=t.split(":");this.urlFlags[n]=Xk(n,r)})}};function qk(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(Kk(t,r[0],r[1]),r.join("="))),t}function Kk(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function Xk(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return wr}var wr=null;function Zk(e){wr=e}var xf;function l5(){if(xf==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");xf=e}return xf}function Yk(){let e=l5();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function wf(e,t){let n=Yk();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var so="Abs",io="Acos",oo="Acosh",Ra="Add",fs="AddN",Dh="All",Oh="Any",ms="ArgMax",yu="ArgMin",lo="Asin",uo="Asinh",co="Atan",ho="Atanh",po="Atan2",As="AvgPool",zh="AvgPoolGrad",gu="AvgPool3D",Ph="AvgPool3DGrad",ys="BatchMatMul",xu="BatchToSpaceND",Lh="Bincount",u5="BroadcastTo",gs="Cast",xs="Ceil",Fa="ClipByValue",Wh="Complex",wu="ComplexAbs",fo="Concat",ws="Conv2D",Bh="Conv2DBackpropFilter",bs="Conv2DBackpropInput",bu="Conv3D",Vh="Conv3DBackpropFilterV2",Uh="Conv3DBackpropInputV2",_s="Cos",mo="Cosh",vs="Cumsum",Ao="CropAndResize",Hh="DenseBincount",yo="DepthToSpace",ks="DepthwiseConv2dNative",jh="DepthwiseConv2dNativeBackpropFilter",Gh="DepthwiseConv2dNativeBackpropInput",qh="Diag",_u="Dilation2D",Xh="Dilation2DBackpropInput",Kh="Dilation2DBackpropFilter",Is="RealDiv",go="Elu",Zh="EluGrad",xo="Erf",wo="Equal",Ns="Exp",bo="ExpandDims",_o="Expm1",Yh="FFT",vu="Fill",vo="FlipLeftRight",Ss="Floor",Ts="FloorDiv",Es="FusedBatchNorm",ko="GatherV2",Io="GatherNd",No="Greater",Cs="GreaterEqual",Rs="Identity",Jh="IFFT",Qh="Imag",So="IsFinite",To="IsInf",Eo="IsNan",Fs="LeakyRelu",Co="Less",Ro="LessEqual",ed="LinSpace",Ms="Log",Fo="Log1p",Mo="LogicalAnd",ku="LogicalNot",Iu="LogicalOr",c5="LogSoftmax",Nu="LRN",td="LRNGrad",$s="Max",Ds="Maximum",Os="MaxPool",nd="MaxPoolGrad",Su="MaxPool3D",rd="MaxPool3DGrad",ad="MaxPoolWithArgmax",zs="Mean",Ps="Min",Ls="Minimum",Tu="MirrorPad",$o="Mod",sd="Multinomial",Ws="Multiply",Do="Neg",Oo="NotEqual",zo="NonMaxSuppressionV3",Po="NonMaxSuppressionV4",Lo="NonMaxSuppressionV5",Wo="OnesLike",Bs="OneHot",Bo="Pack",Vs="PadV2",Jk="Pool",Us="Pow",Hs="Prelu",Vo="Prod",Eu="Range",id="Real",Uo="Reciprocal",js="Relu",Ho="Reshape",Cu="ResizeNearestNeighbor",od="ResizeNearestNeighborGrad",Gs="ResizeBilinear",ld="ResizeBilinearGrad",qs="Relu6",Xs="Reverse",Ks="Round",Zs="Rsqrt",jo="ScatterNd",Go="Select",qo="Selu",Xo="Slice",Ys="Sin",Ko="Sinh",Zo="Sign",Js="Sigmoid",Yo="Softplus",Qs="Sqrt",ei="Sum",Ru="SpaceToBatchND",Jo="SplitV",ti="Softmax",ni="SquaredDifference",Fu="Square",ri="Sub",ud="SparseToDense",Qo="StridedSlice",el="Tan",ai="Tanh",Ma="Tile",tl="TopK",cd="Transform",si="Transpose",hd="Unique",nl="Unpack",Mu="UnsortedSegmentSum",rl="ZerosLike",$a="Step",dd="FromPixels",al="RotateWithOffset",ii="_FusedMatMul",oi="FusedConv2D",li="FusedDepthwiseConv2D",sl=wf("kernelRegistry",()=>new Map),$u=wf("gradRegistry",()=>new Map);function pd(e,t){let n=bf(e,t);return sl.get(n)}function _f(e){return $u.get(e)}function il(e){let t=sl.entries(),n=[];for(;;){let{done:r,value:a}=t.next();if(r)break;let[s,i]=a,[o]=s.split("_");o===e&&n.push(i)}return n}function ui(e){let{kernelName:t,backendName:n}=e,r=bf(t,n);sl.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),sl.set(r,e)}function h5(e){let{kernelName:t}=e;$u.has(t)&&J().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),$u.set(t,e)}function Qk(e,t){let n=bf(e,t);if(!sl.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);sl.delete(n)}function e9(e){if(!$u.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);$u.delete(e)}function t9(e,t){il(e).forEach(n=>{let r=Object.assign({},n,{backendName:t});ui(r)})}function bf(e,t){return`${t}_${e}`}var v={};We(v,{arraysEqual:()=>oa,assert:()=>F,assertNonNegativeIntegerDimensions:()=>yf,assertNonNull:()=>ds,assertShapesMatch:()=>un,bytesFromStringArray:()=>n5,bytesPerElement:()=>mf,checkConversionForErrors:()=>e5,clamp:()=>mu,computeStrides:()=>ro,createScalarValue:()=>n9,createShuffledIndices:()=>Wk,decodeString:()=>md,distSquared:()=>Ok,encodeString:()=>Ou,fetch:()=>r9,flatten:()=>ps,getArrayFromDType:()=>Q2,getTypedArrayFromDType:()=>J2,hasEncodingLoss:()=>Uk,indexToLoc:()=>Gk,inferDtype:()=>Fh,inferFromImplicitShape:()=>Vk,isBoolean:()=>r5,isFunction:()=>Ca,isInt:()=>Kt,isNumber:()=>a5,isPromise:()=>gf,isScalarShape:()=>zk,isString:()=>Ea,isTypedArray:()=>cn,isValidDtype:()=>t5,locToIndex:()=>jk,makeOnesTypedArray:()=>Af,makeZerosNestedTypedArray:()=>Hk,makeZerosTypedArray:()=>$h,nearestDivisor:()=>Mh,nearestLargerEven:()=>Mk,now:()=>Du,parseAxisParam:()=>or,randUniform:()=>Dk,repeatedTry:()=>Bk,rightPad:()=>Au,shuffle:()=>Z2,shuffleCombo:()=>Fk,sizeFromShape:()=>Lt,sizeToSquarishShape:()=>Lk,squeezeShape:()=>Y2,sum:()=>$k,tanh:()=>Pk,toNestedArray:()=>ao,toTypedArray:()=>fd});function n9(e,t){return t==="string"?Ou(e):fd([e],t)}function a9(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function fd(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=ps(e)),J().getBool("DEBUG")&&e5(e,t),a9(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},s,i=Du();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(let o of r)o.dataSync();s=Promise.resolve({kernelMs:Du()-i})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{s9(u,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),r,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],a,o[2])})})}};function s9(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${c} %c${u} %c${h} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function l9(e,t,n){let r={},a={};for(let l=0;lr[m.id]=!0),p=!0,a[u.id]=!0;break}if(p)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let h=0;h=0;a--){let s=t[a],i=[];if(s.outputs.forEach(l=>{let u=e[l.id];u!=null?i.push(u):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let u=n(()=>o[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[l];if(!oa(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let h=e[c.id];e[c.id]=r(h,u),h.dispose()}}}}var d5=20,zu=3,vf=7;function h9(e,t,n,r){let a=ro(t),s=c9(e,t,n,a),i=t.length,o=Ad(e,t,n,a,s),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(u=>" "+u).join(` +var P8=Object.create,Sh=Object.defineProperty,L8=Object.getPrototypeOf,W8=Object.prototype.hasOwnProperty,B8=Object.getOwnPropertyNames,V8=Object.getOwnPropertyDescriptor;var pf=e=>Sh(e,"__esModule",{value:!0});var q2=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),xr=(e,t)=>{for(var n in t)Sh(e,n,{get:t[n],enumerable:!0})},U8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of B8(t))!W8.call(e,r)&&r!=="default"&&Sh(e,r,{get:()=>t[r],enumerable:!(n=V8(t,r))||n.enumerable});return e},Th=e=>U8(pf(Sh(e!=null?P8(L8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var X2=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},Ne=(e,t,n)=>(X2(e,t,"read from private field"),n?n.call(e):t.get(e)),ia=(e,t,n,r)=>(X2(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var P6=q2(z6=>{pf(z6);xr(z6,{MediaPipeFaceMesh:()=>zg,load:()=>Jae});var zg=class{constructor(t,n,r,a){this.facePipeline=new Og(t,n,r),this.config=a}async estimateFaces(t,n){let r=await this.facePipeline.predict(t,n),a=[];for(let s of r||[]){if(s.isDisposedInternal)continue;let i=s.coords?s.coords.arraySync():[],o=i.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),l={};if(i&&i.length>0)for(let h of Object.keys(Jr))l[h]=Jr[h].map(d=>i[d]);let u=s.box?[Math.max(0,s.box.startPoint[0]),Math.max(0,s.box.startPoint[1]),Math.min(t.shape[1],s.box.endPoint[0])-s.box.startPoint[0],Math.min(t.shape[2],s.box.endPoint[1])-s.box.startPoint[1]]:0,c=s.box?[Math.max(0,s.box.startPoint[0]/t.shape[2]),Math.max(0,s.box.startPoint[1]/t.shape[1]),Math.min(t.shape[1],s.box.endPoint[0]-s.box.startPoint[0])/t.shape[2],Math.min(t.shape[2],s.box.endPoint[1]-s.box.startPoint[1])/t.shape[1]]:[];a.push({confidence:s.faceConfidence||s.boxConfidence||0,boxConfidence:s.boxConfidence,faceConfidence:s.faceConfidence,box:u,mesh:i,boxRaw:c,meshRaw:o,annotations:l,image:s.image?s.image.clone():null}),s.coords&&s.coords.dispose(),s.image&&s.image.dispose()}return a}},Wi=[null,null,null];async function Jae(e){Wi=await Promise.all([!Wi[0]&&e.face.enabled?C6(e):null,!Wi[1]&&e.face.mesh.enabled?Ot(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!Wi[2]&&e.face.iris.enabled?Ot(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new zg(Wi[0],Wi[1],Wi[2],e);return e.face.mesh.enabled&&e.debug&&Fe(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&Fe(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}z6.triangulation=Li});var C0=q2(i2=>{pf(i2);xr(i2,{NUM_KEYPOINTS:()=>rse,connectedPartIndices:()=>sse,partChannels:()=>ose,partIds:()=>o2,partNames:()=>nse,poseChain:()=>ise});var nse=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],rse=i2.partNames.length,o2=i2.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),ase=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],sse=ase.map(([e,t])=>[o2[e],o2[t]]),ise=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],ose=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function Fe(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function K2(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var Eh={};xr(Eh,{Abs:()=>so,Acos:()=>io,Acosh:()=>oo,AdadeltaOptimizer:()=>tp,AdagradOptimizer:()=>np,AdamOptimizer:()=>rp,AdamaxOptimizer:()=>ap,Add:()=>Ra,AddN:()=>fs,All:()=>Dh,Any:()=>Oh,ArgMax:()=>ms,ArgMin:()=>yu,Asin:()=>lo,Asinh:()=>uo,Atan:()=>co,Atan2:()=>po,Atanh:()=>ho,AvgPool:()=>As,AvgPool3D:()=>gu,AvgPool3DGrad:()=>Ph,AvgPoolGrad:()=>zh,BackendWasm:()=>O3,BatchMatMul:()=>ys,BatchToSpaceND:()=>xu,Bincount:()=>Lh,BroadcastTo:()=>c5,Callback:()=>Sv,CallbackList:()=>I7,Cast:()=>gs,Ceil:()=>xs,ClipByValue:()=>Fa,Complex:()=>Wh,ComplexAbs:()=>wu,Concat:()=>fo,Conv2D:()=>ws,Conv2DBackpropFilter:()=>Bh,Conv2DBackpropInput:()=>bs,Conv3D:()=>bu,Conv3DBackpropFilterV2:()=>Vh,Conv3DBackpropInputV2:()=>Uh,Cos:()=>_s,Cosh:()=>mo,CropAndResize:()=>Ao,Cumsum:()=>vs,CustomCallback:()=>S7,DataStorage:()=>Rh,DenseBincount:()=>Hh,DepthToSpace:()=>yo,DepthwiseConv2dNative:()=>ks,DepthwiseConv2dNativeBackpropFilter:()=>jh,DepthwiseConv2dNativeBackpropInput:()=>Gh,Diag:()=>qh,Dilation2D:()=>_u,Dilation2DBackpropFilter:()=>Kh,Dilation2DBackpropInput:()=>Xh,ENV:()=>wr,EarlyStopping:()=>Ev,Elu:()=>go,EluGrad:()=>Zh,Environment:()=>l5,Equal:()=>wo,Erf:()=>xo,Exp:()=>Ns,ExpandDims:()=>bo,Expm1:()=>_o,FFT:()=>Yh,Fill:()=>vu,FlipLeftRight:()=>vo,Floor:()=>Ss,FloorDiv:()=>Ts,FromPixels:()=>dd,FusedBatchNorm:()=>Es,FusedConv2D:()=>oi,FusedDepthwiseConv2D:()=>li,GPGPUContext:()=>bp,GatherNd:()=>Io,GatherV2:()=>ko,GraphModel:()=>s6,Greater:()=>No,GreaterEqual:()=>Cs,History:()=>N7,IFFT:()=>Jh,Identity:()=>Rs,Imag:()=>Qh,InputSpec:()=>Qt,IsFinite:()=>So,IsInf:()=>To,IsNan:()=>Eo,KernelBackend:()=>fu,LRN:()=>Nu,LRNGrad:()=>td,LayerVariable:()=>w7,LayersModel:()=>ya,LeakyRelu:()=>Fs,Less:()=>Co,LessEqual:()=>Ro,LinSpace:()=>ed,Log:()=>Ms,Log1p:()=>Fo,LogSoftmax:()=>h5,LogicalAnd:()=>Mo,LogicalNot:()=>ku,LogicalOr:()=>Iu,MathBackendCPU:()=>lp,MathBackendWebGL:()=>Ll,Max:()=>$s,MaxPool:()=>Os,MaxPool3D:()=>Su,MaxPool3DGrad:()=>rd,MaxPoolGrad:()=>nd,MaxPoolWithArgmax:()=>ad,Maximum:()=>Ds,Mean:()=>zs,Min:()=>Ps,Minimum:()=>Ls,MirrorPad:()=>Tu,Mod:()=>$o,MomentumOptimizer:()=>sp,Multinomial:()=>sd,Multiply:()=>Ws,Neg:()=>Do,NonMaxSuppressionV3:()=>zo,NonMaxSuppressionV4:()=>Po,NonMaxSuppressionV5:()=>Lo,NotEqual:()=>Oo,OP_SCOPE_SUFFIX:()=>_5,OneHot:()=>Bs,OnesLike:()=>Wo,Optimizer:()=>pa,Pack:()=>Bo,PadV2:()=>Vs,Pool:()=>Qk,Pow:()=>Us,Prelu:()=>Hs,Prod:()=>Vo,RMSPropOptimizer:()=>ip,RNN:()=>Zr,Range:()=>Eu,Rank:()=>If,Real:()=>id,RealDiv:()=>Is,Reciprocal:()=>Uo,Reduction:()=>yn,Relu:()=>js,Relu6:()=>qs,Reshape:()=>Ho,ResizeBilinear:()=>Gs,ResizeBilinearGrad:()=>ld,ResizeNearestNeighbor:()=>Cu,ResizeNearestNeighborGrad:()=>od,Reverse:()=>Xs,RotateWithOffset:()=>al,Round:()=>Ks,Rsqrt:()=>Zs,SGDOptimizer:()=>uc,ScatterNd:()=>jo,Select:()=>Go,Selu:()=>qo,Sequential:()=>Kl,Sigmoid:()=>Js,Sign:()=>Zo,Sin:()=>Ys,Sinh:()=>Ko,Slice:()=>Xo,Softmax:()=>ti,Softplus:()=>Yo,SpaceToBatchND:()=>Ru,SparseToDense:()=>ud,SplitV:()=>Jo,Sqrt:()=>Qs,Square:()=>Fu,SquaredDifference:()=>ni,Step:()=>$a,StridedSlice:()=>Qo,Sub:()=>ri,Sum:()=>ei,SymbolicTensor:()=>Cr,Tan:()=>el,Tanh:()=>ai,Tensor:()=>Ge,TensorBuffer:()=>Wt,Tile:()=>Ma,TopK:()=>tl,Transform:()=>cd,Transpose:()=>si,Unique:()=>hd,Unpack:()=>nl,UnsortedSegmentSum:()=>Mu,Variable:()=>Wu,ZerosLike:()=>rl,_FusedMatMul:()=>ii,abs:()=>Bt,acos:()=>Yf,acosh:()=>Jf,add:()=>ie,addN:()=>La,all:()=>kd,any:()=>ju,argMax:()=>Gu,argMin:()=>Qf,asin:()=>em,asinh:()=>tm,atan:()=>nm,atan2:()=>rm,atanh:()=>am,avgPool:()=>Xu,avgPool3d:()=>om,backend:()=>rx,backend_util:()=>R,basicLSTMCell:()=>RN,batchNorm:()=>mi,batchNorm2d:()=>ox,batchNorm3d:()=>lx,batchNorm4d:()=>ux,batchToSpaceND:()=>Ku,bincount:()=>cx,booleanMaskAsync:()=>OE,broadcastTo:()=>Zu,browser:()=>dl,buffer:()=>Ue,callbacks:()=>nre,cast:()=>ge,ceil:()=>lm,clipByValue:()=>Sn,clone:()=>zr,complex:()=>Da,concat:()=>lt,concat1d:()=>hx,concat2d:()=>yl,concat3d:()=>dx,concat4d:()=>px,constraints:()=>q3,conv1d:()=>Nd,conv2d:()=>ua,conv2dTranspose:()=>Sd,conv3d:()=>cm,conv3dTranspose:()=>QN,copyRegisteredKernels:()=>n9,cos:()=>Yu,cosh:()=>Td,cosineWindow:()=>zm,cumsum:()=>Ed,customGrad:()=>Wr,data:()=>i6,denseBincount:()=>mx,deprecationWarn:()=>Kf,depthToSpace:()=>hm,depthwiseConv2d:()=>gl,deregisterOp:()=>are,device_util:()=>Vu,diag:()=>oS,dilation2d:()=>dm,disableDeprecationWarnings:()=>jI,dispose:()=>Me,disposeVariables:()=>GI,div:()=>be,divNoNan:()=>pm,dot:()=>Ax,dropout:()=>zx,elu:()=>xl,enableDebugMode:()=>HI,enableProdMode:()=>UI,enclosingPowerOfTwo:()=>Px,engine:()=>Pr,env:()=>J,equal:()=>Ba,erf:()=>fm,exp:()=>Jn,expandDims:()=>mn,expm1:()=>mm,eye:()=>Am,fft:()=>oc,fill:()=>Ju,findBackend:()=>Zf,findBackendFactory:()=>JI,floor:()=>wl,floorDiv:()=>vd,forceHalfFloat:()=>Kb,fused:()=>ja,gather:()=>Ai,gatherND:()=>Ox,gather_util:()=>Vf,getBackend:()=>ZI,getGradient:()=>_f,getKernel:()=>pd,getKernelsForBackend:()=>il,gpgpu_util:()=>xb,grad:()=>OS,grads:()=>zS,greater:()=>ur,greaterEqual:()=>Ua,ifft:()=>Il,imag:()=>Cd,image:()=>tt,inTopKAsync:()=>qE,initializers:()=>e7,input:()=>p7,io:()=>Nn,irfft:()=>Gd,isFinite:()=>yx,isInf:()=>gx,isNaN:()=>xx,keep:()=>Zt,kernel_impls:()=>Hr,layers:()=>d7,leakyRelu:()=>Qu,less:()=>Rd,lessEqual:()=>yi,linalg:()=>Zx,linspace:()=>wx,loadGraphModel:()=>Ot,loadLayersModel:()=>_ne,localResponseNormalization:()=>ym,log:()=>zn,log1p:()=>Fd,logSigmoid:()=>_x,logSoftmax:()=>$d,logSumExp:()=>wm,logicalAnd:()=>cr,logicalNot:()=>ec,logicalOr:()=>Dd,logicalXor:()=>Nx,losses:()=>cR,matMul:()=>Ke,math:()=>P5,max:()=>Qn,maxPool:()=>tc,maxPool3d:()=>bm,maxPoolWithArgmax:()=>Sx,maximum:()=>Br,mean:()=>Tt,memory:()=>_d,metrics:()=>kv,min:()=>_l,minimum:()=>vl,mirrorPad:()=>_m,mod:()=>vm,model:()=>wne,models:()=>Iv,moments:()=>Od,movingAverage:()=>LE,mul:()=>P,multiRNNCell:()=>dT,multinomial:()=>Tx,neg:()=>St,nextFrame:()=>op,norm:()=>Zd,notEqual:()=>xi,oneHot:()=>hl,ones:()=>Vr,onesLike:()=>Pn,op:()=>O,outerProduct:()=>yT,pad:()=>ca,pad1d:()=>wT,pad2d:()=>_T,pad3d:()=>kT,pad4d:()=>NT,pool:()=>Ex,pow:()=>ha,prelu:()=>rc,print:()=>F5,prod:()=>zd,profile:()=>kr,rand:()=>DT,randomGamma:()=>LT,randomNormal:()=>Cx,randomUniform:()=>kl,range:()=>Pd,ready:()=>KI,real:()=>ac,reciprocal:()=>Nm,registerBackend:()=>fl,registerCallbackConstructor:()=>vne,registerGradient:()=>d5,registerKernel:()=>ui,registerOp:()=>rre,regularizers:()=>Nv,relu:()=>Ur,relu6:()=>Ld,removeBackend:()=>YI,reshape:()=>G,reverse:()=>Ln,reverse1d:()=>XT,reverse2d:()=>ZT,reverse3d:()=>JT,reverse4d:()=>eE,rfft:()=>lc,round:()=>Sm,rsqrt:()=>Wd,scalar:()=>Ie,scatterND:()=>Dx,scatter_util:()=>Uf,selu:()=>Bd,separableConv2d:()=>Tm,sequential:()=>bne,serialization:()=>ae,setBackend:()=>XI,setPlatform:()=>QI,setWasmPath:()=>yY,setWasmPaths:()=>gY,setWebGLContext:()=>yp,setdiff1dAsync:()=>Rx,shared:()=>Bm,sigmoid:()=>On,sign:()=>Em,signal:()=>uR,sin:()=>Vd,sinh:()=>Ud,slice:()=>$e,slice1d:()=>Hd,slice2d:()=>Cm,slice3d:()=>jd,slice4d:()=>sc,slice_util:()=>fn,softmax:()=>ic,softplus:()=>bl,spaceToBatchND:()=>nc,sparseToDense:()=>Om,spectral:()=>lR,split:()=>Ut,sqrt:()=>an,square:()=>ht,squaredDifference:()=>qd,squeeze:()=>Ha,stack:()=>An,step:()=>Nl,stridedSlice:()=>Rm,sub:()=>we,sum:()=>Re,sumOutType:()=>yd,tan:()=>Fm,tanh:()=>Al,tensor:()=>vr,tensor1d:()=>hn,tensor2d:()=>En,tensor3d:()=>wd,tensor4d:()=>NE,tensor5d:()=>SE,tensor6d:()=>TE,tensor_util:()=>br,test_util:()=>ex,tidy:()=>B,tile:()=>Va,time:()=>qI,topk:()=>Mm,train:()=>bi,transpose:()=>ot,truncatedNormal:()=>Xd,unique:()=>Kd,unregisterGradient:()=>t9,unregisterKernel:()=>e9,unsortedSegmentSum:()=>$m,unstack:()=>hr,upcastType:()=>lr,util:()=>v,valueAndGrad:()=>PS,valueAndGrads:()=>LS,variable:()=>Fx,variableGrads:()=>bx,version:()=>Uae,version_converter:()=>rae,version_core:()=>VI,version_cpu:()=>Nw,version_layers:()=>iy,version_wasm:()=>P3,version_webgl:()=>Xb,webgl:()=>DL,webgl_util:()=>qw,where:()=>Tn,whereAsync:()=>Dm,zeros:()=>$t,zerosLike:()=>qe});var H8=Object.create,Ch=Object.defineProperty,j8=Object.getPrototypeOf,G8=Object.prototype.hasOwnProperty,q8=Object.getOwnPropertyNames,X8=Object.getOwnPropertyDescriptor,K8=e=>Ch(e,"__esModule",{value:!0}),rt=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),We=(e,t)=>{for(var n in t)Ch(e,n,{get:t[n],enumerable:!0})},Z8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of q8(t))!G8.call(e,r)&&r!=="default"&&Ch(e,r,{get:()=>t[r],enumerable:!(n=X8(t,r))||n.enumerable});return e},no=e=>Z8(K8(Ch(e!=null?H8(j8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),Y8=rt(()=>{}),J8=rt((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Q8=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ek=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),tk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),nk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],b=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,b=Math.max(b,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),rk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ff=rt(()=>{}),ak=rt((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,N){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,_(n)]:w==null?b():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(_(M.S),n),(x.pass||N||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,N=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(N||(w=[N++]);T{var n=J8(),r=Q8(),a=ek(),s=tk(),i=nk(),o=rk(),l=ak();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),ik=rt((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ok=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),lk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),uk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ck=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],b=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,b=Math.max(b,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),hk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),dk=rt((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,N){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,_(n)]:w==null?b():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(_(M.S),n),(x.pass||N||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,N=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(N||(w=[N++]);T{var n=ik(),r=ok(),a=lk(),s=uk(),i=ck(),o=hk(),l=dk();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),pu=rt(()=>{}),fk=rt(()=>{}),mk=rt(()=>{}),Ak=rt((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};function s(){return Q.buffer!=He&&nn(Q.buffer),bn}function i(){return Q.buffer!=He&&nn(Q.buffer),It}function o(){return Q.buffer!=He&&nn(Q.buffer),_n}function l(){return Q.buffer!=He&&nn(Q.buffer),Kn}function u(){return Q.buffer!=He&&nn(Q.buffer),pn}var c=typeof a!="undefined"?a:{},h,d;c.ready=new Promise(function(I,E){h=I,d=E});var p={},f;for(f in c)c.hasOwnProperty(f)&&(p[f]=c[f]);var m=[],A="./this.program",y=function(I,E){throw E},g=!1,b=!1,_=!1,w=!1;g=typeof window=="object",b=typeof importScripts=="function",_=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!g&&!_&&!b;var x=c.ENVIRONMENT_IS_PTHREAD||!1;x&&(He=c.buffer);var N="";function S(I){return c.locateFile?c.locateFile(I,N):N+I}var T,M,D,z,W,U;if(_){b?N=pu().dirname(N)+"/":N=__dirname+"/",T=function(I,E){return W||(W=require("fs")),U||(U=pu()),I=U.normalize(I),W.readFileSync(I,E?null:"utf8")},D=function(I){var E=T(I,!0);return E.buffer||(E=new Uint8Array(E)),me(E.buffer),E},process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(I){if(!(I instanceof du))throw I}),process.on("unhandledRejection",ra),y=function(I){process.exit(I)},c.inspect=function(){return"[Emscripten Module object]"};var H;try{H=fk()}catch(I){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),I}global.Worker=H.Worker}else w?(typeof read!="undefined"&&(T=function(I){return read(I)}),D=function(I){var E;return typeof readbuffer=="function"?new Uint8Array(readbuffer(I)):(E=read(I,"binary"),me(typeof E=="object"),E)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(y=function(I){quit(I)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(g||b)&&(b?N=self.location.href:typeof document!="undefined"&&document.currentScript&&(N=document.currentScript.src),typeof r!="undefined"&&r&&(N=r),N.indexOf("blob:")!==0?N=N.substr(0,N.lastIndexOf("/")+1):N="",_?(T=function(I,E){return W||(W=require("fs")),U||(U=pu()),I=U.normalize(I),W.readFileSync(I,E?null:"utf8")},D=function(I){var E=T(I,!0);return E.buffer||(E=new Uint8Array(E)),me(E.buffer),E}):(T=function(I){var E=new XMLHttpRequest;return E.open("GET",I,!1),E.send(null),E.responseText},b&&(D=function(I){var E=new XMLHttpRequest;return E.open("GET",I,!1),E.responseType="arraybuffer",E.send(null),new Uint8Array(E.response)}),M=function(I,E,L){var q=new XMLHttpRequest;q.open("GET",I,!0),q.responseType="arraybuffer",q.onload=function(){if(q.status==200||q.status==0&&q.response){E(q.response);return}L()},q.onerror=L,q.send(null)}),z=function(I){document.title=I});_&&typeof performance=="undefined"&&(global.performance=mk().performance);var X=c.print||console.log.bind(console),j=c.printErr||console.warn.bind(console);for(f in p)p.hasOwnProperty(f)&&(c[f]=p[f]);p=null,c.arguments&&(m=c.arguments),c.thisProgram&&(A=c.thisProgram),c.quit&&(y=c.quit);var ee=Atomics.load,Y=Atomics.store,se=Atomics.compareExchange,te;c.wasmBinary&&(te=c.wasmBinary);var oe=c.noExitRuntime||!0;typeof WebAssembly!="object"&&ra("no native wasm support detected");var Q,pe,le=!1,Ae;function me(I,E){I||ra("Assertion failed: "+E)}function Se(I){var E=c["_"+I];return me(E,"Cannot call unknown function "+I+", make sure it is exported"),E}function Ee(I,E,L,q,fe){var ue={string:function(In){var to=0;if(In!=null&&In!==0){var G2=(In.length<<2)+1;to=Ji(G2),st(In,to,G2)}return to},array:function(In){var to=Ji(In.length);return Qe(In,to),to}};function he(In){return E==="string"?ze(In):E==="boolean"?Boolean(In):In}var ve=Se(I),it=[],Xt=0;if(q)for(var Pt=0;Pt=q);){var ue=I[E++];if(!ue)return fe;if(!(ue&128)){fe+=String.fromCharCode(ue);continue}var he=I[E++]&63;if((ue&224)==192){fe+=String.fromCharCode((ue&31)<<6|he);continue}var ve=I[E++]&63;if((ue&240)==224?ue=(ue&15)<<12|he<<6|ve:ue=(ue&7)<<18|he<<12|ve<<6|I[E++]&63,ue<65536)fe+=String.fromCharCode(ue);else{var it=ue-65536;fe+=String.fromCharCode(55296|it>>10,56320|it&1023)}}return fe}function ze(I,E){return I?Le(i(),I,E):""}function at(I,E,L,q){if(!(q>0))return 0;for(var fe=L,ue=L+q-1,he=0;he=55296&&ve<=57343){var it=I.charCodeAt(++he);ve=65536+((ve&1023)<<10)|it&1023}if(ve<=127){if(L>=ue)break;E[L++]=ve}else if(ve<=2047){if(L+1>=ue)break;E[L++]=192|ve>>6,E[L++]=128|ve&63}else if(ve<=65535){if(L+2>=ue)break;E[L++]=224|ve>>12,E[L++]=128|ve>>6&63,E[L++]=128|ve&63}else{if(L+3>=ue)break;E[L++]=240|ve>>18,E[L++]=128|ve>>12&63,E[L++]=128|ve>>6&63,E[L++]=128|ve&63}}return E[L]=0,L-fe}function st(I,E,L){return at(I,i(),E,L)}function ct(I){for(var E=0,L=0;L=55296&&q<=57343&&(q=65536+((q&1023)<<10)|I.charCodeAt(++L)&1023),q<=127?++E:q<=2047?E+=2:q<=65535?E+=3:E+=4}return E}function Qe(I,E){s().set(I,E)}function At(I,E){return I%E>0&&(I+=E-I%E),I}var He,bn,It,Xn,tn,_n,Kn,Dn,pn;function nn(I){He=I,c.HEAP8=bn=new Int8Array(I),c.HEAP16=Xn=new Int16Array(I),c.HEAP32=_n=new Int32Array(I),c.HEAPU8=It=new Uint8Array(I),c.HEAPU16=tn=new Uint16Array(I),c.HEAPU32=Kn=new Uint32Array(I),c.HEAPF32=Dn=new Float32Array(I),c.HEAPF64=pn=new Float64Array(I)}var $r=c.INITIAL_MEMORY||16777216;if(x)Q=c.wasmMemory,He=c.buffer;else if(c.wasmMemory)Q=c.wasmMemory;else if(Q=new WebAssembly.Memory({initial:$r/65536,maximum:2147483648/65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),_&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(He=Q.buffer),$r=He.byteLength,nn(He);var ar,sr=[],_a=[],ta=[],va=[],Hi=[],gr=!1,ah=!1;x||_a.push({func:function(){wh()}}),x&&(gr=!0);function Y0(){if(!x){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)oh(c.preRun.shift());Gi(sr)}}function sh(){gr=!0,Gi(_a)}function J0(){x||Gi(ta)}function ih(){x||(ah=!0)}function vn(){if(!x){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)Q0(c.postRun.shift());Gi(Hi)}}function oh(I){sr.unshift(I)}function Q0(I){Hi.unshift(I)}var na=0,ka=null,us=null;function e1(I){me(!x,"addRunDependency cannot be used in a pthread worker"),na++,c.monitorRunDependencies&&c.monitorRunDependencies(na)}function t1(I){if(na--,c.monitorRunDependencies&&c.monitorRunDependencies(na),na==0&&(ka!==null&&(clearInterval(ka),ka=null),us)){var E=us;us=null,E()}}c.preloadedImages={},c.preloadedAudios={};function ra(I){c.onAbort&&c.onAbort(I),x&&console.error("Pthread aborting at "+new Error().stack),I+="",j(I),le=!0,Ae=1,I="abort("+I+"). Build with -s ASSERTIONS=1 for more info.";var E=new WebAssembly.RuntimeError(I);throw d(E),E}function lh(I,E){return String.prototype.startsWith?I.startsWith(E):I.indexOf(E)===0}var ji="data:application/octet-stream;base64,";function uh(I){return lh(I,ji)}var n1="file://";function ch(I){return lh(I,n1)}var kn="tfjs-backend-wasm-threaded-simd.wasm";uh(kn)||(kn=S(kn));function r1(I){try{if(I==kn&&te)return new Uint8Array(te);if(D)return D(I);throw"both async and sync fetching of the wasm failed"}catch(E){ra(E)}}function hh(){if(!te&&(g||b)){if(typeof fetch=="function"&&!ch(kn))return fetch(kn,{credentials:"same-origin"}).then(function(I){if(!I.ok)throw"failed to load wasm binary file at '"+kn+"'";return I.arrayBuffer()}).catch(function(){return r1(kn)});if(M)return new Promise(function(I,E){M(kn,function(L){I(new Uint8Array(L))},E)})}return Promise.resolve().then(function(){return r1(kn)})}function a1(){var I={a:X1};function E(he,ve){var it=he.exports;if(c.asm=it,ar=c.asm.F,pe=ve,!x){var Xt=Te.unusedWorkers.length;Te.unusedWorkers.forEach(function(Pt){Te.loadWasmModuleToWorker(Pt,function(){--Xt||t1("wasm-instantiate")})})}}x||e1("wasm-instantiate");function L(he){E(he.instance,he.module)}function q(he){return hh().then(function(ve){return WebAssembly.instantiate(ve,I)}).then(he,function(ve){j("failed to asynchronously prepare wasm: "+ve),ra(ve)})}function fe(){return!te&&typeof WebAssembly.instantiateStreaming=="function"&&!uh(kn)&&!ch(kn)&&typeof fetch=="function"?fetch(kn,{credentials:"same-origin"}).then(function(he){var ve=WebAssembly.instantiateStreaming(he,I);return ve.then(L,function(it){return j("wasm streaming compile failed: "+it),j("falling back to ArrayBuffer instantiation"),q(L)})}):q(L)}if(c.instantiateWasm)try{var ue=c.instantiateWasm(I,E);return ue}catch(he){return j("Module.instantiateWasm callback failed with error: "+he),!1}return fe().catch(d),{}}var dh={8991:function(I,E){setTimeout(function(){W2(I,E)},0)}};function s1(){Te.initRuntime()}function Gi(I){for(;I.length>0;){var E=I.shift();if(typeof E=="function"){E(c);continue}var L=E.func;typeof L=="number"?E.arg===void 0?ar.get(L)():ar.get(L)(E.arg):L(E.arg===void 0?null:E.arg)}}function qi(I,E){if(I<=0||I>s().length||I&!0||E<0)return-28;if(E==0)return 0;E>=2147483647&&(E=Infinity);var L=Atomics.load(o(),Qi>>2),q=0;if(L==I){var fe=Atomics.compareExchange(o(),Qi>>2,L,0);if(fe==L&&(--E,q=1,E<=0))return 1}var ue=Atomics.notify(o(),I>>2,E);if(ue>=0)return ue+q;throw"Atomics.notify returned an unexpected value "+ue}c._emscripten_futex_wake=qi;function i1(I){if(x)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in killThread!";o()[I+12>>2]=0;var E=Te.pthreads[I];E.worker.terminate(),Te.freeThreadData(E),Te.runningWorkers.splice(Te.runningWorkers.indexOf(E.worker),1),E.worker.pthread=void 0}function o1(I){if(x)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in cancelThread!";var E=Te.pthreads[I];E.worker.postMessage({cmd:"cancel"})}function l1(I){if(x)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!I)throw"Internal Error! Null pthread_ptr in cleanupThread!";o()[I+12>>2]=0;var E=Te.pthreads[I];if(E){var L=E.worker;Te.returnWorkerToPool(L)}}var Te={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var I=8,E=0;E>2]=I;var L=I+152;o()[L>>2]=L;for(var q=hs(512),E=0;E<128;++E)l()[q/4+E]=0;Atomics.store(l(),I+100>>2,q),Atomics.store(l(),I+40>>2,I),Ih(I,!b,1),L2(I)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Te.threadExitHandlers.length>0;)Te.threadExitHandlers.pop()();x&&Zi()&&P2()},threadExit:function(I){var E=Zi();E&&(Atomics.store(l(),E+4>>2,I),Atomics.store(l(),E+0>>2,1),Atomics.store(l(),E+56>>2,1),Atomics.store(l(),E+60>>2,0),Te.runExitHandlers(),qi(E+0,2147483647),Ih(0,0,0),x&&postMessage({cmd:"exit"}))},threadCancel:function(){Te.runExitHandlers();var I=Zi();Atomics.store(l(),I+4>>2,-1),Atomics.store(l(),I+0>>2,1),qi(I+0,2147483647),Ih(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var I in Te.pthreads){var E=Te.pthreads[I];E&&E.worker&&Te.returnWorkerToPool(E.worker)}Te.pthreads={};for(var L=0;L>2];o()[I.threadInfoStruct+100>>2]=0,cu(E),cu(I.threadInfoStruct)}I.threadInfoStruct=0,I.allocatedOwnStack&&I.stackBase&&cu(I.stackBase),I.stackBase=0,I.worker&&(I.worker.pthread=null)}},returnWorkerToPool:function(I){Te.runWithoutMainThreadQueuedCalls(function(){delete Te.pthreads[I.pthread.threadInfoStruct],Te.unusedWorkers.push(I),Te.runningWorkers.splice(Te.runningWorkers.indexOf(I),1),Te.freeThreadData(I.pthread),I.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(I){o()[j2>>2]=0;try{I()}finally{o()[j2>>2]=1}},receiveObjectTransfer:function(I){},loadWasmModuleToWorker:function(I,E){I.onmessage=function(L){var q=L.data,fe=q.cmd;if(I.pthread&&(Te.currentProxiedOperationCallerThread=I.pthread.threadInfoStruct),q.targetThread&&q.targetThread!=Zi()){var ue=Te.pthreads[q.targetThread];ue?ue.worker.postMessage(L.data,q.transferList):console.error('Internal error! Worker sent a message "'+fe+'" to target pthread '+q.targetThread+", but that thread no longer exists!"),Te.currentProxiedOperationCallerThread=void 0;return}if(fe==="processQueuedMainThreadWork")cf();else if(fe==="spawnThread")gh(L.data);else if(fe==="cleanupThread")l1(q.thread);else if(fe==="killThread")i1(q.thread);else if(fe==="cancelThread")o1(q.thread);else if(fe==="loaded")I.loaded=!0,E&&E(I),I.runPthread&&(I.runPthread(),delete I.runPthread);else if(fe==="print")X("Thread "+q.threadId+": "+q.text);else if(fe==="printErr")j("Thread "+q.threadId+": "+q.text);else if(fe==="alert")alert("Thread "+q.threadId+": "+q.text);else if(fe==="exit"){var he=I.pthread&&Atomics.load(l(),I.pthread.threadInfoStruct+64>>2);he&&Te.returnWorkerToPool(I)}else if(fe==="exitProcess")try{z8(q.returnCode)}catch(ve){if(ve instanceof du)return;throw ve}else fe==="cancelDone"?Te.returnWorkerToPool(I):fe==="objectTransfer"?Te.receiveObjectTransfer(L.data):L.data.target==="setimmediate"?I.postMessage(L.data):j("worker sent an unknown command "+fe);Te.currentProxiedOperationCallerThread=void 0},I.onerror=function(L){j("pthread sent an error! "+L.filename+":"+L.lineno+": "+L.message)},_&&(I.on("message",function(L){I.onmessage({data:L})}),I.on("error",function(L){I.onerror(L)}),I.on("exit",function(L){})),I.postMessage({cmd:"load",urlOrBlob:c.mainScriptUrlOrBlob||r,wasmMemory:Q,wasmModule:pe})},allocateUnusedWorker:function(){var I=S("tfjs-backend-wasm-threaded-simd.worker.js");Te.unusedWorkers.push(new Worker(I))},getNewWorker:function(){return Te.unusedWorkers.length==0&&(Te.allocateUnusedWorker(),Te.loadWasmModuleToWorker(Te.unusedWorkers[0])),Te.unusedWorkers.length>0?Te.unusedWorkers.pop():null},busySpinWait:function(I){for(var E=performance.now()+I;performance.now()>2]=I,I}function m1(I,E){if(x)return Ia(1,1,I,E)}function A1(I,E){if(I==E)postMessage({cmd:"processQueuedMainThreadWork"});else if(x)postMessage({targetThread:I,cmd:"processThreadQueue"});else{var L=Te.pthreads[I],q=L&&L.worker;if(!q)return;q.postMessage({cmd:"processThreadQueue"})}return 1}function y1(){ra()}function g1(I,E,L){var q=v1(E,L);return dh[I].apply(null,q)}function x1(I,E){}function w1(I,E,L){if(I<=0||I>s().length||I&!0)return-28;if(g){if(Atomics.load(o(),I>>2)!=E)return-6;for(var q=performance.now(),fe=q+L,ue=Atomics.exchange(o(),Qi>>2,I);;){if(q=performance.now(),q>fe)return ue=Atomics.exchange(o(),Qi>>2,0),-73;if(ue=Atomics.exchange(o(),Qi>>2,0),ue==0)break;if(cf(),Atomics.load(o(),I>>2)!=E)return-6;ue=Atomics.exchange(o(),Qi>>2,I)}return 0}else{var he=Atomics.wait(o(),I>>2,E,L);if(he==="timed-out")return-73;if(he==="not-equal")return-6;if(he==="ok")return 0;throw"Atomics.wait returned an unexpected value "+he}}function b1(I,E,L){i().copyWithin(I,E,E+L)}function _1(){return _?require("os").cpus().length:navigator.hardwareConcurrency}function Ia(I,E){for(var L=arguments.length-2,q=hu(),fe=L,ue=Ji(fe*8),he=ue>>3,ve=0;ve>=2;L=i()[I++];){var q=L<105;q&&E&1&&E++,su.push(q?u()[E++>>1]:o()[E]),++E}return su}function k1(I,E,L){au.length=E;for(var q=L>>3,fe=0;fe>>16),nn(Q.buffer),1}catch(E){}}function S1(I){var E=I1();if(I<=E)return!1;var L=2147483648;if(I>L)return!1;for(var q=1;q<=4;q*=2){var fe=E*(1+.2/q);fe=Math.min(fe,I+100663296);var ue=Math.min(L,At(Math.max(I,fe),65536)),he=N1(ue);if(he)return!0}return!1}var Ve={inEventHandler:0,removeAllEventListeners:function(){for(var I=Ve.eventHandlers.length-1;I>=0;--I)Ve._removeHandler(I);Ve.eventHandlers=[],Ve.deferredCalls=[]},registerRemoveEventListeners:function(){Ve.removeEventListenersRegistered||(va.push(Ve.removeAllEventListeners),Ve.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(I,E,L){function q(he,ve){if(he.length!=ve.length)return!1;for(var it in he)if(he[it]!=ve[it])return!1;return!0}for(var fe in Ve.deferredCalls){var ue=Ve.deferredCalls[fe];if(ue.targetFunction==I&&q(ue.argsList,L))return}Ve.deferredCalls.push({targetFunction:I,precedence:E,argsList:L}),Ve.deferredCalls.sort(function(he,ve){return he.precedence>2]=L,o()[he+4>>2]=q,o()[he+8>>2]=fe,hf(0,I,637534208,E,q,he),Yi(ue)},getTargetThreadForEventCallback:function(I){switch(I){case 1:return 0;case 2:return Te.currentProxiedOperationCallerThread;default:return I}},getNodeNameForTarget:function(I){return I?I==window?"#window":I==screen?"#screen":I&&I.nodeName?I.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function T1(I){var E=ct(I)+1,L=hs(E);return st(I,L,E),L}function E1(I,E,L,q){var fe=hu(),ue=Ji(12),he=0;E&&(he=T1(E)),o()[ue>>2]=he,o()[ue+4>>2]=L,o()[ue+8>>2]=q,hf(0,I,657457152,0,he,ue),Yi(fe)}function C1(I,E,L,q){E=E?ze(E):"",E1(I,E,L,q)}function R1(I){return I>2?ze(I):I}var F1=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function M1(I){I=R1(I);var E=F1[I]||(typeof document!="undefined"?document.querySelector(I):void 0);return E}function iu(I){return M1(I)}function ph(I,E,L){var q=iu(I);if(!q)return-4;if(q.canvasSharedPtr&&(o()[q.canvasSharedPtr>>2]=E,o()[q.canvasSharedPtr+4>>2]=L),q.offscreenCanvas||!q.controlTransferredOffscreen){q.offscreenCanvas&&(q=q.offscreenCanvas);var fe=!1;if(q.GLctxObject&&q.GLctxObject.GLctx){var ue=q.GLctxObject.GLctx.getParameter(2978);fe=ue[0]===0&&ue[1]===0&&ue[2]===q.width&&ue[3]===q.height}q.width=E,q.height=L,fe&&q.GLctxObject.GLctx.viewport(0,0,E,L)}else if(q.canvasSharedPtr){var he=o()[q.canvasSharedPtr+8>>2];return C1(he,I,E,L),1}else return-4;return 0}function fh(I,E,L){return x?Ia(2,1,I,E,L):ph(I,E,L)}function $1(I,E,L){var q=iu(I);return q?ph(I,E,L):fh(I,E,L)}function D1(I){}function O1(I,E){}function z1(I){var E=I.getExtension("ANGLE_instanced_arrays");if(E)return I.vertexAttribDivisor=function(L,q){E.vertexAttribDivisorANGLE(L,q)},I.drawArraysInstanced=function(L,q,fe,ue){E.drawArraysInstancedANGLE(L,q,fe,ue)},I.drawElementsInstanced=function(L,q,fe,ue,he){E.drawElementsInstancedANGLE(L,q,fe,ue,he)},1}function P1(I){var E=I.getExtension("OES_vertex_array_object");if(E)return I.createVertexArray=function(){return E.createVertexArrayOES()},I.deleteVertexArray=function(L){E.deleteVertexArrayOES(L)},I.bindVertexArray=function(L){E.bindVertexArrayOES(L)},I.isVertexArray=function(L){return E.isVertexArrayOES(L)},1}function L1(I){var E=I.getExtension("WEBGL_draw_buffers");if(E)return I.drawBuffers=function(L,q){E.drawBuffersWEBGL(L,q)},1}function W1(I){return!!(I.multiDrawWebgl=I.getExtension("WEBGL_multi_draw"))}var nt={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(I){nt.lastError||(nt.lastError=I)},getNewId:function(I){for(var E=nt.counter++,L=I.length;L>2]:-1;fe+=ze(o()[L+ue*4>>2],he<0?void 0:he)}return fe},createContext:function(I,E){var L=I.getContext("webgl",E);if(!L)return 0;var q=nt.registerContext(L,E);return q},registerContext:function(I,E){var L=hs(8);o()[L+4>>2]=Zi();var q={handle:L,attributes:E,version:E.majorVersion,GLctx:I};return I.canvas&&(I.canvas.GLctxObject=q),nt.contexts[L]=q,(typeof E.enableExtensionsByDefault=="undefined"||E.enableExtensionsByDefault)&&nt.initExtensions(q),L},makeContextCurrent:function(I){return nt.currentContext=nt.contexts[I],c.ctx=Na=nt.currentContext&&nt.currentContext.GLctx,!(I&&!Na)},getContext:function(I){return nt.contexts[I]},deleteContext:function(I){nt.currentContext===nt.contexts[I]&&(nt.currentContext=null),typeof Ve=="object"&&Ve.removeAllHandlersOnTarget(nt.contexts[I].GLctx.canvas),nt.contexts[I]&&nt.contexts[I].GLctx.canvas&&(nt.contexts[I].GLctx.canvas.GLctxObject=void 0),cu(nt.contexts[I].handle),nt.contexts[I]=null},initExtensions:function(I){if(I||(I=nt.currentContext),!I.initExtensionsDone){I.initExtensionsDone=!0;var E=I.GLctx;z1(E),P1(E),L1(E),E.disjointTimerQueryExt=E.getExtension("EXT_disjoint_timer_query"),W1(E);var L=E.getSupportedExtensions()||[];L.forEach(function(q){q.indexOf("lose_context")<0&&q.indexOf("debug")<0&&E.getExtension(q)})}},populateUniformTable:function(I){for(var E=nt.programs[I],L=nt.programInfos[I]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},q=L.uniforms,fe=Na.getProgramParameter(E,35718),ue=0;ue>2,q=o()[L+(24>>2)],fe={alpha:!!o()[L+(0>>2)],depth:!!o()[L+(4>>2)],stencil:!!o()[L+(8>>2)],antialias:!!o()[L+(12>>2)],premultipliedAlpha:!!o()[L+(16>>2)],preserveDrawingBuffer:!!o()[L+(20>>2)],powerPreference:B1[q],failIfMajorPerformanceCaveat:!!o()[L+(28>>2)],majorVersion:o()[L+(32>>2)],minorVersion:o()[L+(36>>2)],enableExtensionsByDefault:o()[L+(40>>2)],explicitSwapControl:o()[L+(44>>2)],proxyContextToMainThread:o()[L+(48>>2)],renderViaOffscreenBackBuffer:o()[L+(52>>2)]},ue=iu(I);if(!ue||fe.explicitSwapControl)return 0;var he=nt.createContext(ue,fe);return he}function U1(I,E){return V1(I,E)}var Xi={mappings:{},buffers:[null,[],[]],printChar:function(I,E){var L=Xi.buffers[I];E===0||E===10?((I===1?X:j)(Le(L,0)),L.length=0):L.push(E)},varargs:void 0,get:function(){Xi.varargs+=4;var I=o()[Xi.varargs-4>>2];return I},getStr:function(I){var E=ze(I);return E},get64:function(I,E){return I}};function mh(I){return x?Ia(3,1,I):0}function Ah(I,E,L,q,fe){if(x)return Ia(4,1,I,E,L,q,fe)}function yh(I,E,L,q){if(x)return Ia(5,1,I,E,L,q);for(var fe=0,ue=0;ue>2],ve=o()[E+(ue*8+4)>>2],it=0;it>2]=fe,0}function H1(I){var E=Te.threadExitHandlers.pop();I&&E()}function j1(I,E){Te.threadExitHandlers.push(function(){ar.get(I)(E)})}function gh(I){if(x)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var E=Te.getNewWorker();if(E.pthread!==void 0)throw"Internal error!";if(!I.pthread_ptr)throw"Internal error, no pthread ptr!";Te.runningWorkers.push(E);for(var L=hs(128*4),q=0;q<128;++q)o()[L+q*4>>2]=0;var fe=I.stackBase+I.stackSize,ue=Te.pthreads[I.pthread_ptr]={worker:E,stackBase:I.stackBase,stackSize:I.stackSize,allocatedOwnStack:I.allocatedOwnStack,threadInfoStruct:I.pthread_ptr},he=ue.threadInfoStruct>>2;Atomics.store(l(),he+(64>>2),I.detached),Atomics.store(l(),he+(100>>2),L),Atomics.store(l(),he+(40>>2),ue.threadInfoStruct),Atomics.store(l(),he+(80>>2),I.stackSize),Atomics.store(l(),he+(76>>2),fe),Atomics.store(l(),he+(104>>2),I.stackSize),Atomics.store(l(),he+(104+8>>2),fe),Atomics.store(l(),he+(104+12>>2),I.detached);var ve=z2(),it=ve+40;Atomics.store(l(),he+(172>>2),it),E.pthread=ue;var Xt={cmd:"run",start_routine:I.startRoutine,arg:I.arg,threadInfoStruct:I.pthread_ptr,stackBase:I.stackBase,stackSize:I.stackSize};E.runPthread=function(){Xt.time=performance.now(),E.postMessage(Xt,I.transferList)},E.loaded&&(E.runPthread(),delete E.runPthread)}function G1(I,E,L,q){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!I)return j("pthread_create called with a null thread pointer!"),28;var fe=[],ue=0;if(x&&(fe.length===0||ue))return B2(687865856,I,E,L,q);if(ue)return ue;var he=0,ve=0,it=0;E&&E!=-1?(he=o()[E>>2],he+=81920,ve=o()[E+8>>2],it=o()[E+12>>2]!==0):he=2097152;var Xt=ve==0;Xt?ve=H2(16,he):(ve-=he,me(ve>0));for(var Pt=hs(228),Ta=0;Ta<228>>2;++Ta)l()[(Pt>>2)+Ta]=0;o()[I>>2]=Pt,o()[Pt+12>>2]=Pt;var eo=Pt+152;o()[eo>>2]=eo;var In={stackBase:ve,stackSize:he,allocatedOwnStack:Xt,detached:it,startRoutine:L,pthread_ptr:Pt,arg:q,transferList:fe};return x?(In.cmd="spawnThread",postMessage(In,fe)):gh(In),0}function xh(I){if(x)return Ia(6,1,I);switch(I){case 30:return 16384;case 85:var E=2147483648;return E/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return f1(28),-1}x||Te.initMainThreadBlock();var Na,q1=[null,m1,fh,mh,Ah,yh,xh],X1={e:d1,r:p1,x:A1,b:y1,y:g1,j:x1,c:w1,d:qi,f:cs,p:b1,z:_1,u:k1,q:S1,v:$1,i:D1,t:O1,w:U1,m:mh,n:Ah,g:yh,o:s1,a:Q||c.wasmMemory,k:H1,l:j1,h:G1,s:xh},D2=a1(),wh=c.___wasm_call_ctors=function(){return(wh=c.___wasm_call_ctors=c.asm.A).apply(null,arguments)},K1=c._init=function(){return(K1=c._init=c.asm.B).apply(null,arguments)},Z1=c._register_tensor=function(){return(Z1=c._register_tensor=c.asm.C).apply(null,arguments)},Y1=c._dispose_data=function(){return(Y1=c._dispose_data=c.asm.D).apply(null,arguments)},J1=c._dispose=function(){return(J1=c._dispose=c.asm.E).apply(null,arguments)},Q1=c._Abs=function(){return(Q1=c._Abs=c.asm.G).apply(null,arguments)},ef=c._Add=function(){return(ef=c._Add=c.asm.H).apply(null,arguments)},tf=c._AddN=function(){return(tf=c._AddN=c.asm.I).apply(null,arguments)},nf=c._ArgMax=function(){return(nf=c._ArgMax=c.asm.J).apply(null,arguments)},rf=c._AvgPool=function(){return(rf=c._AvgPool=c.asm.K).apply(null,arguments)},af=c._BatchMatMul=function(){return(af=c._BatchMatMul=c.asm.L).apply(null,arguments)},sf=c._Ceil=function(){return(sf=c._Ceil=c.asm.M).apply(null,arguments)},of=c._ClipByValue=function(){return(of=c._ClipByValue=c.asm.N).apply(null,arguments)},lf=c._Conv2D=function(){return(lf=c._Conv2D=c.asm.O).apply(null,arguments)},bh=c._Conv2DBackpropInput=function(){return(bh=c._Conv2DBackpropInput=c.asm.P).apply(null,arguments)},_h=c._Cos=function(){return(_h=c._Cos=c.asm.Q).apply(null,arguments)},ou=c._CropAndResize=function(){return(ou=c._CropAndResize=c.asm.R).apply(null,arguments)},Ki=c._Cumsum=function(){return(Ki=c._Cumsum=c.asm.S).apply(null,arguments)},uf=c._DepthToSpace=function(){return(uf=c._DepthToSpace=c.asm.T).apply(null,arguments)},lu=c._DepthwiseConv2dNative=function(){return(lu=c._DepthwiseConv2dNative=c.asm.U).apply(null,arguments)},K=c._Equal=function(){return(K=c._Equal=c.asm.V).apply(null,arguments)},re=c._Exp=function(){return(re=c._Exp=c.asm.W).apply(null,arguments)},Ce=c._FlipLeftRight=function(){return(Ce=c._FlipLeftRight=c.asm.X).apply(null,arguments)},et=c._Floor=function(){return(et=c._Floor=c.asm.Y).apply(null,arguments)},Ct=c._FloorDiv=function(){return(Ct=c._FloorDiv=c.asm.Z).apply(null,arguments)},xt=c._FusedBatchNorm=function(){return(xt=c._FusedBatchNorm=c.asm._).apply(null,arguments)},je=c._FusedConv2D=function(){return(je=c._FusedConv2D=c.asm.$).apply(null,arguments)},Xe=c._FusedDepthwiseConv2D=function(){return(Xe=c._FusedDepthwiseConv2D=c.asm.aa).apply(null,arguments)},rn=c._Gather=function(){return(rn=c._Gather=c.asm.ba).apply(null,arguments)},aa=c._GatherNd=function(){return(aa=c._GatherNd=c.asm.ca).apply(null,arguments)},sa=c._Greater=function(){return(sa=c._Greater=c.asm.da).apply(null,arguments)},vh=c._GreaterEqual=function(){return(vh=c._GreaterEqual=c.asm.ea).apply(null,arguments)},uu=c._LeakyRelu=function(){return(uu=c._LeakyRelu=c.asm.fa).apply(null,arguments)},Zn=c._Less=function(){return(Zn=c._Less=c.asm.ga).apply(null,arguments)},Sa=c._LessEqual=function(){return(Sa=c._LessEqual=c.asm.ha).apply(null,arguments)},kh=c._Log=function(){return(kh=c._Log=c.asm.ia).apply(null,arguments)},G4=c._LogicalAnd=function(){return(G4=c._LogicalAnd=c.asm.ja).apply(null,arguments)},q4=c._Max=function(){return(q4=c._Max=c.asm.ka).apply(null,arguments)},X4=c._MaxPool=function(){return(X4=c._MaxPool=c.asm.la).apply(null,arguments)},K4=c._Maximum=function(){return(K4=c._Maximum=c.asm.ma).apply(null,arguments)},Z4=c._Mean=function(){return(Z4=c._Mean=c.asm.na).apply(null,arguments)},Y4=c._Min=function(){return(Y4=c._Min=c.asm.oa).apply(null,arguments)},J4=c._Minimum=function(){return(J4=c._Minimum=c.asm.pa).apply(null,arguments)},Q4=c._Multiply=function(){return(Q4=c._Multiply=c.asm.qa).apply(null,arguments)},e8=c._Neg=function(){return(e8=c._Neg=c.asm.ra).apply(null,arguments)},t8=c._NonMaxSuppressionV3=function(){return(t8=c._NonMaxSuppressionV3=c.asm.sa).apply(null,arguments)},n8=c._NonMaxSuppressionV4=function(){return(n8=c._NonMaxSuppressionV4=c.asm.ta).apply(null,arguments)},r8=c._NonMaxSuppressionV5=function(){return(r8=c._NonMaxSuppressionV5=c.asm.ua).apply(null,arguments)},a8=c._NotEqual=function(){return(a8=c._NotEqual=c.asm.va).apply(null,arguments)},s8=c._OneHot=function(){return(s8=c._OneHot=c.asm.wa).apply(null,arguments)},i8=c._PadV2=function(){return(i8=c._PadV2=c.asm.xa).apply(null,arguments)},o8=c._Pow=function(){return(o8=c._Pow=c.asm.ya).apply(null,arguments)},l8=c._Prelu=function(){return(l8=c._Prelu=c.asm.za).apply(null,arguments)},u8=c._Prod=function(){return(u8=c._Prod=c.asm.Aa).apply(null,arguments)},c8=c._RealDiv=function(){return(c8=c._RealDiv=c.asm.Ba).apply(null,arguments)},h8=c._Relu=function(){return(h8=c._Relu=c.asm.Ca).apply(null,arguments)},d8=c._Relu6=function(){return(d8=c._Relu6=c.asm.Da).apply(null,arguments)},p8=c._ResizeBilinear=function(){return(p8=c._ResizeBilinear=c.asm.Ea).apply(null,arguments)},f8=c._Reverse=function(){return(f8=c._Reverse=c.asm.Fa).apply(null,arguments)},m8=c._RotateWithOffset=function(){return(m8=c._RotateWithOffset=c.asm.Ga).apply(null,arguments)},A8=c._Round=function(){return(A8=c._Round=c.asm.Ha).apply(null,arguments)},y8=c._Rsqrt=function(){return(y8=c._Rsqrt=c.asm.Ia).apply(null,arguments)},g8=c._ScatterNd=function(){return(g8=c._ScatterNd=c.asm.Ja).apply(null,arguments)},x8=c._SelectV2=function(){return(x8=c._SelectV2=c.asm.Ka).apply(null,arguments)},w8=c._Sigmoid=function(){return(w8=c._Sigmoid=c.asm.La).apply(null,arguments)},b8=c._Sin=function(){return(b8=c._Sin=c.asm.Ma).apply(null,arguments)},_8=c._Softmax=function(){return(_8=c._Softmax=c.asm.Na).apply(null,arguments)},v8=c._Sqrt=function(){return(v8=c._Sqrt=c.asm.Oa).apply(null,arguments)},k8=c._Square=function(){return(k8=c._Square=c.asm.Pa).apply(null,arguments)},I8=c._SquaredDifference=function(){return(I8=c._SquaredDifference=c.asm.Qa).apply(null,arguments)},N8=c._Step=function(){return(N8=c._Step=c.asm.Ra).apply(null,arguments)},S8=c._StridedSlice=function(){return(S8=c._StridedSlice=c.asm.Sa).apply(null,arguments)},T8=c._Sub=function(){return(T8=c._Sub=c.asm.Ta).apply(null,arguments)},E8=c._Sum=function(){return(E8=c._Sum=c.asm.Ua).apply(null,arguments)},C8=c._Tanh=function(){return(C8=c._Tanh=c.asm.Va).apply(null,arguments)},R8=c._Tile=function(){return(R8=c._Tile=c.asm.Wa).apply(null,arguments)},F8=c._TopK=function(){return(F8=c._TopK=c.asm.Xa).apply(null,arguments)},M8=c._Transpose=function(){return(M8=c._Transpose=c.asm.Ya).apply(null,arguments)},$8=c.__FusedMatMul=function(){return($8=c.__FusedMatMul=c.asm.Za).apply(null,arguments)},hs=c._malloc=function(){return(hs=c._malloc=c.asm._a).apply(null,arguments)},cu=c._free=function(){return(cu=c._free=c.asm.$a).apply(null,arguments)},O2=c.___errno_location=function(){return(O2=c.___errno_location=c.asm.ab).apply(null,arguments)},z2=c._emscripten_get_global_libc=function(){return(z2=c._emscripten_get_global_libc=c.asm.bb).apply(null,arguments)},Zi=c._pthread_self=function(){return(Zi=c._pthread_self=c.asm.cb).apply(null,arguments)},P2=c.___pthread_tsd_run_dtors=function(){return(P2=c.___pthread_tsd_run_dtors=c.asm.db).apply(null,arguments)},cf=c._emscripten_main_thread_process_queued_calls=function(){return(cf=c._emscripten_main_thread_process_queued_calls=c.asm.eb).apply(null,arguments)},D8=c._emscripten_current_thread_process_queued_calls=function(){return(D8=c._emscripten_current_thread_process_queued_calls=c.asm.fb).apply(null,arguments)},L2=c._emscripten_register_main_browser_thread_id=function(){return(L2=c._emscripten_register_main_browser_thread_id=c.asm.gb).apply(null,arguments)},W2=c.__emscripten_do_dispatch_to_thread=function(){return(W2=c.__emscripten_do_dispatch_to_thread=c.asm.hb).apply(null,arguments)},B2=c._emscripten_sync_run_in_main_thread_4=function(){return(B2=c._emscripten_sync_run_in_main_thread_4=c.asm.ib).apply(null,arguments)},V2=c._emscripten_run_in_main_runtime_thread_js=function(){return(V2=c._emscripten_run_in_main_runtime_thread_js=c.asm.jb).apply(null,arguments)},hf=c.__emscripten_call_on_thread=function(){return(hf=c.__emscripten_call_on_thread=c.asm.kb).apply(null,arguments)},O8=c._emscripten_tls_init=function(){return(O8=c._emscripten_tls_init=c.asm.lb).apply(null,arguments)},Ih=c.__emscripten_thread_init=function(){return(Ih=c.__emscripten_thread_init=c.asm.mb).apply(null,arguments)},hu=c.stackSave=function(){return(hu=c.stackSave=c.asm.nb).apply(null,arguments)},Yi=c.stackRestore=function(){return(Yi=c.stackRestore=c.asm.ob).apply(null,arguments)},Ji=c.stackAlloc=function(){return(Ji=c.stackAlloc=c.asm.pb).apply(null,arguments)},U2=c._emscripten_stack_set_limits=function(){return(U2=c._emscripten_stack_set_limits=c.asm.qb).apply(null,arguments)},H2=c._memalign=function(){return(H2=c._memalign=c.asm.rb).apply(null,arguments)},j2=c.__emscripten_allow_main_runtime_queued_calls=9880,Qi=c.__emscripten_main_thread_futex=11368;c.cwrap=Oe,c.PThread=Te,c.PThread=Te,c.wasmMemory=Q,c.ExitStatus=du;var Nh;function du(I){this.name="ExitStatus",this.message="Program terminated with exit("+I+")",this.status=I}us=function I(){Nh||df(),Nh||(us=I)};function df(I){if(I=I||m,na>0)return;if(x){h(c),postMessage({cmd:"loaded"});return}if(Y0(),na>0)return;function E(){Nh||(Nh=!0,c.calledRun=!0,!le&&(sh(),J0(),h(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),vn()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),E()},1)):E()}c.run=df;function z8(I,E){if(!(E&&oe&&I===0)){if(!E&&x)throw postMessage({cmd:"exitProcess",returnCode:I}),new du(I);oe||(Te.terminateAllThreads(),Ae=I,ih(),c.onExit&&c.onExit(I),le=!0),y(I,new du(I))}}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return x&&(oe=!1,Te.initWorker()),df(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),yk=rt((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};var s=typeof a!="undefined"?a:{},i,o;s.ready=new Promise(function(K,re){i=K,o=re});var l={},u;for(u in s)s.hasOwnProperty(u)&&(l[u]=s[u]);var c=[],h="./this.program",d=function(K,re){throw re},p=!1,f=!1,m=!1,A=!1;p=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A=!p&&!m&&!f;var y="";function g(K){return s.locateFile?s.locateFile(K,y):y+K}var b,_,w,x,N,S;m?(f?y=pu().dirname(y)+"/":y=__dirname+"/",b=function(K,re){return N||(N=require("fs")),S||(S=pu()),K=S.normalize(K),N.readFileSync(K,re?null:"utf8")},w=function(K){var re=b(K,!0);return re.buffer||(re=new Uint8Array(re)),X(re.buffer),re},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(K){if(!(K instanceof uf))throw K}),process.on("unhandledRejection",gr),d=function(K){process.exit(K)},s.inspect=function(){return"[Emscripten Module object]"}):A?(typeof read!="undefined"&&(b=function(K){return read(K)}),w=function(K){var re;return typeof readbuffer=="function"?new Uint8Array(readbuffer(K)):(re=read(K,"binary"),X(typeof re=="object"),re)},typeof scriptArgs!="undefined"?c=scriptArgs:typeof arguments!="undefined"&&(c=arguments),typeof quit=="function"&&(d=function(K){quit(K)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",b=function(K){var re=new XMLHttpRequest;return re.open("GET",K,!1),re.send(null),re.responseText},f&&(w=function(K){var re=new XMLHttpRequest;return re.open("GET",K,!1),re.responseType="arraybuffer",re.send(null),new Uint8Array(re.response)}),_=function(K,re,Ce){var et=new XMLHttpRequest;et.open("GET",K,!0),et.responseType="arraybuffer",et.onload=function(){if(et.status==200||et.status==0&&et.response){re(et.response);return}Ce()},et.onerror=Ce,et.send(null)},x=function(K){document.title=K});var T=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in l)l.hasOwnProperty(u)&&(s[u]=l[u]);l=null,s.arguments&&(c=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(d=s.quit);var D;s.wasmBinary&&(D=s.wasmBinary);var z=s.noExitRuntime||!0;typeof WebAssembly!="object"&&gr("no native wasm support detected");var W,U=!1,H;function X(K,re){K||gr("Assertion failed: "+re)}function j(K){var re=s["_"+K];return X(re,"Cannot call unknown function "+K+", make sure it is exported"),re}function ee(K,re,Ce,et,Ct){var xt={string:function(Zn){var Sa=0;if(Zn!=null&&Zn!==0){var kh=(Zn.length<<2)+1;Sa=ou(kh),pe(Zn,Sa,kh)}return Sa},array:function(Zn){var Sa=ou(Zn.length);return le(Zn,Sa),Sa}};function je(Zn){return re==="string"?oe(Zn):re==="boolean"?Boolean(Zn):Zn}var Xe=j(K),rn=[],aa=0;if(et)for(var sa=0;sa=et);)++Ct;if(Ct-re>16&&K.subarray&&se)return se.decode(K.subarray(re,Ct));for(var xt="";re>10,56320|aa&1023)}}return xt}function oe(K,re){return K?te(Ee,K,re):""}function Q(K,re,Ce,et){if(!(et>0))return 0;for(var Ct=Ce,xt=Ce+et-1,je=0;je=55296&&Xe<=57343){var rn=K.charCodeAt(++je);Xe=65536+((Xe&1023)<<10)|rn&1023}if(Xe<=127){if(Ce>=xt)break;re[Ce++]=Xe}else if(Xe<=2047){if(Ce+1>=xt)break;re[Ce++]=192|Xe>>6,re[Ce++]=128|Xe&63}else if(Xe<=65535){if(Ce+2>=xt)break;re[Ce++]=224|Xe>>12,re[Ce++]=128|Xe>>6&63,re[Ce++]=128|Xe&63}else{if(Ce+3>=xt)break;re[Ce++]=240|Xe>>18,re[Ce++]=128|Xe>>12&63,re[Ce++]=128|Xe>>6&63,re[Ce++]=128|Xe&63}}return re[Ce]=0,Ce-Ct}function pe(K,re,Ce){return Q(K,Ee,re,Ce)}function le(K,re){Se.set(K,re)}function Ae(K,re){return K%re>0&&(K+=re-K%re),K}var me,Se,Ee,Oe,Le,ze,at,st,ct;function Qe(K){me=K,s.HEAP8=Se=new Int8Array(K),s.HEAP16=Oe=new Int16Array(K),s.HEAP32=ze=new Int32Array(K),s.HEAPU8=Ee=new Uint8Array(K),s.HEAPU16=Le=new Uint16Array(K),s.HEAPU32=at=new Uint32Array(K),s.HEAPF32=st=new Float32Array(K),s.HEAPF64=ct=new Float64Array(K)}var At=s.INITIAL_MEMORY||16777216,He,bn=[],It=[],Xn=[],tn=[],_n=!1;It.push({func:function(){hh()}});function Kn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)$r(s.preRun.shift());ka(bn)}function Dn(){_n=!0,ka(It)}function pn(){ka(Xn)}function nn(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)ar(s.postRun.shift());ka(tn)}function $r(K){bn.unshift(K)}function ar(K){tn.unshift(K)}var sr=0,_a=null,ta=null;function va(K){sr++,s.monitorRunDependencies&&s.monitorRunDependencies(sr)}function Hi(K){if(sr--,s.monitorRunDependencies&&s.monitorRunDependencies(sr),sr==0&&(_a!==null&&(clearInterval(_a),_a=null),ta)){var re=ta;ta=null,re()}}s.preloadedImages={},s.preloadedAudios={};function gr(K){s.onAbort&&s.onAbort(K),K+="",M(K),U=!0,H=1,K="abort("+K+"). Build with -s ASSERTIONS=1 for more info.";var re=new WebAssembly.RuntimeError(K);throw o(re),re}function ah(K,re){return String.prototype.startsWith?K.startsWith(re):K.indexOf(re)===0}var Y0="data:application/octet-stream;base64,";function sh(K){return ah(K,Y0)}var J0="file://";function ih(K){return ah(K,J0)}var vn="tfjs-backend-wasm.wasm";sh(vn)||(vn=g(vn));function oh(K){try{if(K==vn&&D)return new Uint8Array(D);if(w)return w(K);throw"both async and sync fetching of the wasm failed"}catch(re){gr(re)}}function Q0(){if(!D&&(p||f)){if(typeof fetch=="function"&&!ih(vn))return fetch(vn,{credentials:"same-origin"}).then(function(K){if(!K.ok)throw"failed to load wasm binary file at '"+vn+"'";return K.arrayBuffer()}).catch(function(){return oh(vn)});if(_)return new Promise(function(K,re){_(vn,function(Ce){K(new Uint8Array(Ce))},re)})}return Promise.resolve().then(function(){return oh(vn)})}function na(){var K={a:kn};function re(je,Xe){var rn=je.exports;s.asm=rn,W=s.asm.g,Qe(W.buffer),He=s.asm.m,Hi("wasm-instantiate")}va("wasm-instantiate");function Ce(je){re(je.instance)}function et(je){return Q0().then(function(Xe){return WebAssembly.instantiate(Xe,K)}).then(je,function(Xe){M("failed to asynchronously prepare wasm: "+Xe),gr(Xe)})}function Ct(){return!D&&typeof WebAssembly.instantiateStreaming=="function"&&!sh(vn)&&!ih(vn)&&typeof fetch=="function"?fetch(vn,{credentials:"same-origin"}).then(function(je){var Xe=WebAssembly.instantiateStreaming(je,K);return Xe.then(Ce,function(rn){return M("wasm streaming compile failed: "+rn),M("falling back to ArrayBuffer instantiation"),et(Ce)})}):et(Ce)}if(s.instantiateWasm)try{var xt=s.instantiateWasm(K,re);return xt}catch(je){return M("Module.instantiateWasm callback failed with error: "+je),!1}return Ct().catch(o),{}}function ka(K){for(;K.length>0;){var re=K.shift();if(typeof re=="function"){re(s);continue}var Ce=re.func;typeof Ce=="number"?re.arg===void 0?He.get(Ce)():He.get(Ce)(re.arg):Ce(re.arg===void 0?null:re.arg)}}function us(){gr()}function e1(K,re,Ce){Ee.copyWithin(K,re,re+Ce)}function t1(){return Ee.length}function ra(K){try{return W.grow(K-me.byteLength+65535>>>16),Qe(W.buffer),1}catch(re){}}function lh(K){var re=t1(),Ce=2147483648;if(K>Ce)return!1;for(var et=1;et<=4;et*=2){var Ct=re*(1+.2/et);Ct=Math.min(Ct,K+100663296);var xt=Math.min(Ce,Ae(Math.max(K,Ct),65536)),je=ra(xt);if(je)return!0}return!1}var ji={mappings:{},buffers:[null,[],[]],printChar:function(K,re){var Ce=ji.buffers[K];re===0||re===10?((K===1?T:M)(te(Ce,0)),Ce.length=0):Ce.push(re)},varargs:void 0,get:function(){ji.varargs+=4;var K=ze[ji.varargs-4>>2];return K},getStr:function(K){var re=oe(K);return re},get64:function(K,re){return K}};function uh(K){return 0}function n1(K,re,Ce,et,Ct){}function ch(K,re,Ce,et){for(var Ct=0,xt=0;xt>2],Xe=ze[re+(xt*8+4)>>2],rn=0;rn>2]=Ct,0}var kn={a:us,d:e1,e:lh,f:uh,c:n1,b:ch},r1=na(),hh=s.___wasm_call_ctors=function(){return(hh=s.___wasm_call_ctors=s.asm.h).apply(null,arguments)},a1=s._init=function(){return(a1=s._init=s.asm.i).apply(null,arguments)},dh=s._register_tensor=function(){return(dh=s._register_tensor=s.asm.j).apply(null,arguments)},s1=s._dispose_data=function(){return(s1=s._dispose_data=s.asm.k).apply(null,arguments)},Gi=s._dispose=function(){return(Gi=s._dispose=s.asm.l).apply(null,arguments)},qi=s._Abs=function(){return(qi=s._Abs=s.asm.n).apply(null,arguments)},i1=s._Add=function(){return(i1=s._Add=s.asm.o).apply(null,arguments)},o1=s._AddN=function(){return(o1=s._AddN=s.asm.p).apply(null,arguments)},l1=s._ArgMax=function(){return(l1=s._ArgMax=s.asm.q).apply(null,arguments)},Te=s._AvgPool=function(){return(Te=s._AvgPool=s.asm.r).apply(null,arguments)},u1=s._BatchMatMul=function(){return(u1=s._BatchMatMul=s.asm.s).apply(null,arguments)},c1=s._Ceil=function(){return(c1=s._Ceil=s.asm.t).apply(null,arguments)},h1=s._ClipByValue=function(){return(h1=s._ClipByValue=s.asm.u).apply(null,arguments)},d1=s._Conv2D=function(){return(d1=s._Conv2D=s.asm.v).apply(null,arguments)},p1=s._Conv2DBackpropInput=function(){return(p1=s._Conv2DBackpropInput=s.asm.w).apply(null,arguments)},cs=s._Cos=function(){return(cs=s._Cos=s.asm.x).apply(null,arguments)},f1=s._CropAndResize=function(){return(f1=s._CropAndResize=s.asm.y).apply(null,arguments)},m1=s._Cumsum=function(){return(m1=s._Cumsum=s.asm.z).apply(null,arguments)},A1=s._DepthToSpace=function(){return(A1=s._DepthToSpace=s.asm.A).apply(null,arguments)},y1=s._DepthwiseConv2dNative=function(){return(y1=s._DepthwiseConv2dNative=s.asm.B).apply(null,arguments)},g1=s._Equal=function(){return(g1=s._Equal=s.asm.C).apply(null,arguments)},x1=s._Exp=function(){return(x1=s._Exp=s.asm.D).apply(null,arguments)},w1=s._FlipLeftRight=function(){return(w1=s._FlipLeftRight=s.asm.E).apply(null,arguments)},b1=s._Floor=function(){return(b1=s._Floor=s.asm.F).apply(null,arguments)},_1=s._FloorDiv=function(){return(_1=s._FloorDiv=s.asm.G).apply(null,arguments)},Ia=s._FusedBatchNorm=function(){return(Ia=s._FusedBatchNorm=s.asm.H).apply(null,arguments)},au=s._FusedConv2D=function(){return(au=s._FusedConv2D=s.asm.I).apply(null,arguments)},su=s._FusedDepthwiseConv2D=function(){return(su=s._FusedDepthwiseConv2D=s.asm.J).apply(null,arguments)},v1=s._Gather=function(){return(v1=s._Gather=s.asm.K).apply(null,arguments)},k1=s._GatherNd=function(){return(k1=s._GatherNd=s.asm.L).apply(null,arguments)},I1=s._Greater=function(){return(I1=s._Greater=s.asm.M).apply(null,arguments)},N1=s._GreaterEqual=function(){return(N1=s._GreaterEqual=s.asm.N).apply(null,arguments)},S1=s._LeakyRelu=function(){return(S1=s._LeakyRelu=s.asm.O).apply(null,arguments)},Ve=s._Less=function(){return(Ve=s._Less=s.asm.P).apply(null,arguments)},T1=s._LessEqual=function(){return(T1=s._LessEqual=s.asm.Q).apply(null,arguments)},E1=s._Log=function(){return(E1=s._Log=s.asm.R).apply(null,arguments)},C1=s._LogicalAnd=function(){return(C1=s._LogicalAnd=s.asm.S).apply(null,arguments)},R1=s._Max=function(){return(R1=s._Max=s.asm.T).apply(null,arguments)},F1=s._MaxPool=function(){return(F1=s._MaxPool=s.asm.U).apply(null,arguments)},M1=s._Maximum=function(){return(M1=s._Maximum=s.asm.V).apply(null,arguments)},iu=s._Mean=function(){return(iu=s._Mean=s.asm.W).apply(null,arguments)},ph=s._Min=function(){return(ph=s._Min=s.asm.X).apply(null,arguments)},fh=s._Minimum=function(){return(fh=s._Minimum=s.asm.Y).apply(null,arguments)},$1=s._Multiply=function(){return($1=s._Multiply=s.asm.Z).apply(null,arguments)},D1=s._Neg=function(){return(D1=s._Neg=s.asm._).apply(null,arguments)},O1=s._NonMaxSuppressionV3=function(){return(O1=s._NonMaxSuppressionV3=s.asm.$).apply(null,arguments)},z1=s._NonMaxSuppressionV4=function(){return(z1=s._NonMaxSuppressionV4=s.asm.aa).apply(null,arguments)},P1=s._NonMaxSuppressionV5=function(){return(P1=s._NonMaxSuppressionV5=s.asm.ba).apply(null,arguments)},L1=s._NotEqual=function(){return(L1=s._NotEqual=s.asm.ca).apply(null,arguments)},W1=s._OneHot=function(){return(W1=s._OneHot=s.asm.da).apply(null,arguments)},nt=s._PadV2=function(){return(nt=s._PadV2=s.asm.ea).apply(null,arguments)},B1=s._Pow=function(){return(B1=s._Pow=s.asm.fa).apply(null,arguments)},V1=s._Prelu=function(){return(V1=s._Prelu=s.asm.ga).apply(null,arguments)},U1=s._Prod=function(){return(U1=s._Prod=s.asm.ha).apply(null,arguments)},Xi=s._RealDiv=function(){return(Xi=s._RealDiv=s.asm.ia).apply(null,arguments)},mh=s._Relu=function(){return(mh=s._Relu=s.asm.ja).apply(null,arguments)},Ah=s._Relu6=function(){return(Ah=s._Relu6=s.asm.ka).apply(null,arguments)},yh=s._ResizeBilinear=function(){return(yh=s._ResizeBilinear=s.asm.la).apply(null,arguments)},H1=s._Reverse=function(){return(H1=s._Reverse=s.asm.ma).apply(null,arguments)},j1=s._RotateWithOffset=function(){return(j1=s._RotateWithOffset=s.asm.na).apply(null,arguments)},gh=s._Round=function(){return(gh=s._Round=s.asm.oa).apply(null,arguments)},G1=s._Rsqrt=function(){return(G1=s._Rsqrt=s.asm.pa).apply(null,arguments)},xh=s._ScatterNd=function(){return(xh=s._ScatterNd=s.asm.qa).apply(null,arguments)},Na=s._SelectV2=function(){return(Na=s._SelectV2=s.asm.ra).apply(null,arguments)},q1=s._Sigmoid=function(){return(q1=s._Sigmoid=s.asm.sa).apply(null,arguments)},X1=s._Sin=function(){return(X1=s._Sin=s.asm.ta).apply(null,arguments)},D2=s._Softmax=function(){return(D2=s._Softmax=s.asm.ua).apply(null,arguments)},wh=s._Sqrt=function(){return(wh=s._Sqrt=s.asm.va).apply(null,arguments)},K1=s._Square=function(){return(K1=s._Square=s.asm.wa).apply(null,arguments)},Z1=s._SquaredDifference=function(){return(Z1=s._SquaredDifference=s.asm.xa).apply(null,arguments)},Y1=s._Step=function(){return(Y1=s._Step=s.asm.ya).apply(null,arguments)},J1=s._StridedSlice=function(){return(J1=s._StridedSlice=s.asm.za).apply(null,arguments)},Q1=s._Sub=function(){return(Q1=s._Sub=s.asm.Aa).apply(null,arguments)},ef=s._Sum=function(){return(ef=s._Sum=s.asm.Ba).apply(null,arguments)},tf=s._Tanh=function(){return(tf=s._Tanh=s.asm.Ca).apply(null,arguments)},nf=s._Tile=function(){return(nf=s._Tile=s.asm.Da).apply(null,arguments)},rf=s._TopK=function(){return(rf=s._TopK=s.asm.Ea).apply(null,arguments)},af=s._Transpose=function(){return(af=s._Transpose=s.asm.Fa).apply(null,arguments)},sf=s.__FusedMatMul=function(){return(sf=s.__FusedMatMul=s.asm.Ga).apply(null,arguments)},of=s._malloc=function(){return(of=s._malloc=s.asm.Ha).apply(null,arguments)},lf=s._free=function(){return(lf=s._free=s.asm.Ia).apply(null,arguments)},bh=s.stackSave=function(){return(bh=s.stackSave=s.asm.Ja).apply(null,arguments)},_h=s.stackRestore=function(){return(_h=s.stackRestore=s.asm.Ka).apply(null,arguments)},ou=s.stackAlloc=function(){return(ou=s.stackAlloc=s.asm.La).apply(null,arguments)};s.cwrap=Y;var Ki;function uf(K){this.name="ExitStatus",this.message="Program terminated with exit("+K+")",this.status=K}ta=function K(){Ki||lu(),Ki||(ta=K)};function lu(K){if(K=K||c,sr>0||(Kn(),sr>0))return;function re(){Ki||(Ki=!0,s.calledRun=!0,!U&&(Dn(),pn(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),nn()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),re()},1)):re()}if(s.run=lu,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return lu(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),gk=rt((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),xk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),wk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),bk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),_k=rt((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],b=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,b=Math.max(b,d.length)),m=0,A=-32;A>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),vk=rt((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),kk=rt((e,t)=>{(function(n,r){var a=(0,eval)("this"),s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,N){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,_(n)]:w==null?b():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(_(M.S),n),(x.pass||N||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,N=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(N||(w=[N++]);T{var n=gk(),r=xk(),a=wk(),s=bk(),i=_k(),o=vk(),l=kk();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),Ik=rt(()=>{}),Nk="3.3.0",Sk="3.3.0",Tk="3.3.0",Ek="3.3.0",Ck="3.3.0",Rk=1e-7,Fk=1e-4,Rh=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},fu=class{refCount(e){return ir("refCount")}incRef(e){return ir("incRef")}timerAvailable(){return!0}time(e){return ir("time")}read(e){return ir("read")}readSync(e){return ir("readSync")}numDataIds(){return ir("numDataIds")}disposeData(e,t){return ir("disposeData")}write(e,t,n){return ir("write")}move(e,t,n,r,a){return ir("move")}memory(){return ir("memory")}floatPrecision(){return ir("floatPrecision")}epsilon(){return this.floatPrecision()===32?Rk:Fk}dispose(){return ir("dispose")}};function ir(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function Y2(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function Mk(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r,a,s=0;for(;n>0;)s=Math.random()*n|0,n--,r=e[n],a=t[n],e[n]=e[s],t[n]=t[s],e[s]=r,t[s]=a}function mu(e,t,n){return Math.max(e,Math.min(t,n))}function $k(e){return e%2==0?e:e+1}function Dk(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ds(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function ps(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||cn(e)&&!n)for(let r=0;r0,n){return new Promise((r,a)=>{let s=0,i=()=>{if(e()){r();return}s++;let o=t(s);if(n!=null&&s>=n){a();return}setTimeout(i,o)};i()})}function Uk(e,t){let n=1,r=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let a=e.slice();return a[r]=t/n,a}function or(e,t){let n=t.length;return e=e==null?t.map((r,a)=>a):[].concat(e),F(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(r=>Kt(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function J2(e,t){let n=[],r=[],a=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||a?null:or(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),r.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),r.push(o))}return{newShape:n,keptDims:r}}function Q2(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function e5(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function t5(e,t){for(let n=0;nt+=n.length),t}function Ea(e){return typeof e=="string"||e instanceof String}function a5(e){return typeof e=="boolean"}function s5(e){return typeof e=="number"}function Fh(e){return Array.isArray(e)?Fh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":s5(e)?"float32":Ea(e)?"string":a5(e)?"bool":"float32"}function Ca(e){return!!(e&&e.constructor&&e.call&&e.apply)}function Mh(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function i5(e,t,n){let r=new Array;if(t.length===1){let a=t[0];for(let s=0;so*l);for(let o=0;or*a);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return i5(0,e,t)}function Af(e,t){let n=$h(e,t);for(let r=0;rr*a,1);if(t==null||t==="float32")return ao(e,new Float32Array(n));if(t==="int32")return ao(e,new Int32Array(n));if(t==="bool")return ao(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function yf(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function Gk(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let a=0;a{let[n,r]=t.split(":");this.urlFlags[n]=Kk(n,r)})}};function Xk(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(Zk(t,r[0],r[1]),r.join("="))),t}function Zk(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function Kk(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return wr}var wr=null;function Yk(e){wr=e}var xf;function u5(){if(xf==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");xf=e}return xf}function Jk(){let e=u5();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function wf(e,t){let n=Jk();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var so="Abs",io="Acos",oo="Acosh",Ra="Add",fs="AddN",Dh="All",Oh="Any",ms="ArgMax",yu="ArgMin",lo="Asin",uo="Asinh",co="Atan",ho="Atanh",po="Atan2",As="AvgPool",zh="AvgPoolGrad",gu="AvgPool3D",Ph="AvgPool3DGrad",ys="BatchMatMul",xu="BatchToSpaceND",Lh="Bincount",c5="BroadcastTo",gs="Cast",xs="Ceil",Fa="ClipByValue",Wh="Complex",wu="ComplexAbs",fo="Concat",ws="Conv2D",Bh="Conv2DBackpropFilter",bs="Conv2DBackpropInput",bu="Conv3D",Vh="Conv3DBackpropFilterV2",Uh="Conv3DBackpropInputV2",_s="Cos",mo="Cosh",vs="Cumsum",Ao="CropAndResize",Hh="DenseBincount",yo="DepthToSpace",ks="DepthwiseConv2dNative",jh="DepthwiseConv2dNativeBackpropFilter",Gh="DepthwiseConv2dNativeBackpropInput",qh="Diag",_u="Dilation2D",Xh="Dilation2DBackpropInput",Kh="Dilation2DBackpropFilter",Is="RealDiv",go="Elu",Zh="EluGrad",xo="Erf",wo="Equal",Ns="Exp",bo="ExpandDims",_o="Expm1",Yh="FFT",vu="Fill",vo="FlipLeftRight",Ss="Floor",Ts="FloorDiv",Es="FusedBatchNorm",ko="GatherV2",Io="GatherNd",No="Greater",Cs="GreaterEqual",Rs="Identity",Jh="IFFT",Qh="Imag",So="IsFinite",To="IsInf",Eo="IsNan",Fs="LeakyRelu",Co="Less",Ro="LessEqual",ed="LinSpace",Ms="Log",Fo="Log1p",Mo="LogicalAnd",ku="LogicalNot",Iu="LogicalOr",h5="LogSoftmax",Nu="LRN",td="LRNGrad",$s="Max",Ds="Maximum",Os="MaxPool",nd="MaxPoolGrad",Su="MaxPool3D",rd="MaxPool3DGrad",ad="MaxPoolWithArgmax",zs="Mean",Ps="Min",Ls="Minimum",Tu="MirrorPad",$o="Mod",sd="Multinomial",Ws="Multiply",Do="Neg",Oo="NotEqual",zo="NonMaxSuppressionV3",Po="NonMaxSuppressionV4",Lo="NonMaxSuppressionV5",Wo="OnesLike",Bs="OneHot",Bo="Pack",Vs="PadV2",Qk="Pool",Us="Pow",Hs="Prelu",Vo="Prod",Eu="Range",id="Real",Uo="Reciprocal",js="Relu",Ho="Reshape",Cu="ResizeNearestNeighbor",od="ResizeNearestNeighborGrad",Gs="ResizeBilinear",ld="ResizeBilinearGrad",qs="Relu6",Xs="Reverse",Ks="Round",Zs="Rsqrt",jo="ScatterNd",Go="Select",qo="Selu",Xo="Slice",Ys="Sin",Ko="Sinh",Zo="Sign",Js="Sigmoid",Yo="Softplus",Qs="Sqrt",ei="Sum",Ru="SpaceToBatchND",Jo="SplitV",ti="Softmax",ni="SquaredDifference",Fu="Square",ri="Sub",ud="SparseToDense",Qo="StridedSlice",el="Tan",ai="Tanh",Ma="Tile",tl="TopK",cd="Transform",si="Transpose",hd="Unique",nl="Unpack",Mu="UnsortedSegmentSum",rl="ZerosLike",$a="Step",dd="FromPixels",al="RotateWithOffset",ii="_FusedMatMul",oi="FusedConv2D",li="FusedDepthwiseConv2D",sl=wf("kernelRegistry",()=>new Map),$u=wf("gradRegistry",()=>new Map);function pd(e,t){let n=bf(e,t);return sl.get(n)}function _f(e){return $u.get(e)}function il(e){let t=sl.entries(),n=[];for(;;){let{done:r,value:a}=t.next();if(r)break;let[s,i]=a,[o]=s.split("_");o===e&&n.push(i)}return n}function ui(e){let{kernelName:t,backendName:n}=e,r=bf(t,n);sl.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),sl.set(r,e)}function d5(e){let{kernelName:t}=e;$u.has(t)&&J().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),$u.set(t,e)}function e9(e,t){let n=bf(e,t);if(!sl.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);sl.delete(n)}function t9(e){if(!$u.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);$u.delete(e)}function n9(e,t){il(e).forEach(n=>{let r=Object.assign({},n,{backendName:t});ui(r)})}function bf(e,t){return`${t}_${e}`}var v={};We(v,{arraysEqual:()=>oa,assert:()=>F,assertNonNegativeIntegerDimensions:()=>yf,assertNonNull:()=>ds,assertShapesMatch:()=>un,bytesFromStringArray:()=>r5,bytesPerElement:()=>mf,checkConversionForErrors:()=>t5,clamp:()=>mu,computeStrides:()=>ro,createScalarValue:()=>r9,createShuffledIndices:()=>Bk,decodeString:()=>md,distSquared:()=>zk,encodeString:()=>Ou,fetch:()=>a9,flatten:()=>ps,getArrayFromDType:()=>e5,getTypedArrayFromDType:()=>Q2,hasEncodingLoss:()=>Hk,indexToLoc:()=>qk,inferDtype:()=>Fh,inferFromImplicitShape:()=>Uk,isBoolean:()=>a5,isFunction:()=>Ca,isInt:()=>Kt,isNumber:()=>s5,isPromise:()=>gf,isScalarShape:()=>Pk,isString:()=>Ea,isTypedArray:()=>cn,isValidDtype:()=>n5,locToIndex:()=>Gk,makeOnesTypedArray:()=>Af,makeZerosNestedTypedArray:()=>jk,makeZerosTypedArray:()=>$h,nearestDivisor:()=>Mh,nearestLargerEven:()=>$k,now:()=>Du,parseAxisParam:()=>or,randUniform:()=>Ok,repeatedTry:()=>Vk,rightPad:()=>Au,shuffle:()=>Y2,shuffleCombo:()=>Mk,sizeFromShape:()=>Lt,sizeToSquarishShape:()=>Wk,squeezeShape:()=>J2,sum:()=>Dk,tanh:()=>Lk,toNestedArray:()=>ao,toTypedArray:()=>fd});function r9(e,t){return t==="string"?Ou(e):fd([e],t)}function s9(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function fd(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=ps(e)),J().getBool("DEBUG")&&t5(e,t),s9(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},s,i=Du();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(let o of r)o.dataSync();s=Promise.resolve({kernelMs:Du()-i})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{i9(u,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),r,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],a,o[2])})})}};function i9(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${c} %c${u} %c${h} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function u9(e,t,n){let r={},a={};for(let l=0;lr[m.id]=!0),p=!0,a[u.id]=!0;break}if(p)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let h=0;h=0;a--){let s=t[a],i=[];if(s.outputs.forEach(l=>{let u=e[l.id];u!=null?i.push(u):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let u=n(()=>o[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[l];if(!oa(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let h=e[c.id];e[c.id]=r(h,u),h.dispose()}}}}var p5=20,zu=3,vf=7;function d9(e,t,n,r){let a=ro(t),s=h9(e,t,n,a),i=t.length,o=Ad(e,t,n,a,s),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(u=>" "+u).join(` `)),l.join(` -`)}function c9(e,t,n,r){let a=Lt(t),s=r[r.length-1],i=new Array(s).fill(0),o=t.length,l=n==="complex64"?Lu(e):e;if(o>1)for(let u=0;ud5){let A=zu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-zu)*i,o*i));return n==="complex64"&&(y=Lu(y),g=Lu(g)),["["+y.map((b,_)=>Pu(b,a[_],n)).join(", ")+", ..., "+g.map((b,_)=>Pu(b,a[o-zu+_],n)).join(", ")+"]"]}let m=n==="complex64"?Lu(e):Array.from(e);return["["+m.map((A,y)=>Pu(A,a[y],n)).join(", ")+"]"]}let u=t.slice(1),c=r.slice(1),h=r[0]*i,d=[];if(o>d5){for(let m=0;m1)for(let u=0;up5){let A=zu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-zu)*i,o*i));return n==="complex64"&&(y=Lu(y),g=Lu(g)),["["+y.map((b,_)=>Pu(b,a[_],n)).join(", ")+", ..., "+g.map((b,_)=>Pu(b,a[o-zu+_],n)).join(", ")+"]"]}let m=n==="complex64"?Lu(e):Array.from(e);return["["+m.map((A,y)=>Pu(A,a[y],n)).join(", ")+"]"]}let u=t.slice(1),c=r.slice(1),h=r[0]*i,d=[];if(o>p5){for(let m=0;m`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||Q2(t,this.size),this.strides=ro(e)}set(e,...t){t.length===0&&(t=[0]),F(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rmd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Dr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>md(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Dr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Dr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return ol.print(this,e)}clone(){return this.throwIfDisposed(),ol.clone(this)}toString(e=!1){let t=this.dataSync();return h9(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),ol.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Dr().makeVariable(this,e,t,n)}};Object.defineProperty(Ge,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return wf("Tensor",()=>Ge)}Z();var Wu=class extends Ge{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!oa(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Dr().disposeTensor(this),this.dataId=e.dataId,Dr().incRef(this,null)}dispose(){Dr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Wu,Symbol.hasInstance,{value:e=>e instanceof Ge&&e.assign!=null&&e.assign instanceof Function});var br={};We(br,{assertTypesMatch:()=>f5,getTensorsInContainer:()=>kf,isTensorInList:()=>A9,makeTypesMatch:()=>Nt});var If;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(If||(If={}));var Nf;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(Nf||(Nf={}));var Sf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(Sf||(Sf={}));var Tf;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(Tf||(Tf={}));var Ef;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(Ef||(Ef={}));var y9={float32:Tf,int32:Nf,bool:Sf,complex64:Ef};function lr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return y9[e][t]}function yd(e){return lr(e,"int32")}function Nt(e,t){if(e.dtype===t.dtype)return[e,t];let n=lr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function f5(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function A9(e,t){return t.some(n=>n.id===e.id)}function kf(e){let t=[],n=new Set;return m5(e,t,n),t}function m5(e,t,n){if(e==null)return;if(e instanceof Ge){t.push(e);return}if(!g9(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),m5(s,t,n))}}function g9(e){return Array.isArray(e)||typeof e=="object"}function Cf(e){return e.kernelName!=null}var A5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Bu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new A5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){il(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof fu)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Bu.nextTensorId++}nextVariableId(){return Bu.nextVariableId++}clone(e){let t=$.runKernel(Rs,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(gs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(pd(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=Cf(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(Cf(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=pd(p,this.backendName);F(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let b=g.map(_=>{if(_.rank!=null)return _;let{dataId:w,shape:x,dtype:N}=_;return this.makeTensorFromDataId(w,x,N)});if(r){let _=this.getTensorsForGradient(p,f,b);n=this.saveTensorsForBackwardMode(_)}return b}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:u,attrs:c}=e,h=Cf(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,u,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,u,t,h,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(p=>u[p]!=null?u[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=_f(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,u)=>s[u]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&Ea(e[0])&&(a=e.map(o=>Ou(o)));let s=r.write(a,t,n),i=new Ge(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=n5(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ge(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Wu(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*mf(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Wu||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*mf(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=_f(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((u,c)=>{if(u==null){let h=n[c],d=$h(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return u}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=kf(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(F(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));F(a instanceof Ge,()=>"The result y returned by f() must be a tensor.");let s=l9(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?x9(a.shape):n,u9(i,s,l=>this.tidy(l),w9);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return F(Ca(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(i=>i instanceof Ge),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),F(n.value instanceof Ge,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(Ca(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),u=Array.isArray(l)?l:[l];F(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),F(u.every(h=>h instanceof Ge),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((h,d)=>{c[d]=()=>h}),c};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Du(),n=await this.backend.time(e);return n.wallMs=Du()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new A5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Bu.nextTensorId=0;Bu.nextVariableId=0;function x9(e){let t=Af(Lt(e),"float32");return $.makeTensor(t,e,"float32")}function y5(){let e=l5();if(e._tfengine==null){let t=new o5(e);e._tfengine=new Bu(t)}return Zk(e._tfengine.ENV),p9(()=>e._tfengine),e._tfengine}var $=y5();function w9(e,t){let n={a:e,b:t};return $.runKernel(Ra,n)}var Vu={};We(Vu,{isBrowser:()=>g5,isMobile:()=>b9});function _9(){return typeof navigator!="undefined"&&navigator!=null}function b9(){if(_9()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function g5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var _r=J();_r.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});_r.registerFlag("IS_BROWSER",()=>g5());_r.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");_r.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));_r.registerFlag("PROD",()=>!1);_r.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>_r.getBool("DEBUG"));_r.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);_r.registerFlag("IS_TEST",()=>!1);_r.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);_r.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Or(e,t){let n=e;if(cn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||cn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&x5(e,r,[]),r}function x5(e,t,n){if(n=n||[],!Array.isArray(e)&&!cn(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),w5(r,a,t,n),e==null||!cn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Or(e,a);!cn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?fd(e,a):ps(e,[],!0);return $.makeTensor(i,s,a)}function Uu(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>C(a,`${t}[${s}]`,n,r))}var b5="__op";function O(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+b5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return gf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function v9(e,t){let n=C(e,"real","complex"),r=C(t,"imag","complex");un(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Wh,a)}var Da=O({complex_:v9});function Oa(e,t,n,r){if(r==null&&(r=Fh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!cn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){yf(t);let a=Lt(t),s=Lt(n);F(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!cn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?fd(e,r):ps(e,[],!0),$.makeTensor(e,t,r)}function vr(e,t,n){let r=Or(e,n);return Oa(e,t,r,n)}var Rf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},gd=4;async function I9(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+gd*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var Ff=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function v5(e){return Ff?Buffer.byteLength(e):new Blob([e]).size}function S9(e){if(Ff)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function k5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Hu(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:v5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:v5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function E9(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function C9(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function R9(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function N9(){let e=E9(),t=C9(),n=R9();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var Rt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Rt.instance==null&&(Rt.instance=new Rt),Rt.instance}static registerSaveRouter(e){Rt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Rt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Rt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Rt.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?Rt.getInstance().loadRouters:Rt.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},F9=e=>Rt.registerSaveRouter(e),M9=e=>Rt.registerLoadRouter(e),$9=e=>Rt.getSaveHandlers(e),D9=(e,t)=>Rt.getLoadHandlers(e,t),$f="tensorflowjs",Df=1,ci="models_store",za="model_info_store";function I5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function Of(e){let t=e.result;t.createObjectStore(ci,{keyPath:"modelPath"}),t.createObjectStore(za,{keyPath:"modelPath"})}var hi=class{constructor(e){if(this.indexedDB=I5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open($f,Df);a.onupgradeneeded=()=>Of(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ci,"readonly"),o=i.objectStore(ci).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Hu(t),o=s.transaction(za,"readwrite"),l=o.objectStore(za),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),c;u.onsuccess=()=>{c=s.transaction(ci,"readwrite");let h=c.objectStore(ci).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(za);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},u.onerror=h=>(s.close(),r(u.error)),o.oncomplete=()=>{c==null?s.close():c.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};hi.URL_SCHEME="indexeddb://";var N5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(hi.URL_SCHEME)?O9(e.slice(hi.URL_SCHEME.length)):null;Rt.registerSaveRouter(N5);Rt.registerLoadRouter(N5);function O9(e){return new hi(e)}function z9(e){return e.startsWith(hi.URL_SCHEME)?e.slice(hi.URL_SCHEME.length):e}var P9=class{constructor(){this.indexedDB=I5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open($f,Df);n.onupgradeneeded=()=>Of(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(za,"readonly"),s=a.objectStore(za).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=z9(e),new Promise((t,n)=>{let r=this.indexedDB.open($f,Df);r.onupgradeneeded=()=>Of(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(za,"readwrite"),i=s.objectStore(za),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=i.delete(e),c=()=>{l=a.transaction(ci,"readwrite");let h=l.objectStore(ci).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};u.onsuccess=c,u.onerror=h=>(c(),a.close(),n(o.error))}},o.onerror=u=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},la="/",ll="tensorflowjs_models",S5="info",L9="model_topology",W9="weight_specs",B9="weight_data",V9="model_metadata";function T5(e){return{info:[ll,e,S5].join(la),topology:[ll,e,L9].join(la),weightSpecs:[ll,e,W9].join(la),weightData:[ll,e,B9].join(la),modelMetadata:[ll,e,V9].join(la)}}function U9(e){let t=e.split(la);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(la)}function H9(e){return e.startsWith(di.URL_SCHEME)?e.slice(di.URL_SCHEME.length):e}var di=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=T5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Hu(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,S9(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=T9(s),t}};di.URL_SCHEME="localstorage://";var E5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(di.URL_SCHEME)?j9(e.slice(di.URL_SCHEME.length)):null;Rt.registerSaveRouter(E5);Rt.registerLoadRouter(E5);function j9(e){return new di(e)}var G9=class{constructor(){F(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=ll+la,n=la+S5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(ul)&&(e=e.slice(0,e.indexOf(ul))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Yn.getInstance();F(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function xd(e){if(e.indexOf(ul)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Yn.getSchemes().join(",")}`);return{scheme:e.split(ul)[0],path:e.split(ul)[1]}}async function C5(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=Rt.getLoadHandlers(e);F(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=Rt.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=xd(e).scheme,l=xd(e).path,u=o===xd(e).scheme,c=await a.load();n&&u&&await Yn.getManager(o).removeModel(l);let h=await i.save(c);return n&&!u&&await Yn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function q9(){let e=Yn.getSchemes(),t={};for(let n of e){let r=await Yn.getManager(n).listModels();for(let a in r){let s=n+ul+a;t[s]=r[a]}}return t}async function X9(e){let t=xd(e);return Yn.getManager(t.scheme).removeModel(t.path)}async function K9(e,t){return C5(e,t,!1)}async function Z9(e,t){return C5(e,t,!0)}var Y9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new Y9);try{Yn.registerManager(di.URL_SCHEME,new G9)}catch(e){}try{Yn.registerManager(hi.URL_SCHEME,new P9)}catch(e){}}var J9={importFetch:()=>Z8()},zf,Q9=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(zf==null&&(zf=J9.importFetch()),zf(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new Q9);function Ue(e,t="float32",n){return t=t||"float32",yf(e),new Wt(e,t,n)}function eI(e,t){let n=C(e,"x","cast");if(!t5(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(gs,r,a)}var ge=O({cast_:eI});function tI(e){let t={x:C(e,"x","clone","string_or_numeric")};return $.runKernel(Rs,t)}var zr=O({clone_:tI});function R5(e,t=!1){console.log(e.toString(t))}y5();var nI={buffer:Ue,cast:ge,clone:zr,print:R5};f9(nI);var Nn={};We(Nn,{browserFiles:()=>rI,browserHTTPRequest:()=>sI,concatenateArrayBuffers:()=>Mf,copyModel:()=>K9,decodeWeights:()=>_5,encodeWeights:()=>I9,fromMemory:()=>iI,getLoadHandlers:()=>D9,getModelArtifactsInfoForJSON:()=>Hu,getSaveHandlers:()=>$9,http:()=>Lf,isHTTPScheme:()=>Pf,listModels:()=>q9,loadWeights:()=>aI,moveModel:()=>Z9,registerLoadRouter:()=>M9,registerSaveRouter:()=>F9,removeModel:()=>X9,weightsLoaderFactory:()=>F5,withSaveHandler:()=>oI});var lI="model",uI=".json",cI=".weights.bin";function M5(e){return new Promise(t=>setTimeout(t)).then(e)}var cl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(cl.URL_SCHEME)&&(e=e.slice(cl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=lI),this.modelTopologyFileName=e+uI,this.weightDataFileName=e+cI}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await M5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await M5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Hu(e)}}}};cl.URL_SCHEME="downloads://";var hI=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let u;try{u=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let c=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),c.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let b={modelTopology:o,weightSpecs:c,weightData:Mf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(b.signature=i.signature),i.userDefinedMetadata!=null&&(b.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(b.modelInitializer=i.modelInitializer),n(b)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(u[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>k5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=k5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},pI=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(cl.URL_SCHEME)?dI(e.slice(cl.URL_SCHEME.length)):null;Rt.registerSaveRouter(pI);function dI(e="model"){return new cl(e)}function rI(e){return new hI(e)}function $5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(u=>{let c=n+ ++a/e.length*(r-n);return t(c),u}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,u){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),F(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(s))}async function D5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(u=>n(u,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await $5(r,t.onProgress,a,s)).map(u=>u.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await $5(i,t.onProgress,o,l)}async function aI(e,t="",n,r){return F5(a=>D5(a,{requestInit:r}))(e,t,n)}function F5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=Rf[y]*Lt(A.shape),b=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((_,w)=>{_===A.name&&(b(),i[w]=!0)}):b(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. -Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),u=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let b=0;b{let _=A.slice(b.groupOffset,b.groupOffset+b.sizeBytes),w=_5(_,[b.manifestEntry]);for(let x in w)h[x]=w[x]}),d+=f}),h}}var fI="application/octet-stream",mI="application/json",Wf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(F(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:mI}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:fI}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Hu(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let u,c;r!=null&&([u,c]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:u,weightData:c,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=AI(t),a=this.weightPathPrefix||n,s=[];for(let u of e)s.push(...u.weights);let i=[],o=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(c)):i.push(a+c+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await D5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,Mf(l)]}};Wf.URL_SCHEME_REGEX=/^https?:\/\//;function AI(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function Pf(e){return e.match(Wf.URL_SCHEME_REGEX)!=null}var O5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>Pf(r)):n=Pf(e),n)return Lf(e,t)}return null};Rt.registerSaveRouter(O5);Rt.registerLoadRouter(O5);function Lf(e,t){return new Wf(e,t)}function sI(e,t){return Lf(e,t)}var Bf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},yI=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function iI(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Bf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Bf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Bf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function oI(e){return new yI(e)}var z5={};We(z5,{confusionMatrix:()=>gI});function xI(e,t,n=!1,r=!1){let a=C(e,"a","matMul"),s=C(t,"b","matMul");[a,s]=Nt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(ys,i,o)}var Ke=O({matMul_:xI});function wI(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:C(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel(Bs,a,s)}var hl=O({oneHot_:wI});function bI(e,t){let n=C(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(si,r,a)}var ot=O({transpose_:bI});function _I(e,t,n){let r=C(e,"labels","confusionMatrix"),a=C(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),F(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),F(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=hl(ge(r,"int32"),n),i=hl(ge(a,"int32"),n),o=ot(s),l=Ke(o,i);return ge(l,"int32")}var gI=O({confusionMatrix_:_I}),dl={};We(dl,{fromPixels:()=>II,fromPixelsAsync:()=>vI,toPixels:()=>kI});function wd(e,t,n){if(ds(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Or(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Oa(e,t,r,n)}var pl;function P5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(pd(dd,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(dd,d,p)}let[l,u]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],c;i?c=e.getContext("2d").getImageData(0,0,l,u).data:r||n?c=e.data:(s||a||o)&&(pl==null&&(pl=document.createElement("canvas").getContext("2d")),pl.canvas.width=l,pl.canvas.height=u,pl.drawImage(e,0,0,l,u),c=pl.getImageData(0,0,l,u).data);let h;if(t===4)h=new Int32Array(c);else{let d=l*u;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(c[0]=p*o,c[1]=p*o,c[2]=p*o):c[d]=p*o}let h=u*4;l[h+0]=Math.round(c[0]),l[h+1]=Math.round(c[1]),l[h+2]=Math.round(c[2]),l[h+3]=Math.round(c[3])}if(t!=null){t.width=a,t.height=r;let u=t.getContext("2d"),c=new ImageData(l,a,r);u.putImageData(c,0,0)}return n!==e&&n.dispose(),l}var II=O({fromPixels_:P5}),Vf={};We(Vf,{prepareAndValidate:()=>L5});function L5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Lt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/u),1].slice(0,s);return[l,i,u,c]}var Uf={};We(Uf,{calculateShapes:()=>W5,validateInput:()=>jf,validateUpdateShape:()=>Hf});function Hf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hCI,computeFlatOffset:()=>FI,computeOutShape:()=>B5,getNormalizedAxes:()=>U5,isSliceContinous:()=>RI,maskToAxes:()=>bd,parseSliceParams:()=>K5,sliceInfo:()=>MI,startForAxis:()=>q5,startIndicesWithElidedDims:()=>H5,stopForAxis:()=>X5,stopIndicesWithElidedDims:()=>j5,stridesForAxis:()=>G5,stridesWithElidedDims:()=>V5});function CI(e,t,n){let r=e.shape.length;F(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),F(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function bd(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function B5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;c=H5(i,p,f,r,e),h=j5(o,p,f,a,e),d=V5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=Z5(t,n,o),u=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=Z5(t,n,o),u=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=mu(0,i,l-1),i}function X5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=mu(0,i,l):i=mu(-1,i,l-1),i}function RI(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function FI(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function MI(e,t,n,r,a,s,i,o,l){let u=t.slice(),c=n.slice(),h=r;r==null&&(h=new Array(u.length));let d=bd(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-u.length,f=bd(o),m=e.slice();f.forEach(x=>{u[x]=0,c[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=U5(m,d,p,u,c,h,a,s,i);u=A,c=y,h=g;let b=bd(l);b.forEach(x=>{c[x]=u[x]+1,h[x]=1});let _=B5(u,c,h),w=_.filter((x,N)=>b.indexOf(N)===-1);return{nonStrided:h.every(x=>x===1),$begin:u,$end:c,$strides:h,size:_,newShape:m,outShape:w}}var ae={};We(ae,{Serializable:()=>J5,SerializationMap:()=>pi,registerClass:()=>Pa});var J5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},pi=class{constructor(){this.classNameMap={}}static getMap(){return pi.instance==null&&(pi.instance=new pi),pi.instance}static register(e){pi.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Pa(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),pi.register(e)}var Q5={};We(Q5,{TEST_EPSILON_FLOAT16:()=>ex,encodeStrings:()=>tx,expectArrayBuffersEqual:()=>LI,expectArraysClose:()=>$I,expectArraysEqual:()=>OI,expectNumbersClose:()=>zI,expectPromiseToFail:()=>DI,expectValuesInRange:()=>PI,testEpsilon:()=>Gf});var WI=.001,ex=.1;function $I(e,t,n){return n==null&&(n=Gf()),qf(e,t,(r,a)=>Xf(r,a,n))}function Gf(){return $.backend.floatPrecision()===32?WI:ex}function qf(e,t,n){let r=!0;if((cn(e)||cn(t))&&(r=!1),cn(e)&&cn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Or(e),o=Or(t);if(!oa(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=cn(e)?e:ps(e),s=cn(t)?t:ps(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. +`;return d[d.length-1]=" "+d[d.length-1]+"]"+(s?"":f),d}function Lu(e){let t=[];for(let n=0;n`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||e5(t,this.size),this.strides=ro(e)}set(e,...t){t.length===0&&(t=[0]),F(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rmd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Dr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>md(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Dr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Dr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return ol.print(this,e)}clone(){return this.throwIfDisposed(),ol.clone(this)}toString(e=!1){let t=this.dataSync();return d9(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),ol.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Dr().makeVariable(this,e,t,n)}};Object.defineProperty(Ge,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return wf("Tensor",()=>Ge)}Z();var Wu=class extends Ge{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!oa(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Dr().disposeTensor(this),this.dataId=e.dataId,Dr().incRef(this,null)}dispose(){Dr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Wu,Symbol.hasInstance,{value:e=>e instanceof Ge&&e.assign!=null&&e.assign instanceof Function});var br={};We(br,{assertTypesMatch:()=>m5,getTensorsInContainer:()=>kf,isTensorInList:()=>y9,makeTypesMatch:()=>Nt});var If;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(If||(If={}));var Nf;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(Nf||(Nf={}));var Sf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(Sf||(Sf={}));var Tf;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(Tf||(Tf={}));var Ef;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(Ef||(Ef={}));var g9={float32:Tf,int32:Nf,bool:Sf,complex64:Ef};function lr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return g9[e][t]}function yd(e){return lr(e,"int32")}function Nt(e,t){if(e.dtype===t.dtype)return[e,t];let n=lr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function m5(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function y9(e,t){return t.some(n=>n.id===e.id)}function kf(e){let t=[],n=new Set;return A5(e,t,n),t}function A5(e,t,n){if(e==null)return;if(e instanceof Ge){t.push(e);return}if(!x9(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),A5(s,t,n))}}function x9(e){return Array.isArray(e)||typeof e=="object"}function Cf(e){return e.kernelName!=null}var y5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Bu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new y5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){il(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof fu)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Bu.nextTensorId++}nextVariableId(){return Bu.nextVariableId++}clone(e){let t=$.runKernel(Rs,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(gs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(pd(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=Cf(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(Cf(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=pd(p,this.backendName);F(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let b=g.map(_=>{if(_.rank!=null)return _;let{dataId:w,shape:x,dtype:N}=_;return this.makeTensorFromDataId(w,x,N)});if(r){let _=this.getTensorsForGradient(p,f,b);n=this.saveTensorsForBackwardMode(_)}return b}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:u,attrs:c}=e,h=Cf(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,u,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,u,t,h,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(p=>u[p]!=null?u[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=_f(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,u)=>s[u]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&Ea(e[0])&&(a=e.map(o=>Ou(o)));let s=r.write(a,t,n),i=new Ge(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=r5(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ge(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Wu(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*mf(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Wu||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*mf(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=_f(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((u,c)=>{if(u==null){let h=n[c],d=$h(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return u}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=kf(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(F(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));F(a instanceof Ge,()=>"The result y returned by f() must be a tensor.");let s=u9(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?w9(a.shape):n,c9(i,s,l=>this.tidy(l),b9);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return F(Ca(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(i=>i instanceof Ge),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),F(n.value instanceof Ge,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(Ca(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),u=Array.isArray(l)?l:[l];F(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),F(u.every(h=>h instanceof Ge),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((h,d)=>{c[d]=()=>h}),c};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Du(),n=await this.backend.time(e);return n.wallMs=Du()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new y5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Bu.nextTensorId=0;Bu.nextVariableId=0;function w9(e){let t=Af(Lt(e),"float32");return $.makeTensor(t,e,"float32")}function g5(){let e=u5();if(e._tfengine==null){let t=new l5(e);e._tfengine=new Bu(t)}return Yk(e._tfengine.ENV),f9(()=>e._tfengine),e._tfengine}var $=g5();function b9(e,t){let n={a:e,b:t};return $.runKernel(Ra,n)}var Vu={};We(Vu,{isBrowser:()=>x5,isMobile:()=>_9});function v9(){return typeof navigator!="undefined"&&navigator!=null}function _9(){if(v9()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function x5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var _r=J();_r.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});_r.registerFlag("IS_BROWSER",()=>x5());_r.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");_r.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));_r.registerFlag("PROD",()=>!1);_r.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>_r.getBool("DEBUG"));_r.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);_r.registerFlag("IS_TEST",()=>!1);_r.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);_r.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Or(e,t){let n=e;if(cn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||cn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&w5(e,r,[]),r}function w5(e,t,n){if(n=n||[],!Array.isArray(e)&&!cn(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),b5(r,a,t,n),e==null||!cn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Or(e,a);!cn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?fd(e,a):ps(e,[],!0);return $.makeTensor(i,s,a)}function Uu(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>C(a,`${t}[${s}]`,n,r))}var _5="__op";function O(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+_5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return gf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function k9(e,t){let n=C(e,"real","complex"),r=C(t,"imag","complex");un(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Wh,a)}var Da=O({complex_:k9});function Oa(e,t,n,r){if(r==null&&(r=Fh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!cn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){yf(t);let a=Lt(t),s=Lt(n);F(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!cn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?fd(e,r):ps(e,[],!0),$.makeTensor(e,t,r)}function vr(e,t,n){let r=Or(e,n);return Oa(e,t,r,n)}var Rf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},gd=4;async function N9(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+gd*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var Ff=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function k5(e){return Ff?Buffer.byteLength(e):new Blob([e]).size}function T9(e){if(Ff)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function I5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Hu(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:k5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:k5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function C9(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function R9(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function F9(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function S9(){let e=C9(),t=R9(),n=F9();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var Rt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Rt.instance==null&&(Rt.instance=new Rt),Rt.instance}static registerSaveRouter(e){Rt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Rt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Rt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Rt.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?Rt.getInstance().loadRouters:Rt.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},M9=e=>Rt.registerSaveRouter(e),$9=e=>Rt.registerLoadRouter(e),D9=e=>Rt.getSaveHandlers(e),O9=(e,t)=>Rt.getLoadHandlers(e,t),$f="tensorflowjs",Df=1,ci="models_store",za="model_info_store";function N5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function Of(e){let t=e.result;t.createObjectStore(ci,{keyPath:"modelPath"}),t.createObjectStore(za,{keyPath:"modelPath"})}var hi=class{constructor(e){if(this.indexedDB=N5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open($f,Df);a.onupgradeneeded=()=>Of(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ci,"readonly"),o=i.objectStore(ci).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Hu(t),o=s.transaction(za,"readwrite"),l=o.objectStore(za),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),c;u.onsuccess=()=>{c=s.transaction(ci,"readwrite");let h=c.objectStore(ci).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(za);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},u.onerror=h=>(s.close(),r(u.error)),o.oncomplete=()=>{c==null?s.close():c.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};hi.URL_SCHEME="indexeddb://";var S5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(hi.URL_SCHEME)?z9(e.slice(hi.URL_SCHEME.length)):null;Rt.registerSaveRouter(S5);Rt.registerLoadRouter(S5);function z9(e){return new hi(e)}function P9(e){return e.startsWith(hi.URL_SCHEME)?e.slice(hi.URL_SCHEME.length):e}var L9=class{constructor(){this.indexedDB=N5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open($f,Df);n.onupgradeneeded=()=>Of(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(za,"readonly"),s=a.objectStore(za).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=P9(e),new Promise((t,n)=>{let r=this.indexedDB.open($f,Df);r.onupgradeneeded=()=>Of(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(za,"readwrite"),i=s.objectStore(za),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=i.delete(e),c=()=>{l=a.transaction(ci,"readwrite");let h=l.objectStore(ci).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};u.onsuccess=c,u.onerror=h=>(c(),a.close(),n(o.error))}},o.onerror=u=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},la="/",ll="tensorflowjs_models",T5="info",W9="model_topology",B9="weight_specs",V9="weight_data",U9="model_metadata";function E5(e){return{info:[ll,e,T5].join(la),topology:[ll,e,W9].join(la),weightSpecs:[ll,e,B9].join(la),weightData:[ll,e,V9].join(la),modelMetadata:[ll,e,U9].join(la)}}function H9(e){let t=e.split(la);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(la)}function j9(e){return e.startsWith(di.URL_SCHEME)?e.slice(di.URL_SCHEME.length):e}var di=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=E5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Hu(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,T9(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=E9(s),t}};di.URL_SCHEME="localstorage://";var C5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(di.URL_SCHEME)?G9(e.slice(di.URL_SCHEME.length)):null;Rt.registerSaveRouter(C5);Rt.registerLoadRouter(C5);function G9(e){return new di(e)}var q9=class{constructor(){F(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=ll+la,n=la+T5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(ul)&&(e=e.slice(0,e.indexOf(ul))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Yn.getInstance();F(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function xd(e){if(e.indexOf(ul)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Yn.getSchemes().join(",")}`);return{scheme:e.split(ul)[0],path:e.split(ul)[1]}}async function R5(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=Rt.getLoadHandlers(e);F(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=Rt.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=xd(e).scheme,l=xd(e).path,u=o===xd(e).scheme,c=await a.load();n&&u&&await Yn.getManager(o).removeModel(l);let h=await i.save(c);return n&&!u&&await Yn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function X9(){let e=Yn.getSchemes(),t={};for(let n of e){let r=await Yn.getManager(n).listModels();for(let a in r){let s=n+ul+a;t[s]=r[a]}}return t}async function K9(e){let t=xd(e);return Yn.getManager(t.scheme).removeModel(t.path)}async function Z9(e,t){return R5(e,t,!1)}async function Y9(e,t){return R5(e,t,!0)}var J9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new J9);try{Yn.registerManager(di.URL_SCHEME,new q9)}catch(e){}try{Yn.registerManager(hi.URL_SCHEME,new L9)}catch(e){}}var Q9={importFetch:()=>Y8()},zf,eI=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(zf==null&&(zf=Q9.importFetch()),zf(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new eI);function Ue(e,t="float32",n){return t=t||"float32",yf(e),new Wt(e,t,n)}function tI(e,t){let n=C(e,"x","cast");if(!n5(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(gs,r,a)}var ge=O({cast_:tI});function nI(e){let t={x:C(e,"x","clone","string_or_numeric")};return $.runKernel(Rs,t)}var zr=O({clone_:nI});function F5(e,t=!1){console.log(e.toString(t))}g5();var rI={buffer:Ue,cast:ge,clone:zr,print:F5};m9(rI);var Nn={};We(Nn,{browserFiles:()=>aI,browserHTTPRequest:()=>iI,concatenateArrayBuffers:()=>Mf,copyModel:()=>Z9,decodeWeights:()=>v5,encodeWeights:()=>N9,fromMemory:()=>oI,getLoadHandlers:()=>O9,getModelArtifactsInfoForJSON:()=>Hu,getSaveHandlers:()=>D9,http:()=>Lf,isHTTPScheme:()=>Pf,listModels:()=>X9,loadWeights:()=>sI,moveModel:()=>Y9,registerLoadRouter:()=>$9,registerSaveRouter:()=>M9,removeModel:()=>K9,weightsLoaderFactory:()=>M5,withSaveHandler:()=>lI});var uI="model",cI=".json",hI=".weights.bin";function $5(e){return new Promise(t=>setTimeout(t)).then(e)}var cl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(cl.URL_SCHEME)&&(e=e.slice(cl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=uI),this.modelTopologyFileName=e+cI,this.weightDataFileName=e+hI}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await $5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await $5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Hu(e)}}}};cl.URL_SCHEME="downloads://";var dI=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let u;try{u=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let c=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),c.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let b={modelTopology:o,weightSpecs:c,weightData:Mf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(b.signature=i.signature),i.userDefinedMetadata!=null&&(b.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(b.modelInitializer=i.modelInitializer),n(b)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(u[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>I5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=I5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},fI=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(cl.URL_SCHEME)?pI(e.slice(cl.URL_SCHEME.length)):null;Rt.registerSaveRouter(fI);function pI(e="model"){return new cl(e)}function aI(e){return new dI(e)}function D5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(u=>{let c=n+ ++a/e.length*(r-n);return t(c),u}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,u){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),F(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(s))}async function O5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(u=>n(u,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await D5(r,t.onProgress,a,s)).map(u=>u.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await D5(i,t.onProgress,o,l)}async function sI(e,t="",n,r){return M5(a=>O5(a,{requestInit:r}))(e,t,n)}function M5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=Rf[y]*Lt(A.shape),b=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((_,w)=>{_===A.name&&(b(),i[w]=!0)}):b(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. +Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),u=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let b=0;b{let _=A.slice(b.groupOffset,b.groupOffset+b.sizeBytes),w=v5(_,[b.manifestEntry]);for(let x in w)h[x]=w[x]}),d+=f}),h}}var mI="application/octet-stream",AI="application/json",Wf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(F(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:AI}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:mI}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Hu(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let u,c;r!=null&&([u,c]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:u,weightData:c,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=yI(t),a=this.weightPathPrefix||n,s=[];for(let u of e)s.push(...u.weights);let i=[],o=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(c)):i.push(a+c+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await O5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,Mf(l)]}};Wf.URL_SCHEME_REGEX=/^https?:\/\//;function yI(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function Pf(e){return e.match(Wf.URL_SCHEME_REGEX)!=null}var z5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>Pf(r)):n=Pf(e),n)return Lf(e,t)}return null};Rt.registerSaveRouter(z5);Rt.registerLoadRouter(z5);function Lf(e,t){return new Wf(e,t)}function iI(e,t){return Lf(e,t)}var Bf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},gI=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function oI(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Bf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Bf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Bf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function lI(e){return new gI(e)}var P5={};We(P5,{confusionMatrix:()=>xI});function wI(e,t,n=!1,r=!1){let a=C(e,"a","matMul"),s=C(t,"b","matMul");[a,s]=Nt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(ys,i,o)}var Ke=O({matMul_:wI});function bI(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:C(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel(Bs,a,s)}var hl=O({oneHot_:bI});function _I(e,t){let n=C(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(si,r,a)}var ot=O({transpose_:_I});function vI(e,t,n){let r=C(e,"labels","confusionMatrix"),a=C(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),F(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),F(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=hl(ge(r,"int32"),n),i=hl(ge(a,"int32"),n),o=ot(s),l=Ke(o,i);return ge(l,"int32")}var xI=O({confusionMatrix_:vI}),dl={};We(dl,{fromPixels:()=>NI,fromPixelsAsync:()=>kI,toPixels:()=>II});function wd(e,t,n){if(ds(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Or(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Oa(e,t,r,n)}var pl;function L5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(pd(dd,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(dd,d,p)}let[l,u]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],c;i?c=e.getContext("2d").getImageData(0,0,l,u).data:r||n?c=e.data:(s||a||o)&&(pl==null&&(pl=document.createElement("canvas").getContext("2d")),pl.canvas.width=l,pl.canvas.height=u,pl.drawImage(e,0,0,l,u),c=pl.getImageData(0,0,l,u).data);let h;if(t===4)h=new Int32Array(c);else{let d=l*u;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(c[0]=p*o,c[1]=p*o,c[2]=p*o):c[d]=p*o}let h=u*4;l[h+0]=Math.round(c[0]),l[h+1]=Math.round(c[1]),l[h+2]=Math.round(c[2]),l[h+3]=Math.round(c[3])}if(t!=null){t.width=a,t.height=r;let u=t.getContext("2d"),c=new ImageData(l,a,r);u.putImageData(c,0,0)}return n!==e&&n.dispose(),l}var NI=O({fromPixels_:L5}),Vf={};We(Vf,{prepareAndValidate:()=>W5});function W5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Lt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/u),1].slice(0,s);return[l,i,u,c]}var Uf={};We(Uf,{calculateShapes:()=>B5,validateInput:()=>jf,validateUpdateShape:()=>Hf});function Hf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hRI,computeFlatOffset:()=>MI,computeOutShape:()=>V5,getNormalizedAxes:()=>H5,isSliceContinous:()=>FI,maskToAxes:()=>bd,parseSliceParams:()=>Z5,sliceInfo:()=>$I,startForAxis:()=>X5,startIndicesWithElidedDims:()=>j5,stopForAxis:()=>K5,stopIndicesWithElidedDims:()=>G5,stridesForAxis:()=>q5,stridesWithElidedDims:()=>U5});function RI(e,t,n){let r=e.shape.length;F(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),F(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function bd(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function V5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;c=j5(i,p,f,r,e),h=G5(o,p,f,a,e),d=U5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=Y5(t,n,o),u=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=Y5(t,n,o),u=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=mu(0,i,l-1),i}function K5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=mu(0,i,l):i=mu(-1,i,l-1),i}function FI(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function MI(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function $I(e,t,n,r,a,s,i,o,l){let u=t.slice(),c=n.slice(),h=r;r==null&&(h=new Array(u.length));let d=bd(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-u.length,f=bd(o),m=e.slice();f.forEach(x=>{u[x]=0,c[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=H5(m,d,p,u,c,h,a,s,i);u=A,c=y,h=g;let b=bd(l);b.forEach(x=>{c[x]=u[x]+1,h[x]=1});let _=V5(u,c,h),w=_.filter((x,N)=>b.indexOf(N)===-1);return{nonStrided:h.every(x=>x===1),$begin:u,$end:c,$strides:h,size:_,newShape:m,outShape:w}}var ae={};We(ae,{Serializable:()=>Q5,SerializationMap:()=>pi,registerClass:()=>Pa});var Q5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},pi=class{constructor(){this.classNameMap={}}static getMap(){return pi.instance==null&&(pi.instance=new pi),pi.instance}static register(e){pi.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Pa(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),pi.register(e)}var ex={};We(ex,{TEST_EPSILON_FLOAT16:()=>tx,encodeStrings:()=>nx,expectArrayBuffersEqual:()=>WI,expectArraysClose:()=>DI,expectArraysEqual:()=>zI,expectNumbersClose:()=>PI,expectPromiseToFail:()=>OI,expectValuesInRange:()=>LI,testEpsilon:()=>Gf});var BI=.001,tx=.1;function DI(e,t,n){return n==null&&(n=Gf()),qf(e,t,(r,a)=>Xf(r,a,n))}function Gf(){return $.backend.floatPrecision()===32?BI:tx}function qf(e,t,n){let r=!0;if((cn(e)||cn(t))&&(r=!1),cn(e)&&cn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Or(e),o=Or(t);if(!oa(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=cn(e)?e:ps(e),s=cn(t)?t:ps(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. Actual: ${a}. Expected: ${s}.`);for(let i=0;it.fail(),()=>t())}function OI(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return Ea(e)||Ea(e[0])||Ea(t)||Ea(t[0])?qf(e,n,(r,a)=>r==a):qf(e,t,(r,a)=>Xf(r,a,0))}function zI(e,t,n){if(n==null&&(n=Gf()),!Xf(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Xf(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function PI(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function LI(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function tx(e){for(let t=0;tt.dispose())}function Zt(e){return $.keep(e)}function GI(e){return $.time(e)}function qI(e){return $.setBackend(e)}function XI(){return $.ready()}function KI(){return $.backendName}function ZI(e){$.removeBackend(e)}function Zf(e){return $.findBackend(e)}function YI(e){return $.findBackendFactory(e)}function fl(e,t,n=1){return $.registerBackend(e,t,n)}function nx(){return $.backend}function JI(e,t){J().setPlatform(e,t)}function QI(e,t){let n=C(e,"a","add"),r=C(t,"b","add");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Ra,a)}var ie=O({add_:QI});function eN(e,t){let n=C(e,"a","floorDiv"),r=C(t,"b","floorDiv");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Ts,a)}var vd=O({floorDiv_:eN});function tN(e,t){let n=C(e,"a","div"),r=C(t,"b","div");if([n,r]=Nt(n,r),n.dtype==="int32"&&r.dtype==="int32")return vd(n,r);let a={a:n,b:r},s={};return $.runKernel(Is,a,s)}var be=O({div_:tN});function nN(e,t){let n=C(e,"a","mul"),r=C(t,"b","mul");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Ws,a)}var P=O({mul_:nN});function rN(e){let t=C(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(wu,n)}else{let n={x:t};return $.runKernel(so,n)}}var Bt=O({abs_:rN});function aN(e){let t={x:C(e,"x","acos")};return $.runKernel(io,t)}var Yf=O({acos_:aN});function sN(e){let t={x:C(e,"x","acosh")};return $.runKernel(oo,t)}var Jf=O({acosh_:sN});function iN(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>C(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!oa(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(fs,r)}var La=O({addN_:iN});function oN(e,t=null,n=!1){let r={x:C(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(Dh,r,a)}var kd=O({all_:oN});function lN(e,t=null,n=!1){let r={x:C(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(Oh,r,a)}var ju=O({any_:lN});function uN(e,t=0){let n={x:C(e,"x","argMax")},r={axis:t};return $.runKernel(ms,n,r)}var Gu=O({argMax_:uN});function cN(e,t=0){let n={x:C(e,"x","argMin")},r={axis:t};return $.runKernel(yu,n,r)}var Qf=O({argMin_:cN});function hN(e){let t={x:C(e,"x","asin")};return $.runKernel(lo,t)}var em=O({asin_:hN});function dN(e){let t={x:C(e,"x","asinh")};return $.runKernel(uo,t)}var tm=O({asinh_:dN});function pN(e){let t={x:C(e,"x","atan")};return $.runKernel(co,t)}var nm=O({atan_:pN});function fN(e,t){let n=C(e,"a","atan2"),r=C(t,"b","atan2");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(po,a)}var rm=O({atan2_:fN});function mN(e){let t={x:C(e,"x","atanh")};return $.runKernel(ho,t)}var am=O({atanh_:mN});function AN(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=rx(a);return qu(e,o,n,s,r,null,null,l)}function ax(e,t,n,r,a,s,i="channelsLast"){let[o,l]=Id(t),u;if(i==="channelsLast")u=[o,l,e[3],e[3]];else if(i==="channelsFirst")u=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return qu(e,u,n,r,a,s,!1,i)}function yN(e,t,n,r,a,s,i="NDHWC"){let[o,l,u]=sm(t),c,h;if(i==="NDHWC")h="channelsLast",c=[o,l,u,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",c=[o,l,u,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return sx(e,c,n,r,a,!1,h,s)}function qu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,u,c,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,u,c,h]=e;else if(o==="channelsFirst")[l,h,u,c]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=Id(n),[y,g]=Id(r),b=ml(d,y),_=ml(p,g),{padInfo:w,outHeight:x,outWidth:N}=gN(a,u,c,m,A,b,_,s,o),S=i?f*h:f,T;return o==="channelsFirst"?T=[l,S,x,N]:o==="channelsLast"&&(T=[l,x,N,S]),{batchSize:l,dataFormat:o,inHeight:u,inWidth:c,inChannels:h,outHeight:x,outWidth:N,outChannels:S,padInfo:w,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:b,effectiveFilterWidth:_,dilationHeight:y,dilationWidth:g,inShape:e,outShape:T,filterShape:t}}function sx(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,u,c,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,u,c,h,d]=e;else if(i==="channelsFirst")[l,d,u,c,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,b]=sm(n),[_,w,x]=sm(r),N=ml(p,_),S=ml(f,w),T=ml(m,x),{padInfo:M,outDepth:D,outHeight:z,outWidth:W}=xN(a,u,c,h,y,g,b,N,S,T,o),U=s?A*d:A,H;return i==="channelsFirst"?H=[l,U,D,z,W]:i==="channelsLast"&&(H=[l,D,z,W,U]),{batchSize:l,dataFormat:i,inDepth:u,inHeight:c,inWidth:h,inChannels:d,outDepth:D,outHeight:z,outWidth:W,outChannels:U,padInfo:M,strideDepth:y,strideHeight:g,strideWidth:b,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:N,effectiveFilterHeight:S,effectiveFilterWidth:T,dilationDepth:_,dilationHeight:w,dilationWidth:x,inShape:e,outShape:H,filterShape:t}}function wN(e,t,n,r,a){r==null&&(r=im(e,t,n));let s=e[0],i=e[1],o=fi((s-t+2*r)/n+1,a),l=fi((i-t+2*r)/n+1,a);return[o,l]}function bN(e,t,n,r,a,s){a==null&&(a=im(e,t,r));let i=e[0],o=e[1],l=e[2],u=fi((i-t+2*a)/r+1,s),c=fi((o-t+2*a)/r+1,s),h=fi((l-t+2*a)/r+1,s);return[u,c,h,n]}function im(e,t,n,r=1){let a=ml(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function Id(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function sm(e){return typeof e=="number"?[e,e,e]:e}function ml(e,t){return t<=1?e:e+(e-1)*(t-1)}function gN(e,t,n,r,a,s,i,o,l){let u,c,h;if(typeof e=="number"){u={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=wN([t,n],s,r,e,o);c=d[0],h=d[1]}else if(e==="same"){c=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(c-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;u={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];u={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},c=fi((t-s+d+p)/r+1,o),h=fi((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:u,outHeight:c,outWidth:h}}function xN(e,t,n,r,a,s,i,o,l,u,c){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=bN([t,n,r,1],o,1,a,e,c);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+u-r,g=Math.floor(m/2),b=m-g,_=Math.floor(A/2),w=A-_,x=Math.floor(y/2),N=y-x;h={top:_,bottom:w,left:x,right:N,front:g,back:b,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-u+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function fi(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function Wa(e){let[t,n,r]=Id(e);return t===1&&n===1&&r===1}function Lr(e,t){return Wa(e)||Wa(t)}function rx(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function _N(e,t){let n={x:C(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Ho,n,r)}var G=O({reshape_:_N});function vN(e,t,n,r,a){let s=C(e,"x","avgPool","float32"),i=1;F(Lr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&F(Kt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(As,u,c);return h=ge(h,s.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Xu=O({avgPool_:vN});function kN(e,t,n,r,a,s="NDHWC"){let i=C(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(Kt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(gu,u,c);return h=ge(h,o.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var om=O({avgPool3d_:kN});function IN(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=Uu(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${s.dtype}. `)}),n.length===1)return zr(n[0]);let r=n,a={axis:t};return $.runKernel(fo,r,a)}var lt=O({concat_:IN});function NN(e){let t={x:C(e,"x","sigmoid")};return $.runKernel(Js,t)}var On=O({sigmoid_:NN});function SN(e,t,n){let r=C(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Xo,a,s)}var $e=O({slice_:SN});function TN(e){let t={x:C(e,"x","tanh")};return $.runKernel(ai,t)}var Al=O({tanh_:TN});function EN(e,t,n,r,a,s){let i=C(e,"forgetBias","basicLSTMCell"),o=C(t,"lstmKernel","basicLSTMCell"),l=C(n,"lstmBias","basicLSTMCell"),u=C(r,"data","basicLSTMCell"),c=C(a,"c","basicLSTMCell"),h=C(s,"h","basicLSTMCell"),d=lt([u,h],1),p=Ke(d,o),f=ie(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=$e(f,[0,0],y),b=$e(f,[0,A],y),_=$e(f,[0,A*2],y),w=$e(f,[0,A*3],y),x=ie(P(On(g),Al(b)),P(c,On(ie(i,_)))),N=P(Al(x),On(w));return[x,N]}var CN=O({basicLSTMCell_:EN});function RN(e,t,n){let r=C(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);F(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(xu,s,i)}var Ku=O({batchToSpaceND_:RN});function FN(e){let t;return e.rank===0||e.rank===1?t=G(e,[1,1,1,e.size]):e.rank===2?t=G(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function MN(e,t,n,r,a,s){s==null&&(s=.001);let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;r!=null&&(c=C(r,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:FN(i),scale:u,offset:c,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(Es,h,d);return G(p,i.shape)}var mi=O({batchNorm_:MN});function $N(e,t,n,r,a,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;return r!=null&&(c=C(r,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),mi(i,o,l,c,u,s)}var ix=O({batchNorm2d_:$N});function DN(e,t,n,r,a,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;return r!=null&&(c=C(r,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),mi(i,o,l,c,u,s)}var ox=O({batchNorm3d_:DN});function ON(e,t,n,r,a,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;return r!=null&&(c=C(r,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),mi(i,o,l,c,u,s)}var lx=O({batchNorm4d_:ON});function zN(e,t,n){let r=C(e,"x","bincount"),a=C(t,"weights","bincount");F(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Lh,s,i)}var ux=O({bincount_:zN});function PN(e,t){let n=C(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,u)=>l>1?u:-1).filter(l=>l>=0).length===0)return zr(n);let i={x:n},o={reps:s};return $.runKernel(Ma,i,o)}var Zu=O({broadcastTo_:PN});function LN(e){let t={x:C(e,"x","ceil")};return $.runKernel(xs,t)}var lm=O({ceil_:LN});function WN(e,t,n){let r=C(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(Fa,a,s)}var Sn=O({clipByValue_:WN});function BN(e){return lt(e,0)}var cx=O({concat1d_:BN});function VN(e,t){return lt(e,t)}var yl=O({concat2d_:VN});function UN(e,t){return lt(e,t)}var hx=O({concat3d_:UN});function HN(e,t){return lt(e,t)}var dx=O({concat4d_:HN});function jN(e,t,n,r,a="NHWC",s=[1,1],i){let o=C(e,"x","conv2d"),l=C(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(Kt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?u.shape[3]:u.shape[1];F(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),F(Lr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:u,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ws,d,p);return c?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ua=O({conv2d_:jN});function GN(e,t,n,r,a="NWC",s=1,i){let o=C(e,"x","conv1d"),l=C(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1]])),F(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(Kt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F(Lr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=G(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=G(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=ua(d,h,[1,n],r,"NHWC",[1,s],i);return c?G(p,[p.shape[2],p.shape[3]]):G(p,[p.shape[0],p.shape[2],p.shape[3]])}var Nd=O({conv1d_:GN});function qN(e,t,n,r,a,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,u=!1;t.rank===3&&(u=!0,l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let c=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[2]}.`),F(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(Kt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(bs,d,p);return u?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var um=O({conv2DBackpropInput_:qN});function XN(e,t,n,r,a,s){let i=C(e,"x","conv2dTranspose"),o=C(t,"filter","conv2dTranspose");return um(n,i,o,r,a,"NHWC",s)}var Sd=O({conv2dTranspose_:XN});function KN(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=C(e,"x","conv3d"),o=C(t,"filter","conv3d"),l=i,u=!1;i.rank===4&&(u=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F(Lr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let c={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(bu,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var cm=O({conv3d_:KN});function ZN(e,t,n,r,a){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],u=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(u===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${n.shape[4]}.`);let c={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Uh,c,h);return o?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var px=O({conv3DBackpropInput_:ZN});function YN(e,t,n,r,a){let s=C(e,"x","conv3dTranspose"),i=C(t,"filter","conv3dTranspose");return px(n,s,i,r,a)}var JN=O({conv3dTranspose_:YN});function QN(e){let t={x:C(e,"x","cos")};return $.runKernel(_s,t)}var Yu=O({cos_:QN});function eS(e){let t={x:C(e,"x","cosh")};return $.runKernel(mo,t)}var Td=O({cosh_:eS});function tS(e,t=0,n=!1,r=!1){let a={x:C(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(vs,a,s)}var Ed=O({cumsum_:tS});function nS(e,t,n,r=!1){let a=C(e,"x","denseBincount"),s=C(t,"weights","denseBincount");F(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),F(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Hh,i,o)}var fx=O({denseBincount_:nS});function rS(e,t,n="NHWC"){let r=C(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];F(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying +Expected: ${s}.`)}}function OI(e,t){e().then(()=>t.fail(),()=>t())}function zI(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return Ea(e)||Ea(e[0])||Ea(t)||Ea(t[0])?qf(e,n,(r,a)=>r==a):qf(e,t,(r,a)=>Xf(r,a,0))}function PI(e,t,n){if(n==null&&(n=Gf()),!Xf(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Xf(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function LI(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function WI(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function nx(e){for(let t=0;tt.dispose())}function Zt(e){return $.keep(e)}function qI(e){return $.time(e)}function XI(e){return $.setBackend(e)}function KI(){return $.ready()}function ZI(){return $.backendName}function YI(e){$.removeBackend(e)}function Zf(e){return $.findBackend(e)}function JI(e){return $.findBackendFactory(e)}function fl(e,t,n=1){return $.registerBackend(e,t,n)}function rx(){return $.backend}function QI(e,t){J().setPlatform(e,t)}function eN(e,t){let n=C(e,"a","add"),r=C(t,"b","add");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Ra,a)}var ie=O({add_:eN});function tN(e,t){let n=C(e,"a","floorDiv"),r=C(t,"b","floorDiv");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Ts,a)}var vd=O({floorDiv_:tN});function nN(e,t){let n=C(e,"a","div"),r=C(t,"b","div");if([n,r]=Nt(n,r),n.dtype==="int32"&&r.dtype==="int32")return vd(n,r);let a={a:n,b:r},s={};return $.runKernel(Is,a,s)}var be=O({div_:nN});function rN(e,t){let n=C(e,"a","mul"),r=C(t,"b","mul");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Ws,a)}var P=O({mul_:rN});function aN(e){let t=C(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(wu,n)}else{let n={x:t};return $.runKernel(so,n)}}var Bt=O({abs_:aN});function sN(e){let t={x:C(e,"x","acos")};return $.runKernel(io,t)}var Yf=O({acos_:sN});function iN(e){let t={x:C(e,"x","acosh")};return $.runKernel(oo,t)}var Jf=O({acosh_:iN});function oN(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>C(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!oa(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(fs,r)}var La=O({addN_:oN});function lN(e,t=null,n=!1){let r={x:C(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(Dh,r,a)}var kd=O({all_:lN});function uN(e,t=null,n=!1){let r={x:C(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(Oh,r,a)}var ju=O({any_:uN});function cN(e,t=0){let n={x:C(e,"x","argMax")},r={axis:t};return $.runKernel(ms,n,r)}var Gu=O({argMax_:cN});function hN(e,t=0){let n={x:C(e,"x","argMin")},r={axis:t};return $.runKernel(yu,n,r)}var Qf=O({argMin_:hN});function dN(e){let t={x:C(e,"x","asin")};return $.runKernel(lo,t)}var em=O({asin_:dN});function pN(e){let t={x:C(e,"x","asinh")};return $.runKernel(uo,t)}var tm=O({asinh_:pN});function fN(e){let t={x:C(e,"x","atan")};return $.runKernel(co,t)}var nm=O({atan_:fN});function mN(e,t){let n=C(e,"a","atan2"),r=C(t,"b","atan2");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(po,a)}var rm=O({atan2_:mN});function AN(e){let t={x:C(e,"x","atanh")};return $.runKernel(ho,t)}var am=O({atanh_:AN});function yN(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=ax(a);return qu(e,o,n,s,r,null,null,l)}function sx(e,t,n,r,a,s,i="channelsLast"){let[o,l]=Id(t),u;if(i==="channelsLast")u=[o,l,e[3],e[3]];else if(i==="channelsFirst")u=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return qu(e,u,n,r,a,s,!1,i)}function gN(e,t,n,r,a,s,i="NDHWC"){let[o,l,u]=sm(t),c,h;if(i==="NDHWC")h="channelsLast",c=[o,l,u,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",c=[o,l,u,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return ix(e,c,n,r,a,!1,h,s)}function qu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,u,c,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,u,c,h]=e;else if(o==="channelsFirst")[l,h,u,c]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=Id(n),[y,g]=Id(r),b=ml(d,y),_=ml(p,g),{padInfo:w,outHeight:x,outWidth:N}=xN(a,u,c,m,A,b,_,s,o),S=i?f*h:f,T;return o==="channelsFirst"?T=[l,S,x,N]:o==="channelsLast"&&(T=[l,x,N,S]),{batchSize:l,dataFormat:o,inHeight:u,inWidth:c,inChannels:h,outHeight:x,outWidth:N,outChannels:S,padInfo:w,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:b,effectiveFilterWidth:_,dilationHeight:y,dilationWidth:g,inShape:e,outShape:T,filterShape:t}}function ix(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,u,c,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,u,c,h,d]=e;else if(i==="channelsFirst")[l,d,u,c,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,b]=sm(n),[_,w,x]=sm(r),N=ml(p,_),S=ml(f,w),T=ml(m,x),{padInfo:M,outDepth:D,outHeight:z,outWidth:W}=wN(a,u,c,h,y,g,b,N,S,T,o),U=s?A*d:A,H;return i==="channelsFirst"?H=[l,U,D,z,W]:i==="channelsLast"&&(H=[l,D,z,W,U]),{batchSize:l,dataFormat:i,inDepth:u,inHeight:c,inWidth:h,inChannels:d,outDepth:D,outHeight:z,outWidth:W,outChannels:U,padInfo:M,strideDepth:y,strideHeight:g,strideWidth:b,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:N,effectiveFilterHeight:S,effectiveFilterWidth:T,dilationDepth:_,dilationHeight:w,dilationWidth:x,inShape:e,outShape:H,filterShape:t}}function bN(e,t,n,r,a){r==null&&(r=im(e,t,n));let s=e[0],i=e[1],o=fi((s-t+2*r)/n+1,a),l=fi((i-t+2*r)/n+1,a);return[o,l]}function _N(e,t,n,r,a,s){a==null&&(a=im(e,t,r));let i=e[0],o=e[1],l=e[2],u=fi((i-t+2*a)/r+1,s),c=fi((o-t+2*a)/r+1,s),h=fi((l-t+2*a)/r+1,s);return[u,c,h,n]}function im(e,t,n,r=1){let a=ml(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function Id(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function sm(e){return typeof e=="number"?[e,e,e]:e}function ml(e,t){return t<=1?e:e+(e-1)*(t-1)}function xN(e,t,n,r,a,s,i,o,l){let u,c,h;if(typeof e=="number"){u={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=bN([t,n],s,r,e,o);c=d[0],h=d[1]}else if(e==="same"){c=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(c-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;u={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];u={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},c=fi((t-s+d+p)/r+1,o),h=fi((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:u,outHeight:c,outWidth:h}}function wN(e,t,n,r,a,s,i,o,l,u,c){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=_N([t,n,r,1],o,1,a,e,c);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+u-r,g=Math.floor(m/2),b=m-g,_=Math.floor(A/2),w=A-_,x=Math.floor(y/2),N=y-x;h={top:_,bottom:w,left:x,right:N,front:g,back:b,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-u+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function fi(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function Wa(e){let[t,n,r]=Id(e);return t===1&&n===1&&r===1}function Lr(e,t){return Wa(e)||Wa(t)}function ax(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function vN(e,t){let n={x:C(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Ho,n,r)}var G=O({reshape_:vN});function kN(e,t,n,r,a){let s=C(e,"x","avgPool","float32"),i=1;F(Lr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&F(Kt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(As,u,c);return h=ge(h,s.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Xu=O({avgPool_:kN});function IN(e,t,n,r,a,s="NDHWC"){let i=C(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(Kt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(gu,u,c);return h=ge(h,o.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var om=O({avgPool3d_:IN});function NN(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=Uu(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${s.dtype}. `)}),n.length===1)return zr(n[0]);let r=n,a={axis:t};return $.runKernel(fo,r,a)}var lt=O({concat_:NN});function SN(e){let t={x:C(e,"x","sigmoid")};return $.runKernel(Js,t)}var On=O({sigmoid_:SN});function TN(e,t,n){let r=C(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Xo,a,s)}var $e=O({slice_:TN});function EN(e){let t={x:C(e,"x","tanh")};return $.runKernel(ai,t)}var Al=O({tanh_:EN});function CN(e,t,n,r,a,s){let i=C(e,"forgetBias","basicLSTMCell"),o=C(t,"lstmKernel","basicLSTMCell"),l=C(n,"lstmBias","basicLSTMCell"),u=C(r,"data","basicLSTMCell"),c=C(a,"c","basicLSTMCell"),h=C(s,"h","basicLSTMCell"),d=lt([u,h],1),p=Ke(d,o),f=ie(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=$e(f,[0,0],y),b=$e(f,[0,A],y),_=$e(f,[0,A*2],y),w=$e(f,[0,A*3],y),x=ie(P(On(g),Al(b)),P(c,On(ie(i,_)))),N=P(Al(x),On(w));return[x,N]}var RN=O({basicLSTMCell_:CN});function FN(e,t,n){let r=C(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);F(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(xu,s,i)}var Ku=O({batchToSpaceND_:FN});function MN(e){let t;return e.rank===0||e.rank===1?t=G(e,[1,1,1,e.size]):e.rank===2?t=G(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function $N(e,t,n,r,a,s){s==null&&(s=.001);let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;r!=null&&(c=C(r,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:MN(i),scale:u,offset:c,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(Es,h,d);return G(p,i.shape)}var mi=O({batchNorm_:$N});function DN(e,t,n,r,a,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;return r!=null&&(c=C(r,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),mi(i,o,l,c,u,s)}var ox=O({batchNorm2d_:DN});function ON(e,t,n,r,a,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;return r!=null&&(c=C(r,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),mi(i,o,l,c,u,s)}var lx=O({batchNorm3d_:ON});function zN(e,t,n,r,a,s){let i=C(e,"x","batchNorm"),o=C(t,"mean","batchNorm"),l=C(n,"variance","batchNorm"),u;a!=null&&(u=C(a,"scale","batchNorm"));let c;return r!=null&&(c=C(r,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),mi(i,o,l,c,u,s)}var ux=O({batchNorm4d_:zN});function PN(e,t,n){let r=C(e,"x","bincount"),a=C(t,"weights","bincount");F(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Lh,s,i)}var cx=O({bincount_:PN});function LN(e,t){let n=C(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,u)=>l>1?u:-1).filter(l=>l>=0).length===0)return zr(n);let i={x:n},o={reps:s};return $.runKernel(Ma,i,o)}var Zu=O({broadcastTo_:LN});function WN(e){let t={x:C(e,"x","ceil")};return $.runKernel(xs,t)}var lm=O({ceil_:WN});function BN(e,t,n){let r=C(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(Fa,a,s)}var Sn=O({clipByValue_:BN});function VN(e){return lt(e,0)}var hx=O({concat1d_:VN});function UN(e,t){return lt(e,t)}var yl=O({concat2d_:UN});function HN(e,t){return lt(e,t)}var dx=O({concat3d_:HN});function jN(e,t){return lt(e,t)}var px=O({concat4d_:jN});function GN(e,t,n,r,a="NHWC",s=[1,1],i){let o=C(e,"x","conv2d"),l=C(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(Kt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?u.shape[3]:u.shape[1];F(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),F(Lr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:u,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ws,d,p);return c?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ua=O({conv2d_:GN});function qN(e,t,n,r,a="NWC",s=1,i){let o=C(e,"x","conv1d"),l=C(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1]])),F(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(Kt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F(Lr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=G(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=G(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=ua(d,h,[1,n],r,"NHWC",[1,s],i);return c?G(p,[p.shape[2],p.shape[3]]):G(p,[p.shape[0],p.shape[2],p.shape[3]])}var Nd=O({conv1d_:qN});function XN(e,t,n,r,a,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,u=!1;t.rank===3&&(u=!0,l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let c=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[2]}.`),F(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(Kt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(bs,d,p);return u?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var um=O({conv2DBackpropInput_:XN});function KN(e,t,n,r,a,s){let i=C(e,"x","conv2dTranspose"),o=C(t,"filter","conv2dTranspose");return um(n,i,o,r,a,"NHWC",s)}var Sd=O({conv2dTranspose_:KN});function ZN(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=C(e,"x","conv3d"),o=C(t,"filter","conv3d"),l=i,u=!1;i.rank===4&&(u=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F(Lr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let c={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(bu,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var cm=O({conv3d_:ZN});function YN(e,t,n,r,a){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],u=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(u===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${n.shape[4]}.`);let c={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Uh,c,h);return o?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var fx=O({conv3DBackpropInput_:YN});function JN(e,t,n,r,a){let s=C(e,"x","conv3dTranspose"),i=C(t,"filter","conv3dTranspose");return fx(n,s,i,r,a)}var QN=O({conv3dTranspose_:JN});function eS(e){let t={x:C(e,"x","cos")};return $.runKernel(_s,t)}var Yu=O({cos_:eS});function tS(e){let t={x:C(e,"x","cosh")};return $.runKernel(mo,t)}var Td=O({cosh_:tS});function nS(e,t=0,n=!1,r=!1){let a={x:C(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(vs,a,s)}var Ed=O({cumsum_:nS});function rS(e,t,n,r=!1){let a=C(e,"x","denseBincount"),s=C(t,"weights","denseBincount");F(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),F(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Hh,i,o)}var mx=O({denseBincount_:rS});function aS(e,t,n="NHWC"){let r=C(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];F(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying ${a} and ${t} for depthToSpace with input shape ${r.shape}`),F(s*t>=0,()=>`Negative dimension size caused by overflow when multiplying ${s} and ${t} for depthToSpace with input shape - ${r.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(yo,o,l)}var hm=O({depthToSpace_:rS});function aS(e,t,n,r,a="NHWC",s=[1,1],i){let o=C(e,"x","depthwiseConv2d"),l=C(t,"filter","depthwiseConv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(Kt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:u,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(ks,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var gl=O({depthwiseConv2d_:aS});function sS(e){let t={x:C(e,"x","diag")};return $.runKernel(qh,t)}var iS=O({diag_:sS});function oS(e,t,n,r,a=[1,1],s="NHWC"){let i=C(e,"x","dilation2d"),o=C(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,u=!1;i.rank===3&&(l=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),u=!0);let c={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(_u,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var dm=O({dilation2d_:oS});function lS(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Vt(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function wt(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&un(s.shape,l.shape,"Error in where: ");let u={condition:s,t:o,e:l};return $.runKernel(Go,u)}var Tn=O({where_:cS});function hS(e){let t={x:C(e,"x","zerosLike")};return $.runKernel(rl,t)}var qe=O({zerosLike_:hS});function dS(e,t){let n=C(e,"a","div"),r=C(t,"b","div");[n,r]=Nt(n,r);let a=be(n,r),s=qe(a),i=Ba(r,s);return Tn(i,s,a)}var pm=O({divNoNan_:dS});function pS(e,t){let n=C(e,"t1","dot"),r=C(t,"t2","dot");F((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(F(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=G(n,[1,-1]),o=G(r,[-1,1]),l=Ke(i,o);return G(l,[])}else if(n.rank===1&&r.rank===2){let i=G(n,[1,-1]),o=G(r,[r.shape[0],r.shape[1]]),l=Ke(i,o);return G(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=G(r,[-1,1]),o=Ke(n,i);return G(o,[o.size])}else{let i=G(r,[r.shape[0],r.shape[1]]);return Ke(n,i)}}var mx=O({dot_:pS});function fS(e){let t={x:C(e,"x","elu")};return $.runKernel(go,t)}var xl=O({elu_:fS});function mS(e){let t=C(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=ge(t,"float32"));let n={x:t};return $.runKernel(xo,n)}var fm=O({erf_:mS});function AS(e){let t={x:C(e,"x","exp")};return $.runKernel(Ns,t)}var Jn=O({exp_:AS});function yS(e,t=0){let n=C(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(bo,r,a)}var mn=O({expandDims_:yS});function gS(e){let t={x:C(e,"x","expm1")};return $.runKernel(_o,t)}var mm=O({expm1_:gS});function xS(e,t){let n=C(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Ma,r,a)}var Va=O({tile_:xS});function wS(e,t,n,r="float32"){t==null&&(t=e);let a=Ue([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${s.rank}.`),F(Kt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=G(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:t,bias:n,alpha:r,beta:a},c=$.runKernel(Nu,l,u);return o?G(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var ym=O({localResponseNormalization_:FS});function MS(e){let t={x:C(e,"x","log")};return $.runKernel(Ms,t)}var zn=O({log_:MS});function $S(e){let t={x:C(e,"x","log1p")};return $.runKernel(Fo,t)}var Fd=O({log1p_:$S});function DS(e){return F(Ca(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=C(t,"x","tf.grad","string_or_numeric"),a=n!=null?C(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&un(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Md(i),i[0]})}}function OS(e){return F(Ca(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=Uu(t,"args","tf.grads","string_or_numeric"),a=n!=null?C(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&un(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Md(i),i})}}function zS(e){return F(Ca(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof Ge,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof Ge,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return Md(r),{grad:r[0],value:a}}}function PS(e){return F(Ca(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(a=>a instanceof Ge),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof Ge,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&un(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Md(r.grads),r}}function wx(e,t){F(Ca(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(u=>u instanceof Wu),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let u in $.registeredVariables)t.push($.registeredVariables[u])}let r=n?t.filter(u=>!u.trainable):null,a=t.length;t=t.filter(u=>u.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);F(o.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((u,c)=>{o[c]!=null&&(l[u.name]=o[c])}),r!=null&&r.forEach(u=>l[u.name]=null),{value:i,grads:l}}function Wr(e){return $.customGrad(e)}function Md(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function LS(e){let t={x:C(e,"x","neg")};return $.runKernel(Do,t)}var St=O({neg_:LS});function WS(e){let t={x:C(e,"x","softplus")};return $.runKernel(Yo,t)}var bl=O({softplus_:WS});function BS(e){let t=C(e,"x","logSigmoid");return Wr(n=>({value:St(bl(St(n))),gradFunc:r=>P(r,On(St(n)))}))(t)}var bx=O({logSigmoid_:BS});function VS(e,t=null,n=!1){let r={x:C(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel($s,r,a)}var Qn=O({max_:VS});function US(e,t){let n=C(e,"a","sub"),r=C(t,"b","sub");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(ri,a)}var we=O({sub_:US});function HS(e,t=null,n=!1){let r=C(e,"x","sum");r.dtype==="bool"&&(r=ge(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(ei,a,s)}var Re=O({sum_:HS});function jS(e,t=-1){let n=C(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return Wr((r,a)=>{let s=!0,i=Qn(r,t,!0),o=we(r,i),l=we(ge(o,"float32"),zn(Re(Jn(o),t,s)));return a([l]),{value:l,gradFunc:(u,c)=>{let[h]=c,d=!0,p=Jn(h);return we(u,P(Re(u,t,d),p))}}})(n)}var $d=O({logSoftmax_:jS});function gm(e,t){for(let n=0;ne[s]);return[n,a]}function gi(e,t){let n=t.map(r=>1);return _x(e,n,t)}function GS(e,t,n){F(gm(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function kx(e,t){if(gm(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function xm(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function qS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F(Lr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&F(Kt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Os,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var tc=O({maxPool_:QS});function eT(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=C(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(Kt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(Su,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var bm=O({maxPool3d_:eT});function tT(e,t,n,r,a=!1){let s={x:C(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(ad,s,i);return{result:o[0],indexes:o[1]}}var Nx=O({maxPoolWithArgmax_:tT});function nT(e,t){let n=C(e,"a","maximum"),r=C(t,"b","maximum");[n,r]=Nt(n,r),n.dtype==="bool"&&(n=ge(n,"int32"),r=ge(r,"int32")),wt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ds,a)}var Br=O({maximum_:nT});function rT(e,t=null,n=!1){let r={x:C(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(zs,r,a)}var Tt=O({mean_:rT});function aT(e,t=null,n=!1){let r={x:C(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Ps,r,a)}var _l=O({min_:aT});function sT(e,t){let n=C(e,"a","minimum"),r=C(t,"b","minimum");[n,r]=Nt(n,r),n.dtype==="bool"&&(n=ge(n,"int32"),r=ge(r,"int32")),wt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ls,a)}var vl=O({minimum_:sT});function iT(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=C(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(Tu,i,s)}var _m=O({mirrorPad_:iT});function oT(e,t){let n=C(e,"a","mod"),r=C(t,"b","mod");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel($o,a)}var vm=O({mod_:oT});function lT(e){let t=C(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var ht=O({square_:lT});function uT(e,t=null,n=!1){e=C(e,"x","moments");let r=or(t,e.shape),a=Tt(e,r,n),s=a.shape;n||(s=gi(a.shape,r));let i=ht(we(ge(e,"float32"),G(a,s))),o=Tt(i,r,n);return{mean:a,variance:o}}var Od=O({moments_:uT});function cT(e,t,n,r){let a=C(t,"data","multiRNNCell"),s=Uu(n,"c","multiRNNCell"),i=Uu(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?G(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},u=$.runKernel(sd,o,l);return i===1?G(u,[u.size]):u}var Sx=O({multinomial_:dT});function pT(e,t){let n=C(e,"a","notEqual"),r=C(t,"b","notEqual");[n,r]=Nt(n,r),wt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Oo,a)}var xi=O({notEqual_:pT});function $t(e,t="float32"){if(t==="complex64"){let r=$t(e,"float32"),a=$t(e,"float32");return Da(r,a)}let n=$h(Lt(e),t);return $.makeTensor(n,e,t)}function Vr(e,t="float32"){if(t==="complex64"){let r=Vr(e,"float32"),a=$t(e,"float32");return Da(r,a)}let n=Af(Lt(e),t);return $.makeTensor(n,e,t)}function fT(e){let t={x:C(e,"x","onesLike")};return $.runKernel(Wo,t)}var Pn=O({onesLike_:fT});function mT(e,t){let n=C(e,"v1","outerProduct"),r=C(t,"v2","outerProduct");F(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=G(n,[-1,1]),s=G(r,[1,-1]);return Ke(a,s)}var AT=O({outerProduct_:mT});function yT(e,t,n=0){let r=C(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel(Vs,s,a)}var ca=O({pad_:yT});function gT(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),ca(e,[t],n)}var xT=O({pad1d_:gT});function wT(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ca(e,t,n)}var bT=O({pad2d_:wT});function _T(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ca(e,t,n)}var vT=O({pad3d_:_T});function kT(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ca(e,t,n)}var IT=O({pad4d_:kT});function NT(e,t,n){let r=C(e,"x","spaceToBatchND");F(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(Ru,a,s)}var nc=O({spaceToBatchND_:NT});function ET(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=C(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F(Lr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let u=ax(o.shape,t,s,a,r),c=[u.dilationHeight,u.dilationWidth],h;r==="same"?h=TT([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];let d=c[0]===1&&c[1]===1,[p,f]=ST([u.inHeight,u.inWidth],c,h),m=d?r:"valid",A=d?o:nc(o,c,p),y=(n==="avg"?()=>Xu(A,t,s,m):()=>tc(A,t,s,m))(),g=d?y:Ku(y,c,f);return l?G(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function ST(e,t,n){let r=n.map(c=>c[0]),a=n.map(c=>c[1]),s=e.concat(r,a),i=t.map((c,h)=>(c-s[h]%c)%c),o=a.map((c,h)=>c+i[h]),l=t.map((c,h)=>[r[h],o[h]]),u=t.map((c,h)=>[0,i[h]]);return[l,u]}function TT(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var Tx=O({pool_:ET});function CT(e,t){let n=C(e,"base","pow"),r=C(t,"exp","pow");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Us,a)}var ha=O({pow_:CT});function RT(e,t){let n=C(e,"x","prelu"),r=C(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(Hs,a)}var rc=O({prelu_:RT});function FT(e,t=null,n=!1){let r=C(e,"x","prod");r.dtype==="bool"&&(r=ge(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Vo,a,s)}var zd=O({prod_:FT});function MT(e,t,n){let r=Lt(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},DT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=km.alea(a.toString()),this.randn=new Im(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=km.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function zT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new DT(t,n,r,a),i=Ue(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Ln(t,0)}var qT=O({reverse1d_:GT});function XT(e,t){let n=C(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Ln(n,t)}var KT=O({reverse2d_:XT});function ZT(e,t){let n=C(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Ln(n,t)}var YT=O({reverse3d_:ZT});function JT(e,t){let n=C(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Ln(n,t)}var QT=O({reverse4d_:JT});function eE(e){let t={x:C(e,"x","round")};return $.runKernel(Ks,t)}var Sm=O({round_:eE});function tE(e){let t={x:C(e,"x","rsqrt")};return $.runKernel(Zs,t)}var Wd=O({rsqrt_:tE});function Ie(e,t){if((cn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&cn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Oa(e,[],[],t)}function nE(e){let t={x:C(e,"x","selu")};return $.runKernel(qo,t)}var Bd=O({selu_:nE});function rE(e,t,n,r,a,s=[1,1],i="NHWC"){let o=C(e,"x","separableConv2d"),l=C(t,"depthwiseFilter","separableConv2d"),u=C(n,"pointwiseFilter","separableConv2d"),c=o,h=!1;if(o.rank===3&&(h=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),F(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let d=l.shape[2],p=l.shape[3];F(u.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${u.shape[2]}.`);let f=gl(c,l,r,a,i,s),m=ua(f,u,1,"valid",i);return h?G(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Tm=O({separableConv2d_:rE});async function aE(e,t){let n=C(e,"x","setdiff1d"),r=C(t,"y","setdiff1d");F(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),$e(r,[t],[n])}var Hd=O({slice1d_:lE});function uE(e,t,n){let r=C(e,"x","slice2d");return F(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),$e(r,t,n)}var Cm=O({slice2d_:uE});function cE(e,t,n){let r=C(e,"x","slice3d");return F(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),$e(r,t,n)}var jd=O({slice3d_:cE});function hE(e,t,n){let r=C(e,"x","slice4d");return F(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),$e(r,t,n)}var sc=O({slice4d_:hE});function dE(e,t=-1){let n=C(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(ti,r,a)}var ic=O({softmax_:dE});function pE(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Yh,t)}var oc=O({fft_:pE});function fE(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Jh,t)}var Il=O({ifft_:fE});function mE(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=G(e,[n,t]);r=Il(a)}else{let a=[n,2*(t-1)],s=G(ac(e),[n,t]),i=G(Cd(e),[n,t]),o=Ln($e(s,[0,1],[n,t-2]),1),l=P(Ln($e(i,[0,1],[n,t-2]),1),Ie(-1)),u=lt([s,o],1),c=lt([i,l],1),h=G(Da(u,c),[a[0],a[1]]);r=Il(h)}if(r=ac(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=G(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var Gd=O({irfft_:mE});function AE(e,t,n=0){let r={x:C(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Jo,r,a)}var Ut=O({split_:AE});function yE(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=$e(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=lt([e,$t(f)],e.shape.length-1),n=t}else a=e;let s=qe(a),i=G(Da(a,s),[r,n]),o=oc(i),l=Math.floor(n/2)+1,u=ac(o),c=Cd(o),h=Ut(u,[l,n-l],u.shape.length-1),d=Ut(c,[l,n-l],c.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,G(Da(h[0],d[0]),p)}var lc=O({rfft_:yE});function gE(e){let t={x:C(e,"x","sqrt")};return $.runKernel(Qs,t)}var an=O({sqrt_:gE});function xE(e,t){let n=C(e,"a","squaredDifference"),r=C(t,"b","squaredDifference");[n,r]=Nt(n,r),wt(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(ni,a,s)}var qd=O({squaredDifference_:xE});function wE(e,t){let n=C(e,"x","squeeze");return G(n,Y2(n.shape,t).newShape)}var Ha=O({squeeze_:wE});function bE(e,t=0){let n=Uu(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Bo,r,a)}var An=O({stack_:bE});function _E(e,t=0){let n={x:C(e,"x","step")},r={alpha:t};return $.runKernel($a,n,r)}var Nl=O({step_:_E});function vE(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let u={x:C(e,"x","stridedSlice")},c={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(Qo,u,c)}var Rm=O({stridedSlice_:vE});function kE(e){let t={x:C(e,"x","tan")};return $.runKernel(el,t)}var Fm=O({tan_:kE});function hn(e,t){ds(e);let n=Or(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Oa(e,null,n,t)}function En(e,t,n){if(ds(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Or(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Oa(e,t,r,n)}function IE(e,t,n){if(ds(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Or(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Oa(e,t,r,n)}function NE(e,t,n){if(ds(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Or(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Oa(e,t,r,n)}function SE(e,t,n){if(ds(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Or(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Oa(e,t,r,n)}function TE(e,t=1,n=!0){let r=C(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(tl,s,i);return{values:o,indices:l}}var Mm=O({topk_:TE});function EE(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new Im(t,n,r,!0,a),i=Ue(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(hd,r,a);return{values:s,indices:i}}var Kd=O({unique_:CE});function RE(e,t,n){let r=C(e,"x","unsortedSegmentSum"),a=C(t,"segmentIds","unsortedSegmentSum","int32");F(Kt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(Mu,s,i)}var $m=O({unsortedSegmentSum_:RE});function FE(e,t=0){let n=C(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(nl,r,a)}var hr=O({unstack_:FE});function Rx(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function Fx(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),un(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=Ie(1),u=we(l,o),c=P(we(i,s),u);if(a){F(r!=null,()=>"When using zeroDebias: true, step is required.");let h=C(r,"step","movingAverage");c=be(c,we(l,ha(o,h)))}return ie(s,c)}var PE=O({movingAverage_:zE});function LE(e,t,n){let r=C(e,"indices","scatterND","int32"),a=C(t,"updates","scatterND");jf(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(jo,s,i)}var $x=O({scatterND_:LE});function WE(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function BE(e,t,n,r=0){let a=C(e,"sparseIndices","sparseToDense","int32"),s=C(t,"sparseValues","sparseToDense"),i=C(r,"defaultValue","sparseToDense",s.dtype);WE(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(ud,o,l)}var Om=O({sparseToDense_:BE});function VE(e,t){let n=C(t,"indices","gatherND","int32"),r={params:C(e,"x","gatherND"),indices:n};return $.runKernel(Io,r)}var Dx=O({gatherND_:VE});function UE(e,t){if(t==null)return e.shape.slice();if(oa(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ge?a.clone():a;let s=UE(a,n),i=1-t,o=be(wl(ie(kl(s,0,1,"float32",r),i)),i);return P(a,o)}var Ox=O({dropout_:HE});function zx(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function zm(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),F(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),un(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,u]=[i.length/s,s],c=J2("bool",l);for(let h=0;hA.value-m.value),c[h]=0;for(let m=0;mqE,depthwiseConv2d:()=>XE,matMul:()=>KE});function ZE(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let u=s==="NHWC"?o.shape[3]:o.shape[1],c=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${n[2]}.`),F(c===n[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${n[3]}).`),i!=null&&F(Kt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Bh,h,d)}var Pm=O({conv2DBackpropFilter_:ZE});function Yd(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,Nl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Jd(e,t){let n=t,r=Vt(e.shape,t.shape);return r.length>0&&(n=Re(n,r)),G(n,e.shape)}function Qd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return Ur(e);if(t==="elu")return xl(e);if(t==="relu6")return Ld(e);if(t==="prelu")return rc(e,n);if(t==="leakyrelu")return Qu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var ep=(e,t)=>!(e>0)||t==="linear";function YE({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(l=l||"linear",ep($.state.gradientDepth,l)===!1){let w=ua(e,t,n,r,a,s,i);return o!=null&&(w=ie(w,o)),Qd(w,l,u,c)}let h=C(e,"x","conv2d"),d=C(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(Kt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F(Lr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=qu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=C(o,"bias","fused conv2d"),[A]=Nt(A,h),wt(m.outShape,A.shape));let y;u!=null&&(y=C(u,"prelu weights","fused conv2d"));let g=(w,x)=>{let[N,S,T,M]=x,D=Yd(w,T,l);F(Wa(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let z=um(S.shape,D,N,n,r),W=Pm(S,D,N.shape,n,r),U=[z,W];if(M!=null){let H=Jd(M,D);U.push(H)}return U},b={x:p,filter:d,bias:A,preluActivationWeights:y},_={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?Wr((w,x,N)=>{let S=$.runKernel(oi,b,_);return N([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):Wr((w,x,N,S)=>{let T=$.runKernel(oi,b,_);return S([x,w,T,N]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var qE=O({fusedConv2d_:YE});function JE(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={x:o,dy:l},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(jh,u,c)}var Px=O({depthwiseConv2dNativeBackpropFilter_:JE});function QE(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={dy:o,filter:n},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel(Gh,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Lx=O({depthwiseConv2dNativeBackpropInput_:QE});function eC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(ep($.state.gradientDepth,l)===!1){let w=gl(e,t,n,r,a,s,i);return o!=null&&(w=ie(w,o)),Qd(w,l,u,c)}let h=C(e,"x","depthwiseConv2d"),d=C(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F(Lr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(Kt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=qu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=C(o,"bias","fused conv2d"),[A]=Nt(A,h),wt(m.outShape,A.shape));let y;u!=null&&(y=C(u,"prelu weights","fused depthwiseConv2d"));let g=(w,x)=>{F(Wa(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[N,S,T,M]=x,D=Yd(w,T,l),z=Lx(S.shape,D,N,n,r,s,i),W=Px(S,D,N.shape,n,r,s,i);if(M!=null){let U=Jd(A,D);return[z,W,U]}return[z,W]},b={x:p,filter:d,bias:A,preluActivationWeights:y},_={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?Wr((w,x,N)=>{let S=$.runKernel(li,b,_);return N([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):Wr((w,x,N,S)=>{let T=$.runKernel(li,b,_);return S([x,w,T,N]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var XE=O({fusedDepthwiseConv2d_:eC});function tC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(ep($.state.gradientDepth,s)===!1){let M=Ke(e,t,n,r);return a!=null&&(M=ie(M,a)),Qd(M,s,i,o)}let l=C(e,"a","fused matMul"),u=C(t,"b","fused matMul");[l,u]=Nt(l,u);let c=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?u.shape[u.rank-1]:u.shape[u.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?u.shape[u.rank-2]:u.shape[u.rank-1],f=l.shape.slice(0,-2),m=u.shape.slice(0,-2),A=Lt(f),y=Lt(m);F(l.rank>=2&&u.rank>=2&&l.rank===u.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${u.rank}.`),F(oa(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${u.shape} must match.`),F(c===h,()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),b=n?G(l,[A,c,d]):G(l,[A,d,c]),_=r?G(u,[y,p,h]):G(u,[y,h,p]),w;a!=null&&(w=C(a,"bias","fused matMul"),[w]=Nt(w,l),wt(g,w.shape));let x;i!=null&&(x=C(i,"prelu weights","fused matMul"));let N=(M,D)=>{let[z,W,U,H]=D,X=Yd(G(M,U.shape),U,s),j,ee;if(!n&&!r?(j=Ke(X,W,!1,!0),ee=Ke(z,X,!0,!1)):!n&&r?(j=Ke(X,W,!1,!1),ee=Ke(X,z,!0,!1)):n&&!r?(j=Ke(W,X,!1,!0),ee=Ke(z,X,!1,!1)):(j=Ke(W,X,!0,!0),ee=Ke(X,z,!0,!0)),a!=null){let Y=Jd(H,X);return[j,ee,Y]}else return[j,ee]},S={a:b,b:_,bias:w,preluActivationWeights:x},T={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?Wr((M,D,z)=>{let W=$.runKernel(ii,S,T);return z([M,D,W]),{value:G(W,g),gradFunc:N}})(b,_):Wr((M,D,z,W)=>{let U=$.runKernel(ii,S,T);return W([M,D,U,z]),{value:G(U,g),gradFunc:N}})(b,_,w)}var KE=O({fusedMatMul_:tC});function nC(e){return zm(e,.54,.46)}var rC=O({hammingWindow_:nC});function aC(e){return zm(e,.5,.5)}var Wx=O({hannWindow_:aC});function sC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push($e(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${o.shape}.`),F(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),F(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),F(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let c={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(Ao,c,h)}var uC=O({cropAndResize_:lC});function cC(e){let t=C(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(vo,n,{})}var hC=O({flipLeftRight_:cC});function dC(e,t,n=0,r=.5){let a=C(e,"image","rotateWithOffset","float32");F(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(al,s,i)}var pC=O({rotateWithOffset_:dC});function Sl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function fC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppression"),i=C(t,"scores","nonMaxSuppression"),o=Sl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(zo,{boxes:s,scores:i},l)}var mC=O({nonMaxSuppression_:fC});function yC(e,t,n){let r=AC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function AC(e,t,n){return xC(e,t,n||gC)}function gC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function Vx(e,t,n,r,a){return Lm(e,t,n,r,a,0)}function Ux(e,t,n,r,a,s){return Lm(e,t,n,r,a,0,!1,s,!0)}function Hx(e,t,n,r,a,s){return Lm(e,t,n,r,a,s,!0)}function Lm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let u=[];for(let A=0;Aa&&u.push({score:t[A],boxIndex:A,suppressBeginIndex:0});u.sort(jx);let c=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=u.pop(),{score:y,boxIndex:g,suppressBeginIndex:b}=A;if(y=b;--w){let x=wC(e,g,h[w]);if(x>=r){_=!0;break}if(A.score=A.score*bC(r,c,x),A.score<=a)break}A.suppressBeginIndex=h.length,_||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&yC(u,A,jx))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function wC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),u=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;let m=Math.max(s,u),A=Math.max(i,c),y=Math.min(o,h),g=Math.min(l,d),b=Math.max(y-m,0)*Math.max(g-A,0);return b/(p+f-b)}function bC(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function jx(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function _C(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppressionAsync"),i=C(t,"scores","nonMaxSuppressionAsync"),o=Sl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),u=l[0],c=l[1],{selectedIndices:h}=Vx(u,c,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),hn(h,"int32")}var vC=_C;function kC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=Sl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u={boxes:i,scores:o},c={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Lo,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var IC=O({nonMaxSuppressionWithScore_:kC});async function NC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=Sl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u=await Promise.all([i.data(),o.data()]),c=u[0],h=u[1],{selectedIndices:d,selectedScores:p}=Hx(c,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:hn(d,"int32"),selectedScores:hn(p)}}var SC=NC;function TC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=Sl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Po,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var EC=O({nonMaxSuppressionPadded_:TC});async function CC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=Sl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Ux(d,p,u,c,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:hn(f,"int32"),validOutputs:Ie(m,"int32")}}var RC=CC;function FC(e,t,n=!1,r=!1){let a=C(e,"images","resizeBilinear");F(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Gs,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Gx=O({resizeBilinear_:FC});function MC(e,t,n=!1,r=!1){let a=C(e,"images","resizeNearestNeighbor");F(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Cu,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var qx=O({resizeNearestNeighbor_:MC});function $C(e,t,n="nearest",r="constant",a=0,s){let i=C(e,"image","transform","float32"),o=C(t,"transforms","transform","float32");F(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),F(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},u={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(cd,l,u)}var DC=O({transform_:$C});function OC(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=C(e,"a","bandPart");F(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=G(Pd(0,s,1,"int32"),[-1,1]),l=Pd(0,i,1,"int32"),u=we(o,l),c=cr(yi(u,Ie(+t,"int32")),Ua(u,Ie(-n,"int32"))),h=$t([s,i],r.dtype);return G(An(hr(G(r,[-1,s,i])).map(d=>Tn(c,d,h))),a)}var zC=O({bandPart_:OC});function PC(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=Ut(e,e.shape[0],0).map(a=>Ha(a,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Xx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,u)=>l*u),r=hr(G(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[u,c]=Xx(l,t);a.push(u),s.push(c)});let i=G(An(a,0),e.shape),o=G(An(s,0),e.shape);return[i,o]}}function Xx(e,t=!1){return $.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=Am(n),s=zr(e),i=En([[1]],[1,1]),o=zr(i),l=n>=r?r:n;for(let u=0;u{let p=$e(s,[u,u],[n-u,1]),f=Zd(p),m=$e(s,[u,u],[1,1]),A=Tn(ur(m,0),En([[-1]]),En([[1]])),y=we(m,P(A,f)),g=be(p,y);g.shape[0]===1?o=zr(i):o=lt([i,$e(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let b=St(be(Ke(A,y),f)),_=$e(s,[u,0],[n-u,r]),w=P(b,o),x=ot(o);if(u===0)s=we(_,Ke(w,Ke(x,_)));else{let T=we(_,Ke(w,Ke(x,_)));s=lt([$e(s,[0,0],[u,r]),T],0)}let N=ot(w),S=$e(a,[0,u],[n,a.shape[1]-u]);if(u===0)a=we(S,Ke(Ke(S,o),N));else{let T=we(S,Ke(Ke(S,o),N));a=lt([$e(a,[0,0],[n,u]),T],1)}return[o,s,a]}),Me([c,h,d])}return!t&&n>r&&(a=$e(a,[0,0],[n,r]),s=$e(s,[0,0],[r,r])),[a,s]})}var BC=O({qr_:WC}),yn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(yn||(yn={}));function VC(e,t,n=yn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=C(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===yn.NONE)return s;if(n===yn.SUM)return Re(s);if(n===yn.MEAN){if(a==null)return Tt(s);{let i=r.size/a.size,o=be(Re(s),Re(a));return i>1?be(o,Ie(i)):o}}if(n===yn.SUM_BY_NONZERO_WEIGHTS){if(a==null)return be(Re(s),Ie(r.size));{let i=P(a,Vr(r.shape)),o=ge(Re(xi(i,Ie(0))),"float32");return be(Re(s),o)}}throw Error(`Unknown reduction: ${n}`)}var da=O({computeWeightedLoss_:VC});function UC(e,t,n,r=yn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"labels","absoluteDifference"),s=C(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=C(n,"weights","absoluteDifference")),un(a.shape,s.shape,"Error in absoluteDifference: ");let o=Bt(we(a,s));return da(o,i,r)}var HC=O({absoluteDifference_:UC});function jC(e,t,n,r,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","cosineDistance"),i=C(t,"predictions","cosineDistance"),o=null;r!=null&&(o=C(r,"weights","cosineDistance")),un(s.shape,i.shape,"Error in cosineDistance: ");let l=Ie(1),u=we(l,Re(P(s,i),n,!0));return da(u,o,a)}var GC=O({cosineDistance_:jC});function qC(e,t,n,r=yn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"labels","hingeLoss"),s=C(t,"predictions","hingeLoss"),i=null;n!=null&&(i=C(n,"weights","hingeLoss")),un(a.shape,s.shape,"Error in hingeLoss: ");let o=Ie(1);a=we(P(Ie(2),a),o);let l=Ur(we(o,P(a,s)));return da(l,i,r)}var XC=O({hingeLoss_:qC});function KC(e,t,n,r=1,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","huberLoss"),i=C(t,"predictions","huberLoss"),o=null;n!=null&&(o=C(n,"weights","huberLoss")),un(s.shape,i.shape,"Error in huberLoss: ");let l=Ie(r),u=Bt(we(i,s)),c=vl(u,l),h=we(u,c),d=ie(P(Ie(.5),ht(c)),P(l,h));return da(d,o,a)}var ZC=O({huberLoss_:KC});function YC(e,t,n,r=1e-7,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","logLoss"),i=C(t,"predictions","logLoss"),o=null;n!=null&&(o=C(n,"weights","logLoss")),un(s.shape,i.shape,"Error in logLoss: ");let l=Ie(1),u=Ie(r),c=St(P(s,zn(ie(i,u)))),h=P(we(l,s),zn(ie(we(l,i),u))),d=we(c,h);return da(d,o,a)}var JC=O({logLoss_:YC});function QC(e,t,n,r=yn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"labels","meanSquaredError"),s=C(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=C(n,"weights","meanSquaredError")),un(a.shape,s.shape,"Error in meanSquaredError: ");let o=qd(a,s);return da(o,i,r)}var eR=O({meanSquaredError_:QC});function tR(e,t){let n=C(e,"labels","sigmoidCrossEntropyWithLogits"),r=C(t,"logits","sigmoidCrossEntropyWithLogits");un(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=Ur(r),s=P(r,n),i=Fd(Jn(St(Bt(r))));return ie(we(a,s),i)}function nR(e,t,n,r=0,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"multiClassLabels","sigmoidCrossEntropy"),i=C(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","sigmoidCrossEntropy")),un(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let u=Ie(r),c=Ie(1),h=Ie(.5);s=ie(P(s,we(c,u)),P(h,u))}let l=tR(s,i);return da(l,o,a)}var rR=O({sigmoidCrossEntropy_:nR});function aR(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return Wr((r,a,s)=>{let i=wm(a,[n],!0),o=we(ge(a,"float32"),i);s([r,o]);let l=St(P(o,r));return{value:Re(l,[n]),gradFunc:(u,c)=>{let[h,d]=c,p=gi(u.shape,[n]);return[P(G(u,p),we(ge(h,"float32"),Jn(d))),P(G(u,p),we(Jn(d),ge(h,"float32")))]}}})(e,t)}function sR(e,t,n,r=0,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"onehotLabels","softmaxCrossEntropy"),i=C(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","softmaxCrossEntropy")),un(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let u=Ie(r),c=Ie(1),h=Ie(s.shape[1]);s=ie(P(s,we(c,u)),be(u,h))}let l=aR(s,i);return da(l,o,a)}var iR=O({softmaxCrossEntropy_:sR}),oR={fft:oc,ifft:Il,rfft:lc,irfft:Gd},lR={hammingWindow:rC,hannWindow:Wx,frame:Bx,stft:oC},tt={flipLeftRight:hC,resizeNearestNeighbor:qx,resizeBilinear:Gx,rotateWithOffset:pC,cropAndResize:uC,nonMaxSuppression:mC,nonMaxSuppressionAsync:vC,nonMaxSuppressionWithScore:IC,nonMaxSuppressionWithScoreAsync:SC,nonMaxSuppressionPadded:EC,nonMaxSuppressionPaddedAsync:RC,transform:DC},Kx={bandPart:zC,gramSchmidt:LC,qr:BC},uR={absoluteDifference:HC,computeWeightedLoss:da,cosineDistance:GC,hingeLoss:XC,huberLoss:ZC,logLoss:JC,meanSquaredError:eR,sigmoidCrossEntropy:rR,softmaxCrossEntropy:iR},pa=class extends J5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Me(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return wx(e,t)}dispose(){this.iterations_!=null&&Me(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:Ie(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(pa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var tp=class extends pa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:B(()=>qe(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:B(()=>qe(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;B(()=>{let l=ie(P(i,this.rho),P(ht(s),1-this.rho)),u=P(be(an(ie(o,this.epsilon)),an(ie(i,this.epsilon))),s),c=ie(P(o,this.rho),P(ht(u),1-this.rho));i.assign(l),o.assign(c);let h=ie(P(u,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Me(this.accumulatedGrads.map(e=>e.variable)),Me(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};tp.className="Adadelta";Pa(tp);var np=class extends pa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:B(()=>Ju(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;B(()=>{let i=ie(s,ht(a));s.assign(i);let o=ie(P(be(a,an(ie(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Me(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};np.className="Adagrad";Pa(np);var rp=class extends pa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],B(()=>{this.accBeta1=Ie(t).variable(),this.accBeta2=Ie(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=we(1,this.accBeta1),r=we(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:B(()=>qe(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:B(()=>qe(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedSecondMoment[s].variable,h=ie(P(u,this.beta1),P(l,1-this.beta1)),d=ie(P(c,this.beta2),P(ht(l),1-this.beta2)),p=be(h,n),f=be(d,r);u.assign(h),c.assign(d);let m=ie(P(be(p,ie(an(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Me(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Me(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),B(()=>{this.accBeta1.assign(ha(this.beta1,this.iterations_+1)),this.accBeta2.assign(ha(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};rp.className="Adam";Pa(rp);var ap=class extends pa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],B(()=>{this.iteration=Ie(0).variable(),this.accBeta1=Ie(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=we(1,this.accBeta1),r=be(-this.learningRate,ie(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:qe(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:qe(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedWeightedInfNorm[s].variable,h=ie(P(u,this.beta1),P(l,1-this.beta1)),d=P(c,this.beta2),p=Bt(l),f=Br(d,p);u.assign(h),c.assign(f);let m=ie(P(be(r,n),be(h,ie(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(ie(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Me(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Me(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};ap.className="Adamax";Pa(ap);var uc=class extends pa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];B(()=>{let s=ie(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Zt(Ie(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};uc.className="SGD";Pa(uc);var sp=class extends uc{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=Ie(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:B(()=>qe(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&B(()=>{let i,o=ie(P(this.m,a),s);this.useNesterov?i=ie(P(this.c,ie(s,P(o,this.m))),r):i=ie(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Me(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};sp.className="Momentum";Pa(sp);var ip=class extends pa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:B(()=>qe(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:B(()=>qe(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:B(()=>qe(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;B(()=>{let l=ie(P(i,this.decay),P(ht(s),1-this.decay));if(this.centered){let u=this.accumulatedMeanGrads[n].variable,c=ie(P(u,this.decay),P(s,1-this.decay)),h=be(P(s,this.learningRate),an(we(l,ie(ht(c),this.epsilon)))),d=ie(P(o,this.momentum),h);i.assign(l),u.assign(c),o.assign(d);let p=we(r,d);r.assign(p)}else{let u=ie(P(i,this.decay),P(ht(s),1-this.decay)),c=ie(P(o,this.momentum),be(P(s,this.learningRate),an(ie(u,this.epsilon))));i.assign(u),o.assign(c);let h=we(r,c);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Me(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Me(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Me(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};ip.className="RMSProp";Pa(ip);var wi=class{static sgd(e){return new uc(e)}static momentum(e,t,n=!1){return new sp(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new ip(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new rp(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new tp(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new ap(e,t,n,r,a)}static adagrad(e,t=.1){return new np(e,t)}},bi={sgd:wi.sgd,momentum:wi.momentum,adadelta:wi.adadelta,adagrad:wi.adagrad,rmsprop:wi.rmsprop,adamax:wi.adamax,adam:wi.adam},cR=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function op(){return new Promise(e=>cR(()=>e()))}var R={};We(R,{ERF_A1:()=>bR,ERF_A2:()=>_R,ERF_A3:()=>vR,ERF_A4:()=>kR,ERF_A5:()=>IR,ERF_P:()=>wR,PARALLELIZE_THRESHOLD:()=>Wm,SELU_SCALE:()=>Yx,SELU_SCALEALPHA:()=>Zx,applyActivation:()=>Qd,assertAndGetBroadcastShape:()=>wt,assertAxesAreInnerMostDims:()=>GS,assertParamsConsistent:()=>hR,assignToTypedArray:()=>MR,axesAreInnerMostDims:()=>gm,calculateShapes:()=>W5,combineLocations:()=>_x,complexWithEvenIndex:()=>CR,complexWithOddIndex:()=>RR,computeConv2DInfo:()=>qu,computeConv3DInfo:()=>sx,computeDefaultPad:()=>im,computeDilation2DInfo:()=>AN,computeOptimalWindowSize:()=>pR,computeOutAndReduceShapes:()=>vx,computeOutShape:()=>dR,computePool2DInfo:()=>ax,computePool3DInfo:()=>yN,convertConv2DDataFormat:()=>rx,eitherStridesOrDilationsAreOne:()=>Lr,expandShapeToKeepDim:()=>gi,exponent:()=>DR,exponents:()=>$R,fromStringArrayToUint8:()=>PR,fromUint8ToStringArray:()=>zR,getAxesPermutation:()=>kx,getBroadcastDims:()=>lS,getComplexWithIndex:()=>FR,getFusedBiasGradient:()=>Jd,getFusedDyActivation:()=>Yd,getImageCenter:()=>fR,getInnerMostAxes:()=>qS,getPermuted:()=>AR,getReductionAxes:()=>Vt,getReshaped:()=>mR,getReshapedPermuted:()=>yR,getSliceBeginCoords:()=>gR,getSliceSize:()=>xR,getUndoAxesPermutation:()=>xm,log:()=>SR,mergeRealAndImagArrays:()=>TR,prepareAndValidate:()=>L5,prepareSplitSize:()=>OR,segment_util:()=>Jx,shouldFuse:()=>ep,slice_util:()=>fn,splitRealAndImagArrays:()=>ER,tupleValuesAreOne:()=>Wa,upcastType:()=>lr,validateInput:()=>jf,validateUpdateShape:()=>Hf,warn:()=>NR});function hR(e,t){let n=e[0].length;e.forEach((a,s)=>{F(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function dR(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function yR(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var Jx={};We(Jx,{collectGatherOpShapeInfo:()=>BR,computeOutShape:()=>WR,segOpComputeOptimalWindowSize:()=>LR});function LR(e,t){let n=!1,r;for(e<=Wm?(r=e,n=!0):r=Mh(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=Mh(e,r+1);return r}function WR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( - ${s}).`);if(nmd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function PR(e){return e.map(t=>Ou(t))}var Hr={};We(Hr,{nonMaxSuppressionV3Impl:()=>Vx,nonMaxSuppressionV4Impl:()=>Ux,nonMaxSuppressionV5Impl:()=>Hx,whereImpl:()=>Fx});function ke(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var VR=Hr.whereImpl,lp=class extends fu{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new Rh(this,Pr())}nextDataId(){return lp.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` + ${r.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(yo,o,l)}var hm=O({depthToSpace_:aS});function sS(e,t,n,r,a="NHWC",s=[1,1],i){let o=C(e,"x","depthwiseConv2d"),l=C(t,"filter","depthwiseConv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(Kt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:u,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(ks,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var gl=O({depthwiseConv2d_:sS});function iS(e){let t={x:C(e,"x","diag")};return $.runKernel(qh,t)}var oS=O({diag_:iS});function lS(e,t,n,r,a=[1,1],s="NHWC"){let i=C(e,"x","dilation2d"),o=C(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,u=!1;i.rank===3&&(l=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),u=!0);let c={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(_u,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var dm=O({dilation2d_:lS});function uS(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Vt(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function wt(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&un(s.shape,l.shape,"Error in where: ");let u={condition:s,t:o,e:l};return $.runKernel(Go,u)}var Tn=O({where_:hS});function dS(e){let t={x:C(e,"x","zerosLike")};return $.runKernel(rl,t)}var qe=O({zerosLike_:dS});function pS(e,t){let n=C(e,"a","div"),r=C(t,"b","div");[n,r]=Nt(n,r);let a=be(n,r),s=qe(a),i=Ba(r,s);return Tn(i,s,a)}var pm=O({divNoNan_:pS});function fS(e,t){let n=C(e,"t1","dot"),r=C(t,"t2","dot");F((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(F(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=G(n,[1,-1]),o=G(r,[-1,1]),l=Ke(i,o);return G(l,[])}else if(n.rank===1&&r.rank===2){let i=G(n,[1,-1]),o=G(r,[r.shape[0],r.shape[1]]),l=Ke(i,o);return G(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=G(r,[-1,1]),o=Ke(n,i);return G(o,[o.size])}else{let i=G(r,[r.shape[0],r.shape[1]]);return Ke(n,i)}}var Ax=O({dot_:fS});function mS(e){let t={x:C(e,"x","elu")};return $.runKernel(go,t)}var xl=O({elu_:mS});function AS(e){let t=C(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=ge(t,"float32"));let n={x:t};return $.runKernel(xo,n)}var fm=O({erf_:AS});function yS(e){let t={x:C(e,"x","exp")};return $.runKernel(Ns,t)}var Jn=O({exp_:yS});function gS(e,t=0){let n=C(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(bo,r,a)}var mn=O({expandDims_:gS});function xS(e){let t={x:C(e,"x","expm1")};return $.runKernel(_o,t)}var mm=O({expm1_:xS});function wS(e,t){let n=C(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Ma,r,a)}var Va=O({tile_:wS});function bS(e,t,n,r="float32"){t==null&&(t=e);let a=Ue([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${s.rank}.`),F(Kt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=G(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:t,bias:n,alpha:r,beta:a},c=$.runKernel(Nu,l,u);return o?G(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var ym=O({localResponseNormalization_:MS});function $S(e){let t={x:C(e,"x","log")};return $.runKernel(Ms,t)}var zn=O({log_:$S});function DS(e){let t={x:C(e,"x","log1p")};return $.runKernel(Fo,t)}var Fd=O({log1p_:DS});function OS(e){return F(Ca(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=C(t,"x","tf.grad","string_or_numeric"),a=n!=null?C(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&un(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Md(i),i[0]})}}function zS(e){return F(Ca(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=Uu(t,"args","tf.grads","string_or_numeric"),a=n!=null?C(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&un(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Md(i),i})}}function PS(e){return F(Ca(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof Ge,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof Ge,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return Md(r),{grad:r[0],value:a}}}function LS(e){return F(Ca(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(a=>a instanceof Ge),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof Ge,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&un(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Md(r.grads),r}}function bx(e,t){F(Ca(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(u=>u instanceof Wu),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let u in $.registeredVariables)t.push($.registeredVariables[u])}let r=n?t.filter(u=>!u.trainable):null,a=t.length;t=t.filter(u=>u.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);F(o.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((u,c)=>{o[c]!=null&&(l[u.name]=o[c])}),r!=null&&r.forEach(u=>l[u.name]=null),{value:i,grads:l}}function Wr(e){return $.customGrad(e)}function Md(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function WS(e){let t={x:C(e,"x","neg")};return $.runKernel(Do,t)}var St=O({neg_:WS});function BS(e){let t={x:C(e,"x","softplus")};return $.runKernel(Yo,t)}var bl=O({softplus_:BS});function VS(e){let t=C(e,"x","logSigmoid");return Wr(n=>({value:St(bl(St(n))),gradFunc:r=>P(r,On(St(n)))}))(t)}var _x=O({logSigmoid_:VS});function US(e,t=null,n=!1){let r={x:C(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel($s,r,a)}var Qn=O({max_:US});function HS(e,t){let n=C(e,"a","sub"),r=C(t,"b","sub");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(ri,a)}var we=O({sub_:HS});function jS(e,t=null,n=!1){let r=C(e,"x","sum");r.dtype==="bool"&&(r=ge(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(ei,a,s)}var Re=O({sum_:jS});function GS(e,t=-1){let n=C(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return Wr((r,a)=>{let s=!0,i=Qn(r,t,!0),o=we(r,i),l=we(ge(o,"float32"),zn(Re(Jn(o),t,s)));return a([l]),{value:l,gradFunc:(u,c)=>{let[h]=c,d=!0,p=Jn(h);return we(u,P(Re(u,t,d),p))}}})(n)}var $d=O({logSoftmax_:GS});function gm(e,t){for(let n=0;ne[s]);return[n,a]}function gi(e,t){let n=t.map(r=>1);return vx(e,n,t)}function qS(e,t,n){F(gm(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function Ix(e,t){if(gm(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function xm(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function XS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F(Lr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&F(Kt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Os,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var tc=O({maxPool_:eT});function tT(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=C(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(Kt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(Su,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var bm=O({maxPool3d_:tT});function nT(e,t,n,r,a=!1){let s={x:C(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(ad,s,i);return{result:o[0],indexes:o[1]}}var Sx=O({maxPoolWithArgmax_:nT});function rT(e,t){let n=C(e,"a","maximum"),r=C(t,"b","maximum");[n,r]=Nt(n,r),n.dtype==="bool"&&(n=ge(n,"int32"),r=ge(r,"int32")),wt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ds,a)}var Br=O({maximum_:rT});function aT(e,t=null,n=!1){let r={x:C(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(zs,r,a)}var Tt=O({mean_:aT});function sT(e,t=null,n=!1){let r={x:C(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Ps,r,a)}var _l=O({min_:sT});function iT(e,t){let n=C(e,"a","minimum"),r=C(t,"b","minimum");[n,r]=Nt(n,r),n.dtype==="bool"&&(n=ge(n,"int32"),r=ge(r,"int32")),wt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ls,a)}var vl=O({minimum_:iT});function oT(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=C(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(Tu,i,s)}var _m=O({mirrorPad_:oT});function lT(e,t){let n=C(e,"a","mod"),r=C(t,"b","mod");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel($o,a)}var vm=O({mod_:lT});function uT(e){let t=C(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var ht=O({square_:uT});function cT(e,t=null,n=!1){e=C(e,"x","moments");let r=or(t,e.shape),a=Tt(e,r,n),s=a.shape;n||(s=gi(a.shape,r));let i=ht(we(ge(e,"float32"),G(a,s))),o=Tt(i,r,n);return{mean:a,variance:o}}var Od=O({moments_:cT});function hT(e,t,n,r){let a=C(t,"data","multiRNNCell"),s=Uu(n,"c","multiRNNCell"),i=Uu(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?G(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},u=$.runKernel(sd,o,l);return i===1?G(u,[u.size]):u}var Tx=O({multinomial_:pT});function fT(e,t){let n=C(e,"a","notEqual"),r=C(t,"b","notEqual");[n,r]=Nt(n,r),wt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Oo,a)}var xi=O({notEqual_:fT});function $t(e,t="float32"){if(t==="complex64"){let r=$t(e,"float32"),a=$t(e,"float32");return Da(r,a)}let n=$h(Lt(e),t);return $.makeTensor(n,e,t)}function Vr(e,t="float32"){if(t==="complex64"){let r=Vr(e,"float32"),a=$t(e,"float32");return Da(r,a)}let n=Af(Lt(e),t);return $.makeTensor(n,e,t)}function mT(e){let t={x:C(e,"x","onesLike")};return $.runKernel(Wo,t)}var Pn=O({onesLike_:mT});function AT(e,t){let n=C(e,"v1","outerProduct"),r=C(t,"v2","outerProduct");F(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=G(n,[-1,1]),s=G(r,[1,-1]);return Ke(a,s)}var yT=O({outerProduct_:AT});function gT(e,t,n=0){let r=C(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel(Vs,s,a)}var ca=O({pad_:gT});function xT(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),ca(e,[t],n)}var wT=O({pad1d_:xT});function bT(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ca(e,t,n)}var _T=O({pad2d_:bT});function vT(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ca(e,t,n)}var kT=O({pad3d_:vT});function IT(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),ca(e,t,n)}var NT=O({pad4d_:IT});function ST(e,t,n){let r=C(e,"x","spaceToBatchND");F(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(Ru,a,s)}var nc=O({spaceToBatchND_:ST});function CT(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=C(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F(Lr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let u=sx(o.shape,t,s,a,r),c=[u.dilationHeight,u.dilationWidth],h;r==="same"?h=ET([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];let d=c[0]===1&&c[1]===1,[p,f]=TT([u.inHeight,u.inWidth],c,h),m=d?r:"valid",A=d?o:nc(o,c,p),y=(n==="avg"?()=>Xu(A,t,s,m):()=>tc(A,t,s,m))(),g=d?y:Ku(y,c,f);return l?G(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function TT(e,t,n){let r=n.map(c=>c[0]),a=n.map(c=>c[1]),s=e.concat(r,a),i=t.map((c,h)=>(c-s[h]%c)%c),o=a.map((c,h)=>c+i[h]),l=t.map((c,h)=>[r[h],o[h]]),u=t.map((c,h)=>[0,i[h]]);return[l,u]}function ET(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var Ex=O({pool_:CT});function RT(e,t){let n=C(e,"base","pow"),r=C(t,"exp","pow");[n,r]=Nt(n,r);let a={a:n,b:r};return $.runKernel(Us,a)}var ha=O({pow_:RT});function FT(e,t){let n=C(e,"x","prelu"),r=C(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(Hs,a)}var rc=O({prelu_:FT});function MT(e,t=null,n=!1){let r=C(e,"x","prod");r.dtype==="bool"&&(r=ge(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Vo,a,s)}var zd=O({prod_:MT});function $T(e,t,n){let r=Lt(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},OT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=km.alea(a.toString()),this.randn=new Im(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=km.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function PT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new OT(t,n,r,a),i=Ue(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Ln(t,0)}var XT=O({reverse1d_:qT});function KT(e,t){let n=C(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Ln(n,t)}var ZT=O({reverse2d_:KT});function YT(e,t){let n=C(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Ln(n,t)}var JT=O({reverse3d_:YT});function QT(e,t){let n=C(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Ln(n,t)}var eE=O({reverse4d_:QT});function tE(e){let t={x:C(e,"x","round")};return $.runKernel(Ks,t)}var Sm=O({round_:tE});function nE(e){let t={x:C(e,"x","rsqrt")};return $.runKernel(Zs,t)}var Wd=O({rsqrt_:nE});function Ie(e,t){if((cn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&cn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Oa(e,[],[],t)}function rE(e){let t={x:C(e,"x","selu")};return $.runKernel(qo,t)}var Bd=O({selu_:rE});function aE(e,t,n,r,a,s=[1,1],i="NHWC"){let o=C(e,"x","separableConv2d"),l=C(t,"depthwiseFilter","separableConv2d"),u=C(n,"pointwiseFilter","separableConv2d"),c=o,h=!1;if(o.rank===3&&(h=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),F(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let d=l.shape[2],p=l.shape[3];F(u.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${u.shape[2]}.`);let f=gl(c,l,r,a,i,s),m=ua(f,u,1,"valid",i);return h?G(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var Tm=O({separableConv2d_:aE});async function sE(e,t){let n=C(e,"x","setdiff1d"),r=C(t,"y","setdiff1d");F(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),$e(r,[t],[n])}var Hd=O({slice1d_:uE});function cE(e,t,n){let r=C(e,"x","slice2d");return F(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),$e(r,t,n)}var Cm=O({slice2d_:cE});function hE(e,t,n){let r=C(e,"x","slice3d");return F(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),$e(r,t,n)}var jd=O({slice3d_:hE});function dE(e,t,n){let r=C(e,"x","slice4d");return F(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),$e(r,t,n)}var sc=O({slice4d_:dE});function pE(e,t=-1){let n=C(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(ti,r,a)}var ic=O({softmax_:pE});function fE(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Yh,t)}var oc=O({fft_:fE});function mE(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Jh,t)}var Il=O({ifft_:mE});function AE(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=G(e,[n,t]);r=Il(a)}else{let a=[n,2*(t-1)],s=G(ac(e),[n,t]),i=G(Cd(e),[n,t]),o=Ln($e(s,[0,1],[n,t-2]),1),l=P(Ln($e(i,[0,1],[n,t-2]),1),Ie(-1)),u=lt([s,o],1),c=lt([i,l],1),h=G(Da(u,c),[a[0],a[1]]);r=Il(h)}if(r=ac(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=G(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var Gd=O({irfft_:AE});function yE(e,t,n=0){let r={x:C(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Jo,r,a)}var Ut=O({split_:yE});function gE(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=$e(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=lt([e,$t(f)],e.shape.length-1),n=t}else a=e;let s=qe(a),i=G(Da(a,s),[r,n]),o=oc(i),l=Math.floor(n/2)+1,u=ac(o),c=Cd(o),h=Ut(u,[l,n-l],u.shape.length-1),d=Ut(c,[l,n-l],c.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,G(Da(h[0],d[0]),p)}var lc=O({rfft_:gE});function xE(e){let t={x:C(e,"x","sqrt")};return $.runKernel(Qs,t)}var an=O({sqrt_:xE});function wE(e,t){let n=C(e,"a","squaredDifference"),r=C(t,"b","squaredDifference");[n,r]=Nt(n,r),wt(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(ni,a,s)}var qd=O({squaredDifference_:wE});function bE(e,t){let n=C(e,"x","squeeze");return G(n,J2(n.shape,t).newShape)}var Ha=O({squeeze_:bE});function _E(e,t=0){let n=Uu(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Bo,r,a)}var An=O({stack_:_E});function vE(e,t=0){let n={x:C(e,"x","step")},r={alpha:t};return $.runKernel($a,n,r)}var Nl=O({step_:vE});function kE(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let u={x:C(e,"x","stridedSlice")},c={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(Qo,u,c)}var Rm=O({stridedSlice_:kE});function IE(e){let t={x:C(e,"x","tan")};return $.runKernel(el,t)}var Fm=O({tan_:IE});function hn(e,t){ds(e);let n=Or(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Oa(e,null,n,t)}function En(e,t,n){if(ds(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Or(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Oa(e,t,r,n)}function NE(e,t,n){if(ds(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Or(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Oa(e,t,r,n)}function SE(e,t,n){if(ds(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Or(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Oa(e,t,r,n)}function TE(e,t,n){if(ds(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Or(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Oa(e,t,r,n)}function EE(e,t=1,n=!0){let r=C(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(tl,s,i);return{values:o,indices:l}}var Mm=O({topk_:EE});function CE(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new Im(t,n,r,!0,a),i=Ue(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(hd,r,a);return{values:s,indices:i}}var Kd=O({unique_:RE});function FE(e,t,n){let r=C(e,"x","unsortedSegmentSum"),a=C(t,"segmentIds","unsortedSegmentSum","int32");F(Kt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(Mu,s,i)}var $m=O({unsortedSegmentSum_:FE});function ME(e,t=0){let n=C(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(nl,r,a)}var hr=O({unstack_:ME});function Fx(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function Mx(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),un(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=Ie(1),u=we(l,o),c=P(we(i,s),u);if(a){F(r!=null,()=>"When using zeroDebias: true, step is required.");let h=C(r,"step","movingAverage");c=be(c,we(l,ha(o,h)))}return ie(s,c)}var LE=O({movingAverage_:PE});function WE(e,t,n){let r=C(e,"indices","scatterND","int32"),a=C(t,"updates","scatterND");jf(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(jo,s,i)}var Dx=O({scatterND_:WE});function BE(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function VE(e,t,n,r=0){let a=C(e,"sparseIndices","sparseToDense","int32"),s=C(t,"sparseValues","sparseToDense"),i=C(r,"defaultValue","sparseToDense",s.dtype);BE(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(ud,o,l)}var Om=O({sparseToDense_:VE});function UE(e,t){let n=C(t,"indices","gatherND","int32"),r={params:C(e,"x","gatherND"),indices:n};return $.runKernel(Io,r)}var Ox=O({gatherND_:UE});function HE(e,t){if(t==null)return e.shape.slice();if(oa(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ge?a.clone():a;let s=HE(a,n),i=1-t,o=be(wl(ie(kl(s,0,1,"float32",r),i)),i);return P(a,o)}var zx=O({dropout_:jE});function Px(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function zm(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),F(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),un(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,u]=[i.length/s,s],c=Q2("bool",l);for(let h=0;hA.value-m.value),c[h]=0;for(let m=0;mXE,depthwiseConv2d:()=>KE,matMul:()=>ZE});function YE(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let u=s==="NHWC"?o.shape[3]:o.shape[1],c=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${n[2]}.`),F(c===n[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${n[3]}).`),i!=null&&F(Kt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Bh,h,d)}var Pm=O({conv2DBackpropFilter_:YE});function Yd(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,Nl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Jd(e,t){let n=t,r=Vt(e.shape,t.shape);return r.length>0&&(n=Re(n,r)),G(n,e.shape)}function Qd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return Ur(e);if(t==="elu")return xl(e);if(t==="relu6")return Ld(e);if(t==="prelu")return rc(e,n);if(t==="leakyrelu")return Qu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var ep=(e,t)=>!(e>0)||t==="linear";function JE({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(l=l||"linear",ep($.state.gradientDepth,l)===!1){let w=ua(e,t,n,r,a,s,i);return o!=null&&(w=ie(w,o)),Qd(w,l,u,c)}let h=C(e,"x","conv2d"),d=C(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(Kt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F(Lr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=qu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=C(o,"bias","fused conv2d"),[A]=Nt(A,h),wt(m.outShape,A.shape));let y;u!=null&&(y=C(u,"prelu weights","fused conv2d"));let g=(w,x)=>{let[N,S,T,M]=x,D=Yd(w,T,l);F(Wa(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let z=um(S.shape,D,N,n,r),W=Pm(S,D,N.shape,n,r),U=[z,W];if(M!=null){let H=Jd(M,D);U.push(H)}return U},b={x:p,filter:d,bias:A,preluActivationWeights:y},_={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?Wr((w,x,N)=>{let S=$.runKernel(oi,b,_);return N([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):Wr((w,x,N,S)=>{let T=$.runKernel(oi,b,_);return S([x,w,T,N]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var XE=O({fusedConv2d_:JE});function QE(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={x:o,dy:l},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(jh,u,c)}var Lx=O({depthwiseConv2dNativeBackpropFilter_:QE});function eC(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={dy:o,filter:n},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel(Gh,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Wx=O({depthwiseConv2dNativeBackpropInput_:eC});function tC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(ep($.state.gradientDepth,l)===!1){let w=gl(e,t,n,r,a,s,i);return o!=null&&(w=ie(w,o)),Qd(w,l,u,c)}let h=C(e,"x","depthwiseConv2d"),d=C(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F(Lr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(Kt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=qu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=C(o,"bias","fused conv2d"),[A]=Nt(A,h),wt(m.outShape,A.shape));let y;u!=null&&(y=C(u,"prelu weights","fused depthwiseConv2d"));let g=(w,x)=>{F(Wa(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[N,S,T,M]=x,D=Yd(w,T,l),z=Wx(S.shape,D,N,n,r,s,i),W=Lx(S,D,N.shape,n,r,s,i);if(M!=null){let U=Jd(A,D);return[z,W,U]}return[z,W]},b={x:p,filter:d,bias:A,preluActivationWeights:y},_={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?Wr((w,x,N)=>{let S=$.runKernel(li,b,_);return N([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):Wr((w,x,N,S)=>{let T=$.runKernel(li,b,_);return S([x,w,T,N]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var KE=O({fusedDepthwiseConv2d_:tC});function nC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(ep($.state.gradientDepth,s)===!1){let M=Ke(e,t,n,r);return a!=null&&(M=ie(M,a)),Qd(M,s,i,o)}let l=C(e,"a","fused matMul"),u=C(t,"b","fused matMul");[l,u]=Nt(l,u);let c=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?u.shape[u.rank-1]:u.shape[u.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?u.shape[u.rank-2]:u.shape[u.rank-1],f=l.shape.slice(0,-2),m=u.shape.slice(0,-2),A=Lt(f),y=Lt(m);F(l.rank>=2&&u.rank>=2&&l.rank===u.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${u.rank}.`),F(oa(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${u.shape} must match.`),F(c===h,()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),b=n?G(l,[A,c,d]):G(l,[A,d,c]),_=r?G(u,[y,p,h]):G(u,[y,h,p]),w;a!=null&&(w=C(a,"bias","fused matMul"),[w]=Nt(w,l),wt(g,w.shape));let x;i!=null&&(x=C(i,"prelu weights","fused matMul"));let N=(M,D)=>{let[z,W,U,H]=D,X=Yd(G(M,U.shape),U,s),j,ee;if(!n&&!r?(j=Ke(X,W,!1,!0),ee=Ke(z,X,!0,!1)):!n&&r?(j=Ke(X,W,!1,!1),ee=Ke(X,z,!0,!1)):n&&!r?(j=Ke(W,X,!1,!0),ee=Ke(z,X,!1,!1)):(j=Ke(W,X,!0,!0),ee=Ke(X,z,!0,!0)),a!=null){let Y=Jd(H,X);return[j,ee,Y]}else return[j,ee]},S={a:b,b:_,bias:w,preluActivationWeights:x},T={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?Wr((M,D,z)=>{let W=$.runKernel(ii,S,T);return z([M,D,W]),{value:G(W,g),gradFunc:N}})(b,_):Wr((M,D,z,W)=>{let U=$.runKernel(ii,S,T);return W([M,D,U,z]),{value:G(U,g),gradFunc:N}})(b,_,w)}var ZE=O({fusedMatMul_:nC});function rC(e){return zm(e,.54,.46)}var aC=O({hammingWindow_:rC});function sC(e){return zm(e,.5,.5)}var Bx=O({hannWindow_:sC});function iC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push($e(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${o.shape}.`),F(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),F(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),F(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let c={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(Ao,c,h)}var cC=O({cropAndResize_:uC});function hC(e){let t=C(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(vo,n,{})}var dC=O({flipLeftRight_:hC});function pC(e,t,n=0,r=.5){let a=C(e,"image","rotateWithOffset","float32");F(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(al,s,i)}var fC=O({rotateWithOffset_:pC});function Sl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function mC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppression"),i=C(t,"scores","nonMaxSuppression"),o=Sl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(zo,{boxes:s,scores:i},l)}var AC=O({nonMaxSuppression_:mC});function gC(e,t,n){let r=yC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function yC(e,t,n){return wC(e,t,n||xC)}function xC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function Ux(e,t,n,r,a){return Lm(e,t,n,r,a,0)}function Hx(e,t,n,r,a,s){return Lm(e,t,n,r,a,0,!1,s,!0)}function jx(e,t,n,r,a,s){return Lm(e,t,n,r,a,s,!0)}function Lm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let u=[];for(let A=0;Aa&&u.push({score:t[A],boxIndex:A,suppressBeginIndex:0});u.sort(Gx);let c=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=u.pop(),{score:y,boxIndex:g,suppressBeginIndex:b}=A;if(y=b;--w){let x=bC(e,g,h[w]);if(x>=r){_=!0;break}if(A.score=A.score*_C(r,c,x),A.score<=a)break}A.suppressBeginIndex=h.length,_||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&gC(u,A,Gx))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function bC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),u=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;let m=Math.max(s,u),A=Math.max(i,c),y=Math.min(o,h),g=Math.min(l,d),b=Math.max(y-m,0)*Math.max(g-A,0);return b/(p+f-b)}function _C(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function Gx(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function vC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=C(e,"boxes","nonMaxSuppressionAsync"),i=C(t,"scores","nonMaxSuppressionAsync"),o=Sl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),u=l[0],c=l[1],{selectedIndices:h}=Ux(u,c,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),hn(h,"int32")}var kC=vC;function IC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=Sl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u={boxes:i,scores:o},c={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Lo,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var NC=O({nonMaxSuppressionWithScore_:IC});async function SC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=Sl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u=await Promise.all([i.data(),o.data()]),c=u[0],h=u[1],{selectedIndices:d,selectedScores:p}=jx(c,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:hn(d,"int32"),selectedScores:hn(p)}}var TC=SC;function EC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppression"),o=C(t,"scores","nonMaxSuppression"),l=Sl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Po,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var CC=O({nonMaxSuppressionPadded_:EC});async function RC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=C(e,"boxes","nonMaxSuppressionAsync"),o=C(t,"scores","nonMaxSuppressionAsync"),l=Sl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Hx(d,p,u,c,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:hn(f,"int32"),validOutputs:Ie(m,"int32")}}var FC=RC;function MC(e,t,n=!1,r=!1){let a=C(e,"images","resizeBilinear");F(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Gs,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var qx=O({resizeBilinear_:MC});function $C(e,t,n=!1,r=!1){let a=C(e,"images","resizeNearestNeighbor");F(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Cu,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Xx=O({resizeNearestNeighbor_:$C});function DC(e,t,n="nearest",r="constant",a=0,s){let i=C(e,"image","transform","float32"),o=C(t,"transforms","transform","float32");F(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),F(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},u={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(cd,l,u)}var OC=O({transform_:DC});function zC(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=C(e,"a","bandPart");F(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=G(Pd(0,s,1,"int32"),[-1,1]),l=Pd(0,i,1,"int32"),u=we(o,l),c=cr(yi(u,Ie(+t,"int32")),Ua(u,Ie(-n,"int32"))),h=$t([s,i],r.dtype);return G(An(hr(G(r,[-1,s,i])).map(d=>Tn(c,d,h))),a)}var PC=O({bandPart_:zC});function LC(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=Ut(e,e.shape[0],0).map(a=>Ha(a,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Kx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,u)=>l*u),r=hr(G(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[u,c]=Kx(l,t);a.push(u),s.push(c)});let i=G(An(a,0),e.shape),o=G(An(s,0),e.shape);return[i,o]}}function Kx(e,t=!1){return $.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=Am(n),s=zr(e),i=En([[1]],[1,1]),o=zr(i),l=n>=r?r:n;for(let u=0;u{let p=$e(s,[u,u],[n-u,1]),f=Zd(p),m=$e(s,[u,u],[1,1]),A=Tn(ur(m,0),En([[-1]]),En([[1]])),y=we(m,P(A,f)),g=be(p,y);g.shape[0]===1?o=zr(i):o=lt([i,$e(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let b=St(be(Ke(A,y),f)),_=$e(s,[u,0],[n-u,r]),w=P(b,o),x=ot(o);if(u===0)s=we(_,Ke(w,Ke(x,_)));else{let T=we(_,Ke(w,Ke(x,_)));s=lt([$e(s,[0,0],[u,r]),T],0)}let N=ot(w),S=$e(a,[0,u],[n,a.shape[1]-u]);if(u===0)a=we(S,Ke(Ke(S,o),N));else{let T=we(S,Ke(Ke(S,o),N));a=lt([$e(a,[0,0],[n,u]),T],1)}return[o,s,a]}),Me([c,h,d])}return!t&&n>r&&(a=$e(a,[0,0],[n,r]),s=$e(s,[0,0],[r,r])),[a,s]})}var VC=O({qr_:BC}),yn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(yn||(yn={}));function UC(e,t,n=yn.SUM_BY_NONZERO_WEIGHTS){let r=C(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=C(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===yn.NONE)return s;if(n===yn.SUM)return Re(s);if(n===yn.MEAN){if(a==null)return Tt(s);{let i=r.size/a.size,o=be(Re(s),Re(a));return i>1?be(o,Ie(i)):o}}if(n===yn.SUM_BY_NONZERO_WEIGHTS){if(a==null)return be(Re(s),Ie(r.size));{let i=P(a,Vr(r.shape)),o=ge(Re(xi(i,Ie(0))),"float32");return be(Re(s),o)}}throw Error(`Unknown reduction: ${n}`)}var da=O({computeWeightedLoss_:UC});function HC(e,t,n,r=yn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"labels","absoluteDifference"),s=C(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=C(n,"weights","absoluteDifference")),un(a.shape,s.shape,"Error in absoluteDifference: ");let o=Bt(we(a,s));return da(o,i,r)}var jC=O({absoluteDifference_:HC});function GC(e,t,n,r,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","cosineDistance"),i=C(t,"predictions","cosineDistance"),o=null;r!=null&&(o=C(r,"weights","cosineDistance")),un(s.shape,i.shape,"Error in cosineDistance: ");let l=Ie(1),u=we(l,Re(P(s,i),n,!0));return da(u,o,a)}var qC=O({cosineDistance_:GC});function XC(e,t,n,r=yn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"labels","hingeLoss"),s=C(t,"predictions","hingeLoss"),i=null;n!=null&&(i=C(n,"weights","hingeLoss")),un(a.shape,s.shape,"Error in hingeLoss: ");let o=Ie(1);a=we(P(Ie(2),a),o);let l=Ur(we(o,P(a,s)));return da(l,i,r)}var KC=O({hingeLoss_:XC});function ZC(e,t,n,r=1,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","huberLoss"),i=C(t,"predictions","huberLoss"),o=null;n!=null&&(o=C(n,"weights","huberLoss")),un(s.shape,i.shape,"Error in huberLoss: ");let l=Ie(r),u=Bt(we(i,s)),c=vl(u,l),h=we(u,c),d=ie(P(Ie(.5),ht(c)),P(l,h));return da(d,o,a)}var YC=O({huberLoss_:ZC});function JC(e,t,n,r=1e-7,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"labels","logLoss"),i=C(t,"predictions","logLoss"),o=null;n!=null&&(o=C(n,"weights","logLoss")),un(s.shape,i.shape,"Error in logLoss: ");let l=Ie(1),u=Ie(r),c=St(P(s,zn(ie(i,u)))),h=P(we(l,s),zn(ie(we(l,i),u))),d=we(c,h);return da(d,o,a)}var QC=O({logLoss_:JC});function eR(e,t,n,r=yn.SUM_BY_NONZERO_WEIGHTS){let a=C(e,"labels","meanSquaredError"),s=C(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=C(n,"weights","meanSquaredError")),un(a.shape,s.shape,"Error in meanSquaredError: ");let o=qd(a,s);return da(o,i,r)}var tR=O({meanSquaredError_:eR});function nR(e,t){let n=C(e,"labels","sigmoidCrossEntropyWithLogits"),r=C(t,"logits","sigmoidCrossEntropyWithLogits");un(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=Ur(r),s=P(r,n),i=Fd(Jn(St(Bt(r))));return ie(we(a,s),i)}function rR(e,t,n,r=0,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"multiClassLabels","sigmoidCrossEntropy"),i=C(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","sigmoidCrossEntropy")),un(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let u=Ie(r),c=Ie(1),h=Ie(.5);s=ie(P(s,we(c,u)),P(h,u))}let l=nR(s,i);return da(l,o,a)}var aR=O({sigmoidCrossEntropy_:rR});function sR(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return Wr((r,a,s)=>{let i=wm(a,[n],!0),o=we(ge(a,"float32"),i);s([r,o]);let l=St(P(o,r));return{value:Re(l,[n]),gradFunc:(u,c)=>{let[h,d]=c,p=gi(u.shape,[n]);return[P(G(u,p),we(ge(h,"float32"),Jn(d))),P(G(u,p),we(Jn(d),ge(h,"float32")))]}}})(e,t)}function iR(e,t,n,r=0,a=yn.SUM_BY_NONZERO_WEIGHTS){let s=C(e,"onehotLabels","softmaxCrossEntropy"),i=C(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=C(n,"weights","softmaxCrossEntropy")),un(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let u=Ie(r),c=Ie(1),h=Ie(s.shape[1]);s=ie(P(s,we(c,u)),be(u,h))}let l=sR(s,i);return da(l,o,a)}var oR=O({softmaxCrossEntropy_:iR}),lR={fft:oc,ifft:Il,rfft:lc,irfft:Gd},uR={hammingWindow:aC,hannWindow:Bx,frame:Vx,stft:lC},tt={flipLeftRight:dC,resizeNearestNeighbor:Xx,resizeBilinear:qx,rotateWithOffset:fC,cropAndResize:cC,nonMaxSuppression:AC,nonMaxSuppressionAsync:kC,nonMaxSuppressionWithScore:NC,nonMaxSuppressionWithScoreAsync:TC,nonMaxSuppressionPadded:CC,nonMaxSuppressionPaddedAsync:FC,transform:OC},Zx={bandPart:PC,gramSchmidt:WC,qr:VC},cR={absoluteDifference:jC,computeWeightedLoss:da,cosineDistance:qC,hingeLoss:KC,huberLoss:YC,logLoss:QC,meanSquaredError:tR,sigmoidCrossEntropy:aR,softmaxCrossEntropy:oR},pa=class extends Q5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Me(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return bx(e,t)}dispose(){this.iterations_!=null&&Me(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:Ie(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(pa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var tp=class extends pa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:B(()=>qe(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:B(()=>qe(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;B(()=>{let l=ie(P(i,this.rho),P(ht(s),1-this.rho)),u=P(be(an(ie(o,this.epsilon)),an(ie(i,this.epsilon))),s),c=ie(P(o,this.rho),P(ht(u),1-this.rho));i.assign(l),o.assign(c);let h=ie(P(u,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Me(this.accumulatedGrads.map(e=>e.variable)),Me(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};tp.className="Adadelta";Pa(tp);var np=class extends pa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:B(()=>Ju(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;B(()=>{let i=ie(s,ht(a));s.assign(i);let o=ie(P(be(a,an(ie(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Me(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};np.className="Adagrad";Pa(np);var rp=class extends pa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],B(()=>{this.accBeta1=Ie(t).variable(),this.accBeta2=Ie(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=we(1,this.accBeta1),r=we(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:B(()=>qe(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:B(()=>qe(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedSecondMoment[s].variable,h=ie(P(u,this.beta1),P(l,1-this.beta1)),d=ie(P(c,this.beta2),P(ht(l),1-this.beta2)),p=be(h,n),f=be(d,r);u.assign(h),c.assign(d);let m=ie(P(be(p,ie(an(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Me(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Me(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),B(()=>{this.accBeta1.assign(ha(this.beta1,this.iterations_+1)),this.accBeta2.assign(ha(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};rp.className="Adam";Pa(rp);var ap=class extends pa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],B(()=>{this.iteration=Ie(0).variable(),this.accBeta1=Ie(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=we(1,this.accBeta1),r=be(-this.learningRate,ie(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:qe(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:qe(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedWeightedInfNorm[s].variable,h=ie(P(u,this.beta1),P(l,1-this.beta1)),d=P(c,this.beta2),p=Bt(l),f=Br(d,p);u.assign(h),c.assign(f);let m=ie(P(be(r,n),be(h,ie(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(ie(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Me(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Me(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};ap.className="Adamax";Pa(ap);var uc=class extends pa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];B(()=>{let s=ie(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Zt(Ie(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};uc.className="SGD";Pa(uc);var sp=class extends uc{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=Ie(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:B(()=>qe(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&B(()=>{let i,o=ie(P(this.m,a),s);this.useNesterov?i=ie(P(this.c,ie(s,P(o,this.m))),r):i=ie(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Me(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};sp.className="Momentum";Pa(sp);var ip=class extends pa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:B(()=>qe(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:B(()=>qe(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:B(()=>qe(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;B(()=>{let l=ie(P(i,this.decay),P(ht(s),1-this.decay));if(this.centered){let u=this.accumulatedMeanGrads[n].variable,c=ie(P(u,this.decay),P(s,1-this.decay)),h=be(P(s,this.learningRate),an(we(l,ie(ht(c),this.epsilon)))),d=ie(P(o,this.momentum),h);i.assign(l),u.assign(c),o.assign(d);let p=we(r,d);r.assign(p)}else{let u=ie(P(i,this.decay),P(ht(s),1-this.decay)),c=ie(P(o,this.momentum),be(P(s,this.learningRate),an(ie(u,this.epsilon))));i.assign(u),o.assign(c);let h=we(r,c);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Me(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Me(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Me(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};ip.className="RMSProp";Pa(ip);var wi=class{static sgd(e){return new uc(e)}static momentum(e,t,n=!1){return new sp(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new ip(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new rp(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new tp(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new ap(e,t,n,r,a)}static adagrad(e,t=.1){return new np(e,t)}},bi={sgd:wi.sgd,momentum:wi.momentum,adadelta:wi.adadelta,adagrad:wi.adagrad,rmsprop:wi.rmsprop,adamax:wi.adamax,adam:wi.adam},hR=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function op(){return new Promise(e=>hR(()=>e()))}var R={};We(R,{ERF_A1:()=>_R,ERF_A2:()=>vR,ERF_A3:()=>kR,ERF_A4:()=>IR,ERF_A5:()=>NR,ERF_P:()=>bR,PARALLELIZE_THRESHOLD:()=>Wm,SELU_SCALE:()=>Jx,SELU_SCALEALPHA:()=>Yx,applyActivation:()=>Qd,assertAndGetBroadcastShape:()=>wt,assertAxesAreInnerMostDims:()=>qS,assertParamsConsistent:()=>dR,assignToTypedArray:()=>$R,axesAreInnerMostDims:()=>gm,calculateShapes:()=>B5,combineLocations:()=>vx,complexWithEvenIndex:()=>RR,complexWithOddIndex:()=>FR,computeConv2DInfo:()=>qu,computeConv3DInfo:()=>ix,computeDefaultPad:()=>im,computeDilation2DInfo:()=>yN,computeOptimalWindowSize:()=>fR,computeOutAndReduceShapes:()=>kx,computeOutShape:()=>pR,computePool2DInfo:()=>sx,computePool3DInfo:()=>gN,convertConv2DDataFormat:()=>ax,eitherStridesOrDilationsAreOne:()=>Lr,expandShapeToKeepDim:()=>gi,exponent:()=>OR,exponents:()=>DR,fromStringArrayToUint8:()=>LR,fromUint8ToStringArray:()=>PR,getAxesPermutation:()=>Ix,getBroadcastDims:()=>uS,getComplexWithIndex:()=>MR,getFusedBiasGradient:()=>Jd,getFusedDyActivation:()=>Yd,getImageCenter:()=>mR,getInnerMostAxes:()=>XS,getPermuted:()=>yR,getReductionAxes:()=>Vt,getReshaped:()=>AR,getReshapedPermuted:()=>gR,getSliceBeginCoords:()=>xR,getSliceSize:()=>wR,getUndoAxesPermutation:()=>xm,log:()=>TR,mergeRealAndImagArrays:()=>ER,prepareAndValidate:()=>W5,prepareSplitSize:()=>zR,segment_util:()=>Qx,shouldFuse:()=>ep,slice_util:()=>fn,splitRealAndImagArrays:()=>CR,tupleValuesAreOne:()=>Wa,upcastType:()=>lr,validateInput:()=>jf,validateUpdateShape:()=>Hf,warn:()=>SR});function dR(e,t){let n=e[0].length;e.forEach((a,s)=>{F(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function pR(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function gR(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var Qx={};We(Qx,{collectGatherOpShapeInfo:()=>VR,computeOutShape:()=>BR,segOpComputeOptimalWindowSize:()=>WR});function WR(e,t){let n=!1,r;for(e<=Wm?(r=e,n=!0):r=Mh(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=Mh(e,r+1);return r}function BR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( + ${s}).`);if(nmd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function LR(e){return e.map(t=>Ou(t))}var Hr={};We(Hr,{nonMaxSuppressionV3Impl:()=>Ux,nonMaxSuppressionV4Impl:()=>Hx,nonMaxSuppressionV5Impl:()=>jx,whereImpl:()=>Mx});function ke(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var UR=Hr.whereImpl,lp=class extends fu{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new Rh(this,Pr())}nextDataId(){return lp.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return Ue(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Pr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){ke([e],"where");let t=this.readSync(e.dataId);return VR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};lp.nextDataId=0;var Bm={};We(Bm,{addImpl:()=>ew,bincountImpl:()=>Vm,bincountReduceImpl:()=>tw,ceilImpl:()=>nw,concatImpl:()=>Um,expImpl:()=>rw,expm1Impl:()=>aw,floorImpl:()=>sw,gatherV2Impl:()=>iw,greaterImpl:()=>ow,lessImpl:()=>lw,linSpaceImpl:()=>uw,logImpl:()=>cw,maxImpl:()=>hw,maximumImpl:()=>dw,minimumImpl:()=>pw,multiplyImpl:()=>Hm,negImpl:()=>fw,notEqualImpl:()=>mw,prodImpl:()=>Aw,rangeImpl:()=>Gm,rsqrtImpl:()=>yw,simpleAbsImpl:()=>Qx,sliceImpl:()=>up,squaredDifferenceImpl:()=>gw,stridedSliceImpl:()=>xw,subImpl:()=>ww,tileImpl:()=>bw,topKImpl:()=>_w,transposeImpl:()=>jm,uniqueImpl:()=>vw});function Qx(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;ke(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=Qx(a),n.makeOutput(r,t.shape,"float32")},HR={kernelName:so,backendName:"cpu",kernelFunc:UR};function Dt(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),u=v.sizeFromShape(i),c=v.getTypedArrayFromDType(s,u),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;yb[N]=0);let _=v.locToIndex(b,h,p),w=g.slice(-d);A.forEach(N=>w[N]=0);let x=v.locToIndex(w,d,f);c[y]=e(r[_],a[x])}return[c,i]}}function Wn(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var jR={kernelName:Wh,backendName:"cpu",kernelFunc:Wn};function cp(e,t,n="float32"){if(n==="complex64"){let a=cp(e,t,"float32"),s=cp(e,t,"float32");return Wn({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function jr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var GR={kernelName:Rs,backendName:"cpu",kernelFunc:jr};function _i(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var qR={kernelName:id,backendName:"cpu",kernelFunc:_i};function Ga(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return jr({inputs:{x:a},backend:n});let i=cp(n,a.shape,a.dtype),o=Ga({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Wn({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=_i({inputs:{input:a},backend:n}),o=Ga({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=jr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,u]=Dt((c,h)=>c!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(u,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var XR={kernelName:gs,backendName:"cpu",kernelFunc:Ga};function Yt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;ke([i,o],e);let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let u=Ga({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),h=c.complexTensorInfos.real,d=c.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Ga({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,b=l.data.get(y.dataId).values,_=l.data.get(g.dataId).values,[w,x,N]=n(i.shape,o.shape,p,f,b,_),S=l.makeTensorInfo(N,"float32",w),T=l.makeTensorInfo(N,"float32",x),M=Wn({inputs:{real:S,imag:T},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(S),l.disposeIntermediateTensorInfo(T),M}else{let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}}}function qm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),u=o.length,c=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),b=n.length,_=v.computeStrides(n);if(p.length+f.length===0)for(let w=0;wN[z]=0);let S=v.locToIndex(N,y,g),T=x.slice(-b);f.forEach(z=>T[z]=0);let M=v.locToIndex(T,b,_),D=e(m[S*2],m[S*2+1],A[M*2],A[M*2+1]);h[w]=D.real,d[w]=D.imag}return[h,d,o]}}var ew=Dt((e,t)=>e+t),KR=qm((e,t,n,r)=>({real:e+n,imag:t+r})),cc=Yt(Ra,ew,KR),ZR={kernelName:Ra,backendName:"cpu",kernelFunc:cc};function Vm(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function tw(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=Ue([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,u):t.size>0?i.set(i.get(o,u)+t.get(o,l),o,u):i.set(i.get(o,u)+1,o,u))}return i}function Tl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=v.sizeFromShape(i.shape),c=n||i.dtype,h=v.getArrayFromDType(c,u);for(let d=0;d{let{x:i}=r;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=n||i.dtype,c=t(l,u,a);return o.makeTensorInfo(i.shape,u,c)}}var nw=Tl(e=>Math.ceil(e)),YR=El(xs,nw),JR={kernelName:xs,backendName:"cpu",kernelFunc:YR};function Um(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let u=0;uMath.exp(e)),kw=El(Ns,rw),QR={kernelName:Ns,backendName:"cpu",kernelFunc:kw},aw=Tl(e=>Math.expm1(e)),eF=El(_o,aw),tF={kernelName:_o,backendName:"cpu",kernelFunc:eF},sw=Tl(e=>Math.floor(e)),nF=El(Ss,sw),rF={kernelName:Ss,backendName:"cpu",kernelFunc:nF};function iw(e,t,n){let r=Ue(n,e.dtype);for(let a=0;ae>t?1:0),aF=Yt(No,ow,null,"bool"),sF={kernelName:No,backendName:"cpu",kernelFunc:aF},lw=Dt((e,t)=>eMath.log(e)),lF=El(Ms,cw),uF={kernelName:Ms,backendName:"cpu",kernelFunc:lF};function hw(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=u)}a[s]=o}return a}var dw=Dt((e,t)=>Math.max(e,t)),cF=Yt(Ds,dw),hF={kernelName:Ds,backendName:"cpu",kernelFunc:cF},pw=Dt((e,t)=>Math.min(e,t)),dF=Yt(Ls,pw),pF={kernelName:Ls,backendName:"cpu",kernelFunc:dF},Hm=Dt((e,t)=>e*t),fF=qm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Xm=Yt(Ws,Hm,fF),mF={kernelName:Ws,backendName:"cpu",kernelFunc:Xm};function fw(e,t,n){let r=v.createScalarValue(-1,n);return Hm([],t,r,e,n)}function AF(e){let{inputs:t,backend:n}=e,{x:r}=t;ke(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=fw(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var yF={kernelName:Do,backendName:"cpu",kernelFunc:AF},mw=Dt((e,t)=>e!==t?1:0),gF=Yt(Oo,mw,null,"bool"),xF={kernelName:Oo,backendName:"cpu",kernelFunc:gF};function jm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),u=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let c=0;cn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var _F={kernelName:Vo,backendName:"cpu",kernelFunc:bF};function Gm(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),vF=El(Zs,yw),kF={kernelName:Zs,backendName:"cpu",kernelFunc:vF};function up(e,t,n,r,a){let s=fn.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=fn.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,u=Ue(r,a,l),c=Ue(n,a);for(let h=0;hf+t[m]);c.set(u.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(c.values):c.values}function vi(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;ke(a,"slice");let[o,l]=fn.parseSliceParams(a,s,i);fn.assertParamsValid(a,o,l);let u=n.data.get(a.dataId).values,c=up(u,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,c)}var IF={kernelName:Xo,backendName:"cpu",kernelFunc:vi},gw=Dt((e,t)=>{let n=e-t;return n*n}),NF=Yt(ni,gw),SF={kernelName:ni,backendName:"cpu",kernelFunc:NF};function xw(e,t,n,r){let a=Ue(e,t.dtype);for(let s=0;se-t),TF=qm((e,t,n,r)=>({real:e-n,imag:t-r})),Km=Yt(ri,ww,TF),EF={kernelName:ri,backendName:"cpu",kernelFunc:Km};function bw(e,t){let n=new Array(e.rank);for(let a=0;ab.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=u.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew lp,1);var Nw=ut(go,e=>e>=0?e:Math.exp(e)-1),CF={kernelName:go,backendName:"cpu",kernelFunc:Nw};function Sw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;ke([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let u=0;ue<0?t*e:e);function Tw(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;ke([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=FF(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var MF={kernelName:Hs,backendName:"cpu",kernelFunc:Tw},Ew=ut(js,e=>Math.max(0,e)),$F={kernelName:js,backendName:"cpu",kernelFunc:Ew},Cw=ut(qs,e=>Math.min(Math.max(0,e),6)),DF={kernelName:qs,backendName:"cpu",kernelFunc:Cw};function Zm(e,t,n,r,a){if(n==="linear")return jr({inputs:{x:t},backend:e});if(n==="relu")return Ew({inputs:{x:t},backend:e});if(n==="elu")return Nw({inputs:{x:t},backend:e});if(n==="relu6")return Cw({inputs:{x:t},backend:e});if(n==="prelu")return Tw({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return Sw({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function bt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let u=n.data.get(a.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,h=u.complexTensorInfos.imag;c.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var OF={kernelName:Ho,backendName:"cpu",kernelFunc:bt};function Rw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;ke([a,s],"matMul");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let b=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let _=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=bt({inputs:{x:a},backend:n,attrs:{shape:_}}),N=bt({inputs:{x:s},backend:n,attrs:{shape:w}}),S=i?x.shape[1]:x.shape[2],T=i?x.shape[2]:x.shape[1],M=o?N.shape[1]:N.shape[2],D=Math.max(A,y),z=n.data.get(x.dataId).values,W=n.data.get(N.dataId).values,U=v.computeStrides(x.shape),H=v.computeStrides(N.shape),[X,j,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,se,te]=o?[1,H[1],H[0]]:[H[1],1,H[0]],oe=T*M,Q=Ue([D,T,M],x.dtype),pe=Q.values,le=n.blockSize;for(let Ae=0;AeMath.acos(e)),BF={kernelName:io,backendName:"cpu",kernelFunc:WF},VF=ut(oo,e=>Math.acosh(e)),UF={kernelName:oo,backendName:"cpu",kernelFunc:VF};function HF(e){let{inputs:t,backend:n}=e,r=t;ke(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=Ue(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=w,b=_)}p[A]=b}return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var YF={kernelName:ms,backendName:"cpu",kernelFunc:ZF};function JF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;ke(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=dr({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[c,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(c),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var QF={kernelName:yu,backendName:"cpu",kernelFunc:JF},eM=ut(lo,e=>Math.asin(e)),tM={kernelName:lo,backendName:"cpu",kernelFunc:eM},nM=ut(uo,e=>Math.asinh(e)),rM={kernelName:uo,backendName:"cpu",kernelFunc:nM},aM=ut(co,e=>Math.atan(e)),sM={kernelName:co,backendName:"cpu",kernelFunc:aM},iM=Dt((e,t)=>Math.atan2(e,t)),oM=Yt(po,iM),lM={kernelName:po,backendName:"cpu",kernelFunc:oM},uM=ut(ho,e=>Math.atanh(e)),cM={kernelName:ho,backendName:"cpu",kernelFunc:uM};function Ym(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,u=a.dilationWidth,c=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=Ue(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],b=a.outShape[3];for(let _=0;_j?j=le:s==="avg"&&(ee+=le,Y++)}if(isNaN(j))break}let se=z+W*b+N;A[se]=s==="avg"?ee/Y:j}}}return m}function Fw(e,t,n,r,a=!1,s=!1){let i=Ue(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=Ue(t,n,e);for(let A=0;AM&&(M=X,a?D=s?((A*r.inHeight+z)*r.inWidth+U)*r.inChannels+y:(z*r.inWidth+U)*r.inChannels+y:D=W*d+H)}}i.set(D,A,g,x,y)}}return i}function Mw(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,u=a.dilationDepth,c=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,b=Ue(a.outShape,n),_=b.values,w=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],N=a.outShape[3]*a.outShape[4],S=a.outShape[4];for(let T=0;TSe?Se=He:s==="avg"&&(Ee+=He,Oe++),isNaN(Se))break}if(isNaN(Se))break}if(isNaN(Se))break}let Le=me+z;_[Le]=s==="avg"?Ee/Oe:Se}}}}return b}function hM(e,t){let n=Ue(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,u=t.effectiveFilterDepth,c=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=W&&(W=te,U=X*c*h+ee*c+se)}}}n.set(U,m,y,w,T,A)}}}return n}function dM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;ke(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=jr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Ym(d,a.shape,a.dtype,p,c,"avg");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var pM={kernelName:As,backendName:"cpu",kernelFunc:dM};function fM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;ke(a,"avgPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=Mw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var mM={kernelName:gu,backendName:"cpu",kernelFunc:fM};function AM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;ke([a,s],"avgPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=c.strideDepth,d=c.strideHeight,p=c.strideWidth,f=c.filterDepth,m=c.filterHeight,A=c.filterWidth,y=c.dilationDepth,g=c.dilationHeight,b=c.dilationWidth,_=c.effectiveFilterDepth,w=c.effectiveFilterHeight,x=c.effectiveFilterWidth,N=_-1-c.padInfo.front,S=x-1-c.padInfo.left,T=w-1-c.padInfo.top,M=Ue(s.shape,"float32"),D=1/(f*m*A),z=n.bufferSync(a);for(let W=0;W=c.outDepth||Math.floor(Q)!==Q))for(let pe=0;pe=c.outHeight||Math.floor(le)!==le))for(let Ae=0;Ae=c.outWidth||Math.floor(me)!==me||(te+=z.get(W,Q,le,me,U))}}}M.set(te*D,W,H,X,j,U)}return n.makeTensorInfo(M.shape,M.dtype,M.values)}var yM={kernelName:Ph,backendName:"cpu",kernelFunc:AM};function gM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;ke([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,A=c.dilationWidth,y=c.effectiveFilterHeight,g=c.effectiveFilterWidth,b=g-1-c.padInfo.left,_=y-1-c.padInfo.top,w=Ue(i.shape,"float32"),x=1/(p*f),N=n.data.get(a.dataId).values,S=Ue(a.shape,"float32",N);for(let T=0;T=c.outHeight||Math.floor(j)!==j))for(let ee=0;ee=c.outWidth||Math.floor(Y)!==Y||(H+=S.get(T,j,Y,M))}}w.set(H*x,T,D,z,M)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var xM={kernelName:zh,backendName:"cpu",kernelFunc:gM};function wM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),ke([a,o,l,s,i],"batchNorm");let{varianceEpsilon:u}=r;u==null&&(u=.001);let c=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),A=f.length,y=p.length,g=d.length,b=h.length,_=0,w=0,x=0,N=0;for(let S=0;S=A&&(_=0),w>=b&&(w=0),x>=y&&(x=0),N>=g&&(N=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var bM={kernelName:Es,backendName:"cpu",kernelFunc:wM};function _M(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;ke([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=bt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=dr({inputs:{x:p},backend:n,attrs:{perm:u}}),m=bt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=vi({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var vM={kernelName:xu,backendName:"cpu",kernelFunc:_M};function kM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,u=Vm(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var IM={kernelName:Lh,backendName:"cpu",kernelFunc:kM},NM=ut(Fa,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let u=0;um.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return jr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(_=>_i({inputs:{input:_},backend:n})),A=o.map(_=>Cl({inputs:{input:_},backend:n})),y=Rl({inputs:m,backend:n,attrs:{axis:s}}),g=Rl({inputs:A,backend:n,attrs:{axis:s}}),b=Wn({inputs:{real:y,imag:g},backend:n});return m.forEach(_=>n.disposeIntermediateTensorInfo(_)),A.forEach(_=>n.disposeIntermediateTensorInfo(_)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),b}let u=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return bt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),c=u.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(u.map(m=>m.shape),1);let h=u[0].shape[0]===1,d=Um(c,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return u.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var RM={kernelName:fo,backendName:"cpu",kernelFunc:Rl};function $w(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r;ke([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,b=d.dataFormat==="channelsLast",_=new Wt(d.outShape,a.dtype),w=v.computeStrides(a.shape),x=v.computeStrides(s.shape),N=w[0],S=b?w[1]:w[2],T=b?w[2]:1,M=b?1:w[1],D=_.strides[0],z=b?_.strides[1]:_.strides[2],W=b?_.strides[2]:1,U=b?1:_.strides[1],H=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,j=_.values;for(let ee=0;ee=d.inHeight)continue;let Ae=pe*x[0],me=Y+le*S;for(let Se=0;Se=d.inWidth)continue;let at=Ae+Le*x[1],st=me+ze*T,ct=at;for(let Qe=0;Qe=u.inDepth)continue;let ee=X*T[0],Y=D+j*S[1];for(let se=0;se=u.inHeight)continue;let le=ee+Q*T[1],Ae=Y+pe*S[2];for(let me=0;me=u.inWidth)continue;let ze=le+Oe*T[2],at=Ae+Le*u.inChannels,st=ze;for(let ct=0;ctMath.cos(e)),HM={kernelName:_s,backendName:"cpu",kernelFunc:UM},jM=ut(mo,e=>Math.cosh(e)),GM={kernelName:mo,backendName:"cpu",kernelFunc:jM};function qM(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,[c,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=Ue([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,b=n.data.get(i.dataId).values,_=n.data.get(a.dataId).values,w=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let N=0;N=c)continue;let U=m>1?(D-T)*(h-1)/(m-1):0,H=A>1?(z-M)*(d-1)/(A-1):0;for(let X=0;X1?T*(h-1)+X*U:.5*(T+D)*(h-1);if(j<0||j>h-1){for(let ee=0;ee1?M*(d-1)+te*H:.5*(M+z)*(d-1);if(oe<0||oe>d-1){for(let Ae=0;Ae1?M*(d-1)+ee*H:.5*(M+z)*(d-1);if(Y<0||Y>d-1){for(let oe=0;oey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],u=a.shape[2],c=a.shape[3],h=l*s,d=u*s,p=c/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,u,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,b=g.left,_=g.top,w=p.outChannels/p.inChannels,x=new Wt(p.outShape,a.dtype),N=n.data.get(a.dataId).values,S=n.data.get(s.dataId).values,T=x.values;for(let M=0;M=p.inHeight)continue;let ee=X*h[0],Y=D+j*c[1];for(let se=0;se=p.inWidth)continue;let le=ee+Q*h[1],Ae=Y+pe*p.inChannels,me=te,Se=le;for(let Ee=0;Ee{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,u=l.data.get(r.dataId).values,c=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:b,strideHeight:_,strideWidth:w,filterHeight:x,filterWidth:N,dilationHeight:S,dilationWidth:T,outShape:M}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),D=v.sizeFromShape(M),z=M.length,W=v.getArrayFromDType(r.dtype,D);for(let U=0;U=0&&Q=0&&lese&&(se=Se)}}}let te=v.locToIndex([U,H,j,Y],z,v.computeStrides(M));W[te]=se}}}return{dataId:l.write(v.toTypedArray(W,r.dtype),M,r.dtype),shape:M,dtype:r.dtype}}},u$={kernelName:Kh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:b,strideWidth:_,filterHeight:w,filterWidth:x,dilationHeight:N,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Kh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let z=0;z=0&&oe=0&&peee&&(ee=le,Y=te,se=Q)}}}D[Y][se][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},c$={kernelName:Xh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:b,strideWidth:_,filterHeight:w,filterWidth:x,dilationHeight:N,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Xh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let z=0;z=0&&oe=0&&peee&&(ee=le,Y=oe,se=pe)}}}D[z][Y][se][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function h$(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;ke([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(u+1)}return n.makeTensorInfo(a.shape,"float32",s)}var d$={kernelName:Zh,backendName:"cpu",kernelFunc:h$},p$=Dt((e,t)=>e===t?1:0),Ow=Yt(wo,p$,null,"bool"),f$={kernelName:wo,backendName:"cpu",kernelFunc:Ow},m$=R.ERF_P,A$=R.ERF_A1,y$=R.ERF_A2,g$=R.ERF_A3,x$=R.ERF_A4,w$=R.ERF_A5,b$=ut(xo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+m$*n);return t*(1-((((w$*r+x$)*r+g$)*r+y$)*r+A$)*r*Math.exp(-n*n))}),_$={kernelName:xo,backendName:"cpu",kernelFunc:b$};function hp(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),bt({inputs:{x:a},backend:n,attrs:{shape:o}})}var v$={kernelName:bo,backendName:"cpu",kernelFunc:hp},k$=Dt((e,t)=>e/t),Jm=Yt(Is,k$),Qm={kernelName:Is,backendName:"cpu",kernelFunc:Jm};function zw(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,u=[a,s],c=v.sizeFromShape(u),h=v.getTypedArrayFromDType("float32",c),d=v.getTypedArrayFromDType("float32",c);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,u]=r.shape,c=a.data.get(r.dataId).values;for(let h=0;h=0&&bMath.floor(e/t)),$$=Yt(Ts,M$,null,"int32"),D$={kernelName:Ts,backendName:"cpu",kernelFunc:$$};function O$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=$w({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=cc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Zm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var z$={kernelName:oi,backendName:"cpu",kernelFunc:O$};function P$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=Dw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=cc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Zm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var L$={kernelName:li,backendName:"cpu",kernelFunc:P$};function W$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,u,c,h]=R.prepareAndValidate(r,a);if(u===0)return n.makeTensorInfo(l,r.dtype,[]);let d=Ue([u,c],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/c)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),j$=Yt(Cs,H$,null,"bool"),G$={kernelName:Cs,backendName:"cpu",kernelFunc:j$};function q$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=bt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=zw(o,!0,n),u=bt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),u}var X$={kernelName:Jh,backendName:"cpu",kernelFunc:q$},K$=ut(So,e=>Number.isFinite(e)?1:0,"bool"),Z$={kernelName:So,backendName:"cpu",kernelFunc:K$},Y$=ut(To,e=>Math.abs(e)===Infinity?1:0,"bool"),J$={kernelName:To,backendName:"cpu",kernelFunc:Y$},Q$=ut(Eo,e=>Number.isNaN(e)?1:0,"bool"),eD={kernelName:Eo,backendName:"cpu",kernelFunc:Q$},tD=Dt((e,t)=>e<=t?1:0),nD=Yt(Ro,tD,null,"bool"),rD={kernelName:Ro,backendName:"cpu",kernelFunc:nD};function aD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=uw(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var sD={kernelName:ed,backendName:"cpu",kernelFunc:aD},iD=ut(Fo,e=>Math.log1p(e)),oD={kernelName:Fo,backendName:"cpu",kernelFunc:iD},lD=Dt((e,t)=>e&&t),uD=Yt(Mo,lD,null,"bool"),cD={kernelName:Mo,backendName:"cpu",kernelFunc:uD},hD=ut(ku,e=>e?0:1,"bool"),dD={kernelName:ku,backendName:"cpu",kernelFunc:hD},pD=Dt((e,t)=>e||t),fD=Yt(Iu,pD,null,"bool"),mD={kernelName:Iu,backendName:"cpu",kernelFunc:fD};function AD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;ke(a,"LRN");let u=a.shape[3],c=u-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%u,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,c),b=0;for(;y<=g;y++){let _=h[y];b+=_*_}return b}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=jr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Ym(d,a.shape,a.dtype,p,c,"max");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var _D={kernelName:Os,backendName:"cpu",kernelFunc:bD};function vD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;ke(a,"maxPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=Mw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var kD={kernelName:Su,backendName:"cpu",kernelFunc:vD};function ID(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;ke([a,s],"maxPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=n.bufferSync(s),d=hM(h,c),p=c.strideDepth,f=c.strideHeight,m=c.strideWidth,A=c.dilationDepth,y=c.dilationHeight,g=c.dilationWidth,b=c.effectiveFilterDepth,_=c.effectiveFilterHeight,w=c.effectiveFilterWidth,x=b-1-c.padInfo.front,N=w-1-c.padInfo.left,S=_-1-c.padInfo.top,T=Ue(s.shape,"float32"),M=n.bufferSync(a);for(let D=0;D=c.outDepth||Math.floor(te)!==te))for(let oe=0;oe<_;oe+=y){let Q=(j+oe)/f;if(!(Q<0||Q>=c.outHeight||Math.floor(Q)!==Q))for(let pe=0;pe=c.outWidth||Math.floor(le)!==le)continue;let Ae=b*_*w-1-d.get(D,te,Q,le,z),me=se*_*w+oe*w+pe,Se=Ae===me?1:0;Se!==0&&(Y+=M.get(D,te,Q,le,z)*Se)}}}T.set(Y,D,W,U,H,z)}return n.makeTensorInfo(T.shape,T.dtype,T.values)}var ND={kernelName:rd,backendName:"cpu",kernelFunc:ID};function SD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;ke([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=n.data.get(o.dataId).values,f=Ue(d.outShape,o.dtype,Fw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,b=d.effectiveFilterHeight,_=d.effectiveFilterWidth,w=_-1-d.padInfo.left,x=b-1-d.padInfo.top,N=Ue(o.shape,"float32"),S=n.data.get(a.dataId).values,T=Ue(a.shape,"float32",S);for(let M=0;M=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y<_;Y+=g){let se=(H+Y)/A;if(se<0||se>=d.outWidth||Math.floor(se)!==se)continue;let te=b*_-1-f.get(M,ee,se,D),oe=j*_+Y,Q=te===oe?1:0;Q!==0&&(X+=T.get(M,ee,se,D)*Q)}}N.set(X,M,z,W,D)}return n.makeTensorInfo(N.shape,N.dtype,N.values)}var TD={kernelName:nd,backendName:"cpu",kernelFunc:SD};function ED(e,t,n,r,a){let s=v.computeStrides(t),i=Ym(e,t,n,s,a,"max"),o=Fw(e,t,n,a,!0,r);return[i.values,o.values]}var CD={kernelName:ad,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;ke(r,"MaxPoolWithArgmax");let u=l.data.get(r.dataId).values,c=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=ED(u,r.shape,r.dtype,o,c),p=l.write(h,c.outShape,r.dtype),f=l.write(d,c.outShape,r.dtype);return[{dataId:p,shape:c.outShape,dtype:r.dtype},{dataId:f,shape:c.outShape,dtype:"int32"}]}};function dp(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;ke(a,"sum");let o;a.dtype==="bool"?o=Ga({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=jr({inputs:{x:a},backend:n});let l=o.shape.length,u=v.parseAxisParam(s,o.shape),c=R.getAxesPermutation(u,l),h=u,d=o;c!=null&&(d=dr({inputs:{x:o},backend:n,attrs:{perm:c}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=cp(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,b=n.data.get(d.dataId).values;for(let _=0;_n.disposeIntermediateTensorInfo(m)),f}var MD={kernelName:zs,backendName:"cpu",kernelFunc:FD};function $D(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;ke(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,u=R.getAxesPermutation(l,a.shape.length),c=a;u!=null&&(c=dr({inputs:{x:a},backend:n,attrs:{perm:u}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,c.shape.length);let[h,d]=R.computeOutAndReduceShapes(c.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),c.dtype),m=n.data.get(c.dataId).values;for(let y=0;yg[0]+a.shape[b]+g[1]),l=s.map(g=>g[0]),u=s.map((g,b)=>g[0]+a.shape[b]),c=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=u[w]&&(b[w]=(u[w]-1)*2-b[w]+c);b=b.map((w,x)=>w-l[x]);let _=v.locToIndex(b,d,p);y[g]=h[_]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var zD={kernelName:Tu,backendName:"cpu",kernelFunc:OD},PD=Dt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),LD=Yt($o,PD),WD={kernelName:$o,backendName:"cpu",kernelFunc:LD},BD=no(dk());function Lw(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),u=Pw({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),c=R.expandShapeToKeepDim(u.shape,l),h=bt({inputs:{x:u},backend:n,attrs:{shape:c}}),d=Km({inputs:{a,b:h},backend:n}),p=kw({inputs:{x:d},backend:n}),f=dp({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=bt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Jm({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var VD={kernelName:ti,backendName:"cpu",kernelFunc:Lw};function UD(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;ke(a,"multinomial");let l=o?a:Lw({inputs:{logits:a},backend:n,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],h=n.data.get(l.dataId).values,d=[u,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&c[h]{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=hp({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=Rl({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var aO={kernelName:Bo,backendName:"cpu",kernelFunc:Bw};function sO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;ke(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),u=n.data.get(a.dataId).values,c=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;y_+l[w]),b=v.locToIndex(g,f,m);A[b]=u[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var Vw={kernelName:Vs,backendName:"cpu",kernelFunc:sO},iO=Dt((e,t)=>Math.pow(e,t)),oO=Yt(Us,iO),lO={kernelName:Us,backendName:"cpu",kernelFunc:oO};function uO(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=Gm(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var cO={kernelName:Eu,backendName:"cpu",kernelFunc:uO},hO=ut(Uo,e=>1/e),dO={kernelName:Uo,backendName:"cpu",kernelFunc:hO};function pO(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;ke(a,"resizeBilinear");let l=v.computeStrides(a.shape),[u,c]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,u,c,f])),y=[s&&u>1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],b=0,_=y[0]/g[0],w=y[1]/g[1];for(let x=0;x1?u-1:u,i&&p>1?c-1:c],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],b=n.data.get(s.dataId).values,_=0;for(let w=0;w1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],b=y[0]/g[0],_=y[1]/g[1],w=0;for(let x=0;x1?c-1:c,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],b=y[0]/g[0],_=y[1]/g[1],w=1/b,x=1/_,N=Math.ceil(w)*2+2,S=Math.ceil(x)*2+2;for(let T=0;T=p)continue;let Q=M+oe*l[1],pe=oe*b,le=Math.min(c-1,i?Math.round(pe):Math.floor(pe));if(D===le)for(let Ae=0;Ae=f)continue;let Se=Q+me*l[2],Ee=me*_,Oe=Math.min(h-1,i?Math.round(Ee):Math.floor(Ee));H===Oe&&(se+=A[Se+Y])}}m[X+Y]=se}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var wO={kernelName:od,backendName:"cpu",kernelFunc:xO};function bO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;ke(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return jr({inputs:{x:a},backend:n});let l=new Wt(a.shape,a.dtype),u=n.bufferSync(a);for(let c=0;cd[p]=a.shape[p]-1-d[p]),l.set(u.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var _O={kernelName:Xs,backendName:"cpu",kernelFunc:bO},vO={kernelName:al,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[u,c,h,d]=r.shape,[p,f]=R.getImageCenter(i,c,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let b=0;b=0&&W=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),IO={kernelName:Ks,backendName:"cpu",kernelFunc:kO};function Uw(e,t,n,r,a,s,i,o,l,u){let c=[r/a,a],h=e.values,d=t.values;if(r===0)return Ue(n,t.dtype);let p=Ue(c,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?RO*e:CO*(Math.exp(e)-1)),MO={kernelName:qo,backendName:"cpu",kernelFunc:FO},$O=ut(Js,e=>1/(1+Math.exp(-e))),DO={kernelName:Js,backendName:"cpu",kernelFunc:$O},OO=ut(Zo,e=>e<0?-1:e>0?1:0),zO={kernelName:Zo,backendName:"cpu",kernelFunc:OO},PO=ut(Ys,e=>Math.sin(e)),LO={kernelName:Ys,backendName:"cpu",kernelFunc:PO},WO=ut(Ko,e=>Math.sinh(e)),BO={kernelName:Ko,backendName:"cpu",kernelFunc:WO},VO=11920928955078125e-23,Hw=Math.log(VO)+2,UO=ut(Yo,e=>{let t=e>-Hw,n=e{let d=[...c];d[o]=h;let p=vi({inputs:{x:a},backend:n,attrs:{begin:u,size:d}});return u[o]+=h,p})}var ZO={kernelName:Jo,backendName:"cpu",kernelFunc:KO},YO=ut(Qs,e=>Math.sqrt(e)),JO={kernelName:Qs,backendName:"cpu",kernelFunc:YO},QO={kernelName:Fu,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;ke(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),tz={kernelName:$a,backendName:"cpu",kernelFunc:ez};function nz(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r;ke(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=fn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),b=bt({inputs:{x:a},backend:n,attrs:{shape:y}}),_;if(p){let x=vi({inputs:{x:b},backend:n,attrs:{begin:f,size:A}});_=bt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))_=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(b),N=xw(g,x,m,f);_=n.makeTensorInfo(N.shape,N.dtype,N.values)}let w=bt({inputs:{x:_},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(b),n.disposeIntermediateTensorInfo(_),w}var rz={kernelName:Qo,backendName:"cpu",kernelFunc:nz},az=ut(el,e=>Math.tan(e)),sz={kernelName:el,backendName:"cpu",kernelFunc:az},iz=ut(ai,e=>Math.tanh(e)),oz={kernelName:ai,backendName:"cpu",kernelFunc:iz};function lz(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;ke(a,"tile");let i=bw(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var uz={kernelName:Ma,backendName:"cpu",kernelFunc:lz};function cz(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;ke(a,"topk");let o=n.data.get(a.dataId).values,[l,u]=_w(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var hz={kernelName:tl,backendName:"cpu",kernelFunc:cz};function fz(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=n,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=v.computeStrides(a.shape),g=y[0],b=y[1],_=y[2],w=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));w.fill(l);let x=r.data.get(a.dataId).values,N=r.data.get(s.dataId).values;for(let S=0;St-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function yz(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function gz(e,t){return e}function xz(e,t){return v.clamp(0,e,t-1)}function hc(e,t,n,r,a,s,i,o,l,u,c){let h=i*r+o*a+l*s+u;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var Iz={kernelName:Mu,backendName:"cpu",kernelFunc:kz},Nz=[LF,HR,BF,UF,ZR,jF,qF,KF,YF,QF,tM,rM,sM,lM,cM,pM,mM,yM,xM,zF,bM,vM,IM,XR,JR,SM,jR,EM,RM,$M,OM,FM,WM,VM,PM,HM,GM,XM,ZM,JM,e$,t$,r$,s$,o$,l$,c$,u$,Qm,CF,d$,f$,_$,QR,v$,tF,E$,R$,F$,rF,D$,z$,L$,B$,U$,sF,G$,GR,X$,CM,Z$,J$,eD,RF,oF,rD,sD,uF,oD,cD,dD,mD,yD,xD,hF,_D,kD,ND,TD,CD,wD,MD,DD,pF,zD,WD,HD,mF,yF,qD,ZD,QD,xF,tO,rO,aO,Vw,lO,MF,_F,cO,qR,dO,$F,DF,OF,fO,AO,gO,wO,_O,vO,IO,kF,SO,EO,MO,DO,zO,LO,BO,IF,VD,HO,GO,XO,ZO,JO,QO,SF,tz,rz,EF,RD,sz,oz,uz,hz,wF,mz,bz,vz,Iz,nO];for(let e of Nz)ui(e);var Gw={};We(Gw,{assertNotComplex:()=>Fl,bindCanvasToFramebuffer:()=>Ez,bindColorTextureToFramebuffer:()=>mp,bindTextureToProgramUniformSampler:()=>ob,bindTextureUnit:()=>ab,bindVertexBufferToProgramAttribute:()=>nA,callAndCheck:()=>_e,canBeRepresented:()=>qw,createFragmentShader:()=>Zw,createFramebuffer:()=>rb,createProgram:()=>Yw,createStaticIndexBuffer:()=>eb,createStaticVertexBuffer:()=>Qw,createTexture:()=>tb,createVertexShader:()=>Kw,getBatchDim:()=>ki,getExtensionOrThrow:()=>dc,getFramebufferErrorMessage:()=>lb,getMaxTexturesInShader:()=>hb,getNumChannels:()=>Sz,getProgramUniformLocation:()=>ib,getProgramUniformLocationOrThrow:()=>sb,getRowsCols:()=>Ii,getShapeAs3D:()=>Ap,getTextureShapeFromLogicalShape:()=>ub,getWebGLDisjointQueryTimerVersion:()=>db,getWebGLErrorMessage:()=>Xw,getWebGLMaxTextureSize:()=>cb,hasExtension:()=>er,isCapableOfRenderingToFloatTexture:()=>pb,isDownloadFloatTextureEnabled:()=>fb,isReshapeFree:()=>fc,isWebGLFenceEnabled:()=>mb,isWebGLVersionEnabled:()=>aA,linkProgram:()=>Jw,resetMaxTextureSize:()=>Cz,resetMaxTexturesInShader:()=>Rz,unbindColorTextureFromFramebuffer:()=>rA,unbindTextureUnit:()=>Tz,validateFramebuffer:()=>pc,validateProgram:()=>fp,validateTextureSize:()=>nb});var Ni={},sA={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function yp(e,t){Ni[e]=t}function Gr(e){if(!(e in Ni)){let n=Fz(e);if(n!==null)Ni[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=Ni[e];return t.isContextLost()?(delete Ni[e],Gr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),Ni[e])}function Mz(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function Fz(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=Mz(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete Ni[e]},!1),e===1?t.getContext("webgl",sA)||t.getContext("experimental-webgl",sA):t.getContext("webgl2",sA)}var mc;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(mc||(mc={}));var tr;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(tr||(tr={}));var sn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(sn||(sn={}));function Ac(e,t){return[t,e]}function $z(e,t){return e*t}function yc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function Ml(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function Dz(e,t){let[n,r]=Ml(e,t);return n*r*4}function iA(e,t){let n=e,r,a,s,i,o,l,u,c,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,u=4,c=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,u=4,c=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:h,textureTypeFloat:d}}function _e(e,t){let n=t();return J().getBool("DEBUG")&&Oz(e),n}function Oz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Xw(e,t))}var zz=596e-10,Pz=65504;function qw(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||zze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Kw(e,t){let n=fa(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(_e(e,()=>e.shaderSource(n,t)),_e(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function Zw(e,t){let n=fa(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(_e(e,()=>e.shaderSource(n,t)),_e(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw Lz(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var Wz=/ERROR: [0-9]+:([0-9]+):/g;function Lz(e,t){let n=Wz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` +============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return Ue(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Pr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){ke([e],"where");let t=this.readSync(e.dataId);return UR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};lp.nextDataId=0;var Bm={};We(Bm,{addImpl:()=>tw,bincountImpl:()=>Vm,bincountReduceImpl:()=>nw,ceilImpl:()=>rw,concatImpl:()=>Um,expImpl:()=>aw,expm1Impl:()=>sw,floorImpl:()=>iw,gatherV2Impl:()=>ow,greaterImpl:()=>lw,lessImpl:()=>uw,linSpaceImpl:()=>cw,logImpl:()=>hw,maxImpl:()=>dw,maximumImpl:()=>pw,minimumImpl:()=>fw,multiplyImpl:()=>Hm,negImpl:()=>mw,notEqualImpl:()=>Aw,prodImpl:()=>yw,rangeImpl:()=>Gm,rsqrtImpl:()=>gw,simpleAbsImpl:()=>ew,sliceImpl:()=>up,squaredDifferenceImpl:()=>xw,stridedSliceImpl:()=>ww,subImpl:()=>bw,tileImpl:()=>_w,topKImpl:()=>vw,transposeImpl:()=>jm,uniqueImpl:()=>kw});function ew(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;ke(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=ew(a),n.makeOutput(r,t.shape,"float32")},jR={kernelName:so,backendName:"cpu",kernelFunc:HR};function Dt(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),u=v.sizeFromShape(i),c=v.getTypedArrayFromDType(s,u),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;yb[N]=0);let _=v.locToIndex(b,h,p),w=g.slice(-d);A.forEach(N=>w[N]=0);let x=v.locToIndex(w,d,f);c[y]=e(r[_],a[x])}return[c,i]}}function Wn(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var GR={kernelName:Wh,backendName:"cpu",kernelFunc:Wn};function cp(e,t,n="float32"){if(n==="complex64"){let a=cp(e,t,"float32"),s=cp(e,t,"float32");return Wn({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function jr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var qR={kernelName:Rs,backendName:"cpu",kernelFunc:jr};function _i(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var XR={kernelName:id,backendName:"cpu",kernelFunc:_i};function Ga(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return jr({inputs:{x:a},backend:n});let i=cp(n,a.shape,a.dtype),o=Ga({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Wn({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=_i({inputs:{input:a},backend:n}),o=Ga({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=jr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,u]=Dt((c,h)=>c!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(u,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var KR={kernelName:gs,backendName:"cpu",kernelFunc:Ga};function Yt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;ke([i,o],e);let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let u=Ga({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),h=c.complexTensorInfos.real,d=c.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Ga({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,b=l.data.get(y.dataId).values,_=l.data.get(g.dataId).values,[w,x,N]=n(i.shape,o.shape,p,f,b,_),S=l.makeTensorInfo(N,"float32",w),T=l.makeTensorInfo(N,"float32",x),M=Wn({inputs:{real:S,imag:T},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(S),l.disposeIntermediateTensorInfo(T),M}else{let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}}}function qm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),u=o.length,c=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),b=n.length,_=v.computeStrides(n);if(p.length+f.length===0)for(let w=0;wN[z]=0);let S=v.locToIndex(N,y,g),T=x.slice(-b);f.forEach(z=>T[z]=0);let M=v.locToIndex(T,b,_),D=e(m[S*2],m[S*2+1],A[M*2],A[M*2+1]);h[w]=D.real,d[w]=D.imag}return[h,d,o]}}var tw=Dt((e,t)=>e+t),ZR=qm((e,t,n,r)=>({real:e+n,imag:t+r})),cc=Yt(Ra,tw,ZR),YR={kernelName:Ra,backendName:"cpu",kernelFunc:cc};function Vm(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function nw(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=Ue([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,u):t.size>0?i.set(i.get(o,u)+t.get(o,l),o,u):i.set(i.get(o,u)+1,o,u))}return i}function Tl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=v.sizeFromShape(i.shape),c=n||i.dtype,h=v.getArrayFromDType(c,u);for(let d=0;d{let{x:i}=r;if(ke(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=n||i.dtype,c=t(l,u,a);return o.makeTensorInfo(i.shape,u,c)}}var rw=Tl(e=>Math.ceil(e)),JR=El(xs,rw),QR={kernelName:xs,backendName:"cpu",kernelFunc:JR};function Um(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let u=0;uMath.exp(e)),Iw=El(Ns,aw),eF={kernelName:Ns,backendName:"cpu",kernelFunc:Iw},sw=Tl(e=>Math.expm1(e)),tF=El(_o,sw),nF={kernelName:_o,backendName:"cpu",kernelFunc:tF},iw=Tl(e=>Math.floor(e)),rF=El(Ss,iw),aF={kernelName:Ss,backendName:"cpu",kernelFunc:rF};function ow(e,t,n){let r=Ue(n,e.dtype);for(let a=0;ae>t?1:0),sF=Yt(No,lw,null,"bool"),iF={kernelName:No,backendName:"cpu",kernelFunc:sF},uw=Dt((e,t)=>eMath.log(e)),uF=El(Ms,hw),cF={kernelName:Ms,backendName:"cpu",kernelFunc:uF};function dw(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=u)}a[s]=o}return a}var pw=Dt((e,t)=>Math.max(e,t)),hF=Yt(Ds,pw),dF={kernelName:Ds,backendName:"cpu",kernelFunc:hF},fw=Dt((e,t)=>Math.min(e,t)),pF=Yt(Ls,fw),fF={kernelName:Ls,backendName:"cpu",kernelFunc:pF},Hm=Dt((e,t)=>e*t),mF=qm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Xm=Yt(Ws,Hm,mF),AF={kernelName:Ws,backendName:"cpu",kernelFunc:Xm};function mw(e,t,n){let r=v.createScalarValue(-1,n);return Hm([],t,r,e,n)}function yF(e){let{inputs:t,backend:n}=e,{x:r}=t;ke(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=mw(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var gF={kernelName:Do,backendName:"cpu",kernelFunc:yF},Aw=Dt((e,t)=>e!==t?1:0),xF=Yt(Oo,Aw,null,"bool"),wF={kernelName:Oo,backendName:"cpu",kernelFunc:xF};function jm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),u=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let c=0;cn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var vF={kernelName:Vo,backendName:"cpu",kernelFunc:_F};function Gm(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),kF=El(Zs,gw),IF={kernelName:Zs,backendName:"cpu",kernelFunc:kF};function up(e,t,n,r,a){let s=fn.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=fn.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,u=Ue(r,a,l),c=Ue(n,a);for(let h=0;hf+t[m]);c.set(u.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(c.values):c.values}function vi(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;ke(a,"slice");let[o,l]=fn.parseSliceParams(a,s,i);fn.assertParamsValid(a,o,l);let u=n.data.get(a.dataId).values,c=up(u,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,c)}var NF={kernelName:Xo,backendName:"cpu",kernelFunc:vi},xw=Dt((e,t)=>{let n=e-t;return n*n}),SF=Yt(ni,xw),TF={kernelName:ni,backendName:"cpu",kernelFunc:SF};function ww(e,t,n,r){let a=Ue(e,t.dtype);for(let s=0;se-t),EF=qm((e,t,n,r)=>({real:e-n,imag:t-r})),Km=Yt(ri,bw,EF),CF={kernelName:ri,backendName:"cpu",kernelFunc:Km};function _w(e,t){let n=new Array(e.rank);for(let a=0;ab.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=u.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew lp,1);var Sw=ut(go,e=>e>=0?e:Math.exp(e)-1),RF={kernelName:go,backendName:"cpu",kernelFunc:Sw};function Tw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;ke([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let u=0;ue<0?t*e:e);function Ew(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;ke([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=MF(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var $F={kernelName:Hs,backendName:"cpu",kernelFunc:Ew},Cw=ut(js,e=>Math.max(0,e)),DF={kernelName:js,backendName:"cpu",kernelFunc:Cw},Rw=ut(qs,e=>Math.min(Math.max(0,e),6)),OF={kernelName:qs,backendName:"cpu",kernelFunc:Rw};function Zm(e,t,n,r,a){if(n==="linear")return jr({inputs:{x:t},backend:e});if(n==="relu")return Cw({inputs:{x:t},backend:e});if(n==="elu")return Sw({inputs:{x:t},backend:e});if(n==="relu6")return Rw({inputs:{x:t},backend:e});if(n==="prelu")return Ew({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return Tw({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function bt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let u=n.data.get(a.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,h=u.complexTensorInfos.imag;c.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var zF={kernelName:Ho,backendName:"cpu",kernelFunc:bt};function Fw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;ke([a,s],"matMul");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let b=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let _=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=bt({inputs:{x:a},backend:n,attrs:{shape:_}}),N=bt({inputs:{x:s},backend:n,attrs:{shape:w}}),S=i?x.shape[1]:x.shape[2],T=i?x.shape[2]:x.shape[1],M=o?N.shape[1]:N.shape[2],D=Math.max(A,y),z=n.data.get(x.dataId).values,W=n.data.get(N.dataId).values,U=v.computeStrides(x.shape),H=v.computeStrides(N.shape),[X,j,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,se,te]=o?[1,H[1],H[0]]:[H[1],1,H[0]],oe=T*M,Q=Ue([D,T,M],x.dtype),pe=Q.values,le=n.blockSize;for(let Ae=0;AeMath.acos(e)),VF={kernelName:io,backendName:"cpu",kernelFunc:BF},UF=ut(oo,e=>Math.acosh(e)),HF={kernelName:oo,backendName:"cpu",kernelFunc:UF};function jF(e){let{inputs:t,backend:n}=e,r=t;ke(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=Ue(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=w,b=_)}p[A]=b}return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var JF={kernelName:ms,backendName:"cpu",kernelFunc:YF};function QF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;ke(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=dr({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[c,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(c),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var eM={kernelName:yu,backendName:"cpu",kernelFunc:QF},tM=ut(lo,e=>Math.asin(e)),nM={kernelName:lo,backendName:"cpu",kernelFunc:tM},rM=ut(uo,e=>Math.asinh(e)),aM={kernelName:uo,backendName:"cpu",kernelFunc:rM},sM=ut(co,e=>Math.atan(e)),iM={kernelName:co,backendName:"cpu",kernelFunc:sM},oM=Dt((e,t)=>Math.atan2(e,t)),lM=Yt(po,oM),uM={kernelName:po,backendName:"cpu",kernelFunc:lM},cM=ut(ho,e=>Math.atanh(e)),hM={kernelName:ho,backendName:"cpu",kernelFunc:cM};function Ym(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,u=a.dilationWidth,c=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=Ue(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],b=a.outShape[3];for(let _=0;_j?j=le:s==="avg"&&(ee+=le,Y++)}if(isNaN(j))break}let se=z+W*b+N;A[se]=s==="avg"?ee/Y:j}}}return m}function Mw(e,t,n,r,a=!1,s=!1){let i=Ue(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=Ue(t,n,e);for(let A=0;AM&&(M=X,a?D=s?((A*r.inHeight+z)*r.inWidth+U)*r.inChannels+y:(z*r.inWidth+U)*r.inChannels+y:D=W*d+H)}}i.set(D,A,g,x,y)}}return i}function $w(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,u=a.dilationDepth,c=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,b=Ue(a.outShape,n),_=b.values,w=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],N=a.outShape[3]*a.outShape[4],S=a.outShape[4];for(let T=0;TSe?Se=He:s==="avg"&&(Ee+=He,Oe++),isNaN(Se))break}if(isNaN(Se))break}if(isNaN(Se))break}let Le=me+z;_[Le]=s==="avg"?Ee/Oe:Se}}}}return b}function dM(e,t){let n=Ue(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,u=t.effectiveFilterDepth,c=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=W&&(W=te,U=X*c*h+ee*c+se)}}}n.set(U,m,y,w,T,A)}}}return n}function pM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;ke(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=jr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Ym(d,a.shape,a.dtype,p,c,"avg");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var fM={kernelName:As,backendName:"cpu",kernelFunc:pM};function mM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;ke(a,"avgPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=$w(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var AM={kernelName:gu,backendName:"cpu",kernelFunc:mM};function yM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;ke([a,s],"avgPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=c.strideDepth,d=c.strideHeight,p=c.strideWidth,f=c.filterDepth,m=c.filterHeight,A=c.filterWidth,y=c.dilationDepth,g=c.dilationHeight,b=c.dilationWidth,_=c.effectiveFilterDepth,w=c.effectiveFilterHeight,x=c.effectiveFilterWidth,N=_-1-c.padInfo.front,S=x-1-c.padInfo.left,T=w-1-c.padInfo.top,M=Ue(s.shape,"float32"),D=1/(f*m*A),z=n.bufferSync(a);for(let W=0;W=c.outDepth||Math.floor(Q)!==Q))for(let pe=0;pe=c.outHeight||Math.floor(le)!==le))for(let Ae=0;Ae=c.outWidth||Math.floor(me)!==me||(te+=z.get(W,Q,le,me,U))}}}M.set(te*D,W,H,X,j,U)}return n.makeTensorInfo(M.shape,M.dtype,M.values)}var gM={kernelName:Ph,backendName:"cpu",kernelFunc:yM};function xM(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;ke([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,A=c.dilationWidth,y=c.effectiveFilterHeight,g=c.effectiveFilterWidth,b=g-1-c.padInfo.left,_=y-1-c.padInfo.top,w=Ue(i.shape,"float32"),x=1/(p*f),N=n.data.get(a.dataId).values,S=Ue(a.shape,"float32",N);for(let T=0;T=c.outHeight||Math.floor(j)!==j))for(let ee=0;ee=c.outWidth||Math.floor(Y)!==Y||(H+=S.get(T,j,Y,M))}}w.set(H*x,T,D,z,M)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var wM={kernelName:zh,backendName:"cpu",kernelFunc:xM};function bM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),ke([a,o,l,s,i],"batchNorm");let{varianceEpsilon:u}=r;u==null&&(u=.001);let c=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),A=f.length,y=p.length,g=d.length,b=h.length,_=0,w=0,x=0,N=0;for(let S=0;S=A&&(_=0),w>=b&&(w=0),x>=y&&(x=0),N>=g&&(N=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var _M={kernelName:Es,backendName:"cpu",kernelFunc:bM};function vM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;ke([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=bt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=dr({inputs:{x:p},backend:n,attrs:{perm:u}}),m=bt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=vi({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var kM={kernelName:xu,backendName:"cpu",kernelFunc:vM};function IM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,u=Vm(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var NM={kernelName:Lh,backendName:"cpu",kernelFunc:IM},SM=ut(Fa,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let u=0;um.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return jr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(_=>_i({inputs:{input:_},backend:n})),A=o.map(_=>Cl({inputs:{input:_},backend:n})),y=Rl({inputs:m,backend:n,attrs:{axis:s}}),g=Rl({inputs:A,backend:n,attrs:{axis:s}}),b=Wn({inputs:{real:y,imag:g},backend:n});return m.forEach(_=>n.disposeIntermediateTensorInfo(_)),A.forEach(_=>n.disposeIntermediateTensorInfo(_)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),b}let u=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return bt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),c=u.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(u.map(m=>m.shape),1);let h=u[0].shape[0]===1,d=Um(c,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return u.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var FM={kernelName:fo,backendName:"cpu",kernelFunc:Rl};function Dw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r;ke([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,b=d.dataFormat==="channelsLast",_=new Wt(d.outShape,a.dtype),w=v.computeStrides(a.shape),x=v.computeStrides(s.shape),N=w[0],S=b?w[1]:w[2],T=b?w[2]:1,M=b?1:w[1],D=_.strides[0],z=b?_.strides[1]:_.strides[2],W=b?_.strides[2]:1,U=b?1:_.strides[1],H=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,j=_.values;for(let ee=0;ee=d.inHeight)continue;let Ae=pe*x[0],me=Y+le*S;for(let Se=0;Se=d.inWidth)continue;let at=Ae+Le*x[1],st=me+ze*T,ct=at;for(let Qe=0;Qe=u.inDepth)continue;let ee=X*T[0],Y=D+j*S[1];for(let se=0;se=u.inHeight)continue;let le=ee+Q*T[1],Ae=Y+pe*S[2];for(let me=0;me=u.inWidth)continue;let ze=le+Oe*T[2],at=Ae+Le*u.inChannels,st=ze;for(let ct=0;ctMath.cos(e)),jM={kernelName:_s,backendName:"cpu",kernelFunc:HM},GM=ut(mo,e=>Math.cosh(e)),qM={kernelName:mo,backendName:"cpu",kernelFunc:GM};function XM(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,[c,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=Ue([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,b=n.data.get(i.dataId).values,_=n.data.get(a.dataId).values,w=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let N=0;N=c)continue;let U=m>1?(D-T)*(h-1)/(m-1):0,H=A>1?(z-M)*(d-1)/(A-1):0;for(let X=0;X1?T*(h-1)+X*U:.5*(T+D)*(h-1);if(j<0||j>h-1){for(let ee=0;ee1?M*(d-1)+te*H:.5*(M+z)*(d-1);if(oe<0||oe>d-1){for(let Ae=0;Ae1?M*(d-1)+ee*H:.5*(M+z)*(d-1);if(Y<0||Y>d-1){for(let oe=0;oey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],u=a.shape[2],c=a.shape[3],h=l*s,d=u*s,p=c/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,u,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,b=g.left,_=g.top,w=p.outChannels/p.inChannels,x=new Wt(p.outShape,a.dtype),N=n.data.get(a.dataId).values,S=n.data.get(s.dataId).values,T=x.values;for(let M=0;M=p.inHeight)continue;let ee=X*h[0],Y=D+j*c[1];for(let se=0;se=p.inWidth)continue;let le=ee+Q*h[1],Ae=Y+pe*p.inChannels,me=te,Se=le;for(let Ee=0;Ee{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,u=l.data.get(r.dataId).values,c=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:b,strideHeight:_,strideWidth:w,filterHeight:x,filterWidth:N,dilationHeight:S,dilationWidth:T,outShape:M}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),D=v.sizeFromShape(M),z=M.length,W=v.getArrayFromDType(r.dtype,D);for(let U=0;U=0&&Q=0&&lese&&(se=Se)}}}let te=v.locToIndex([U,H,j,Y],z,v.computeStrides(M));W[te]=se}}}return{dataId:l.write(v.toTypedArray(W,r.dtype),M,r.dtype),shape:M,dtype:r.dtype}}},c$={kernelName:Kh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:b,strideWidth:_,filterHeight:w,filterWidth:x,dilationHeight:N,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Kh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let z=0;z=0&&oe=0&&peee&&(ee=le,Y=te,se=Q)}}}D[Y][se][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},h$={kernelName:Xh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:b,strideWidth:_,filterHeight:w,filterWidth:x,dilationHeight:N,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Xh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let z=0;z=0&&oe=0&&peee&&(ee=le,Y=oe,se=pe)}}}D[z][Y][se][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function d$(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;ke([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(u+1)}return n.makeTensorInfo(a.shape,"float32",s)}var p$={kernelName:Zh,backendName:"cpu",kernelFunc:d$},f$=Dt((e,t)=>e===t?1:0),zw=Yt(wo,f$,null,"bool"),m$={kernelName:wo,backendName:"cpu",kernelFunc:zw},A$=R.ERF_P,y$=R.ERF_A1,g$=R.ERF_A2,x$=R.ERF_A3,w$=R.ERF_A4,b$=R.ERF_A5,_$=ut(xo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+A$*n);return t*(1-((((b$*r+w$)*r+x$)*r+g$)*r+y$)*r*Math.exp(-n*n))}),v$={kernelName:xo,backendName:"cpu",kernelFunc:_$};function hp(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),bt({inputs:{x:a},backend:n,attrs:{shape:o}})}var k$={kernelName:bo,backendName:"cpu",kernelFunc:hp},I$=Dt((e,t)=>e/t),Jm=Yt(Is,I$),Qm={kernelName:Is,backendName:"cpu",kernelFunc:Jm};function Pw(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,u=[a,s],c=v.sizeFromShape(u),h=v.getTypedArrayFromDType("float32",c),d=v.getTypedArrayFromDType("float32",c);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,u]=r.shape,c=a.data.get(r.dataId).values;for(let h=0;h=0&&bMath.floor(e/t)),D$=Yt(Ts,$$,null,"int32"),O$={kernelName:Ts,backendName:"cpu",kernelFunc:D$};function z$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=Dw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=cc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Zm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var P$={kernelName:oi,backendName:"cpu",kernelFunc:z$};function L$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=Ow({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=cc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=Zm(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var W$={kernelName:li,backendName:"cpu",kernelFunc:L$};function B$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,u,c,h]=R.prepareAndValidate(r,a);if(u===0)return n.makeTensorInfo(l,r.dtype,[]);let d=Ue([u,c],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/c)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),G$=Yt(Cs,j$,null,"bool"),q$={kernelName:Cs,backendName:"cpu",kernelFunc:G$};function X$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=bt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=Pw(o,!0,n),u=bt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),u}var K$={kernelName:Jh,backendName:"cpu",kernelFunc:X$},Z$=ut(So,e=>Number.isFinite(e)?1:0,"bool"),Y$={kernelName:So,backendName:"cpu",kernelFunc:Z$},J$=ut(To,e=>Math.abs(e)===Infinity?1:0,"bool"),Q$={kernelName:To,backendName:"cpu",kernelFunc:J$},eD=ut(Eo,e=>Number.isNaN(e)?1:0,"bool"),tD={kernelName:Eo,backendName:"cpu",kernelFunc:eD},nD=Dt((e,t)=>e<=t?1:0),rD=Yt(Ro,nD,null,"bool"),aD={kernelName:Ro,backendName:"cpu",kernelFunc:rD};function sD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=cw(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var iD={kernelName:ed,backendName:"cpu",kernelFunc:sD},oD=ut(Fo,e=>Math.log1p(e)),lD={kernelName:Fo,backendName:"cpu",kernelFunc:oD},uD=Dt((e,t)=>e&&t),cD=Yt(Mo,uD,null,"bool"),hD={kernelName:Mo,backendName:"cpu",kernelFunc:cD},dD=ut(ku,e=>e?0:1,"bool"),pD={kernelName:ku,backendName:"cpu",kernelFunc:dD},fD=Dt((e,t)=>e||t),mD=Yt(Iu,fD,null,"bool"),AD={kernelName:Iu,backendName:"cpu",kernelFunc:mD};function yD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;ke(a,"LRN");let u=a.shape[3],c=u-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%u,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,c),b=0;for(;y<=g;y++){let _=h[y];b+=_*_}return b}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=jr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Ym(d,a.shape,a.dtype,p,c,"max");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var vD={kernelName:Os,backendName:"cpu",kernelFunc:_D};function kD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;ke(a,"maxPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=$w(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var ID={kernelName:Su,backendName:"cpu",kernelFunc:kD};function ND(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;ke([a,s],"maxPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=n.bufferSync(s),d=dM(h,c),p=c.strideDepth,f=c.strideHeight,m=c.strideWidth,A=c.dilationDepth,y=c.dilationHeight,g=c.dilationWidth,b=c.effectiveFilterDepth,_=c.effectiveFilterHeight,w=c.effectiveFilterWidth,x=b-1-c.padInfo.front,N=w-1-c.padInfo.left,S=_-1-c.padInfo.top,T=Ue(s.shape,"float32"),M=n.bufferSync(a);for(let D=0;D=c.outDepth||Math.floor(te)!==te))for(let oe=0;oe<_;oe+=y){let Q=(j+oe)/f;if(!(Q<0||Q>=c.outHeight||Math.floor(Q)!==Q))for(let pe=0;pe=c.outWidth||Math.floor(le)!==le)continue;let Ae=b*_*w-1-d.get(D,te,Q,le,z),me=se*_*w+oe*w+pe,Se=Ae===me?1:0;Se!==0&&(Y+=M.get(D,te,Q,le,z)*Se)}}}T.set(Y,D,W,U,H,z)}return n.makeTensorInfo(T.shape,T.dtype,T.values)}var SD={kernelName:rd,backendName:"cpu",kernelFunc:ND};function TD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;ke([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=n.data.get(o.dataId).values,f=Ue(d.outShape,o.dtype,Mw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,b=d.effectiveFilterHeight,_=d.effectiveFilterWidth,w=_-1-d.padInfo.left,x=b-1-d.padInfo.top,N=Ue(o.shape,"float32"),S=n.data.get(a.dataId).values,T=Ue(a.shape,"float32",S);for(let M=0;M=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y<_;Y+=g){let se=(H+Y)/A;if(se<0||se>=d.outWidth||Math.floor(se)!==se)continue;let te=b*_-1-f.get(M,ee,se,D),oe=j*_+Y,Q=te===oe?1:0;Q!==0&&(X+=T.get(M,ee,se,D)*Q)}}N.set(X,M,z,W,D)}return n.makeTensorInfo(N.shape,N.dtype,N.values)}var ED={kernelName:nd,backendName:"cpu",kernelFunc:TD};function CD(e,t,n,r,a){let s=v.computeStrides(t),i=Ym(e,t,n,s,a,"max"),o=Mw(e,t,n,a,!0,r);return[i.values,o.values]}var RD={kernelName:ad,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;ke(r,"MaxPoolWithArgmax");let u=l.data.get(r.dataId).values,c=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=CD(u,r.shape,r.dtype,o,c),p=l.write(h,c.outShape,r.dtype),f=l.write(d,c.outShape,r.dtype);return[{dataId:p,shape:c.outShape,dtype:r.dtype},{dataId:f,shape:c.outShape,dtype:"int32"}]}};function dp(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;ke(a,"sum");let o;a.dtype==="bool"?o=Ga({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=jr({inputs:{x:a},backend:n});let l=o.shape.length,u=v.parseAxisParam(s,o.shape),c=R.getAxesPermutation(u,l),h=u,d=o;c!=null&&(d=dr({inputs:{x:o},backend:n,attrs:{perm:c}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=cp(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,b=n.data.get(d.dataId).values;for(let _=0;_n.disposeIntermediateTensorInfo(m)),f}var $D={kernelName:zs,backendName:"cpu",kernelFunc:MD};function DD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;ke(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,u=R.getAxesPermutation(l,a.shape.length),c=a;u!=null&&(c=dr({inputs:{x:a},backend:n,attrs:{perm:u}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,c.shape.length);let[h,d]=R.computeOutAndReduceShapes(c.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),c.dtype),m=n.data.get(c.dataId).values;for(let y=0;yg[0]+a.shape[b]+g[1]),l=s.map(g=>g[0]),u=s.map((g,b)=>g[0]+a.shape[b]),c=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=u[w]&&(b[w]=(u[w]-1)*2-b[w]+c);b=b.map((w,x)=>w-l[x]);let _=v.locToIndex(b,d,p);y[g]=h[_]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var PD={kernelName:Tu,backendName:"cpu",kernelFunc:zD},LD=Dt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),WD=Yt($o,LD),BD={kernelName:$o,backendName:"cpu",kernelFunc:WD},VD=no(pk());function Ww(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),u=Lw({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),c=R.expandShapeToKeepDim(u.shape,l),h=bt({inputs:{x:u},backend:n,attrs:{shape:c}}),d=Km({inputs:{a,b:h},backend:n}),p=Iw({inputs:{x:d},backend:n}),f=dp({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=bt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Jm({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var UD={kernelName:ti,backendName:"cpu",kernelFunc:Ww};function HD(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;ke(a,"multinomial");let l=o?a:Ww({inputs:{logits:a},backend:n,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],h=n.data.get(l.dataId).values,d=[u,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&c[h]{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=hp({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=Rl({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var sO={kernelName:Bo,backendName:"cpu",kernelFunc:Vw};function iO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;ke(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),u=n.data.get(a.dataId).values,c=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;y_+l[w]),b=v.locToIndex(g,f,m);A[b]=u[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var Uw={kernelName:Vs,backendName:"cpu",kernelFunc:iO},oO=Dt((e,t)=>Math.pow(e,t)),lO=Yt(Us,oO),uO={kernelName:Us,backendName:"cpu",kernelFunc:lO};function cO(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=Gm(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var hO={kernelName:Eu,backendName:"cpu",kernelFunc:cO},dO=ut(Uo,e=>1/e),pO={kernelName:Uo,backendName:"cpu",kernelFunc:dO};function fO(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;ke(a,"resizeBilinear");let l=v.computeStrides(a.shape),[u,c]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,u,c,f])),y=[s&&u>1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],b=0,_=y[0]/g[0],w=y[1]/g[1];for(let x=0;x1?u-1:u,i&&p>1?c-1:c],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],b=n.data.get(s.dataId).values,_=0;for(let w=0;w1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],b=y[0]/g[0],_=y[1]/g[1],w=0;for(let x=0;x1?c-1:c,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],b=y[0]/g[0],_=y[1]/g[1],w=1/b,x=1/_,N=Math.ceil(w)*2+2,S=Math.ceil(x)*2+2;for(let T=0;T=p)continue;let Q=M+oe*l[1],pe=oe*b,le=Math.min(c-1,i?Math.round(pe):Math.floor(pe));if(D===le)for(let Ae=0;Ae=f)continue;let Se=Q+me*l[2],Ee=me*_,Oe=Math.min(h-1,i?Math.round(Ee):Math.floor(Ee));H===Oe&&(se+=A[Se+Y])}}m[X+Y]=se}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var bO={kernelName:od,backendName:"cpu",kernelFunc:wO};function _O(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;ke(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return jr({inputs:{x:a},backend:n});let l=new Wt(a.shape,a.dtype),u=n.bufferSync(a);for(let c=0;cd[p]=a.shape[p]-1-d[p]),l.set(u.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var vO={kernelName:Xs,backendName:"cpu",kernelFunc:_O},kO={kernelName:al,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[u,c,h,d]=r.shape,[p,f]=R.getImageCenter(i,c,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let b=0;b=0&&W=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),NO={kernelName:Ks,backendName:"cpu",kernelFunc:IO};function Hw(e,t,n,r,a,s,i,o,l,u){let c=[r/a,a],h=e.values,d=t.values;if(r===0)return Ue(n,t.dtype);let p=Ue(c,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?FO*e:RO*(Math.exp(e)-1)),$O={kernelName:qo,backendName:"cpu",kernelFunc:MO},DO=ut(Js,e=>1/(1+Math.exp(-e))),OO={kernelName:Js,backendName:"cpu",kernelFunc:DO},zO=ut(Zo,e=>e<0?-1:e>0?1:0),PO={kernelName:Zo,backendName:"cpu",kernelFunc:zO},LO=ut(Ys,e=>Math.sin(e)),WO={kernelName:Ys,backendName:"cpu",kernelFunc:LO},BO=ut(Ko,e=>Math.sinh(e)),VO={kernelName:Ko,backendName:"cpu",kernelFunc:BO},UO=11920928955078125e-23,jw=Math.log(UO)+2,HO=ut(Yo,e=>{let t=e>-jw,n=e{let d=[...c];d[o]=h;let p=vi({inputs:{x:a},backend:n,attrs:{begin:u,size:d}});return u[o]+=h,p})}var YO={kernelName:Jo,backendName:"cpu",kernelFunc:ZO},JO=ut(Qs,e=>Math.sqrt(e)),QO={kernelName:Qs,backendName:"cpu",kernelFunc:JO},ez={kernelName:Fu,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;ke(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),nz={kernelName:$a,backendName:"cpu",kernelFunc:tz};function rz(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r;ke(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=fn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),b=bt({inputs:{x:a},backend:n,attrs:{shape:y}}),_;if(p){let x=vi({inputs:{x:b},backend:n,attrs:{begin:f,size:A}});_=bt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))_=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(b),N=ww(g,x,m,f);_=n.makeTensorInfo(N.shape,N.dtype,N.values)}let w=bt({inputs:{x:_},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(b),n.disposeIntermediateTensorInfo(_),w}var az={kernelName:Qo,backendName:"cpu",kernelFunc:rz},sz=ut(el,e=>Math.tan(e)),iz={kernelName:el,backendName:"cpu",kernelFunc:sz},oz=ut(ai,e=>Math.tanh(e)),lz={kernelName:ai,backendName:"cpu",kernelFunc:oz};function uz(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;ke(a,"tile");let i=_w(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var cz={kernelName:Ma,backendName:"cpu",kernelFunc:uz};function hz(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;ke(a,"topk");let o=n.data.get(a.dataId).values,[l,u]=vw(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var dz={kernelName:tl,backendName:"cpu",kernelFunc:hz};function mz(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=n,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=v.computeStrides(a.shape),g=y[0],b=y[1],_=y[2],w=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));w.fill(l);let x=r.data.get(a.dataId).values,N=r.data.get(s.dataId).values;for(let S=0;St-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function gz(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function xz(e,t){return e}function wz(e,t){return v.clamp(0,e,t-1)}function hc(e,t,n,r,a,s,i,o,l,u,c){let h=i*r+o*a+l*s+u;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var Nz={kernelName:Mu,backendName:"cpu",kernelFunc:Iz},Sz=[WF,jR,VF,HF,YR,GF,XF,ZF,JF,eM,nM,aM,iM,uM,hM,fM,AM,gM,wM,PF,_M,kM,NM,KR,QR,TM,GR,CM,FM,DM,zM,MM,BM,UM,LM,jM,qM,KM,YM,QM,t$,n$,a$,i$,l$,u$,h$,c$,Qm,RF,p$,m$,v$,eF,k$,nF,C$,F$,M$,aF,O$,P$,W$,V$,H$,iF,q$,qR,K$,RM,Y$,Q$,tD,FF,lF,aD,iD,cF,lD,hD,pD,AD,gD,wD,dF,vD,ID,SD,ED,RD,bD,$D,OD,fF,PD,BD,jD,AF,gF,XD,YD,eO,wF,nO,aO,sO,Uw,uO,$F,vF,hO,XR,pO,DF,OF,zF,mO,yO,xO,bO,vO,kO,NO,IF,TO,CO,$O,OO,PO,WO,VO,NF,UD,jO,qO,KO,YO,QO,ez,TF,nz,az,CF,FD,iz,lz,cz,dz,bF,Az,_z,kz,Nz,rO];for(let e of Sz)ui(e);var qw={};We(qw,{assertNotComplex:()=>Fl,bindCanvasToFramebuffer:()=>Cz,bindColorTextureToFramebuffer:()=>mp,bindTextureToProgramUniformSampler:()=>lb,bindTextureUnit:()=>sb,bindVertexBufferToProgramAttribute:()=>nA,callAndCheck:()=>_e,canBeRepresented:()=>Xw,createFragmentShader:()=>Yw,createFramebuffer:()=>ab,createProgram:()=>Jw,createStaticIndexBuffer:()=>tb,createStaticVertexBuffer:()=>eb,createTexture:()=>nb,createVertexShader:()=>Zw,getBatchDim:()=>ki,getExtensionOrThrow:()=>dc,getFramebufferErrorMessage:()=>ub,getMaxTexturesInShader:()=>db,getNumChannels:()=>Tz,getProgramUniformLocation:()=>ob,getProgramUniformLocationOrThrow:()=>ib,getRowsCols:()=>Ii,getShapeAs3D:()=>Ap,getTextureShapeFromLogicalShape:()=>cb,getWebGLDisjointQueryTimerVersion:()=>pb,getWebGLErrorMessage:()=>Kw,getWebGLMaxTextureSize:()=>hb,hasExtension:()=>er,isCapableOfRenderingToFloatTexture:()=>fb,isDownloadFloatTextureEnabled:()=>mb,isReshapeFree:()=>fc,isWebGLFenceEnabled:()=>Ab,isWebGLVersionEnabled:()=>aA,linkProgram:()=>Qw,resetMaxTextureSize:()=>Rz,resetMaxTexturesInShader:()=>Fz,unbindColorTextureFromFramebuffer:()=>rA,unbindTextureUnit:()=>Ez,validateFramebuffer:()=>pc,validateProgram:()=>fp,validateTextureSize:()=>rb});var Ni={},sA={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function yp(e,t){Ni[e]=t}function Gr(e){if(!(e in Ni)){let n=Mz(e);if(n!==null)Ni[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=Ni[e];return t.isContextLost()?(delete Ni[e],Gr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),Ni[e])}function $z(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function Mz(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=$z(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete Ni[e]},!1),e===1?t.getContext("webgl",sA)||t.getContext("experimental-webgl",sA):t.getContext("webgl2",sA)}var mc;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(mc||(mc={}));var tr;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(tr||(tr={}));var sn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(sn||(sn={}));function Ac(e,t){return[t,e]}function Dz(e,t){return e*t}function yc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function Ml(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function Oz(e,t){let[n,r]=Ml(e,t);return n*r*4}function iA(e,t){let n=e,r,a,s,i,o,l,u,c,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,u=4,c=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,u=4,c=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:h,textureTypeFloat:d}}function _e(e,t){let n=t();return J().getBool("DEBUG")&&zz(e),n}function zz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Kw(e,t))}var Pz=596e-10,Lz=65504;function Xw(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||Pze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Zw(e,t){let n=fa(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(_e(e,()=>e.shaderSource(n,t)),_e(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function Yw(e,t){let n=fa(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(_e(e,()=>e.shaderSource(n,t)),_e(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw Wz(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var Bz=/ERROR: [0-9]+:([0-9]+):/g;function Wz(e,t){let n=Bz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` `),s=a.length.toString().length+2,i=a.map((h,d)=>v.rightPad((d+1).toString(),s)+h),o=0;for(let h=0;he.createProgram(),"Unable to create WebGLProgram.")}function Jw(e,t){if(_e(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function fp(e,t){if(_e(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function Qw(e,t){let n=fa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return _e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),_e(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function eb(e,t){let n=fa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return _e(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),_e(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Sz(){return J().getNumber("WEBGL_VERSION")===2?1:4}function tb(e){return fa(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function nb(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function rb(e){return fa(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function nA(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(_e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),_e(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),_e(e,()=>e.enableVertexAttribArray(o)),!0)}function ab(e,t,n){Ab(e,n),_e(e,()=>e.activeTexture(e.TEXTURE0+n)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function Tz(e,t){Ab(e,t),_e(e,()=>e.activeTexture(e.TEXTURE0+t)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function sb(e,t,n){return fa(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function ib(e,t,n){return e.getUniformLocation(t,n)}function ob(e,t,n,r){_e(e,()=>ab(e,t,r)),_e(e,()=>e.uniform1i(n,r))}function Ez(e){_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),_e(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),_e(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function mp(e,t,n){_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),_e(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function rA(e,t){_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),_e(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function pc(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+lb(e,t))}function lb(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function fa(e,t,n){let r=_e(e,()=>t());if(r==null)throw new Error(n);return r}function Ab(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function ki(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function Ii(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Ap(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[ki(e),...Ii(e)]),t}function ub(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=ki(e),s=2,i=2;return e.length&&([s,i]=Ii(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function gp(e){return e%2==0}function fc(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||gp(n)&&gp(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&gp(e[0])&&gp(t[0])}var xp,wp;function cb(e){if(xp==null){let t=Gr(e);xp=t.getParameter(t.MAX_TEXTURE_SIZE)}return xp}function Cz(){xp=null}function Rz(){wp=null}function hb(e){if(wp==null){let t=Gr(e);wp=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,wp)}function db(e){if(e===0)return 0;let t,n=Gr(e);return er(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:er(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function er(e,t){return e.getExtension(t)!=null}function aA(e){try{if(Gr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function pb(e){if(e===0)return!1;let t=Gr(e);if(e===1){if(!er(t,"OES_texture_float"))return!1}else if(!er(t,"EXT_color_buffer_float"))return!1;return oA(t)}function fb(e){if(e===0)return!1;let t=Gr(e);if(e===1){if(!er(t,"OES_texture_float")||!er(t,"WEBGL_color_buffer_float"))return!1}else{if(er(t,"EXT_color_buffer_float"))return oA(t);let n="EXT_color_buffer_half_float";if(er(t,n)){let r=t.getExtension(n);return Bz(t,r)}return!1}return oA(t)}function oA(e){let t=iA(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function Bz(e,t){let n=iA(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function mb(e){return e!==2?!1:Gr(e).fenceSync!=null}function Fl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var De=J();De.registerFlag("HAS_WEBGL",()=>De.getNumber("WEBGL_VERSION")>0);De.registerFlag("WEBGL_VERSION",()=>aA(2)?2:aA(1)?1:0);De.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);De.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>De.get("WEBGL_VERSION")===2);De.registerFlag("WEBGL_CPU_FORWARD",()=>!0);De.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);De.registerFlag("WEBGL_PACK",()=>De.getBool("HAS_WEBGL"));De.registerFlag("WEBGL_PACK_NORMALIZATION",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_CLIP",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);De.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_REDUCE",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_LAZILY_UNPACK",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_CONV_IM2COL",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>cb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>hb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=De.getNumber("WEBGL_VERSION");return e===0?0:db(e)});De.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>De.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Vu.isMobile());De.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>pb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>De.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:De.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));De.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>fb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_FENCE_API_ENABLED",()=>mb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>De.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);De.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});De.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Vu.isMobile()&&De.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function gn(){let e,t,n,r,a,s,i,o,l,u;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` +`))}function Jw(e){return fa(e,()=>e.createProgram(),"Unable to create WebGLProgram.")}function Qw(e,t){if(_e(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function fp(e,t){if(_e(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function eb(e,t){let n=fa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return _e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),_e(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function tb(e,t){let n=fa(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return _e(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),_e(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Tz(){return J().getNumber("WEBGL_VERSION")===2?1:4}function nb(e){return fa(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function rb(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function ab(e){return fa(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function nA(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(_e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),_e(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),_e(e,()=>e.enableVertexAttribArray(o)),!0)}function sb(e,t,n){yb(e,n),_e(e,()=>e.activeTexture(e.TEXTURE0+n)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function Ez(e,t){yb(e,t),_e(e,()=>e.activeTexture(e.TEXTURE0+t)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function ib(e,t,n){return fa(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function ob(e,t,n){return e.getUniformLocation(t,n)}function lb(e,t,n,r){_e(e,()=>sb(e,t,r)),_e(e,()=>e.uniform1i(n,r))}function Cz(e){_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),_e(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),_e(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function mp(e,t,n){_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),_e(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function rA(e,t){_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),_e(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function pc(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+ub(e,t))}function ub(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function fa(e,t,n){let r=_e(e,()=>t());if(r==null)throw new Error(n);return r}function yb(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function ki(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function Ii(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function Ap(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[ki(e),...Ii(e)]),t}function cb(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=ki(e),s=2,i=2;return e.length&&([s,i]=Ii(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function gp(e){return e%2==0}function fc(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||gp(n)&&gp(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&gp(e[0])&&gp(t[0])}var xp,wp;function hb(e){if(xp==null){let t=Gr(e);xp=t.getParameter(t.MAX_TEXTURE_SIZE)}return xp}function Rz(){xp=null}function Fz(){wp=null}function db(e){if(wp==null){let t=Gr(e);wp=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,wp)}function pb(e){if(e===0)return 0;let t,n=Gr(e);return er(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:er(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function er(e,t){return e.getExtension(t)!=null}function aA(e){try{if(Gr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function fb(e){if(e===0)return!1;let t=Gr(e);if(e===1){if(!er(t,"OES_texture_float"))return!1}else if(!er(t,"EXT_color_buffer_float"))return!1;return oA(t)}function mb(e){if(e===0)return!1;let t=Gr(e);if(e===1){if(!er(t,"OES_texture_float")||!er(t,"WEBGL_color_buffer_float"))return!1}else{if(er(t,"EXT_color_buffer_float"))return oA(t);let n="EXT_color_buffer_half_float";if(er(t,n)){let r=t.getExtension(n);return Vz(t,r)}return!1}return oA(t)}function oA(e){let t=iA(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function Vz(e,t){let n=iA(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function Ab(e){return e!==2?!1:Gr(e).fenceSync!=null}function Fl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var De=J();De.registerFlag("HAS_WEBGL",()=>De.getNumber("WEBGL_VERSION")>0);De.registerFlag("WEBGL_VERSION",()=>aA(2)?2:aA(1)?1:0);De.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);De.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>De.get("WEBGL_VERSION")===2);De.registerFlag("WEBGL_CPU_FORWARD",()=>!0);De.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);De.registerFlag("WEBGL_PACK",()=>De.getBool("HAS_WEBGL"));De.registerFlag("WEBGL_PACK_NORMALIZATION",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_CLIP",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);De.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_PACK_REDUCE",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_LAZILY_UNPACK",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_CONV_IM2COL",()=>De.getBool("WEBGL_PACK"));De.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>hb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>db(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=De.getNumber("WEBGL_VERSION");return e===0?0:pb(e)});De.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>De.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Vu.isMobile());De.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>fb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>De.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:De.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));De.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>mb(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_FENCE_API_ENABLED",()=>Ab(De.getNumber("WEBGL_VERSION")));De.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>De.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);De.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});De.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Vu.isMobile()&&De.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function gn(){let e,t,n,r,a,s,i,o,l,u;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` bool isnan_custom(float val) { return (val > 0.0 || val < 0.0) ? false : val != 0.0; } @@ -78,7 +78,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee int getFlatIndex(ivec3 coords) { return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z; } -`}var yb=` +`}var gb=` const float FLOAT_MAX = 1.70141184e38; const float FLOAT_MIN = 1.17549435e-38; @@ -117,7 +117,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return c / 255.0; } -`,Vz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=mc.DENSE;let t=yc(e),n=gn();this.outputShape=e,this.userCode=` +`,Uz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=mc.DENSE;let t=yc(e),n=gn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { ${Si(["r","c","d"],e)} return ivec3(r, c, d); @@ -138,7 +138,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${n.output} = result; } - `}},Uz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=mc.DENSE;let t=yc(e),n=gn();this.outputShape=e,this.userCode=` + `}},Hz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=mc.DENSE;let t=yc(e),n=gn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { ${Si(["r","c","d"],e)} return ivec3(r, c, d); @@ -159,22 +159,22 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${n.output} = result; } - `}},Hz=class{constructor(e){this.variableNames=["A"],this.outTexUsage=tr.DOWNLOAD;let t=gn();this.outputShape=e,this.userCode=` - ${yb} + `}},jz=class{constructor(e){this.variableNames=["A"],this.outTexUsage=tr.DOWNLOAD;let t=gn();this.outputShape=e,this.userCode=` + ${gb} void main() { float x = getAAtOutCoords(); ${t.output} = encode_float(x); } - `}},jz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=tr.DOWNLOAD;let t=gn();this.outputShape=e,this.userCode=` - ${yb} + `}},Gz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=tr.DOWNLOAD;let t=gn();this.outputShape=e,this.userCode=` + ${gb} void main() { ivec3 coords = getOutputCoords(); float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); ${t.output} = encode_float(x); } - `}},Gz=class{constructor(e,t,n=!1){this.variableNames=["A"];let r=gn(),[a,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` + `}},qz=class{constructor(e,t,n=!1){this.variableNames=["A"];let r=gn(),[a,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` ${lA(e)} void main() { @@ -204,7 +204,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${r.output} = vec4(${i}, 0., 0., 0.); } - `}},qz=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let r=gn(),[a,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){let c=l*2+u;i+=` + `}},Xz=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let r=gn(),[a,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){let c=l*2+u;i+=` localCoords = coords; if(localCoords[2] + ${u} < ${e[2]}) { localCoords[2] += ${u}; @@ -248,7 +248,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${r.output} = ${o}; } - `}},gb={};We(gb,{bindVertexProgramAttributeStreams:()=>Sb,createBufferFromOutputTexture:()=>Cb,createFloat16MatrixTexture:()=>vb,createFloat16PackedMatrixTexture:()=>Nb,createFloat32MatrixTexture:()=>_b,createIndexBuffer:()=>bb,createPackedMatrixTexture:()=>Ib,createUnsignedBytesMatrixTexture:()=>kb,createVertexBuffer:()=>wb,createVertexShader:()=>xb,downloadByteEncodedFloatMatrixFromOutputTexture:()=>Fb,downloadFloat32MatrixFromBuffer:()=>Rb,downloadMatrixFromPackedOutputTexture:()=>$b,downloadPackedMatrixFromBuffer:()=>Mb,getInternalFormatForFloat16MatrixTexture:()=>cA,getInternalFormatForFloat16PackedMatrixTexture:()=>pA,getInternalFormatForFloat32MatrixTexture:()=>uA,getInternalFormatForPackedMatrixTexture:()=>dA,getInternalFormatForUnsignedBytesMatrixTexture:()=>hA,uploadDenseMatrixToTexture:()=>Tb,uploadPixelDataToTexture:()=>Eb});function xb(e){let t=gn(),n=`${t.version} + `}},xb={};We(xb,{bindVertexProgramAttributeStreams:()=>Tb,createBufferFromOutputTexture:()=>Rb,createFloat16MatrixTexture:()=>kb,createFloat16PackedMatrixTexture:()=>Sb,createFloat32MatrixTexture:()=>vb,createIndexBuffer:()=>_b,createPackedMatrixTexture:()=>Nb,createUnsignedBytesMatrixTexture:()=>Ib,createVertexBuffer:()=>bb,createVertexShader:()=>wb,downloadByteEncodedFloatMatrixFromOutputTexture:()=>Mb,downloadFloat32MatrixFromBuffer:()=>Fb,downloadMatrixFromPackedOutputTexture:()=>Db,downloadPackedMatrixFromBuffer:()=>$b,getInternalFormatForFloat16MatrixTexture:()=>cA,getInternalFormatForFloat16PackedMatrixTexture:()=>pA,getInternalFormatForFloat32MatrixTexture:()=>uA,getInternalFormatForPackedMatrixTexture:()=>dA,getInternalFormatForUnsignedBytesMatrixTexture:()=>hA,uploadDenseMatrixToTexture:()=>Eb,uploadPixelDataToTexture:()=>Cb});function wb(e){let t=gn(),n=`${t.version} precision highp float; ${t.attribute} vec3 clipSpacePos; ${t.attribute} vec2 uv; @@ -257,22 +257,22 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return Kw(e,n)}function wb(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return Qw(e,t)}function bb(e){let t=new Uint16Array([0,1,2,2,1,3]);return eb(e,t)}function gc(e,t,n,r,a,s){nb(t,n);let i=tb(e),o=e.TEXTURE_2D;return _e(e,()=>e.bindTexture(o,i)),_e(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),_e(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),_e(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),_e(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),_e(e,()=>e.texImage2D(o,0,r,t,n,0,a,s,null)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function uA(e){return e.internalFormatFloat}function _b(e,t,n,r){let[a,s]=Ac(t,n);return gc(e,a,s,uA(r),r.textureFormatFloat,e.FLOAT)}function cA(e){return e.internalFormatHalfFloat}function vb(e,t,n,r){let[a,s]=Ac(t,n);return gc(e,a,s,cA(r),r.textureFormatFloat,r.textureTypeHalfFloat)}function hA(e){return e.downloadTextureFormat}function kb(e,t,n,r){let[a,s]=Ac(t,n);return gc(e,a,s,hA(r),e.RGBA,e.UNSIGNED_BYTE)}function dA(e){return e.internalFormatPackedFloat}function Ib(e,t,n,r){let[a,s]=Ml(t,n);return gc(e,a,s,dA(r),e.RGBA,e.FLOAT)}function pA(e){return e.internalFormatPackedHalfFloat}function Nb(e,t,n,r){let[a,s]=Ml(t,n);return gc(e,a,s,pA(r),e.RGBA,r.textureTypeHalfFloat)}function Sb(e,t,n){let r=0,a=3*4,s=3*4+2*4;return _e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),nA(e,t,"clipSpacePos",n,3,s,r)&&nA(e,t,"uv",n,2,s,a)}function Tb(e,t,n,r,a,s){_e(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;a instanceof Uint8Array?(i=new Uint8Array(n*r*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*r*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(a),_e(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,r,0,e.RGBA,o,i)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Eb(e,t,n){_e(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?_e(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):_e(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Cb(e,t,n,r){let a=e.createBuffer();_e(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,a));let s=4*4*t*n;return _e(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),_e(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),_e(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),a}function Rb(e,t,n){let r=e,a=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,t),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,a),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),a}function Fb(e,t,n,r){let[a,s]=Ac(t,n),i=4,o=new Uint8Array($z(t*n,i));return _e(e,()=>e.readPixels(0,0,a,s,r.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function Mb(e,t,n,r,a,s,i,o){let l=e,u=new Float32Array(Dz(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function $b(e,t,n){let r=new Float32Array(t*n*4);return _e(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,r)),r}var bp=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=J().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,yp(t,e)):this.gl=Gr(t);let n="WEBGL_color_buffer_float",r="EXT_color_buffer_half_float";if(J().getNumber("WEBGL_VERSION")===1){let a="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=dc(this.gl,a),er(this.gl,s))this.textureHalfFloatExtension=dc(this.gl,s);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),er(this.gl,r))this.colorBufferHalfFloatExtension=dc(this.gl,r);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",er(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(er(this.gl,r))this.colorBufferHalfFloatExtension=this.gl.getExtension(r);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=wb(this.gl),this.indexBuffer=bb(this.gl),this.framebuffer=rb(this.gl),this.textureConfig=iA(this.gl,this.textureHalfFloatExtension)}get debug(){return J().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;_e(e,()=>e.finish()),_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),_e(e,()=>e.deleteFramebuffer(this.framebuffer)),_e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),_e(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),_e(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),_b(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),vb(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),kb(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),Eb(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,r){this.throwIfDisposed(),Tb(this.gl,e,t,n,r,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),Nb(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),Ib(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(rA(this.gl,this.framebuffer),this.outputTexture=null),_e(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>Fb(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,r,a,s){return Mb(this.gl,e,t,n,r,a,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return Rb(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let r=Cb(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(J().getBool("WEBGL_FENCE_API_ENABLED")){let r=e,a=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=r.clientWaitSync(a,0,0);return s===r.ALREADY_SIGNALED||s===r.CONDITION_SATISFIED},t=a}else J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>$b(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=Zw(t,e),r=xb(t),a=Yw(t);return _e(t,()=>t.attachShader(a,r)),_e(t,()=>t.attachShader(a,n)),Jw(t,a),this.debug&&fp(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=Sb(t,this.program,this.vertexBuffer)),a}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&_e(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&fp(this.gl,this.program),_e(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?sb(this.gl,e,t):ib(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),_e(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),ob(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[r,a]=Ml(t,n);this.setOutputMatrixTextureDriver(e,r,a)}setOutputMatrixWriteRegion(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)}setOutputPackedMatrixWriteRegion(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&fp(this.gl,this.program),pc(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),_e(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),_e(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=dc(this.gl,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.createQuery();return n.beginQuery(r.TIME_ELAPSED_EXT,a),a}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),r=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),r&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=Xz(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),mp(this.gl,e,this.framebuffer),this.debug&&pc(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(mp(this.gl,this.outputTexture,this.framebuffer),this.debug&&pc(this.gl)):rA(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let r=this.gl;mp(r,e,this.framebuffer),this.debug&&pc(r),this.outputTexture=e,_e(r,()=>r.viewport(0,0,t,n)),_e(r,()=>r.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,r){this.throwIfDisposed(),_e(this.gl,()=>this.gl.scissor(e,t,n,r))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function Xz(e){let t=0;for(;t{let f=v.sizeFromShape(p.shapeInfo.logicalShape);p.shapeInfo.isUniform?a.push(`uniform float ${p.name}${f>1?`[${f}]`:""};`):(a.push(`uniform sampler2D ${p.name};`),a.push(`uniform int offset${p.name};`))});let s=a.join(` -`),i=e.map(p=>Kz(p,t,r)).join(` -`),o=t.texShape,l=gn(),u=Jz(l),c,h,d=tP(l);return t.isPacked?(c=Zz(t.logicalShape,o),h=eP(l)):(c=Yz(t.logicalShape,o),h=Qz(l)),r&&(d+=nP),[d,u,h,s,c,i,n].join(` -`)}function $l(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return aP(e);case 1:return sP(e);case 2:return iP(e);case 3:return oP(e);case 4:return lP(e);case 5:return uP(e);case 6:return cP(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function Ob(e){switch(e.shapeInfo.logicalShape.length){case 0:return hP(e);case 1:return dP(e);case 2:return pP(e);case 3:return fP(e);default:return mP(e)}}function Kz(e,t,n=!1){let r="";n?r+=Ob(e):r+=$l(e);let a=e.shapeInfo.logicalShape,s=t.logicalShape;return a.length<=s.length&&(n?r+=AP(e,t):r+=yP(e,t)),r}function Zz(e,t){switch(e.length){case 0:return zb();case 1:return gP(e,t);case 2:return bP(e,t);case 3:return xP(e,t);default:return wP(e,t)}}function Yz(e,t){switch(e.length){case 0:return zb();case 1:return _P(e,t);case 2:return SP(e,t);case 3:return vP(e,t);case 4:return kP(e,t);case 5:return IP(e,t);case 6:return NP(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function Jz(e){return` + }`;return Zw(e,n)}function bb(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return eb(e,t)}function _b(e){let t=new Uint16Array([0,1,2,2,1,3]);return tb(e,t)}function gc(e,t,n,r,a,s){rb(t,n);let i=nb(e),o=e.TEXTURE_2D;return _e(e,()=>e.bindTexture(o,i)),_e(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),_e(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),_e(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),_e(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),_e(e,()=>e.texImage2D(o,0,r,t,n,0,a,s,null)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function uA(e){return e.internalFormatFloat}function vb(e,t,n,r){let[a,s]=Ac(t,n);return gc(e,a,s,uA(r),r.textureFormatFloat,e.FLOAT)}function cA(e){return e.internalFormatHalfFloat}function kb(e,t,n,r){let[a,s]=Ac(t,n);return gc(e,a,s,cA(r),r.textureFormatFloat,r.textureTypeHalfFloat)}function hA(e){return e.downloadTextureFormat}function Ib(e,t,n,r){let[a,s]=Ac(t,n);return gc(e,a,s,hA(r),e.RGBA,e.UNSIGNED_BYTE)}function dA(e){return e.internalFormatPackedFloat}function Nb(e,t,n,r){let[a,s]=Ml(t,n);return gc(e,a,s,dA(r),e.RGBA,e.FLOAT)}function pA(e){return e.internalFormatPackedHalfFloat}function Sb(e,t,n,r){let[a,s]=Ml(t,n);return gc(e,a,s,pA(r),e.RGBA,r.textureTypeHalfFloat)}function Tb(e,t,n){let r=0,a=3*4,s=3*4+2*4;return _e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),nA(e,t,"clipSpacePos",n,3,s,r)&&nA(e,t,"uv",n,2,s,a)}function Eb(e,t,n,r,a,s){_e(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;a instanceof Uint8Array?(i=new Uint8Array(n*r*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*r*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(a),_e(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,r,0,e.RGBA,o,i)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Cb(e,t,n){_e(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?_e(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):_e(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),_e(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Rb(e,t,n,r){let a=e.createBuffer();_e(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,a));let s=4*4*t*n;return _e(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),_e(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),_e(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),a}function Fb(e,t,n){let r=e,a=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,t),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,a),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),a}function Mb(e,t,n,r){let[a,s]=Ac(t,n),i=4,o=new Uint8Array(Dz(t*n,i));return _e(e,()=>e.readPixels(0,0,a,s,r.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function $b(e,t,n,r,a,s,i,o){let l=e,u=new Float32Array(Oz(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function Db(e,t,n){let r=new Float32Array(t*n*4);return _e(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,r)),r}var bp=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=J().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,yp(t,e)):this.gl=Gr(t);let n="WEBGL_color_buffer_float",r="EXT_color_buffer_half_float";if(J().getNumber("WEBGL_VERSION")===1){let a="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=dc(this.gl,a),er(this.gl,s))this.textureHalfFloatExtension=dc(this.gl,s);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),er(this.gl,r))this.colorBufferHalfFloatExtension=dc(this.gl,r);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",er(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(er(this.gl,r))this.colorBufferHalfFloatExtension=this.gl.getExtension(r);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=bb(this.gl),this.indexBuffer=_b(this.gl),this.framebuffer=ab(this.gl),this.textureConfig=iA(this.gl,this.textureHalfFloatExtension)}get debug(){return J().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;_e(e,()=>e.finish()),_e(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),_e(e,()=>e.deleteFramebuffer(this.framebuffer)),_e(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),_e(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),_e(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),vb(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),kb(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),Ib(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),Cb(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,r){this.throwIfDisposed(),Eb(this.gl,e,t,n,r,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),Sb(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),Nb(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(rA(this.gl,this.framebuffer),this.outputTexture=null),_e(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>Mb(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,r,a,s){return $b(this.gl,e,t,n,r,a,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return Fb(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let r=Rb(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(J().getBool("WEBGL_FENCE_API_ENABLED")){let r=e,a=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=r.clientWaitSync(a,0,0);return s===r.ALREADY_SIGNALED||s===r.CONDITION_SATISFIED},t=a}else J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>Db(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=Yw(t,e),r=wb(t),a=Jw(t);return _e(t,()=>t.attachShader(a,r)),_e(t,()=>t.attachShader(a,n)),Qw(t,a),this.debug&&fp(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=Tb(t,this.program,this.vertexBuffer)),a}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&_e(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&fp(this.gl,this.program),_e(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?ib(this.gl,e,t):ob(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),_e(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),lb(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[r,a]=Ml(t,n);this.setOutputMatrixTextureDriver(e,r,a)}setOutputMatrixWriteRegion(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)}setOutputPackedMatrixWriteRegion(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&fp(this.gl,this.program),pc(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),_e(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),_e(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=dc(this.gl,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.createQuery();return n.beginQuery(r.TIME_ELAPSED_EXT,a),a}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),r=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),r&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=Kz(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),mp(this.gl,e,this.framebuffer),this.debug&&pc(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(mp(this.gl,this.outputTexture,this.framebuffer),this.debug&&pc(this.gl)):rA(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let r=this.gl;mp(r,e,this.framebuffer),this.debug&&pc(r),this.outputTexture=e,_e(r,()=>r.viewport(0,0,t,n)),_e(r,()=>r.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,r){this.throwIfDisposed(),_e(this.gl,()=>this.gl.scissor(e,t,n,r))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function Kz(e){let t=0;for(;t{let f=v.sizeFromShape(p.shapeInfo.logicalShape);p.shapeInfo.isUniform?a.push(`uniform float ${p.name}${f>1?`[${f}]`:""};`):(a.push(`uniform sampler2D ${p.name};`),a.push(`uniform int offset${p.name};`))});let s=a.join(` +`),i=e.map(p=>Zz(p,t,r)).join(` +`),o=t.texShape,l=gn(),u=Qz(l),c,h,d=nP(l);return t.isPacked?(c=Yz(t.logicalShape,o),h=tP(l)):(c=Jz(t.logicalShape,o),h=eP(l)),r&&(d+=rP),[d,u,h,s,c,i,n].join(` +`)}function $l(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return sP(e);case 1:return iP(e);case 2:return oP(e);case 3:return lP(e);case 4:return uP(e);case 5:return cP(e);case 6:return hP(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function zb(e){switch(e.shapeInfo.logicalShape.length){case 0:return dP(e);case 1:return pP(e);case 2:return fP(e);case 3:return mP(e);default:return AP(e)}}function Zz(e,t,n=!1){let r="";n?r+=zb(e):r+=$l(e);let a=e.shapeInfo.logicalShape,s=t.logicalShape;return a.length<=s.length&&(n?r+=yP(e,t):r+=gP(e,t)),r}function Yz(e,t){switch(e.length){case 0:return Pb();case 1:return xP(e,t);case 2:return _P(e,t);case 3:return wP(e,t);default:return bP(e,t)}}function Jz(e,t){switch(e.length){case 0:return Pb();case 1:return vP(e,t);case 2:return TP(e,t);case 3:return kP(e,t);case 4:return IP(e,t);case 5:return NP(e,t);case 6:return SP(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function Qz(e){return` float sampleTexture(sampler2D textureSampler, vec2 uv) { return ${e.texture2D}(textureSampler, uv).r; } - `}function Qz(e){return` + `}function eP(e){return` void setOutput(float val) { ${e.output} = vec4(val, 0, 0, 0); } - `}function eP(e){return` + `}function tP(e){return` void setOutput(vec4 val) { ${e.output} = val; } - `}function tP(e){return`${e.version} + `}function nP(e){return`${e.version} precision highp float; precision highp int; precision highp sampler2D; @@ -327,10 +327,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return fract((p3.x + p3.y) * p3.z); } - ${TP} ${EP} ${CP} - `}var TP=` + ${RP} + `}var EP=` vec2 uvFromFlat(int texNumR, int texNumC, int index) { int texR = index / texNumC; int texC = index - texR * texNumC; @@ -342,7 +342,7 @@ vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,EP=` +`,CP=` vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texNumC, int row, int col) { int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); @@ -350,7 +350,7 @@ vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,CP=` +`,RP=` vec2 packedUVfrom3D(int texNumR, int texNumC, int texelsInBatch, int texelsInLogicalRow, int b, int row, int col) { @@ -359,7 +359,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, int texC = index - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,nP=` +`,rP=` float getChannel(vec4 frag, vec2 innerDims) { vec2 modCoord = mod(innerDims, 2.); return modCoord.x == 0. ? @@ -370,11 +370,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float modCoord = mod(float(dim), 2.); return modCoord == 0. ? frag.r : frag.g; } -`;function zb(){return` +`;function Pb(){return` int getOutputCoords() { return 0; } - `}function gP(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` + `}function xP(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` int getOutputCoords() { return 2 * int(resultUV.x * ${n[1]}.0); } @@ -388,7 +388,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec2(${n[0]}, ${n[1]})); return 2 * (resTexRC.x * ${n[1]} + resTexRC.y); } - `}function _P(e,t){return t[0]===1?` + `}function vP(e,t){return t[0]===1?` int getOutputCoords() { return int(resultUV.x * ${t[1]}.0); } @@ -402,7 +402,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec2(${t[0]}, ${t[1]})); return resTexRC.x * ${t[1]} + resTexRC.y; } - `}function xP(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return` + `}function wP(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * vec2(${n[0]}, ${n[1]})); @@ -416,7 +416,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, return ivec3(b, r, c); } - `}function vP(e,t){let n=Si(["r","c","d"],e);return` + `}function kP(e,t){let n=Si(["r","c","d"],e);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * vec2(${t[0]}, ${t[1]})); @@ -424,7 +424,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ${n} return ivec3(r, c, d); } - `}function wP(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[e.length-1]/2),a=r*Math.ceil(e[e.length-2]/2),s=a,i="",o="b, r, c";for(let l=2;l=1?c="coords = 0;":c=o.map(A=>`coords.${h[A+u]} = 0;`).join(` + `}function yP(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=e.shapeInfo.logicalShape.length,i=t.logicalShape.length,o=Ob(e.shapeInfo.logicalShape,t.logicalShape),l=dt(i),u=i-s,c,h=["x","y","z","w","u","v"];s===0?c="":i<2&&o.length>=1?c="coords = 0;":c=o.map(A=>`coords.${h[A+u]} = 0;`).join(` `);let d="";i<2&&s>0?d="coords":d=e.shapeInfo.logicalShape.map((A,y)=>`coords.${h[y+u]}`).join(", ");let p="return outputValue;",f=v.sizeFromShape(e.shapeInfo.logicalShape)===1,m=v.sizeFromShape(t.logicalShape)===1;if(s===1&&!f&&!m)p=` return vec4(outputValue.xy, outputValue.xy); `;else if(f&&!m)i===1?p=` @@ -804,22 +804,22 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 outputValue = get${r}(${d}); ${p} } - `}function yP(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&v.arraysEqual(i,s))return` + `}function gP(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&v.arraysEqual(i,s))return` float ${a}() { return sampleTexture(${n}, resultUV); } - `;let u=dt(l),c=Db(e.shapeInfo.logicalShape,t.logicalShape),h=l-o,d,p=["x","y","z","w","u","v"];o===0?d="":l<2&&c.length>=1?d="coords = 0;":d=c.map(m=>`coords.${p[m+h]} = 0;`).join(` + `;let u=dt(l),c=Ob(e.shapeInfo.logicalShape,t.logicalShape),h=l-o,d,p=["x","y","z","w","u","v"];o===0?d="":l<2&&c.length>=1?d="coords = 0;":d=c.map(m=>`coords.${p[m+h]} = 0;`).join(` `);let f="";return l<2&&o>0?f="coords":f=e.shapeInfo.logicalShape.map((m,A)=>`coords.${p[A+h]}`).join(", "),` float ${a}() { ${u} coords = getOutputCoords(); ${d} return get${r}(${f}); } - `}function dt(e){if(e<=1)return"int";if(e===2)return"ivec2";if(e===3)return"ivec3";if(e===4)return"ivec4";if(e===5)return"ivec5";if(e===6)return"ivec6";throw Error(`GPU for rank ${e} is not yet supported`)}function Ol(e,t){let n=JSON.parse(JSON.stringify(e));return n.shapeInfo.logicalShape=t,n}function zl(e,t){return t.map(n=>e[n]).join(", ")}function RP(e,t,n,r){let a=t.userCode,s=n.map((p,f)=>{let m={logicalShape:p.shape,texShape:p.isUniform?null:p.texData.texShape,isUniform:p.isUniform,isPacked:p.isUniform?!1:p.texData.isPacked,flatOffset:null};return p.texData!=null&&p.texData.slice!=null&&p.texData.slice.flatOffset>0&&(m.flatOffset=p.texData.slice.flatOffset),{name:t.variableNames[f],shapeInfo:m}}),i=s.map(p=>p.shapeInfo),o={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},l=rP(s,o,a,t.packedInputs),u=e.createProgram(l),c=null,h=e.getUniformLocation(u,"NAN",!1);J().getNumber("WEBGL_VERSION")===1&&(c=e.getUniformLocation(u,"INFINITY",!1));let d={};for(let p=0;p{let a=n.logicalShape,s=t[r],i=s.shape;if(!v.arraysEqual(a,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${a} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!v.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function FP(e,t,n,r,a){Pb(t.inShapeInfos,n),Pb([t.outShapeInfo],[r]);let s=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),J().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let u=t.program.variableNames[l],c=t.uniformLocations[u],h=t.uniformLocations[`offset${u}`];if(c!=null){if(o.isUniform){if(v.sizeFromShape(o.shape)<2)e.gl.uniform1f(c,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(c,d)}return}o.texData.slice!=null&&h!=null&&e.gl.uniform1i(h,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,c,l)}}),a!=null&&a(e,t.webGLProgram),e.executeProgram()}function MP(e,t,n){let r="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;r+=`${i.shape}_${l}_${o}`});let a=e.userCode,s=e.constructor.name;return s+="_"+r+"_"+a,s}var{addImpl:$P,bincountImpl:Lb,bincountReduceImpl:DP,ceilImpl:OP,concatImpl:zP,expImpl:PP,expm1Impl:LP,floorImpl:WP,gatherV2Impl:BP,greaterImpl:VP,lessImpl:UP,linSpaceImpl:HP,logImpl:jP,maxImpl:GP,maximumImpl:qP,minimumImpl:XP,multiplyImpl:KP,negImpl:ZP,prodImpl:YP,rangeImpl:JP,rsqrtImpl:QP,simpleAbsImpl:Wb,sliceImpl:eL,stridedSliceImpl:tL,subImpl:nL,tileImpl:rL,topKImpl:aL,transposeImpl:fA,uniqueImpl:sL}=Bm;function Bb(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function xn(e,t){return t===1?[e]:Bb(e,t)}function iL(e,t){if(e===1)return"rc";let n="";for(let r=0;re[n]).join(", ")}function FP(e,t,n,r){let a=t.userCode,s=n.map((p,f)=>{let m={logicalShape:p.shape,texShape:p.isUniform?null:p.texData.texShape,isUniform:p.isUniform,isPacked:p.isUniform?!1:p.texData.isPacked,flatOffset:null};return p.texData!=null&&p.texData.slice!=null&&p.texData.slice.flatOffset>0&&(m.flatOffset=p.texData.slice.flatOffset),{name:t.variableNames[f],shapeInfo:m}}),i=s.map(p=>p.shapeInfo),o={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},l=aP(s,o,a,t.packedInputs),u=e.createProgram(l),c=null,h=e.getUniformLocation(u,"NAN",!1);J().getNumber("WEBGL_VERSION")===1&&(c=e.getUniformLocation(u,"INFINITY",!1));let d={};for(let p=0;p{let a=n.logicalShape,s=t[r],i=s.shape;if(!v.arraysEqual(a,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${a} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!v.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function MP(e,t,n,r,a){Lb(t.inShapeInfos,n),Lb([t.outShapeInfo],[r]);let s=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),J().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let u=t.program.variableNames[l],c=t.uniformLocations[u],h=t.uniformLocations[`offset${u}`];if(c!=null){if(o.isUniform){if(v.sizeFromShape(o.shape)<2)e.gl.uniform1f(c,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(c,d)}return}o.texData.slice!=null&&h!=null&&e.gl.uniform1i(h,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,c,l)}}),a!=null&&a(e,t.webGLProgram),e.executeProgram()}function $P(e,t,n){let r="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;r+=`${i.shape}_${l}_${o}`});let a=e.userCode,s=e.constructor.name;return s+="_"+r+"_"+a,s}var{addImpl:DP,bincountImpl:Wb,bincountReduceImpl:OP,ceilImpl:zP,concatImpl:PP,expImpl:LP,expm1Impl:WP,floorImpl:BP,gatherV2Impl:VP,greaterImpl:UP,lessImpl:HP,linSpaceImpl:jP,logImpl:GP,maxImpl:qP,maximumImpl:XP,minimumImpl:KP,multiplyImpl:ZP,negImpl:YP,prodImpl:JP,rangeImpl:QP,rsqrtImpl:eL,simpleAbsImpl:Bb,sliceImpl:tL,stridedSliceImpl:nL,subImpl:rL,tileImpl:aL,topKImpl:sL,transposeImpl:fA,uniqueImpl:iL}=Bm;function Vb(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function xn(e,t){return t===1?[e]:Vb(e,t)}function oL(e,t){if(e===1)return"rc";let n="";for(let r=0;r ${t[0]}`;let r="";for(let a=e-2;a= ${t[a]}`,a ${t[0]}`;let r="";for(let a=e-2;a= ${t[a]}`,a= ${t}; bool rEdge = rp1 >= ${n}; - `}function uL(e,t){let n=e.length,r=hL(n,t);return n===1?`getA(rc), + `}function cL(e,t){let n=e.length,r=dL(n,t);return n===1?`getA(rc), rc + 1 >= ${e[0]} ? 0. : getA(rc + 1), 0, 0`:`getA(${r[0]}), cEdge ? 0. : getA(${r[1]}), rEdge ? 0. : getA(${r[2]}), - rEdge || cEdge ? 0. : getA(${r[3]})`}var Vb=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let r=0;r<4;r++){let a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+=` + rEdge || cEdge ? 0. : getA(${r[3]})`}var Ub=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let r=0;r<4;r++){let a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+=` ${a} ${r>0?"if(thisRC.y < rows && thisRC.z < cols){":""} int flatIndex = getFlatIndex(thisRC); @@ -856,7 +856,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); ${r>0?"}":""} `}this.userCode=` - ${dL(t)} + ${pL(t)} ${lA(e)} void main() { @@ -872,12 +872,12 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}};function dL(e){return` + `}};function pL(e){return` ivec3 inputCoordsFromReshapedOutCoords(int index) { ${Si(["r","c","d"],e)} return ivec3(r, c, d); } - `}var pL=class{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){let r=Hb(t,n),a=jb(e,r,n);a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]);let s=Ub(e,r,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}let i;return r===sn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===sn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):r===sn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===sn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===sn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,r){if(this.freeTextures==null)return;let a=Hb(n,r),s=jb(t,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);let i=Ub(t,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),o=J().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],u=l.indexOf(e);if(u<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(u,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function fL(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function Ub(e,t,n,r,a){let s=mL(t,r),i;if(a){let[l,u]=Ml(e[0],e[1]);i=l*u}else{let[l,u]=Ac(e[0],e[1]);i=l*u}let o=fL(n,s);return i*o}function mL(e,t){switch(e){case sn.PACKED_2X2_FLOAT32:return dA(t);case sn.PACKED_2X2_FLOAT16:return pA(t);case sn.UNPACKED_FLOAT32:return uA(t);case sn.UNPACKED_FLOAT16:return cA(t);case sn.PACKED_4X1_UNSIGNED_BYTE:return hA(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function AL(e){return J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?sn.PACKED_2X2_FLOAT32:sn.UNPACKED_FLOAT32:e?sn.PACKED_2X2_FLOAT16:sn.UNPACKED_FLOAT16}function Hb(e,t){if(e===tr.UPLOAD)return sn.PACKED_2X2_FLOAT32;if(e===tr.RENDER||e==null)return AL(t);if(e===tr.DOWNLOAD||e===tr.PIXELS)return sn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function jb(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var qa=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` + `}var fL=class{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){let r=jb(t,n),a=Gb(e,r,n);a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]);let s=Hb(e,r,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}let i;return r===sn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===sn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):r===sn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===sn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===sn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,r){if(this.freeTextures==null)return;let a=jb(n,r),s=Gb(t,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);let i=Hb(t,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),o=J().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],u=l.indexOf(e);if(u<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(u,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function mL(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function Hb(e,t,n,r,a){let s=AL(t,r),i;if(a){let[l,u]=Ml(e[0],e[1]);i=l*u}else{let[l,u]=Ac(e[0],e[1]);i=l*u}let o=mL(n,s);return i*o}function AL(e,t){switch(e){case sn.PACKED_2X2_FLOAT32:return dA(t);case sn.PACKED_2X2_FLOAT16:return pA(t);case sn.UNPACKED_FLOAT32:return uA(t);case sn.UNPACKED_FLOAT16:return cA(t);case sn.PACKED_4X1_UNSIGNED_BYTE:return hA(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function yL(e){return J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?sn.PACKED_2X2_FLOAT32:sn.UNPACKED_FLOAT32:e?sn.PACKED_2X2_FLOAT16:sn.UNPACKED_FLOAT16}function jb(e,t){if(e===tr.UPLOAD)return sn.PACKED_2X2_FLOAT32;if(e===tr.RENDER||e==null)return yL(t);if(e===tr.DOWNLOAD||e===tr.PIXELS)return sn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function Gb(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var qa=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` float unaryOperation(float x) { ${t} } @@ -888,11 +888,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},Ir="if (isnan(x)) return x;",yL="return x;",Gb="return abs(x);",gL="return (x >= 0.0) ? x : (exp(x) - 1.0);",xL=Ir+` + `}},Ir="if (isnan(x)) return x;",gL="return x;",qb="return abs(x);",xL="return (x >= 0.0) ? x : (exp(x) - 1.0);",wL=Ir+` return (x < 0.0) ? 0.0 : x; -`,wL=Ir+` +`,bL=Ir+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,_p="return x;",bL="return x;",_L=` +`,_p="return x;",_L="return x;",vL=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -901,7 +901,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,vL=` +`,kL=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -911,7 +911,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,kL=` +`,IL=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -932,14 +932,14 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},IL=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=xn("rc",t),r=dt(t),a=iL(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` + `}},NL=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=xn("rc",t),r=dt(t),a=oL(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` void main() { ${r} rc = getOutputCoords(); vec4 packedInput = getA(${a}); setOutput(getChannel(packedInput, ${i})); } - `}},NL=Hr.whereImpl,SL=1e-7,TL=1e-4,mA={};function EL(e){return e in mA||(mA[e]={}),mA[e]}var CL=128,RL=600;function FL(){return J().global.screen==null?1024:J().global.screen.height*J().global.screen.width*window.devicePixelRatio*RL/1024/1024}var Ll=class extends fu{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!J().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Gr(J().getNumber("WEBGL_VERSION"));this.binaryCache=EL(J().getNumber("WEBGL_VERSION")),this.gpgpu=new bp(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new pL(this.gpgpu),this.numMBBeforeWarning=FL(),this.texData=new Rh(this,Pr())}nextDataId(){return Ll.nextDataId++}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((J().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||J().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let r={id:this.nextDataId()};return this.texData.set(r,{shape:t,dtype:n,values:e,usage:tr.UPLOAD,refCount:1}),r}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,r,a){if(J().getBool("DEBUG")&&this.checkNumericalProblems(t),r==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:r,values:t,usage:tr.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:r,complexTensorInfos:a,slice:s,shape:i,isPacked:o}=t;if(s!=null){let h;o?h=new Pl(i,_p):h=new qa(i,_p);let d=this.runWebGLProgram(h,[{dataId:e,shape:i,dtype:r}],r),p=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),p}if(n!=null)return this.convertAndCacheOnCPU(e);if(r==="string")return n;let l=this.activeTimers!=null,u;l&&(u=v.now());let c;if(r==="complex64"){let h=this.readSync(a.real.dataId),d=this.readSync(a.imag.dataId);c=R.mergeRealAndImagArrays(h,d)}else c=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=v.now()-u),this.convertAndCacheOnCPU(e,c)}async read(e){if(this.pendingRead.has(e)){let p=this.pendingRead.get(e);return new Promise(f=>p.push(f))}let t=this.texData.get(e),{values:n,shape:r,slice:a,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(a!=null){let p;o?p=new Pl(r,_p):p=new qa(r,_p);let f=this.runWebGLProgram(p,[{dataId:e,shape:r,dtype:s}],s),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(!J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&J().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,u;if(s!=="complex64"&&J().get("WEBGL_BUFFER_SUPPORTED")){u=this.decode(e);let p=this.texData.get(u.dataId);l=this.gpgpu.createBufferFromTexture(p.texture,...yc(r))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let c;if(s==="complex64"){let p=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),f=p[0],m=p[1];c=R.mergeRealAndImagArrays(f,m)}else if(l==null)c=this.getValuesFromTexture(e);else{let p=v.sizeFromShape(r);c=this.gpgpu.downloadFloat32MatrixFromBuffer(l,p)}u!=null&&this.disposeIntermediateTensorInfo(u);let h=this.convertAndCacheOnCPU(e,c),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(p=>p(h)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Pr().removeDataId(e,this),this.pendingDeletes--),h}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return Ue(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],r=!1;this.programTimersStack==null?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e();let a=v.flatten(this.activeTimers.map(o=>o.query)).filter(o=>o!=null),s=v.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,r&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(a);i.kernelMs=v.sum(o),i.getExtraProfileInfo=()=>o.map((l,u)=>({name:s[u],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:r,usage:a,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(r,n),this.textureManager.releaseTexture(t,r,a,s)));let u=this.texData.get(e);u.texture=null,u.texShape=null,u.isPacked=!1,u.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return J().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Pr().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=CL){let n=this.getCPUBackend();return!J().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(r=>this.texData.get(r.dataId).texture==null&&v.sizeFromShape(r.shape)0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:r}=this.makeTensorInfo(e,t,n);return Pr().makeTensorFromDataId(r,e,t,this)}unpackTensor(e){let t=new IL(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new cL(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[ki(e.shape),...Ii(e.shape)],r={dtype:e.dtype,shape:n,dataId:e.dataId},a=[ki(t),...Ii(t)],s=new Vb(a,n),i=!0,o=this.runWebGLProgram(s,[r],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:r,dtype:a}=t,s=Ap(r),i;n?i=new Uz(s):i=new Vz(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:a,dataId:e}],a,null,o);return{dtype:a,shape:r,dataId:l.dataId}}runWebGLProgram(e,t,n,r,a=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===mc.DENSE){let m=yc(e.outputShape);i.texShape=m.map(A=>A*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),v.sizeFromShape(s.shape)===0)return i.values=v.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let A=this.texData.get(m.dataId);if(A.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=J().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:A.values};e.packedInputs&&(A.isPacked=!0,A.shape=m.shape)}else if(!!A.isPacked!=!!e.packedInputs)m=A.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),A=this.texData.get(m.dataId);else if(A.isPacked&&!fc(A.shape,m.shape)){let y=m,g=m.shape;m.shape=A.shape,m=this.packedReshape(m,g),o.push(m),A=this.texData.get(m.dataId),y.shape=g}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:A,isUniform:!1}});this.uploadToGPU(s.dataId);let u={shape:s.shape,texData:i,isUniform:!1},c=MP(e,l,u),h=this.getAndSaveBinary(c,()=>RP(this.gpgpu,e,l,u)),d=this.activeTimers!=null,p;d&&(p=this.startTimer()),FP(this.gpgpu,h,l,u,r),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(p=this.endTimer(p),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(p)}));let f=J().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!J().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&a===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,r,a=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,r,a)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(J().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=B(()=>{if(!J().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=J().getBool("DEBUG");J().set("DEBUG",!1);let t=this.abs(Ie(1e-8)).dataSync()[0];if(J().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?SL:TL}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:r,values:a,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,u;l&&(u=v.now());let c=t.texShape;if(c==null&&(c=ub(n,o),t.texShape=c),a!=null){let h=Ap(n),d,p=c[1],f=c[0],m=a instanceof Uint8Array;o?([p,f]=Ml(c[0],c[1]),d=new qz(h,[f,p],m)):d=new Gz(h,[f,p],m);let A=this.makeTensorInfo([f,p],r);m?this.texData.get(A.dataId).usage=tr.PIXELS:this.texData.get(A.dataId).usage=tr.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(A.dataId),p,f,a);let y=!0,g=this.runWebGLProgram(d,[A],r,null,y),b=this.texData.get(g.dataId);t.texture=b.texture,t.texShape=b.texShape,t.isPacked=b.isPacked,t.usage=b.usage,this.disposeIntermediateTensorInfo(A),this.texData.delete(g.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-u)}else{let h=this.acquireTexture(c,i,r,o);t.texture=h}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:r}=n;return this.releaseGPUData(e),t!=null&&(n.values=ML(t,r)),n.values}acquireTexture(e,t,n,r){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${a} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,r)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}};Ll.nextDataId=0;function ML(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let r=0;rnew Ll,2);var $L={forceHalfFloat:Xb},Kb=` + `}},SL=Hr.whereImpl,TL=1e-7,EL=1e-4,mA={};function CL(e){return e in mA||(mA[e]={}),mA[e]}var RL=128,FL=600;function ML(){return J().global.screen==null?1024:J().global.screen.height*J().global.screen.width*window.devicePixelRatio*FL/1024/1024}var Ll=class extends fu{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!J().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Gr(J().getNumber("WEBGL_VERSION"));this.binaryCache=CL(J().getNumber("WEBGL_VERSION")),this.gpgpu=new bp(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new fL(this.gpgpu),this.numMBBeforeWarning=ML(),this.texData=new Rh(this,Pr())}nextDataId(){return Ll.nextDataId++}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((J().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||J().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let r={id:this.nextDataId()};return this.texData.set(r,{shape:t,dtype:n,values:e,usage:tr.UPLOAD,refCount:1}),r}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,r,a){if(J().getBool("DEBUG")&&this.checkNumericalProblems(t),r==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:r,values:t,usage:tr.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:r,complexTensorInfos:a,slice:s,shape:i,isPacked:o}=t;if(s!=null){let h;o?h=new Pl(i,_p):h=new qa(i,_p);let d=this.runWebGLProgram(h,[{dataId:e,shape:i,dtype:r}],r),p=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),p}if(n!=null)return this.convertAndCacheOnCPU(e);if(r==="string")return n;let l=this.activeTimers!=null,u;l&&(u=v.now());let c;if(r==="complex64"){let h=this.readSync(a.real.dataId),d=this.readSync(a.imag.dataId);c=R.mergeRealAndImagArrays(h,d)}else c=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=v.now()-u),this.convertAndCacheOnCPU(e,c)}async read(e){if(this.pendingRead.has(e)){let p=this.pendingRead.get(e);return new Promise(f=>p.push(f))}let t=this.texData.get(e),{values:n,shape:r,slice:a,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(a!=null){let p;o?p=new Pl(r,_p):p=new qa(r,_p);let f=this.runWebGLProgram(p,[{dataId:e,shape:r,dtype:s}],s),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(!J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&J().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,u;if(s!=="complex64"&&J().get("WEBGL_BUFFER_SUPPORTED")){u=this.decode(e);let p=this.texData.get(u.dataId);l=this.gpgpu.createBufferFromTexture(p.texture,...yc(r))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let c;if(s==="complex64"){let p=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),f=p[0],m=p[1];c=R.mergeRealAndImagArrays(f,m)}else if(l==null)c=this.getValuesFromTexture(e);else{let p=v.sizeFromShape(r);c=this.gpgpu.downloadFloat32MatrixFromBuffer(l,p)}u!=null&&this.disposeIntermediateTensorInfo(u);let h=this.convertAndCacheOnCPU(e,c),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(p=>p(h)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Pr().removeDataId(e,this),this.pendingDeletes--),h}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return Ue(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],r=!1;this.programTimersStack==null?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e();let a=v.flatten(this.activeTimers.map(o=>o.query)).filter(o=>o!=null),s=v.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,r&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(a);i.kernelMs=v.sum(o),i.getExtraProfileInfo=()=>o.map((l,u)=>({name:s[u],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:r,usage:a,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(r,n),this.textureManager.releaseTexture(t,r,a,s)));let u=this.texData.get(e);u.texture=null,u.texShape=null,u.isPacked=!1,u.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return J().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Pr().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=RL){let n=this.getCPUBackend();return!J().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(r=>this.texData.get(r.dataId).texture==null&&v.sizeFromShape(r.shape)0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:r}=this.makeTensorInfo(e,t,n);return Pr().makeTensorFromDataId(r,e,t,this)}unpackTensor(e){let t=new NL(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new hL(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[ki(e.shape),...Ii(e.shape)],r={dtype:e.dtype,shape:n,dataId:e.dataId},a=[ki(t),...Ii(t)],s=new Ub(a,n),i=!0,o=this.runWebGLProgram(s,[r],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:r,dtype:a}=t,s=Ap(r),i;n?i=new Hz(s):i=new Uz(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:a,dataId:e}],a,null,o);return{dtype:a,shape:r,dataId:l.dataId}}runWebGLProgram(e,t,n,r,a=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===mc.DENSE){let m=yc(e.outputShape);i.texShape=m.map(A=>A*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),v.sizeFromShape(s.shape)===0)return i.values=v.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let A=this.texData.get(m.dataId);if(A.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=J().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:A.values};e.packedInputs&&(A.isPacked=!0,A.shape=m.shape)}else if(!!A.isPacked!=!!e.packedInputs)m=A.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),A=this.texData.get(m.dataId);else if(A.isPacked&&!fc(A.shape,m.shape)){let y=m,g=m.shape;m.shape=A.shape,m=this.packedReshape(m,g),o.push(m),A=this.texData.get(m.dataId),y.shape=g}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:A,isUniform:!1}});this.uploadToGPU(s.dataId);let u={shape:s.shape,texData:i,isUniform:!1},c=$P(e,l,u),h=this.getAndSaveBinary(c,()=>FP(this.gpgpu,e,l,u)),d=this.activeTimers!=null,p;d&&(p=this.startTimer()),MP(this.gpgpu,h,l,u,r),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(p=this.endTimer(p),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(p)}));let f=J().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!J().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&a===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,r,a=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,r,a)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(J().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=B(()=>{if(!J().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=J().getBool("DEBUG");J().set("DEBUG",!1);let t=this.abs(Ie(1e-8)).dataSync()[0];if(J().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?TL:EL}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:r,values:a,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,u;l&&(u=v.now());let c=t.texShape;if(c==null&&(c=cb(n,o),t.texShape=c),a!=null){let h=Ap(n),d,p=c[1],f=c[0],m=a instanceof Uint8Array;o?([p,f]=Ml(c[0],c[1]),d=new Xz(h,[f,p],m)):d=new qz(h,[f,p],m);let A=this.makeTensorInfo([f,p],r);m?this.texData.get(A.dataId).usage=tr.PIXELS:this.texData.get(A.dataId).usage=tr.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(A.dataId),p,f,a);let y=!0,g=this.runWebGLProgram(d,[A],r,null,y),b=this.texData.get(g.dataId);t.texture=b.texture,t.texShape=b.texShape,t.isPacked=b.isPacked,t.usage=b.usage,this.disposeIntermediateTensorInfo(A),this.texData.delete(g.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-u)}else{let h=this.acquireTexture(c,i,r,o);t.texture=h}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:r}=n;return this.releaseGPUData(e),t!=null&&(n.values=$L(t,r)),n.values}acquireTexture(e,t,n,r){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${a} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,r)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}};Ll.nextDataId=0;function $L(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let r=0;rnew Ll,2);var DL={forceHalfFloat:Kb},Zb=` if (isnan(a)) return a; if (isnan(b)) return b; `,Wl=class{constructor(e,t,n){this.variableNames=["A","B"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` @@ -989,21 +989,21 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}};function Bn(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var DL={kernelName:Rs,backendName:"webgl",kernelFunc:Bn};function Xa(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.makeTensorInfo(r.shape,"complex64"),i=n.texData.get(s.dataId),o=Bn({inputs:{x:r},backend:n}),l=Bn({inputs:{x:a},backend:n});return i.complexTensorInfos={real:o,imag:l},s}var OL={kernelName:Wh,backendName:"webgl",kernelFunc:Xa},Zb="return (a < 0.) ? b * a : a;",Yb=` + `}};function Bn(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var OL={kernelName:Rs,backendName:"webgl",kernelFunc:Bn};function Xa(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.makeTensorInfo(r.shape,"complex64"),i=n.texData.get(s.dataId),o=Bn({inputs:{x:r},backend:n}),l=Bn({inputs:{x:a},backend:n});return i.complexTensorInfos={real:o,imag:l},s}var zL={kernelName:Wh,backendName:"webgl",kernelFunc:Xa},Yb="return (a < 0.) ? b * a : a;",Jb=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function zL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r,i=n.makeTensorInfo([],"float32",v.createScalarValue(s,"float32")),o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new xc(Yb,a.shape,i.shape):new Wl(Zb,a.shape,i.shape),l=n.runWebGLProgram(o,[a,i],a.dtype);return n.disposeIntermediateTensorInfo(i),l}var PL={kernelName:Fs,backendName:"webgl",kernelFunc:zL},Jb="return (a < 0.) ? b * a : a;",Qb=` +`;function PL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r,i=n.makeTensorInfo([],"float32",v.createScalarValue(s,"float32")),o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new xc(Jb,a.shape,i.shape):new Wl(Yb,a.shape,i.shape),l=n.runWebGLProgram(o,[a,i],a.dtype);return n.disposeIntermediateTensorInfo(i),l}var LL={kernelName:Fs,backendName:"webgl",kernelFunc:PL},Qb="return (a < 0.) ? b * a : a;",e_=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function LL(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new xc(Qb,r.shape,a.shape):new Wl(Jb,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)}var WL={kernelName:Hs,backendName:"webgl",kernelFunc:LL},e_="if (isnan(x)) return x;",BL=` +`;function WL(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new xc(e_,r.shape,a.shape):new Wl(Qb,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)}var BL={kernelName:Hs,backendName:"webgl",kernelFunc:WL},t_="if (isnan(x)) return x;",VL=` if (isnan(a)) return a; if (isnan(b)) return b; -`,VL=` +`,UL=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function Ye({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:r}){return({inputs:a,backend:s})=>{let{x:i}=a,o=s,l=r||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let h=o.texData.get(i.dataId),d=n(h.values,l);return o.makeTensorInfo(i.shape,l,d)}let u=J().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,c;return u?c=new Pl(i.shape,t):c=new qa(i.shape,e),o.runWebGLProgram(c,[i],l)}}function on({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:r=!1,cpuKernelImpl:a,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:u}=i,c=o;if(r&&l.dtype==="complex64"){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=[[f.complexTensorInfos.real,m.complexTensorInfos.real],[f.complexTensorInfos.imag,m.complexTensorInfos.imag]].map(b=>{let[_,w]=b,x={dataId:_.dataId,dtype:_.dtype,shape:l.shape},N={dataId:w.dataId,dtype:w.dtype,shape:u.shape},S=new Wl(e,l.shape,u.shape);return c.runWebGLProgram(S,[x,N],lr(_.dtype,w.dtype))}),g=Xa({inputs:{real:A,imag:y},backend:c});return c.disposeIntermediateTensorInfo(A),c.disposeIntermediateTensorInfo(y),g}let h=s||lr(l.dtype,u.dtype);if(c.shouldExecuteOnCPU([l,u])&&a!=null){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=a(l.shape,u.shape,f.values,m.values,h),g=c.makeTensorInfo(y,h),b=c.texData.get(g.dataId);return b.values=A,g}let d=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,p;return d?p=new xc(t,l.shape,u.shape,n):p=new Wl(e,l.shape,u.shape),c.runWebGLProgram(p,[l,u],h)}}function kp(e,t=!1){if(e==="linear")return t?bL:yL;if(e==="relu")return t?vL:xL;if(e==="elu")return t?_L:gL;if(e==="relu6")return t?kL:wL;if(e==="prelu")return t?Qb:Jb;if(e==="leakyrelu")return t?Yb:Zb;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var t_=class{constructor(e,t,n,r=!1,a=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let u=r?e[1]:e[2],c=Math.ceil(u/2),h=r?"i * 2, rc.y":"rc.y, i * 2",d=a?"rc.z, i * 2":"i * 2, rc.z",p=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],m="",A="";i&&(o?m=`vec4 activation(vec4 a) { +`;function Ye({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:r}){return({inputs:a,backend:s})=>{let{x:i}=a,o=s,l=r||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let h=o.texData.get(i.dataId),d=n(h.values,l);return o.makeTensorInfo(i.shape,l,d)}let u=J().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,c;return u?c=new Pl(i.shape,t):c=new qa(i.shape,e),o.runWebGLProgram(c,[i],l)}}function on({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:r=!1,cpuKernelImpl:a,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:u}=i,c=o;if(r&&l.dtype==="complex64"){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=[[f.complexTensorInfos.real,m.complexTensorInfos.real],[f.complexTensorInfos.imag,m.complexTensorInfos.imag]].map(b=>{let[_,w]=b,x={dataId:_.dataId,dtype:_.dtype,shape:l.shape},N={dataId:w.dataId,dtype:w.dtype,shape:u.shape},S=new Wl(e,l.shape,u.shape);return c.runWebGLProgram(S,[x,N],lr(_.dtype,w.dtype))}),g=Xa({inputs:{real:A,imag:y},backend:c});return c.disposeIntermediateTensorInfo(A),c.disposeIntermediateTensorInfo(y),g}let h=s||lr(l.dtype,u.dtype);if(c.shouldExecuteOnCPU([l,u])&&a!=null){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=a(l.shape,u.shape,f.values,m.values,h),g=c.makeTensorInfo(y,h),b=c.texData.get(g.dataId);return b.values=A,g}let d=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,p;return d?p=new xc(t,l.shape,u.shape,n):p=new Wl(e,l.shape,u.shape),c.runWebGLProgram(p,[l,u],h)}}function kp(e,t=!1){if(e==="linear")return t?_L:gL;if(e==="relu")return t?kL:wL;if(e==="elu")return t?vL:xL;if(e==="relu6")return t?IL:bL;if(e==="prelu")return t?e_:Qb;if(e==="leakyrelu")return t?Jb:Yb;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var n_=class{constructor(e,t,n,r=!1,a=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let u=r?e[1]:e[2],c=Math.ceil(u/2),h=r?"i * 2, rc.y":"rc.y, i * 2",d=a?"rc.z, i * 2":"i * 2, rc.z",p=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],m="",A="";i&&(o?m=`vec4 activation(vec4 a) { vec4 b = getPreluActivationWeightsAtOutCoords(); ${i} }`:l?m=`vec4 activation(vec4 a) { @@ -1042,7 +1042,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}},n_={REAL:"return areal * breal - aimag * bimag;",IMAG:"return areal * bimag + aimag * breal;"},r_=class{constructor(e,t,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` + `}},r_={REAL:"return areal * breal - aimag * bimag;",IMAG:"return areal * bimag + aimag * breal;"},a_=class{constructor(e,t,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` float binaryOpComplex( float areal, float aimag, float breal, float bimag) { ${e} @@ -1055,7 +1055,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float bimag = getBImagAtOutCoords(); setOutput(binaryOpComplex(areal, aimag, breal, bimag)); } - `}},a_="return a * b;";function s_(e){let{inputs:t,backend:n}=e,{a:r,b:a}=t,s=R.upcastType(r.dtype,a.dtype);if(r.dtype==="complex64"){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),u=new r_(n_.REAL,r.shape,a.shape),c=new r_(n_.IMAG,r.shape,a.shape),h=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:r.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:r.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:a.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:a.shape}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Xa({inputs:{real:d,imag:p},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}if(n.shouldExecuteOnCPU([r,a])){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),[u,c]=KP(r.shape,a.shape,o.values,l.values,s),h=n.makeTensorInfo(c,s),d=n.texData.get(h.dataId);return d.values=u,h}let i;return J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new xc(a_,r.shape,a.shape):i=new Wl(a_,r.shape,a.shape),n.runWebGLProgram(i,[r,a],s)}var UL={kernelName:Ws,backendName:"webgl",kernelFunc:s_};function HL(e,t,n){let r=[ki(e.shape),...Ii(e.shape)],a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[ki(t),...Ii(t)],i=new Vb(s,r),o=!0,l=n.runWebGLProgram(i,[a],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function xe(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=n,o=v.sizeFromShape(a.shape),l=v.inferFromImplicitShape(s,o),u=v.sizeFromShape(l);v.assert(o===u,()=>`The new shape (${l}) has ${u} elements and the old shape (${a.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let c=i.texData.get(a.dataId);return c.isPacked&&!fc(a.shape,l)&&!(c.texture!==null&&fc(c.shape,l))?HL(a,l,i):(i.incRef(a.dataId),{dataId:a.dataId,shape:l,dtype:a.dtype})}var jL={kernelName:Ho,backendName:"webgl",kernelFunc:xe},i_=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let c=1/t;l=`sumValue += dot(values * ${v.isInt(c)?c.toPrecision(2):c}, ones);`}let u="";a%n>0&&(u=` + `}},s_="return a * b;";function i_(e){let{inputs:t,backend:n}=e,{a:r,b:a}=t,s=R.upcastType(r.dtype,a.dtype);if(r.dtype==="complex64"){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),u=new a_(r_.REAL,r.shape,a.shape),c=new a_(r_.IMAG,r.shape,a.shape),h=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:r.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:r.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:a.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:a.shape}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Xa({inputs:{real:d,imag:p},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}if(n.shouldExecuteOnCPU([r,a])){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),[u,c]=ZP(r.shape,a.shape,o.values,l.values,s),h=n.makeTensorInfo(c,s),d=n.texData.get(h.dataId);return d.values=u,h}let i;return J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new xc(s_,r.shape,a.shape):i=new Wl(s_,r.shape,a.shape),n.runWebGLProgram(i,[r,a],s)}var HL={kernelName:Ws,backendName:"webgl",kernelFunc:i_};function jL(e,t,n){let r=[ki(e.shape),...Ii(e.shape)],a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[ki(t),...Ii(t)],i=new Ub(s,r),o=!0,l=n.runWebGLProgram(i,[a],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function xe(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=n,o=v.sizeFromShape(a.shape),l=v.inferFromImplicitShape(s,o),u=v.sizeFromShape(l);v.assert(o===u,()=>`The new shape (${l}) has ${u} elements and the old shape (${a.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let c=i.texData.get(a.dataId);return c.isPacked&&!fc(a.shape,l)&&!(c.texture!==null&&fc(c.shape,l))?jL(a,l,i):(i.incRef(a.dataId),{dataId:a.dataId,shape:l,dtype:a.dtype})}var GL={kernelName:Ho,backendName:"webgl",kernelFunc:xe},o_=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let c=1/t;l=`sumValue += dot(values * ${v.isInt(c)?c.toPrecision(2):c}, ones);`}let u="";a%n>0&&(u=` if (inIdx < 0 || inIdx >= ${a}) { return 0.0; } @@ -1108,7 +1108,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, } setOutput(sumValue); } - `}},GL=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let u=Math.floor(n/4)*4,c=n%4,h=` + `}},qL=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let u=Math.floor(n/4)*4,c=n%4,h=` if (${t==="sum"}) { sumValue += dot(values, ones); } else if (${t==="prod"}) { @@ -1193,12 +1193,12 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, } setOutput(${l}); } - `}};function qL(e){let t=[];for(;t.length===0||t[t.length-1].outSize!==1;){let n=t.length?t[t.length-1].outSize:e[1],r=R.computeOptimalWindowSize(n);t.push({inSize:n,windowSize:r,outSize:Math.ceil(n/r)})}return t}function Ei(e,t,n,r){let a=qL(e.shape),s=e;for(let i=0;i6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t);for(let a=0;a6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let r=dt(this.rank),a=Bb("rc",this.rank),s=new Array(this.rank);for(let u=0;u6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t);for(let a=0;a6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let r=dt(this.rank),a=Vb("rc",this.rank),s=new Array(this.rank);for(let u=0;u=2&&c>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${A}).`);let _=(y>g?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([p,f]);v.assert(h===d,()=>`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${r} must match.`);let w=n?[y,h,p]:[y,p,h],x=r?[g,f,d]:[g,d,f],N=xe({inputs:{x:e},backend:a,attrs:{shape:w}}),S=xe({inputs:{x:t},backend:a,attrs:{shape:x}}),T=[N,S],M=Math.max(y,g),D=n?N.shape[1]:N.shape[2],z=s!=null,W=i!=null,U=l==="leakyrelu",H=l!=null?kp(l,!0):null,X=z||W||U||H!=null,j;if((p===1||f===1)&&D>o_&&X===!1){let Y=N,se=S;n&&(Y=Cn({inputs:{x:N},backend:a,attrs:{perm:[0,2,1]}}),T.push(Y)),r&&(se=Cn({inputs:{x:S},backend:a,attrs:{perm:[0,2,1]}}),T.push(se));let te=f!==1,oe=f===1,Q=Y;te&&(Q=xe({inputs:{x:Y},backend:a,attrs:{shape:[M,D,1]}}),T.push(Q));let pe=f===1?2:1,le=se;oe&&(le=xe({inputs:{x:se},backend:a,attrs:{shape:[M,1,D]}}),T.push(le));let Ae=s_({inputs:{a:Q,b:le},backend:a});j=AA({inputs:{x:Ae},backend:a,attrs:{axis:pe,keepDims:!0}}),T.push(Ae)}else{let Y=lr(e.dtype,t.dtype),se=new t_(w,x,[M,p,f],n,r,z,H,W,U),te=[N,S];if(s!=null&&te.push(s),W&&te.push(i),U){let oe=a.makeTensorInfo([],"float32",v.createScalarValue(o,"float32"));te.push(oe),T.push(oe)}j=a.runWebGLProgram(se,te,Y)}let ee=xe({inputs:{x:j},backend:a,attrs:{shape:_}});T.push(j);for(let Y of T)a.disposeIntermediateTensorInfo(Y);return ee}function eW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r;return Np({a,b:s,transposeA:l,transposeB:u,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:h,activation:c})}var tW={kernelName:ii,backendName:"webgl",kernelFunc:eW},l_="return abs(x);";function nW(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])&&r.dtype!=="complex64"){let s=n.texData.get(r.dataId),i=Wb(s.values);return n.makeTensorInfo(r.shape,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Pl(r.shape,l_):a=new qa(r.shape,l_),n.runWebGLProgram(a,[r],r.dtype)}var rW={kernelName:so,backendName:"webgl",kernelFunc:nW},aW=Ir+` + `}};function Ip(e,t,n){let r=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new YL(e.shape,t):new ZL(e.shape,t);return n.runWebGLProgram(r,[e],e.dtype)}function JL(e,t,n,r){let a=t,s=e.shape.length,i=v.parseAxisParam(a,e.shape),o=i,l=R.getAxesPermutation(o,s),u=l!=null,c=e;u&&(c=Ip(e,l,r),o=R.getInnerMostAxes(o.length,s)),R.assertAxesAreInnerMostDims("sum",o,s);let[h,d]=R.computeOutAndReduceShapes(c.shape,o),p=h;n&&(p=R.expandShapeToKeepDim(h,i));let f=v.sizeFromShape(d),m=v.sizeFromShape(e.shape)/f,A=xe({inputs:{x:c},attrs:{shape:[m,f]},backend:r}),y=yd(e.dtype),g=Ei(A,y,"sum",r),b=xe({inputs:{x:g},attrs:{shape:p},backend:r});return r.disposeIntermediateTensorInfo(A),r.disposeIntermediateTensorInfo(g),u&&r.disposeIntermediateTensorInfo(c),b}function AA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;return JL(a,s,i,n)}var QL={kernelName:ei,backendName:"webgl",kernelFunc:AA};function Cn(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{perm:s}=r,i=n,o=a.shape.length,l=new Array(o);for(let c=0;c=2&&c>=2&&b,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${A}).`);let _=(y>g?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([p,f]);v.assert(h===d,()=>`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${r} must match.`);let w=n?[y,h,p]:[y,p,h],x=r?[g,f,d]:[g,d,f],N=xe({inputs:{x:e},backend:a,attrs:{shape:w}}),S=xe({inputs:{x:t},backend:a,attrs:{shape:x}}),T=[N,S],M=Math.max(y,g),D=n?N.shape[1]:N.shape[2],z=s!=null,W=i!=null,U=l==="leakyrelu",H=l!=null?kp(l,!0):null,X=z||W||U||H!=null,j;if((p===1||f===1)&&D>l_&&X===!1){let Y=N,se=S;n&&(Y=Cn({inputs:{x:N},backend:a,attrs:{perm:[0,2,1]}}),T.push(Y)),r&&(se=Cn({inputs:{x:S},backend:a,attrs:{perm:[0,2,1]}}),T.push(se));let te=f!==1,oe=f===1,Q=Y;te&&(Q=xe({inputs:{x:Y},backend:a,attrs:{shape:[M,D,1]}}),T.push(Q));let pe=f===1?2:1,le=se;oe&&(le=xe({inputs:{x:se},backend:a,attrs:{shape:[M,1,D]}}),T.push(le));let Ae=i_({inputs:{a:Q,b:le},backend:a});j=AA({inputs:{x:Ae},backend:a,attrs:{axis:pe,keepDims:!0}}),T.push(Ae)}else{let Y=lr(e.dtype,t.dtype),se=new n_(w,x,[M,p,f],n,r,z,H,W,U),te=[N,S];if(s!=null&&te.push(s),W&&te.push(i),U){let oe=a.makeTensorInfo([],"float32",v.createScalarValue(o,"float32"));te.push(oe),T.push(oe)}j=a.runWebGLProgram(se,te,Y)}let ee=xe({inputs:{x:j},backend:a,attrs:{shape:_}});T.push(j);for(let Y of T)a.disposeIntermediateTensorInfo(Y);return ee}function tW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r;return Np({a,b:s,transposeA:l,transposeB:u,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:h,activation:c})}var nW={kernelName:ii,backendName:"webgl",kernelFunc:tW},u_="return abs(x);";function rW(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])&&r.dtype!=="complex64"){let s=n.texData.get(r.dataId),i=Bb(s.values);return n.makeTensorInfo(r.shape,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Pl(r.shape,u_):a=new qa(r.shape,u_),n.runWebGLProgram(a,[r],r.dtype)}var aW={kernelName:so,backendName:"webgl",kernelFunc:rW},sW=Ir+` if (abs(x) > 1.) { return NAN; } return acos(x); -`,sW=Ye({opSnippet:aW}),iW={kernelName:io,backendName:"webgl",kernelFunc:sW},oW=Ir+` +`,iW=Ye({opSnippet:sW}),oW={kernelName:io,backendName:"webgl",kernelFunc:iW},lW=Ir+` if (x < 1.0) return NAN; -return log(x + sqrt(x * x - 1.0));`,lW=Ye({opSnippet:oW}),uW={kernelName:oo,backendName:"webgl",kernelFunc:lW},u_="return a + b;",cW=on({opSnippet:u_,packedOpSnippet:u_,supportsComplex:!0,cpuKernelImpl:$P}),hW={kernelName:Ra,backendName:"webgl",kernelFunc:cW},dW=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`float v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` +return log(x + sqrt(x * x - 1.0));`,uW=Ye({opSnippet:lW}),cW={kernelName:oo,backendName:"webgl",kernelFunc:uW},c_="return a + b;",hW=on({opSnippet:c_,packedOpSnippet:c_,supportsComplex:!0,cpuKernelImpl:DP}),dW={kernelName:Ra,backendName:"webgl",kernelFunc:hW},pW=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`float v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` void main() { ${n.join(` `)} @@ -1230,7 +1230,7 @@ return log(x + sqrt(x * x - 1.0));`,lW=Ye({opSnippet:oW}),uW={kernelName:oo,back float result = ${r}; setOutput(result); } - `}},pW=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`vec4 v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` + `}},fW=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`vec4 v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` void main() { ${n.join(` `)} @@ -1238,7 +1238,7 @@ return log(x + sqrt(x * x - 1.0));`,lW=Ye({opSnippet:oW}),uW={kernelName:oo,back vec4 result = ${r}; setOutput(result); } - `}};function Sp(e){let{inputs:t,backend:n}=e,r=t;if(r.length===1)return Bn({inputs:{x:r[0]},backend:n});if(r.length>J().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(r.length/2),l=Sp({inputs:r.slice(0,o),backend:n}),u=Sp({inputs:r.slice(o),backend:n});return Sp({inputs:[l,u],backend:n})}let a=r.map(o=>o.dtype).reduce((o,l)=>lr(o,l)),s=r.map(o=>o.shape),i=J().getBool("WEBGL_PACK")?new pW(r[0].shape,s):new dW(r[0].shape,s);return n.runWebGLProgram(i,r,a)}var fW={kernelName:fs,backendName:"webgl",kernelFunc:Sp};function mW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("all",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=Ei(m,m.dtype,"all",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=xe({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=xe({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var AW={kernelName:Dh,backendName:"webgl",kernelFunc:mW};function yW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("any",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=Ei(m,m.dtype,"any",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=xe({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=xe({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var gW={kernelName:Oh,backendName:"webgl",kernelFunc:yW},xW=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:r,batchSize:a,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` + `}};function Sp(e){let{inputs:t,backend:n}=e,r=t;if(r.length===1)return Bn({inputs:{x:r[0]},backend:n});if(r.length>J().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(r.length/2),l=Sp({inputs:r.slice(0,o),backend:n}),u=Sp({inputs:r.slice(o),backend:n});return Sp({inputs:[l,u],backend:n})}let a=r.map(o=>o.dtype).reduce((o,l)=>lr(o,l)),s=r.map(o=>o.shape),i=J().getBool("WEBGL_PACK")?new fW(r[0].shape,s):new pW(r[0].shape,s);return n.runWebGLProgram(i,r,a)}var mW={kernelName:fs,backendName:"webgl",kernelFunc:Sp};function AW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("all",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=Ei(m,m.dtype,"all",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=xe({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=xe({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var yW={kernelName:Dh,backendName:"webgl",kernelFunc:AW};function gW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("any",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=Ei(m,m.dtype,"any",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=xe({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=xe({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var xW={kernelName:Oh,backendName:"webgl",kernelFunc:gW},wW=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:r,batchSize:a,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` void main() { ivec2 coords = getOutputCoords(); int batch = coords[0]; @@ -1258,7 +1258,7 @@ return log(x + sqrt(x * x - 1.0));`,lW=Ye({opSnippet:oW}),uW={kernelName:oo,back } setOutput(float(bestIndex)); } - `}},wW=class{constructor(e,t,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,v.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let a=e[e.length-1],s=Math.ceil(a/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=dt(o),u=xn("coords",o),c,h;if(s===1){h=o+1;let N=dt(h);c=` + `}},bW=class{constructor(e,t,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,v.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let a=e[e.length-1],s=Math.ceil(a/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=dt(o),u=xn("coords",o),c,h;if(s===1){h=o+1;let N=dt(h);c=` ${N} sourceLocR = ${N}(${u.join()}, 0); ++${u[o-1]}; ${N} sourceLocG = ${N}(${u.join()}, 0); @@ -1320,23 +1320,23 @@ return log(x + sqrt(x * x - 1.0));`,lW=Ye({opSnippet:oW}),uW={kernelName:oo,back } setOutput(bestIndex); } - `}};function c_(e,t,n,r=null){let a=t.shape[0],s=t.shape[1];r!=null&&(a=r.shape[0],s=r.shape[1]);let i=R.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:a,outSize:Math.ceil(s/i)},l=new xW(o,n,r==null),u=[t];r!=null&&u.push(r);let c=e.runWebGLProgram(l,u,"int32");if(c.shape[1]===1)return c;let h=c_(e,t,n,c);return e.disposeIntermediateTensorInfo(c),h}function h_(e,t,n,r=null){let a=r!=null?r.shape:t.shape,s=a[a.length-1],i=R.computeOptimalWindowSize(s),o=new wW(a,i,n,r==null),l=r==null?[t]:[t,r],u=e.runWebGLProgram(o,l,"int32");if(u.shape.length===t.shape.length){let c=h_(e,t,n,u);return e.disposeIntermediateTensorInfo(u),c}return u}function d_(e,t,n,r){let a=[n];if(R.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),a,t.shape.length),!J().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=R.computeOutAndReduceShapes(t.shape,a),l=v.sizeFromShape(o),u=xe({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(u);let c=c_(e,u,r);s.push(c);let h=xe({inputs:{x:c},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),h}return h_(e,t,r)}function bW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=Cn({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let c=d_(n,l,i[0],"max");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var _W={kernelName:ms,backendName:"webgl",kernelFunc:bW};function vW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=Cn({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let c=d_(n,l,i[0],"min");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var kW={kernelName:yu,backendName:"webgl",kernelFunc:vW},IW=Ir+` + `}};function h_(e,t,n,r=null){let a=t.shape[0],s=t.shape[1];r!=null&&(a=r.shape[0],s=r.shape[1]);let i=R.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:a,outSize:Math.ceil(s/i)},l=new wW(o,n,r==null),u=[t];r!=null&&u.push(r);let c=e.runWebGLProgram(l,u,"int32");if(c.shape[1]===1)return c;let h=h_(e,t,n,c);return e.disposeIntermediateTensorInfo(c),h}function d_(e,t,n,r=null){let a=r!=null?r.shape:t.shape,s=a[a.length-1],i=R.computeOptimalWindowSize(s),o=new bW(a,i,n,r==null),l=r==null?[t]:[t,r],u=e.runWebGLProgram(o,l,"int32");if(u.shape.length===t.shape.length){let c=d_(e,t,n,u);return e.disposeIntermediateTensorInfo(u),c}return u}function p_(e,t,n,r){let a=[n];if(R.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),a,t.shape.length),!J().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=R.computeOutAndReduceShapes(t.shape,a),l=v.sizeFromShape(o),u=xe({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(u);let c=h_(e,u,r);s.push(c);let h=xe({inputs:{x:c},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),h}return d_(e,t,r)}function _W(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=Cn({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let c=p_(n,l,i[0],"max");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var vW={kernelName:ms,backendName:"webgl",kernelFunc:_W};function kW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=Cn({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let c=p_(n,l,i[0],"min");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var IW={kernelName:yu,backendName:"webgl",kernelFunc:kW},NW=Ir+` if (abs(x) > 1.) { return NAN; } return asin(x); -`,NW=Ye({opSnippet:IW}),SW={kernelName:lo,backendName:"webgl",kernelFunc:NW},TW=Ir+"return log(x + sqrt(x * x + 1.0));",EW=Ye({opSnippet:TW}),CW={kernelName:uo,backendName:"webgl",kernelFunc:EW},RW=Ir+` +`,SW=Ye({opSnippet:NW}),TW={kernelName:lo,backendName:"webgl",kernelFunc:SW},EW=Ir+"return log(x + sqrt(x * x + 1.0));",CW=Ye({opSnippet:EW}),RW={kernelName:uo,backendName:"webgl",kernelFunc:CW},FW=Ir+` return atan(x); -`,FW=Ye({opSnippet:RW}),MW={kernelName:co,backendName:"webgl",kernelFunc:FW},$W=BL+` +`,MW=Ye({opSnippet:FW}),$W={kernelName:co,backendName:"webgl",kernelFunc:MW},DW=VL+` return atan(a, b); -`,DW=` +`,OW=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+VL+` + `+UL+` return result; -`,OW=on({opSnippet:$W,packedOpSnippet:DW}),zW={kernelName:po,backendName:"webgl",kernelFunc:OW},PW=Ir+` +`,zW=on({opSnippet:DW,packedOpSnippet:OW}),PW={kernelName:po,backendName:"webgl",kernelFunc:zW},LW=Ir+` if ((x < -1.0) || (x > 1.0)) return NAN; -return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelName:ho,backendName:"webgl",kernelFunc:LW},wc=class{constructor(e,t,n,r=!1,a=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=e.padInfo.top,p=e.padInfo.left;this.outputShape=e.outShape;let f=t==="avg",m=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,A=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(f||(y="-1.0 / 1e-20"),n){let N=">=";this.userCode=` +return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,WW=Ye({opSnippet:LW}),BW={kernelName:ho,backendName:"webgl",kernelFunc:WW},wc=class{constructor(e,t,n,r=!1,a=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=e.padInfo.top,p=e.padInfo.left;this.outputShape=e.outShape;let f=t==="avg",m=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,A=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(f||(y="-1.0 / 1e-20"),n){let N=">=";this.userCode=` const ivec2 strides = ivec2(${i}, ${o}); const ivec2 pads = ivec2(${d}, ${p}); @@ -1640,7 +1640,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam setOutput(${w}); } } - `}};function BW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;Fl(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return Bn({inputs:{x:a},backend:n});let h=new wc(c,"avg",!1);return n.runWebGLProgram(h,[a],"float32")}var VW={kernelName:As,backendName:"webgl",kernelFunc:BW};function UW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,l,u),d=new yA(h,"avg",!1);return n.runWebGLProgram(d,[a],"float32")}var HW={kernelName:gu,backendName:"webgl",kernelFunc:UW},jW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,u=o-1-e.padInfo.top,c=l-1-e.padInfo.left,h=1/(t*n);this.userCode=` + `}};function VW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;Fl(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return Bn({inputs:{x:a},backend:n});let h=new wc(c,"avg",!1);return n.runWebGLProgram(h,[a],"float32")}var UW={kernelName:As,backendName:"webgl",kernelFunc:VW};function HW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,l,u),d=new yA(h,"avg",!1);return n.runWebGLProgram(d,[a],"float32")}var jW={kernelName:gu,backendName:"webgl",kernelFunc:HW},GW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,u=o-1-e.padInfo.top,c=l-1-e.padInfo.left,h=1/(t*n);this.userCode=` const ivec2 pads = ivec2(${u}, ${c}); const float avgMultiplier = float(${h}); @@ -1682,7 +1682,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}},GW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,h=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=c-1-e.padInfo.front,f=h-1-e.padInfo.top,m=d-1-e.padInfo.left,A=1/(t*n*r);this.userCode=` + `}},qW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,h=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=c-1-e.padInfo.front,f=h-1-e.padInfo.top,m=d-1-e.padInfo.left,A=1/(t*n*r);this.userCode=` const ivec3 pads = ivec3(${p}, ${f}, ${m}); const float avgMultiplier = float(${A}); @@ -1738,7 +1738,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}};function qW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new GW(d);return n.runWebGLProgram(p,[a],i.dtype)}var XW={kernelName:Ph,backendName:"webgl",kernelFunc:qW};function KW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;Fl([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=new jW(c);return n.runWebGLProgram(h,[a],i.dtype)}var ZW={kernelName:zh,backendName:"webgl",kernelFunc:KW};function YW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;return Np({a,b:s,transposeA:i,transposeB:o,backend:n})}var JW={kernelName:ys,backendName:"webgl",kernelFunc:YW},QW=class{constructor(e,t,n,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="0.0";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` + `}};function XW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new qW(d);return n.runWebGLProgram(p,[a],i.dtype)}var KW={kernelName:Ph,backendName:"webgl",kernelFunc:XW};function ZW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;Fl([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=new GW(c);return n.runWebGLProgram(h,[a],i.dtype)}var YW={kernelName:zh,backendName:"webgl",kernelFunc:ZW};function JW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;return Np({a,b:s,transposeA:i,transposeB:o,backend:n})}var QW={kernelName:ys,backendName:"webgl",kernelFunc:JW},eB=class{constructor(e,t,n,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="0.0";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -1748,7 +1748,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam float inv = scale * inversesqrt(variance + float(${s})); setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); } - `}},eB=class{constructor(e,t,n,r,a,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` + `}},tB=class{constructor(e,t,n,r,a,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { vec4 offset = ${i}; vec4 scale = ${o}; @@ -1761,7 +1761,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam setOutput((x - mean) * inv + offset); } - `}},tB=({inputs:e,backend:t,attrs:n})=>{let{x:r,mean:a,variance:s,offset:i,scale:o}=e;v.assert(a.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||a.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(o==null||a.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let u=[r,a,s],c=null;i!=null&&(c=i.shape,u.push(i));let h=null;o!=null&&(h=o.shape,u.push(o));let d=J().getBool("WEBGL_PACK_NORMALIZATION")?new eB(r.shape,a.shape,s.shape,c,h,l):new QW(r.shape,a.shape,s.shape,c,h,l);return t.runWebGLProgram(d,u,u[0].dtype)},nB={kernelName:Es,backendName:"webgl",kernelFunc:tB},aB=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=dt(this.rank),n=`uniform int start[${this.rank}];`,r=rB(this.rank),a,s=e.map((i,o)=>`sourceLoc.${gA[o]} = start[${o}] + coords.${gA[o]};`);a=` + `}},nB=({inputs:e,backend:t,attrs:n})=>{let{x:r,mean:a,variance:s,offset:i,scale:o}=e;v.assert(a.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||a.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(o==null||a.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let u=[r,a,s],c=null;i!=null&&(c=i.shape,u.push(i));let h=null;o!=null&&(h=o.shape,u.push(o));let d=J().getBool("WEBGL_PACK_NORMALIZATION")?new tB(r.shape,a.shape,s.shape,c,h,l):new eB(r.shape,a.shape,s.shape,c,h,l);return t.runWebGLProgram(d,u,u[0].dtype)},rB={kernelName:Es,backendName:"webgl",kernelFunc:nB},sB=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=dt(this.rank),n=`uniform int start[${this.rank}];`,r=aB(this.rank),a,s=e.map((i,o)=>`sourceLoc.${gA[o]} = start[${o}] + coords.${gA[o]};`);a=` ${t} sourceLoc; ${t} coords = getOutputCoords(); ${s.join(` @@ -1772,7 +1772,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${a} setOutput(getSource(${r})); } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},gA=["x","y","z","w","u","v"];function rB(e){if(e===1)return"sourceLoc";if(e<=6)return gA.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var sB=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=dt(this.rank),n=xn("coords",this.rank),r=xn("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":`vec2(${r.slice(-2).join()})`,s=`getChannel(getSource(${r.join()}), ${a})`,i=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},gA=["x","y","z","w","u","v"];function aB(e){if(e===1)return"sourceLoc";if(e<=6)return gA.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var iB=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=dt(this.rank),n=xn("coords",this.rank),r=xn("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":`vec2(${r.slice(-2).join()})`,s=`getChannel(getSource(${r.join()}), ${a})`,i=` result.x = ${s}; if (++${n[this.rank-1]} < ${e[this.rank-1]}) { ++${r[this.rank-1]}; @@ -1802,7 +1802,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${o} setOutput(result); } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function iB(e,t,n,r){let a=r.texData.get(e.dataId),s=r.makeTensorInfo(n,e.dtype),i=r.texData.get(s.dataId);Object.assign(i,a),i.refCount=1,i.shape=n,i.dtype=e.dtype;let o=fn.computeFlatOffset(t,v.computeStrides(e.shape));a.slice&&(o+=a.slice.flatOffset),i.slice={flatOffset:o,origDataId:a.slice&&a.slice.origDataId||e.dataId};let l=r.dataRefCount.get(i.slice.origDataId)||1;return r.dataRefCount.set(i.slice.origDataId,l+1),s}function bc(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r,[o,l]=fn.parseSliceParams(a,s,i);if(fn.assertParamsValid(a,o,l),v.sizeFromShape(l)===0)return n.makeTensorInfo(l,a.dtype,[]);if(n.shouldExecuteOnCPU([a])||a.dtype==="string"){let h=n.texData.get(a.dataId),d=eL(h.values,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,d)}let{isPacked:u}=n.texData.get(a.dataId),c=fn.isSliceContinous(a.shape,o,l);if(u||!c){let h=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new sB(l):new aB(l),d=h.getCustomSetupFunc(o);return n.runWebGLProgram(h,[a],a.dtype,d)}return n.uploadToGPU(a.dataId),iB(a,o,l,n)}var oB={kernelName:Xo,backendName:"webgl",kernelFunc:bc},lB=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;v.assert(a.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((g,b)=>g*b),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=[],f=xe({inputs:{x:a},backend:n,attrs:{shape:l}}),m=Cn({inputs:{x:f},backend:n,attrs:{perm:u}}),A=xe({inputs:{x:m},backend:n,attrs:{shape:c}}),y=bc({inputs:{x:A},backend:n,attrs:{begin:h,size:d}});return p.push(f),p.push(m),p.push(A),p.forEach(g=>n.disposeIntermediateTensorInfo(g)),y},uB={kernelName:xu,backendName:"webgl",kernelFunc:lB};function cB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.readSync(a.dataId),l=n.readSync(s.dataId),u=Lb(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var hB={kernelName:Lh,backendName:"webgl",kernelFunc:cB},dB="return float(a != b);",p_=on({opSnippet:dB,dtype:"bool"}),pB={kernelName:Oo,backendName:"webgl",kernelFunc:p_};function _c(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return Bn({inputs:{x:a.complexTensorInfos.real},backend:n})}var fB={kernelName:id,backendName:"webgl",kernelFunc:_c},mB="return float(int(x));";function AB(e,t){let n=new qa(e.shape,mB),r=t.runWebGLProgram(n,[e],"int32");return{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}function xA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Bn({inputs:{x:a},backend:n});let i=$t(a.shape),o=xA({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Xa({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=_c({inputs:{input:a},backend:n}),o=xA({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Bn({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return AB(a,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",v.getTypedArrayFromDType("bool",1)),o=p_({inputs:{a,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var yB={kernelName:gs,backendName:"webgl",kernelFunc:xA},f_="return ceil(x);",gB=Ye({opSnippet:f_,packedOpSnippet:f_,cpuKernelImpl:OP}),xB={kernelName:xs,backendName:"webgl",kernelFunc:gB},wB=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function oB(e,t,n,r){let a=r.texData.get(e.dataId),s=r.makeTensorInfo(n,e.dtype),i=r.texData.get(s.dataId);Object.assign(i,a),i.refCount=1,i.shape=n,i.dtype=e.dtype;let o=fn.computeFlatOffset(t,v.computeStrides(e.shape));a.slice&&(o+=a.slice.flatOffset),i.slice={flatOffset:o,origDataId:a.slice&&a.slice.origDataId||e.dataId};let l=r.dataRefCount.get(i.slice.origDataId)||1;return r.dataRefCount.set(i.slice.origDataId,l+1),s}function bc(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r,[o,l]=fn.parseSliceParams(a,s,i);if(fn.assertParamsValid(a,o,l),v.sizeFromShape(l)===0)return n.makeTensorInfo(l,a.dtype,[]);if(n.shouldExecuteOnCPU([a])||a.dtype==="string"){let h=n.texData.get(a.dataId),d=tL(h.values,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,d)}let{isPacked:u}=n.texData.get(a.dataId),c=fn.isSliceContinous(a.shape,o,l);if(u||!c){let h=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new iB(l):new sB(l),d=h.getCustomSetupFunc(o);return n.runWebGLProgram(h,[a],a.dtype,d)}return n.uploadToGPU(a.dataId),oB(a,o,l,n)}var lB={kernelName:Xo,backendName:"webgl",kernelFunc:bc},uB=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;v.assert(a.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((g,b)=>g*b),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=[],f=xe({inputs:{x:a},backend:n,attrs:{shape:l}}),m=Cn({inputs:{x:f},backend:n,attrs:{perm:u}}),A=xe({inputs:{x:m},backend:n,attrs:{shape:c}}),y=bc({inputs:{x:A},backend:n,attrs:{begin:h,size:d}});return p.push(f),p.push(m),p.push(A),p.forEach(g=>n.disposeIntermediateTensorInfo(g)),y},cB={kernelName:xu,backendName:"webgl",kernelFunc:uB};function hB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.readSync(a.dataId),l=n.readSync(s.dataId),u=Wb(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var dB={kernelName:Lh,backendName:"webgl",kernelFunc:hB},pB="return float(a != b);",f_=on({opSnippet:pB,dtype:"bool"}),fB={kernelName:Oo,backendName:"webgl",kernelFunc:f_};function _c(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return Bn({inputs:{x:a.complexTensorInfos.real},backend:n})}var mB={kernelName:id,backendName:"webgl",kernelFunc:_c},AB="return float(int(x));";function yB(e,t){let n=new qa(e.shape,AB),r=t.runWebGLProgram(n,[e],"int32");return{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}function xA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Bn({inputs:{x:a},backend:n});let i=$t(a.shape),o=xA({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Xa({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=_c({inputs:{input:a},backend:n}),o=xA({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Bn({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return yB(a,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",v.getTypedArrayFromDType("bool",1)),o=f_({inputs:{a,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var gB={kernelName:gs,backendName:"webgl",kernelFunc:xA},m_="return ceil(x);",xB=Ye({opSnippet:m_,packedOpSnippet:m_,cpuKernelImpl:zP}),wB={kernelName:xs,backendName:"webgl",kernelFunc:xB},bB=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1815,7 +1815,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},bB=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},_B=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1829,7 +1829,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function _B(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o;J().getBool("WEBGL_PACK_CLIP")?o=new bB(a.shape):o=new wB(a.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[a],a.dtype,l)}var vB={kernelName:Fa,backendName:"webgl",kernelFunc:_B},kB=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function vB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o;J().getBool("WEBGL_PACK_CLIP")?o=new _B(a.shape):o=new bB(a.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[a],a.dtype,l)}var kB={kernelName:Fa,backendName:"webgl",kernelFunc:vB},IB=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1842,7 +1842,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) ); } - `}};function m_(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}}function IB(e){let{inputs:t,backend:n}=e,{x:r}=t,a=n.texData.get(r.dataId),s=new kB(r.shape),i=[m_(r,a.complexTensorInfos.real),m_(r,a.complexTensorInfos.imag)];return n.runWebGLProgram(s,i,i[0].dtype)}var NB={kernelName:wu,backendName:"webgl",kernelFunc:IB},SB=class{constructor(e){this.outputShape=[],this.outputShape=R.computeOutShape(e,1),this.variableNames=e.map((s,i)=>`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${m}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let f=1;f`T${m}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let f=1;fs===r?`${a} - ${n}`:a).join()}function Ep(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return Bn({inputs:{x:a.complexTensorInfos.imag},backend:n})}var EB={kernelName:Qh,backendName:"webgl",kernelFunc:Ep};function Bl(e,t,n){let r=e[0].dtype;if(r==="complex64"){let u=e.map(f=>_c({inputs:{input:f},backend:n})),c=e.map(f=>Ep({inputs:{input:f},backend:n})),h=Bl(u,t,n),d=Bl(c,t,n),p=Xa({inputs:{real:h,imag:d},backend:n});return u.forEach(f=>n.disposeIntermediateTensorInfo(f)),c.forEach(f=>n.disposeIntermediateTensorInfo(f)),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),p}if(r==="string"){let{tensors2D:u,outShape:c}=A_(e,t,n),h=u.map(A=>({vals:n.readSync(A.dataId),shape:A.shape})),d=u[0].shape[0]===1,p=zP(h,c,r,d),f=R.computeOutShape(e.map(A=>A.shape),t),m=n.makeTensorInfo(f,r,p);return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),m}if(e.length>J().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let u=Math.floor(e.length/2),c=Bl(e.slice(0,u),t,n),h=Bl(e.slice(u),t,n),d=Bl([c,h],t,n);return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),d}if(J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let u=new TB(e.map(c=>c.shape),t);return n.runWebGLProgram(u,e,r)}let{tensors2D:a,outShape:s}=A_(e,t,n),i=new SB(a.map(u=>u.shape)),o=n.runWebGLProgram(i,a,r);a.forEach(u=>n.disposeIntermediateTensorInfo(u));let l=xe({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function A_(e,t,n){let r=R.computeOutShape(e.map(a=>a.shape),t);return{tensors2D:e.map(a=>xe({inputs:{x:a},attrs:{shape:[-1,v.sizeFromShape(a.shape.slice(t))]},backend:n})),outShape:r}}function y_(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,s=v.parseAxisParam(a,t[0].shape)[0],i=R.computeOutShape(t.map(u=>u.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(u=>v.sizeFromShape(u.shape)>0);if(o.length===1)return Bn({inputs:{x:o[0]},backend:n});let l=o.map(u=>u.shape);return R.assertParamsConsistent(l,s),Bl(o,s,n)}var CB={kernelName:fo,backendName:"webgl",kernelFunc:y_},g_=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,c=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4,m=e.dataFormat==="channelsLast",A=m?1:2,y=m?2:3,g=m?3:1,b="",_="";n&&(r?b=`float activation(float a) { + `}};function Tp(e,t,n){let r=e.indexOf(t);return e.map((a,s)=>s===r?`${a} - ${n}`:a).join()}function Ep(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return Bn({inputs:{x:a.complexTensorInfos.imag},backend:n})}var CB={kernelName:Qh,backendName:"webgl",kernelFunc:Ep};function Bl(e,t,n){let r=e[0].dtype;if(r==="complex64"){let u=e.map(f=>_c({inputs:{input:f},backend:n})),c=e.map(f=>Ep({inputs:{input:f},backend:n})),h=Bl(u,t,n),d=Bl(c,t,n),p=Xa({inputs:{real:h,imag:d},backend:n});return u.forEach(f=>n.disposeIntermediateTensorInfo(f)),c.forEach(f=>n.disposeIntermediateTensorInfo(f)),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),p}if(r==="string"){let{tensors2D:u,outShape:c}=y_(e,t,n),h=u.map(A=>({vals:n.readSync(A.dataId),shape:A.shape})),d=u[0].shape[0]===1,p=PP(h,c,r,d),f=R.computeOutShape(e.map(A=>A.shape),t),m=n.makeTensorInfo(f,r,p);return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),m}if(e.length>J().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let u=Math.floor(e.length/2),c=Bl(e.slice(0,u),t,n),h=Bl(e.slice(u),t,n),d=Bl([c,h],t,n);return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),d}if(J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let u=new EB(e.map(c=>c.shape),t);return n.runWebGLProgram(u,e,r)}let{tensors2D:a,outShape:s}=y_(e,t,n),i=new TB(a.map(u=>u.shape)),o=n.runWebGLProgram(i,a,r);a.forEach(u=>n.disposeIntermediateTensorInfo(u));let l=xe({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function y_(e,t,n){let r=R.computeOutShape(e.map(a=>a.shape),t);return{tensors2D:e.map(a=>xe({inputs:{x:a},attrs:{shape:[-1,v.sizeFromShape(a.shape.slice(t))]},backend:n})),outShape:r}}function g_(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,s=v.parseAxisParam(a,t[0].shape)[0],i=R.computeOutShape(t.map(u=>u.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(u=>v.sizeFromShape(u.shape)>0);if(o.length===1)return Bn({inputs:{x:o[0]},backend:n});let l=o.map(u=>u.shape);return R.assertParamsConsistent(l,s),Bl(o,s,n)}var RB={kernelName:fo,backendName:"webgl",kernelFunc:g_},x_=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,c=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4,m=e.dataFormat==="channelsLast",A=m?1:2,y=m?2:3,g=m?3:1,b="",_="";n&&(r?b=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); ${n} }`:a?b=`float activation(float a) { @@ -2022,7 +2022,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${_} setOutput(result); } - `}},RB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,r=e.padInfo.left,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.filterDepth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4;this.userCode=` + `}},FB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,r=e.padInfo.left,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.filterDepth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4;this.userCode=` const ivec3 strides = ivec3(${a}, ${s}, ${i}); const ivec3 pads = ivec3(${t}, ${n}, ${r}); @@ -2110,7 +2110,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}},FB=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:r,inChannels:a,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:u,dilationHeight:c,dataFormat:h}=n,{left:d,top:p}=o,f=a*r,m=gn(),A=h==="channelsLast",y=A?0:1,g=A?1:2,b="";for(let _=0;_<=1;_++)for(let w=0;w<=1;w++)b+=` + `}},MB=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:r,inChannels:a,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:u,dilationHeight:c,dataFormat:h}=n,{left:d,top:p}=o,f=a*r,m=gn(),A=h==="channelsLast",y=A?0:1,g=A?1:2,b="";for(let _=0;_<=1;_++)for(let w=0;w<=1;w++)b+=` blockIndex = rc.y + ${w}; pos = rc.x + ${_}; @@ -2154,7 +2154,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${m.output} = result; } - `}};function x_({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,u=r.texData.get(e.dataId),c=n.inChannels,h=l[0]*l[1]*l[2],d=n.outChannels,p=n.dataFormat==="channelsLast",f=!1,m=!1,A,y=[],g=(h===1||d===1)&&c>o_,b=l[2]%2!=0&&!!u.isPacked;if(g||!J().getBool("WEBGL_LAZILY_UNPACK")||!J().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!b){let _=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=xe({inputs:{x:e},backend:r,attrs:{shape:[1,_,n.inChannels]}}),x=xe({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}}),N=Np({a:w,b:x,transposeA:f,transposeB:m,backend:r,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i});A=xe({inputs:{x:N},backend:r,attrs:{shape:n.outShape}}),y.push(w),y.push(x),y.push(N)}else{let _=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),w={dataId:e.dataId,shape:[1,_,n.inChannels],dtype:e.dtype},x=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,v.assert(fc(u.shape,w.shape),()=>`packed reshape ${u.shape} to ${w.shape} isn't free`);let N=xe({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(N);let S=Np({a:w,b:N,backend:r,transposeA:f,transposeB:m,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),T=r.texData.get(S.dataId);v.assert(T.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=x,T.shape=n.outShape,A=Bn({inputs:{x:S},backend:r}),A.shape=n.outShape,y.push(S)}for(let _ of y)r.disposeIntermediateTensorInfo(_);return A}function w_({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:u,inChannels:c,outWidth:h,outHeight:d,dataFormat:p}=n,f=p==="channelsLast",m=l*u*c,A=d*h,y=[m,A],g=!0,b=!1,_=[],w=xe({inputs:{x:e},backend:r,attrs:{shape:e.shape.slice(1)}}),x=xe({inputs:{x:t},backend:r,attrs:{shape:[1,m,v.sizeFromShape(t.shape)/m]}});_.push(w),_.push(x);let N=new FB(y,w.shape,n),S=r.runWebGLProgram(N,[w],"float32"),T=xe({inputs:{x:S},backend:r,attrs:{shape:[1,y[0],y[1]]}});_.push(S),_.push(T);let M=a!=null,D=s!=null,z=o==="leakyrelu",W=o?kp(o,!0):null,U=new t_(T.shape,x.shape,[1,A,n.outChannels],g,b,M,W,D,z),H=[T,x];if(a&&H.push(a),D&&H.push(s),z){let Y=r.makeTensorInfo([],"float32",v.createScalarValue(i,"float32"));H.push(Y),_.push(Y)}let X=r.runWebGLProgram(U,H,"float32"),j=f?[1,d,h,n.outChannels]:[1,n.outChannels,d,h],ee=xe({inputs:{x:X},backend:r,attrs:{shape:j}});_.push(X);for(let Y of _)r.disposeIntermediateTensorInfo(Y);return ee}function MB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))p=x_({x:a,filter:s,convInfo:d,backend:n});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)p=w_({x:a,filter:s,convInfo:d,backend:n});else{let m=new g_(d);p=n.runWebGLProgram(m,[a,s],"float32")}let f=xe({inputs:{x:p},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(p),f}var $B={kernelName:ws,backendName:"webgl",kernelFunc:MB},DB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` + `}};function w_({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,u=r.texData.get(e.dataId),c=n.inChannels,h=l[0]*l[1]*l[2],d=n.outChannels,p=n.dataFormat==="channelsLast",f=!1,m=!1,A,y=[],g=(h===1||d===1)&&c>l_,b=l[2]%2!=0&&!!u.isPacked;if(g||!J().getBool("WEBGL_LAZILY_UNPACK")||!J().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!b){let _=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=xe({inputs:{x:e},backend:r,attrs:{shape:[1,_,n.inChannels]}}),x=xe({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}}),N=Np({a:w,b:x,transposeA:f,transposeB:m,backend:r,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i});A=xe({inputs:{x:N},backend:r,attrs:{shape:n.outShape}}),y.push(w),y.push(x),y.push(N)}else{let _=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),w={dataId:e.dataId,shape:[1,_,n.inChannels],dtype:e.dtype},x=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,v.assert(fc(u.shape,w.shape),()=>`packed reshape ${u.shape} to ${w.shape} isn't free`);let N=xe({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(N);let S=Np({a:w,b:N,backend:r,transposeA:f,transposeB:m,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),T=r.texData.get(S.dataId);v.assert(T.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=x,T.shape=n.outShape,A=Bn({inputs:{x:S},backend:r}),A.shape=n.outShape,y.push(S)}for(let _ of y)r.disposeIntermediateTensorInfo(_);return A}function b_({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:u,inChannels:c,outWidth:h,outHeight:d,dataFormat:p}=n,f=p==="channelsLast",m=l*u*c,A=d*h,y=[m,A],g=!0,b=!1,_=[],w=xe({inputs:{x:e},backend:r,attrs:{shape:e.shape.slice(1)}}),x=xe({inputs:{x:t},backend:r,attrs:{shape:[1,m,v.sizeFromShape(t.shape)/m]}});_.push(w),_.push(x);let N=new MB(y,w.shape,n),S=r.runWebGLProgram(N,[w],"float32"),T=xe({inputs:{x:S},backend:r,attrs:{shape:[1,y[0],y[1]]}});_.push(S),_.push(T);let M=a!=null,D=s!=null,z=o==="leakyrelu",W=o?kp(o,!0):null,U=new n_(T.shape,x.shape,[1,A,n.outChannels],g,b,M,W,D,z),H=[T,x];if(a&&H.push(a),D&&H.push(s),z){let Y=r.makeTensorInfo([],"float32",v.createScalarValue(i,"float32"));H.push(Y),_.push(Y)}let X=r.runWebGLProgram(U,H,"float32"),j=f?[1,d,h,n.outChannels]:[1,n.outChannels,d,h],ee=xe({inputs:{x:X},backend:r,attrs:{shape:j}});_.push(X);for(let Y of _)r.disposeIntermediateTensorInfo(Y);return ee}function $B(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))p=w_({x:a,filter:s,convInfo:d,backend:n});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)p=b_({x:a,filter:s,convInfo:d,backend:n});else{let m=new x_(d);p=n.runWebGLProgram(m,[a,s],"float32")}let f=xe({inputs:{x:p},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(p),f}var DB={kernelName:ws,backendName:"webgl",kernelFunc:$B},OB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2196,7 +2196,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}},OB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,u=s?2:3,c=s?3:1;this.userCode=` + `}},zB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,u=s?2:3,c=s?3:1;this.userCode=` const ivec2 pads = ivec2(${i}, ${o}); void main() { @@ -2249,7 +2249,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}},zB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` + `}},PB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` void main() { ivec5 coords = getOutputCoords(); int wF = coords.x; @@ -2291,7 +2291,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}},PB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,u=r-1-e.padInfo.left;this.userCode=` + `}},LB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,u=r-1-e.padInfo.left;this.userCode=` const ivec3 pads = ivec3(${o}, ${l}, ${u}); void main() { @@ -2348,12 +2348,12 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}};function LB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:u,filterShape:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,c,i,1,o,u,!1,h),p=new DB(d);return n.runWebGLProgram(p,[a,s],"float32")}var WB={kernelName:Bh,backendName:"webgl",kernelFunc:LB};function BB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(u),d=R.computeConv2DInfo(i,s.shape,o,1,l,c,!1,h),p=new OB(d);return n.runWebGLProgram(p,[a,s],"float32")}var VB={kernelName:bs,backendName:"webgl",kernelFunc:BB};function UB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeConv3DInfo(a.shape,s.shape,i,l,o),c=new RB(u);return n.runWebGLProgram(c,[a,s],"float32")}var HB={kernelName:bu,backendName:"webgl",kernelFunc:UB};function jB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,filterShape:l}=r,u=R.computeConv3DInfo(a.shape,l,i,1,o),c=new zB(u);return n.runWebGLProgram(c,[a,s],"float32")}var GB={kernelName:Vh,backendName:"webgl",kernelFunc:jB};function qB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{pad:i,strides:o,inputShape:l}=r,u=R.computeConv3DInfo(l,s.shape,o,1,i),c=new PB(u);return n.runWebGLProgram(c,[a,s],"float32")}var XB={kernelName:Uh,backendName:"webgl",kernelFunc:qB},KB=e_+` + `}};function WB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:u,filterShape:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,c,i,1,o,u,!1,h),p=new OB(d);return n.runWebGLProgram(p,[a,s],"float32")}var BB={kernelName:Bh,backendName:"webgl",kernelFunc:WB};function VB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(u),d=R.computeConv2DInfo(i,s.shape,o,1,l,c,!1,h),p=new zB(d);return n.runWebGLProgram(p,[a,s],"float32")}var UB={kernelName:bs,backendName:"webgl",kernelFunc:VB};function HB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeConv3DInfo(a.shape,s.shape,i,l,o),c=new FB(u);return n.runWebGLProgram(c,[a,s],"float32")}var jB={kernelName:bu,backendName:"webgl",kernelFunc:HB};function GB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,filterShape:l}=r,u=R.computeConv3DInfo(a.shape,l,i,1,o),c=new PB(u);return n.runWebGLProgram(c,[a,s],"float32")}var qB={kernelName:Vh,backendName:"webgl",kernelFunc:GB};function XB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{pad:i,strides:o,inputShape:l}=r,u=R.computeConv3DInfo(l,s.shape,o,1,i),c=new LB(u);return n.runWebGLProgram(c,[a,s],"float32")}var KB={kernelName:Uh,backendName:"webgl",kernelFunc:XB},ZB=t_+` return cos(x); -`,ZB=Ye({opSnippet:KB}),YB={kernelName:_s,backendName:"webgl",kernelFunc:ZB},JB=` +`,YB=Ye({opSnippet:ZB}),JB={kernelName:_s,backendName:"webgl",kernelFunc:YB},QB=` float e2x = exp(-x); return (e2x + 1.0 / e2x) / 2.0; -`,QB=Ye({opSnippet:JB}),eV={kernelName:mo,backendName:"webgl",kernelFunc:QB},tV=class{constructor(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[u]=t,[c,h]=n;this.outputShape=[u,c,h,l];let d=r==="bilinear"?1:0,[p,f]=[`${i-1}.0`,`${o-1}.0`],[m,A,y]=c>1?[`${(i-1)/(c-1)}`,"(y2-y1) * height_ratio",`y1*${p} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${p}`],[g,b,_]=h>1?[`${(o-1)/(h-1)}`,"(x2-x1) * width_ratio",`x1*${f} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${f}`];this.userCode=` +`,eV=Ye({opSnippet:QB}),tV={kernelName:mo,backendName:"webgl",kernelFunc:eV},nV=class{constructor(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[u]=t,[c,h]=n;this.outputShape=[u,c,h,l];let d=r==="bilinear"?1:0,[p,f]=[`${i-1}.0`,`${o-1}.0`],[m,A,y]=c>1?[`${(i-1)/(c-1)}`,"(y2-y1) * height_ratio",`y1*${p} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${p}`],[g,b,_]=h>1?[`${(o-1)/(h-1)}`,"(x2-x1) * width_ratio",`x1*${f} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${f}`];this.userCode=` const float height_ratio = float(${m}); const float width_ratio = float(${g}); void main() { @@ -2414,21 +2414,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam setOutput(newValue); } } - `}},nV=e=>{let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,c=new tV(a.shape,s.shape,o,l,u);return n.runWebGLProgram(c,[a,s,i],"float32")},rV={kernelName:Ao,backendName:"webgl",kernelFunc:nV},v_=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let r=e.length,a=t?"0.0":`getX(${b_(r,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` + `}},rV=e=>{let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,c=new nV(a.shape,s.shape,o,l,u);return n.runWebGLProgram(c,[a,s,i],"float32")},aV={kernelName:Ao,backendName:"webgl",kernelFunc:rV},k_=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let r=e.length,a=t?"0.0":`getX(${__(r,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { ${dt(r)} coords = getOutputCoords(); - int end = ${__(r,"coords")}; + int end = ${v_(r,"coords")}; float val = ${a}; int pow2 = int(pow(2.0, index)); if (${i}) { int idx = ${o}; - ${__(r,"coords")} = idx; - val += getX(${b_(r,"coords")}); + ${v_(r,"coords")} = idx; + val += getX(${__(r,"coords")}); } setOutput(val); } - `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function b_(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function __(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function aV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,exclusive:i,reverse:o}=r,l=a.shape.length,u=R.getAxesPermutation([s],l),c=a;u!=null&&(c=Cn({inputs:{x:a},backend:n,attrs:{perm:u}}));let h=R.getInnerMostAxes(1,l)[0];if(h!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${a.shape.length-1} but got axis=${s}`);let d=c.shape[h],p=Bn({inputs:{x:c},backend:n});for(let f=0;f<=Math.ceil(Math.log2(d))-1;f++){let m=new v_(c.shape,!1,o),A=m.getCustomSetupFunc(f),y=p;p=n.runWebGLProgram(m,[p],p.dtype,A),n.disposeIntermediateTensorInfo(y)}if(i){let f=new v_(c.shape,i,o),m=p;p=n.runWebGLProgram(f,[p],p.dtype),n.disposeIntermediateTensorInfo(m)}if(u!=null){let f=R.getUndoAxesPermutation(u),m=Cn({inputs:{x:p},backend:n,attrs:{perm:f}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(c),m}return p}var sV={kernelName:vs,backendName:"webgl",kernelFunc:aV};function iV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i,binaryOutput:o}=r;if(a.shape.length===1){let l=n.readSync(a.dataId),u=n.readSync(s.dataId),c=Lb(l,u,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}else if(a.shape.length===2){let l=n.bufferSync(a),u=n.bufferSync(s),c=DP(l,u,i,o);return n.makeTensorInfo(c.shape,s.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${a.shape.length}.`)}var oV={kernelName:Hh,backendName:"webgl",kernelFunc:iV},lV=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function __(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function v_(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function sV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,exclusive:i,reverse:o}=r,l=a.shape.length,u=R.getAxesPermutation([s],l),c=a;u!=null&&(c=Cn({inputs:{x:a},backend:n,attrs:{perm:u}}));let h=R.getInnerMostAxes(1,l)[0];if(h!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${a.shape.length-1} but got axis=${s}`);let d=c.shape[h],p=Bn({inputs:{x:c},backend:n});for(let f=0;f<=Math.ceil(Math.log2(d))-1;f++){let m=new k_(c.shape,!1,o),A=m.getCustomSetupFunc(f),y=p;p=n.runWebGLProgram(m,[p],p.dtype,A),n.disposeIntermediateTensorInfo(y)}if(i){let f=new k_(c.shape,i,o),m=p;p=n.runWebGLProgram(f,[p],p.dtype),n.disposeIntermediateTensorInfo(m)}if(u!=null){let f=R.getUndoAxesPermutation(u),m=Cn({inputs:{x:p},backend:n,attrs:{perm:f}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(c),m}return p}var iV={kernelName:vs,backendName:"webgl",kernelFunc:sV};function oV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i,binaryOutput:o}=r;if(a.shape.length===1){let l=n.readSync(a.dataId),u=n.readSync(s.dataId),c=Wb(l,u,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}else if(a.shape.length===2){let l=n.bufferSync(a),u=n.bufferSync(s),c=OP(l,u,i,o);return n.makeTensorInfo(c.shape,s.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${a.shape.length}.`)}var lV={kernelName:Hh,backendName:"webgl",kernelFunc:oV},uV=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2447,7 +2447,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam float result = ${this.getInputSamplingString()}; setOutput(result); } - `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function uV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=new lV(f,s,i);return n.runWebGLProgram(m,[a],a.dtype)}var cV={kernelName:yo,backendName:"webgl",kernelFunc:uV},k_=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=e.outChannels/e.inChannels,A="",y="";n&&(r?A=`float activation(float a) { + `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function cV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=new uV(f,s,i);return n.runWebGLProgram(m,[a],a.dtype)}var hV={kernelName:yo,backendName:"webgl",kernelFunc:cV},I_=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=e.outChannels/e.inChannels,A="",y="";n&&(r?A=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); ${n} }`:a?A=`float activation(float a) { @@ -2503,7 +2503,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${y} setOutput(result); } - `}},I_=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=f,A="int xR; int xC; int xCOffset;";for(let _=0;_`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let h=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!0),d;return J().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels==1?d=new I_(h):d=new k_(h),n.runWebGLProgram(d,[a,s],"float32")}var dV={kernelName:ks,backendName:"webgl",kernelFunc:hV},pV=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` + `}};function dV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l,dimRoundingMode:u}=r,c=l;c==null&&(c=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(i,c),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let h=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!0),d;return J().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels==1?d=new N_(h):d=new I_(h),n.runWebGLProgram(d,[a,s],"float32")}var pV={kernelName:ks,backendName:"webgl",kernelFunc:dV},fV=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2691,7 +2691,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}},fV=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` + `}},mV=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` const ivec2 pads = ivec2(${s}, ${i}); void main() { @@ -2736,13 +2736,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}};function mV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,filterShape:c}=r,h=R.computeConv2DInfo(a.shape,c,i,o,l,u,!0),d=new pV(h);return n.runWebGLProgram(d,[a,s],"float32")}var AV={kernelName:jh,backendName:"webgl",kernelFunc:mV};function yV(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,inputShape:c}=r,h=R.computeConv2DInfo(c,s.shape,i,o,l,u,!0),d=new fV(h);return n.runWebGLProgram(d,[a,s],"float32")}var gV={kernelName:Gh,backendName:"webgl",kernelFunc:yV},xV=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` + `}};function AV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,filterShape:c}=r,h=R.computeConv2DInfo(a.shape,c,i,o,l,u,!0),d=new fV(h);return n.runWebGLProgram(d,[a,s],"float32")}var yV={kernelName:jh,backendName:"webgl",kernelFunc:AV};function gV(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,inputShape:c}=r,h=R.computeConv2DInfo(c,s.shape,i,o,l,u,!0),d=new mV(h);return n.runWebGLProgram(d,[a,s],"float32")}var xV={kernelName:Gh,backendName:"webgl",kernelFunc:gV},wV=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` void main() { ivec2 coords = getOutputCoords(); float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; setOutput(val); } - `}};function wV(e){let{inputs:t,backend:n}=e,{x:r}=t,a=[...r.shape,...r.shape],s=v.sizeFromShape(r.shape),i=xe({inputs:{x:r},backend:n,attrs:{shape:[s]}}),o=new xV(s),l=n.runWebGLProgram(o,[i],i.dtype),u=xe({inputs:{x:l},backend:n,attrs:{shape:a}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),u}var bV={kernelName:qh,backendName:"webgl",kernelFunc:wV},_V=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:r,strideHeight:a,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:u}=e,{top:c,left:h}=r;this.userCode=` + `}};function bV(e){let{inputs:t,backend:n}=e,{x:r}=t,a=[...r.shape,...r.shape],s=v.sizeFromShape(r.shape),i=xe({inputs:{x:r},backend:n,attrs:{shape:[s]}}),o=new wV(s),l=n.runWebGLProgram(o,[i],i.dtype),u=xe({inputs:{x:l},backend:n,attrs:{shape:a}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),u}var _V={kernelName:qh,backendName:"webgl",kernelFunc:bV},vV=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:r,strideHeight:a,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:u}=e,{top:c,left:h}=r;this.userCode=` const ivec2 strides = ivec2(${a}, ${s}); const ivec2 pads = ivec2(${c}, ${h}); const float neg_infinity = -3.4e38; @@ -2780,7 +2780,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam float result = curVal; setOutput(result); } - `}};function vV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeDilation2DInfo(a.shape,s.shape,i,o,"NHWC",l),c,h=new _V(u);c=n.runWebGLProgram(h,[a,s],"float32");let d=xe({inputs:{x:c},backend:n,attrs:{shape:u.outShape}});return n.disposeIntermediateTensorInfo(c),d}var kV={kernelName:_u,backendName:"webgl",kernelFunc:vV},IV="return (x >= 0.0) ? x : (exp(x) - 1.0);",NV=` + `}};function kV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeDilation2DInfo(a.shape,s.shape,i,o,"NHWC",l),c,h=new vV(u);c=n.runWebGLProgram(h,[a,s],"float32");let d=xe({inputs:{x:c},backend:n,attrs:{shape:u.outShape}});return n.disposeIntermediateTensorInfo(c),d}var IV={kernelName:_u,backendName:"webgl",kernelFunc:kV},NV="return (x >= 0.0) ? x : (exp(x) - 1.0);",SV=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -2789,12 +2789,12 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,SV=Ye({opSnippet:IV,packedOpSnippet:NV}),TV={kernelName:go,backendName:"webgl",kernelFunc:SV},EV="return (b >= 1.0) ? a : a * (b + 1.0);",CV=` +`,TV=Ye({opSnippet:NV,packedOpSnippet:SV}),EV={kernelName:go,backendName:"webgl",kernelFunc:TV},CV="return (b >= 1.0) ? a : a * (b + 1.0);",RV=` vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`,RV=e=>{let{inputs:t,backend:n}=e,{dy:r,y:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new xc(CV,r.shape,a.shape):new Wl(EV,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)},FV={kernelName:Zh,backendName:"webgl",kernelFunc:RV},MV=` +`,FV=e=>{let{inputs:t,backend:n}=e,{dy:r,y:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new xc(RV,r.shape,a.shape):new Wl(CV,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)},MV={kernelName:Zh,backendName:"webgl",kernelFunc:FV},$V=` return vec4(equal(a, b)); -`,$V="return float(a == b);",DV=on({opSnippet:$V,packedOpSnippet:MV,dtype:"bool"}),OV={kernelName:wo,backendName:"webgl",kernelFunc:DV},zV=` +`,DV="return float(a == b);",OV=on({opSnippet:DV,packedOpSnippet:$V,dtype:"bool"}),zV={kernelName:wo,backendName:"webgl",kernelFunc:OV},PV=` // Error function is calculated approximately with elementary function. // See "Handbook of Mathematical Functions with Formulas, // Graphs, and Mathematical Tables", Abramowitz and Stegun. @@ -2809,7 +2809,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam x = abs(x); float t = 1.0 / (1.0 + p * x); return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`,PV=Ye({opSnippet:zV}),LV={kernelName:xo,backendName:"webgl",kernelFunc:PV},N_="return exp(x);",S_=Ye({opSnippet:N_,packedOpSnippet:N_,cpuKernelImpl:PP}),WV={kernelName:Ns,backendName:"webgl",kernelFunc:S_};function wA(e){let{inputs:t,attrs:n,backend:r}=e,{dim:a}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=a;return a<0&&(v.assert(-(i+1)<=a,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+a+1),o.splice(l,0,1),xe({inputs:{x:s},backend:r,attrs:{shape:o}})}var BV={kernelName:bo,backendName:"webgl",kernelFunc:wA},T_="return exp(x) - 1.0;",VV=Ye({opSnippet:T_,packedOpSnippet:T_,cpuKernelImpl:LP}),UV={kernelName:_o,backendName:"webgl",kernelFunc:VV},E_=class{constructor(e,t,n){this.variableNames=["real","imag"];let r=t[1];this.outputShape=t;let a=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${r}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` +`,LV=Ye({opSnippet:PV}),WV={kernelName:xo,backendName:"webgl",kernelFunc:LV},S_="return exp(x);",T_=Ye({opSnippet:S_,packedOpSnippet:S_,cpuKernelImpl:LP}),BV={kernelName:Ns,backendName:"webgl",kernelFunc:T_};function wA(e){let{inputs:t,attrs:n,backend:r}=e,{dim:a}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=a;return a<0&&(v.assert(-(i+1)<=a,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+a+1),o.splice(l,0,1),xe({inputs:{x:s},backend:r,attrs:{shape:o}})}var VV={kernelName:bo,backendName:"webgl",kernelFunc:wA},E_="return exp(x) - 1.0;",UV=Ye({opSnippet:E_,packedOpSnippet:E_,cpuKernelImpl:WP}),HV={kernelName:_o,backendName:"webgl",kernelFunc:UV},C_=class{constructor(e,t,n){this.variableNames=["real","imag"];let r=t[1];this.outputShape=t;let a=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${r}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` const float exponentMultiplier = ${a}; float unaryOpComplex(float real, float expR, float imag, float expI) { @@ -2842,13 +2842,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function C_(e,t,n){let r=n.texData.get(e.dataId),a=v.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=a/s,o=xe({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}),l=o.shape,u=new E_("real",l,t),c=new E_("imag",l,t),h=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:l},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:l}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Xa({inputs:{real:d,imag:p},backend:n});n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p);let m=xe({inputs:{x:f},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(f),m}function HV(e){let{inputs:t,backend:n}=e,{input:r}=t;return C_(r,!1,n)}var jV={kernelName:Yh,backendName:"webgl",kernelFunc:HV},GV=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` + `}};function R_(e,t,n){let r=n.texData.get(e.dataId),a=v.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=a/s,o=xe({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}),l=o.shape,u=new C_("real",l,t),c=new C_("imag",l,t),h=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:l},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:l}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Xa({inputs:{real:d,imag:p},backend:n});n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p);let m=xe({inputs:{x:f},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(f),m}function jV(e){let{inputs:t,backend:n}=e,{input:r}=t;return R_(r,!1,n)}var GV={kernelName:Yh,backendName:"webgl",kernelFunc:jV},qV=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` uniform float value; void main() { // Input can be obtained from uniform value. setOutput(value); } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function bA(e){let{backend:t,attrs:n}=e,{shape:r,value:a}=n,{dtype:s}=n;if(s=s||v.inferDtype(a),s==="string"){let i=v.getArrayFromDType(s,v.sizeFromShape(r));return i.fill(a),t.makeTensorInfo(r,s,i)}else{let i=new GV(r,a),o=i.getCustomSetupFunc(a);return t.runWebGLProgram(i,[],s,o)}}var qV={kernelName:vu,backendName:"webgl",kernelFunc:bA},XV=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function bA(e){let{backend:t,attrs:n}=e,{shape:r,value:a}=n,{dtype:s}=n;if(s=s||v.inferDtype(a),s==="string"){let i=v.getArrayFromDType(s,v.sizeFromShape(r));return i.fill(a),t.makeTensorInfo(r,s,i)}else{let i=new qV(r,a),o=i.getCustomSetupFunc(a);return t.runWebGLProgram(i,[],s,o)}}var XV={kernelName:vu,backendName:"webgl",kernelFunc:bA},KV=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -2862,7 +2862,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(outputValue); } - `}},KV={kernelName:vo,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,r=t,a=new XV(n.shape);return r.runWebGLProgram(a,[n],n.dtype)}},R_="return floor(x);",ZV=Ye({opSnippet:R_,packedOpSnippet:R_,cpuKernelImpl:WP}),YV={kernelName:Ss,backendName:"webgl",kernelFunc:ZV},JV=` + `}},ZV={kernelName:vo,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,r=t,a=new KV(n.shape);return r.runWebGLProgram(a,[n],n.dtype)}},F_="return floor(x);",YV=Ye({opSnippet:F_,packedOpSnippet:F_,cpuKernelImpl:BP}),JV={kernelName:Ss,backendName:"webgl",kernelFunc:YV},QV=` float s = sign(a) * sign(b); int ia = round(a); int ib = round(b); @@ -2872,7 +2872,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } else { return NAN; } -`,QV=` +`,eU=` ivec4 ia = round(a); ivec4 ib = round(b); bvec4 cond = notEqual(ib, ivec4(0)); @@ -2893,7 +2893,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam result[3] = idiv(ia[3], ib[3], s[3]); } return vec4(result); -`,eU=on({opSnippet:JV,packedOpSnippet:QV,dtype:"int32"}),tU={kernelName:Ts,backendName:"webgl",kernelFunc:eU},nU=class{constructor(e){this.variableNames=["A"];let t=gn(),[n,r]=e;this.outputShape=e,this.userCode=` +`,tU=on({opSnippet:QV,packedOpSnippet:eU,dtype:"int32"}),nU={kernelName:Ts,backendName:"webgl",kernelFunc:tU},rU=class{constructor(e){this.variableNames=["A"];let t=gn(),[n,r]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2915,7 +2915,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam setOutput(floor(value * 255.0 + 0.5)); } - `}},rU=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=gn(),[n,r]=e;this.outputShape=e,this.userCode=` + `}},aU=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=gn(),[n,r]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2949,7 +2949,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${t.output} = result; } - `}},sU={kernelName:dd,backendName:"webgl",kernelFunc:aU},Vl;function aU(e){let{inputs:t,backend:n,attrs:r}=e,{pixels:a}=t,{numChannels:s}=r,i=typeof HTMLVideoElement!="undefined"&&a instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&a instanceof HTMLImageElement,[l,u]=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],c=[u,l],h=[u,l,s];(o||i)&&(Vl==null&&(Vl=document.createElement("canvas").getContext("2d")),Vl.canvas.width=l,Vl.canvas.height=u,Vl.drawImage(a,0,0,l,u),a=Vl.canvas);let d=n.makeTensorInfo(c,"int32");n.texData.get(d.dataId).usage=tr.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),a);let p=J().getBool("WEBGL_PACK")?new rU(h):new nU(h),f=n.runWebGLProgram(p,[d],"int32");return n.disposeData(d.dataId),f}function iU(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=R.convertConv2DDataFormat(c),A=R.computeConv2DInfo(a.shape,s.shape,l,h,u,d,!1,m),y,g=[];if(A.filterHeight===1&&A.filterWidth===1&&A.dilationHeight===1&&A.dilationWidth===1&&A.strideHeight===1&&A.strideWidth===1&&(A.padInfo.type==="SAME"||A.padInfo.type==="VALID"))y=x_({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)y=w_({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else{let _=i!=null,w=o!=null,x=p==="leakyrelu",N=p?kp(p,!1):null,S=new g_(A,_,N,w,x),T=[a,s];if(i&&T.push(i),o&&T.push(o),x){let M=n.makeTensorInfo([],"float32",v.createScalarValue(f,"float32"));T.push(M),g.push(M)}y=n.runWebGLProgram(S,T,"float32")}let b=xe({inputs:{x:y},backend:n,attrs:{shape:A.outShape}});return g.push(y),g.forEach(_=>n.disposeIntermediateTensorInfo(_)),b}var oU={kernelName:oi,backendName:"webgl",kernelFunc:iU};function lU(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dimRoundingMode:h,activation:d,leakyreluAlpha:p}=r,f=[],m=c;m==null&&(m=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(l,m),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${m}'`);let A=R.computeConv2DInfo(a.shape,s.shape,l,m,u,h,!0),y=J().getBool("WEBGL_PACK_DEPTHWISECONV")&&A.strideWidth<=2&&A.outChannels/A.inChannels==1,g=d?kp(d,y):null,b=[a,s],_=i!=null,w=o!=null,x=d==="leakyrelu";if(_&&b.push(i),w&&b.push(o),x){let T=n.makeTensorInfo([],"float32",v.createScalarValue(p,"float32"));b.push(T),f.push(T)}let N;y?N=new I_(A,_,g,w,x):N=new k_(A,_,g,w,x);let S=n.runWebGLProgram(N,b,"float32");return f.forEach(T=>n.disposeIntermediateTensorInfo(T)),S}var uU={kernelName:li,backendName:"webgl",kernelFunc:lU},cU=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let r=dt(t.length),a=dt(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` + `}},iU={kernelName:dd,backendName:"webgl",kernelFunc:sU},Vl;function sU(e){let{inputs:t,backend:n,attrs:r}=e,{pixels:a}=t,{numChannels:s}=r,i=typeof HTMLVideoElement!="undefined"&&a instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&a instanceof HTMLImageElement,[l,u]=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],c=[u,l],h=[u,l,s];(o||i)&&(Vl==null&&(Vl=document.createElement("canvas").getContext("2d")),Vl.canvas.width=l,Vl.canvas.height=u,Vl.drawImage(a,0,0,l,u),a=Vl.canvas);let d=n.makeTensorInfo(c,"int32");n.texData.get(d.dataId).usage=tr.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),a);let p=J().getBool("WEBGL_PACK")?new aU(h):new rU(h),f=n.runWebGLProgram(p,[d],"int32");return n.disposeData(d.dataId),f}function oU(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=R.convertConv2DDataFormat(c),A=R.computeConv2DInfo(a.shape,s.shape,l,h,u,d,!1,m),y,g=[];if(A.filterHeight===1&&A.filterWidth===1&&A.dilationHeight===1&&A.dilationWidth===1&&A.strideHeight===1&&A.strideWidth===1&&(A.padInfo.type==="SAME"||A.padInfo.type==="VALID"))y=w_({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)y=b_({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else{let _=i!=null,w=o!=null,x=p==="leakyrelu",N=p?kp(p,!1):null,S=new x_(A,_,N,w,x),T=[a,s];if(i&&T.push(i),o&&T.push(o),x){let M=n.makeTensorInfo([],"float32",v.createScalarValue(f,"float32"));T.push(M),g.push(M)}y=n.runWebGLProgram(S,T,"float32")}let b=xe({inputs:{x:y},backend:n,attrs:{shape:A.outShape}});return g.push(y),g.forEach(_=>n.disposeIntermediateTensorInfo(_)),b}var lU={kernelName:oi,backendName:"webgl",kernelFunc:oU};function uU(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dimRoundingMode:h,activation:d,leakyreluAlpha:p}=r,f=[],m=c;m==null&&(m=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(l,m),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${m}'`);let A=R.computeConv2DInfo(a.shape,s.shape,l,m,u,h,!0),y=J().getBool("WEBGL_PACK_DEPTHWISECONV")&&A.strideWidth<=2&&A.outChannels/A.inChannels==1,g=d?kp(d,y):null,b=[a,s],_=i!=null,w=o!=null,x=d==="leakyrelu";if(_&&b.push(i),w&&b.push(o),x){let T=n.makeTensorInfo([],"float32",v.createScalarValue(p,"float32"));b.push(T),f.push(T)}let N;y?N=new N_(A,_,g,w,x):N=new I_(A,_,g,w,x);let S=n.runWebGLProgram(N,b,"float32");return f.forEach(T=>n.disposeIntermediateTensorInfo(T)),S}var cU={kernelName:li,backendName:"webgl",kernelFunc:uU},hU=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let r=dt(t.length),a=dt(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` ${r} strides = ${r}(${this.strides}); void main() { ${a} coords = getOutputCoords(); @@ -2960,21 +2960,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(getX(flattenIndex, coords[1])); } - `}};function hU(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=a.shape,i=s[s.length-1],[o,l,u,c]=R.prepareAndValidate(r,a),h=xe({inputs:{x:a},backend:n,attrs:{shape:[l,i]}}),d=xe({inputs:{x:r},backend:n,attrs:{shape:[v.sizeFromShape(r.shape)/u,u]}}),p=new cU(i,c,[l,u]),f=n.runWebGLProgram(p,[d,h],d.dtype),m=xe({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),m}var dU={kernelName:Io,backendName:"webgl",kernelFunc:hU},fU=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=dt(this.rank),r=pU(e,2);this.userCode=` + `}};function dU(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=a.shape,i=s[s.length-1],[o,l,u,c]=R.prepareAndValidate(r,a),h=xe({inputs:{x:a},backend:n,attrs:{shape:[l,i]}}),d=xe({inputs:{x:r},backend:n,attrs:{shape:[v.sizeFromShape(r.shape)/u,u]}}),p=new hU(i,c,[l,u]),f=n.runWebGLProgram(p,[d,h],d.dtype),m=xe({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),m}var pU={kernelName:Io,backendName:"webgl",kernelFunc:dU},mU=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=dt(this.rank),r=fU(e,2);this.userCode=` void main() { ${n} resRC = getOutputCoords(); setOutput(getA(${r})); } - `}};function pU(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=[];for(let a=0;an.disposeIntermediateTensorInfo(w)),n.makeTensorInfo(u.outputShape,_.dtype,_.values)}let m=new fU(d.shape,f),A=n.runWebGLProgram(m,[d,p],d.dtype);h.push(A);let y=xe({inputs:{x:A},backend:n,attrs:{shape:u.outputShape}});return h.forEach(g=>n.disposeIntermediateTensorInfo(g)),y}var AU={kernelName:ko,backendName:"webgl",kernelFunc:mU},yU="return float(a > b);",gU=` + `}};function fU(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=[];for(let a=0;an.disposeIntermediateTensorInfo(w)),n.makeTensorInfo(u.outputShape,_.dtype,_.values)}let m=new mU(d.shape,f),A=n.runWebGLProgram(m,[d,p],d.dtype);h.push(A);let y=xe({inputs:{x:A},backend:n,attrs:{shape:u.outputShape}});return h.forEach(g=>n.disposeIntermediateTensorInfo(g)),y}var yU={kernelName:ko,backendName:"webgl",kernelFunc:AU},gU="return float(a > b);",xU=` return vec4(greaterThan(a, b)); -`,xU=on({opSnippet:yU,packedOpSnippet:gU,cpuKernelImpl:VP,dtype:"bool"}),wU={kernelName:No,backendName:"webgl",kernelFunc:xU},bU="return float(a >= b);",_U=` +`,wU=on({opSnippet:gU,packedOpSnippet:xU,cpuKernelImpl:UP,dtype:"bool"}),bU={kernelName:No,backendName:"webgl",kernelFunc:wU},_U="return float(a >= b);",vU=` return vec4(greaterThanEqual(a, b)); -`,vU=on({opSnippet:bU,packedOpSnippet:_U,dtype:"bool"}),kU={kernelName:Cs,backendName:"webgl",kernelFunc:vU};function IU(e){let{inputs:t,backend:n}=e,{input:r}=t;return C_(r,!0,n)}var NU={kernelName:Jh,backendName:"webgl",kernelFunc:IU},SU="return float(!isnan(x) && !isinf(x));",TU=Ye({opSnippet:SU,dtype:"bool"}),EU={kernelName:So,backendName:"webgl",kernelFunc:TU},CU="return float(isinf(x));",RU=Ye({opSnippet:CU,dtype:"bool"}),FU={kernelName:To,backendName:"webgl",kernelFunc:RU},MU="return float(isnan(x));",$U=Ye({opSnippet:MU,dtype:"bool"}),DU={kernelName:Eo,backendName:"webgl",kernelFunc:$U},OU="return float(a < b);",zU=` +`,kU=on({opSnippet:_U,packedOpSnippet:vU,dtype:"bool"}),IU={kernelName:Cs,backendName:"webgl",kernelFunc:kU};function NU(e){let{inputs:t,backend:n}=e,{input:r}=t;return R_(r,!0,n)}var SU={kernelName:Jh,backendName:"webgl",kernelFunc:NU},TU="return float(!isnan(x) && !isinf(x));",EU=Ye({opSnippet:TU,dtype:"bool"}),CU={kernelName:So,backendName:"webgl",kernelFunc:EU},RU="return float(isinf(x));",FU=Ye({opSnippet:RU,dtype:"bool"}),MU={kernelName:To,backendName:"webgl",kernelFunc:FU},$U="return float(isnan(x));",DU=Ye({opSnippet:$U,dtype:"bool"}),OU={kernelName:Eo,backendName:"webgl",kernelFunc:DU},zU="return float(a < b);",PU=` return vec4(lessThan(a, b)); -`,PU=on({opSnippet:OU,packedOpSnippet:zU,cpuKernelImpl:UP,dtype:"bool"}),LU={kernelName:Co,backendName:"webgl",kernelFunc:PU},WU="return float(a <= b);",BU=` +`,LU=on({opSnippet:zU,packedOpSnippet:PU,cpuKernelImpl:HP,dtype:"bool"}),WU={kernelName:Co,backendName:"webgl",kernelFunc:LU},BU="return float(a <= b);",VU=` return vec4(lessThanEqual(a, b)); -`,VU=on({opSnippet:WU,packedOpSnippet:BU,dtype:"bool"}),UU={kernelName:Ro,backendName:"webgl",kernelFunc:VU};function HU(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=HP(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var jU={kernelName:ed,backendName:"webgl",kernelFunc:HU},GU=`if (x < 0.0) return NAN; - return log(x);`,qU=` +`,UU=on({opSnippet:BU,packedOpSnippet:VU,dtype:"bool"}),HU={kernelName:Ro,backendName:"webgl",kernelFunc:UU};function jU(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=jP(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var GU={kernelName:ed,backendName:"webgl",kernelFunc:jU},qU=`if (x < 0.0) return NAN; + return log(x);`,XU=` vec4 result = log(x); vec4 isNaN = vec4(lessThan(x, vec4(0.0))); result.r = isNaN.r == 1.0 ? NAN : result.r; @@ -2983,16 +2983,16 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam result.a = isNaN.a == 1.0 ? NAN : result.a; return result; -`,XU=Ye({opSnippet:GU,packedOpSnippet:qU,cpuKernelImpl:jP}),KU={kernelName:Ms,backendName:"webgl",kernelFunc:XU},ZU="return log(1.0 + x);",YU=Ye({opSnippet:ZU}),JU={kernelName:Fo,backendName:"webgl",kernelFunc:YU},QU="return float(a >= 1.0 && b >= 1.0);",eH=` +`,KU=Ye({opSnippet:qU,packedOpSnippet:XU,cpuKernelImpl:GP}),ZU={kernelName:Ms,backendName:"webgl",kernelFunc:KU},YU="return log(1.0 + x);",JU=Ye({opSnippet:YU}),QU={kernelName:Fo,backendName:"webgl",kernelFunc:JU},eH="return float(a >= 1.0 && b >= 1.0);",tH=` return vec4( vec4(greaterThanEqual(a, vec4(1.0))) * vec4(greaterThanEqual(b, vec4(1.0)))); -`,tH=on({opSnippet:QU,packedOpSnippet:eH,dtype:"bool"}),nH={kernelName:Mo,backendName:"webgl",kernelFunc:tH},rH="return float(!(x >= 1.0));",aH=Ye({opSnippet:rH}),sH={kernelName:ku,backendName:"webgl",kernelFunc:aH},iH="return float(a >= 1.0 || b >= 1.0);",oH=` +`,nH=on({opSnippet:eH,packedOpSnippet:tH,dtype:"bool"}),rH={kernelName:Mo,backendName:"webgl",kernelFunc:nH},aH="return float(!(x >= 1.0));",sH=Ye({opSnippet:aH}),iH={kernelName:ku,backendName:"webgl",kernelFunc:sH},oH="return float(a >= 1.0 || b >= 1.0);",lH=` return min( vec4(greaterThanEqual(a, vec4(1.0))) + vec4(greaterThanEqual(b, vec4(1.0))), vec4(1.0)); -`,lH=on({opSnippet:iH,packedOpSnippet:oH,dtype:"bool"}),uH={kernelName:Iu,backendName:"webgl",kernelFunc:lH},cH=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` +`,uH=on({opSnippet:oH,packedOpSnippet:lH,dtype:"bool"}),cH={kernelName:Iu,backendName:"webgl",kernelFunc:uH},hH=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3011,7 +3011,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam float val = x * ${o}; setOutput(val); } - `}},hH=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` + `}},dH=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords.x; @@ -3073,7 +3073,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam vec4 result = xAtOutputCoords * ${o}; setOutput(result); } - `}},dH=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r,u=J().getBool("WEBGL_PACK_NORMALIZATION")?new hH(a.shape,s,i,o,l):new cH(a.shape,s,i,o,l);return n.runWebGLProgram(u,[a],a.dtype)},pH={kernelName:Nu,backendName:"webgl",kernelFunc:dH},fH=class{constructor(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode=` + `}},pH=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r,u=J().getBool("WEBGL_PACK_NORMALIZATION")?new dH(a.shape,s,i,o,l):new hH(a.shape,s,i,o,l);return n.runWebGLProgram(u,[a],a.dtype)},fH={kernelName:Nu,backendName:"webgl",kernelFunc:pH},mH=class{constructor(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3128,14 +3128,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(result); } - `}},mH=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:u,beta:c}=r,h=new fH(a.shape,o,l,u,c);return n.runWebGLProgram(h,[a,s,i],a.dtype)},AH={kernelName:td,backendName:"webgl",kernelFunc:mH};function yH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=xe({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=Ei(i,e.dtype,"max",r),l=xe({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}function F_(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=n.shouldExecuteOnCPU([a]),p=a;if(h){if(d){let g=n.texData.get(p.dataId).values,b=new Array(o);for(let x=0;x{let{inputs:t,backend:n,attrs:r}=e,{x:a,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:u,beta:c}=r,h=new mH(a.shape,o,l,u,c);return n.runWebGLProgram(h,[a,s,i],a.dtype)},yH={kernelName:td,backendName:"webgl",kernelFunc:AH};function gH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=xe({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=Ei(i,e.dtype,"max",r),l=xe({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}function M_(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=n.shouldExecuteOnCPU([a]),p=a;if(h){if(d){let g=n.texData.get(p.dataId).values,b=new Array(o);for(let x=0;x`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return Bn({inputs:{x:a},backend:n});let h=new wc(c,"max",!1);return n.runWebGLProgram(h,[a],a.dtype)}var kH={kernelName:Os,backendName:"webgl",kernelFunc:vH};function IH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,u,l),d=new yA(h,"max",!1);return n.runWebGLProgram(d,[a],a.dtype)}var NH={kernelName:Su,backendName:"webgl",kernelFunc:IH},SH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=a-1-e.padInfo.top,o=s-1-e.padInfo.left,l=a*s-1;this.userCode=` +`,_H=on({opSnippet:wH,packedOpSnippet:bH,cpuKernelImpl:XP}),vH={kernelName:Ds,backendName:"webgl",kernelFunc:_H};function kH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;Fl(a,"maxPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return Bn({inputs:{x:a},backend:n});let h=new wc(c,"max",!1);return n.runWebGLProgram(h,[a],a.dtype)}var IH={kernelName:Os,backendName:"webgl",kernelFunc:kH};function NH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,u,l),d=new yA(h,"max",!1);return n.runWebGLProgram(d,[a],a.dtype)}var SH={kernelName:Su,backendName:"webgl",kernelFunc:NH},TH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=a-1-e.padInfo.top,o=s-1-e.padInfo.left,l=a*s-1;this.userCode=` const ivec2 pads = ivec2(${i}, ${o}); void main() { @@ -3181,7 +3181,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}},TH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=o-1-e.padInfo.front,h=l-1-e.padInfo.top,d=u-1-e.padInfo.left,p=o*l*u-1;this.userCode=` + `}},EH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=o-1-e.padInfo.front,h=l-1-e.padInfo.top,d=u-1-e.padInfo.left,p=o*l*u-1;this.userCode=` const ivec3 pads = ivec3(${c}, ${h}, ${d}); void main() { @@ -3245,14 +3245,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam } setOutput(dotProd); } - `}};function EH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new yA(d,"max",!0),f=n.runWebGLProgram(p,[i],i.dtype),m=new TH(d),A=n.runWebGLProgram(m,[a,f],i.dtype);return n.disposeIntermediateTensorInfo(f),A}var CH={kernelName:rd,backendName:"webgl",kernelFunc:EH};function RH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;Fl([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=!0,f=new wc(d,"max",p),m=n.runWebGLProgram(f,[o],o.dtype),A=new SH(d),y=n.runWebGLProgram(A,[a,m],o.dtype);return n.disposeIntermediateTensorInfo(m),y}var FH={kernelName:nd,backendName:"webgl",kernelFunc:RH};function MH(e,t,n,r){let a=new wc(n,"max",!1),s=r.runWebGLProgram(a,[e],"float32");a=new wc(n,"max",!0,!0,t);let i=r.runWebGLProgram(a,[e],"float32");return[s,i]}var $H={kernelName:ad,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;v.assert(r.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${r.shape.length}.`);let u=[1,1];v.assert(R.eitherStridesOrDilationsAreOne(s,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);let c=R.computePool2DInfo(r.shape,a,s,u,i),[h,d]=MH(r,o,c,l);return[h,d]}};function DH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=xe({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=Ei(i,"float32","mean",r),l=xe({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}var OH={kernelName:zs,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{keepDims:a,axis:s}=t,i=n,o=r.shape.length,l=v.parseAxisParam(s,r.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=i.shouldExecuteOnCPU([r]),p=[],f=r;if(h){if(d){let b=i.texData.get(f.dataId).values,_=new Array(o);for(let N=0;N<_.length;N++)_[N]=r.shape[c[N]];let w=fA(b,r.shape,r.dtype,c,_);f=i.makeTensorInfo(_,r.dtype);let x=i.texData.get(f.dataId);x.values=w}else f=Ip(r,c,i);p.push(f),u=R.getInnerMostAxes(u.length,o)}R.assertAxesAreInnerMostDims("sum",u,o);let[m,A]=R.computeOutAndReduceShapes(f.shape,u),y=m;a&&(y=R.expandShapeToKeepDim(m,l));let g=DH(f,A,y,i);for(let b of p)i.disposeIntermediateTensorInfo(b);return g}};function zH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=Ei(m,m.dtype,"min",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=xe({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=xe({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var PH={kernelName:Ps,backendName:"webgl",kernelFunc:zH},LH=Kb+` + `}};function CH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new yA(d,"max",!0),f=n.runWebGLProgram(p,[i],i.dtype),m=new EH(d),A=n.runWebGLProgram(m,[a,f],i.dtype);return n.disposeIntermediateTensorInfo(f),A}var RH={kernelName:rd,backendName:"webgl",kernelFunc:CH};function FH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;Fl([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=!0,f=new wc(d,"max",p),m=n.runWebGLProgram(f,[o],o.dtype),A=new TH(d),y=n.runWebGLProgram(A,[a,m],o.dtype);return n.disposeIntermediateTensorInfo(m),y}var MH={kernelName:nd,backendName:"webgl",kernelFunc:FH};function $H(e,t,n,r){let a=new wc(n,"max",!1),s=r.runWebGLProgram(a,[e],"float32");a=new wc(n,"max",!0,!0,t);let i=r.runWebGLProgram(a,[e],"float32");return[s,i]}var DH={kernelName:ad,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;v.assert(r.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${r.shape.length}.`);let u=[1,1];v.assert(R.eitherStridesOrDilationsAreOne(s,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);let c=R.computePool2DInfo(r.shape,a,s,u,i),[h,d]=$H(r,o,c,l);return[h,d]}};function OH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=xe({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=Ei(i,"float32","mean",r),l=xe({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}var zH={kernelName:zs,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{keepDims:a,axis:s}=t,i=n,o=r.shape.length,l=v.parseAxisParam(s,r.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=i.shouldExecuteOnCPU([r]),p=[],f=r;if(h){if(d){let b=i.texData.get(f.dataId).values,_=new Array(o);for(let N=0;N<_.length;N++)_[N]=r.shape[c[N]];let w=fA(b,r.shape,r.dtype,c,_);f=i.makeTensorInfo(_,r.dtype);let x=i.texData.get(f.dataId);x.values=w}else f=Ip(r,c,i);p.push(f),u=R.getInnerMostAxes(u.length,o)}R.assertAxesAreInnerMostDims("sum",u,o);let[m,A]=R.computeOutAndReduceShapes(f.shape,u),y=m;a&&(y=R.expandShapeToKeepDim(m,l));let g=OH(f,A,y,i);for(let b of p)i.disposeIntermediateTensorInfo(b);return g}};function PH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=Ei(m,m.dtype,"min",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=xe({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=xe({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var LH={kernelName:Ps,backendName:"webgl",kernelFunc:PH},WH=Zb+` return min(a, b); -`,WH=` +`,BH=` vec4 result = vec4(min(a, b)); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+vp+` return result; -`,BH=on({opSnippet:LH,packedOpSnippet:WH,cpuKernelImpl:XP}),VH={kernelName:Ls,backendName:"webgl",kernelFunc:BH},UH=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((u,c)=>u[0]+e[c]+u[1]);let r=e.length,a=dt(r),s=t.map(u=>u[0]).join(","),i=t.map((u,c)=>u[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),l=n==="reflect"?0:1;if(r===1){this.userCode=` +`,VH=on({opSnippet:WH,packedOpSnippet:BH,cpuKernelImpl:KP}),UH={kernelName:Ls,backendName:"webgl",kernelFunc:VH},HH=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((u,c)=>u[0]+e[c]+u[1]);let r=e.length,a=dt(r),s=t.map(u=>u[0]).join(","),i=t.map((u,c)=>u[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),l=n==="reflect"?0:1;if(r===1){this.userCode=` int start = ${s}; int end = ${i}; @@ -3281,7 +3281,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${a} coords = outC - start; setOutput(getX(${o})); } - `}},HH=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((p,f)=>p[0]+e[f]+p[1]);let r=e.length,a=dt(r),s=t.map(p=>p[0]).join(","),i=t.map((p,f)=>p[0]+e[f]).join(","),o=xn("rc",r),l=xn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=n==="reflect"?0:1,d="";if(r===1){let p=` + `}},jH=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((p,f)=>p[0]+e[f]+p[1]);let r=e.length,a=dt(r),s=t.map(p=>p[0]).join(","),i=t.map((p,f)=>p[0]+e[f]).join(","),o=xn("rc",r),l=xn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=n==="reflect"?0:1,d="";if(r===1){let p=` ${a} source = rc; if (source < start) { source = start * 2 - source - ${h}; @@ -3337,13 +3337,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam ${d} setOutput(result); } - `}},jH=({inputs:e,backend:t,attrs:n})=>{let{x:r}=e,{paddings:a,mode:s}=n,i=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new HH(r.shape,a,s):new UH(r.shape,a,s);return t.runWebGLProgram(i,[r],r.dtype)},GH={kernelName:Tu,backendName:"webgl",kernelFunc:jH},qH=`if (b == 0.0) return NAN; - return mod(a, b);`,XH=` + `}},GH=({inputs:e,backend:t,attrs:n})=>{let{x:r}=e,{paddings:a,mode:s}=n,i=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new jH(r.shape,a,s):new HH(r.shape,a,s);return t.runWebGLProgram(i,[r],r.dtype)},qH={kernelName:Tu,backendName:"webgl",kernelFunc:GH},XH=`if (b == 0.0) return NAN; + return mod(a, b);`,KH=` vec4 result = mod(a, b); vec4 isNaN = vec4(equal(b, vec4(0.0))); `+vp+` return result; -`,KH=on({opSnippet:qH,packedOpSnippet:XH}),ZH={kernelName:$o,backendName:"webgl",kernelFunc:KH},YH=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` +`,ZH=on({opSnippet:XH,packedOpSnippet:KH}),YH={kernelName:$o,backendName:"webgl",kernelFunc:ZH},JH=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` uniform float seed; void main() { @@ -3365,11 +3365,11 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,LW=Ye({opSnippet:PW}),WW={kernelNam // If no other event happened, last event happened. setOutput(float(${t-1})); } - `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},JH=` + `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},QH=` if (a == b) { return 1.0; }; -return a / b;`,QH=` +return a / b;`,ej=` // vec4 one = vec4(equal(a, b)); // return one + (vec4(1.0) - one) * a / b; vec4 result = a / b; @@ -3387,14 +3387,14 @@ return a / b;`,QH=` } return result; -`,M_=on({opSnippet:JH,packedOpSnippet:QH,checkOutOfBounds:!0}),ej={kernelName:Is,backendName:"webgl",kernelFunc:M_},$_="return a - b;",D_=on({opSnippet:$_,packedOpSnippet:$_,supportsComplex:!0,cpuKernelImpl:nL}),tj={kernelName:ri,backendName:"webgl",kernelFunc:D_};function O_(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=v.parseAxisParam([s],a.shape),o=F_({inputs:{x:a},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=R.expandShapeToKeepDim(o.shape,i),u=xe({inputs:{x:o},backend:n,attrs:{shape:l}}),c=D_({inputs:{a,b:u},backend:n}),h=S_({inputs:{x:c},backend:n}),d=AA({inputs:{x:h},backend:n,attrs:{axis:i,keepDims:!1}}),p=xe({inputs:{x:d},backend:n,attrs:{shape:l}}),f=M_({inputs:{a:h,b:p},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}var nj={kernelName:ti,backendName:"webgl",kernelFunc:O_};function rj(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r,l=o?a:O_({inputs:{logits:a},backend:n,attrs:{dim:a.shape.length-1}}),u=l.shape[0],c=l.shape[1],h=new YH(u,c,s),d=h.getCustomSetupFunc(i),p=n.runWebGLProgram(h,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),p}var aj={kernelName:sd,backendName:"webgl",kernelFunc:rj},z_="return -x;";function sj(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])){let s=n.texData.get(r.dataId),[i,o]=ZP(s.values,r.shape,r.dtype);return n.makeTensorInfo(o,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Pl(r.shape,z_):a=new qa(r.shape,z_),n.runWebGLProgram(a,[r],r.dtype)}var ij={kernelName:Do,backendName:"webgl",kernelFunc:sj},oj=Hr.nonMaxSuppressionV3Impl;function lj(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=r,u=n.readSync(a.dataId),c=n.readSync(s.dataId),{selectedIndices:h}=oj(u,c,i,o,l);return n.makeTensorInfo([h.length],"int32",new Int32Array(h))}var uj={kernelName:zo,backendName:"webgl",kernelFunc:lj},cj=Hr.nonMaxSuppressionV4Impl;function hj(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),{selectedIndices:d,validOutputs:p}=cj(c,h,i,o,l,u);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([p]))]}var dj={kernelName:Po,backendName:"webgl",kernelFunc:hj},pj=Hr.nonMaxSuppressionV5Impl;function fj(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),d=i,p=o,f=l,m=u,{selectedIndices:A,selectedScores:y}=pj(c,h,d,p,f,m);return[n.makeTensorInfo([A.length],"int32",new Int32Array(A)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var mj={kernelName:Lo,backendName:"webgl",kernelFunc:fj},Aj=class{constructor(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` +`,$_=on({opSnippet:QH,packedOpSnippet:ej,checkOutOfBounds:!0}),tj={kernelName:Is,backendName:"webgl",kernelFunc:$_},D_="return a - b;",O_=on({opSnippet:D_,packedOpSnippet:D_,supportsComplex:!0,cpuKernelImpl:rL}),nj={kernelName:ri,backendName:"webgl",kernelFunc:O_};function z_(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=v.parseAxisParam([s],a.shape),o=M_({inputs:{x:a},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=R.expandShapeToKeepDim(o.shape,i),u=xe({inputs:{x:o},backend:n,attrs:{shape:l}}),c=O_({inputs:{a,b:u},backend:n}),h=T_({inputs:{x:c},backend:n}),d=AA({inputs:{x:h},backend:n,attrs:{axis:i,keepDims:!1}}),p=xe({inputs:{x:d},backend:n,attrs:{shape:l}}),f=$_({inputs:{a:h,b:p},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}var rj={kernelName:ti,backendName:"webgl",kernelFunc:z_};function aj(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r,l=o?a:z_({inputs:{logits:a},backend:n,attrs:{dim:a.shape.length-1}}),u=l.shape[0],c=l.shape[1],h=new JH(u,c,s),d=h.getCustomSetupFunc(i),p=n.runWebGLProgram(h,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),p}var sj={kernelName:sd,backendName:"webgl",kernelFunc:aj},P_="return -x;";function ij(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])){let s=n.texData.get(r.dataId),[i,o]=YP(s.values,r.shape,r.dtype);return n.makeTensorInfo(o,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Pl(r.shape,P_):a=new qa(r.shape,P_),n.runWebGLProgram(a,[r],r.dtype)}var oj={kernelName:Do,backendName:"webgl",kernelFunc:ij},lj=Hr.nonMaxSuppressionV3Impl;function uj(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=r,u=n.readSync(a.dataId),c=n.readSync(s.dataId),{selectedIndices:h}=lj(u,c,i,o,l);return n.makeTensorInfo([h.length],"int32",new Int32Array(h))}var cj={kernelName:zo,backendName:"webgl",kernelFunc:uj},hj=Hr.nonMaxSuppressionV4Impl;function dj(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),{selectedIndices:d,validOutputs:p}=hj(c,h,i,o,l,u);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([p]))]}var pj={kernelName:Po,backendName:"webgl",kernelFunc:dj},fj=Hr.nonMaxSuppressionV5Impl;function mj(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),d=i,p=o,f=l,m=u,{selectedIndices:A,selectedScores:y}=fj(c,h,d,p,f,m);return[n.makeTensorInfo([A.length],"int32",new Int32Array(A)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var Aj={kernelName:Lo,backendName:"webgl",kernelFunc:mj},yj=class{constructor(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` void main() { ivec2 coords = getOutputCoords(); int index = round(getIndices(coords.x)); setOutput(mix(float(${r}), float(${n}), float(index == coords.y))); } - `}},yj=e=>{let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=v.sizeFromShape(a.shape),u=new Aj(l,s,i,o),c=xe({inputs:{x:a},backend:n,attrs:{shape:[l]}}),h=n.runWebGLProgram(u,[c],a.dtype);n.disposeIntermediateTensorInfo(c);let d=[...a.shape,s],p=xe({inputs:{x:h},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(h),p},gj={kernelName:Bs,backendName:"webgl",kernelFunc:yj};function Cp(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="complex64"){let a=_c({inputs:{input:r},backend:n}),s=Cp({inputs:{x:a},backend:n}),i=Ep({inputs:{input:r},backend:n}),o=Cp({inputs:{x:i},backend:n}),l=Xa({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return bA({attrs:{shape:r.shape,dtype:r.dtype,value:r.dtype==="string"?"":0},backend:n})}var xj={kernelName:rl,backendName:"webgl",kernelFunc:Cp};function P_(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(r.dtype==="complex64"){let a=_c({inputs:{input:r},backend:n}),s=P_({inputs:{x:a},backend:n}),i=Ep({inputs:{input:r},backend:n}),o=Cp({inputs:{x:i},backend:n}),l=Xa({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return bA({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:n})}var wj={kernelName:Wo,backendName:"webgl",kernelFunc:P_};function bj(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return wA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=wA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=y_({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var _j={kernelName:Bo,backendName:"webgl",kernelFunc:bj},vj=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,u)=>l[0]+e[u]+l[1]);let r=e.length,a=dt(r),s=t.map(l=>l[0]).join(","),i=t.map((l,u)=>l[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);if(r===1){this.userCode=` + `}},gj=e=>{let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=v.sizeFromShape(a.shape),u=new yj(l,s,i,o),c=xe({inputs:{x:a},backend:n,attrs:{shape:[l]}}),h=n.runWebGLProgram(u,[c],a.dtype);n.disposeIntermediateTensorInfo(c);let d=[...a.shape,s],p=xe({inputs:{x:h},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(h),p},xj={kernelName:Bs,backendName:"webgl",kernelFunc:gj};function Cp(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="complex64"){let a=_c({inputs:{input:r},backend:n}),s=Cp({inputs:{x:a},backend:n}),i=Ep({inputs:{input:r},backend:n}),o=Cp({inputs:{x:i},backend:n}),l=Xa({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return bA({attrs:{shape:r.shape,dtype:r.dtype,value:r.dtype==="string"?"":0},backend:n})}var wj={kernelName:rl,backendName:"webgl",kernelFunc:Cp};function L_(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(r.dtype==="complex64"){let a=_c({inputs:{input:r},backend:n}),s=L_({inputs:{x:a},backend:n}),i=Ep({inputs:{input:r},backend:n}),o=Cp({inputs:{x:i},backend:n}),l=Xa({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return bA({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:n})}var bj={kernelName:Wo,backendName:"webgl",kernelFunc:L_};function _j(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return wA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=wA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=g_({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var vj={kernelName:Bo,backendName:"webgl",kernelFunc:_j},kj=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,u)=>l[0]+e[u]+l[1]);let r=e.length,a=dt(r),s=t.map(l=>l[0]).join(","),i=t.map((l,u)=>l[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);if(r===1){this.userCode=` int start = ${s}; int end = ${i}; uniform float value; @@ -3421,7 +3421,7 @@ return a / b;`,QH=` setOutput(getX(${o})); } } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},kj=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((f,m)=>f[0]+e[m]+f[1]);let r=e.length,a=dt(r),s=t.map(f=>f[0]).join(","),i=t.map((f,m)=>f[0]+e[m]).join(","),o=xn("rc",r),l=xn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=[`${a} rc = outputLoc;`,`${o[r-1]} += 1; + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},Ij=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((f,m)=>f[0]+e[m]+f[1]);let r=e.length,a=dt(r),s=t.map(f=>f[0]).join(","),i=t.map((f,m)=>f[0]+e[m]).join(","),o=xn("rc",r),l=xn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=[`${a} rc = outputLoc;`,`${o[r-1]} += 1; if(${u}) { `,r===1?"":`} rc = outputLoc; @@ -3446,7 +3446,7 @@ return a / b;`,QH=` ${p} setOutput(result); } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},L_=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r,o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new kj(a.shape,s,i):new vj(a.shape,s,i),l=o.getCustomSetupFunc(i);return n.runWebGLProgram(o,[a],a.dtype,l)},Ij={kernelName:Vs,backendName:"webgl",kernelFunc:L_},Nj=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},W_=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r,o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Ij(a.shape,s,i):new kj(a.shape,s,i),l=o.getCustomSetupFunc(i);return n.runWebGLProgram(o,[a],a.dtype,l)},Nj={kernelName:Vs,backendName:"webgl",kernelFunc:W_},Sj=` if(a < 0.0 && floor(b) < b){ return NAN; } @@ -3455,7 +3455,7 @@ return a / b;`,QH=` } return (round(mod(b, 2.0)) != 1) ? pow(abs(a), b) : sign(a) * pow(abs(a), b); -`,Sj=` +`,Tj=` // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); @@ -3471,9 +3471,9 @@ return a / b;`,QH=` vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); `+vp+` return result; -`,Tj=on({opSnippet:Nj,packedOpSnippet:Sj}),Ej={kernelName:Us,backendName:"webgl",kernelFunc:Tj};function Cj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=[],u=v.parseAxisParam(s,a.shape),c=u,h=R.getAxesPermutation(c,o),d=a;h!=null&&(d=Cn({inputs:{x:a},backend:n,attrs:{perm:h}}),c=R.getInnerMostAxes(c.length,o),l.push(d)),R.assertAxesAreInnerMostDims("prod",c,o);let p;if(n.shouldExecuteOnCPU([d])){let f=n.texData.get(d.dataId).values,{outVals:m,outShape:A,outDtype:y}=YP(d.shape,d.dtype,f,c);p=n.makeTensorInfo(A,y,m)}else{let[f,m]=R.computeOutAndReduceShapes(d.shape,c),A=v.sizeFromShape(m),y=xe({inputs:{x:d},backend:n,attrs:{shape:[-1,A]}}),g=yd(a.dtype),b=Ei(y,g,"prod",n);p=xe({inputs:{x:b},backend:n,attrs:{shape:f}}),l.push(y),l.push(b)}if(i){l.push(p);let f=R.expandShapeToKeepDim(p.shape,u);p=xe({inputs:{x:p},backend:n,attrs:{shape:f}})}return l.forEach(f=>n.disposeIntermediateTensorInfo(f)),p}var Rj={kernelName:Vo,backendName:"webgl",kernelFunc:Cj},W_=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=JP(r,a,s,i);return t.makeTensorInfo([o.length],i,o)},Fj={kernelName:Eu,backendName:"webgl",kernelFunc:W_},Mj="return 1.0 / x;",$j=Ye({opSnippet:Mj}),Dj={kernelName:Uo,backendName:"webgl",kernelFunc:$j},Oj=Ir+` +`,Ej=on({opSnippet:Sj,packedOpSnippet:Tj}),Cj={kernelName:Us,backendName:"webgl",kernelFunc:Ej};function Rj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=[],u=v.parseAxisParam(s,a.shape),c=u,h=R.getAxesPermutation(c,o),d=a;h!=null&&(d=Cn({inputs:{x:a},backend:n,attrs:{perm:h}}),c=R.getInnerMostAxes(c.length,o),l.push(d)),R.assertAxesAreInnerMostDims("prod",c,o);let p;if(n.shouldExecuteOnCPU([d])){let f=n.texData.get(d.dataId).values,{outVals:m,outShape:A,outDtype:y}=JP(d.shape,d.dtype,f,c);p=n.makeTensorInfo(A,y,m)}else{let[f,m]=R.computeOutAndReduceShapes(d.shape,c),A=v.sizeFromShape(m),y=xe({inputs:{x:d},backend:n,attrs:{shape:[-1,A]}}),g=yd(a.dtype),b=Ei(y,g,"prod",n);p=xe({inputs:{x:b},backend:n,attrs:{shape:f}}),l.push(y),l.push(b)}if(i){l.push(p);let f=R.expandShapeToKeepDim(p.shape,u);p=xe({inputs:{x:p},backend:n,attrs:{shape:f}})}return l.forEach(f=>n.disposeIntermediateTensorInfo(f)),p}var Fj={kernelName:Vo,backendName:"webgl",kernelFunc:Rj},B_=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=QP(r,a,s,i);return t.makeTensorInfo([o.length],i,o)},Mj={kernelName:Eu,backendName:"webgl",kernelFunc:B_},$j="return 1.0 / x;",Dj=Ye({opSnippet:$j}),Oj={kernelName:Uo,backendName:"webgl",kernelFunc:Dj},zj=Ir+` return (x < 0.0) ? 0.0 : x; -`,zj=` +`,Pj=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3483,9 +3483,9 @@ return a / b;`,QH=` result.a = isNaN.a ? x.a : result.a; return result; -`,Pj=Ye({opSnippet:Oj,packedOpSnippet:zj}),Lj={kernelName:js,backendName:"webgl",kernelFunc:Pj},Wj=Ir+` +`,Lj=Ye({opSnippet:zj,packedOpSnippet:Pj}),Wj={kernelName:js,backendName:"webgl",kernelFunc:Lj},Bj=Ir+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,Bj=` +`,Vj=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3495,7 +3495,7 @@ return a / b;`,QH=` result.a = isNaN.a ? x.a : result.a; return result; -`,Vj=Ye({opSnippet:Wj,packedOpSnippet:Bj}),Uj={kernelName:qs,backendName:"webgl",kernelFunc:Vj},Hj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":h="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` +`,Uj=Ye({opSnippet:Bj,packedOpSnippet:Vj}),Hj={kernelName:qs,backendName:"webgl",kernelFunc:Uj},jj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":h="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( ${u[0]/c[0]}, ${u[1]/c[1]}); @@ -3528,7 +3528,7 @@ return a / b;`,QH=` setOutput(newValue); } - `}},jj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":h="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}},Gj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":h="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec3 effectiveInputOverOutputRatioRC = vec3( ${u[0]/c[0]}, ${u[1]/c[1]}, @@ -3605,7 +3605,7 @@ return a / b;`,QH=` setOutput(newValue); } - `}};function Gj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=J().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new jj(a.shape,l,u,s,i):new Hj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],"float32")}var qj={kernelName:Gs,backendName:"webgl",kernelFunc:Gj},Xj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` + `}};function qj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=J().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new Gj(a.shape,l,u,s,i):new jj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],"float32")}var Xj={kernelName:Gs,backendName:"webgl",kernelFunc:qj},Kj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3686,7 +3686,7 @@ return a / b;`,QH=` setOutput(accumulator); } - `}};function Kj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Xj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Zj={kernelName:ld,backendName:"webgl",kernelFunc:Kj},Yj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=r?"0.5":"0.0",d;a?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}};function Zj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Kj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Yj={kernelName:ld,backendName:"webgl",kernelFunc:Zj},Jj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=r?"0.5":"0.0",d;a?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( ${u[0]/c[0]}, ${u[1]/c[1]}); @@ -3708,7 +3708,7 @@ return a / b;`,QH=` setOutput(newValue); } - `}};function Jj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=new Yj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],a.dtype)}var Qj={kernelName:Cu,backendName:"webgl",kernelFunc:Jj},eG=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` + `}};function Qj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=new Jj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],a.dtype)}var eG={kernelName:Cu,backendName:"webgl",kernelFunc:Qj},tG=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3778,7 +3778,7 @@ return a / b;`,QH=` setOutput(accumulator); } - `}};function tG(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new eG(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var nG={kernelName:od,backendName:"webgl",kernelFunc:tG},rG=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` + `}};function nG(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new tG(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var rG={kernelName:od,backendName:"webgl",kernelFunc:nG},aG=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` void main() { int coord = getOutputCoords(); setOutput(getX(${e[0]} - coord - 1)); @@ -3788,7 +3788,7 @@ return a / b;`,QH=` ${s} coords = getOutputCoords(); setOutput(getX(${a})); } - `}},aG=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let r=xn("rc",n),a=`${r[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${r[n-2]} + 1 < ${this.outputShape[n-2]}`,i=dt(n);n===1?this.userCode=` + `}},sG=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let r=xn("rc",n),a=`${r[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${r[n-2]} + 1 < ${this.outputShape[n-2]}`,i=dt(n);n===1?this.userCode=` void main(){ int rc = getOutputCoords(); vec4 result = vec4(0.); @@ -3816,7 +3816,7 @@ return a / b;`,QH=` } setOutput(result); } - `;function o(p){return h(p)}function l(p){return p[n-1]="("+p[n-1]+" + 1)",h(p)}function u(p){return p[n-2]="("+p[n-2]+" + 1)",h(p)}function c(p){return p[n-1]="("+p[n-1]+" + 1)",p[n-2]="("+p[n-2]+" + 1)",h(p)}function h(p){let f=e.map((y,g)=>d(g,p)),m=f.join(","),A=f.slice(-2).join(",");return`getChannel(getX(${m}), vec2(${A}))`}function d(p,f){return t.indexOf(p)!==-1&&e[p]!==1?`${e[p]} - ${f[p]} - 1`:`${f[p]}`}}};function sG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Bn({inputs:{x:a},backend:n});let l=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new aG(a.shape,o):new rG(a.shape,o);return n.runWebGLProgram(l,[a],a.dtype)}var iG={kernelName:Xs,backendName:"webgl",kernelFunc:sG},oG=class{constructor(e,t){this.variableNames=["Image"],this.outputShape=[];let n=e[1],r=e[2];this.outputShape=e;let a="";typeof t=="number"?a=`float outputValue = ${t.toFixed(2)};`:a=` + `;function o(p){return h(p)}function l(p){return p[n-1]="("+p[n-1]+" + 1)",h(p)}function u(p){return p[n-2]="("+p[n-2]+" + 1)",h(p)}function c(p){return p[n-1]="("+p[n-1]+" + 1)",p[n-2]="("+p[n-2]+" + 1)",h(p)}function h(p){let f=e.map((y,g)=>d(g,p)),m=f.join(","),A=f.slice(-2).join(",");return`getChannel(getX(${m}), vec2(${A}))`}function d(p,f){return t.indexOf(p)!==-1&&e[p]!==1?`${e[p]} - ${f[p]} - 1`:`${f[p]}`}}};function iG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Bn({inputs:{x:a},backend:n});let l=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new sG(a.shape,o):new aG(a.shape,o);return n.runWebGLProgram(l,[a],a.dtype)}var oG={kernelName:Xs,backendName:"webgl",kernelFunc:iG},lG=class{constructor(e,t){this.variableNames=["Image"],this.outputShape=[];let n=e[1],r=e[2];this.outputShape=e;let a="";typeof t=="number"?a=`float outputValue = ${t.toFixed(2)};`:a=` vec3 fill = vec3(${t.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` uniform vec4 params; @@ -3836,7 +3836,7 @@ return a / b;`,QH=` } setOutput(outputValue); } - `}getCustomSetupFunc(e,t,n,r){return(a,s)=>{this.paramsLoc==null&&(this.paramsLoc=a.getUniformLocationNoThrow(s,"params")),a.gl.uniform4f(this.paramsLoc,e,t,n,r)}}},lG={kernelName:al,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=new oG(r.shape,s),[u,c]=R.getImageCenter(i,r.shape[1],r.shape[2]),h=l.getCustomSetupFunc(u,c,Math.sin(a),Math.cos(a));return o.runWebGLProgram(l,[r],r.dtype,h)}},uG=` + `}getCustomSetupFunc(e,t,n,r){return(a,s)=>{this.paramsLoc==null&&(this.paramsLoc=a.getUniformLocationNoThrow(s,"params")),a.gl.uniform4f(this.paramsLoc,e,t,n,r)}}},uG={kernelName:al,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=new lG(r.shape,s),[u,c]=R.getImageCenter(i,r.shape[1],r.shape[2]),h=l.getCustomSetupFunc(u,c,Math.sin(a),Math.cos(a));return o.runWebGLProgram(l,[r],r.dtype,h)}},cG=` // OpenGL ES does not support round function. // The algorithm is based on banker's rounding. float base = floor(x); @@ -3851,7 +3851,7 @@ return a / b;`,QH=` return base + 1.0; } } -`,cG=Ye({opSnippet:uG}),hG={kernelName:Ks,backendName:"webgl",kernelFunc:cG},dG="return inversesqrt(x);",pG=Ye({opSnippet:dG,cpuKernelImpl:QP}),fG={kernelName:Zs,backendName:"webgl",kernelFunc:pG},B_=class{constructor(e,t,n,r,a,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=dt(a.length),l=dt(s.length),u="";n===1?u="i":n===2&&(u="i, j");let c=`getIndices(${u})`,h="";r===1?h="i":r===2&&(h="i, coords[1]");let d=`getUpdates(${h})`,p=t>1?"strides[j]":"strides";this.userCode=` +`,hG=Ye({opSnippet:cG}),dG={kernelName:Ks,backendName:"webgl",kernelFunc:hG},pG="return inversesqrt(x);",fG=Ye({opSnippet:pG,cpuKernelImpl:eL}),mG={kernelName:Zs,backendName:"webgl",kernelFunc:fG},V_=class{constructor(e,t,n,r,a,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=dt(a.length),l=dt(s.length),u="";n===1?u="i":n===2&&(u="i, j");let c=`getIndices(${u})`,h="";r===1?h="i":r===2&&(h="i, coords[1]");let d=`getUpdates(${h})`,p=t>1?"strides[j]":"strides";this.userCode=` ${o} strides = ${o}(${a}); void main() { @@ -3871,7 +3871,7 @@ return a / b;`,QH=` } setOutput(mix(getDefaultValue(), sum, float(found))); } - `}};function mG(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a,updates:s}=t,{shape:i}=r,{sliceRank:o,numUpdates:l,sliceSize:u,strides:c,outputSize:h}=R.calculateShapes(s,a,i),d=[h/u,u];if(h===0)return n.makeTensorInfo(i,a.dtype);let p=xe({inputs:{x:a},backend:n,attrs:{shape:[l,o]}}),f=xe({inputs:{x:s},backend:n,attrs:{shape:[l,u]}}),m=n.makeTensorInfo([],"float32",new Float32Array([0])),A=new B_(l,o,p.shape.length,f.shape.length,c,d),y=n.runWebGLProgram(A,[f,p,m],f.dtype),g=xe({inputs:{x:y},backend:n,attrs:{shape:i}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(m),g}var AG={kernelName:jo,backendName:"webgl",kernelFunc:mG},yG=class{constructor(e,t,n){this.variableNames=["c","a","b"],this.outputShape=t;let r,a;if(n>4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)a="resRC",r="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let u=0;u4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)a="resRC",r="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let u=0;u= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`,bG=Ye({opSnippet:wG}),_G={kernelName:qo,backendName:"webgl",kernelFunc:bG},vG="return 1.0 / (1.0 + exp(-1.0 * x));",kG=Ye({opSnippet:vG}),IG={kernelName:Js,backendName:"webgl",kernelFunc:kG},NG=` +`,_G=Ye({opSnippet:bG}),vG={kernelName:qo,backendName:"webgl",kernelFunc:_G},kG="return 1.0 / (1.0 + exp(-1.0 * x));",IG=Ye({opSnippet:kG}),NG={kernelName:Js,backendName:"webgl",kernelFunc:IG},SG=` if (isnan(x)) { return 0.0; } return sign(x); -`,SG=Ye({opSnippet:NG}),TG={kernelName:Zo,backendName:"webgl",kernelFunc:SG},EG=e_+` +`,TG=Ye({opSnippet:SG}),EG={kernelName:Zo,backendName:"webgl",kernelFunc:TG},CG=t_+` return sin(x); -`,CG=Ye({opSnippet:EG}),RG={kernelName:Ys,backendName:"webgl",kernelFunc:CG},FG=` +`,RG=Ye({opSnippet:CG}),FG={kernelName:Ys,backendName:"webgl",kernelFunc:RG},MG=` float e2x = exp(x); return (e2x - 1.0 / e2x) / 2.0; -`,MG=Ye({opSnippet:FG}),$G={kernelName:Ko,backendName:"webgl",kernelFunc:MG},DG=` +`,$G=Ye({opSnippet:MG}),DG={kernelName:Ko,backendName:"webgl",kernelFunc:$G},OG=` float epsilon = 1.1920928955078125e-7; float threshold = log(epsilon) + 2.0; @@ -3915,9 +3915,9 @@ return a / b;`,QH=` result = log(exp_x + 1.0); } return result; -`,OG=Ye({opSnippet:DG}),zG={kernelName:Yo,backendName:"webgl",kernelFunc:OG},PG=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,paddings:i}=r;v.assert(a.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,g)=>y*g),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),A},LG={kernelName:Ru,backendName:"webgl",kernelFunc:PG};function WG(e){let{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:s,defaultValue:i}=t,{outputShape:o}=r,{sliceRank:l,numUpdates:u,strides:c,outputSize:h}=R.calculateShapes(s,a,o),d=!1,p=new B_(u,l,a.shape.length,s.shape.length,c,[h,1],d),f=n.runWebGLProgram(p,[s,a,i],s.dtype),m=xe({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(f),m}var BG={kernelName:ud,backendName:"webgl",kernelFunc:WG};function VG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:s,axis:i}=r,o=v.parseAxisParam(i,a.shape)[0],l=R.prepareSplitSize(a,s,o),u=a.shape.length,c=new Array(u).fill(0),h=a.shape.slice();return l.map(d=>{let p=[...h];p[o]=d;let f=bc({inputs:{x:a},backend:n,attrs:{begin:c,size:p}});return c[o]+=d,f})}var UG={kernelName:Jo,backendName:"webgl",kernelFunc:VG},HG="return sqrt(x);",jG=Ye({opSnippet:HG}),GG={kernelName:Qs,backendName:"webgl",kernelFunc:jG},qG="return x * x;",XG=Ye({opSnippet:qG}),KG={kernelName:Fu,backendName:"webgl",kernelFunc:XG},V_="return (a - b) * (a - b);",ZG=on({opSnippet:V_,packedOpSnippet:V_}),YG={kernelName:ni,backendName:"webgl",kernelFunc:ZG};function JG({inputs:e,attrs:t,backend:n}){let{x:r}=e,a=Ir+` +`,zG=Ye({opSnippet:OG}),PG={kernelName:Yo,backendName:"webgl",kernelFunc:zG},LG=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,paddings:i}=r;v.assert(a.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,g)=>y*g),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),A},WG={kernelName:Ru,backendName:"webgl",kernelFunc:LG};function BG(e){let{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:s,defaultValue:i}=t,{outputShape:o}=r,{sliceRank:l,numUpdates:u,strides:c,outputSize:h}=R.calculateShapes(s,a,o),d=!1,p=new V_(u,l,a.shape.length,s.shape.length,c,[h,1],d),f=n.runWebGLProgram(p,[s,a,i],s.dtype),m=xe({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(f),m}var VG={kernelName:ud,backendName:"webgl",kernelFunc:BG};function UG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:s,axis:i}=r,o=v.parseAxisParam(i,a.shape)[0],l=R.prepareSplitSize(a,s,o),u=a.shape.length,c=new Array(u).fill(0),h=a.shape.slice();return l.map(d=>{let p=[...h];p[o]=d;let f=bc({inputs:{x:a},backend:n,attrs:{begin:c,size:p}});return c[o]+=d,f})}var HG={kernelName:Jo,backendName:"webgl",kernelFunc:UG},jG="return sqrt(x);",GG=Ye({opSnippet:jG}),qG={kernelName:Qs,backendName:"webgl",kernelFunc:GG},XG="return x * x;",KG=Ye({opSnippet:XG}),ZG={kernelName:Fu,backendName:"webgl",kernelFunc:KG},U_="return (a - b) * (a - b);",YG=on({opSnippet:U_,packedOpSnippet:U_}),JG={kernelName:ni,backendName:"webgl",kernelFunc:YG};function QG({inputs:e,attrs:t,backend:n}){let{x:r}=e,a=Ir+` return x > 0.0 ? 1.0 : float(${t.alpha}); - `,s=new qa(r.shape,a);return n.runWebGLProgram(s,[r],r.dtype)}var QG={kernelName:$a,backendName:"webgl",kernelFunc:JG},eq=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let r=n.length,a=dt(n.length),s=dt(n.length),i="";if(r===1)i="coords * strides + begin";else{let o=0;i=n.map((l,u)=>(o++,n.length===1?`coords * strides[${u}] + begin[${u}]`:`coords[${o-1}] * strides[${u}] + begin[${u}]`)).join(",")}this.userCode=` + `,s=new qa(r.shape,a);return n.runWebGLProgram(s,[r],r.dtype)}var eq={kernelName:$a,backendName:"webgl",kernelFunc:QG},tq=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let r=n.length,a=dt(n.length),s=dt(n.length),i="";if(r===1)i="coords * strides + begin";else{let o=0;i=n.map((l,u)=>(o++,n.length===1?`coords * strides[${u}] + begin[${u}]`:`coords[${o-1}] * strides[${u}] + begin[${u}]`)).join(",")}this.userCode=` ${a} begin = ${a}(${e}); ${a} strides = ${a}(${t}); @@ -3925,15 +3925,15 @@ return a / b;`,QH=` ${s} coords = getOutputCoords(); setOutput(getX(${i})); } - `}};function tq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=fn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),b=xe({inputs:{x:a},backend:n,attrs:{shape:y}}),_;if(p){let x=bc({inputs:{x:b},backend:n,attrs:{begin:f,size:A}});_=xe({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))_=n.makeTensorInfo(g,a.dtype,[]);else if(n.shouldExecuteOnCPU([b])){let x=n.texData.get(b.dataId).values,N=Ue(b.shape,b.dtype,x),S=tL(g,N,m,f);_=n.makeTensorInfo(g,b.dtype,S.values)}else{let x=new eq(f,m,g);_=n.runWebGLProgram(x,[b],b.dtype)}let w=xe({inputs:{x:_},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(b),n.disposeIntermediateTensorInfo(_),w}var nq={kernelName:Qo,backendName:"webgl",kernelFunc:tq},rq="return tan(x);",aq=Ye({opSnippet:rq}),sq={kernelName:el,backendName:"webgl",kernelFunc:aq},iq=` + `}};function nq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=fn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),b=xe({inputs:{x:a},backend:n,attrs:{shape:y}}),_;if(p){let x=bc({inputs:{x:b},backend:n,attrs:{begin:f,size:A}});_=xe({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))_=n.makeTensorInfo(g,a.dtype,[]);else if(n.shouldExecuteOnCPU([b])){let x=n.texData.get(b.dataId).values,N=Ue(b.shape,b.dtype,x),S=nL(g,N,m,f);_=n.makeTensorInfo(g,b.dtype,S.values)}else{let x=new tq(f,m,g);_=n.runWebGLProgram(x,[b],b.dtype)}let w=xe({inputs:{x:_},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(b),n.disposeIntermediateTensorInfo(_),w}var rq={kernelName:Qo,backendName:"webgl",kernelFunc:nq},aq="return tan(x);",sq=Ye({opSnippet:aq}),iq={kernelName:el,backendName:"webgl",kernelFunc:sq},oq=` float e2x = exp(-2.0 * abs(x)); return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`,oq=Ye({opSnippet:iq}),lq={kernelName:ai,backendName:"webgl",kernelFunc:oq},cq=class{constructor(e,t){this.variableNames=["A"];let n=new Array(e.length);for(let s=0;s5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[];for(let a=0;av.decodeString(c)),l=Ue(a.shape,a.dtype,o),u=rL(l,s);return n.makeTensorInfo(u.shape,u.dtype,u.values)}let i=new cq(a.shape,s);return n.runWebGLProgram(i,[a],a.dtype)}var hq={kernelName:Ma,backendName:"webgl",kernelFunc:U_};function dq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r,o=n.readSync(a.dataId),[l,u]=aL(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var pq={kernelName:tl,backendName:"webgl",kernelFunc:dq},fq=class{constructor(e,t,n,r,a,s){this.variableNames=["Image","Transforms"],this.outputShape=s;let i=n==="nearest"?1:2,o;switch(r){case"constant":o=1;break;case"reflect":o=2;break;case"wrap":o=3;break;case"nearest":o=4;break;default:o=1;break}this.userCode=` + `}};function cq(e){let t=e.length;if(t>5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[];for(let a=0;av.decodeString(c)),l=Ue(a.shape,a.dtype,o),u=aL(l,s);return n.makeTensorInfo(u.shape,u.dtype,u.values)}let i=new hq(a.shape,s);return n.runWebGLProgram(i,[a],a.dtype)}var dq={kernelName:Ma,backendName:"webgl",kernelFunc:H_};function pq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r,o=n.readSync(a.dataId),[l,u]=sL(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var fq={kernelName:tl,backendName:"webgl",kernelFunc:pq},mq=class{constructor(e,t,n,r,a,s){this.variableNames=["Image","Transforms"],this.outputShape=s;let i=n==="nearest"?1:2,o;switch(r){case"constant":o=1;break;case"reflect":o=2;break;case"wrap":o=3;break;case"nearest":o=4;break;default:o=1;break}this.userCode=` float mapCoord(float outCoord, float len) { float inCoord = outCoord; if(${o} == 2) { @@ -4045,7 +4045,7 @@ return a / b;`,QH=` } setOutput(outputValue); } - `}};function mq(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=r,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=new fq(h,d,i,o,l,A);return n.runWebGLProgram(y,[a,s],"float32")}var Aq={kernelName:cd,backendName:"webgl",kernelFunc:mq};function yq(e){let{inputs:t,attrs:n,backend:r}=e,{axis:a}=n,{x:s}=t;Fl(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=r.readSync(s.dataId),{outputValues:o,outputShape:l,indices:u}=sL(i,a,s.shape,s.dtype);return[r.makeTensorInfo(l,s.dtype,o),r.makeTensorInfo([u.length],"int32",u)]}var gq={kernelName:hd,backendName:"webgl",kernelFunc:yq};function xq(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a,o=i.shape.length,l=a.shape[s],u=new Array(o-1),c=0;for(let m=0;mn.disposeIntermediateTensorInfo(m)),f}var wq={kernelName:nl,backendName:"webgl",kernelFunc:xq},bq=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,r=e.batchSize,a=e.inSize,s=e.numSegments,i=s*Math.ceil(a/n);this.outputShape=[r,i];let o="0.0",l="sumValue",u=Math.floor(n/4)*4,c=n%4,h=` + `}};function Aq(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=r,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=new mq(h,d,i,o,l,A);return n.runWebGLProgram(y,[a,s],"float32")}var yq={kernelName:cd,backendName:"webgl",kernelFunc:Aq};function gq(e){let{inputs:t,attrs:n,backend:r}=e,{axis:a}=n,{x:s}=t;Fl(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=r.readSync(s.dataId),{outputValues:o,outputShape:l,indices:u}=iL(i,a,s.shape,s.dtype);return[r.makeTensorInfo(l,s.dtype,o),r.makeTensorInfo([u.length],"int32",u)]}var xq={kernelName:hd,backendName:"webgl",kernelFunc:gq};function wq(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a,o=i.shape.length,l=a.shape[s],u=new Array(o-1),c=0;for(let m=0;mn.disposeIntermediateTensorInfo(m)),f}var bq={kernelName:nl,backendName:"webgl",kernelFunc:wq},_q=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,r=e.batchSize,a=e.inSize,s=e.numSegments,i=s*Math.ceil(a/n);this.outputShape=[r,i];let o="0.0",l="sumValue",u=Math.floor(n/4)*4,c=n%4,h=` sumValue += dot(values, segFilter); `,d="";a%n>0&&(d=` if (inIdx < 0 || inIdx >= ${a}) { @@ -4151,26 +4151,26 @@ return a / b;`,QH=` } setOutput(${l}); } - `}};function _q(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:s}=t,{numSegments:i}=r,o=a.shape.length,l=[],u=0,c=R.getAxesPermutation([u],o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),l.push(h),u=R.getInnerMostAxes(1,o)[0]);let d=R.segment_util.computeOutShape(h.shape,u,i),p=v.sizeFromShape([h.shape[u]]),f=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,p]}});l.push(f);let m=yd(a.dtype),A=(_,w,x,N,S)=>{let T=_.shape[0],M=_.shape[1],D=R.segment_util.segOpComputeOptimalWindowSize(M,S),z={windowSize:D,inSize:M,batchSize:T,numSegments:S},W=new bq(z,w),U=n.compileAndRun(W,[_,x],N);if(l.push(U),U.shape[1]===S)return U;let H=W_({backend:n,attrs:{start:0,stop:S,step:1,dtype:"float32"}}),X=U_({inputs:{x:H},backend:n,attrs:{reps:[M/D]}});return l.push(H),l.push(X),A(U,w,X,N,S)},y=A(f,"unsortedSegmentSum",s,m,i),g=xe({inputs:{x:y},backend:n,attrs:{shape:d}}),b=g;if(c!=null){l.push(g);let _=R.getUndoAxesPermutation(c);b=Cn({inputs:{x:b},backend:n,attrs:{perm:_}})}return l.forEach(_=>n.disposeIntermediateTensorInfo(_)),b}var vq={kernelName:Mu,backendName:"webgl",kernelFunc:_q},kq=[pH,AH,tW,rW,iW,uW,hW,fW,AW,gW,_W,kW,SW,CW,zW,MW,WW,HW,VW,XW,ZW,JW,nB,uB,hB,yB,xB,vB,NB,OL,CB,WB,VB,$B,GB,XB,HB,YB,eV,rV,sV,oV,cV,AV,gV,dV,bV,kV,TV,FV,OV,LV,WV,BV,UV,jV,qV,KV,YV,tU,sU,oU,uU,dU,AU,wU,kU,DL,NU,EB,EU,FU,DU,PL,LU,UU,jU,JU,KU,nH,sH,uH,gH,NH,kH,CH,FH,$H,_H,OH,PH,VH,GH,ZH,aj,UL,ij,uj,dj,mj,pB,gj,wj,_j,Ij,Ej,WL,Rj,Fj,fB,ej,Dj,Uj,Lj,jL,qj,Zj,Qj,nG,iG,lG,hG,fG,AG,xG,_G,IG,TG,RG,$G,oB,nj,zG,LG,BG,UG,GG,KG,YG,QG,nq,tj,JL,sq,lq,hq,pq,Aq,QL,gq,wq,vq,xj];for(let e of kq)ui(e);var Vn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Vn||(Vn={}));var vc;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(vc||(vc={}));var H_;function Iq(e){H_=e.wasm.cwrap(ii,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function Nq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r,d=n.dataIdMap.get(a.dataId).id,p=n.dataIdMap.get(s.dataId).id,f=0;if(i!=null){let S=n.dataIdMap.get(i.dataId);if(S.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${S.shape.length}.`);f=S.id}let m=o==null?0:n.dataIdMap.get(o.dataId).id,A=vc[c];if(A==null)throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?a.shape[2]:a.shape[1],g=u?s.shape[1]:s.shape[2],b=a.shape[0],_=n.makeOutput([b,y,g],a.dtype),w=n.dataIdMap.get(_.dataId).id,x=new Uint8Array(new Int32Array(a.shape).buffer),N=new Uint8Array(new Int32Array(s.shape).buffer);return H_(d,x,a.shape.length,p,N,s.shape.length,l,u,A,f,m,h||0,w),_}var Sq={kernelName:ii,backendName:"wasm",setupFunc:Iq,kernelFunc:Nq};function Rn(e){let t;function n(a){t=a.wasm.cwrap(e,null,["number","number"])}function r(a){let{backend:s,inputs:{x:i}}=a,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),u=s.dataIdMap.get(l.dataId).id;return v.sizeFromShape(l.shape)===0||t(o,u),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:r}}var Tq=Rn(so);function wn(e,t,n){let r;function a(i){r=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:u,b:c}=l,h=o.dataIdMap.get(u.dataId).id,d=o.dataIdMap.get(c.dataId).id,p=n!=null?n:u.dtype,f=R.assertAndGetBroadcastShape(u.shape,c.shape),m=o.makeOutput(f,p);if(v.sizeFromShape(f)===0)return m;let A=new Uint8Array(new Int32Array(u.shape).buffer),y=new Uint8Array(new Int32Array(c.shape).buffer),g=o.dataIdMap.get(m.dataId).id,b=()=>r(h,A,u.shape.length,d,y,c.shape.length,Vn[u.dtype],g);if(t&&u.dtype==="float32")return b(),m;let _=R.getBroadcastDims(u.shape,f),w=R.getBroadcastDims(c.shape,f),x=_.every((S,T)=>S===T),N=w.every((S,T)=>S===T);if(x&&N)return b(),m;throw new Error(`Broadcasting along outer dims is not yet supported for ${u.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:a,kernelFunc:s}}var Eq=!0,Cq=wn(Ra,Eq),j_;function Rq(e){j_=e.wasm.cwrap(fs,null,["array","number","number","number"])}function Fq(e){let{inputs:t,backend:n}=e,r=n.makeOutput(t[0].shape,t[0].dtype);if(v.sizeFromShape(r.shape)===0)return r;let a=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(a).buffer),i=n.dataIdMap.get(r.dataId).id;return j_(s,a.length,Vn[r.dtype],i),r}var Mq={kernelName:fs,backendName:"wasm",setupFunc:Rq,kernelFunc:Fq};function Rp(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype),a=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(r).set(a),r}var $q={kernelName:Rs,backendName:"wasm",kernelFunc:Rp},G_;function Dq(e){G_=e.wasm.cwrap(si,null,["number","array","number","number","number","array","number"])}function Fp(e){let{inputs:t,backend:n,attrs:r}=e,[a,s]=zq(t.x.shape,r.perm),i=!0;for(let f=0;f=a&&(s===-1||r[s]>r[i])&&(s=i);r[s]=a}return[n,r]}var Pq={kernelName:si,backendName:"wasm",kernelFunc:Fp,setupFunc:Dq};function Ul(e,t,n){let r=e.shape,a=e.shape.length,s=v.parseAxisParam(t,r),i=s,o=R.getAxesPermutation(i,a),l=null,u=!1;if(o!=null){let c=new Array(a);for(let d=0;d`new shape: ${i}, old shape: ${r.shape}. New shape and old shape must have the same number of elements.`),e.backend.incRef(r.dataId),{dataId:r.dataId,shape:i,dtype:r.dtype}}var jq={kernelName:Ho,backendName:"wasm",kernelFunc:Nr},K_;function Gq(e){K_=e.wasm.cwrap(ys,null,["number","array","number","number","array","number","number","number","number"])}function qq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let b=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let _=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=Nr({inputs:{x:a},backend:n,attrs:{shape:_}}),N=Nr({inputs:{x:s},backend:n,attrs:{shape:w}}),S=n.dataIdMap.get(x.dataId).id,T=n.dataIdMap.get(N.dataId).id,M=i?x.shape[2]:x.shape[1],D=o?N.shape[1]:N.shape[2],z=Math.max(A,y),W=n.makeOutput([z,M,D],x.dtype),U=n.dataIdMap.get(W.dataId).id,H=new Uint8Array(new Int32Array(x.shape).buffer),X=new Uint8Array(new Int32Array(N.shape).buffer);return K_(S,H,x.shape.length,T,X,N.shape.length,i,o,U),n.disposeData(x.dataId),n.disposeData(N.dataId),W.shape=b,W}var Xq={kernelName:ys,backendName:"wasm",setupFunc:Gq,kernelFunc:qq};function Mp(e){let{inputs:{x:t},attrs:{dtype:n},backend:r}=e,a=r.makeOutput(t.shape,n),s=r.typedArrayFromHeap(t);return r.typedArrayFromHeap(a).set(s),a}var Kq={kernelName:gs,backendName:"wasm",kernelFunc:Mp},Zq=Rn(xs),Z_;function Yq(e){Z_=e.wasm.cwrap(Fa,null,["number","number","number","number"])}function Jq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o=n.dataIdMap.get(a.dataId).id,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(l.dataId).id;return Z_(o,s,i,u),l}var Qq={kernelName:Fa,backendName:"wasm",setupFunc:Yq,kernelFunc:Jq};function Y_(e){let{inputs:t,backend:n}=e,r=v.parseAxisParam(e.attrs.axis,t[0].shape)[0],a=R.computeOutShape(t.map(p=>p.shape),r),s=t.filter(p=>v.sizeFromShape(p.shape)>0);if(s.length===1)return Rp({inputs:{x:s[0]},backend:n});let i=n.makeOutput(a,t[0].dtype);if(v.sizeFromShape(a)===0)return i;let o=s.map(p=>p.shape);if(R.assertParamsConsistent(o,r),s[0].dtype==="string"){let p=s.map(b=>{let _=v.sizeFromShape(b.shape.slice(r));return Nr({inputs:{x:b},backend:n,attrs:{shape:[-1,_]}})}),f=p.map(b=>({vals:n.readSync(b.dataId),shape:b.shape}));a=R.computeOutShape(p.map(b=>b.shape),1);let m=p[0].shape[0]===1,A=Um(f,a,t[0].dtype,m),y=R.computeOutShape(s.map(b=>b.shape),r);i.shape=y;let g=n.dataIdMap.get(i.dataId);return g.stringBytes=R.fromStringArrayToUint8(A),p.forEach(b=>n.disposeData(b.dataId)),i}let l=v.sizeFromShape(s[0].shape.slice(0,r)),u=0,c=s.map(p=>{let f=v.sizeFromShape(p.shape.slice(r));return u+=f,f}),h=s.map(p=>n.typedArrayFromHeap(p)),d=n.typedArrayFromHeap(i);for(let p=0;p`cumsum does not support ${a.dtype} tensors in the WASM backend`);let u=R.getAxesPermutation([s],l),c=a;u!==null&&(c=Fp({inputs:{x:a},attrs:{perm:u},backend:n}));let h=R.getInnerMostAxes(1,l)[0];R.assertAxesAreInnerMostDims("cumsum",[h],l);let d=n.makeOutput(c.shape,c.dtype),p=c.shape[h],f=n.dataIdMap.get(c.dataId).id,m=n.dataIdMap.get(d.dataId).id;t3(f,i?1:0,o?1:0,p,m,Vn[a.dtype]);let A=d;if(u!==null){let y=R.getUndoAxesPermutation(u);A=Fp({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(c.dataId),n.disposeData(d.dataId)}return A}var pX={kernelName:vs,backendName:"wasm",setupFunc:hX,kernelFunc:dX},n3;function fX(e){n3=e.wasm.cwrap(yo,null,["number","number","number","array","number","array","array","number","number"])}function mX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=t.makeOutput(f,"float32"),A=t.dataIdMap.get(a.dataId).id,y=new Uint8Array(new Int32Array(v.computeStrides(a.shape)).buffer),g=new Uint8Array(new Int32Array(f).buffer),b=new Uint8Array(new Int32Array(v.computeStrides(f)).buffer),_=t.dataIdMap.get(m.dataId).id;return n3(A,s,i==="NHWC"?1:0,y,a.shape.length-1,g,b,f.length,_),m}var AX={kernelName:yo,backendName:"wasm",setupFunc:fX,kernelFunc:mX},r3;function yX(e){r3=e.wasm.cwrap(ks,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function gX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s}=t,i=r.dataIdMap.get(a.dataId).id,o=r.dataIdMap.get(s.dataId).id,{strides:l,dilations:u,pad:c,dimRoundingMode:h}=n,d=u==null?[1,1]:u,p=R.computeConv2DInfo(a.shape,s.shape,l,d,c,h,!0),f=p.filterHeight,m=p.filterWidth,A=p.padInfo.top,y=p.padInfo.right,g=p.padInfo.bottom,b=p.padInfo.left,_=p.dilationHeight,w=p.dilationWidth,x=p.strideHeight,N=p.strideWidth,S=p.inChannels,T=p.outChannels,M=p.padInfo.type==="SAME"?1:0;if(p.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${p.dataFormat}'. Please use 'channelsLast'.`);let D=r.makeOutput(p.outShape,"float32"),z=r.dataIdMap.get(D.dataId).id;return r3(i,a.shape[0],a.shape[1],a.shape[2],o,f,m,A,y,g,b,M,_,w,x,N,S,T,z),D}var xX={kernelName:ks,backendName:"wasm",setupFunc:yX,kernelFunc:gX},wX=!1,bX=wn(wo,wX,"bool"),_X=Rn(Ns);function vA(e){let{inputs:t,attrs:n,backend:r}=e,{input:a}=t,{dim:s}=n,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),Nr({inputs:{x:a},backend:r,attrs:{shape:o}})}var vX={kernelName:bo,backendName:"wasm",kernelFunc:vA};function kX(e){let{attrs:{shape:t,value:n,dtype:r},backend:a}=e,s=a.makeOutput(t,r);return a.typedArrayFromHeap(s).fill(n),s}var IX={kernelName:vu,backendName:"wasm",kernelFunc:kX},a3;function NX(e){a3=e.wasm.cwrap(vo,null,["number","number","number","number","number","number"])}function SX(e){let{inputs:t,backend:n}=e,{image:r}=t,a=n.makeOutput(r.shape,r.dtype),s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,[o,l,u,c]=r.shape;return a3(s,o,l,u,c,i),a}var TX={kernelName:vo,backendName:"wasm",kernelFunc:SX,setupFunc:NX},EX=Rn(Ss),CX=!1,RX=wn(Ts,CX),s3;function FX(e){s3=e.wasm.cwrap(Es,null,["number","number","number","number","number","number","number"])}function MX(e){let{backend:t,inputs:n,attrs:r}=e,{varianceEpsilon:a}=r,{x:s,mean:i,variance:o,offset:l,scale:u}=n,c=t.dataIdMap.get(s.dataId).id,h=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,p=l!=null?t.dataIdMap.get(l.dataId).id:0,f=u!=null?t.dataIdMap.get(u.dataId).id:0,m=t.makeOutput(s.shape,s.dtype);if(v.sizeFromShape(s.shape)===0)return m;let A=t.dataIdMap.get(m.dataId).id;return s3(c,h,d,p,f,a,A),m}var $X={kernelName:Es,backendName:"wasm",setupFunc:FX,kernelFunc:MX},i3;function DX(e){i3=e.wasm.cwrap(oi,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function OX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d),A=vc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,b=m.outChannels,_=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==b)throw new Error(`FusedConv2D bias shape (${Q.shape}) does not match the number of output channels (${b})`);_=Q.id}let w=m.filterHeight,x=m.filterWidth,N=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let se=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(se.dataId).id,oe=o==null?0:r.dataIdMap.get(o.dataId).id;return i3(y,j,ee,Y,g,w,x,_,N,S,T,M,X,D,z,W,U,H,b,A,oe,f||0,te),se}var zX={kernelName:oi,backendName:"wasm",setupFunc:DX,kernelFunc:OX},o3;function PX(e){o3=e.wasm.cwrap(li,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function LX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d,!0),A=vc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,b=m.outChannels,_=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==b)throw new Error(`FusedDepthwiseConv2D bias shape (${Q.shape}) does not match the number of output channels (${b})`);_=Q.id}let w=m.filterHeight,x=m.filterWidth,N=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let se=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(se.dataId).id,oe=o==null?0:r.dataIdMap.get(o.dataId).id;return o3(y,j,ee,Y,g,w,x,_,N,S,T,M,X,D,z,W,U,H,b,A,oe,f||0,te),se}var WX={kernelName:li,backendName:"wasm",setupFunc:PX,kernelFunc:LX},l3;function BX(e){l3=e.wasm.cwrap(Io,null,["number","number","number","number","number","number","array","number"])}function VX(e){let{backend:t,inputs:n}=e,{params:r,indices:a}=n,[s,i,o,l]=Vf.prepareAndValidate(r,a),u=t.makeOutput(s,r.dtype);if(i===0)return u;let c=a.shape,h=c[c.length-1],d=t.dataIdMap.get(r.dataId).id,p=t.dataIdMap.get(a.dataId).id,f=new Uint8Array(new Int32Array(l).buffer),m=t.dataIdMap.get(u.dataId).id;return l3(d,Vn[r.dtype],p,i,h,o,f,m),u}var UX={kernelName:Io,backendName:"wasm",setupFunc:BX,kernelFunc:VX},u3;function HX(e){u3=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function jX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a,indices:s}=n,{axis:i,batchDims:o}=r,l=v.parseAxisParam(i,a.shape)[0],u=R.segment_util.collectGatherOpShapeInfo(a,s,l,o),c=Nr({inputs:{x:a},attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]},backend:t}),h=v.sizeFromShape(s.shape),d=Nr({inputs:{x:s},attrs:{shape:[u.batchSize,h/u.batchSize]},backend:t}),p=[u.batchSize,u.outerSize,h/u.batchSize,u.sliceSize],f=t.makeOutput(p,a.dtype);if(v.sizeFromShape(a.shape)===0)return f;let m=c.shape.length-1,A=t.dataIdMap.get(c.dataId).id,y=t.dataIdMap.get(d.dataId).id,g=t.dataIdMap.get(f.dataId).id,b=new Uint8Array(new Int32Array(v.computeStrides(c.shape)).buffer),_=new Uint8Array(new Int32Array(v.computeStrides(p)).buffer);return u3(A,Vn[a.dtype],b,m,y,u.batchSize,_,g),t.disposeData(c.dataId),t.disposeData(d.dataId),f.shape=u.outputShape,f}var GX={kernelName:ko,backendName:"wasm",setupFunc:HX,kernelFunc:jX},qX=!1,XX=wn(No,qX,"bool"),KX=!1,ZX=wn(Cs,KX,"bool"),c3;function YX(e){c3=e.wasm.cwrap(Fs,null,["number","number","number"])}function JX(e){let{inputs:{x:t},attrs:{alpha:n},backend:r}=e,a=r.dataIdMap.get(t.dataId).id,s=r.makeOutput(t.shape,t.dtype);if(v.sizeFromShape(t.shape)!==0){let i=r.dataIdMap.get(s.dataId).id;c3(a,n,i)}return s}var QX={kernelName:Fs,backendName:"wasm",setupFunc:YX,kernelFunc:JX},eK=!1,tK=wn(Co,eK,"bool"),nK=!1,rK=wn(Ro,nK,"bool"),aK=Rn(Ms),sK=!1,iK=wn(Mo,sK,"bool"),h3;function oK(e){h3=e.wasm.cwrap($s,null,["number, number, number"])}function lK(e){let{backend:t,inputs:n,attrs:r}=e,{reductionIndices:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:u,axes:c,originalAxes:h,inputWasTransposed:d}=Ul(i,a,t);if(d){let g=t.dataIdMap.get(u.dataId).id;l=u,o=g}let p=l.shape.length;R.assertAxesAreInnerMostDims("max",c,p);let[f,m]=R.computeOutAndReduceShapes(l.shape,c),A=v.sizeFromShape(m),y=t.makeOutput(f,i.dtype);if(v.sizeFromShape(l.shape)!==0){let g=t.dataIdMap.get(y.dataId).id;h3(o,A,g)}if(d&&t.disposeData(u.dataId),s){let g=R.expandShapeToKeepDim(y.shape,h);y.shape=g}return y}var uK={kernelName:$s,backendName:"wasm",setupFunc:oK,kernelFunc:lK},cK=!1,hK=wn(Ds,cK),d3;function dK(e){d3=e.wasm.cwrap(Os,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function pK(e){let{inputs:t,attrs:n,backend:r}=e,a=t.x,s=r.dataIdMap.get(a.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=n,c=R.computePool2DInfo(a.shape,i,o,1,l,u),h=c.filterHeight,d=c.filterWidth,p=c.padInfo.top,f=c.padInfo.right,m=c.padInfo.bottom,A=c.padInfo.left,y=c.dilationHeight,g=c.dilationWidth,b=c.strideHeight,_=c.strideWidth,w=c.inChannels,x=c.outChannels;if(c.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);let N=r.makeOutput(c.outShape,"float32"),S=r.dataIdMap.get(N.dataId).id;return d3(s,a.shape[0],a.shape[1],a.shape[2],h,d,p,f,m,A,y,g,b,_,w,x,S),N}var fK={kernelName:Os,backendName:"wasm",setupFunc:dK,kernelFunc:pK},p3;function mK(e){p3=e.wasm.cwrap(zs,null,["number, number, number"])}function AK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("mean",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=u;u.dtype!=="float32"&&(g=Mp({backend:t,inputs:{x:u},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(g.dataId).id);let b=t.makeOutput(m,"float32");if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(b.dataId).id;p3(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(b.shape,d);b.shape=_}return u.dtype!=="float32"&&t.disposeData(g.dataId),b}var yK={kernelName:zs,backendName:"wasm",setupFunc:mK,kernelFunc:AK},f3;function gK(e){f3=e.wasm.cwrap(Ps,null,["number, number, number"])}function xK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t);if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b)}let f=u.shape.length;R.assertAxesAreInnerMostDims("min",h,f);let[m,A]=R.computeOutAndReduceShapes(u.shape,h),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(g.dataId).id;f3(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(g.shape,d);g.shape=b}return g}var wK={kernelName:Ps,backendName:"wasm",setupFunc:gK,kernelFunc:xK},bK=!1,_K=wn(Ls,bK),vK=!0,kK=wn(Ws,vK),IK=Rn(Do);function kA(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),r=n[0],a=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:r,selectedSize:a,pSelectedScores:s,pValidOutputs:i}}var m3;function NK(e){m3=e.wasm.cwrap(zo,"number",["number","number","number","number","number"])}function SK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i}=r,{boxes:o,scores:l}=n,u=t.dataIdMap.get(o.dataId).id,c=t.dataIdMap.get(l.dataId).id,h=m3(u,c,s,a,i),{pSelectedIndices:d,selectedSize:p,pSelectedScores:f,pValidOutputs:m}=kA(t,h);return t.wasm._free(f),t.wasm._free(m),t.makeOutput([p],"int32",d)}var TK={kernelName:zo,backendName:"wasm",setupFunc:NK,kernelFunc:SK},A3;function EK(e){A3=e.wasm.cwrap(Po,"number",["number","number","number","number","number","bool"])}function CK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=A3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=kA(t,d);t.wasm._free(m);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([],"int32",A);return[y,g]}var RK={kernelName:Po,backendName:"wasm",setupFunc:EK,kernelFunc:CK},y3;function FK(e){y3=e.wasm.cwrap(Lo,"number",["number","number","number","number","number","number"])}function MK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=y3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=kA(t,d);t.wasm._free(A);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([f],"float32",m);return[y,g]}var $K={kernelName:Lo,backendName:"wasm",setupFunc:FK,kernelFunc:MK},DK=!1,OK=wn(Oo,DK,"bool"),g3;function zK(e){g3=e.wasm.cwrap(Bs,null,["number","number","number","number","number"])}function PK(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=n.makeOutput([...a.shape,s],"int32"),u=n.dataIdMap.get(l.dataId).id,c=n.dataIdMap.get(a.dataId).id;return g3(c,s,i,o,u),l}var LK={kernelName:Bs,backendName:"wasm",setupFunc:zK,kernelFunc:PK};function WK(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(1),r}var BK={kernelName:Wo,backendName:"wasm",kernelFunc:WK};function VK(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return vA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=vA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=Y_({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeData(c.dataId)),u}var UK={kernelName:Bo,backendName:"wasm",kernelFunc:VK},x3;function HK(e){x3=e.wasm.cwrap(Vs,null,["number","array","number","number","array","array","number","number"])}function jK(e){let{inputs:{x:t},backend:n,attrs:{paddings:r,constantValue:a}}=e,s=r.map((f,m)=>f[0]+t.shape[m]+f[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(t.shape).buffer),c=r.map(f=>f[0]),h=r.map(f=>f[1]),d=new Uint8Array(new Int32Array(c).buffer),p=new Uint8Array(new Int32Array(h).buffer);return x3(i,u,t.shape.length,Vn[t.dtype],d,p,a,l),o}var GK={kernelName:Vs,backendName:"wasm",kernelFunc:jK,setupFunc:HK},qK=!1,XK=wn(Us,qK),w3;function KK(e){w3=e.wasm.cwrap(Hs,null,["number","number","number"])}function ZK(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,o=n.makeOutput(r.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return w3(s,i,l),o}var YK={kernelName:Hs,backendName:"wasm",setupFunc:KK,kernelFunc:ZK},b3;function JK(e){b3=e.wasm.cwrap(Vo,null,["number","number","number","number"])}function QK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("prod",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(g.dataId).id;b3(l,y,Vn[g.dtype],b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(g.shape,d);g.shape=b}return g}var eZ={kernelName:Vo,backendName:"wasm",setupFunc:JK,kernelFunc:QK},tZ=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=Gm(r,a,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},nZ={kernelName:Eu,backendName:"wasm",kernelFunc:tZ},rZ=!0,aZ=wn(Is,rZ),sZ=Rn(js),iZ=Rn(qs),_3;function oZ(e){_3=e.wasm.cwrap(Gs,null,["number","number","number","number","number","number","number","number","number","number"])}function lZ(e){let{backend:t,inputs:n,attrs:r}=e,{images:a}=n,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,[c,h,d,p]=a.shape,f=[c,l,u,p],m=t.dataIdMap.get(a.dataId),A;m.dtype!=="float32"&&(A=Mp({backend:t,inputs:{x:a},attrs:{dtype:"float32"}}),m=t.dataIdMap.get(A.dataId));let y=m.id,g=t.makeOutput(f,"float32");if(v.sizeFromShape(a.shape)===0)return g;let b=t.dataIdMap.get(g.dataId).id;return _3(y,c,h,d,p,l,u,s?1:0,i?1:0,b),A!=null&&t.disposeData(A.dataId),g}var uZ={kernelName:Gs,backendName:"wasm",setupFunc:oZ,kernelFunc:lZ},v3;function cZ(e){v3=e.wasm.cwrap(Xs,null,["number","array","number","array","number","number"])}function hZ(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=v.parseAxisParam(s,a.shape);if(a.shape.length===0)return Rp({inputs:{x:a},backend:n});let o=n.makeOutput(a.shape,a.dtype),l=n.dataIdMap.get(a.dataId).id,u=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(i).buffer),h=new Uint8Array(new Int32Array(a.shape).buffer);v3(l,c,i.length,h,a.shape.length,u);let d=Nr({inputs:{x:o},attrs:{shape:a.shape},backend:n});return n.disposeData(o.dataId),d}var dZ={kernelName:Xs,backendName:"wasm",kernelFunc:hZ,setupFunc:cZ},k3;function pZ(e){k3=e.wasm.cwrap(al,null,["number","number","number","number","number","number","number","number","array","number","number"])}function fZ(e){let{inputs:t,backend:n,attrs:r}=e,{image:a}=t,{radians:s,fillValue:i,center:o}=r,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(a.dataId).id,c=n.dataIdMap.get(l.dataId).id,[h,d,p,f]=a.shape,[m,A]=R.getImageCenter(o,d,p),y=i===0,g=255,b=typeof i=="number"?[i,i,i,y?0:g]:[...i,g],_=new Uint8Array(new Int32Array(b).buffer);return k3(u,h,d,p,f,s,m,A,_,b.length,c),l}var mZ={kernelName:al,backendName:"wasm",kernelFunc:fZ,setupFunc:pZ},AZ=Rn(Ks),yZ=Rn(Zs),I3;function gZ(e){I3=e.wasm.cwrap(jo,null,["number","number","number","number","number","number","array","number","number"])}function xZ(e){let{backend:t,inputs:n,attrs:r}=e,{indices:a,updates:s}=n,{shape:i}=r,o=t.makeOutput(i,s.dtype);if(v.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:u,sliceSize:c,strides:h,outputSize:d}=Uf.calculateShapes(s,a,i),p=t.dataIdMap.get(a.dataId).id,f=t.dataIdMap.get(s.dataId).id,m=new Uint8Array(new Int32Array(h).buffer),A=t.dataIdMap.get(o.dataId).id;return I3(p,f,Vn[s.dtype],l,u,c,m,d,A),o}var wZ={kernelName:jo,backendName:"wasm",setupFunc:gZ,kernelFunc:xZ},N3;function bZ(e){N3=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function _Z(e){let{inputs:t,backend:n}=e,{condition:r,t:a,e:s}=t,i=n.dataIdMap.get(r.dataId).id,o=n.dataIdMap.get(a.dataId).id,l=n.dataIdMap.get(s.dataId).id,u=n.makeOutput(a.shape,a.dtype),c=n.dataIdMap.get(u.dataId).id,h=r.shape.length,d=a.shape.length,p=h===0||h>1||d===1?1:v.sizeFromShape(a.shape.slice(1));return N3(i,o,l,p,c),u}var vZ={kernelName:Go,backendName:"wasm",kernelFunc:_Z,setupFunc:bZ},S3;function kZ(e){S3=e.wasm.cwrap(Js,null,["number","number"])}function IZ(e){let{backend:t,inputs:{x:n}}=e,r=t.dataIdMap.get(n.dataId).id,a=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(a.dataId).id;return v.sizeFromShape(a.shape)===0||S3(r,s),a}var NZ={kernelName:"Sigmoid",backendName:"wasm",setupFunc:kZ,kernelFunc:IZ},SZ=Rn(Ys);function $p(e){let{inputs:{x:t},attrs:{begin:n,size:r},backend:a}=e,[s,i]=fn.parseSliceParams(t,n,r),o=fn.isSliceContinous(t.shape,s,i),l=a.readSync(t.dataId),u=a.makeOutput(i,t.dtype),c=v.computeStrides(t.shape),h=a.dataIdMap.get(u.dataId);if(o){let f=fn.computeFlatOffset(s,c);return t.dtype==="string"?h.stringBytes=l.slice(f,f+v.sizeFromShape(i)):a.typedArrayFromHeap(u).set(l.subarray(f,f+v.sizeFromShape(i))),u}if(t.dtype==="string"){let f=up(l,s,i,t.shape,t.dtype);return h.stringBytes=f,u}let d=a.typedArrayFromHeap(u),p=t.shape.length;if(p===2)TZ(l,c[0],d,s,i);else if(p===3)EZ(l,c[0],c[1],d,s,i);else if(p===4)CZ(l,c[0],c[1],c[2],d,s,i);else{let f=up(l,s,i,t.shape,t.dtype);d.set(f)}return u}function TZ(e,t,n,r,a){let s=0,i=r[0],o=r[1],l=i+a[0];for(let u=i;u{let d=[...c];d[o]=h;let p=$p({inputs:{x:a},attrs:{begin:u,size:d},backend:r});return u[o]+=h,p})}var OZ={kernelName:Jo,backendName:"wasm",kernelFunc:DZ},zZ=Rn(Qs),PZ=Rn(Fu),LZ=!0,WZ=wn(ni,LZ),E3;function BZ(e){E3=e.wasm.cwrap($a,null,["number","number","number"])}function VZ(e){let{backend:t,inputs:n,attrs:r}=e,{alpha:a}=r,{x:s}=n,i=t.dataIdMap.get(s.dataId).id,o=t.makeOutput(s.shape,s.dtype),l=t.dataIdMap.get(o.dataId).id;return E3(i,a,l),o}var UZ={kernelName:$a,backendName:"wasm",setupFunc:BZ,kernelFunc:VZ},C3;function HZ(e){C3=e.wasm.cwrap(Qo,null,["number","array","number","array","array","array","array","array","number","number"])}function jZ(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{begin:s,end:i,strides:o}=r;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,p=R.slice_util.maskToAxes(c);if(p.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(c!==0&&h!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(c!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let f=a.shape.length-s.length,m=R.slice_util.maskToAxes(h),A=a.shape.slice();m.forEach(M=>{s[M]=0,i[M]=1,A.splice(M,0,1)});let y=Nr({inputs:{x:a},attrs:{shape:A},backend:t}),{begin:g,end:b,strides:_}=R.slice_util.getNormalizedAxes(y.shape,p,f,s,i,o,l,u,c);s=g,i=b,o=_;let w=R.slice_util.maskToAxes(d);w.forEach(M=>{i[M]=s[M]+1,o[M]=1});let x=R.slice_util.computeOutShape(s,i,o),N=x.filter((M,D)=>w.indexOf(D)===-1);if(o.every(M=>M===1)){let M=$p({inputs:{x:y},attrs:{begin:s,size:x},backend:t});t.disposeData(y.dataId);let D=Nr({inputs:{x:M},attrs:{shape:N},backend:t});return t.disposeData(M.dataId),D}let S=t.makeOutput(N,"float32");if(!N.some(M=>M===0)){let M=t.dataIdMap.get(y.dataId).id,D=new Uint8Array(new Int32Array(v.computeStrides(y.shape)).buffer),z=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),U=new Uint8Array(new Int32Array(o).buffer),H=new Uint8Array(new Int32Array(N).buffer),X=new Uint8Array(new Int32Array(v.computeStrides(N)).buffer),j=t.dataIdMap.get(S.dataId).id;C3(M,D,y.shape.length,z,W,U,H,X,N.length,j)}t.disposeData(y.dataId);let T=Nr({inputs:{x:S},attrs:{shape:N},backend:t});return t.disposeData(S.dataId),T}var GZ={kernelName:Qo,backendName:"wasm",setupFunc:HZ,kernelFunc:jZ},qZ=!0,XZ=wn(ri,qZ),R3;function KZ(e){R3=e.wasm.cwrap(ei,null,["number, number, number"])}function ZZ(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("sum",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(g.dataId).id;R3(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(g.shape,d);g.shape=b}return g}var YZ={kernelName:ei,backendName:"wasm",setupFunc:KZ,kernelFunc:ZZ},JZ=Rn(ai),F3;function QZ(e){F3=e.wasm.cwrap(Ma,null,["number","array","number","array","number","number"])}function eY(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,s=n.dataIdMap.get(a.dataId).id,{reps:i}=r,o=new Array(a.shape.length);for(let d=0;d{let{x:r}=e,{k:a,sorted:s}=n,i=t.dataIdMap.get(r.dataId).id,o=new Uint8Array(new Int32Array(r.shape).buffer),l=r.shape.slice();l[l.length-1]=a;let u=t.makeOutput(l,r.dtype),c=t.dataIdMap.get(u.dataId).id,h=t.makeOutput(l,"int32"),d=t.dataIdMap.get(h.dataId).id;return M3(i,o,r.shape.length,Vn[r.dtype],a,s,c,d),[u,h]},aY={kernelName:tl,backendName:"wasm",setupFunc:nY,kernelFunc:rY};function sY(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a.shape[s],o=a.shape.length,l=new Array(o-1),u=0;for(let p=0;p({dataId:p,dtype:f,shape:l}))}var iY={kernelName:nl,backendName:"wasm",kernelFunc:sY};function oY(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(0),r}var lY={kernelName:rl,backendName:"wasm",kernelFunc:oY},uY=[Tq,Cq,Mq,Bq,Hq,Xq,Kq,Zq,Qq,eX,rX,iX,oX,cX,pX,AX,xX,bX,_X,vX,IX,TX,EX,RX,Sq,$X,zX,WX,UX,GX,XX,ZX,$q,QX,tK,rK,aK,iK,uK,hK,fK,yK,wK,_K,kK,IK,TK,RK,$K,OK,LK,BK,UK,GK,XK,YK,eZ,nZ,aZ,sZ,iZ,jq,uZ,dZ,mZ,yZ,AZ,wZ,vZ,NZ,SZ,RZ,$Z,OZ,zZ,PZ,WZ,UZ,GZ,XZ,YZ,JZ,tY,aY,Pq,iY,lY];for(let e of uY)ui(e);var IA=J();IA.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));IA.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(IA.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var $3=no(mk()),cY='var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["getNoExitRuntime"]()){}else{Module["PThread"].threadExit(ex.status)}}else{Module["PThread"].threadExit(-2);throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',hY=no(Ak()),D3=class extends fu{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new Rh(this,Pr())}write(e,t,n){let r={id:this.dataIdNextNumber++};return this.move(r,e,t,n,1),r}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}move(e,t,n,r,a){let s=this.dataIdNextNumber++;if(r==="string"){let u=t;this.dataIdMap.set(e,{id:s,stringBytes:u,shape:n,dtype:r,memoryOffset:null,refCount:a});return}let i=v.sizeFromShape(n),o=i*v.bytesPerElement(r),l=this.wasm._malloc(o);this.dataIdMap.set(e,{id:s,memoryOffset:l,shape:n,dtype:r,refCount:a}),this.wasm.tfjs.registerTensor(s,i,l),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,o),l)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:r,stringBytes:a}=this.dataIdMap.get(e);if(n==="string")return a;let s=this.wasm.HEAPU8.slice(t,t+v.sizeFromShape(r)*v.bytesPerElement(n));return dY(s.buffer,n)}disposeData(e,t=!1){if(this.dataIdMap.has(e)){let n=this.dataIdMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;this.wasm._free(n.memoryOffset),this.wasm.tfjs.disposeData(n.id),this.dataIdMap.delete(e)}return!0}refCount(e){return this.dataIdMap.has(e)?this.dataIdMap.get(e).refCount:0}incRef(e){let t=this.dataIdMap.get(e);t!=null&&t.refCount++}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let r;if(n==null)r=this.write(null,e,t);else{let a=this.dataIdNextNumber++;r={id:a},this.dataIdMap.set(r,{id:a,memoryOffset:n,shape:e,dtype:t,refCount:1});let s=v.sizeFromShape(e);this.wasm.tfjs.registerTensor(a,s,n)}return{dataId:r,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let r=this.wasm.HEAPU8.buffer,{memoryOffset:a}=this.dataIdMap.get(n),s=v.sizeFromShape(e);switch(t){case"float32":return new Float32Array(r,a,s);case"int32":return new Int32Array(r,a,s);case"bool":return new Uint8Array(r,a,s);default:throw new Error(`Unknown dtype ${t}`)}}};function pY(e){return(t,n)=>(v.fetch(e,{credentials:"same-origin"}).then(r=>{r.ok||t.env.a(`failed to load wasm binary file at '${e}'`),r.arrayBuffer().then(a=>{WebAssembly.instantiate(a,t).then(s=>{n(s.instance)})})}),{})}function O3(e,t,n){if(Dp!=null)return Dp;let r="tfjs-backend-wasm.wasm";return e&&t?r="tfjs-backend-wasm-threaded-simd.wasm":e&&(r="tfjs-backend-wasm-simd.wasm"),kc!=null&&kc[r]!=null?kc[r]:n+r}async function fY(){let[e,t]=await Promise.all([J().getAsync("WASM_HAS_SIMD_SUPPORT"),J().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,r)=>{let a={};a.locateFile=(o,l)=>{if(o.endsWith(".worker.js")){let u=cY,c=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(c)}return o.endsWith(".wasm")?O3(e,t,Ic!=null?Ic:l):l+o},NA&&(a.instantiateWasm=pY(O3(e,t,Ic!=null?Ic:"")));let s=!1;a.onAbort=()=>{s||Nc||(Nc=!0,r({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))};let i;t&&e&&Dp==null?(a.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+$3.default.toString()],{type:"text/javascript"}),i=(0,$3.default)(a)):i=(0,hY.default)(a),i.then(o=>{s=!0,Nc=!1;let l=null;o.tfjs={init:o.cwrap("init",null,[]),registerTensor:o.cwrap("register_tensor",null,["number","number","number"]),disposeData:o.cwrap("dispose_data",l,["number"]),dispose:o.cwrap("dispose",l,[])},n({wasm:o})})})}function dY(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var mY=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],Dp=null,Ic=null,kc={},Nc=!1,NA=!1;function AY(e,t=!1){if(Kf("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),Nc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");Dp=e,NA=t}function yY(e,t=!1){if(Nc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Ic=e;else{kc=e;let n=mY.filter(r=>kc[r]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}NA=t}var z3="3.3.0",gY=2;fl("wasm",async()=>{let{wasm:e}=await fY();return new D3(e)},gY);Z().prototype.abs=function(){return this.throwIfDisposed(),Bt(this)};Z().prototype.acos=function(){return this.throwIfDisposed(),Yf(this)};Z().prototype.acosh=function(){return this.throwIfDisposed(),Jf(this)};Z().prototype.add=function(e){return this.throwIfDisposed(),ie(this,e)};Z().prototype.all=function(e,t){return this.throwIfDisposed(),kd(this,e,t)};Z().prototype.any=function(e,t){return this.throwIfDisposed(),ju(this,e,t)};Z().prototype.argMax=function(e){return this.throwIfDisposed(),Gu(this,e)};Z().prototype.argMin=function(e){return this.throwIfDisposed(),Qf(this,e)};Z().prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),G(this,[])};Z().prototype.asType=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.as1D=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.as2D=function(e,t){return this.throwIfDisposed(),G(this,[e,t])};Z().prototype.as3D=function(e,t,n){return this.throwIfDisposed(),G(this,[e,t,n])};Z().prototype.as4D=function(e,t,n,r){return this.throwIfDisposed(),G(this,[e,t,n,r])};Z().prototype.as5D=function(e,t,n,r,a){return this.throwIfDisposed(),G(this,[e,t,n,r,a])};Z().prototype.asin=function(){return this.throwIfDisposed(),em(this)};Z().prototype.asinh=function(){return this.throwIfDisposed(),tm(this)};Z().prototype.atan=function(){return this.throwIfDisposed(),nm(this)};Z().prototype.atan2=function(e){return this.throwIfDisposed(),rm(this,e)};Z().prototype.atanh=function(){return this.throwIfDisposed(),am(this)};Z().prototype.avgPool=function(e,t,n,r){return this.throwIfDisposed(),Xu(this,e,t,n,r)};Z().prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Ku(this,e,t)};Z().prototype.batchNorm=function(e,t,n,r,a){return this.throwIfDisposed(),mi(this,e,t,n,r,a)};Z().prototype.broadcastTo=function(e){return this.throwIfDisposed(),Zu(this,e)};Z().prototype.cast=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.ceil=function(){return this.throwIfDisposed(),lm(this)};Z().prototype.clipByValue=function(e,t){return this.throwIfDisposed(),Sn(this,e,t)};Z().prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof Ge&&(e=[e]),lt([this,...e],t)};Z().prototype.conv1d=function(e,t,n,r,a,s){return this.throwIfDisposed(),Nd(this,e,t,n,r,a,s)};Z().prototype.conv2dTranspose=function(e,t,n,r,a){return this.throwIfDisposed(),Sd(this,e,t,n,r,a)};Z().prototype.conv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ua(this,e,t,n,r,a,s)};Z().prototype.cos=function(){return this.throwIfDisposed(),Yu(this)};Z().prototype.cosh=function(){return this.throwIfDisposed(),Td(this)};Z().prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),Ed(this,e,t,n)};Z().prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),hm(this,e,t)};Z().prototype.depthwiseConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),gl(this,e,t,n,r,a,s)};Z().prototype.dilation2d=function(e,t,n,r,a){return this.throwIfDisposed(),dm(this,e,t,n,r,a)};Z().prototype.divNoNan=function(e){return this.throwIfDisposed(),pm(this,e)};Z().prototype.div=function(e){return this.throwIfDisposed(),be(this,e)};Z().prototype.dot=function(e){return this.throwIfDisposed(),mx(this,e)};Z().prototype.elu=function(){return this.throwIfDisposed(),xl(this)};Z().prototype.equal=function(e){return this.throwIfDisposed(),Ba(this,e)};Z().prototype.erf=function(){return this.throwIfDisposed(),fm(this)};Z().prototype.exp=function(){return this.throwIfDisposed(),Jn(this)};Z().prototype.expandDims=function(e){return this.throwIfDisposed(),mn(this,e)};Z().prototype.expm1=function(){return this.throwIfDisposed(),mm(this)};Z().prototype.fft=function(){return this.throwIfDisposed(),oc(this)};Z().prototype.flatten=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.floor=function(){return this.throwIfDisposed(),wl(this)};Z().prototype.floorDiv=function(e){return this.throwIfDisposed(),vd(this,e)};Z().prototype.gather=function(e,t){return this.throwIfDisposed(),Ai(this,e,t)};Z().prototype.greaterEqual=function(e){return this.throwIfDisposed(),Ua(this,e)};Z().prototype.greater=function(e){return this.throwIfDisposed(),ur(this,e)};Z().prototype.ifft=function(){return this.throwIfDisposed(),Il(this)};Z().prototype.irfft=function(){return this.throwIfDisposed(),Gd(this)};Z().prototype.isFinite=function(){return this.throwIfDisposed(),Ax(this)};Z().prototype.isInf=function(){return this.throwIfDisposed(),yx(this)};Z().prototype.isNaN=function(){return this.throwIfDisposed(),gx(this)};Z().prototype.leakyRelu=function(e){return this.throwIfDisposed(),Qu(this,e)};Z().prototype.lessEqual=function(e){return this.throwIfDisposed(),yi(this,e)};Z().prototype.less=function(e){return this.throwIfDisposed(),Rd(this,e)};Z().prototype.localResponseNormalization=function(e,t,n,r){return this.throwIfDisposed(),ym(this,e,t,n,r)};Z().prototype.logSigmoid=function(){return this.throwIfDisposed(),bx(this)};Z().prototype.logSoftmax=function(e){return this.throwIfDisposed(),$d(this,e)};Z().prototype.logSumExp=function(e,t){return this.throwIfDisposed(),wm(this,e,t)};Z().prototype.log=function(){return this.throwIfDisposed(),zn(this)};Z().prototype.log1p=function(){return this.throwIfDisposed(),Fd(this)};Z().prototype.logicalAnd=function(e){return this.throwIfDisposed(),cr(this,e)};Z().prototype.logicalNot=function(){return this.throwIfDisposed(),ec(this)};Z().prototype.logicalOr=function(e){return this.throwIfDisposed(),Dd(this,e)};Z().prototype.logicalXor=function(e){return this.throwIfDisposed(),Ix(this,e)};Z().prototype.matMul=function(e,t,n){return this.throwIfDisposed(),Ke(this,e,t,n)};Z().prototype.maxPool=function(e,t,n,r){return this.throwIfDisposed(),tc(this,e,t,n,r)};Z().prototype.max=function(e,t){return this.throwIfDisposed(),Qn(this,e,t)};Z().prototype.maximum=function(e){return this.throwIfDisposed(),Br(this,e)};Z().prototype.mean=function(e,t){return this.throwIfDisposed(),Tt(this,e,t)};Z().prototype.min=function(e,t){return this.throwIfDisposed(),_l(this,e,t)};Z().prototype.minimum=function(e){return this.throwIfDisposed(),vl(this,e)};Z().prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),_m(this,e,t)};Z().prototype.mod=function(e){return this.throwIfDisposed(),vm(this,e)};Z().prototype.mul=function(e){return this.throwIfDisposed(),P(this,e)};Z().prototype.neg=function(){return this.throwIfDisposed(),St(this)};Z().prototype.norm=function(e,t,n){return this.throwIfDisposed(),Zd(this,e,t,n)};Z().prototype.notEqual=function(e){return this.throwIfDisposed(),xi(this,e)};Z().prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),hl(this,e,t,n)};Z().prototype.onesLike=function(){return this.throwIfDisposed(),Pn(this)};Z().prototype.pad=function(e,t){return this.throwIfDisposed(),ca(this,e,t)};Z().prototype.pool=function(e,t,n,r,a){return this.throwIfDisposed(),Tx(this,e,t,n,r,a)};Z().prototype.pow=function(e){return this.throwIfDisposed(),ha(this,e)};Z().prototype.prelu=function(e){return this.throwIfDisposed(),rc(this,e)};Z().prototype.prod=function(e,t){return this.throwIfDisposed(),zd(this,e,t)};Z().prototype.reciprocal=function(){return this.throwIfDisposed(),Nm(this)};Z().prototype.relu=function(){return this.throwIfDisposed(),Ur(this)};Z().prototype.relu6=function(){return this.throwIfDisposed(),Ld(this)};Z().prototype.reshapeAs=function(e){return this.throwIfDisposed(),G(this,e.shape)};Z().prototype.reshape=function(e){return this.throwIfDisposed(),G(this,e)};Z().prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),Gx(this,e,t,n)};Z().prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),qx(this,e,t,n)};Z().prototype.reverse=function(e){return this.throwIfDisposed(),Ln(this,e)};Z().prototype.rfft=function(){return this.throwIfDisposed(),lc(this)};Z().prototype.round=function(){return this.throwIfDisposed(),Sm(this)};Z().prototype.rsqrt=function(){return this.throwIfDisposed(),Wd(this)};Z().prototype.selu=function(){return this.throwIfDisposed(),Bd(this)};Z().prototype.separableConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),Tm(this,e,t,n,r,a,s)};Z().prototype.sigmoid=function(){return this.throwIfDisposed(),On(this)};Z().prototype.sign=function(){return this.throwIfDisposed(),Em(this)};Z().prototype.sin=function(){return this.throwIfDisposed(),Vd(this)};Z().prototype.sinh=function(){return this.throwIfDisposed(),Ud(this)};Z().prototype.slice=function(e,t){return this.throwIfDisposed(),$e(this,e,t)};Z().prototype.softmax=function(e){return this.throwIfDisposed(),ic(this,e)};Z().prototype.softplus=function(){return this.throwIfDisposed(),bl(this)};Z().prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),nc(this,e,t)};Z().prototype.split=function(e,t){return this.throwIfDisposed(),Ut(this,e,t)};Z().prototype.sqrt=function(){return this.throwIfDisposed(),an(this)};Z().prototype.square=function(){return this.throwIfDisposed(),ht(this)};Z().prototype.squaredDifference=function(e){return this.throwIfDisposed(),qd(this,e)};Z().prototype.squeeze=function(e){return this.throwIfDisposed(),Ha(this,e)};Z().prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof Ge?[this,e]:[this,...e];return An(n,t)};Z().prototype.step=function(e){return this.throwIfDisposed(),Nl(this,e)};Z().prototype.stridedSlice=function(e,t,n,r,a,s,i,o){return this.throwIfDisposed(),Rm(this,e,t,n,r,a,s,i,o)};Z().prototype.sub=function(e){return this.throwIfDisposed(),we(this,e)};Z().prototype.sum=function(e,t){return this.throwIfDisposed(),Re(this,e,t)};Z().prototype.tan=function(){return this.throwIfDisposed(),Fm(this)};Z().prototype.tanh=function(){return this.throwIfDisposed(),Al(this)};Z().prototype.tile=function(e){return this.throwIfDisposed(),Va(this,e)};Z().prototype.toBool=function(){return this.throwIfDisposed(),ge(this,"bool")};Z().prototype.toFloat=function(){return this.throwIfDisposed(),ge(this,"float32")};Z().prototype.toInt=function(){return this.throwIfDisposed(),ge(this,"int32")};Z().prototype.topk=function(e,t){return this.throwIfDisposed(),Mm(this,e,t)};Z().prototype.transpose=function(e){return this.throwIfDisposed(),ot(this,e)};Z().prototype.unique=function(e){return this.throwIfDisposed(),Kd(this,e)};Z().prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),$m(this,e,t)};Z().prototype.unstack=function(e){return this.throwIfDisposed(),hr(this,e)};Z().prototype.where=function(e,t){return this.throwIfDisposed(),Tn(e,this,t)};Z().prototype.zerosLike=function(){return this.throwIfDisposed(),qe(this)};var P3={kernelName:so,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Nl(ge(n,"float32"),-1))}}},xY={kernelName:io,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=ht(ge(n,"float32")),a=an(we(Ie(1),r));return St(be(e,a))}}}},wY={kernelName:oo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=an(we(ht(ge(n,"float32")),1));return be(e,r)}}}},bY={kernelName:Ra,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=e,i=Vt(n.shape,a);return i.length>0&&(s=Re(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Vt(r.shape,a);return i.length>0&&(s=Re(s,i)),G(s,r.shape)}}}},_Y={kernelName:fs,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((r,a)=>{n[a]=()=>e.clone()}),n}},vY={kernelName:ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>qe(n)}}},kY={kernelName:yu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>qe(n)}}},IY={kernelName:lo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,an(we(Ie(1),ht(ge(n,"float32")))))}}},NY={kernelName:uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=an(ie(Ie(1),ht(ge(n,"float32"))));return be(e,r)}}}},SY={kernelName:po,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=ie(ht(n),ht(r)),i=P(e,be(r,s)),o=Vt(n.shape,a);return o.length>0&&(i=Re(i,o)),G(i,n.shape)},b:()=>{let s=ie(ht(n),ht(r)),i=St(P(e,be(n,s))),o=Vt(r.shape,a);return o.length>0&&(i=Re(i,o)),G(i,r.shape)}}}},TY={kernelName:co,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ie(ht(ge(n,"float32")),1))}}},EY={kernelName:ho,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,we(Ie(1),ht(ge(n,"float32"))))}}};function CY(e,t,n,r,a,s){let i=C(e,"dy","avgPool3dGrad"),o=C(t,"input","avgPool3dGrad"),l=i,u=o,c=!1;o.rank===4&&(c=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),u=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),s!=null&&F(Kt(a),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${s} but got pad ${a}.`);let h={dy:l,input:u},d={filterSize:n,strides:r,pad:a,dimRoundingMode:s},p=$.runKernel(Ph,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var RY=O({avgPool3dGrad_:CY}),FY={kernelName:gu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i,dimRoundingMode:o}=n;return{x:()=>RY(e,r,a,s,i,o)}}};function MY(e,t,n,r,a){let s=C(e,"dy","avgPoolGrad"),i=C(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,u=!1;i.rank===3&&(u=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let c={dy:l,input:o},h={filterSize:n,strides:r,pad:a},d=$.runKernel(zh,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var $Y=O({avgPoolGrad_:MY}),DY={kernelName:As,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i}=n;return{x:()=>$Y(e,r,a,s,i)}}},OY={kernelName:ys,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[r,a]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>Ke(e,a,!1,!0),b:()=>Ke(r,e,!0,!1)}:!s&&i?{a:()=>Ke(e,a,!1,!1),b:()=>Ke(e,r,!0,!1)}:s&&!i?{a:()=>Ke(a,e,!1,!0),b:()=>Ke(r,e,!1,!1)}:{a:()=>Ke(a,e,!0,!0),b:()=>Ke(e,r,!0,!0)}}},zY={kernelName:xu,gradFunc:(e,t,n)=>{let{blockShape:r,crops:a}=n;return{x:()=>nc(e,r,a)}}},PY={kernelName:u5,gradFunc:(e,t,n)=>{let r=n,a=r.inputShape,s=r.shape,i=Array.from(s);for(let l=a.length-1;l>=0;l--)if(a[l]===s[l])i[l]=1;else if(a[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Re(e,o,!0)}}},LY={kernelName:gs,gradFunc:e=>({x:()=>e.clone()})},WY={kernelName:xs,gradFunc:e=>({x:()=>qe(e)})},BY={kernelName:Fa,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{clipValueMin:a,clipValueMax:s}=n;return{x:()=>Tn(cr(Ua(r,a),yi(r,s)),e,qe(e))}}},VY={kernelName:wu,inputsToSave:["x"],gradFunc:P3.gradFunc},UY={kernelName:fo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let r=t.map(o=>o.shape),{axis:a}=n,s=or(a,t[0].shape)[0],i=r.map(o=>o[s]);return Ut(e,i,s).map(o=>()=>o)}},HY={kernelName:ws,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F(Wa(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>um(r.shape,e,a,i,o,l),filter:()=>Pm(r,e,a.shape,i,o,l)}}},jY={kernelName:bs,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>ua(e,a,s,i,o,1,l),filter:()=>Pm(e,r,a.shape,s,i,o,l)}}};function GY(e,t,n,r,a){let s=e;e.rank===4&&(s=G(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:r,pad:a,filterShape:n};return $.runKernel(Vh,o,l)}var qY=O({conv3DBackpropFilter_:GY}),XY={kernelName:bu,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s}=n;F(Wa(r),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);let[i,o]=t;return{x:()=>px(i.shape,e,o,a,s),filter:()=>qY(i,e,o.shape,a,s)}}},KY={kernelName:_s,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(St(Vd(ge(n,"float32"))),e)}}},ZY={kernelName:mo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Ud(ge(n,"float32")),e)}}},YY={kernelName:vs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a,exclusive:s,reverse:i}=n;return{x:()=>{let o=kx([a],r.rank),l=Ed(e,a,s,!i);return o!=null&&(l=ot(l,o)),l}}}},JY={kernelName:ks,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s,dimRoundingMode:i}=n,o=r==null?[1,1]:r;F(Wa(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,u]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),F(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),F(Lr(a,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${o}'.`),i!=null&&F(Kt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>Lx(l.shape,e,u,a,s,r,i),filter:()=>Px(l,e,u.shape,a,s,r,i)}}},QY={kernelName:_u,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,s={x:r,filter:a,dy:e},i={x:r,filter:a,dy:e};return{x:()=>$.runKernel(Xh,s,n),filter:()=>$.runKernel(Kh,i,n)}}},eJ={kernelName:go,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,r={dy:e,y:n};return{x:()=>$.runKernel(Zh,r)}}},tJ={kernelName:xo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(Jn(St(ht(n))),2/Math.sqrt(Math.PI));return{x:()=>P(e,r)}}},nJ={kernelName:Ns,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,n)}}},rJ={kernelName:bo,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>G(e,n.shape)}}},aJ={kernelName:_o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Jn(n))}}},sJ={kernelName:Ss,gradFunc:e=>({x:()=>qe(e)})},iJ={kernelName:Ts,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=be(e,ge(r,"float32")),i=Vt(n.shape,a);return i.length>0?G(Re(s,i),n.shape):s},b:()=>{let s=P(e,ge(n,"float32")),i=Vt(r.shape,a);i.length>0&&(s=G(Re(s,i),r.shape));let o=ht(r);return St(be(s,ge(o,"float32")))}}}},oJ={kernelName:Es,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:r}=n,[a,s,i,o]=t,l=o==null?Ie(1):o,u=Vt(s.shape,a.shape),c=[];if(s.rank===1){for(let m=0;ms.rank===1?G(P(P(e,Va(G(p,[1,1,1,s.shape[0]]),c)),l),a.shape):G(P(P(e,p),l),a.shape),mean:()=>{let m=P(P(p,Ie(-1)),d);return s.rank===1&&(m=Re(m,u)),G(m,s.shape)},variance:()=>{let m=P(P(f,h),d);return s.rank===1&&(m=Re(m,u)),G(m,s.shape)},scale:()=>{let m=P(h,p),A=P(e,m);return s.rank===1&&(A=Re(A,u)),G(A,s.shape)},offset:()=>{let m=e;return s.rank===1&&(m=Re(m,u)),G(m,s.shape)}}}},lJ={kernelName:ko,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[r,a]=t,{axis:s}=n,i=or(s,r.shape)[0];return{x:()=>{let o=r.shape,l=a.size,u=o.slice(0,i),c=u.length,h=o.slice(s,o.length).slice(1),d=h.length,p=L3(0,c),f=L3(c+1,c+1+d),m=W3([u,[l],h]),A=G(e,m),y=G(a,[l]),g=W3([[c],p,f]),b=ot(A,g),_=$m(b,y,r.shape[i]),w=xm(g);return _=ot(_,w),_},indices:()=>a}}};function L3(e,t){let n=[];for(let r=e;r{let[n,r]=t;return{a:()=>qe(n),b:()=>qe(r)}}},cJ={kernelName:Rs,gradFunc:e=>({x:()=>ge(e,"float32")})},hJ={kernelName:So,gradFunc:e=>({x:()=>qe(e)})},dJ={kernelName:To,gradFunc:e=>({x:()=>qe(e)})},pJ={kernelName:Eo,gradFunc:e=>({x:()=>qe(e)})},fJ={kernelName:Fs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{alpha:a}=n,s=ur(r,0);return{x:()=>Tn(s,e,P(e,a))}}},mJ={kernelName:Fo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ie(n,1))}}},AJ={kernelName:Ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ge(n,"float32"))}}},yJ={kernelName:c5,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n;return{logits:()=>{let s=!0,i=Jn(r);return we(e,P(Re(e,a,s),i))}}}};function gJ(e,t,n,r=5,a=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:r,bias:a,alpha:s,beta:i};return $.runKernel(td,o,l)}var xJ=O({localResponseNormalizationBackprop_:gJ}),wJ={kernelName:Nu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>xJ(r,a,e,s,i,o,l)}}};function B3(e,t,n,r){return t.rankP(e,ge(Ba(n,t),e.dtype))}}var V3={kernelName:$s,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{reductionIndices:a}=r,s=t[0],i=t[1],o=or(a,s.shape),l=B3(e,i,s,o);return{x:()=>l.x()}}},bJ={kernelName:Ds,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,ge(Ua(n,r),"float32")),b:()=>P(e,ge(Rd(n,r),"float32"))}}};function _J(e,t,n,r,a,s,i){let o=C(e,"dy","maxPool3dGrad"),l=C(t,"input","maxPool3dGrad"),u=C(n,"output","maxPool3dGrad"),c=o,h=l,d=u,p=!1;l.rank===4&&(p=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),h=G(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=G(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(c.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`),i!=null&&F(Kt(s),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let f={dy:c,input:h,output:d},m={filterSize:r,strides:a,pad:s,dimRoundingMode:i},A=$.runKernel(rd,f,m);return p?G(A,[A.shape[1],A.shape[2],A.shape[3],A.shape[4]]):A}var vJ=O({maxPool3dGrad_:_J}),kJ={kernelName:Su,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=n;return{x:()=>vJ(e,r,a,s,i,o,l)}}};function IJ(e,t,n,r,a,s,i){let o=C(e,"dy","maxPoolGrad"),l=C(t,"input","maxPoolGrad"),u=C(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(Kt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let c={dy:o,input:l,output:u},h={filterSize:r,strides:a,pad:s,dimRoundingMode:i};return $.runKernel(nd,c,h)}var NJ=O({maxPoolGrad_:IJ}),SJ={kernelName:Os,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>NJ(e,r,a,s,i,o)}}},TJ={kernelName:zs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n,s=or(a,r.shape),i=vx(r.shape,s)[1],o=Lt(i);return{x:()=>{let l=r.shape.slice();s.forEach(c=>{l[c]=1});let u=G(e,l);return be(P(u,Vr(r.shape,"float32")),o)}}}},EJ={kernelName:Ps,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{axis:a}=r,[s,i]=t,o=or(a,s.shape),l=B3(e,i,s,o);return{x:()=>l.x()}}},CJ={kernelName:Ls,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,ge(yi(n,r),"float32")),b:()=>P(e,ge(ur(n,r),"float32"))}}},RJ={kernelName:Tu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>$e(e,s,r.shape)}}},FJ={kernelName:$o,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=Vt(n.shape,a);return s.length>0?G(Re(e,s),n.shape):e},b:()=>{let s=P(e,St(wl(be(n,r)))),i=Vt(r.shape,a);return i.length>0?G(Re(s,i),r.shape):s}}}},MJ={kernelName:Ws,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=P(e,ge(r,"float32")),i=Vt(n.shape,a);return i.length>0?G(Re(s,i),n.shape):s},b:()=>{let s=P(e,ge(n,"float32")),i=Vt(r.shape,a);return i.length>0?G(Re(s,i),r.shape):s}}}},$J={kernelName:Do,gradFunc:e=>({x:()=>St(e)})},DJ={kernelName:Bs,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>$t(n.shape,"float32")}}},OJ={kernelName:Wo,gradFunc:e=>({x:()=>qe(e)})},zJ={kernelName:Bo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:r}=n;return hr(e,r).map(a=>()=>a)}},U3={kernelName:Vs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>$e(e,s,r.shape)}}},PJ={kernelName:Us,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,r,a]=t,s=n,i=r,o=wt(s.shape,i.shape);return{a:()=>{let l=ge(i,"float32"),u=P(e,P(l,ha(s,we(l,Ie(1))))),c=Vt(s.shape,o);return c.length>0&&(u=Re(u,c)),G(u,s.shape)},b:()=>{let l=ur(s,0),u=Tn(l,zn(s),qe(s)),c=P(e,P(a,u)),h=Vt(i.shape,o);return h.length>0&&(c=Re(c,h)),G(c,i.shape)}}}},LJ={kernelName:Hs,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,r]=t,a=ur(n,0);return{x:()=>Tn(a,e,P(e,r)),alpha:()=>{let s=Tn(a,qe(e),P(e,n)),i=Vt(r.shape,e.shape);return i.length>0&&(s=Re(s,i)),G(s,r.shape)}}}},WJ={kernelName:Is,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=be(e,ge(r,"float32")),i=Vt(n.shape,a);return i.length>0?G(Re(s,i),n.shape):s},b:()=>{let s=P(e,ge(n,"float32")),i=Vt(r.shape,a);i.length>0&&(s=G(Re(s,i),r.shape));let o=ht(r);return St(be(s,ge(o,"float32")))}}}},BJ={kernelName:Uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,St(ht(n)))}}},VJ={kernelName:qs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(yi(n,6),Nl(n));return{x:()=>P(e,ge(r,"float32"))}}},UJ={kernelName:js,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,ge(Nl(n),"float32"))}}},HJ={kernelName:Ho,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>G(e,n.shape)}}},jJ={kernelName:Gs,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(ld,a,n)}}},GJ={kernelName:Cu,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(od,a,n)}}},qJ={kernelName:Xs,gradFunc:(e,t,n)=>{let{dims:r}=n,a=or(r,e.shape);return{x:()=>Ln(e,a)}}},XJ={kernelName:Ks,gradFunc:e=>({x:()=>qe(e)})},KJ={kernelName:Zs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>St(be(e,P(ha(n,1.5),2)))}}},ZJ={kernelName:Go,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>ge(qe(n),"float32"),t:()=>P(e,ge(n,e.dtype)),e:()=>P(e,ge(ec(n),e.dtype))}}},YJ={kernelName:qo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=ur(n,Ie(0)),a=Ie(Zx),s=Ie(Yx),i=P(e,s),o=P(P(e,a),Jn(ge(n,"float32")));return Tn(r,i,o)}}}},JJ={kernelName:Js,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(n,we(Ie(1),n)))}}},QJ={kernelName:Zo,gradFunc:e=>({x:()=>qe(e)})},eQ={kernelName:Ys,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Yu(ge(n,"float32")),e)}}},tQ={kernelName:Ko,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Td(ge(n,"float32")),e)}}},nQ={kernelName:Xo,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{begin:a,size:s}=n,i=r.shape,[o,l]=K5(r,a,s),u=[];for(let c=0;cca(e,u)}}},rQ={kernelName:ti,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{dim:a}=n,s=!0,i=P(e,r);return{logits:()=>we(i,P(Re(i,[a],s),r))}}},aQ={kernelName:Yo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,On(n))}}},H3={kernelName:Ru,gradFunc:(e,t,n)=>{let{blockShape:r,paddings:a}=n;return{x:()=>Ku(e,r,a)}}},j3={kernelName:Jo,gradFunc:(e,t,n)=>{let{axis:r}=n;return{x:()=>lt(e,r)}}},sQ={kernelName:Qs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,P(an(ge(n,"float32")),2))}}},iQ={kernelName:Fu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(ge(n,"float32"),2))}}},oQ={kernelName:ni,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=Ie(2);return{a:()=>P(e,P(a,we(n,r))),b:()=>P(e,P(a,we(r,n)))}}},lQ={kernelName:$a,gradFunc:e=>({x:()=>qe(e)})},uQ={kernelName:ri,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=e,i=Vt(n.shape,a);return i.length>0&&(s=Re(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Vt(r.shape,a);return i.length>0&&(s=Re(s,i)),G(St(s),r.shape)}}}},cQ={kernelName:ei,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,a=r.shape.slice(),{axis:s}=n;or(s,r.shape).forEach(l=>{a[l]=1});let i=G(e,a),o=P(i,Vr(r.shape,"float32"));return{x:()=>o}}},hQ={kernelName:el,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ht(Yu(n)))}}},dQ={kernelName:ai,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(we(Ie(1),ht(n)),e)}}},pQ={kernelName:Ma,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{reps:a}=n;return{x:()=>{let s=qe(r);if(r.rank===1)for(let i=0;i{let r=n,{perm:a}=r,s=xm(a);return{x:()=>ot(e,s)}}},mQ={kernelName:nl,gradFunc:(e,t,n)=>{let r=n,{axis:a}=r;return{value:()=>An(e,a)}}},yQ={kernelName:Mu,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>AQ(e,n)}}};function AQ(e,t){let n=Br(t,qe(t)),r=Ai(e,n),a=Ua(t,Ie(0,"int32")),s=r.rank-a.rank;for(let o=0;o({x:()=>qe(e)})},xQ=[P3,xY,wY,bY,_Y,vY,kY,IY,NY,SY,TY,EY,FY,DY,OY,zY,PY,LY,WY,BY,VY,UY,jY,HY,XY,KY,ZY,YY,JY,QY,WJ,eJ,tJ,nJ,rJ,aJ,iJ,sJ,oJ,lJ,uJ,cJ,hJ,dJ,pJ,fJ,mJ,AJ,yJ,wJ,V3,V3,bJ,kJ,SJ,TJ,EJ,CJ,RJ,FJ,MJ,$J,DJ,OJ,zJ,U3,U3,PJ,LJ,BJ,VJ,UJ,HJ,jJ,GJ,qJ,XJ,KJ,ZJ,YJ,JJ,QJ,eQ,tQ,nQ,rQ,aQ,H3,H3,j3,j3,sQ,oQ,iQ,lQ,uQ,cQ,hQ,dQ,pQ,fQ,mQ,yQ,gQ];for(let e of xQ)h5(e);var G3={};We(G3,{maxNorm:()=>wQ,minMaxNorm:()=>vQ,nonNeg:()=>_Q,unitNorm:()=>bQ});var SA;function Ht(){return SA==null&&(SA=nx().epsilon()),SA}function Sr(){return"channelsLast"}var ma=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ma.prototype)}},Tr=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Tr.prototype)}},V=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,V.prototype)}},Pe=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Pe.prototype)}},q3=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,q3.prototype)}};function Ci(e,t){if(Array.isArray(e)){let n=[];for(let r=0;rn.toUpperCase())}var pr={};function TA(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function EA(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>EA(t));else{let t=Object.keys(e);for(let n of t){let r=e[n];r!=null&&typeof r=="object"&&(!Array.isArray(r)&&r.type==="ndarray"&&typeof r.value=="number"?e[n]=r.value:EA(r))}}}function Sc(e,t={},n={},r="object",a=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in pr)i=pr[s];else if(i=t[s],i==null)throw new V(`Unknown ${r}: ${e}. This may be due to one of the following reasons: + `}};function vq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:s}=t,{numSegments:i}=r,o=a.shape.length,l=[],u=0,c=R.getAxesPermutation([u],o),h=a;c!=null&&(h=Cn({inputs:{x:a},backend:n,attrs:{perm:c}}),l.push(h),u=R.getInnerMostAxes(1,o)[0]);let d=R.segment_util.computeOutShape(h.shape,u,i),p=v.sizeFromShape([h.shape[u]]),f=xe({inputs:{x:h},backend:n,attrs:{shape:[-1,p]}});l.push(f);let m=yd(a.dtype),A=(_,w,x,N,S)=>{let T=_.shape[0],M=_.shape[1],D=R.segment_util.segOpComputeOptimalWindowSize(M,S),z={windowSize:D,inSize:M,batchSize:T,numSegments:S},W=new _q(z,w),U=n.compileAndRun(W,[_,x],N);if(l.push(U),U.shape[1]===S)return U;let H=B_({backend:n,attrs:{start:0,stop:S,step:1,dtype:"float32"}}),X=H_({inputs:{x:H},backend:n,attrs:{reps:[M/D]}});return l.push(H),l.push(X),A(U,w,X,N,S)},y=A(f,"unsortedSegmentSum",s,m,i),g=xe({inputs:{x:y},backend:n,attrs:{shape:d}}),b=g;if(c!=null){l.push(g);let _=R.getUndoAxesPermutation(c);b=Cn({inputs:{x:b},backend:n,attrs:{perm:_}})}return l.forEach(_=>n.disposeIntermediateTensorInfo(_)),b}var kq={kernelName:Mu,backendName:"webgl",kernelFunc:vq},Iq=[fH,yH,nW,aW,oW,cW,dW,mW,yW,xW,vW,IW,TW,RW,PW,$W,BW,jW,UW,KW,YW,QW,rB,cB,dB,gB,wB,kB,SB,zL,RB,BB,UB,DB,qB,KB,jB,JB,tV,aV,iV,lV,hV,yV,xV,pV,_V,IV,EV,MV,zV,WV,BV,VV,HV,GV,XV,ZV,JV,nU,iU,lU,cU,pU,yU,bU,IU,OL,SU,CB,CU,MU,OU,LL,WU,HU,GU,QU,ZU,rH,iH,cH,xH,SH,IH,RH,MH,DH,vH,zH,LH,UH,qH,YH,sj,HL,oj,cj,pj,Aj,fB,xj,bj,vj,Nj,Cj,BL,Fj,Mj,mB,tj,Oj,Hj,Wj,GL,Xj,Yj,eG,rG,oG,uG,dG,mG,yG,wG,vG,NG,EG,FG,DG,lB,rj,PG,WG,VG,HG,qG,ZG,JG,eq,rq,nj,QL,iq,uq,dq,fq,yq,eW,xq,bq,kq,wj];for(let e of Iq)ui(e);var Vn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Vn||(Vn={}));var vc;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(vc||(vc={}));var j_;function Nq(e){j_=e.wasm.cwrap(ii,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function Sq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r,d=n.dataIdMap.get(a.dataId).id,p=n.dataIdMap.get(s.dataId).id,f=0;if(i!=null){let S=n.dataIdMap.get(i.dataId);if(S.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${S.shape.length}.`);f=S.id}let m=o==null?0:n.dataIdMap.get(o.dataId).id,A=vc[c];if(A==null)throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?a.shape[2]:a.shape[1],g=u?s.shape[1]:s.shape[2],b=a.shape[0],_=n.makeOutput([b,y,g],a.dtype),w=n.dataIdMap.get(_.dataId).id,x=new Uint8Array(new Int32Array(a.shape).buffer),N=new Uint8Array(new Int32Array(s.shape).buffer);return j_(d,x,a.shape.length,p,N,s.shape.length,l,u,A,f,m,h||0,w),_}var Tq={kernelName:ii,backendName:"wasm",setupFunc:Nq,kernelFunc:Sq};function Rn(e){let t;function n(a){t=a.wasm.cwrap(e,null,["number","number"])}function r(a){let{backend:s,inputs:{x:i}}=a,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),u=s.dataIdMap.get(l.dataId).id;return v.sizeFromShape(l.shape)===0||t(o,u),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:r}}var Eq=Rn(so);function wn(e,t,n){let r;function a(i){r=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:u,b:c}=l,h=o.dataIdMap.get(u.dataId).id,d=o.dataIdMap.get(c.dataId).id,p=n!=null?n:u.dtype,f=R.assertAndGetBroadcastShape(u.shape,c.shape),m=o.makeOutput(f,p);if(v.sizeFromShape(f)===0)return m;let A=new Uint8Array(new Int32Array(u.shape).buffer),y=new Uint8Array(new Int32Array(c.shape).buffer),g=o.dataIdMap.get(m.dataId).id,b=()=>r(h,A,u.shape.length,d,y,c.shape.length,Vn[u.dtype],g);if(t&&u.dtype==="float32")return b(),m;let _=R.getBroadcastDims(u.shape,f),w=R.getBroadcastDims(c.shape,f),x=_.every((S,T)=>S===T),N=w.every((S,T)=>S===T);if(x&&N)return b(),m;throw new Error(`Broadcasting along outer dims is not yet supported for ${u.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:a,kernelFunc:s}}var Cq=!0,Rq=wn(Ra,Cq),G_;function Fq(e){G_=e.wasm.cwrap(fs,null,["array","number","number","number"])}function Mq(e){let{inputs:t,backend:n}=e,r=n.makeOutput(t[0].shape,t[0].dtype);if(v.sizeFromShape(r.shape)===0)return r;let a=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(a).buffer),i=n.dataIdMap.get(r.dataId).id;return G_(s,a.length,Vn[r.dtype],i),r}var $q={kernelName:fs,backendName:"wasm",setupFunc:Fq,kernelFunc:Mq};function Rp(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype),a=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(r).set(a),r}var Dq={kernelName:Rs,backendName:"wasm",kernelFunc:Rp},q_;function Oq(e){q_=e.wasm.cwrap(si,null,["number","array","number","number","number","array","number"])}function Fp(e){let{inputs:t,backend:n,attrs:r}=e,[a,s]=Pq(t.x.shape,r.perm),i=!0;for(let f=0;f=a&&(s===-1||r[s]>r[i])&&(s=i);r[s]=a}return[n,r]}var Lq={kernelName:si,backendName:"wasm",kernelFunc:Fp,setupFunc:Oq};function Ul(e,t,n){let r=e.shape,a=e.shape.length,s=v.parseAxisParam(t,r),i=s,o=R.getAxesPermutation(i,a),l=null,u=!1;if(o!=null){let c=new Array(a);for(let d=0;d`new shape: ${i}, old shape: ${r.shape}. New shape and old shape must have the same number of elements.`),e.backend.incRef(r.dataId),{dataId:r.dataId,shape:i,dtype:r.dtype}}var Gq={kernelName:Ho,backendName:"wasm",kernelFunc:Nr},Z_;function qq(e){Z_=e.wasm.cwrap(ys,null,["number","array","number","number","array","number","number","number","number"])}function Xq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let b=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let _=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=Nr({inputs:{x:a},backend:n,attrs:{shape:_}}),N=Nr({inputs:{x:s},backend:n,attrs:{shape:w}}),S=n.dataIdMap.get(x.dataId).id,T=n.dataIdMap.get(N.dataId).id,M=i?x.shape[2]:x.shape[1],D=o?N.shape[1]:N.shape[2],z=Math.max(A,y),W=n.makeOutput([z,M,D],x.dtype),U=n.dataIdMap.get(W.dataId).id,H=new Uint8Array(new Int32Array(x.shape).buffer),X=new Uint8Array(new Int32Array(N.shape).buffer);return Z_(S,H,x.shape.length,T,X,N.shape.length,i,o,U),n.disposeData(x.dataId),n.disposeData(N.dataId),W.shape=b,W}var Kq={kernelName:ys,backendName:"wasm",setupFunc:qq,kernelFunc:Xq};function Mp(e){let{inputs:{x:t},attrs:{dtype:n},backend:r}=e,a=r.makeOutput(t.shape,n),s=r.typedArrayFromHeap(t);return r.typedArrayFromHeap(a).set(s),a}var Zq={kernelName:gs,backendName:"wasm",kernelFunc:Mp},Yq=Rn(xs),Y_;function Jq(e){Y_=e.wasm.cwrap(Fa,null,["number","number","number","number"])}function Qq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o=n.dataIdMap.get(a.dataId).id,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(l.dataId).id;return Y_(o,s,i,u),l}var eX={kernelName:Fa,backendName:"wasm",setupFunc:Jq,kernelFunc:Qq};function J_(e){let{inputs:t,backend:n}=e,r=v.parseAxisParam(e.attrs.axis,t[0].shape)[0],a=R.computeOutShape(t.map(p=>p.shape),r),s=t.filter(p=>v.sizeFromShape(p.shape)>0);if(s.length===1)return Rp({inputs:{x:s[0]},backend:n});let i=n.makeOutput(a,t[0].dtype);if(v.sizeFromShape(a)===0)return i;let o=s.map(p=>p.shape);if(R.assertParamsConsistent(o,r),s[0].dtype==="string"){let p=s.map(b=>{let _=v.sizeFromShape(b.shape.slice(r));return Nr({inputs:{x:b},backend:n,attrs:{shape:[-1,_]}})}),f=p.map(b=>({vals:n.readSync(b.dataId),shape:b.shape}));a=R.computeOutShape(p.map(b=>b.shape),1);let m=p[0].shape[0]===1,A=Um(f,a,t[0].dtype,m),y=R.computeOutShape(s.map(b=>b.shape),r);i.shape=y;let g=n.dataIdMap.get(i.dataId);return g.stringBytes=R.fromStringArrayToUint8(A),p.forEach(b=>n.disposeData(b.dataId)),i}let l=v.sizeFromShape(s[0].shape.slice(0,r)),u=0,c=s.map(p=>{let f=v.sizeFromShape(p.shape.slice(r));return u+=f,f}),h=s.map(p=>n.typedArrayFromHeap(p)),d=n.typedArrayFromHeap(i);for(let p=0;p`cumsum does not support ${a.dtype} tensors in the WASM backend`);let u=R.getAxesPermutation([s],l),c=a;u!==null&&(c=Fp({inputs:{x:a},attrs:{perm:u},backend:n}));let h=R.getInnerMostAxes(1,l)[0];R.assertAxesAreInnerMostDims("cumsum",[h],l);let d=n.makeOutput(c.shape,c.dtype),p=c.shape[h],f=n.dataIdMap.get(c.dataId).id,m=n.dataIdMap.get(d.dataId).id;n3(f,i?1:0,o?1:0,p,m,Vn[a.dtype]);let A=d;if(u!==null){let y=R.getUndoAxesPermutation(u);A=Fp({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(c.dataId),n.disposeData(d.dataId)}return A}var fX={kernelName:vs,backendName:"wasm",setupFunc:dX,kernelFunc:pX},r3;function mX(e){r3=e.wasm.cwrap(yo,null,["number","number","number","array","number","array","array","number","number"])}function AX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=t.makeOutput(f,"float32"),A=t.dataIdMap.get(a.dataId).id,y=new Uint8Array(new Int32Array(v.computeStrides(a.shape)).buffer),g=new Uint8Array(new Int32Array(f).buffer),b=new Uint8Array(new Int32Array(v.computeStrides(f)).buffer),_=t.dataIdMap.get(m.dataId).id;return r3(A,s,i==="NHWC"?1:0,y,a.shape.length-1,g,b,f.length,_),m}var yX={kernelName:yo,backendName:"wasm",setupFunc:mX,kernelFunc:AX},a3;function gX(e){a3=e.wasm.cwrap(ks,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function xX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s}=t,i=r.dataIdMap.get(a.dataId).id,o=r.dataIdMap.get(s.dataId).id,{strides:l,dilations:u,pad:c,dimRoundingMode:h}=n,d=u==null?[1,1]:u,p=R.computeConv2DInfo(a.shape,s.shape,l,d,c,h,!0),f=p.filterHeight,m=p.filterWidth,A=p.padInfo.top,y=p.padInfo.right,g=p.padInfo.bottom,b=p.padInfo.left,_=p.dilationHeight,w=p.dilationWidth,x=p.strideHeight,N=p.strideWidth,S=p.inChannels,T=p.outChannels,M=p.padInfo.type==="SAME"?1:0;if(p.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${p.dataFormat}'. Please use 'channelsLast'.`);let D=r.makeOutput(p.outShape,"float32"),z=r.dataIdMap.get(D.dataId).id;return a3(i,a.shape[0],a.shape[1],a.shape[2],o,f,m,A,y,g,b,M,_,w,x,N,S,T,z),D}var wX={kernelName:ks,backendName:"wasm",setupFunc:gX,kernelFunc:xX},bX=!1,_X=wn(wo,bX,"bool"),vX=Rn(Ns);function vA(e){let{inputs:t,attrs:n,backend:r}=e,{input:a}=t,{dim:s}=n,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),Nr({inputs:{x:a},backend:r,attrs:{shape:o}})}var kX={kernelName:bo,backendName:"wasm",kernelFunc:vA};function IX(e){let{attrs:{shape:t,value:n,dtype:r},backend:a}=e,s=a.makeOutput(t,r);return a.typedArrayFromHeap(s).fill(n),s}var NX={kernelName:vu,backendName:"wasm",kernelFunc:IX},s3;function SX(e){s3=e.wasm.cwrap(vo,null,["number","number","number","number","number","number"])}function TX(e){let{inputs:t,backend:n}=e,{image:r}=t,a=n.makeOutput(r.shape,r.dtype),s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,[o,l,u,c]=r.shape;return s3(s,o,l,u,c,i),a}var EX={kernelName:vo,backendName:"wasm",kernelFunc:TX,setupFunc:SX},CX=Rn(Ss),RX=!1,FX=wn(Ts,RX),i3;function MX(e){i3=e.wasm.cwrap(Es,null,["number","number","number","number","number","number","number"])}function $X(e){let{backend:t,inputs:n,attrs:r}=e,{varianceEpsilon:a}=r,{x:s,mean:i,variance:o,offset:l,scale:u}=n,c=t.dataIdMap.get(s.dataId).id,h=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,p=l!=null?t.dataIdMap.get(l.dataId).id:0,f=u!=null?t.dataIdMap.get(u.dataId).id:0,m=t.makeOutput(s.shape,s.dtype);if(v.sizeFromShape(s.shape)===0)return m;let A=t.dataIdMap.get(m.dataId).id;return i3(c,h,d,p,f,a,A),m}var DX={kernelName:Es,backendName:"wasm",setupFunc:MX,kernelFunc:$X},o3;function OX(e){o3=e.wasm.cwrap(oi,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function zX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d),A=vc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,b=m.outChannels,_=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==b)throw new Error(`FusedConv2D bias shape (${Q.shape}) does not match the number of output channels (${b})`);_=Q.id}let w=m.filterHeight,x=m.filterWidth,N=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let se=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(se.dataId).id,oe=o==null?0:r.dataIdMap.get(o.dataId).id;return o3(y,j,ee,Y,g,w,x,_,N,S,T,M,X,D,z,W,U,H,b,A,oe,f||0,te),se}var PX={kernelName:oi,backendName:"wasm",setupFunc:OX,kernelFunc:zX},l3;function LX(e){l3=e.wasm.cwrap(li,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function WX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d,!0),A=vc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,b=m.outChannels,_=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==b)throw new Error(`FusedDepthwiseConv2D bias shape (${Q.shape}) does not match the number of output channels (${b})`);_=Q.id}let w=m.filterHeight,x=m.filterWidth,N=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let se=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(se.dataId).id,oe=o==null?0:r.dataIdMap.get(o.dataId).id;return l3(y,j,ee,Y,g,w,x,_,N,S,T,M,X,D,z,W,U,H,b,A,oe,f||0,te),se}var BX={kernelName:li,backendName:"wasm",setupFunc:LX,kernelFunc:WX},u3;function VX(e){u3=e.wasm.cwrap(Io,null,["number","number","number","number","number","number","array","number"])}function UX(e){let{backend:t,inputs:n}=e,{params:r,indices:a}=n,[s,i,o,l]=Vf.prepareAndValidate(r,a),u=t.makeOutput(s,r.dtype);if(i===0)return u;let c=a.shape,h=c[c.length-1],d=t.dataIdMap.get(r.dataId).id,p=t.dataIdMap.get(a.dataId).id,f=new Uint8Array(new Int32Array(l).buffer),m=t.dataIdMap.get(u.dataId).id;return u3(d,Vn[r.dtype],p,i,h,o,f,m),u}var HX={kernelName:Io,backendName:"wasm",setupFunc:VX,kernelFunc:UX},c3;function jX(e){c3=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function GX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a,indices:s}=n,{axis:i,batchDims:o}=r,l=v.parseAxisParam(i,a.shape)[0],u=R.segment_util.collectGatherOpShapeInfo(a,s,l,o),c=Nr({inputs:{x:a},attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]},backend:t}),h=v.sizeFromShape(s.shape),d=Nr({inputs:{x:s},attrs:{shape:[u.batchSize,h/u.batchSize]},backend:t}),p=[u.batchSize,u.outerSize,h/u.batchSize,u.sliceSize],f=t.makeOutput(p,a.dtype);if(v.sizeFromShape(a.shape)===0)return f;let m=c.shape.length-1,A=t.dataIdMap.get(c.dataId).id,y=t.dataIdMap.get(d.dataId).id,g=t.dataIdMap.get(f.dataId).id,b=new Uint8Array(new Int32Array(v.computeStrides(c.shape)).buffer),_=new Uint8Array(new Int32Array(v.computeStrides(p)).buffer);return c3(A,Vn[a.dtype],b,m,y,u.batchSize,_,g),t.disposeData(c.dataId),t.disposeData(d.dataId),f.shape=u.outputShape,f}var qX={kernelName:ko,backendName:"wasm",setupFunc:jX,kernelFunc:GX},XX=!1,KX=wn(No,XX,"bool"),ZX=!1,YX=wn(Cs,ZX,"bool"),h3;function JX(e){h3=e.wasm.cwrap(Fs,null,["number","number","number"])}function QX(e){let{inputs:{x:t},attrs:{alpha:n},backend:r}=e,a=r.dataIdMap.get(t.dataId).id,s=r.makeOutput(t.shape,t.dtype);if(v.sizeFromShape(t.shape)!==0){let i=r.dataIdMap.get(s.dataId).id;h3(a,n,i)}return s}var eK={kernelName:Fs,backendName:"wasm",setupFunc:JX,kernelFunc:QX},tK=!1,nK=wn(Co,tK,"bool"),rK=!1,aK=wn(Ro,rK,"bool"),sK=Rn(Ms),iK=!1,oK=wn(Mo,iK,"bool"),d3;function lK(e){d3=e.wasm.cwrap($s,null,["number, number, number"])}function uK(e){let{backend:t,inputs:n,attrs:r}=e,{reductionIndices:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:u,axes:c,originalAxes:h,inputWasTransposed:d}=Ul(i,a,t);if(d){let g=t.dataIdMap.get(u.dataId).id;l=u,o=g}let p=l.shape.length;R.assertAxesAreInnerMostDims("max",c,p);let[f,m]=R.computeOutAndReduceShapes(l.shape,c),A=v.sizeFromShape(m),y=t.makeOutput(f,i.dtype);if(v.sizeFromShape(l.shape)!==0){let g=t.dataIdMap.get(y.dataId).id;d3(o,A,g)}if(d&&t.disposeData(u.dataId),s){let g=R.expandShapeToKeepDim(y.shape,h);y.shape=g}return y}var cK={kernelName:$s,backendName:"wasm",setupFunc:lK,kernelFunc:uK},hK=!1,dK=wn(Ds,hK),p3;function pK(e){p3=e.wasm.cwrap(Os,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fK(e){let{inputs:t,attrs:n,backend:r}=e,a=t.x,s=r.dataIdMap.get(a.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=n,c=R.computePool2DInfo(a.shape,i,o,1,l,u),h=c.filterHeight,d=c.filterWidth,p=c.padInfo.top,f=c.padInfo.right,m=c.padInfo.bottom,A=c.padInfo.left,y=c.dilationHeight,g=c.dilationWidth,b=c.strideHeight,_=c.strideWidth,w=c.inChannels,x=c.outChannels;if(c.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);let N=r.makeOutput(c.outShape,"float32"),S=r.dataIdMap.get(N.dataId).id;return p3(s,a.shape[0],a.shape[1],a.shape[2],h,d,p,f,m,A,y,g,b,_,w,x,S),N}var mK={kernelName:Os,backendName:"wasm",setupFunc:pK,kernelFunc:fK},f3;function AK(e){f3=e.wasm.cwrap(zs,null,["number, number, number"])}function yK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("mean",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=u;u.dtype!=="float32"&&(g=Mp({backend:t,inputs:{x:u},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(g.dataId).id);let b=t.makeOutput(m,"float32");if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(b.dataId).id;f3(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(b.shape,d);b.shape=_}return u.dtype!=="float32"&&t.disposeData(g.dataId),b}var gK={kernelName:zs,backendName:"wasm",setupFunc:AK,kernelFunc:yK},m3;function xK(e){m3=e.wasm.cwrap(Ps,null,["number, number, number"])}function wK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t);if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b)}let f=u.shape.length;R.assertAxesAreInnerMostDims("min",h,f);let[m,A]=R.computeOutAndReduceShapes(u.shape,h),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(g.dataId).id;m3(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(g.shape,d);g.shape=b}return g}var bK={kernelName:Ps,backendName:"wasm",setupFunc:xK,kernelFunc:wK},_K=!1,vK=wn(Ls,_K),kK=!0,IK=wn(Ws,kK),NK=Rn(Do);function kA(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),r=n[0],a=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:r,selectedSize:a,pSelectedScores:s,pValidOutputs:i}}var A3;function SK(e){A3=e.wasm.cwrap(zo,"number",["number","number","number","number","number"])}function TK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i}=r,{boxes:o,scores:l}=n,u=t.dataIdMap.get(o.dataId).id,c=t.dataIdMap.get(l.dataId).id,h=A3(u,c,s,a,i),{pSelectedIndices:d,selectedSize:p,pSelectedScores:f,pValidOutputs:m}=kA(t,h);return t.wasm._free(f),t.wasm._free(m),t.makeOutput([p],"int32",d)}var EK={kernelName:zo,backendName:"wasm",setupFunc:SK,kernelFunc:TK},y3;function CK(e){y3=e.wasm.cwrap(Po,"number",["number","number","number","number","number","bool"])}function RK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=y3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=kA(t,d);t.wasm._free(m);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([],"int32",A);return[y,g]}var FK={kernelName:Po,backendName:"wasm",setupFunc:CK,kernelFunc:RK},g3;function MK(e){g3=e.wasm.cwrap(Lo,"number",["number","number","number","number","number","number"])}function $K(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=g3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=kA(t,d);t.wasm._free(A);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([f],"float32",m);return[y,g]}var DK={kernelName:Lo,backendName:"wasm",setupFunc:MK,kernelFunc:$K},OK=!1,zK=wn(Oo,OK,"bool"),x3;function PK(e){x3=e.wasm.cwrap(Bs,null,["number","number","number","number","number"])}function LK(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=n.makeOutput([...a.shape,s],"int32"),u=n.dataIdMap.get(l.dataId).id,c=n.dataIdMap.get(a.dataId).id;return x3(c,s,i,o,u),l}var WK={kernelName:Bs,backendName:"wasm",setupFunc:PK,kernelFunc:LK};function BK(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(1),r}var VK={kernelName:Wo,backendName:"wasm",kernelFunc:BK};function UK(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return vA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=vA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=J_({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeData(c.dataId)),u}var HK={kernelName:Bo,backendName:"wasm",kernelFunc:UK},w3;function jK(e){w3=e.wasm.cwrap(Vs,null,["number","array","number","number","array","array","number","number"])}function GK(e){let{inputs:{x:t},backend:n,attrs:{paddings:r,constantValue:a}}=e,s=r.map((f,m)=>f[0]+t.shape[m]+f[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(t.shape).buffer),c=r.map(f=>f[0]),h=r.map(f=>f[1]),d=new Uint8Array(new Int32Array(c).buffer),p=new Uint8Array(new Int32Array(h).buffer);return w3(i,u,t.shape.length,Vn[t.dtype],d,p,a,l),o}var qK={kernelName:Vs,backendName:"wasm",kernelFunc:GK,setupFunc:jK},XK=!1,KK=wn(Us,XK),b3;function ZK(e){b3=e.wasm.cwrap(Hs,null,["number","number","number"])}function YK(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,o=n.makeOutput(r.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return b3(s,i,l),o}var JK={kernelName:Hs,backendName:"wasm",setupFunc:ZK,kernelFunc:YK},_3;function QK(e){_3=e.wasm.cwrap(Vo,null,["number","number","number","number"])}function eZ(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("prod",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(g.dataId).id;_3(l,y,Vn[g.dtype],b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(g.shape,d);g.shape=b}return g}var tZ={kernelName:Vo,backendName:"wasm",setupFunc:QK,kernelFunc:eZ},nZ=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=Gm(r,a,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},rZ={kernelName:Eu,backendName:"wasm",kernelFunc:nZ},aZ=!0,sZ=wn(Is,aZ),iZ=Rn(js),oZ=Rn(qs),v3;function lZ(e){v3=e.wasm.cwrap(Gs,null,["number","number","number","number","number","number","number","number","number","number"])}function uZ(e){let{backend:t,inputs:n,attrs:r}=e,{images:a}=n,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,[c,h,d,p]=a.shape,f=[c,l,u,p],m=t.dataIdMap.get(a.dataId),A;m.dtype!=="float32"&&(A=Mp({backend:t,inputs:{x:a},attrs:{dtype:"float32"}}),m=t.dataIdMap.get(A.dataId));let y=m.id,g=t.makeOutput(f,"float32");if(v.sizeFromShape(a.shape)===0)return g;let b=t.dataIdMap.get(g.dataId).id;return v3(y,c,h,d,p,l,u,s?1:0,i?1:0,b),A!=null&&t.disposeData(A.dataId),g}var cZ={kernelName:Gs,backendName:"wasm",setupFunc:lZ,kernelFunc:uZ},k3;function hZ(e){k3=e.wasm.cwrap(Xs,null,["number","array","number","array","number","number"])}function dZ(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=v.parseAxisParam(s,a.shape);if(a.shape.length===0)return Rp({inputs:{x:a},backend:n});let o=n.makeOutput(a.shape,a.dtype),l=n.dataIdMap.get(a.dataId).id,u=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(i).buffer),h=new Uint8Array(new Int32Array(a.shape).buffer);k3(l,c,i.length,h,a.shape.length,u);let d=Nr({inputs:{x:o},attrs:{shape:a.shape},backend:n});return n.disposeData(o.dataId),d}var pZ={kernelName:Xs,backendName:"wasm",kernelFunc:dZ,setupFunc:hZ},I3;function fZ(e){I3=e.wasm.cwrap(al,null,["number","number","number","number","number","number","number","number","array","number","number"])}function mZ(e){let{inputs:t,backend:n,attrs:r}=e,{image:a}=t,{radians:s,fillValue:i,center:o}=r,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(a.dataId).id,c=n.dataIdMap.get(l.dataId).id,[h,d,p,f]=a.shape,[m,A]=R.getImageCenter(o,d,p),y=i===0,g=255,b=typeof i=="number"?[i,i,i,y?0:g]:[...i,g],_=new Uint8Array(new Int32Array(b).buffer);return I3(u,h,d,p,f,s,m,A,_,b.length,c),l}var AZ={kernelName:al,backendName:"wasm",kernelFunc:mZ,setupFunc:fZ},yZ=Rn(Ks),gZ=Rn(Zs),N3;function xZ(e){N3=e.wasm.cwrap(jo,null,["number","number","number","number","number","number","array","number","number"])}function wZ(e){let{backend:t,inputs:n,attrs:r}=e,{indices:a,updates:s}=n,{shape:i}=r,o=t.makeOutput(i,s.dtype);if(v.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:u,sliceSize:c,strides:h,outputSize:d}=Uf.calculateShapes(s,a,i),p=t.dataIdMap.get(a.dataId).id,f=t.dataIdMap.get(s.dataId).id,m=new Uint8Array(new Int32Array(h).buffer),A=t.dataIdMap.get(o.dataId).id;return N3(p,f,Vn[s.dtype],l,u,c,m,d,A),o}var bZ={kernelName:jo,backendName:"wasm",setupFunc:xZ,kernelFunc:wZ},S3;function _Z(e){S3=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function vZ(e){let{inputs:t,backend:n}=e,{condition:r,t:a,e:s}=t,i=n.dataIdMap.get(r.dataId).id,o=n.dataIdMap.get(a.dataId).id,l=n.dataIdMap.get(s.dataId).id,u=n.makeOutput(a.shape,a.dtype),c=n.dataIdMap.get(u.dataId).id,h=r.shape.length,d=a.shape.length,p=h===0||h>1||d===1?1:v.sizeFromShape(a.shape.slice(1));return S3(i,o,l,p,c),u}var kZ={kernelName:Go,backendName:"wasm",kernelFunc:vZ,setupFunc:_Z},T3;function IZ(e){T3=e.wasm.cwrap(Js,null,["number","number"])}function NZ(e){let{backend:t,inputs:{x:n}}=e,r=t.dataIdMap.get(n.dataId).id,a=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(a.dataId).id;return v.sizeFromShape(a.shape)===0||T3(r,s),a}var SZ={kernelName:"Sigmoid",backendName:"wasm",setupFunc:IZ,kernelFunc:NZ},TZ=Rn(Ys);function $p(e){let{inputs:{x:t},attrs:{begin:n,size:r},backend:a}=e,[s,i]=fn.parseSliceParams(t,n,r),o=fn.isSliceContinous(t.shape,s,i),l=a.readSync(t.dataId),u=a.makeOutput(i,t.dtype),c=v.computeStrides(t.shape),h=a.dataIdMap.get(u.dataId);if(o){let f=fn.computeFlatOffset(s,c);return t.dtype==="string"?h.stringBytes=l.slice(f,f+v.sizeFromShape(i)):a.typedArrayFromHeap(u).set(l.subarray(f,f+v.sizeFromShape(i))),u}if(t.dtype==="string"){let f=up(l,s,i,t.shape,t.dtype);return h.stringBytes=f,u}let d=a.typedArrayFromHeap(u),p=t.shape.length;if(p===2)EZ(l,c[0],d,s,i);else if(p===3)CZ(l,c[0],c[1],d,s,i);else if(p===4)RZ(l,c[0],c[1],c[2],d,s,i);else{let f=up(l,s,i,t.shape,t.dtype);d.set(f)}return u}function EZ(e,t,n,r,a){let s=0,i=r[0],o=r[1],l=i+a[0];for(let u=i;u{let d=[...c];d[o]=h;let p=$p({inputs:{x:a},attrs:{begin:u,size:d},backend:r});return u[o]+=h,p})}var zZ={kernelName:Jo,backendName:"wasm",kernelFunc:OZ},PZ=Rn(Qs),LZ=Rn(Fu),WZ=!0,BZ=wn(ni,WZ),C3;function VZ(e){C3=e.wasm.cwrap($a,null,["number","number","number"])}function UZ(e){let{backend:t,inputs:n,attrs:r}=e,{alpha:a}=r,{x:s}=n,i=t.dataIdMap.get(s.dataId).id,o=t.makeOutput(s.shape,s.dtype),l=t.dataIdMap.get(o.dataId).id;return C3(i,a,l),o}var HZ={kernelName:$a,backendName:"wasm",setupFunc:VZ,kernelFunc:UZ},R3;function jZ(e){R3=e.wasm.cwrap(Qo,null,["number","array","number","array","array","array","array","array","number","number"])}function GZ(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{begin:s,end:i,strides:o}=r;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,p=R.slice_util.maskToAxes(c);if(p.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(c!==0&&h!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(c!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let f=a.shape.length-s.length,m=R.slice_util.maskToAxes(h),A=a.shape.slice();m.forEach(M=>{s[M]=0,i[M]=1,A.splice(M,0,1)});let y=Nr({inputs:{x:a},attrs:{shape:A},backend:t}),{begin:g,end:b,strides:_}=R.slice_util.getNormalizedAxes(y.shape,p,f,s,i,o,l,u,c);s=g,i=b,o=_;let w=R.slice_util.maskToAxes(d);w.forEach(M=>{i[M]=s[M]+1,o[M]=1});let x=R.slice_util.computeOutShape(s,i,o),N=x.filter((M,D)=>w.indexOf(D)===-1);if(o.every(M=>M===1)){let M=$p({inputs:{x:y},attrs:{begin:s,size:x},backend:t});t.disposeData(y.dataId);let D=Nr({inputs:{x:M},attrs:{shape:N},backend:t});return t.disposeData(M.dataId),D}let S=t.makeOutput(N,"float32");if(!N.some(M=>M===0)){let M=t.dataIdMap.get(y.dataId).id,D=new Uint8Array(new Int32Array(v.computeStrides(y.shape)).buffer),z=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),U=new Uint8Array(new Int32Array(o).buffer),H=new Uint8Array(new Int32Array(N).buffer),X=new Uint8Array(new Int32Array(v.computeStrides(N)).buffer),j=t.dataIdMap.get(S.dataId).id;R3(M,D,y.shape.length,z,W,U,H,X,N.length,j)}t.disposeData(y.dataId);let T=Nr({inputs:{x:S},attrs:{shape:N},backend:t});return t.disposeData(S.dataId),T}var qZ={kernelName:Qo,backendName:"wasm",setupFunc:jZ,kernelFunc:GZ},XZ=!0,KZ=wn(ri,XZ),F3;function ZZ(e){F3=e.wasm.cwrap(ei,null,["number, number, number"])}function YZ(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=Ul(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("sum",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(g.dataId).id;F3(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(g.shape,d);g.shape=b}return g}var JZ={kernelName:ei,backendName:"wasm",setupFunc:ZZ,kernelFunc:YZ},QZ=Rn(ai),M3;function eY(e){M3=e.wasm.cwrap(Ma,null,["number","array","number","array","number","number"])}function tY(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,s=n.dataIdMap.get(a.dataId).id,{reps:i}=r,o=new Array(a.shape.length);for(let d=0;d{let{x:r}=e,{k:a,sorted:s}=n,i=t.dataIdMap.get(r.dataId).id,o=new Uint8Array(new Int32Array(r.shape).buffer),l=r.shape.slice();l[l.length-1]=a;let u=t.makeOutput(l,r.dtype),c=t.dataIdMap.get(u.dataId).id,h=t.makeOutput(l,"int32"),d=t.dataIdMap.get(h.dataId).id;return $3(i,o,r.shape.length,Vn[r.dtype],a,s,c,d),[u,h]},sY={kernelName:tl,backendName:"wasm",setupFunc:rY,kernelFunc:aY};function iY(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a.shape[s],o=a.shape.length,l=new Array(o-1),u=0;for(let p=0;p({dataId:p,dtype:f,shape:l}))}var oY={kernelName:nl,backendName:"wasm",kernelFunc:iY};function lY(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(0),r}var uY={kernelName:rl,backendName:"wasm",kernelFunc:lY},cY=[Eq,Rq,$q,Vq,jq,Kq,Zq,Yq,eX,tX,aX,oX,lX,hX,fX,yX,wX,_X,vX,kX,NX,EX,CX,FX,Tq,DX,PX,BX,HX,qX,KX,YX,Dq,eK,nK,aK,sK,oK,cK,dK,mK,gK,bK,vK,IK,NK,EK,FK,DK,zK,WK,VK,HK,qK,KK,JK,tZ,rZ,sZ,iZ,oZ,Gq,cZ,pZ,AZ,gZ,yZ,bZ,kZ,SZ,TZ,FZ,DZ,zZ,PZ,LZ,BZ,HZ,qZ,KZ,JZ,QZ,nY,sY,Lq,oY,uY];for(let e of cY)ui(e);var IA=J();IA.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));IA.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(IA.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var D3=no(Ak()),hY='var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["getNoExitRuntime"]()){}else{Module["PThread"].threadExit(ex.status)}}else{Module["PThread"].threadExit(-2);throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',dY=no(yk()),O3=class extends fu{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new Rh(this,Pr())}write(e,t,n){let r={id:this.dataIdNextNumber++};return this.move(r,e,t,n,1),r}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}move(e,t,n,r,a){let s=this.dataIdNextNumber++;if(r==="string"){let u=t;this.dataIdMap.set(e,{id:s,stringBytes:u,shape:n,dtype:r,memoryOffset:null,refCount:a});return}let i=v.sizeFromShape(n),o=i*v.bytesPerElement(r),l=this.wasm._malloc(o);this.dataIdMap.set(e,{id:s,memoryOffset:l,shape:n,dtype:r,refCount:a}),this.wasm.tfjs.registerTensor(s,i,l),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,o),l)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:r,stringBytes:a}=this.dataIdMap.get(e);if(n==="string")return a;let s=this.wasm.HEAPU8.slice(t,t+v.sizeFromShape(r)*v.bytesPerElement(n));return pY(s.buffer,n)}disposeData(e,t=!1){if(this.dataIdMap.has(e)){let n=this.dataIdMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;this.wasm._free(n.memoryOffset),this.wasm.tfjs.disposeData(n.id),this.dataIdMap.delete(e)}return!0}refCount(e){return this.dataIdMap.has(e)?this.dataIdMap.get(e).refCount:0}incRef(e){let t=this.dataIdMap.get(e);t!=null&&t.refCount++}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let r;if(n==null)r=this.write(null,e,t);else{let a=this.dataIdNextNumber++;r={id:a},this.dataIdMap.set(r,{id:a,memoryOffset:n,shape:e,dtype:t,refCount:1});let s=v.sizeFromShape(e);this.wasm.tfjs.registerTensor(a,s,n)}return{dataId:r,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let r=this.wasm.HEAPU8.buffer,{memoryOffset:a}=this.dataIdMap.get(n),s=v.sizeFromShape(e);switch(t){case"float32":return new Float32Array(r,a,s);case"int32":return new Int32Array(r,a,s);case"bool":return new Uint8Array(r,a,s);default:throw new Error(`Unknown dtype ${t}`)}}};function fY(e){return(t,n)=>(v.fetch(e,{credentials:"same-origin"}).then(r=>{r.ok||t.env.a(`failed to load wasm binary file at '${e}'`),r.arrayBuffer().then(a=>{WebAssembly.instantiate(a,t).then(s=>{n(s.instance)})})}),{})}function z3(e,t,n){if(Dp!=null)return Dp;let r="tfjs-backend-wasm.wasm";return e&&t?r="tfjs-backend-wasm-threaded-simd.wasm":e&&(r="tfjs-backend-wasm-simd.wasm"),kc!=null&&kc[r]!=null?kc[r]:n+r}async function mY(){let[e,t]=await Promise.all([J().getAsync("WASM_HAS_SIMD_SUPPORT"),J().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,r)=>{let a={};a.locateFile=(o,l)=>{if(o.endsWith(".worker.js")){let u=hY,c=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(c)}return o.endsWith(".wasm")?z3(e,t,Ic!=null?Ic:l):l+o},NA&&(a.instantiateWasm=fY(z3(e,t,Ic!=null?Ic:"")));let s=!1;a.onAbort=()=>{s||Nc||(Nc=!0,r({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))};let i;t&&e&&Dp==null?(a.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+D3.default.toString()],{type:"text/javascript"}),i=(0,D3.default)(a)):i=(0,dY.default)(a),i.then(o=>{s=!0,Nc=!1;let l=null;o.tfjs={init:o.cwrap("init",null,[]),registerTensor:o.cwrap("register_tensor",null,["number","number","number"]),disposeData:o.cwrap("dispose_data",l,["number"]),dispose:o.cwrap("dispose",l,[])},n({wasm:o})})})}function pY(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var AY=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],Dp=null,Ic=null,kc={},Nc=!1,NA=!1;function yY(e,t=!1){if(Kf("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),Nc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");Dp=e,NA=t}function gY(e,t=!1){if(Nc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Ic=e;else{kc=e;let n=AY.filter(r=>kc[r]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}NA=t}var P3="3.3.0",xY=2;fl("wasm",async()=>{let{wasm:e}=await mY();return new O3(e)},xY);Z().prototype.abs=function(){return this.throwIfDisposed(),Bt(this)};Z().prototype.acos=function(){return this.throwIfDisposed(),Yf(this)};Z().prototype.acosh=function(){return this.throwIfDisposed(),Jf(this)};Z().prototype.add=function(e){return this.throwIfDisposed(),ie(this,e)};Z().prototype.all=function(e,t){return this.throwIfDisposed(),kd(this,e,t)};Z().prototype.any=function(e,t){return this.throwIfDisposed(),ju(this,e,t)};Z().prototype.argMax=function(e){return this.throwIfDisposed(),Gu(this,e)};Z().prototype.argMin=function(e){return this.throwIfDisposed(),Qf(this,e)};Z().prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),G(this,[])};Z().prototype.asType=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.as1D=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.as2D=function(e,t){return this.throwIfDisposed(),G(this,[e,t])};Z().prototype.as3D=function(e,t,n){return this.throwIfDisposed(),G(this,[e,t,n])};Z().prototype.as4D=function(e,t,n,r){return this.throwIfDisposed(),G(this,[e,t,n,r])};Z().prototype.as5D=function(e,t,n,r,a){return this.throwIfDisposed(),G(this,[e,t,n,r,a])};Z().prototype.asin=function(){return this.throwIfDisposed(),em(this)};Z().prototype.asinh=function(){return this.throwIfDisposed(),tm(this)};Z().prototype.atan=function(){return this.throwIfDisposed(),nm(this)};Z().prototype.atan2=function(e){return this.throwIfDisposed(),rm(this,e)};Z().prototype.atanh=function(){return this.throwIfDisposed(),am(this)};Z().prototype.avgPool=function(e,t,n,r){return this.throwIfDisposed(),Xu(this,e,t,n,r)};Z().prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Ku(this,e,t)};Z().prototype.batchNorm=function(e,t,n,r,a){return this.throwIfDisposed(),mi(this,e,t,n,r,a)};Z().prototype.broadcastTo=function(e){return this.throwIfDisposed(),Zu(this,e)};Z().prototype.cast=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.ceil=function(){return this.throwIfDisposed(),lm(this)};Z().prototype.clipByValue=function(e,t){return this.throwIfDisposed(),Sn(this,e,t)};Z().prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof Ge&&(e=[e]),lt([this,...e],t)};Z().prototype.conv1d=function(e,t,n,r,a,s){return this.throwIfDisposed(),Nd(this,e,t,n,r,a,s)};Z().prototype.conv2dTranspose=function(e,t,n,r,a){return this.throwIfDisposed(),Sd(this,e,t,n,r,a)};Z().prototype.conv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ua(this,e,t,n,r,a,s)};Z().prototype.cos=function(){return this.throwIfDisposed(),Yu(this)};Z().prototype.cosh=function(){return this.throwIfDisposed(),Td(this)};Z().prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),Ed(this,e,t,n)};Z().prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),hm(this,e,t)};Z().prototype.depthwiseConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),gl(this,e,t,n,r,a,s)};Z().prototype.dilation2d=function(e,t,n,r,a){return this.throwIfDisposed(),dm(this,e,t,n,r,a)};Z().prototype.divNoNan=function(e){return this.throwIfDisposed(),pm(this,e)};Z().prototype.div=function(e){return this.throwIfDisposed(),be(this,e)};Z().prototype.dot=function(e){return this.throwIfDisposed(),Ax(this,e)};Z().prototype.elu=function(){return this.throwIfDisposed(),xl(this)};Z().prototype.equal=function(e){return this.throwIfDisposed(),Ba(this,e)};Z().prototype.erf=function(){return this.throwIfDisposed(),fm(this)};Z().prototype.exp=function(){return this.throwIfDisposed(),Jn(this)};Z().prototype.expandDims=function(e){return this.throwIfDisposed(),mn(this,e)};Z().prototype.expm1=function(){return this.throwIfDisposed(),mm(this)};Z().prototype.fft=function(){return this.throwIfDisposed(),oc(this)};Z().prototype.flatten=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.floor=function(){return this.throwIfDisposed(),wl(this)};Z().prototype.floorDiv=function(e){return this.throwIfDisposed(),vd(this,e)};Z().prototype.gather=function(e,t){return this.throwIfDisposed(),Ai(this,e,t)};Z().prototype.greaterEqual=function(e){return this.throwIfDisposed(),Ua(this,e)};Z().prototype.greater=function(e){return this.throwIfDisposed(),ur(this,e)};Z().prototype.ifft=function(){return this.throwIfDisposed(),Il(this)};Z().prototype.irfft=function(){return this.throwIfDisposed(),Gd(this)};Z().prototype.isFinite=function(){return this.throwIfDisposed(),yx(this)};Z().prototype.isInf=function(){return this.throwIfDisposed(),gx(this)};Z().prototype.isNaN=function(){return this.throwIfDisposed(),xx(this)};Z().prototype.leakyRelu=function(e){return this.throwIfDisposed(),Qu(this,e)};Z().prototype.lessEqual=function(e){return this.throwIfDisposed(),yi(this,e)};Z().prototype.less=function(e){return this.throwIfDisposed(),Rd(this,e)};Z().prototype.localResponseNormalization=function(e,t,n,r){return this.throwIfDisposed(),ym(this,e,t,n,r)};Z().prototype.logSigmoid=function(){return this.throwIfDisposed(),_x(this)};Z().prototype.logSoftmax=function(e){return this.throwIfDisposed(),$d(this,e)};Z().prototype.logSumExp=function(e,t){return this.throwIfDisposed(),wm(this,e,t)};Z().prototype.log=function(){return this.throwIfDisposed(),zn(this)};Z().prototype.log1p=function(){return this.throwIfDisposed(),Fd(this)};Z().prototype.logicalAnd=function(e){return this.throwIfDisposed(),cr(this,e)};Z().prototype.logicalNot=function(){return this.throwIfDisposed(),ec(this)};Z().prototype.logicalOr=function(e){return this.throwIfDisposed(),Dd(this,e)};Z().prototype.logicalXor=function(e){return this.throwIfDisposed(),Nx(this,e)};Z().prototype.matMul=function(e,t,n){return this.throwIfDisposed(),Ke(this,e,t,n)};Z().prototype.maxPool=function(e,t,n,r){return this.throwIfDisposed(),tc(this,e,t,n,r)};Z().prototype.max=function(e,t){return this.throwIfDisposed(),Qn(this,e,t)};Z().prototype.maximum=function(e){return this.throwIfDisposed(),Br(this,e)};Z().prototype.mean=function(e,t){return this.throwIfDisposed(),Tt(this,e,t)};Z().prototype.min=function(e,t){return this.throwIfDisposed(),_l(this,e,t)};Z().prototype.minimum=function(e){return this.throwIfDisposed(),vl(this,e)};Z().prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),_m(this,e,t)};Z().prototype.mod=function(e){return this.throwIfDisposed(),vm(this,e)};Z().prototype.mul=function(e){return this.throwIfDisposed(),P(this,e)};Z().prototype.neg=function(){return this.throwIfDisposed(),St(this)};Z().prototype.norm=function(e,t,n){return this.throwIfDisposed(),Zd(this,e,t,n)};Z().prototype.notEqual=function(e){return this.throwIfDisposed(),xi(this,e)};Z().prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),hl(this,e,t,n)};Z().prototype.onesLike=function(){return this.throwIfDisposed(),Pn(this)};Z().prototype.pad=function(e,t){return this.throwIfDisposed(),ca(this,e,t)};Z().prototype.pool=function(e,t,n,r,a){return this.throwIfDisposed(),Ex(this,e,t,n,r,a)};Z().prototype.pow=function(e){return this.throwIfDisposed(),ha(this,e)};Z().prototype.prelu=function(e){return this.throwIfDisposed(),rc(this,e)};Z().prototype.prod=function(e,t){return this.throwIfDisposed(),zd(this,e,t)};Z().prototype.reciprocal=function(){return this.throwIfDisposed(),Nm(this)};Z().prototype.relu=function(){return this.throwIfDisposed(),Ur(this)};Z().prototype.relu6=function(){return this.throwIfDisposed(),Ld(this)};Z().prototype.reshapeAs=function(e){return this.throwIfDisposed(),G(this,e.shape)};Z().prototype.reshape=function(e){return this.throwIfDisposed(),G(this,e)};Z().prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),qx(this,e,t,n)};Z().prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),Xx(this,e,t,n)};Z().prototype.reverse=function(e){return this.throwIfDisposed(),Ln(this,e)};Z().prototype.rfft=function(){return this.throwIfDisposed(),lc(this)};Z().prototype.round=function(){return this.throwIfDisposed(),Sm(this)};Z().prototype.rsqrt=function(){return this.throwIfDisposed(),Wd(this)};Z().prototype.selu=function(){return this.throwIfDisposed(),Bd(this)};Z().prototype.separableConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),Tm(this,e,t,n,r,a,s)};Z().prototype.sigmoid=function(){return this.throwIfDisposed(),On(this)};Z().prototype.sign=function(){return this.throwIfDisposed(),Em(this)};Z().prototype.sin=function(){return this.throwIfDisposed(),Vd(this)};Z().prototype.sinh=function(){return this.throwIfDisposed(),Ud(this)};Z().prototype.slice=function(e,t){return this.throwIfDisposed(),$e(this,e,t)};Z().prototype.softmax=function(e){return this.throwIfDisposed(),ic(this,e)};Z().prototype.softplus=function(){return this.throwIfDisposed(),bl(this)};Z().prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),nc(this,e,t)};Z().prototype.split=function(e,t){return this.throwIfDisposed(),Ut(this,e,t)};Z().prototype.sqrt=function(){return this.throwIfDisposed(),an(this)};Z().prototype.square=function(){return this.throwIfDisposed(),ht(this)};Z().prototype.squaredDifference=function(e){return this.throwIfDisposed(),qd(this,e)};Z().prototype.squeeze=function(e){return this.throwIfDisposed(),Ha(this,e)};Z().prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof Ge?[this,e]:[this,...e];return An(n,t)};Z().prototype.step=function(e){return this.throwIfDisposed(),Nl(this,e)};Z().prototype.stridedSlice=function(e,t,n,r,a,s,i,o){return this.throwIfDisposed(),Rm(this,e,t,n,r,a,s,i,o)};Z().prototype.sub=function(e){return this.throwIfDisposed(),we(this,e)};Z().prototype.sum=function(e,t){return this.throwIfDisposed(),Re(this,e,t)};Z().prototype.tan=function(){return this.throwIfDisposed(),Fm(this)};Z().prototype.tanh=function(){return this.throwIfDisposed(),Al(this)};Z().prototype.tile=function(e){return this.throwIfDisposed(),Va(this,e)};Z().prototype.toBool=function(){return this.throwIfDisposed(),ge(this,"bool")};Z().prototype.toFloat=function(){return this.throwIfDisposed(),ge(this,"float32")};Z().prototype.toInt=function(){return this.throwIfDisposed(),ge(this,"int32")};Z().prototype.topk=function(e,t){return this.throwIfDisposed(),Mm(this,e,t)};Z().prototype.transpose=function(e){return this.throwIfDisposed(),ot(this,e)};Z().prototype.unique=function(e){return this.throwIfDisposed(),Kd(this,e)};Z().prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),$m(this,e,t)};Z().prototype.unstack=function(e){return this.throwIfDisposed(),hr(this,e)};Z().prototype.where=function(e,t){return this.throwIfDisposed(),Tn(e,this,t)};Z().prototype.zerosLike=function(){return this.throwIfDisposed(),qe(this)};var L3={kernelName:so,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Nl(ge(n,"float32"),-1))}}},wY={kernelName:io,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=ht(ge(n,"float32")),a=an(we(Ie(1),r));return St(be(e,a))}}}},bY={kernelName:oo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=an(we(ht(ge(n,"float32")),1));return be(e,r)}}}},_Y={kernelName:Ra,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=e,i=Vt(n.shape,a);return i.length>0&&(s=Re(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Vt(r.shape,a);return i.length>0&&(s=Re(s,i)),G(s,r.shape)}}}},vY={kernelName:fs,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((r,a)=>{n[a]=()=>e.clone()}),n}},kY={kernelName:ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>qe(n)}}},IY={kernelName:yu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>qe(n)}}},NY={kernelName:lo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,an(we(Ie(1),ht(ge(n,"float32")))))}}},SY={kernelName:uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=an(ie(Ie(1),ht(ge(n,"float32"))));return be(e,r)}}}},TY={kernelName:po,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=ie(ht(n),ht(r)),i=P(e,be(r,s)),o=Vt(n.shape,a);return o.length>0&&(i=Re(i,o)),G(i,n.shape)},b:()=>{let s=ie(ht(n),ht(r)),i=St(P(e,be(n,s))),o=Vt(r.shape,a);return o.length>0&&(i=Re(i,o)),G(i,r.shape)}}}},EY={kernelName:co,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ie(ht(ge(n,"float32")),1))}}},CY={kernelName:ho,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,we(Ie(1),ht(ge(n,"float32"))))}}};function RY(e,t,n,r,a,s){let i=C(e,"dy","avgPool3dGrad"),o=C(t,"input","avgPool3dGrad"),l=i,u=o,c=!1;o.rank===4&&(c=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),u=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),s!=null&&F(Kt(a),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${s} but got pad ${a}.`);let h={dy:l,input:u},d={filterSize:n,strides:r,pad:a,dimRoundingMode:s},p=$.runKernel(Ph,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var FY=O({avgPool3dGrad_:RY}),MY={kernelName:gu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i,dimRoundingMode:o}=n;return{x:()=>FY(e,r,a,s,i,o)}}};function $Y(e,t,n,r,a){let s=C(e,"dy","avgPoolGrad"),i=C(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,u=!1;i.rank===3&&(u=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let c={dy:l,input:o},h={filterSize:n,strides:r,pad:a},d=$.runKernel(zh,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var DY=O({avgPoolGrad_:$Y}),OY={kernelName:As,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i}=n;return{x:()=>DY(e,r,a,s,i)}}},zY={kernelName:ys,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[r,a]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>Ke(e,a,!1,!0),b:()=>Ke(r,e,!0,!1)}:!s&&i?{a:()=>Ke(e,a,!1,!1),b:()=>Ke(e,r,!0,!1)}:s&&!i?{a:()=>Ke(a,e,!1,!0),b:()=>Ke(r,e,!1,!1)}:{a:()=>Ke(a,e,!0,!0),b:()=>Ke(e,r,!0,!0)}}},PY={kernelName:xu,gradFunc:(e,t,n)=>{let{blockShape:r,crops:a}=n;return{x:()=>nc(e,r,a)}}},LY={kernelName:c5,gradFunc:(e,t,n)=>{let r=n,a=r.inputShape,s=r.shape,i=Array.from(s);for(let l=a.length-1;l>=0;l--)if(a[l]===s[l])i[l]=1;else if(a[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Re(e,o,!0)}}},WY={kernelName:gs,gradFunc:e=>({x:()=>e.clone()})},BY={kernelName:xs,gradFunc:e=>({x:()=>qe(e)})},VY={kernelName:Fa,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{clipValueMin:a,clipValueMax:s}=n;return{x:()=>Tn(cr(Ua(r,a),yi(r,s)),e,qe(e))}}},UY={kernelName:wu,inputsToSave:["x"],gradFunc:L3.gradFunc},HY={kernelName:fo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let r=t.map(o=>o.shape),{axis:a}=n,s=or(a,t[0].shape)[0],i=r.map(o=>o[s]);return Ut(e,i,s).map(o=>()=>o)}},jY={kernelName:ws,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F(Wa(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>um(r.shape,e,a,i,o,l),filter:()=>Pm(r,e,a.shape,i,o,l)}}},GY={kernelName:bs,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>ua(e,a,s,i,o,1,l),filter:()=>Pm(e,r,a.shape,s,i,o,l)}}};function qY(e,t,n,r,a){let s=e;e.rank===4&&(s=G(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:r,pad:a,filterShape:n};return $.runKernel(Vh,o,l)}var XY=O({conv3DBackpropFilter_:qY}),KY={kernelName:bu,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s}=n;F(Wa(r),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);let[i,o]=t;return{x:()=>fx(i.shape,e,o,a,s),filter:()=>XY(i,e,o.shape,a,s)}}},ZY={kernelName:_s,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(St(Vd(ge(n,"float32"))),e)}}},YY={kernelName:mo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Ud(ge(n,"float32")),e)}}},JY={kernelName:vs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a,exclusive:s,reverse:i}=n;return{x:()=>{let o=Ix([a],r.rank),l=Ed(e,a,s,!i);return o!=null&&(l=ot(l,o)),l}}}},QY={kernelName:ks,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s,dimRoundingMode:i}=n,o=r==null?[1,1]:r;F(Wa(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,u]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),F(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),F(Lr(a,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${o}'.`),i!=null&&F(Kt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>Wx(l.shape,e,u,a,s,r,i),filter:()=>Lx(l,e,u.shape,a,s,r,i)}}},eJ={kernelName:_u,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,s={x:r,filter:a,dy:e},i={x:r,filter:a,dy:e};return{x:()=>$.runKernel(Xh,s,n),filter:()=>$.runKernel(Kh,i,n)}}},tJ={kernelName:go,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,r={dy:e,y:n};return{x:()=>$.runKernel(Zh,r)}}},nJ={kernelName:xo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(Jn(St(ht(n))),2/Math.sqrt(Math.PI));return{x:()=>P(e,r)}}},rJ={kernelName:Ns,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,n)}}},aJ={kernelName:bo,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>G(e,n.shape)}}},sJ={kernelName:_o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Jn(n))}}},iJ={kernelName:Ss,gradFunc:e=>({x:()=>qe(e)})},oJ={kernelName:Ts,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=be(e,ge(r,"float32")),i=Vt(n.shape,a);return i.length>0?G(Re(s,i),n.shape):s},b:()=>{let s=P(e,ge(n,"float32")),i=Vt(r.shape,a);i.length>0&&(s=G(Re(s,i),r.shape));let o=ht(r);return St(be(s,ge(o,"float32")))}}}},lJ={kernelName:Es,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:r}=n,[a,s,i,o]=t,l=o==null?Ie(1):o,u=Vt(s.shape,a.shape),c=[];if(s.rank===1){for(let m=0;ms.rank===1?G(P(P(e,Va(G(p,[1,1,1,s.shape[0]]),c)),l),a.shape):G(P(P(e,p),l),a.shape),mean:()=>{let m=P(P(p,Ie(-1)),d);return s.rank===1&&(m=Re(m,u)),G(m,s.shape)},variance:()=>{let m=P(P(f,h),d);return s.rank===1&&(m=Re(m,u)),G(m,s.shape)},scale:()=>{let m=P(h,p),A=P(e,m);return s.rank===1&&(A=Re(A,u)),G(A,s.shape)},offset:()=>{let m=e;return s.rank===1&&(m=Re(m,u)),G(m,s.shape)}}}},uJ={kernelName:ko,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[r,a]=t,{axis:s}=n,i=or(s,r.shape)[0];return{x:()=>{let o=r.shape,l=a.size,u=o.slice(0,i),c=u.length,h=o.slice(s,o.length).slice(1),d=h.length,p=W3(0,c),f=W3(c+1,c+1+d),m=B3([u,[l],h]),A=G(e,m),y=G(a,[l]),g=B3([[c],p,f]),b=ot(A,g),_=$m(b,y,r.shape[i]),w=xm(g);return _=ot(_,w),_},indices:()=>a}}};function W3(e,t){let n=[];for(let r=e;r{let[n,r]=t;return{a:()=>qe(n),b:()=>qe(r)}}},hJ={kernelName:Rs,gradFunc:e=>({x:()=>ge(e,"float32")})},dJ={kernelName:So,gradFunc:e=>({x:()=>qe(e)})},pJ={kernelName:To,gradFunc:e=>({x:()=>qe(e)})},fJ={kernelName:Eo,gradFunc:e=>({x:()=>qe(e)})},mJ={kernelName:Fs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{alpha:a}=n,s=ur(r,0);return{x:()=>Tn(s,e,P(e,a))}}},AJ={kernelName:Fo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ie(n,1))}}},yJ={kernelName:Ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ge(n,"float32"))}}},gJ={kernelName:h5,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n;return{logits:()=>{let s=!0,i=Jn(r);return we(e,P(Re(e,a,s),i))}}}};function xJ(e,t,n,r=5,a=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:r,bias:a,alpha:s,beta:i};return $.runKernel(td,o,l)}var wJ=O({localResponseNormalizationBackprop_:xJ}),bJ={kernelName:Nu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>wJ(r,a,e,s,i,o,l)}}};function V3(e,t,n,r){return t.rankP(e,ge(Ba(n,t),e.dtype))}}var U3={kernelName:$s,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{reductionIndices:a}=r,s=t[0],i=t[1],o=or(a,s.shape),l=V3(e,i,s,o);return{x:()=>l.x()}}},_J={kernelName:Ds,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,ge(Ua(n,r),"float32")),b:()=>P(e,ge(Rd(n,r),"float32"))}}};function vJ(e,t,n,r,a,s,i){let o=C(e,"dy","maxPool3dGrad"),l=C(t,"input","maxPool3dGrad"),u=C(n,"output","maxPool3dGrad"),c=o,h=l,d=u,p=!1;l.rank===4&&(p=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),h=G(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=G(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(c.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`),i!=null&&F(Kt(s),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let f={dy:c,input:h,output:d},m={filterSize:r,strides:a,pad:s,dimRoundingMode:i},A=$.runKernel(rd,f,m);return p?G(A,[A.shape[1],A.shape[2],A.shape[3],A.shape[4]]):A}var kJ=O({maxPool3dGrad_:vJ}),IJ={kernelName:Su,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=n;return{x:()=>kJ(e,r,a,s,i,o,l)}}};function NJ(e,t,n,r,a,s,i){let o=C(e,"dy","maxPoolGrad"),l=C(t,"input","maxPoolGrad"),u=C(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(Kt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let c={dy:o,input:l,output:u},h={filterSize:r,strides:a,pad:s,dimRoundingMode:i};return $.runKernel(nd,c,h)}var SJ=O({maxPoolGrad_:NJ}),TJ={kernelName:Os,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>SJ(e,r,a,s,i,o)}}},EJ={kernelName:zs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n,s=or(a,r.shape),i=kx(r.shape,s)[1],o=Lt(i);return{x:()=>{let l=r.shape.slice();s.forEach(c=>{l[c]=1});let u=G(e,l);return be(P(u,Vr(r.shape,"float32")),o)}}}},CJ={kernelName:Ps,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{axis:a}=r,[s,i]=t,o=or(a,s.shape),l=V3(e,i,s,o);return{x:()=>l.x()}}},RJ={kernelName:Ls,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,ge(yi(n,r),"float32")),b:()=>P(e,ge(ur(n,r),"float32"))}}},FJ={kernelName:Tu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>$e(e,s,r.shape)}}},MJ={kernelName:$o,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=Vt(n.shape,a);return s.length>0?G(Re(e,s),n.shape):e},b:()=>{let s=P(e,St(wl(be(n,r)))),i=Vt(r.shape,a);return i.length>0?G(Re(s,i),r.shape):s}}}},$J={kernelName:Ws,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=P(e,ge(r,"float32")),i=Vt(n.shape,a);return i.length>0?G(Re(s,i),n.shape):s},b:()=>{let s=P(e,ge(n,"float32")),i=Vt(r.shape,a);return i.length>0?G(Re(s,i),r.shape):s}}}},DJ={kernelName:Do,gradFunc:e=>({x:()=>St(e)})},OJ={kernelName:Bs,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>$t(n.shape,"float32")}}},zJ={kernelName:Wo,gradFunc:e=>({x:()=>qe(e)})},PJ={kernelName:Bo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:r}=n;return hr(e,r).map(a=>()=>a)}},H3={kernelName:Vs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>$e(e,s,r.shape)}}},LJ={kernelName:Us,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,r,a]=t,s=n,i=r,o=wt(s.shape,i.shape);return{a:()=>{let l=ge(i,"float32"),u=P(e,P(l,ha(s,we(l,Ie(1))))),c=Vt(s.shape,o);return c.length>0&&(u=Re(u,c)),G(u,s.shape)},b:()=>{let l=ur(s,0),u=Tn(l,zn(s),qe(s)),c=P(e,P(a,u)),h=Vt(i.shape,o);return h.length>0&&(c=Re(c,h)),G(c,i.shape)}}}},WJ={kernelName:Hs,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,r]=t,a=ur(n,0);return{x:()=>Tn(a,e,P(e,r)),alpha:()=>{let s=Tn(a,qe(e),P(e,n)),i=Vt(r.shape,e.shape);return i.length>0&&(s=Re(s,i)),G(s,r.shape)}}}},BJ={kernelName:Is,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=be(e,ge(r,"float32")),i=Vt(n.shape,a);return i.length>0?G(Re(s,i),n.shape):s},b:()=>{let s=P(e,ge(n,"float32")),i=Vt(r.shape,a);i.length>0&&(s=G(Re(s,i),r.shape));let o=ht(r);return St(be(s,ge(o,"float32")))}}}},VJ={kernelName:Uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,St(ht(n)))}}},UJ={kernelName:qs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(yi(n,6),Nl(n));return{x:()=>P(e,ge(r,"float32"))}}},HJ={kernelName:js,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,ge(Nl(n),"float32"))}}},jJ={kernelName:Ho,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>G(e,n.shape)}}},GJ={kernelName:Gs,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(ld,a,n)}}},qJ={kernelName:Cu,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(od,a,n)}}},XJ={kernelName:Xs,gradFunc:(e,t,n)=>{let{dims:r}=n,a=or(r,e.shape);return{x:()=>Ln(e,a)}}},KJ={kernelName:Ks,gradFunc:e=>({x:()=>qe(e)})},ZJ={kernelName:Zs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>St(be(e,P(ha(n,1.5),2)))}}},YJ={kernelName:Go,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>ge(qe(n),"float32"),t:()=>P(e,ge(n,e.dtype)),e:()=>P(e,ge(ec(n),e.dtype))}}},JJ={kernelName:qo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=ur(n,Ie(0)),a=Ie(Yx),s=Ie(Jx),i=P(e,s),o=P(P(e,a),Jn(ge(n,"float32")));return Tn(r,i,o)}}}},QJ={kernelName:Js,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(n,we(Ie(1),n)))}}},eQ={kernelName:Zo,gradFunc:e=>({x:()=>qe(e)})},tQ={kernelName:Ys,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Yu(ge(n,"float32")),e)}}},nQ={kernelName:Ko,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Td(ge(n,"float32")),e)}}},rQ={kernelName:Xo,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{begin:a,size:s}=n,i=r.shape,[o,l]=Z5(r,a,s),u=[];for(let c=0;cca(e,u)}}},aQ={kernelName:ti,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{dim:a}=n,s=!0,i=P(e,r);return{logits:()=>we(i,P(Re(i,[a],s),r))}}},sQ={kernelName:Yo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,On(n))}}},j3={kernelName:Ru,gradFunc:(e,t,n)=>{let{blockShape:r,paddings:a}=n;return{x:()=>Ku(e,r,a)}}},G3={kernelName:Jo,gradFunc:(e,t,n)=>{let{axis:r}=n;return{x:()=>lt(e,r)}}},iQ={kernelName:Qs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,P(an(ge(n,"float32")),2))}}},oQ={kernelName:Fu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(ge(n,"float32"),2))}}},lQ={kernelName:ni,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=Ie(2);return{a:()=>P(e,P(a,we(n,r))),b:()=>P(e,P(a,we(r,n)))}}},uQ={kernelName:$a,gradFunc:e=>({x:()=>qe(e)})},cQ={kernelName:ri,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=wt(n.shape,r.shape);return{a:()=>{let s=e,i=Vt(n.shape,a);return i.length>0&&(s=Re(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Vt(r.shape,a);return i.length>0&&(s=Re(s,i)),G(St(s),r.shape)}}}},hQ={kernelName:ei,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,a=r.shape.slice(),{axis:s}=n;or(s,r.shape).forEach(l=>{a[l]=1});let i=G(e,a),o=P(i,Vr(r.shape,"float32"));return{x:()=>o}}},dQ={kernelName:el,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>be(e,ht(Yu(n)))}}},pQ={kernelName:ai,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(we(Ie(1),ht(n)),e)}}},fQ={kernelName:Ma,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{reps:a}=n;return{x:()=>{let s=qe(r);if(r.rank===1)for(let i=0;i{let r=n,{perm:a}=r,s=xm(a);return{x:()=>ot(e,s)}}},AQ={kernelName:nl,gradFunc:(e,t,n)=>{let r=n,{axis:a}=r;return{value:()=>An(e,a)}}},gQ={kernelName:Mu,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>yQ(e,n)}}};function yQ(e,t){let n=Br(t,qe(t)),r=Ai(e,n),a=Ua(t,Ie(0,"int32")),s=r.rank-a.rank;for(let o=0;o({x:()=>qe(e)})},wQ=[L3,wY,bY,_Y,vY,kY,IY,NY,SY,TY,EY,CY,MY,OY,zY,PY,LY,WY,BY,VY,UY,HY,GY,jY,KY,ZY,YY,JY,QY,eJ,BJ,tJ,nJ,rJ,aJ,sJ,oJ,iJ,lJ,uJ,cJ,hJ,dJ,pJ,fJ,mJ,AJ,yJ,gJ,bJ,U3,U3,_J,IJ,TJ,EJ,CJ,RJ,FJ,MJ,$J,DJ,OJ,zJ,PJ,H3,H3,LJ,WJ,VJ,UJ,HJ,jJ,GJ,qJ,XJ,KJ,ZJ,YJ,JJ,QJ,eQ,tQ,nQ,rQ,aQ,sQ,j3,j3,G3,G3,iQ,lQ,oQ,uQ,cQ,hQ,dQ,pQ,fQ,mQ,AQ,gQ,xQ];for(let e of wQ)d5(e);var q3={};We(q3,{maxNorm:()=>bQ,minMaxNorm:()=>kQ,nonNeg:()=>vQ,unitNorm:()=>_Q});var SA;function Ht(){return SA==null&&(SA=rx().epsilon()),SA}function Sr(){return"channelsLast"}var ma=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ma.prototype)}},Tr=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Tr.prototype)}},V=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,V.prototype)}},Pe=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,Pe.prototype)}},X3=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,X3.prototype)}};function Ci(e,t){if(Array.isArray(e)){let n=[];for(let r=0;rn.toUpperCase())}var pr={};function TA(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function EA(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>EA(t));else{let t=Object.keys(e);for(let n of t){let r=e[n];r!=null&&typeof r=="object"&&(!Array.isArray(r)&&r.type==="ndarray"&&typeof r.value=="number"?e[n]=r.value:EA(r))}}}function Sc(e,t={},n={},r="object",a=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in pr)i=pr[s];else if(i=t[s],i==null)throw new V(`Unknown ${r}: ${e}. This may be due to one of the following reasons: 1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. 2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return i}else{let s=e;if(s.className==null||s.config==null)throw new V(`${r}: Improper config format: ${JSON.stringify(s)}. 'className' and 'config' must set.`);let i=s.className,o,l;if(i in n?[o,l]=n[i]:i in pr?[o,l]=pr.className:i in t&&([o,l]=t[i]),o==null)throw new V(`Unknown ${r}: ${i}. This may be due to one of the following reasons: 1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let u={};for(let p of Object.keys(pr))u[p]=pr[p];for(let p of Object.keys(n))u[p]=n[p];let c=s.config;c.customObjects=u;let h=Object.assign({},pr);for(let p of Object.keys(n))pr[p]=n[p];EA(s.config);let d=l(o,s.config,n,a);return pr=Object.assign({},h),d}else{let u=Object.assign({},pr);for(let h of Object.keys(n))pr[h]=n[h];let c=new o(s.config);return pr=Object.assign({},u),c}}}function kQ(e,t){return et?1:0}function Op(e,t){return-1*kQ(e,t)}function Ka(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function IQ(e){if(e==null)throw new V(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Fi(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new V(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function CA(e,t,n=0,r=Infinity){return qr(n>=0),qr(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(a=>typeof a===t)}function Jt(e,t){Array.isArray(e)?(v.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,r)=>Jt(n,`element ${r+1} of ${t}`))):v.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${K3(e)}.`)}function K3(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>K3(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function NQ(e,t){let n=v.now(),r;return(...a)=>{let s=v.now();return s-nan(Re(P(e,e),t,!0)))}var Tc=class extends ae.Serializable{getConfig(){return{}}},FA=class extends Tc{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=RA(e,this.axis),n=Sn(t,0,this.maxValue);return P(e,be(n,ie(Ht(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};FA.className="MaxNorm";ae.registerClass(FA);var MA=class extends Tc{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>be(e,ie(Ht(),RA(e,this.axis))))}getConfig(){return{axis:this.axis}}};MA.className="UnitNorm";ae.registerClass(MA);var $A=class extends Tc{apply(e){return Ur(e)}};$A.className="NonNeg";ae.registerClass($A);var DA=class extends Tc{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=RA(e,this.axis),n=ie(P(this.rate,Sn(t,this.minValue,this.maxValue)),P(1-this.rate,t));return P(e,be(n,ie(Ht(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};DA.className="MinMaxNorm";ae.registerClass(DA);var Y3={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function jt(e){return TA(e)}function J3(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"constraint")}function Gt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in Y3?Y3[e]:e,config:{}};return J3(t)}else return e instanceof Tc?e:J3(e)}function wQ(e){return new FA(e)}function bQ(e){return new MA(e)}function _Q(){return new $A}function vQ(e){return new DA(e)}var Q3={};We(Q3,{constant:()=>EQ,glorotNormal:()=>OQ,glorotUniform:()=>DQ,heNormal:()=>zQ,heUniform:()=>PQ,identity:()=>MQ,leCunNormal:()=>LQ,leCunUniform:()=>WQ,ones:()=>TQ,orthogonal:()=>BQ,randomNormal:()=>RQ,randomUniform:()=>CQ,truncatedNormal:()=>FQ,varianceScaling:()=>$Q,zeros:()=>SQ});var VQ=["channelsFirst","channelsLast"],UQ=["nearest","bilinear"],HQ=["valid","same","causal"],jQ=["max","avg"],GQ=["sum","mul","concat","ave"],Hl=new Map;function Ft(e){Fi(VQ,"DataFormat",e)}function qQ(e){Fi(UQ,"InterpolationFormat",e)}function nr(e){Fi(HQ,"PaddingMode",e)}function e7(e){Fi(jQ,"PoolMode",e)}var Ec=[],t7="/";function Mi(e,t){Ec.push(e);try{let n=t();return Ec.pop(),n}catch(n){throw Ec.pop(),n}}function XQ(){return Ec.length===0?"":Ec.join(t7)+t7}function r7(e){if(!n7(e))throw new Error("Not a valid tensor name: '"+e+"'");return XQ()+e}function a7(e){if(!n7(e))throw new Error("Not a valid tensor name: '"+e+"'");Hl.has(e)||Hl.set(e,0);let t=Hl.get(e);if(Hl.set(e,Hl.get(e)+1),t>0){let n=`${e}_${t}`;return Hl.set(n,1),n}else return e}var KQ=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function n7(e){return!!e.match(KQ)}function ZQ(e){return e===parseInt(e.toString(),10)}function Za(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let r=1;for(let a=t;a{if(e.shape.length!==2)throw new V(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=Rc(e,1);return OA(n,[1,t,1])})}function JQ(e){let t=[Za(e.shape)];return e.reshape(t)}function QQ(e){if(e.rank<=1)throw new V(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],Za(e.shape,1)];return e.reshape(t)}function $i(e,t,n){return B(()=>{switch(e.rank){case 1:return Hd(e,t,n);case 2:return Cm(e,[t,0],[n,e.shape[1]]);case 3:return jd(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return sc(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return $e(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return $e(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new V(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function zA(e,t,n){return B(()=>{switch(e.rank){case 1:return Hd(e,t,n);case 2:return Cm(e,[0,t],[e.shape[0],n]);case 3:return jd(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return sc(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function zp(e,t,n,r){return B(()=>{switch(e.rank){case 1:return Hd(e,t,n);case 2:switch(r){case 1:return $i(e,t,n);case 2:return zA(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 3:switch(r){case 1:return $i(e,t,n);case 2:return jd(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return zA(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 4:switch(r){case 1:return $i(e,t,n);case 2:return sc(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return sc(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return zA(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function PA(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),lt(e,t)}function i7(e,t){switch(e.rank){case 1:return cx([e,t]);case 2:return yl([e,t],0);case 3:return hx([e,t],0);case 4:return dx([e,t],0);default:throw new V(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function OA(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new V(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return Va(e,t)}function Pp(e,t=0,n=1,r,a){return Ex(e,t,n,r,a)}function Xr(e,t,n,r){if(e.rank<2||t.rank<2)throw new Pe(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let a=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(a!==s)throw new Pe(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let a=!1,s=!1;return ja.matMul({a:e,b:t,transposeA:a,transposeB:s,bias:r?LA(e.rank,r,Sr()):null,activation:n})}else{let a=e.shape.slice(),s=a.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),u=[...i,o],c=Array.from({length:t.rank},(f,m)=>m===0?t.rank-2:m<=t.rank-2?m-1:m);t=t.transpose(c).reshape([l,-1]);let h=[...a,...u],d=!1,p=!1;return ja.matMul({a:e,b:t,transposeA:d,transposeB:p,bias:r?LA(e.rank,r,Sr()):null,activation:n}).reshape(h)}}function o7(e,t,n){return B(()=>(Array.isArray(t)?t=hn(t,"int32"):t=t.toInt(),Ai(e,t,n)))}function Fc(e){return P(e,e)}function LA(e,t,n){let r=t.shape;if(t.rank!==1&&t.rank!==e)throw new V(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1,1]):t.reshape([1,r[3],r[0],r[1],r[2]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===4){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1]):t.reshape([1,r[2],r[0],r[1]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===3){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1]):t.reshape([1,r[1],r[0]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,r[0]]):t.reshape([1].concat(r))}else if(e<3)return t;throw new V(`Unsupported input rank by biasAdd: ${t.rank}`)}function Kr(e,t,n){return B(()=>(n==null&&(n=Sr()),Ft(n),e.add(LA(e.rank,t,n))))}function eee(e,t=1){if(t!==1)throw new Pe(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return xl(e)}function tee(e){return B(()=>be(e,Bt(e).add(1)))}function l7(e,t,n,r){return B(()=>Ox(e,t,n,r))}function nee(e){return B(()=>{let t=ie(.5,P(.2,e));return Sn(t,0,1)})}function Mc(e,t,n=!1){return n?e():t()}var ree=["fanIn","fanOut","fanAvg"],aee=["normal","uniform","truncatedNormal"];function see(e){Fi(ree,"FanMode",e)}function iee(e){Fi(aee,"Distribution",e)}var fr=class extends ae.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},WA=class extends fr{apply(e,t){return $t(e,t)}};WA.className="Zeros";ae.registerClass(WA);var Lp=class extends fr{apply(e,t){return Vr(e,t)}};Lp.className="Ones";ae.registerClass(Lp);var BA=class extends fr{constructor(e){super();if(typeof e!="object")throw new V(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new V(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return B(()=>P(Ie(this.value),Vr(e,t)))}getConfig(){return{value:this.value}}};BA.className="Constant";ae.registerClass(BA);var VA=class extends fr{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return kl(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};VA.className="RandomUniform";ae.registerClass(VA);var UA=class extends fr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Pe(`randomNormal does not support dType ${t}.`);return Pp(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};UA.className="RandomNormal";ae.registerClass(UA);var HA=class extends fr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Pe(`truncatedNormal does not support dType ${t}.`);return Xd(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};HA.className="TruncatedNormal";ae.registerClass(HA);var jA=class extends fr{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return B(()=>{if(e.length!==2||e[0]!==e[1])throw new V("Identity matrix initializer can only be used for 2D square matrices.");return P(this.gain,Am(e[0]))})}getConfig(){return{gain:this.gain}}};jA.className="Identity";ae.registerClass(jA);function oee(e,t="channelsLast"){let n,r;if(Ft(t),e.length===2)n=e[0],r=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let a=Za(e,2);n=e[1]*a,r=e[0]*a}else if(t==="channelsLast"){let a=Za(e,0,e.length-2);n=e[e.length-2]*a,r=e[e.length-1]*a}}else{let a=Za(e);n=Math.sqrt(a),r=Math.sqrt(a)}return[n,r]}var Mn=class extends fr{constructor(e){super();if(e.scale<0)throw new V(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,see(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,iee(this.distribution),this.seed=e.seed}apply(e,t){let n=oee(e),r=n[0],a=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,r):this.mode==="fanOut"?s/=Math.max(1,a):s/=Math.max(1,(r+a)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Pe(`${this.getClassName()} does not support dType ${t}.`);return Xd(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return kl(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Mn.className="VarianceScaling";ae.registerClass(Mn);var Wp=class extends Mn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Wp.className="GlorotUniform";ae.registerClass(Wp);var Bp=class extends Mn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Bp.className="GlorotNormal";ae.registerClass(Bp);var Vp=class extends Mn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Vp.className="HeNormal";ae.registerClass(Vp);var Up=class extends Mn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Up.className="HeUniform";ae.registerClass(Up);var Hp=class extends Mn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Hp.className="LeCunNormal";ae.registerClass(Hp);var jp=class extends Mn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};jp.className="LeCunNormal";ae.registerClass(jp);var GA=class extends fr{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new Pe("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return B(()=>{if(e.length<2)throw new Pe("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,r=Pp(n,0,1,"float32"),a=Kx.gramSchmidt(r);return e[0]>e[1]&&(a=a.transpose()),P(this.gain,a)})}getConfig(){return{gain:this.gain,seed:this.seed}}};GA.className="Orthogonal";ae.registerClass(GA);var u7={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function c7(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"initializer")}function Et(e){return TA(e)}function _t(e){if(typeof e=="string"){let t=e in u7?u7[e]:e;if(t==="GlorotNormal")return new Bp;if(t==="GlorotUniform")return new Wp;if(t==="HeNormal")return new Vp;if(t==="HeUniform")return new Up;if(t==="LeCunNormal")return new Hp;if(t==="LeCunUniform")return new jp;{let n={};return n.className=t,n.config={},c7(n)}}else return e instanceof fr?e:c7(e)}function SQ(){return new WA}function TQ(){return new Lp}function EQ(e){return new BA(e)}function CQ(e){return new VA(e)}function RQ(e){return new UA(e)}function FQ(e){return new HA(e)}function MQ(e){return new jA(e)}function $Q(e){return new Mn(e)}function DQ(e){return new Wp(e)}function OQ(e){return new Bp(e)}function zQ(e){return new Vp(e)}function PQ(e){return new Up(e)}function LQ(e){return new Hp(e)}function WQ(e){return new jp(e)}function BQ(e){return new GA(e)}var h7={};We(h7,{Layer:()=>Ze,RNN:()=>Zr,RNNCell:()=>$c,activation:()=>vee,add:()=>Fee,alphaDropout:()=>mte,average:()=>Mee,averagePooling1d:()=>qA,averagePooling2d:()=>XA,averagePooling3d:()=>KA,avgPool1d:()=>Vee,avgPool2d:()=>Hee,avgPool3d:()=>Gee,avgPooling1d:()=>Uee,avgPooling2d:()=>jee,avgPooling3d:()=>qee,batchNormalization:()=>Lee,bidirectional:()=>ote,concatenate:()=>$ee,conv1d:()=>mee,conv2d:()=>Aee,conv2dTranspose:()=>yee,conv3d:()=>gee,convLstm2d:()=>rte,convLstm2dCell:()=>ate,cropping2D:()=>wee,dense:()=>kee,depthwiseConv2d:()=>_ee,dot:()=>Pee,dropout:()=>Iee,elu:()=>uee,embedding:()=>Ree,flatten:()=>See,gaussianDropout:()=>fte,gaussianNoise:()=>pte,globalAveragePooling1d:()=>Xee,globalAveragePooling2d:()=>Kee,globalMaxPool1d:()=>ute,globalMaxPool2d:()=>cte,globalMaxPooling1d:()=>p7,globalMaxPooling2d:()=>f7,gru:()=>Yee,gruCell:()=>Jee,input:()=>d7,inputLayer:()=>lee,layerNormalization:()=>Wee,leakyReLU:()=>hee,lstm:()=>Qee,lstmCell:()=>ete,masking:()=>Ate,maxPool1d:()=>hte,maxPool2d:()=>dte,maxPooling1d:()=>m7,maxPooling2d:()=>A7,maxPooling3d:()=>Zee,maximum:()=>Dee,minimum:()=>Oee,multiply:()=>zee,permute:()=>Cee,prelu:()=>dee,reLU:()=>cee,repeatVector:()=>Tee,reshape:()=>Eee,rnn:()=>ste,separableConv2d:()=>xee,simpleRNN:()=>tte,simpleRNNCell:()=>nte,softmax:()=>pee,spatialDropout1d:()=>Nee,stackedRNNCells:()=>ite,thresholdedReLU:()=>fee,timeDistributed:()=>lte,upSampling2d:()=>bee,zeroPadding2d:()=>Bee});var yte=0;function y7(){return yte++}var Gp={};function qp(e=""){return e in Gp||(Gp[e]=0),Gp[e]+=1,e+Gp[e].toString()}function ZA(e){return Array.isArray(e)&&Array.isArray(e[0])}function Xp(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Be(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new V(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function pt(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new V(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function Kp(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((r,a)=>r*a);return t}var g7="Variable",x7=class{constructor(e,t="float32",n=g7,r=!0,a=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=y7(),n=n==null?g7:n,this.originalName=r7(n),this.name=a7(this.originalName),this.trainable_=r,this.constraint=a,this.val=Rx(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),gte(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function gte(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function YA(e){return e.map(t=>t.read())}function JA(e){e.forEach(t=>{t[0].write(t[1])})}var Qt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},Cr=class{constructor(e,t,n,r,a,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=a,this.outputTensorIndex=i,this.id=y7(),s!=null&&(this.originalName=r7(s),this.name=a7(this.originalName)),this.rank=t.length}},xte=0,Zp=class{constructor(e,t){this.callArgs=t,this.id=xte++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},wte=0,Ze=class extends ae.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=wte++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=Aa(n)+"_"+qp(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let a=null;e.batchSize!=null&&(a=e.batchSize),n=[a].concat(e.inputShape)}this.batchInputShape=n;let r=e.dtype;r==null&&(r=e.inputDType),r==null&&(r="float32"),this.dtype=r}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new Tr(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new V(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Fn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Fn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ma(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new ma(`Layer ${this.name} is not connected, no input to return.`);return Fn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new ma(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ma(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Fn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=yt(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=yt(this.inputSpec);if(e.length!==t.length)throw new V(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;na.maxNDim)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${a.maxNDim}, found ndim=${s}`);if(a.minNDim!=null&&s=0?i[l]:i[i.length+l];if(u!=null&&[u,null].indexOf(c)===-1)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${u} but got shape ${i}.`)}}if(a.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of yt(e))s.push(i.shape);this.build(Fn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&a&&(this._refCount=1)}if(this.assertInputCompatibility(e),a){let s=this.call(e,t),i=yt(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Fn(o),this.activityRegularizer!=null)throw new Pe("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=bte(e),i=this.computeOutputShape(s),o,l=_te(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((u,c)=>new Cr(l,u,this,yt(e),t,this.name,c)):o=new Cr(l,i,this,yt(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new Pe("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,r)=>{n!=null&&e[r]!=null&&e[r]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new ma(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new ma(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new Tr(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return Kp(this.weights)}build(e){this.built=!0}getWeights(e=!1){return YA(e?this.trainableWeights:this.weights)}setWeights(e){B(()=>{let t=this.weights;if(t.length!==e.length)throw new V(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],r=YA(t);for(let a=0;aa.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=yt(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,r,a,s,i=null){let o=yt(e);t=yt(t),n=yt(n),r=yt(r),a=Xp(a),s=Xp(s);let l=[],u=[],c=[];for(let h of o)l.push(h.sourceLayer),u.push(h.nodeIndex),c.push(h.tensorIndex);new Zp({outboundLayer:this,inboundLayers:l,nodeIndices:u,tensorIndices:c,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:a,outputShapes:s},i);for(let h=0;he.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function bte(e){e=yt(e);let t=[];for(let n of e)t.push(n.shape);return Fn(t)}function _te(e){return"float32"}function w7(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let r=t.inboundNodes[n];if(r.inboundLayers.length===0)return r.inputTensors;{let a=[];for(let s=0;s0){let a=await Promise.all(t);for(let s=0;sie(this.totals[r],P(a,n)));this.totals[r]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:B(()=>{let r=P(be(1,this.seen),this.totals[n]);t[n]=r,this.totals[n].dispose(),Zt(t[n])}))}},I7=class extends ql{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let a in this.history){let s=this.history[a];for(let i=0;inew N7(n,t))}var mr=class{constructor(){}static registerCallbackConstructor(e,t){v.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),mr.checkForDuplicate(t),mr.constructors[e]==null&&(mr.constructors[e]=[]),mr.constructors[e].push(t)}static checkForDuplicate(e){for(let t in mr.constructors)mr.constructors[+t].forEach(n=>{if(n===e)throw new V("Duplicate callback constructor.")})}static clear(){mr.constructors={}}static createCallbacks(e){let t=[];for(let n in mr.constructors){let r=+n;e>=r&&t.push(...mr.constructors[r])}return t.map(n=>new n)}};mr.constructors={};function T7(e,t,n,r,a,s,i,o,l){let u=new I7,c=[new kte,...mr.createCallbacks(t)];e!=null&&c.push(...e),c.push(u);let h=new k7(c);return h.setParams({epochs:n,initialEpoch:r,samples:a,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function Rr(e,t={},n=!1){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"layer",n)}function Yp(e,t){return B(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Re(Fc(e),t,!0),r=Ju(n.shape,Ht()),a=an(Br(n,r));return be(e,a)})}function Di(e,t){return B(()=>Tt(Fc(we(t,e)),-1))}function Jp(e,t){return B(()=>Tt(Bt(we(t,e)),-1))}function Xl(e,t){return B(()=>{let n=we(e,t),r=Sn(Bt(e),Ht(),Number.MAX_VALUE),a=Bt(be(n,r));return P(100,Tt(a,-1))})}function Ite(e,t){return B(()=>{let n=Sn(t,Ht(),Number.MAX_VALUE),r=zn(ie(1,n)),a=Sn(e,Ht(),Number.MAX_VALUE),s=zn(ie(1,a));return Tt(Fc(we(r,s)),-1)})}function Nte(e,t){return B(()=>{let n=Br(0,we(1,P(e,t)));return Tt(Fc(n),-1)})}function Ste(e,t){return B(()=>{let n=Br(0,we(1,P(e,t)));return Tt(n,-1)})}function Tte(e,t){return B(()=>{let n=Re(P(e,t),-1),r=Qn(P(we(1,e),t),-1);return Br(0,ie(1,we(r,n)))})}function Ete(e,t){return B(()=>{let n=Math.log(2),r=we(t,e),a=we(ie(r,bl(P(-2,r))),n);return Tt(a,-1)})}function Dc(e,t,n=!1){return B(()=>{if(n)t=ic(t);else{let r=Re(t,t.shape.length-1,!0);t=be(t,r)}return t=Sn(t,Ht(),1-Ht()),St(Re(P(e.toFloat(),zn(t)),t.shape.length-1))})}function Qp(e,t,n=!1){return B(()=>{let r=wl(JQ(e)).toInt();t=Sn(t,Ht(),1-Ht());let a=t.shape,s=hl(r,a[a.length-1]).reshape(a);return Dc(s,t,n)})}function Cte(e,t){if(!v.arraysEqual(e.shape,t.shape))throw new V(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return B(()=>{let n=t.relu(),r=t.abs().neg();return n.sub(t.mul(e)).add(r.exp().log1p())})}function e0(e,t){return B(()=>{let n;return n=Sn(t,Ht(),1-Ht()),n=zn(be(n,we(1,n))),Tt(Cte(e,n),-1)})}function Rte(e,t){return B(()=>{let n=Sn(e,Ht(),1),r=Sn(t,Ht(),1);return Re(P(e,zn(be(n,r))),-1)})}function Fte(e,t){return B(()=>{let n=zn(ie(Ht(),t));return Tt(we(t,P(e,n)),-1)})}function QA(e,t){return B(()=>{let n=Yp(e,-1),r=Yp(t,-1),a=P(n,r);return St(Re(a,-1))})}var t0={meanSquaredError:Di,meanAbsoluteError:Jp,meanAbsolutePercentageError:Xl,meanSquaredLogarithmicError:Ite,squaredHinge:Nte,hinge:Ste,categoricalHinge:Tte,logcosh:Ete,categoricalCrossentropy:Dc,sparseCategoricalCrossentropy:Qp,binaryCrossentropy:e0,kullbackLeiblerDivergence:Rte,poisson:Fte,cosineProximity:QA};function ey(e){if(typeof e=="string"){if(e in t0)return t0[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new V(t)}else return e}function ty(e,t){return B(()=>{let n=P(.5,Pn(t)),r=Cc(ur(t,n),e.dtype);return Tt(Ba(e,r),-1)})}function ny(e,t){return B(()=>Cc(Ba(Gu(e,-1),Gu(t,-1)),"float32"))}function E7(e,t){return B(()=>cr(e.equal(1),t.equal(1)).sum().cast("float32"))}function Mte(e,t){return B(()=>cr(e.equal(1),t.equal(0)).sum().cast("float32"))}function $te(e,t){return B(()=>cr(e.equal(0),t.equal(1)).sum().cast("float32"))}function C7(e,t){return B(()=>{let n=E7(e,t),r=$te(e,t),a=n.add(r);return Tn(ur(a,0),n.div(a),0).cast("float32")})}function Dte(e,t){return B(()=>{let n=E7(e,t),r=Mte(e,t),a=n.add(r);return Tn(ur(a,0),n.div(a),0).cast("float32")})}function R7(e,t){return e0(e,t)}function F7(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Ba(e,t).asType("float32")}var Ote=Di,zte=Di,Pte=Jp,Lte=Jp,Wte=Xl,Bte=Xl,ry=Dc,Vte=QA,M7=Qp,n0={binaryAccuracy:ty,categoricalAccuracy:ny,precision:C7,categoricalCrossentropy:ry,sparseCategoricalCrossentropy:M7,mse:Ote,MSE:zte,mae:Pte,MAE:Lte,mape:Wte,MAPE:Bte,cosine:Vte};function Ute(e){if(typeof e=="string"&&e in n0)return n0[e];if(typeof e!="string"&&e!=null)return e;throw new V(`Unknown metric ${e}`)}function r0(e){if(qr(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(t0))if(t0[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(n0))if(n0[n]===e){t=n;break}return t!==void 0?t:e.name}}function Hte(e){let t={Adagrad:()=>bi.adagrad(.01),Adadelta:()=>bi.adadelta(1,.95,Ht()),Adam:()=>bi.adam(.001,.9,.999,Ht()),Adamax:()=>bi.adamax(.002,.9,.999,Ht(),0),RMSProp:()=>bi.rmsprop(.001,.9,0,Ht()),SGD:()=>bi.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new V(`Unknown Optimizer ${e}`)}var $7=1*1024*1024;function D7(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!ay(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let r=JSON.stringify(e);r.length>$7&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${r.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${$7}.`)}}function ay(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!ay(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!ay(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function Kte(e,t,n,r=console.log){let a=Gte(e),s=["Layer (type)","Output shape","Param #"];a?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(c=>Math.floor(t*c)));let i;if(!a){s.push("Receives inputs"),i=[];for(let c in e.nodesByDepth)i.push(...e.nodesByDepth[c])}r("_".repeat(t)),a0(s,n,r),r("=".repeat(t));let o=e.layers;for(let c=0;c1||a.length===1&&a[0].inboundLayers.length>1){t=!1;break}r.push(...a)}if(t)for(let a of e.layers){let s=!1;for(let i of a.inboundNodes)if(r.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function a0(e,t,n=console.log){let r="";for(let a=0;a0&&(r=r.slice(0,r.length-1)+" "),r+=e[a],r=r.slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function qte(e,t,n){let r;try{r=JSON.stringify(e.outputShape)}catch(o){r="multiple"}let a=e.name,s=e.getClassName(),i=[`${a} (${s})`,r,e.countParams().toString()];a0(i,t,n)}function Xte(e,t,n,r){let a;try{a=JSON.stringify(e.outputShape)}catch(c){a="multiple"}let s=[];for(let c of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(c)===-1))for(let h=0;hf.name),l=[],u=t.names();for(let f of o)u.indexOf(f)!==-1?l.push(t.getValue(f)):l.push(null);r!=null&&(r.maxNumTensors=-Infinity,r.minNumTensors=Infinity);let c=o.join(",")+"|"+t.names().join(","),h,d;if(oy[c]==null){let f=Yte(i,t);h=f.sorted,d=f.recipientCounts,oy[c]=h,z7[c]=d}h=oy[c],d={},a||Object.assign(d,z7[c]);let p=new Oi(t);for(let f=0;fr.maxNumTensors&&(r.maxNumTensors=T),T0,()=>"Expected at least one fetch, got none");let n=[],r={};if(e.length===1){let a=P7(e[0],t);n=a.sorted,r=a.recipientMap}else{let a=new Set;for(let s of e){let{sorted:i,recipientMap:o}=P7(s,t);for(let l of i)a.has(l.name)||(n.push(l),a.add(l.name));for(let l in o)r[l]==null&&(r[l]=new Set),o[l].forEach(u=>r[l].add(u))}}return{sorted:n,recipientCounts:Qte(r)}}function Qte(e){let t={};for(let n in e)t[n]=e[n].size;return t}function P7(e,t){let n=new Set,r=[],a={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),r.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let u of o.inputs)a[u.name]==null&&(a[u.name]=new Set),a[u.name].add(o.name),!n.has(u.name)&&s.push(u)}}return{sorted:r,recipientMap:a}}function Jte(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let r=0;ry.name)}`);Ka(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let g=y.sourceLayer,b=y.nodeIndex,_=y.tensorIndex;this.outputLayers.push(g),this.outputLayersNodeIndices.push(b),this.outputLayersTensorIndices.push(_)}for(let y of this.inputs){let g=y.sourceLayer,b=y.nodeIndex,_=y.tensorIndex;qr(b===0,"input layer has >1 nodes"),qr(_===0,"input layer has >1 tensors"),this.inputLayers.push(g),this.inputLayersNodeIndices.push(b),this.inputLayersTensorIndices.push(_)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},r={},a={},s={},i=[],o=(y,g,b,_,w,x)=>{(_==null||w==null||x==null)&&(_=y.sourceLayer,w=y.nodeIndex,x=y.tensorIndex);let N=_.inboundNodes[w];if(b.indexOf(N)!==-1)throw new Tr(`The tensor ${y.name} at layer "${_.name}" is part of a cycle.`);if(g.indexOf(N)!==-1)return;this.containerNodes.add(Yr.nodeKey(_,w)),_.id in s||(s[_.id]=Object.keys(s).length),b.indexOf(N)===-1&&b.push(N);let S=N.inboundLayers.length;for(let T=0;T=0;)b.splice(b.indexOf(N),1);i.push(N)},l=[],u=[];for(let y of this.outputs)o(y,l,u);let c=i.slice().reverse();for(let y of c){n[y.id]=y,y.id in t||(t[y.id]=0);let g=t[y.id],b=r[y.outboundLayer.id]==null?0:r[y.outboundLayer.id];g=Math.max(g,b),r[y.outboundLayer.id]=g,a[y.outboundLayer.id]=y.outboundLayer,t[y.id]=g;for(let _=0;_parseInt(y,10)).sort(Op);this.layers=[];for(let y of p){let g=d[y];g.sort((b,_)=>{let w=s[b.id],x=s[_.id];return wx?1:0});for(let b of g)b instanceof Yr&&this.internalContainerRefs.push(b),this.layers.push(b)}this.layersByDepth=d,p=Object.keys(h).map(y=>parseInt(y,10)).sort(Op);let f=this.inputs.slice(),m=[];for(let y of p)for(let g of h[y]){let b=g.outboundLayer;if(b!=null){for(let _ of g.inputTensors)if(f.indexOf(_)===-1)throw new Tr(`Graph disconnected: cannot obtain value for tensor ${_} at layer "${b.name}". The following previous layers were accessed without issue: ${m}`);for(let _ of g.outputTensors)f.push(_);m.push(b.name)}}this.nodesByDepth=h;let A=this.layers.map(y=>y.name);for(let y of A){let g=A.filter(b=>b===y).length;if(g!==1)throw new Tr(`The name "${y}" is used ${g} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(A))}this.outboundNodes=[],this.inboundNodes=[],new Zp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new V("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},r=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new V(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,r++}let a=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)a.push([n[i],e[s]]);else if(t)throw new V(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new V(`${s.length} of ${r} weights are not set: ${s}`)}JA(a)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${iy}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=sy(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return B(()=>{e=yt(e);let n=new Oi;for(let r=0;r{e=yt(e);let n;return t==null?n=Ci(null,e.length):n=yt(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=Xp(e);if(t.length!==this.inputLayers.length)throw new V(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(Op);if(r.length>1)for(let i of r){let o=this.nodesByDepth[i];for(let l of o){let u=l.outboundLayer;if(this.inputLayers.map(f=>f.id).indexOf(u.id)!==-1)continue;let c=[];for(let f=0;fparseInt(o,10)).sort(Op);for(let o of r){let l=this.nodesByDepth[o];for(let u of l){let c=u.outboundLayer,h=u.inputTensors,d=u.outputTensors,p=new Array;for(let f of h)f.id in n&&p.push(n[f.id]);if(p.length===h.length){let f={},m,A,y,g;if(u.callArgs!=null&&(f=u.callArgs),p.length===1){let[b,_]=p[0];f.mask==null&&(f.mask=_),y=yt(c.call(b,f)),g=yt(c.computeMask(b,_)),m=[b],A=[_]}else m=p.map(b=>b[0]),A=p.map(b=>b[1]),f.mask==null&&(f.mask=A),y=yt(c.call(m,f)),g=yt(c.computeMask(m,A));if(c.activityRegularizer)throw new Pe("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let b=0;b{let e=[];for(let t of this.layers)for(let n=0;n0){let f=[];for(let m=0;m0&&m.apply(Fn(y),g)}function l(m){let A=m.name,y=Rr(m,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(r),a[A]=y,m.inboundNodes.forEach(g=>{if(!(g instanceof Array))throw new V(`Corrupted configuration, expected array for nodeData: ${g}`);i(y,g)})}let u=t.name,c=t.layers;for(let m of c)l(m);for(;!IQ(s);)for(let m of c){let A=a[m.name];if(A.name in s){let y=s[A.name];delete s[A.name];for(let g of y)o(A,g)}}let h=[],d=[],p=t.inputLayers;for(let m of p){let A=m[0],y=m[1],g=m[2];qr(A in a);let b=a[A].inboundNodes[y].outputTensors;h.push(b[g])}let f=t.outputLayers;for(let m of f){let A=m[0],y=m[1],g=m[2];qr(A in a);let b=a[A].inboundNodes[y].outputTensors;d.push(b[g])}return new e({inputs:h,outputs:d,name:u})}get stateful(){if(this._stateful)throw new V("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){B(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function ene(e,t,n){let r=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(a=>null);if(r===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${r} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let a=[];return t.forEach(s=>{s in e?a.push(e[s]):a.push(null)}),a}else throw new Error(`The model has multiple (${r}) outputs, so ${n} must be either an array with ${r} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function L7(e,t){return ene(e,t,"classWeight")}async function W7(e,t,n,r){if(t!=null||r!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let a=B(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await a.data());Me(a);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),hn(i,"float32")}else return null}function tne(e,t){return P(e,t)}var nne=32;function V7(e,t){let n,r,a=t;n=a.xs,r=a.ys,v.assert(n!=null&&r!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=B7("input",e.inputNames,n),i=B7("output",e.outputNames,r),o=s[0].shape[0];v.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),v.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function B7(e,t,n){if(n instanceof Ge)return[n];if(Array.isArray(n))return v.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let r=[];for(let a of t){if(n[a]==null)throw new V(`The feature data generated by the dataset lacks the required ${e} key '${a}'.`);r.push(n[a])}return r}}function rne(e){if(e.length===3)throw new Pe("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function sne(e,t,n){let r=n.batchesPerEpoch!=null;if(v.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),v.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),v.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),v.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),v.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let a=n.validationData!=null,s,i;if(a)if(U7(n.validationData))v.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let A=rne(n.validationData);s=A.xs,i=A.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),u;a?u=l.slice().concat(l.map(A=>"val_"+A)):u=l.slice();let c=S7(n.callbacks,n.yieldEvery),h=n.verbose==null?1:n.verbose,{callbackList:d,history:p}=T7(c,h,n.epochs,null,null,ane(t,n),null,a,u);d.setModel(e),e.history=p,await d.onTrainBegin(),e.stopTraining_=!1;let f=n.initialEpoch==null?0:n.initialEpoch,m=await t.iterator();for(;f=n.batchesPerEpoch:b.done){if(a){let _;U7(n.validationData)?_=yt(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):_=yt(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?nne:n.validationBatchSize,verbose:0}));for(let w=0;w0)throw new Pe("Verbose mode is not implemented yet.");v.assert(!r||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=ine(t)?t:await t.iterator(),o=0,l=0;for(;r?l{if(u.value){let{xs:c,ys:h}=V7(e,u.value),d=c.concat(h),p=B(()=>a(d));if(Me(d),l===0)for(let m=0;mie(s[m],P(f,A))),l>0&&Me(y)}Me(p),o+=f,++l}return s}),u.done){r&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function Pc(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(r=>$i(r,t,n-t)):$i(e,t,n-t)}function uy(e,t){return B(()=>e==null?null:Array.isArray(e)?e.map(n=>uy(n,t)):o7(e,t.dtype==="int32"?t:t.toInt()))}function cy(e,t){let n=[],r=0,a=null;for(;r=e&&(a=e),n.push([r,a]),r=a;return n}async function lne(e,t,n,r,a,s,i,o,l,u,c,h,d,p,f){a==null&&(a=32),s==null&&(s=1),c==null&&(c=!0),d==null&&(d=0);let m=!1;if(l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new V("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let A=e.checkNumSamples(n,a,p,"steps_per_epoch"),y;A!=null&&(y=Er(0,A)),i==null&&(i=1);let{callbackList:g,history:b}=T7(o,i,s,d,A,p,a,m,h);g.setModel(e),e.history=b,await g.onTrainBegin(),e.stopTraining_=!1;for(let _=d;_{let M=N[S][0],D=N[S][1],z=$i(x,M,D-M);T.batch=S,T.size=D-M;let W=uy(n,z),U=t(W);for(let H=0;H0){if(f=!0,r.validationData.length===2)i=r.validationData[0],o=r.validationData[1];else throw r.validationData.length===3?new Pe("validationData including sample weights is not supported yet."):new V(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${r.validationData} is invalid.`);let x=!0,N=await e.standardizeUserData(i,o,null,null,x,h);l=N[0],u=N[1],m=l.concat(u)}else if(r.validationSplit!=null&&r.validationSplit>0&&r.validationSplit<1){f=!0;let x=Math.floor(a[0].shape[0]*(1-r.validationSplit)),N=a[0].shape[0];l=Pc(a,x,N),a=Pc(a,0,x),u=Pc(s,x,N),s=Pc(s,0,x),m=l.concat(u)}else r.validationSteps!=null&&(f=!0);let A=a.concat(s).concat(c);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),g=e.getDedupedMetricsNames(),b,_;f?(e.makeTestFunction(),b=e.testFunction,_=g.slice().concat(g.map(x=>"val_"+x))):(b=null,m=[],_=g.slice());let w=S7(r.callbacks,r.yieldEvery);return await lne(e,y,A,g,h,r.epochs,r.verbose,w,b,m,r.shuffle,_,r.initialEpoch,null,null)}finally{e.isTraining=!1,zi(a,t),zi(s,n),zi(l,i),zi(u,o),c!=null&&Me(c)}}function H7(e){let t=[];e instanceof Ge&&(e=[e]);for(let n=0;nn.push(a.id));else if(t!=null)for(let a in t){let s=t[a];n.push(s.id)}let r=[];if(e instanceof Ge)n.indexOf(e.id)===-1&&r.push(e);else if(Array.isArray(e))e.forEach(a=>{n.indexOf(a.id)===-1&&r.push(a)});else if(e!=null)for(let a in e){let s=e[a];n.indexOf(s.id)===-1&&r.push(s)}r.forEach(a=>{a.isDisposed||a.dispose()})}function cne(e){return e instanceof Ge}function hy(e){return Array.isArray(e)}function j7(e){return!cne(e)&&!hy(e)}function G7(e,t,n,r=!0,a=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(hy(e)&&e.length>0)i=!0;else if(j7(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new V(`Error when checking model ${a} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(j7(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new V(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(hy(e)){if(e=e,e.length!==t.length)throw new V(`Error when checking model ${a}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new V(`The model ${a} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=H7(s),n!=null)for(let i=0;i=0&&u!==c)throw new V(`Error when checking ${a}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function hne(e,t,n){let r=Ka(e.map(s=>s.shape[0]));r.sort();let a=Ka(t.map(s=>s.shape[0]));if(a.sort(),r.length>1)throw new V(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(a.length>1)throw new V(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(r.length>0&&a.length>0&&!v.arraysEqual(r,a))throw new V(`Input Tensors should have the same number of samples as target Tensors. Found ${r[0]} input sample(s) and ${a[0]} target sample(s).`)}function dne(e,t,n){let r=[Di,e0,Dc];for(let a=0;a1)throw new V(`The model expects ${t.length} ${a} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(r=>n);{let r=[];for(let a of t){let s=n.hasOwnProperty(a)?n[a]:[];Array.isArray(s)||(s=[s]),r.push(s)}return r}}var fne="layers-model",ya=class extends Yr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new V("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");Kte(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=Hte(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof pa))throw new V("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new V(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(ey(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new V(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>ey(s))}else{let s=ey(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let r=pne(e.metrics,this.outputNames),a=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Mi("metric",()=>{for(let s=0;s{let l="",u,c,h;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let f=this.internalOutputShapes[s];f[f.length-1]===1||this.lossFunctions[s]===e0?["accuracy","acc"].indexOf(d)!==-1?c=ty:["crossentropy","ce"].indexOf(d)!==-1&&(c=R7):this.lossFunctions[s]===Qp?["accuracy","acc"].indexOf(d)!==-1?c=F7:["crossentropy","ce"].indexOf(d)!==-1&&(c=M7):["accuracy","acc"].indexOf(d)!==-1?c=ny:["crossentropy","ce"].indexOf(d)!==-1&&(c=ry);let m;["accuracy","acc"].indexOf(d)!==-1?m="acc":["crossentropy","ce"].indexOf(d)!==-1&&(m="ce"),h=c,u=l+m}else h=Ute(d),u=l+r0(d);let p;Mi(u,()=>{p=h}),a(s,u,p)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let r=n.batchSize==null?32:n.batchSize;ly(r);let a=!0,s=this.standardizeUserDataXY(e,t,a,r);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,r,n.verbose,n.steps);return Fn(l)}finally{zi(s[0],e),zi(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),one(this,e,t)}checkNumSamples(e,t,n,r="steps"){let a;if(n!=null){if(a=null,t!=null)throw new V(`If ${r} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?a=e[0].shape[0]:a=e.shape[0];else throw new V(`Either the input data should have a defined shape, or ${r} shoud be specified.`);return a}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new V("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),r=n?t:[t],a=this.retrieveSymbolicTensors(r),s=new Oi;if(e instanceof Ge&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new V(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let r=[];throw t.forEach((a,s)=>{a==null&&r.push(e[s])}),new V(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(r)}`)}return t}predictLoop(e,t=32,n=!1){return B(()=>{let r=this.checkNumSamples(e);if(n)throw new Pe("Verbose predictLoop() is not implemented yet.");let a=cy(r,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=a[i][0],l=a[i][1],u=Pc(e,o,l),c=[];if(Array.isArray(u))for(let d=0;ds[l].push(o));return Fn(s.map(i=>lt(i,0)))})}predict(e,t={}){let n=H7(e);q7(n,this.inputNames,this.feedInputShapes,!1);try{let r=t.batchSize==null?32:t.batchSize;return ly(r),this.predictLoop(n,r)}finally{zi(n,e)}}predictOnBatch(e){q7(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,r){if(this.optimizer_==null)throw new Tr("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let a=[];for(let s=0;s0&&e[0].shape[0]%r!=0)throw new V(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${r}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,r,a=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,a,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(r!=null){let u=L7(r,this.outputNames);l=[];for(let c=0;c{let s=this.checkNumSamples(t,n,a,"steps"),i=[];if(r>0)throw new Pe("Verbose mode is not implemented yet.");if(a!=null)throw new Pe("steps mode in testLoop() is not implemented yet");{let o=cy(s,n),l=hn(Er(0,s));for(let u=0;u1&&(a+=`_${X3(e.slice(0,n),r)}`),t.push(a)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let u=[];for(let p=0;p1&&p{d=ie(d,p)}),d},o=this.collectedTrainableWeights.map(u=>u.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>B(()=>{let t=[],n,r=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lAa(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let r of t)if(typeof n[r]=="string")e[r]=Aa(n[r]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[Aa(r0(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>Aa(r0(e)));{let e={};for(let t in this.metrics)e[t]=Aa(r0(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=Oc(e.optimizer_config),n=Rr(t),r;if(typeof e.loss=="string")r=Ri(e.loss);else if(Array.isArray(e.loss))r=e.loss.map(s=>Ri(s));else if(e.loss!=null){r={};for(let s in e.loss)r[s]=Ri(e.loss[s])}let a;if(Array.isArray(e.metrics))a=e.metrics.map(s=>Ri(s));else if(e.metrics!=null){a={};for(let s in e.metrics)a[s]=Ri(e.metrics[s])}this.compile({loss:r,metrics:a,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=Nn.getSaveHandlers(e);if(i.length===0)throw new V(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new V(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new V("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await Nn.encodeWeights(this.getNamedWeights(t)),r=!1,a=null,s={modelTopology:this.toJSON(a,r),format:fne,generatedBy:`TensorFlow.js tfjs-layers v${iy}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await Nn.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=Nn.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;D7(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){D7(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};ya.className="Model";ae.registerClass(ya);var X7=class extends ya{};X7.className="Functional";ae.registerClass(X7);async function mne(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let r=Oc(n),a=Rr(r,t);if(e.weightsManifest!=null){let s=await Nn.loadWeights(e.weightsManifest,e.pathPrefix,a.weights.map(o=>o.originalName)),i={};for(let o of a.weights)i[o.originalName]=s[o.originalName];a.loadWeights(i),Me(s)}return a}async function yne(e,t){if(t==null&&(t={}),typeof e=="string"){let n=Nn.getLoadHandlers(e,t);if(n.length===0)n.push(Nn.browserHTTPRequest(e,t));else if(n.length>1)throw new V(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return Ane(e,void 0,t)}async function Ane(e,t,n){if(n==null&&(n={}),e.load==null)throw new V("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let r=await e.load(),a=r.modelTopology;a.model_config!=null&&(a=a.model_config);let s=n.strict==null?!0:n.strict,i=r.weightData!=null&&r.weightSpecs!=null&&s,o=Rr(Oc(a),t,i),l=r.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),r.userDefinedMetadata!=null&&o.setUserDefinedMetadata(r.userDefinedMetadata),r.weightData!=null){if(r.weightSpecs==null)throw new V("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:u,optimizerWeights:c}=gne(r.weightData,r.weightSpecs);o.loadWeights(u,s),o.optimizer!=null&&c.length>0&&await o.optimizer.setWeights(c),Me(u),Me(c.map(h=>h.tensor))}return o}function gne(e,t){let n=Nn.decodeWeights(e,t),r={},a=[];return t.forEach(s=>{s.group==="optimizer"?a.push({name:s.name,tensor:n[s.name]}):r[s.name]=n[s.name]}),{modelWeights:r,optimizerWeights:a}}var Kl=class extends ya{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:qp("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new V(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof Kl||e instanceof ya,n;if(t){if(n=e,n.outputs.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new V("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new V("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let r=b7({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(r)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new V(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=w7(this.outputs[0])}this.inboundNodes=[],new Zp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:Ci(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(r=>r.shape),outputShapes:this.outputs[0].shape})}else{let r=e.apply(this.outputs[0]);if(Array.isArray(r))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[r],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(pt(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new ya({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},r=!1){let a,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new V("Legacy serialization format not supported yet.");a=t}else v.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),a=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof Kl))throw new Pe(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of a){let l=Rr(o,void 0,r);r&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new V("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new V("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};Kl.className="Sequential";ae.registerClass(Kl);function xne(e){return new ya(e)}function wne(e){return new Kl(e)}function bne(e,t){return t==null&&(t={}),yne(e,t)}function d7(e){return b7(e)}function _ne(e,t){mr.registerCallbackConstructor(e,t)}var Un=class extends ae.Serializable{getConfig(){return{}}},K7=class extends Un{apply(e,t=1){return eee(e,t)}};K7.className="elu";ae.registerClass(K7);var Z7=class extends Un{apply(e){return Bd(e)}};Z7.className="selu";ae.registerClass(Z7);var Y7=class extends Un{apply(e){return Ur(e)}};Y7.className="relu";ae.registerClass(Y7);var J7=class extends Un{apply(e){return B(()=>vl(6,Ur(e)))}};J7.className="relu6";ae.registerClass(J7);var Q7=class extends Un{apply(e){return e}};Q7.className="linear";ae.registerClass(Q7);var ev=class extends Un{apply(e){return On(e)}};ev.className="sigmoid";ae.registerClass(ev);var tv=class extends Un{apply(e){return nee(e)}};tv.className="hardSigmoid";ae.registerClass(tv);var nv=class extends Un{apply(e){return bl(e)}};nv.className="softplus";ae.registerClass(nv);var rv=class extends Un{apply(e){return tee(e)}};rv.className="softsign";ae.registerClass(rv);var av=class extends Un{apply(e){return Al(e)}};av.className="tanh";ae.registerClass(av);var dy=class extends Un{apply(e,t=-1){return ic(e,t)}};dy.className="softmax";ae.registerClass(dy);var sv=class extends Un{apply(e,t=-1){return $d(e,t)}};sv.className="logSoftmax";ae.registerClass(sv);var iv=class extends Un{apply(e,t=1){return B(()=>On(e.mul(t)).mul(e))}};iv.className="swish";ae.registerClass(iv);function Qa(e){return e.getClassName()}function py(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"activation")}function es(e){if(e==null){let t={};return t.className="linear",t.config={},py(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},py(t)}else return e instanceof Un?e:py(e)}function fy(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var ov=class extends ae.Serializable{},Lc=class extends ov{constructor(e){super();fy(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return B(()=>{let t=$t([1]);return this.hasL1&&(t=ie(t,Re(P(this.l1,Bt(e))))),this.hasL2&&(t=ie(t,Re(P(this.l2,Fc(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};Lc.className="L1L2";ae.registerClass(Lc);function vne(e){return fy(e),new Lc({l1:e!=null?e.l1:null,l2:0})}function kne(e){return fy(e),new Lc({l2:e!=null?e.l2:null,l1:0})}var lv={l1l2:"L1L2"};function ft(e){return TA(e)}function uv(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"regularizer")}function vt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in lv?lv[e]:e,config:{}};return uv(t)}else return e instanceof ov?e:uv(e)}var my=class extends Ze{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Be(e);let n=Ur(e);return this.maxValue!=null&&(n=Sn(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};my.className="ReLU";ae.registerClass(my);var Ay=class extends Ze{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Be(e);return Qu(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};Ay.className="LeakyReLU";ae.registerClass(Ay);var yy=class extends Ze{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=_t(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=vt(e.alphaRegularizer),this.alphaConstraint=Gt(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new V(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=pt(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let r of this.sharedAxes)t[r-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let r=1;r(Ft(t),t==="channelsFirst"?ot(e,[0,2,3,1]):e))}function cv(e,t){return B(()=>(Ft(t),t==="channelsFirst"?ot(e,[0,2,3,4,1]):e))}function Ine(e,t,n,r=1,a="valid",s,i=1){return B(()=>{if(s==null&&(s=Sr()),Ft(s),e.shape.length!==3)throw new V(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new V(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new V(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=ot(e,[0,2,1])),a==="causal")throw new Pe("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=Nd(e,t,r,a==="same"?"same":"valid","NWC",i);return n!=null&&(o=Kr(o,n)),o})}function hv(e,t,n,r=[1,1],a="valid",s,i,o=null){return B(()=>{if(s==null&&(s=Sr()),Ft(s),e.rank!==3&&e.rank!==4)throw new V(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new V(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=by(e,s);if(a==="causal")throw new Pe("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=ja.conv2d({x:l,filter:t,strides:r,pad:a==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=ot(l,[0,3,1,2])),l})}function Nne(e,t,n,r=[1,1,1],a="valid",s,i){return B(()=>{if(s==null&&(s=Sr()),Ft(s),e.rank!==4&&e.rank!==5)throw new V(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new V(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=cv(e,s);if(a==="causal")throw new Pe("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=cm(o,t,r,a==="same"?"same":"valid","NDHWC",i),n!=null&&(o=Kr(o,n)),s==="channelsFirst"&&(o=ot(o,[0,4,1,2,3])),o})}var _y=class extends Ze{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",_y.verifyArgs(t),this.rank=e,Jt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new Pe(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Zl(t.kernelSize,e,"kernelSize"),this.strides=Zl(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,nr(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Ft(this.dataFormat),this.activation=es(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=_t(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Gt(t.biasConstraint),this.biasRegularizer=vt(t.biasRegularizer),this.activityRegularizer=vt(t.activityRegularizer),this.dilationRate=Zl(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new V(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new V(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new V(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(qr("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!CA(e.kernelSize,"number",1,3))throw new V(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:Qa(this.activation),useBias:this.useBias,biasInitializer:Et(this.biasInitializer),biasRegularizer:ft(this.biasRegularizer),activityRegularizer:ft(this.activityRegularizer),biasConstraint:jt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},Wc=class extends _y{constructor(e,t){super(e,t);this.kernel=null,Wc.verifyArgs(t),this.filters=t.filters,Jt(this.filters,"filters"),this.kernelInitializer=_t(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Gt(t.kernelConstraint),this.kernelRegularizer=vt(t.kernelRegularizer)}build(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],r=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",r,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return B(()=>{e=Be(e);let n,r=this.bias==null?null:this.bias.read(),a=Z3(this.activation.getClassName());if(a!=null&&this.rank===2)n=hv(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate,a);else{if(this.rank===1)n=Ine(e,this.kernel.read(),r,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=hv(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=Nne(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new Pe("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=pt(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let a=0;a 0 but got ${JSON.stringify(e.filters)}`)}},Bc=class extends Wc{constructor(e){super(2,e);Bc.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!CA(e.kernelSize,"number",1,2))throw new V(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};Bc.className="Conv2D";ae.registerClass(Bc);var i0=class extends Wc{constructor(e){super(3,e);i0.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new V(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};i0.className="Conv3D";ae.registerClass(i0);var vy=class extends Bc{constructor(e){super(e);if(this.inputSpec=[new Qt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new V(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=pt(e),e.length!==4)throw new V("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],r=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",r,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Qt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return B(()=>{let n=Be(e);if(n.shape.length!==4)throw new V(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let r=n.shape,a=r[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=r[s],l=r[i],u=this.kernelSize[0],c=this.kernelSize[1],h=this.strides[0],d=this.strides[1],p=s0(o,h,u,this.padding),f=s0(l,d,c,this.padding),m=[a,p,f,this.filters];this.dataFormat!=="channelsLast"&&(n=ot(n,[0,2,3,1]));let A=Sd(n,this.kernel.read(),m,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(A=ot(A,[0,3,1,2])),this.bias!=null&&(A=Kr(A,this.bias.read(),this.dataFormat)),this.activation!=null&&(A=this.activation.apply(A)),A})}computeOutputShape(e){e=pt(e);let t=e.slice(),n,r,a;this.dataFormat==="channelsFirst"?(n=1,r=2,a=3):(n=3,r=1,a=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[r]=s0(t[r],o,s,this.padding),t[a]=s0(t[a],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};vy.className="Conv2DTranspose";ae.registerClass(vy);var dv=class extends Wc{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new V("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new V("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new V(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=_t(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=vt(t.depthwiseRegularizer),this.depthwiseConstraint=Gt(t.depthwiseConstraint),this.pointwiseInitializer=_t(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=vt(t.pointwiseRegularizer),this.pointwiseConstraint=Gt(t.pointwiseConstraint)}build(e){if(e=pt(e),e.length{e=Be(e);let n;if(this.rank===1)throw new Pe("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=ot(e,[0,2,3,1])),n=Tm(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=Kr(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=ot(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.pointwiseInitializer=Et(this.pointwiseInitializer),e.depthwiseRegularizer=ft(this.depthwiseRegularizer),e.pointwiseRegularizer=ft(this.pointwiseRegularizer),e.depthwiseConstraint=jt(this.depthwiseConstraint),e.pointwiseConstraint=jt(this.pointwiseConstraint),e}};dv.className="SeparableConv";var ky=class extends dv{constructor(e){super(2,e)}};ky.className="SeparableConv2D";ae.registerClass(ky);var o0=class extends Wc{constructor(e){super(1,e);o0.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!CA(e.kernelSize,"number",1,1))throw new V(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};o0.className="Conv1D";ae.registerClass(o0);var Iy=class extends Ze{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return B(()=>{if(e=Be(e),this.dataFormat==="channelsLast"){let n=zp(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return zp(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=zp(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return zp(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Iy.className="Cropping2D";ae.registerClass(Iy);var Ny=class extends Ze{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,qQ(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return B(()=>{let n=Be(e),r=n.shape;if(this.dataFormat==="channelsFirst"){n=ot(n,[0,2,3,1]);let a=this.size[0]*r[2],s=this.size[1]*r[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s]);return ot(i,[0,3,1,2])}else{let a=this.size[0]*r[1],s=this.size[1]*r[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Ny.className="UpSampling2D";ae.registerClass(Ny);function Sne(e,t,n=[1,1],r="valid",a,s){return B(()=>{a==null&&(a=Sr()),Ft(a);let i=by(e,a);if(e.rank!==4)throw new V(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new V(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=gl(i,t,n,r==="same"?"same":"valid","NHWC",s),a==="channelsFirst"&&(i=ot(i,[0,3,1,2])),i})}var Sy=class extends _y{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=_t(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Gt(e.depthwiseConstraint),this.depthwiseRegularizer=vt(e.depthwiseRegularizer)}build(e){if(e=pt(e),e.length<4)throw new V(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new V(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{e=Be(e);let n=Sne(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=Kr(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,a=Fr(t,this.kernelSize[0],this.padding,this.strides[0]),s=Fr(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],r,a,s]:[e[0],a,s,r]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.depthwiseRegularizer=ft(this.depthwiseRegularizer),e.depthwiseConstraint=jt(this.depthwiseRegularizer),e}};Sy.className="DepthwiseConv2D";ae.registerClass(Sy);function pv(e,t,n,r){if(Array.isArray(e)){if(t!=null||n!=null)throw new V("When inputs is an array, neither initialState or constants should be provided");r!=null&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(s){return s==null||Array.isArray(s)?s:[s]}return t=a(t),n=a(n),{inputs:e,initialState:t,constants:n}}function fv(e,t,n,r=!1,a,s,i=!1,o=!1){return B(()=>{let l=t.shape.length;if(l<3)throw new V(`Input should be at least 3D, but is ${l}D.`);let u=[1,0].concat(Er(2,l));if(t=ot(t,u),s!=null)throw new Pe("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a!=null&&(a=a.asType("bool").asType("float32"),a.rank===l-1&&(a=mn(a,-1)),a=ot(a,u)),r&&(t=Ln(t,0),a!=null&&(a=Ln(a,0)));let c=[],h,d=n,p=t.shape[0],f=hr(t),m;a!=null&&(m=hr(a));for(let y=0;ye(g,d));if(a==null)h=b[0],d=b[1];else{let _=B(()=>{let w=m[y],x=Pn(w).sub(w),N=b[0].mul(w).add(d[0].mul(x)),S=d.map((T,M)=>b[1][M].mul(w).add(T.mul(x)));return{output:N,newStates:S}});h=_.output,d=_.newStates}o&&c.push(h)}let A;return o&&(A=An(c,1)),[h,A,d]})}var Zr=class extends Ze{constructor(e){super(e);let t;if(e.cell==null)throw new V("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new l0({cells:e.cell}):t=e.cell,t.stateSize==null)throw new V("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Qt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return Er(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){ZA(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],r;if(this.returnSequences?r=[e[0],e[1],n]:r=[e[0],n],this.returnState){let a=[];for(let s of t)a.push([e[0],s]);return[r].concat(a)}else return r}computeMask(e,t){return B(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let r=this.states.map(a=>null);return[n].concat(r)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new V(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Qt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ma("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>$t([n,r])):this.states_=[$t([n,this.cell.stateSize])];else if(e==null)Me(this.states_),this.keptStates!=null&&(Me(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>$t([n,r])):this.states_[0]=$t([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Me(this.states_);for(let r=0;rZt(r.clone()))})}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=pv(e,n,r,this.numConstants);e=a.inputs,n=a.initialState,r=a.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Qt({shape:o.shape}));i=i.concat(this.stateSpec)}if(r!=null&&(t.constants=r,s=s.concat(r),this.numConstants=r.length),s[0]instanceof Cr){let o=[e].concat(s),l=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=l;let c=super.apply(o,t);return this.inputSpec=u,c}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;e=Be(e),a==null&&(this.stateful?a=this.states_:a=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(a.length!==s)throw new V(`RNN Layer has ${s} state(s) but was passed ${a.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:r},o=fv((d,p)=>{let f=this.cell.call([d].concat(p),i);return[f[0],f.slice(1)]},e,a,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],u=o[1],c=o[2];this.stateful&&this.resetStates(c,r);let h=this.returnSequences?u:l;return this.returnState?[h].concat(c):h})}getInitialState(e){return B(()=>{let t=$t(e.shape);return t=Re(t,[1,2]),t=Rc(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?OA(t,[1,n]):t):this.cell.stateSize>1?[OA(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===Zr.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let r=t.cell,a=Rr(r,n);return new e(Object.assign(t,{cell:a}))}};Zr.className="RNN";ae.registerClass(Zr);var $c=class extends Ze{},u0=class extends $c{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=_t(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Gt(e.kernelConstraint),this.recurrentConstraint=Gt(e.recurrentConstraint),this.biasConstraint=Gt(e.biasConstraint),this.dropout=jl([1,Ya([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=jl([1,Ya([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=pt(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let r=t.training==null?!1:t.training;0Pn(e),rate:this.dropout,training:r})),0Pn(n),rate:this.recurrentDropout,training:r}));let a,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?a=Xr(P(e,s),this.kernel.read()):a=Xr(e,this.kernel.read()),this.bias!=null&&(a=Kr(a,this.bias.read())),i!=null&&(n=P(n,i));let o=ie(a,Xr(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:Qa(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),recurrentInitializer:Et(this.recurrentInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ft(this.kernelRegularizer),recurrentRegularizer:ft(this.recurrentRegularizer),biasRegularizer:ft(this.biasRegularizer),activityRegularizer:ft(this.activityRegularizer),kernelConstraint:jt(this.kernelConstraint),recurrentConstraint:jt(this.recurrentConstraint),biasConstraint:jt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};u0.className="SimpleRNNCell";ae.registerClass(u0);var Ty=class extends Zr{constructor(e){e.cell=new u0(e),super(e)}call(e,t){return B(()=>{this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return new e(t)}};Ty.className="SimpleRNN";ae.registerClass(Ty);var c0=class extends $c{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new V("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=es(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=_t(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Gt(e.kernelConstraint),this.recurrentConstraint=Gt(e.recurrentConstraint),this.biasConstraint=Gt(e.biasConstraint),this.dropout=jl([1,Ya([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=jl([1,Ya([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=pt(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,r=e[1];e=e[0],0Pn(e),rate:this.dropout,training:n,count:3})),0Pn(r),rate:this.recurrentDropout,training:n,count:3}));let a=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Ey.className="GRU";ae.registerClass(Ey);var Vc=class extends $c{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=es(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=_t(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Gt(e.kernelConstraint),this.recurrentConstraint=Gt(e.recurrentConstraint),this.biasConstraint=Gt(e.biasConstraint),this.dropout=jl([1,Ya([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=jl([1,Ya([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=pt(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let r;if(this.useBias){if(this.unitForgetBias){let a=this.biasInitializer,s=this.units;r=new(t=class extends fr{apply(i,o){let l=a.apply([s]),u=new Lp().apply([s]),c=a.apply([s*2]);return i7(i7(l,u),c)}},t.className="CustomInit",t)}else r=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,r,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new V(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let r=e[1],a=e[2];e=e[0],0Pn(e),rate:this.dropout,training:n,count:4})),0Pn(r),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,u,c;0{this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Cy.className="LSTM";ae.registerClass(Cy);var l0=class extends $c{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return B(()=>{e=e;let n=e.slice(1),r=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?r.push(n.splice(0,i.stateSize.length)):r.push(n.splice(0,1));r.reverse();let a=[],s;for(let i=0;i{Mi(`RNNCell_${r}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=r=>({className:r.getClassName(),config:r.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let r=[];for(let a of t.cells)r.push(Rr(a,n));return new e({cells:r})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return YA(e)}setWeights(e){let t=[];for(let n of this.cells){let r=n.weights.length,a=e.splice(r);for(let s=0;sl7(t(),n),i=()=>Mc(s,t,r);return!a||a<=1?Zt(i().clone()):Array(a).fill(void 0).map(i).map(o=>Zt(o.clone()))}var Tne=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a{if(this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new V("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return B(()=>{let{stateSize:t}=this.cell,n=e.shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)],s=$t(a);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ma("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)];if(n[0]==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>$t(a)):this.states_=[$t(a)];else if(e==null)Me(this.states_),this.keptStates!=null&&(Me(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>$t(a)):this.states_[0]=$t(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Me(this.states_);for(let s=0;sZt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:r,padding:a,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],u=e[o?4:3],c=Fr(l,r[0],a,s[0],i[0]),h=Fr(u,r[1],a,s[1],i[1]);return[...e.slice(0,2),...o?[n,c,h]:[c,h,n]]}};mv.className="ConvRNN2D";var h0=class extends Vc{constructor(e){let{filters:t,kernelSize:n,strides:r,padding:a,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Jt(this.filters,"filters"),this.kernelSize=Zl(n,2,"kernelSize"),this.kernelSize.forEach(o=>Jt(o,"kernelSize")),this.strides=Zl(r||1,2,"strides"),this.strides.forEach(o=>Jt(o,"strides")),this.padding=a||"valid",nr(this.padding),this.dataFormat=s||"channelsLast",Ft(this.dataFormat),this.dilationRate=Zl(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Jt(o,"dilationRate"))}build(e){var t;e=pt(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[n]}`);let r=e[n],a=4,s=this.kernelSize.concat([r,this.filters*a]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*a]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,u=this.filters;o=new(t=class extends fr{apply(c,h){let d=l.apply([u]),p=Vr([u]),f=l.apply([u*2]);return PA([d,p,f])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*a],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return B(()=>{if(e.length!==3)throw new V(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,r=e[0],a=e[1],s=e[2],i=4;0Pn(r),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Y,se,te)=>!se||!se[te]?Y:P(se[te],Y),u=l(r,o,0),c=l(r,o,1),h=l(r,o,2),d=l(r,o,3);0Pn(a),rate:this.recurrentDropout,training:n,count:i}));let p=this.recurrentDropoutMask,f=l(a,p,0),m=l(a,p,1),A=l(a,p,2),y=l(a,p,3),g=3,[b,_,w,x]=Ut(this.kernel.read(),i,g),[N,S,T,M]=this.useBias?Ut(this.bias.read(),i):[null,null,null,null];u=this.inputConv(u,b,N,this.padding),c=this.inputConv(c,_,S,this.padding),h=this.inputConv(h,w,T,this.padding),d=this.inputConv(d,x,M,this.padding);let[D,z,W,U]=Ut(this.recurrentKernel.read(),i,g);f=this.recurrentConv(f,D),m=this.recurrentConv(m,z),A=this.recurrentConv(A,W),y=this.recurrentConv(y,U);let H=this.recurrentActivation.apply(ie(u,f)),X=this.recurrentActivation.apply(ie(c,m)),j=ie(P(X,s),P(H,this.activation.apply(ie(h,A)))),ee=P(this.recurrentActivation.apply(ie(d,y)),this.activation.apply(j));return[ee,ee,j]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=Tne(e,["units"]),r={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,r)}inputConv(e,t,n,r){let a=ua(e,t,this.strides,r||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?Kr(a,n,this.dataFormat):a}recurrentConv(e,t){return ua(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};h0.className="ConvLSTM2DCell";ae.registerClass(h0);var Ry=class extends mv{constructor(e){let t=new h0(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};Ry.className="ConvLSTM2D";ae.registerClass(Ry);var d0=class extends Ze{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let r=0;r{this.invokeCallHook(e,t);let n=Be(e);if(0l7(n,this.rate,a,this.seed),()=>n,r)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};d0.className="Dropout";ae.registerClass(d0);var Fy=class extends d0{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};Fy.className="SpatialDropout1D";ae.registerClass(Fy);var My=class extends Ze{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Gt(e.kernelConstraint),this.biasConstraint=Gt(e.biasConstraint),this.kernelRegularizer=vt(e.kernelRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.activityRegularizer=vt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=pt(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=pt(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e),r=Z3(this.activation.getClassName()),a;return r!=null?a=Xr(n,this.kernel.read(),r,this.bias?this.bias.read():null):(a=Xr(n,this.kernel.read()),this.bias!=null&&(a=Kr(a,this.bias.read())),this.activation!=null&&(a=this.activation.apply(a))),a})}getConfig(){let e={units:this.units,activation:Qa(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ft(this.kernelRegularizer),biasRegularizer:ft(this.biasRegularizer),activityRegularizer:ft(this.activityRegularizer),kernelConstraint:jt(this.kernelConstraint),biasConstraint:jt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};My.className="Dense";ae.registerClass(My);var $y=class extends Ze{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=pt(e);for(let t of e.slice(1))if(t==null)throw new V(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],Za(e,1)]}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let r=[0];for(let a=2;a{this.invokeCallHook(e,t);let n=Be(e);return this.activation.apply(n)})}getConfig(){let e={activation:Qa(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};Dy.className="Activation";ae.registerClass(Dy);var Oy=class extends Ze{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return B(()=>(e=Be(e),YQ(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};Oy.className="RepeatVector";ae.registerClass(Oy);var zy=class extends Ze{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Be(e),r=n.shape,a=r.slice(0,1).concat(this.fixUnknownDimension(r.slice(1),this.targetShape));return n.reshape(a)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};zy.className="Reshape";ae.registerClass(zy);var Py=class extends Ze{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=Er(1,e.dims.length+1);if(!v.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Qt({ndim:this.dims.length+1})]}computeOutputShape(e){e=pt(e);let t=e.slice();return this.dims.forEach((n,r)=>{t[r+1]=e[n]}),t}call(e,t){return ot(Be(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};Py.className="Permute";ae.registerClass(Py);var Ly=class extends Ze{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Be(e),r=-1;return ju(xi(n,this.maskValue),r)}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e),r=-1,a=!0,s=ju(xi(n,this.maskValue),r,a);return n.mul(s.asType(n.dtype))})}};Ly.className="Masking";ae.registerClass(Ly);var Wy=class extends Ze{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(yt(e.inputLength))}this.inputDim=e.inputDim,Jt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Jt(this.outputDim,"outputDim"),this.embeddingsInitializer=_t(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=vt(e.embeddingsRegularizer),this.activityRegularizer=vt(e.activityRegularizer),this.embeddingsConstraint=Gt(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return B(()=>this.maskZero?(e=Be(e),xi(e,qe(e))):null)}computeOutputShape(e){if(e=pt(e),this.inputLength==null)return[...e,this.outputDim];let t=yt(this.inputLength);if(t.length!==e.length-1)throw new V(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let r=0;r{this.invokeCallHook(e,t);let n=Be(e);return n.dtype!=="int32"&&(n=Cc(n,"int32")),o7(this.embeddings.read(),n.as1D()).reshape(pt(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Et(this.embeddingsInitializer),embeddingsRegularizer:ft(this.embeddingsRegularizer),activityRegularizer:ft(this.activityRegularizer),embeddingsConstraint:jt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};Wy.className="Embedding";ae.registerClass(Wy);var Pi=class extends Ze{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new Pe}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new V(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let a=1;aa.length);e.indexOf(null)===-1&&Ka(r).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return B(()=>{if(e=e,this.reshapeRequired){let n=[],r=e.map(a=>a.rank);if(r.indexOf(null)===-1){let a=Ya(r);for(let s of e){let i=s.rank;for(let o=0;o1){let u=Er(1,l).concat([0]);n.push(ot(o,u)),a=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(a){if(i==null){let o=s.shape,l=o.length,u=o[l-1],c=[u].concat(o.slice(0,o.length-1));s=ot(s.reshape([-1,u]),[1,0]).reshape(c)}else if(i>1){let o=[i-1].concat(Er(0,i-1));s=ot(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let r=1;r{if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an Array");if(!Array.isArray(e))throw new V("`inputs` should be an Array");if(t.length!==e.length)throw new V(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(r=>r==null))return null;t=t.map(r=>r==null?r:mn(r,0));let n=t[0];for(let r=1;r{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new V("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return B(()=>PA(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new V("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis;for(let a of t.slice(1)){if(n[r]==null||a[r]==null){n[r]=null;break}n[r]+=a[r]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new V("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new V(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return B(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let r=[];for(let s=0;s3||t.shape.length>3)throw new Pe("batchDot is not implemented for tensors of 4D or higher rank yet");if(v.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),v.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new Pe("batchDot is not implemented for complex64-type Tensors yet.");let r=e.shape.length,a=t.shape.length;n==null&&(n=[r-1,a-2]);let s=n;return B(()=>{let i;if(r>a){i=r-a;let l=[];for(let u=0;ur){i=a-r;let l=[];for(let u=0;u0){let l;r>a?l=r+a-3:l=r-1;let u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new Pe("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new V(`Dimension incompatibility: ${t[r[0]]} !== ${n[r[1]]}`)}mergeFunction(e){if(e.length!==2)throw new V(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],r;return Array.isArray(this.axes)?r=this.axes.map((a,s)=>Uc(a,e[s].shape.length)):r=[Uc(this.axes,t.shape.length),Uc(this.axes,n.shape.length)],this.normalize&&(t=Yp(t,r[0]),n=Yp(n,r[1])),Ene(t,n,r)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[Uc(this.axes,e.length),Uc(this.axes,t.length)],n}computeOutputShape(e){v.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new Pe("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);let a=t.concat(n);return a.length===1&&a.push(1),a}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};qy.className="Dot";ae.registerClass(qy);var Xy=class extends Ze{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e);return Mc(()=>Pp(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Xy.className="GaussianNoise";ae.registerClass(Xy);var Ky=class extends Ze{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e);return this.rate>0&&this.rate<1?Mc(()=>{let r=Math.sqrt(this.rate/(1-this.rate));return n.mul(Pp(n.shape,1,r))},()=>n,t.training||!1):n})}};Ky.className="GaussianDropout";ae.registerClass(Ky);var Zy=class extends Ze{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Be(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return Mc(()=>{let r=Be(e),a=1.6732632423543772,s=1.0507009873554805,i=-a*s,o=Ua(kl(n),this.rate);o=Cc(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,u=-l*i*this.rate;return r.mul(o).add(o.add(-1).mul(i)).mul(l).add(u)},()=>Be(e),t.training||!1)}return e})}};Zy.className="AlphaDropout";ae.registerClass(Zy);function Hc(e,t,n,r,a,s=.001){let i;if(e.rank===2)i=ix(e,t,n,r,a,s);else if(e.rank===3)i=ox(e,t,n,r,a,s);else if(e.rank===4)i=lx(e,t,n,r,a,s);else throw new Pe(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function Cne(e,t,n,r,a=.001){return B(()=>{let s=Od(e,r),i=s.mean,o=s.variance;return[Hc(e,i,o,n,t,a),i,o]})}function Rne(e,t,n,r,a=.001){return B(()=>{let s=Od(e,r),i=s.mean,o=s.variance,l=[];for(let p of Er(0,e.rank))r.indexOf(p)!==-1?l.push(1):l.push(e.shape[p]);let u=i.reshape(l),c=o.reshape(l),h=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[Hc(e,u,c,d,h,a),i,o]})}function Fne(e,t,n,r,a=.001){return v.arraysEqual(r.slice().sort(),Er(0,e.rank-1))?Cne(e,t,n,r,a):Rne(e,t,n,r,a)}var Yy=class extends Ze{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=_t(e.betaInitializer||"zeros"),this.gammaInitializer=_t(e.gammaInitializer||"ones"),this.movingMeanInitializer=_t(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=_t(e.movingVarianceInitializer||"ones"),this.betaConstraint=Gt(e.betaConstraint),this.gammaConstraint=Gt(e.gammaConstraint),this.betaRegularizer=vt(e.betaRegularizer),this.gammaRegularizer=vt(e.gammaRegularizer)}build(e){e=pt(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new V(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Qt({ndim:e.length,axes:{[t]:n}})];let r=[n];this.scale&&(this.gamma=this.addWeight("gamma",r,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",r,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",r,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",r,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training,r=Be(e),a=r.shape,s=a.length,i=Er(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=Ci(1,s);l[o]=a[o];let u=i.slice();u.sort();let c=!v.arraysEqual(u,Er(0,s).slice(0,s-1)),h=()=>{if(c){let A=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),g=this.center?this.beta.read().reshape(l):null,b=this.scale?this.gamma.read().reshape(l):null;return Hc(r,A,y,g,b,this.epsilon)}else return Hc(r,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return h();let[d,p,f]=Fne(r,this.gamma.read(),this.beta.read(),i,this.epsilon),m=(A,y,g)=>{B(()=>{let b=1-g,_=A.read(),w=_.sub(y).mul(b);A.write(_.sub(w))})};return(()=>{m(this.movingMean,p,this.momentum),m(this.movingVariance,f,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Et(this.betaInitializer),gammaInitializer:Et(this.gammaInitializer),movingMeanInitializer:Et(this.movingMeanInitializer),movingVarianceInitializer:Et(this.movingVarianceInitializer),betaRegularizer:ft(this.betaRegularizer),gammaRegularizer:ft(this.gammaRegularizer),betaConstraint:jt(this.betaConstraint),gammaConstraint:jt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Yy.className="BatchNormalization";ae.registerClass(Yy);var Jy=class extends Ze{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=_t(e.betaInitializer||"zeros"),this.gammaInitializer=_t(e.gammaInitializer||"ones"),this.betaRegularizer=vt(e.betaRegularizer),this.gammaRegularizer=vt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=pt(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let a=0;a=t)throw new Error(`Invalid axis: ${a}`);if(this.axis.length!==Ka(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(a=>e[a]),r=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,r):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,r):this.beta=null,this.built=!0}call(e,t){let n=Be(e),r=n.shape,a=r.length;return B(()=>{let s=!0,{mean:i,variance:o}=Od(n,this.axis,s),l=Ci(1,a);for(let f of this.axis)l[f]=r[f];let u=f=>f!=null&&f.shape.length!==a&&this.axis!==[a-1]?f.reshape(l):f,c=u(this.gamma.read()),h=u(this.beta.read()),d=[],p=[];for(let f=0;f{if(e.rank!==4)throw new V(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new V("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=Sr()),n!=="channelsLast"&&n!=="channelsFirst")throw new V(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let r;return n==="channelsFirst"?r=[[0,0],[0,0],t[0],t[1]]:r=[[0,0],t[0],t[1],[0,0]],ca(e,r)})}var Qy=class extends Ze{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?Sr():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new V(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new V(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new V(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Qt({ndim:4})]}computeOutputShape(e){e=pt(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return B(()=>Mne(Be(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Qy.className="ZeroPadding2D";ae.registerClass(Qy);function p0(e,t,n,r,a,s){return B(()=>{Ft(a),e7(s),nr(r),n==null&&(n=[1,1]),r==null&&(r="valid"),a==null&&(a=Sr()),s==null&&(s="max"),e=by(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=tc(e,t,n,o):i=Xu(e,t,n,o),a==="channelsFirst"&&(i=ot(i,[0,3,1,2])),i})}function Av(e,t,n,r,a,s){return B(()=>{Ft(a),e7(s),nr(r),n==null&&(n=[1,1,1]),r==null&&(r="valid"),a==null&&(a=Sr()),s==null&&(s="max"),e=cv(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=bm(e,t,n,o):i=om(e,t,n,o),a==="channelsFirst"&&(i=ot(i,[0,4,1,2,3])),i})}var yv=class extends Ze{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new V(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Jt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new V(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,nr(this.padding),this.inputSpec=[new Qt({ndim:3})]}computeOutputShape(e){e=pt(e);let t=Fr(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return B(()=>{this.invokeCallHook(e,t),e=Rc(Be(e),2);let n=this.poolingFunction(Be(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return Ha(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},eg=class extends yv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"max")}};eg.className="MaxPooling1D";ae.registerClass(eg);var tg=class extends yv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"avg")}};tg.className="AveragePooling1D";ae.registerClass(tg);var gv=class extends Ze{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new V(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),nr(this.padding),this.inputSpec=[new Qt({ndim:4})]}computeOutputShape(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Fr(t,this.poolSize[0],this.padding,this.strides[0]),n=Fr(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Be(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},ng=class extends gv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"max")}};ng.className="MaxPooling2D";ae.registerClass(ng);var rg=class extends gv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"avg")}};rg.className="AveragePooling2D";ae.registerClass(rg);var xv=class extends Ze{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new V(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),nr(this.padding),this.inputSpec=[new Qt({ndim:5})]}computeOutputShape(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Fr(t,this.poolSize[0],this.padding,this.strides[0]),n=Fr(n,this.poolSize[1],this.padding,this.strides[1]),r=Fr(r,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Be(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},ag=class extends xv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),Av(e,t,n,r,a,"max")}};ag.className="MaxPooling3D";ae.registerClass(ag);var sg=class extends xv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),Av(e,t,n,r,a,"avg")}};sg.className="AveragePooling3D";ae.registerClass(sg);var wv=class extends Ze{constructor(e){super(e);this.inputSpec=[new Qt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new Pe}},ig=class extends wv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Be(e);return Tt(n,1)})}};ig.className="GlobalAveragePooling1D";ae.registerClass(ig);var og=class extends wv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Be(e);return Qn(n,1)})}};og.className="GlobalMaxPooling1D";ae.registerClass(og);var bv=class extends Ze{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),this.inputSpec=[new Qt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new Pe}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},lg=class extends bv{call(e,t){return B(()=>{let n=Be(e);return this.dataFormat==="channelsLast"?Tt(n,[1,2]):Tt(n,[2,3])})}};lg.className="GlobalAveragePooling2D";ae.registerClass(lg);var ug=class extends bv{call(e,t){return B(()=>{let n=Be(e);return this.dataFormat==="channelsLast"?Qn(n,[1,2]):Qn(n,[2,3])})}};ug.className="GlobalMaxPooling2D";ae.registerClass(ug);var _v=class extends Ze{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let r=t.layer,a=Rr(r,n);delete t.layer;let s={layer:a};return Object.assign(s,t),new e(s)}},cg=class extends _v{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=pt(e),e.length<3)throw new V(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=pt(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))}call(e,t){return B(()=>(e=Be(e),fv((n,r)=>[Be(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};cg.className="TimeDistributed";ae.registerClass(cg);function $ne(e){Fi(GQ,"BidirectionalMergeMode",e)}var Dne="concat",hg=class extends _v{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Rr(n),t.goBackwards=t.goBackwards!==!0;let r={};if(r.className=e.layer.getClassName(),r.config=t,this.backwardLayer=Rr(r),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?Dne:e.mergeMode,$ne(this.mergeMode),e.weights)throw new Pe("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,r,a;return this.returnState&&(a=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,r=[n]):this.mergeMode==null?r=[n,n.slice()]:r=[n],this.returnState?this.mergeMode==null?r.concat(a).concat(a.slice()):[n].concat(a).concat(a.slice()):Fn(r)}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=pv(e,n,r,this.numConstants);if(e=a.inputs,n=a.initialState,r=a.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&r==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new V("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let u=n.map(c=>new Qt({shape:c.shape}));this.forwardLayer.stateSpec=u.slice(0,l/2),this.backwardLayer.stateSpec=u.slice(l/2),i.push(...u)}if(r!=null)throw new Pe("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof Cr;for(let l of s)if(l instanceof Cr!==o)throw new V("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),u=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=u;let h=super.apply(l,t);return this.inputSpec=c,h}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t.initialState,r,a;if(n==null)r=this.forwardLayer.call(e,t),a=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);r=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),a=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(r)&&(s=r.slice(1).concat(a.slice(1))),r=r[0],a=a[0]),this.returnSequences&&(a=Ln(a,1));let i;return this.mergeMode==="concat"?i=PA([r,a]):this.mergeMode==="sum"?i=ie(r,a):this.mergeMode==="ave"?i=P(.5,ie(r,a)):this.mergeMode==="mul"?i=P(r,a):this.mergeMode==null&&(i=[r,a]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Mi(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Mi(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let r=this.forwardLayer.states.map(a=>null);return Array.isArray(n)?n.concat(r).concat(r):[n].concat(r).concat(r)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Rr(t.layer);if(delete t.layer,t.numConstants!=null)throw new Pe("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let r=t;return r.layer=n,new e(r)}};hg.className="Bidirectional";ae.registerClass(hg);function lee(e){return new Gl(e)}function uee(e){return new gy(e)}function cee(e){return new my(e)}function hee(e){return new Ay(e)}function dee(e){return new yy(e)}function pee(e){return new wy(e)}function fee(e){return new xy(e)}function mee(e){return new o0(e)}function Aee(e){return new Bc(e)}function yee(e){return new vy(e)}function gee(e){return new i0(e)}function xee(e){return new ky(e)}function wee(e){return new Iy(e)}function bee(e){return new Ny(e)}function _ee(e){return new Sy(e)}function vee(e){return new Dy(e)}function kee(e){return new My(e)}function Iee(e){return new d0(e)}function Nee(e){return new Fy(e)}function See(e){return new $y(e)}function Tee(e){return new Oy(e)}function Eee(e){return new zy(e)}function Cee(e){return new Py(e)}function Ree(e){return new Wy(e)}function Fee(e){return new By(e)}function Mee(e){return new Uy(e)}function $ee(e){return new Gy(e)}function Dee(e){return new Hy(e)}function Oee(e){return new jy(e)}function zee(e){return new Vy(e)}function Pee(e){return new qy(e)}function Lee(e){return new Yy(e)}function Wee(e){return new Jy(e)}function Bee(e){return new Qy(e)}function qA(e){return new tg(e)}function Vee(e){return qA(e)}function Uee(e){return qA(e)}function XA(e){return new rg(e)}function Hee(e){return XA(e)}function jee(e){return XA(e)}function KA(e){return new sg(e)}function Gee(e){return KA(e)}function qee(e){return KA(e)}function Xee(e){return new ig(e)}function Kee(e){return new lg(e)}function p7(e){return new og(e)}function f7(e){return new ug(e)}function m7(e){return new eg(e)}function A7(e){return new ng(e)}function Zee(e){return new ag(e)}function Yee(e){return new Ey(e)}function Jee(e){return new c0(e)}function Qee(e){return new Cy(e)}function ete(e){return new Vc(e)}function tte(e){return new Ty(e)}function nte(e){return new u0(e)}function rte(e){return new Ry(e)}function ate(e){return new h0(e)}function ste(e){return new Zr(e)}function ite(e){return new l0(e)}function ote(e){return new hg(e)}function lte(e){return new cg(e)}var ute=p7,cte=f7,hte=m7,dte=A7;function pte(e){return new Xy(e)}function fte(e){return new Ky(e)}function mte(e){return new Zy(e)}function Ate(e){return new Ly(e)}var vv={};We(vv,{MAPE:()=>Gne,MSE:()=>Kne,binaryAccuracy:()=>One,binaryCrossentropy:()=>zne,categoricalAccuracy:()=>Lne,categoricalCrossentropy:()=>Wne,cosineProximity:()=>Une,mape:()=>qne,meanAbsoluteError:()=>Hne,meanAbsolutePercentageError:()=>jne,meanSquaredError:()=>Xne,mse:()=>Zne,precision:()=>Bne,recall:()=>Vne,sparseCategoricalAccuracy:()=>Pne});function One(e,t){return ty(e,t)}function zne(e,t){return R7(e,t)}function Pne(e,t){return F7(e,t)}function Lne(e,t){return ny(e,t)}function Wne(e,t){return ry(e,t)}function Bne(e,t){return C7(e,t)}function Vne(e,t){return Dte(e,t)}function Une(e,t){return QA(e,t)}function Hne(e,t){return Jp(e,t)}function jne(e,t){return Xl(e,t)}function Gne(e,t){return Xl(e,t)}function qne(e,t){return Xl(e,t)}function Xne(e,t){return Di(e,t)}function Kne(e,t){return Di(e,t)}function Zne(e,t){return Di(e,t)}var kv={};We(kv,{modelFromJSON:()=>mne});var Iv={};We(Iv,{l1:()=>Jne,l1l2:()=>Yne,l2:()=>Qne});function Yne(e){return new Lc(e)}function Jne(e){return vne(e)}function Qne(e){return kne(e)}var Nv=class extends ql{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof ya))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function f0(e,t){return et}var Tv=class extends Nv{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new Pe("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=f0:this.mode==="max"?this.monitorFunc=Sv:this.monitor.indexOf("acc")!==-1?this.monitorFunc=Sv:this.monitorFunc=f0,this.monitorFunc===f0&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===f0?Infinity:-Infinity}async onEpochEnd(e,t){await Ja(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function ere(e){return new Tv(e)}var tre={earlyStopping:ere},Mr;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Mr||(Mr={}));var Ev;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(Ev||(Ev={}));var dg={};function nre(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};dg[e]=n}function Cv(e){return dg[e]}function rre(e){delete dg[e]}function k(e,t,n,r,a){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return $n(t.inputNames[s.inputIndexStart],n,r,a);if(s.type==="tensors")return t.inputNames.slice(o,l).map(h=>$n(h,n,r,a));let u=$n(t.inputNames.slice(o)[0],n,r,a),c=u.dataSync();return s.type==="number"?c[0]:v.toNestedArray(u.shape,c)}let i=t.attrParams[e];return i&&i.value}function $n(e,t,n,r){let[a,s]=Hn(e);if(r!=null){let o=r.getHashTableHandleByName(a);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[m0(a,o)]);return i!==void 0?t[m0(a,i)][s]:void 0}function are(e,t,n){return t[m0(e,n.currentContextId)]}function ga(e,t){let[n,r]=Hn(e);return[m0(n,t&&t.currentContextId),r]}function m0(e,t){return t?`${e}-${t}`:e}function Hn(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function A0(e,t,n){let r=k("pad",e,t,n);if(r==="explicit"){r=k("explicitPaddings",e,t,n);let a=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)a[s][0]=r[s*2],a[s][1]=r[s*2+1];return a}return r}function xa(e){return e.kept?e:zr(e)}var Rv={};We(Rv,{json:()=>sre});var sre=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Fv={};We(Fv,{json:()=>ire});var ire=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Mv={};We(Mv,{json:()=>ore});var ore=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],$v={};We($v,{json:()=>lre});var lre=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],Dv={};We(Dv,{json:()=>ure});var ure=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],Ov={};We(Ov,{json:()=>cre});var cre=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],zv={};We(zv,{json:()=>hre});var hre=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],Pv={};We(Pv,{json:()=>dre});var dre=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],Lv={};We(Lv,{json:()=>pre});var pre=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]}],Wv={};We(Wv,{json:()=>fre});var fre=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],Bv={};We(Bv,{json:()=>mre});var mre=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Vv={};We(Vv,{json:()=>Are});var Are=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Uv={};We(Uv,{json:()=>yre});var yre=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],Hv={};We(Hv,{json:()=>gre});var gre=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],jv={};We(jv,{json:()=>xre});var xre=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],Gv={};We(Gv,{json:()=>wre});var wre=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],qv={};We(qv,{json:()=>bre});var bre=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],Kv=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[Rv,Fv,Mv,$v,Dv,Ov,zv,Bv,Wv,Pv,Vv,Uv,Hv,jv,Gv,qv,Lv],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,r)=>(n[r.tfOpName]=r,n),{})}transformGraph(e,t={}){let n=e.node,r=[],a=[],s=[],i=n.reduce((f,m)=>(f[m.name]=this.mapNode(m),m.op.startsWith("Placeholder")?r.push(f[m.name]):m.op==="Const"?a.push(f[m.name]):(m.input==null||m.input.length===0)&&s.push(f[m.name]),f),{}),o=[],l=[],u={},c={};t!=null&&(u=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));let h=Object.keys(i);h.forEach(f=>{let m=i[f];m.inputNames.forEach(A=>{let[y]=ga(A);m.inputs.push(i[y]),i[y].children.push(m)})}),Object.keys(c).length===0?h.forEach(f=>{let m=i[f];m.children.length===0&&l.push(m)}):Object.keys(c).forEach(f=>{let[m]=ga(f),A=i[m];A!=null&&(A.signatureKey=c[f],l.push(A))}),Object.keys(u).length>0?Object.keys(u).forEach(f=>{let[m]=ga(f),A=i[m];A&&(A.signatureKey=u[f],o.push(A))}):o=r;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((f,m)=>(f[m.signature.name]=this.mapFunction(m),f),{}));let p={nodes:i,inputs:o,outputs:l,weights:a,placeholders:r,signature:t,functions:d};return s.length>0&&(p.initNodes=s),p}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=Cv(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(r=>r.startsWith("^")?r.substr(1):r),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((r,a)=>(r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((r,a)=>{let s=a.type,i;switch(a.type){case"string":i=pg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=pg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":i=bg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=bg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":i=mg(e.attr,a.tfName,a.defaultValue||0),i===void 0&&!!a.tfDeprecatedName&&(i=mg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":i=wg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=wg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":i=fg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=fg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":i=vg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=vg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":i=xg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=xg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":i=_g(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=_g(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":i=yg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=yg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":i=gg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=gg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":i=Xv(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Xv(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${a.type} for op: ${e.op}`)}return r[a.name]={value:i,type:s},r},{})),n}mapFunction(e){let t=e.nodeDef,n=[],r=[],a={};t!=null&&(a=t.reduce((u,c)=>(u[c.name]=this.mapNode(c),c.op==="Const"&&r.push(u[c.name]),u),{}));let s=[],i=[];e.signature.inputArg.forEach(u=>{let[c]=ga(u.name),h={name:c,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:Ag(u.type),type:"dtype"}},children:[]};h.signatureKey=u.name,s.push(h),a[c]=h}),Object.keys(a).forEach(u=>{let c=a[u];c.inputNames.forEach(h=>{let[d]=ga(h);c.inputs.push(a[d]),a[d].children.push(c)})});let o=e.ret;e.signature.outputArg.forEach(u=>{let[c,h]=ga(o[u.name]),d=a[c];d!=null&&(d.defaultOutput=h,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:a,inputs:s,outputs:i,weights:r,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function _re(e){let t=J().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function Zv(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):_re(e);return t?n:n.toLowerCase()}function pg(e,t,n,r=!1){let a=e[t];return a!=null?Zv(a.s,r):n}function fg(e,t,n){let r=e[t];return r?r.b:n}function mg(e,t,n){let r=e[t]||{},a=r.i!=null?r.i:r.f!=null?r.f:n;return typeof a=="number"?a:parseInt(a,10)}function Ag(e){switch(typeof e=="string"&&(e=Mr[e]),e){case Mr.DT_FLOAT:return"float32";case Mr.DT_INT32:case Mr.DT_INT64:case Mr.DT_INT8:case Mr.DT_UINT8:return"int32";case Mr.DT_BOOL:return"bool";case Mr.DT_DOUBLE:return"float32";case Mr.DT_STRING:return"string";default:return null}}function Xv(e,t,n){let r=e[t];return r&&r.func?r.func.name:n}function yg(e,t,n){let r=e[t];return r&&r.type?Ag(r.type):n}function gg(e,t,n){let r=e[t];return r&&r.list&&r.list.type?r.list.type.map(a=>Ag(a)):n}function Yv(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function xg(e,t,n){let r=e[t];return r&&r.shape?Yv(r.shape):n}function wg(e,t,n){let r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map(a=>typeof a=="number"?a:parseInt(a,10)):n}function bg(e,t,n,r=!1){let a=e[t];return a&&a.list&&a.list.s?a.list.s.map(s=>Zv(s,r)):n}function _g(e,t,n){let r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map(a=>Yv(a)):n}function vg(e,t,n){let r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var vre=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(r=>this.getInput(r)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((r,a)=>(r[a]=this.getAttr(a),r),{}))}getInput(e){return $n(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return $n(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return mg(this.node.rawAttrs,e,t);if(n.s!=null)return pg(this.node.rawAttrs,e,t);if(n.b!=null)return fg(this.node.rawAttrs,e,t);if(n.shape!=null)return xg(this.node.rawAttrs,e,t);if(n.type!=null)return yg(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return wg(this.node.rawAttrs,e,t);if(n.list.s!=null)return bg(this.node.rawAttrs,e,t);if(n.list.shape!=null)return _g(this.node.rawAttrs,e,t);if(n.list.b!=null)return vg(this.node.rawAttrs,e,t);if(n.list.type!=null)return gg(this.node.rawAttrs,e,t)}return t}},kre=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[ie(k("a",e,t,n),k("b",e,t,n))];case"AddN":return[La(k("tensors",e,t,n))];case"FloorMod":case"Mod":return[vm(k("a",e,t,n),k("b",e,t,n))];case"Mul":return[P(k("a",e,t,n),k("b",e,t,n))];case"RealDiv":case"Div":return[be(k("a",e,t,n),k("b",e,t,n))];case"DivNoNan":return[pm(k("a",e,t,n),k("b",e,t,n))];case"FloorDiv":return[vd(k("a",e,t,n),k("b",e,t,n))];case"Sub":return[we(k("a",e,t,n),k("b",e,t,n))];case"Minimum":return[vl(k("a",e,t,n),k("b",e,t,n))];case"Maximum":return[Br(k("a",e,t,n),k("b",e,t,n))];case"Pow":return[ha(k("a",e,t,n),k("b",e,t,n))];case"SquaredDifference":return[qd(k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Ire=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[Bt(k("x",e,t,n))];case"Acos":return[Yf(k("x",e,t,n))];case"Acosh":return[Jf(k("x",e,t,n))];case"Asin":return[em(k("x",e,t,n))];case"Asinh":return[tm(k("x",e,t,n))];case"Atan":return[nm(k("x",e,t,n))];case"Atan2":return[rm(k("x",e,t,n),k("y",e,t,n))];case"Atanh":return[am(k("x",e,t,n))];case"Ceil":return[lm(k("x",e,t,n))];case"Complex":return[Da(k("real",e,t,n),k("imag",e,t,n))];case"Cos":return[Yu(k("x",e,t,n))];case"Cosh":return[Td(k("x",e,t,n))];case"Elu":return[xl(k("x",e,t,n))];case"Erf":return[fm(k("x",e,t,n))];case"Exp":return[Jn(k("x",e,t,n))];case"Expm1":return[mm(k("x",e,t,n))];case"Floor":return[wl(k("x",e,t,n))];case"Log":return[zn(k("x",e,t,n))];case"Log1p":return[Fd(k("x",e,t,n))];case"Imag":return[Cd(k("x",e,t,n))];case"Neg":return[St(k("x",e,t,n))];case"Reciprocal":return[Nm(k("x",e,t,n))];case"Real":return[ac(k("x",e,t,n))];case"Relu":return[Ur(k("x",e,t,n))];case"Round":return[Sm(k("x",e,t,n))];case"Selu":return[Bd(k("x",e,t,n))];case"Sigmoid":return[On(k("x",e,t,n))];case"Sin":return[Vd(k("x",e,t,n))];case"Sign":return[Em(k("x",e,t,n))];case"Sinh":return[Ud(k("x",e,t,n))];case"Softplus":return[bl(k("x",e,t,n))];case"Sqrt":return[an(k("x",e,t,n))];case"Square":return[ht(k("x",e,t,n))];case"Tanh":return[Al(k("x",e,t,n))];case"Tan":return[Fm(k("x",e,t,n))];case"ClipByValue":return[Sn(k("x",e,t,n),k("clipValueMin",e,t,n),k("clipValueMax",e,t,n))];case"Relu6":return[Ld(k("x",e,t,n))];case"Rsqrt":return[Wd($n(e.inputNames[0],t,n))];case"Prod":return[zd(k("x",e,t,n),k("axes",e,t,n))];case"LeakyRelu":return[Qu(k("x",e,t,n),k("alpha",e,t,n))];case"Prelu":return[rc(k("x",e,t,n),k("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Ar(e,t,n=""){if(!(typeof e=="number"||typeof t=="number")){v.assert(e.length===t.length,()=>n+` Shapes ${e} and ${t} must match`);for(let r=0;rn+` Shapes ${e} and ${t} must match`)}}}function Jv(e){return!(typeof e=="number"||e.some(t=>t<0))}function jc(e,t,n){let r=kg(e,n),a=!Jv(r);if(a&&t.length===0)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(a&&t.forEach(s=>{r=kg(s.shape,r)}),!Jv(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function kg(e,t){if(typeof e=="number")return t;if(typeof t=="number")return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);let n=[];for(let r=0;r=0&&s>=0&&a!==s)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=a>=0?a:s}return n}var Nre=class{constructor(e,t,n,r,a,s,i){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=a,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=Ie(0),Zt(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, +2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let u={};for(let p of Object.keys(pr))u[p]=pr[p];for(let p of Object.keys(n))u[p]=n[p];let c=s.config;c.customObjects=u;let h=Object.assign({},pr);for(let p of Object.keys(n))pr[p]=n[p];EA(s.config);let d=l(o,s.config,n,a);return pr=Object.assign({},h),d}else{let u=Object.assign({},pr);for(let h of Object.keys(n))pr[h]=n[h];let c=new o(s.config);return pr=Object.assign({},u),c}}}function IQ(e,t){return et?1:0}function Op(e,t){return-1*IQ(e,t)}function Ka(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function NQ(e){if(e==null)throw new V(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Fi(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new V(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function CA(e,t,n=0,r=Infinity){return qr(n>=0),qr(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(a=>typeof a===t)}function Jt(e,t){Array.isArray(e)?(v.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,r)=>Jt(n,`element ${r+1} of ${t}`))):v.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${Z3(e)}.`)}function Z3(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>Z3(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function SQ(e,t){let n=v.now(),r;return(...a)=>{let s=v.now();return s-nan(Re(P(e,e),t,!0)))}var Tc=class extends ae.Serializable{getConfig(){return{}}},FA=class extends Tc{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=RA(e,this.axis),n=Sn(t,0,this.maxValue);return P(e,be(n,ie(Ht(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};FA.className="MaxNorm";ae.registerClass(FA);var MA=class extends Tc{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>be(e,ie(Ht(),RA(e,this.axis))))}getConfig(){return{axis:this.axis}}};MA.className="UnitNorm";ae.registerClass(MA);var $A=class extends Tc{apply(e){return Ur(e)}};$A.className="NonNeg";ae.registerClass($A);var DA=class extends Tc{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=RA(e,this.axis),n=ie(P(this.rate,Sn(t,this.minValue,this.maxValue)),P(1-this.rate,t));return P(e,be(n,ie(Ht(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};DA.className="MinMaxNorm";ae.registerClass(DA);var J3={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function jt(e){return TA(e)}function Q3(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"constraint")}function Gt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in J3?J3[e]:e,config:{}};return Q3(t)}else return e instanceof Tc?e:Q3(e)}function bQ(e){return new FA(e)}function _Q(e){return new MA(e)}function vQ(){return new $A}function kQ(e){return new DA(e)}var e7={};We(e7,{constant:()=>CQ,glorotNormal:()=>zQ,glorotUniform:()=>OQ,heNormal:()=>PQ,heUniform:()=>LQ,identity:()=>$Q,leCunNormal:()=>WQ,leCunUniform:()=>BQ,ones:()=>EQ,orthogonal:()=>VQ,randomNormal:()=>FQ,randomUniform:()=>RQ,truncatedNormal:()=>MQ,varianceScaling:()=>DQ,zeros:()=>TQ});var UQ=["channelsFirst","channelsLast"],HQ=["nearest","bilinear"],jQ=["valid","same","causal"],GQ=["max","avg"],qQ=["sum","mul","concat","ave"],Hl=new Map;function Ft(e){Fi(UQ,"DataFormat",e)}function XQ(e){Fi(HQ,"InterpolationFormat",e)}function nr(e){Fi(jQ,"PaddingMode",e)}function t7(e){Fi(GQ,"PoolMode",e)}var Ec=[],n7="/";function Mi(e,t){Ec.push(e);try{let n=t();return Ec.pop(),n}catch(n){throw Ec.pop(),n}}function KQ(){return Ec.length===0?"":Ec.join(n7)+n7}function a7(e){if(!r7(e))throw new Error("Not a valid tensor name: '"+e+"'");return KQ()+e}function s7(e){if(!r7(e))throw new Error("Not a valid tensor name: '"+e+"'");Hl.has(e)||Hl.set(e,0);let t=Hl.get(e);if(Hl.set(e,Hl.get(e)+1),t>0){let n=`${e}_${t}`;return Hl.set(n,1),n}else return e}var ZQ=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function r7(e){return!!e.match(ZQ)}function YQ(e){return e===parseInt(e.toString(),10)}function Za(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let r=1;for(let a=t;a{if(e.shape.length!==2)throw new V(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=Rc(e,1);return OA(n,[1,t,1])})}function QQ(e){let t=[Za(e.shape)];return e.reshape(t)}function eee(e){if(e.rank<=1)throw new V(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],Za(e.shape,1)];return e.reshape(t)}function $i(e,t,n){return B(()=>{switch(e.rank){case 1:return Hd(e,t,n);case 2:return Cm(e,[t,0],[n,e.shape[1]]);case 3:return jd(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return sc(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return $e(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return $e(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new V(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function zA(e,t,n){return B(()=>{switch(e.rank){case 1:return Hd(e,t,n);case 2:return Cm(e,[0,t],[e.shape[0],n]);case 3:return jd(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return sc(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function zp(e,t,n,r){return B(()=>{switch(e.rank){case 1:return Hd(e,t,n);case 2:switch(r){case 1:return $i(e,t,n);case 2:return zA(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 3:switch(r){case 1:return $i(e,t,n);case 2:return jd(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return zA(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 4:switch(r){case 1:return $i(e,t,n);case 2:return sc(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return sc(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return zA(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function PA(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),lt(e,t)}function o7(e,t){switch(e.rank){case 1:return hx([e,t]);case 2:return yl([e,t],0);case 3:return dx([e,t],0);case 4:return px([e,t],0);default:throw new V(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function OA(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new V(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return Va(e,t)}function Pp(e,t=0,n=1,r,a){return Cx(e,t,n,r,a)}function Xr(e,t,n,r){if(e.rank<2||t.rank<2)throw new Pe(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let a=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(a!==s)throw new Pe(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let a=!1,s=!1;return ja.matMul({a:e,b:t,transposeA:a,transposeB:s,bias:r?LA(e.rank,r,Sr()):null,activation:n})}else{let a=e.shape.slice(),s=a.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),u=[...i,o],c=Array.from({length:t.rank},(f,m)=>m===0?t.rank-2:m<=t.rank-2?m-1:m);t=t.transpose(c).reshape([l,-1]);let h=[...a,...u],d=!1,p=!1;return ja.matMul({a:e,b:t,transposeA:d,transposeB:p,bias:r?LA(e.rank,r,Sr()):null,activation:n}).reshape(h)}}function l7(e,t,n){return B(()=>(Array.isArray(t)?t=hn(t,"int32"):t=t.toInt(),Ai(e,t,n)))}function Fc(e){return P(e,e)}function LA(e,t,n){let r=t.shape;if(t.rank!==1&&t.rank!==e)throw new V(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1,1]):t.reshape([1,r[3],r[0],r[1],r[2]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===4){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1]):t.reshape([1,r[2],r[0],r[1]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===3){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1]):t.reshape([1,r[1],r[0]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,r[0]]):t.reshape([1].concat(r))}else if(e<3)return t;throw new V(`Unsupported input rank by biasAdd: ${t.rank}`)}function Kr(e,t,n){return B(()=>(n==null&&(n=Sr()),Ft(n),e.add(LA(e.rank,t,n))))}function tee(e,t=1){if(t!==1)throw new Pe(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return xl(e)}function nee(e){return B(()=>be(e,Bt(e).add(1)))}function u7(e,t,n,r){return B(()=>zx(e,t,n,r))}function ree(e){return B(()=>{let t=ie(.5,P(.2,e));return Sn(t,0,1)})}function Mc(e,t,n=!1){return n?e():t()}var aee=["fanIn","fanOut","fanAvg"],see=["normal","uniform","truncatedNormal"];function iee(e){Fi(aee,"FanMode",e)}function oee(e){Fi(see,"Distribution",e)}var fr=class extends ae.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},WA=class extends fr{apply(e,t){return $t(e,t)}};WA.className="Zeros";ae.registerClass(WA);var Lp=class extends fr{apply(e,t){return Vr(e,t)}};Lp.className="Ones";ae.registerClass(Lp);var BA=class extends fr{constructor(e){super();if(typeof e!="object")throw new V(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new V(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return B(()=>P(Ie(this.value),Vr(e,t)))}getConfig(){return{value:this.value}}};BA.className="Constant";ae.registerClass(BA);var VA=class extends fr{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return kl(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};VA.className="RandomUniform";ae.registerClass(VA);var UA=class extends fr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Pe(`randomNormal does not support dType ${t}.`);return Pp(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};UA.className="RandomNormal";ae.registerClass(UA);var HA=class extends fr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Pe(`truncatedNormal does not support dType ${t}.`);return Xd(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};HA.className="TruncatedNormal";ae.registerClass(HA);var jA=class extends fr{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return B(()=>{if(e.length!==2||e[0]!==e[1])throw new V("Identity matrix initializer can only be used for 2D square matrices.");return P(this.gain,Am(e[0]))})}getConfig(){return{gain:this.gain}}};jA.className="Identity";ae.registerClass(jA);function lee(e,t="channelsLast"){let n,r;if(Ft(t),e.length===2)n=e[0],r=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let a=Za(e,2);n=e[1]*a,r=e[0]*a}else if(t==="channelsLast"){let a=Za(e,0,e.length-2);n=e[e.length-2]*a,r=e[e.length-1]*a}}else{let a=Za(e);n=Math.sqrt(a),r=Math.sqrt(a)}return[n,r]}var Mn=class extends fr{constructor(e){super();if(e.scale<0)throw new V(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,iee(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,oee(this.distribution),this.seed=e.seed}apply(e,t){let n=lee(e),r=n[0],a=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,r):this.mode==="fanOut"?s/=Math.max(1,a):s/=Math.max(1,(r+a)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new Pe(`${this.getClassName()} does not support dType ${t}.`);return Xd(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return kl(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Mn.className="VarianceScaling";ae.registerClass(Mn);var Wp=class extends Mn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Wp.className="GlorotUniform";ae.registerClass(Wp);var Bp=class extends Mn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Bp.className="GlorotNormal";ae.registerClass(Bp);var Vp=class extends Mn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Vp.className="HeNormal";ae.registerClass(Vp);var Up=class extends Mn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Up.className="HeUniform";ae.registerClass(Up);var Hp=class extends Mn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};Hp.className="LeCunNormal";ae.registerClass(Hp);var jp=class extends Mn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Mn.className}};jp.className="LeCunNormal";ae.registerClass(jp);var GA=class extends fr{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new Pe("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return B(()=>{if(e.length<2)throw new Pe("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,r=Pp(n,0,1,"float32"),a=Zx.gramSchmidt(r);return e[0]>e[1]&&(a=a.transpose()),P(this.gain,a)})}getConfig(){return{gain:this.gain,seed:this.seed}}};GA.className="Orthogonal";ae.registerClass(GA);var c7={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function h7(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"initializer")}function Et(e){return TA(e)}function _t(e){if(typeof e=="string"){let t=e in c7?c7[e]:e;if(t==="GlorotNormal")return new Bp;if(t==="GlorotUniform")return new Wp;if(t==="HeNormal")return new Vp;if(t==="HeUniform")return new Up;if(t==="LeCunNormal")return new Hp;if(t==="LeCunUniform")return new jp;{let n={};return n.className=t,n.config={},h7(n)}}else return e instanceof fr?e:h7(e)}function TQ(){return new WA}function EQ(){return new Lp}function CQ(e){return new BA(e)}function RQ(e){return new VA(e)}function FQ(e){return new UA(e)}function MQ(e){return new HA(e)}function $Q(e){return new jA(e)}function DQ(e){return new Mn(e)}function OQ(e){return new Wp(e)}function zQ(e){return new Bp(e)}function PQ(e){return new Vp(e)}function LQ(e){return new Up(e)}function WQ(e){return new Hp(e)}function BQ(e){return new jp(e)}function VQ(e){return new GA(e)}var d7={};We(d7,{Layer:()=>Ze,RNN:()=>Zr,RNNCell:()=>$c,activation:()=>kee,add:()=>Mee,alphaDropout:()=>Ate,average:()=>$ee,averagePooling1d:()=>qA,averagePooling2d:()=>XA,averagePooling3d:()=>KA,avgPool1d:()=>Uee,avgPool2d:()=>jee,avgPool3d:()=>qee,avgPooling1d:()=>Hee,avgPooling2d:()=>Gee,avgPooling3d:()=>Xee,batchNormalization:()=>Wee,bidirectional:()=>lte,concatenate:()=>Dee,conv1d:()=>Aee,conv2d:()=>yee,conv2dTranspose:()=>gee,conv3d:()=>xee,convLstm2d:()=>ate,convLstm2dCell:()=>ste,cropping2D:()=>bee,dense:()=>Iee,depthwiseConv2d:()=>vee,dot:()=>Lee,dropout:()=>Nee,elu:()=>cee,embedding:()=>Fee,flatten:()=>Tee,gaussianDropout:()=>mte,gaussianNoise:()=>fte,globalAveragePooling1d:()=>Kee,globalAveragePooling2d:()=>Zee,globalMaxPool1d:()=>cte,globalMaxPool2d:()=>hte,globalMaxPooling1d:()=>f7,globalMaxPooling2d:()=>m7,gru:()=>Jee,gruCell:()=>Qee,input:()=>p7,inputLayer:()=>uee,layerNormalization:()=>Bee,leakyReLU:()=>dee,lstm:()=>ete,lstmCell:()=>tte,masking:()=>yte,maxPool1d:()=>dte,maxPool2d:()=>pte,maxPooling1d:()=>A7,maxPooling2d:()=>y7,maxPooling3d:()=>Yee,maximum:()=>Oee,minimum:()=>zee,multiply:()=>Pee,permute:()=>Ree,prelu:()=>pee,reLU:()=>hee,repeatVector:()=>Eee,reshape:()=>Cee,rnn:()=>ite,separableConv2d:()=>wee,simpleRNN:()=>nte,simpleRNNCell:()=>rte,softmax:()=>fee,spatialDropout1d:()=>See,stackedRNNCells:()=>ote,thresholdedReLU:()=>mee,timeDistributed:()=>ute,upSampling2d:()=>_ee,zeroPadding2d:()=>Vee});var gte=0;function g7(){return gte++}var Gp={};function qp(e=""){return e in Gp||(Gp[e]=0),Gp[e]+=1,e+Gp[e].toString()}function ZA(e){return Array.isArray(e)&&Array.isArray(e[0])}function Xp(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Be(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new V(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function pt(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new V(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function Kp(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((r,a)=>r*a);return t}var x7="Variable",w7=class{constructor(e,t="float32",n=x7,r=!0,a=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=g7(),n=n==null?x7:n,this.originalName=a7(n),this.name=s7(this.originalName),this.trainable_=r,this.constraint=a,this.val=Fx(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),xte(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function xte(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function YA(e){return e.map(t=>t.read())}function JA(e){e.forEach(t=>{t[0].write(t[1])})}var Qt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},Cr=class{constructor(e,t,n,r,a,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=a,this.outputTensorIndex=i,this.id=g7(),s!=null&&(this.originalName=a7(s),this.name=s7(this.originalName)),this.rank=t.length}},wte=0,Zp=class{constructor(e,t){this.callArgs=t,this.id=wte++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},bte=0,Ze=class extends ae.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=bte++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=Aa(n)+"_"+qp(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let a=null;e.batchSize!=null&&(a=e.batchSize),n=[a].concat(e.inputShape)}this.batchInputShape=n;let r=e.dtype;r==null&&(r=e.inputDType),r==null&&(r="float32"),this.dtype=r}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new Tr(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new V(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Fn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Fn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ma(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new ma(`Layer ${this.name} is not connected, no input to return.`);return Fn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new ma(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ma(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Fn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=yt(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=yt(this.inputSpec);if(e.length!==t.length)throw new V(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;na.maxNDim)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${a.maxNDim}, found ndim=${s}`);if(a.minNDim!=null&&s=0?i[l]:i[i.length+l];if(u!=null&&[u,null].indexOf(c)===-1)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${u} but got shape ${i}.`)}}if(a.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of yt(e))s.push(i.shape);this.build(Fn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&a&&(this._refCount=1)}if(this.assertInputCompatibility(e),a){let s=this.call(e,t),i=yt(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Fn(o),this.activityRegularizer!=null)throw new Pe("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=_te(e),i=this.computeOutputShape(s),o,l=vte(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((u,c)=>new Cr(l,u,this,yt(e),t,this.name,c)):o=new Cr(l,i,this,yt(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new Pe("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,r)=>{n!=null&&e[r]!=null&&e[r]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new ma(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new ma(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new Tr(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return Kp(this.weights)}build(e){this.built=!0}getWeights(e=!1){return YA(e?this.trainableWeights:this.weights)}setWeights(e){B(()=>{let t=this.weights;if(t.length!==e.length)throw new V(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],r=YA(t);for(let a=0;aa.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=yt(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,r,a,s,i=null){let o=yt(e);t=yt(t),n=yt(n),r=yt(r),a=Xp(a),s=Xp(s);let l=[],u=[],c=[];for(let h of o)l.push(h.sourceLayer),u.push(h.nodeIndex),c.push(h.tensorIndex);new Zp({outboundLayer:this,inboundLayers:l,nodeIndices:u,tensorIndices:c,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:a,outputShapes:s},i);for(let h=0;he.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function _te(e){e=yt(e);let t=[];for(let n of e)t.push(n.shape);return Fn(t)}function vte(e){return"float32"}function b7(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let r=t.inboundNodes[n];if(r.inboundLayers.length===0)return r.inputTensors;{let a=[];for(let s=0;s0){let a=await Promise.all(t);for(let s=0;sie(this.totals[r],P(a,n)));this.totals[r]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:B(()=>{let r=P(be(1,this.seen),this.totals[n]);t[n]=r,this.totals[n].dispose(),Zt(t[n])}))}},N7=class extends ql{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let a in this.history){let s=this.history[a];for(let i=0;inew S7(n,t))}var mr=class{constructor(){}static registerCallbackConstructor(e,t){v.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),mr.checkForDuplicate(t),mr.constructors[e]==null&&(mr.constructors[e]=[]),mr.constructors[e].push(t)}static checkForDuplicate(e){for(let t in mr.constructors)mr.constructors[+t].forEach(n=>{if(n===e)throw new V("Duplicate callback constructor.")})}static clear(){mr.constructors={}}static createCallbacks(e){let t=[];for(let n in mr.constructors){let r=+n;e>=r&&t.push(...mr.constructors[r])}return t.map(n=>new n)}};mr.constructors={};function E7(e,t,n,r,a,s,i,o,l){let u=new N7,c=[new Ite,...mr.createCallbacks(t)];e!=null&&c.push(...e),c.push(u);let h=new I7(c);return h.setParams({epochs:n,initialEpoch:r,samples:a,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function Rr(e,t={},n=!1){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"layer",n)}function Yp(e,t){return B(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Re(Fc(e),t,!0),r=Ju(n.shape,Ht()),a=an(Br(n,r));return be(e,a)})}function Di(e,t){return B(()=>Tt(Fc(we(t,e)),-1))}function Jp(e,t){return B(()=>Tt(Bt(we(t,e)),-1))}function Xl(e,t){return B(()=>{let n=we(e,t),r=Sn(Bt(e),Ht(),Number.MAX_VALUE),a=Bt(be(n,r));return P(100,Tt(a,-1))})}function Nte(e,t){return B(()=>{let n=Sn(t,Ht(),Number.MAX_VALUE),r=zn(ie(1,n)),a=Sn(e,Ht(),Number.MAX_VALUE),s=zn(ie(1,a));return Tt(Fc(we(r,s)),-1)})}function Ste(e,t){return B(()=>{let n=Br(0,we(1,P(e,t)));return Tt(Fc(n),-1)})}function Tte(e,t){return B(()=>{let n=Br(0,we(1,P(e,t)));return Tt(n,-1)})}function Ete(e,t){return B(()=>{let n=Re(P(e,t),-1),r=Qn(P(we(1,e),t),-1);return Br(0,ie(1,we(r,n)))})}function Cte(e,t){return B(()=>{let n=Math.log(2),r=we(t,e),a=we(ie(r,bl(P(-2,r))),n);return Tt(a,-1)})}function Dc(e,t,n=!1){return B(()=>{if(n)t=ic(t);else{let r=Re(t,t.shape.length-1,!0);t=be(t,r)}return t=Sn(t,Ht(),1-Ht()),St(Re(P(e.toFloat(),zn(t)),t.shape.length-1))})}function Qp(e,t,n=!1){return B(()=>{let r=wl(QQ(e)).toInt();t=Sn(t,Ht(),1-Ht());let a=t.shape,s=hl(r,a[a.length-1]).reshape(a);return Dc(s,t,n)})}function Rte(e,t){if(!v.arraysEqual(e.shape,t.shape))throw new V(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return B(()=>{let n=t.relu(),r=t.abs().neg();return n.sub(t.mul(e)).add(r.exp().log1p())})}function e0(e,t){return B(()=>{let n;return n=Sn(t,Ht(),1-Ht()),n=zn(be(n,we(1,n))),Tt(Rte(e,n),-1)})}function Fte(e,t){return B(()=>{let n=Sn(e,Ht(),1),r=Sn(t,Ht(),1);return Re(P(e,zn(be(n,r))),-1)})}function Mte(e,t){return B(()=>{let n=zn(ie(Ht(),t));return Tt(we(t,P(e,n)),-1)})}function QA(e,t){return B(()=>{let n=Yp(e,-1),r=Yp(t,-1),a=P(n,r);return St(Re(a,-1))})}var t0={meanSquaredError:Di,meanAbsoluteError:Jp,meanAbsolutePercentageError:Xl,meanSquaredLogarithmicError:Nte,squaredHinge:Ste,hinge:Tte,categoricalHinge:Ete,logcosh:Cte,categoricalCrossentropy:Dc,sparseCategoricalCrossentropy:Qp,binaryCrossentropy:e0,kullbackLeiblerDivergence:Fte,poisson:Mte,cosineProximity:QA};function ey(e){if(typeof e=="string"){if(e in t0)return t0[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new V(t)}else return e}function ty(e,t){return B(()=>{let n=P(.5,Pn(t)),r=Cc(ur(t,n),e.dtype);return Tt(Ba(e,r),-1)})}function ny(e,t){return B(()=>Cc(Ba(Gu(e,-1),Gu(t,-1)),"float32"))}function C7(e,t){return B(()=>cr(e.equal(1),t.equal(1)).sum().cast("float32"))}function $te(e,t){return B(()=>cr(e.equal(1),t.equal(0)).sum().cast("float32"))}function Dte(e,t){return B(()=>cr(e.equal(0),t.equal(1)).sum().cast("float32"))}function R7(e,t){return B(()=>{let n=C7(e,t),r=Dte(e,t),a=n.add(r);return Tn(ur(a,0),n.div(a),0).cast("float32")})}function Ote(e,t){return B(()=>{let n=C7(e,t),r=$te(e,t),a=n.add(r);return Tn(ur(a,0),n.div(a),0).cast("float32")})}function F7(e,t){return e0(e,t)}function M7(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Ba(e,t).asType("float32")}var zte=Di,Pte=Di,Lte=Jp,Wte=Jp,Bte=Xl,Vte=Xl,ry=Dc,Ute=QA,$7=Qp,n0={binaryAccuracy:ty,categoricalAccuracy:ny,precision:R7,categoricalCrossentropy:ry,sparseCategoricalCrossentropy:$7,mse:zte,MSE:Pte,mae:Lte,MAE:Wte,mape:Bte,MAPE:Vte,cosine:Ute};function Hte(e){if(typeof e=="string"&&e in n0)return n0[e];if(typeof e!="string"&&e!=null)return e;throw new V(`Unknown metric ${e}`)}function r0(e){if(qr(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(t0))if(t0[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(n0))if(n0[n]===e){t=n;break}return t!==void 0?t:e.name}}function jte(e){let t={Adagrad:()=>bi.adagrad(.01),Adadelta:()=>bi.adadelta(1,.95,Ht()),Adam:()=>bi.adam(.001,.9,.999,Ht()),Adamax:()=>bi.adamax(.002,.9,.999,Ht(),0),RMSProp:()=>bi.rmsprop(.001,.9,0,Ht()),SGD:()=>bi.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new V(`Unknown Optimizer ${e}`)}var D7=1*1024*1024;function O7(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!ay(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let r=JSON.stringify(e);r.length>D7&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${r.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${D7}.`)}}function ay(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!ay(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!ay(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function Zte(e,t,n,r=console.log){let a=qte(e),s=["Layer (type)","Output shape","Param #"];a?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(c=>Math.floor(t*c)));let i;if(!a){s.push("Receives inputs"),i=[];for(let c in e.nodesByDepth)i.push(...e.nodesByDepth[c])}r("_".repeat(t)),a0(s,n,r),r("=".repeat(t));let o=e.layers;for(let c=0;c1||a.length===1&&a[0].inboundLayers.length>1){t=!1;break}r.push(...a)}if(t)for(let a of e.layers){let s=!1;for(let i of a.inboundNodes)if(r.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function a0(e,t,n=console.log){let r="";for(let a=0;a0&&(r=r.slice(0,r.length-1)+" "),r+=e[a],r=r.slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function Xte(e,t,n){let r;try{r=JSON.stringify(e.outputShape)}catch(o){r="multiple"}let a=e.name,s=e.getClassName(),i=[`${a} (${s})`,r,e.countParams().toString()];a0(i,t,n)}function Kte(e,t,n,r){let a;try{a=JSON.stringify(e.outputShape)}catch(c){a="multiple"}let s=[];for(let c of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(c)===-1))for(let h=0;hf.name),l=[],u=t.names();for(let f of o)u.indexOf(f)!==-1?l.push(t.getValue(f)):l.push(null);r!=null&&(r.maxNumTensors=-Infinity,r.minNumTensors=Infinity);let c=o.join(",")+"|"+t.names().join(","),h,d;if(oy[c]==null){let f=Jte(i,t);h=f.sorted,d=f.recipientCounts,oy[c]=h,P7[c]=d}h=oy[c],d={},a||Object.assign(d,P7[c]);let p=new Oi(t);for(let f=0;fr.maxNumTensors&&(r.maxNumTensors=T),T0,()=>"Expected at least one fetch, got none");let n=[],r={};if(e.length===1){let a=L7(e[0],t);n=a.sorted,r=a.recipientMap}else{let a=new Set;for(let s of e){let{sorted:i,recipientMap:o}=L7(s,t);for(let l of i)a.has(l.name)||(n.push(l),a.add(l.name));for(let l in o)r[l]==null&&(r[l]=new Set),o[l].forEach(u=>r[l].add(u))}}return{sorted:n,recipientCounts:ene(r)}}function ene(e){let t={};for(let n in e)t[n]=e[n].size;return t}function L7(e,t){let n=new Set,r=[],a={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),r.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let u of o.inputs)a[u.name]==null&&(a[u.name]=new Set),a[u.name].add(o.name),!n.has(u.name)&&s.push(u)}}return{sorted:r,recipientMap:a}}function Qte(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let r=0;ry.name)}`);Ka(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let g=y.sourceLayer,b=y.nodeIndex,_=y.tensorIndex;this.outputLayers.push(g),this.outputLayersNodeIndices.push(b),this.outputLayersTensorIndices.push(_)}for(let y of this.inputs){let g=y.sourceLayer,b=y.nodeIndex,_=y.tensorIndex;qr(b===0,"input layer has >1 nodes"),qr(_===0,"input layer has >1 tensors"),this.inputLayers.push(g),this.inputLayersNodeIndices.push(b),this.inputLayersTensorIndices.push(_)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},r={},a={},s={},i=[],o=(y,g,b,_,w,x)=>{(_==null||w==null||x==null)&&(_=y.sourceLayer,w=y.nodeIndex,x=y.tensorIndex);let N=_.inboundNodes[w];if(b.indexOf(N)!==-1)throw new Tr(`The tensor ${y.name} at layer "${_.name}" is part of a cycle.`);if(g.indexOf(N)!==-1)return;this.containerNodes.add(Yr.nodeKey(_,w)),_.id in s||(s[_.id]=Object.keys(s).length),b.indexOf(N)===-1&&b.push(N);let S=N.inboundLayers.length;for(let T=0;T=0;)b.splice(b.indexOf(N),1);i.push(N)},l=[],u=[];for(let y of this.outputs)o(y,l,u);let c=i.slice().reverse();for(let y of c){n[y.id]=y,y.id in t||(t[y.id]=0);let g=t[y.id],b=r[y.outboundLayer.id]==null?0:r[y.outboundLayer.id];g=Math.max(g,b),r[y.outboundLayer.id]=g,a[y.outboundLayer.id]=y.outboundLayer,t[y.id]=g;for(let _=0;_parseInt(y,10)).sort(Op);this.layers=[];for(let y of p){let g=d[y];g.sort((b,_)=>{let w=s[b.id],x=s[_.id];return wx?1:0});for(let b of g)b instanceof Yr&&this.internalContainerRefs.push(b),this.layers.push(b)}this.layersByDepth=d,p=Object.keys(h).map(y=>parseInt(y,10)).sort(Op);let f=this.inputs.slice(),m=[];for(let y of p)for(let g of h[y]){let b=g.outboundLayer;if(b!=null){for(let _ of g.inputTensors)if(f.indexOf(_)===-1)throw new Tr(`Graph disconnected: cannot obtain value for tensor ${_} at layer "${b.name}". The following previous layers were accessed without issue: ${m}`);for(let _ of g.outputTensors)f.push(_);m.push(b.name)}}this.nodesByDepth=h;let A=this.layers.map(y=>y.name);for(let y of A){let g=A.filter(b=>b===y).length;if(g!==1)throw new Tr(`The name "${y}" is used ${g} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(A))}this.outboundNodes=[],this.inboundNodes=[],new Zp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new V("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},r=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new V(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,r++}let a=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)a.push([n[i],e[s]]);else if(t)throw new V(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new V(`${s.length} of ${r} weights are not set: ${s}`)}JA(a)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${iy}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=sy(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return B(()=>{e=yt(e);let n=new Oi;for(let r=0;r{e=yt(e);let n;return t==null?n=Ci(null,e.length):n=yt(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=Xp(e);if(t.length!==this.inputLayers.length)throw new V(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(Op);if(r.length>1)for(let i of r){let o=this.nodesByDepth[i];for(let l of o){let u=l.outboundLayer;if(this.inputLayers.map(f=>f.id).indexOf(u.id)!==-1)continue;let c=[];for(let f=0;fparseInt(o,10)).sort(Op);for(let o of r){let l=this.nodesByDepth[o];for(let u of l){let c=u.outboundLayer,h=u.inputTensors,d=u.outputTensors,p=new Array;for(let f of h)f.id in n&&p.push(n[f.id]);if(p.length===h.length){let f={},m,A,y,g;if(u.callArgs!=null&&(f=u.callArgs),p.length===1){let[b,_]=p[0];f.mask==null&&(f.mask=_),y=yt(c.call(b,f)),g=yt(c.computeMask(b,_)),m=[b],A=[_]}else m=p.map(b=>b[0]),A=p.map(b=>b[1]),f.mask==null&&(f.mask=A),y=yt(c.call(m,f)),g=yt(c.computeMask(m,A));if(c.activityRegularizer)throw new Pe("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let b=0;b{let e=[];for(let t of this.layers)for(let n=0;n0){let f=[];for(let m=0;m0&&m.apply(Fn(y),g)}function l(m){let A=m.name,y=Rr(m,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(r),a[A]=y,m.inboundNodes.forEach(g=>{if(!(g instanceof Array))throw new V(`Corrupted configuration, expected array for nodeData: ${g}`);i(y,g)})}let u=t.name,c=t.layers;for(let m of c)l(m);for(;!NQ(s);)for(let m of c){let A=a[m.name];if(A.name in s){let y=s[A.name];delete s[A.name];for(let g of y)o(A,g)}}let h=[],d=[],p=t.inputLayers;for(let m of p){let A=m[0],y=m[1],g=m[2];qr(A in a);let b=a[A].inboundNodes[y].outputTensors;h.push(b[g])}let f=t.outputLayers;for(let m of f){let A=m[0],y=m[1],g=m[2];qr(A in a);let b=a[A].inboundNodes[y].outputTensors;d.push(b[g])}return new e({inputs:h,outputs:d,name:u})}get stateful(){if(this._stateful)throw new V("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){B(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function tne(e,t,n){let r=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(a=>null);if(r===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${r} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let a=[];return t.forEach(s=>{s in e?a.push(e[s]):a.push(null)}),a}else throw new Error(`The model has multiple (${r}) outputs, so ${n} must be either an array with ${r} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function W7(e,t){return tne(e,t,"classWeight")}async function B7(e,t,n,r){if(t!=null||r!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let a=B(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await a.data());Me(a);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),hn(i,"float32")}else return null}function nne(e,t){return P(e,t)}var rne=32;function U7(e,t){let n,r,a=t;n=a.xs,r=a.ys,v.assert(n!=null&&r!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=V7("input",e.inputNames,n),i=V7("output",e.outputNames,r),o=s[0].shape[0];v.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),v.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function V7(e,t,n){if(n instanceof Ge)return[n];if(Array.isArray(n))return v.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let r=[];for(let a of t){if(n[a]==null)throw new V(`The feature data generated by the dataset lacks the required ${e} key '${a}'.`);r.push(n[a])}return r}}function ane(e){if(e.length===3)throw new Pe("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function ine(e,t,n){let r=n.batchesPerEpoch!=null;if(v.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),v.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),v.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),v.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),v.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let a=n.validationData!=null,s,i;if(a)if(H7(n.validationData))v.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let A=ane(n.validationData);s=A.xs,i=A.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),u;a?u=l.slice().concat(l.map(A=>"val_"+A)):u=l.slice();let c=T7(n.callbacks,n.yieldEvery),h=n.verbose==null?1:n.verbose,{callbackList:d,history:p}=E7(c,h,n.epochs,null,null,sne(t,n),null,a,u);d.setModel(e),e.history=p,await d.onTrainBegin(),e.stopTraining_=!1;let f=n.initialEpoch==null?0:n.initialEpoch,m=await t.iterator();for(;f=n.batchesPerEpoch:b.done){if(a){let _;H7(n.validationData)?_=yt(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):_=yt(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?rne:n.validationBatchSize,verbose:0}));for(let w=0;w0)throw new Pe("Verbose mode is not implemented yet.");v.assert(!r||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=one(t)?t:await t.iterator(),o=0,l=0;for(;r?l{if(u.value){let{xs:c,ys:h}=U7(e,u.value),d=c.concat(h),p=B(()=>a(d));if(Me(d),l===0)for(let m=0;mie(s[m],P(f,A))),l>0&&Me(y)}Me(p),o+=f,++l}return s}),u.done){r&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function Pc(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(r=>$i(r,t,n-t)):$i(e,t,n-t)}function uy(e,t){return B(()=>e==null?null:Array.isArray(e)?e.map(n=>uy(n,t)):l7(e,t.dtype==="int32"?t:t.toInt()))}function cy(e,t){let n=[],r=0,a=null;for(;r=e&&(a=e),n.push([r,a]),r=a;return n}async function une(e,t,n,r,a,s,i,o,l,u,c,h,d,p,f){a==null&&(a=32),s==null&&(s=1),c==null&&(c=!0),d==null&&(d=0);let m=!1;if(l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new V("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let A=e.checkNumSamples(n,a,p,"steps_per_epoch"),y;A!=null&&(y=Er(0,A)),i==null&&(i=1);let{callbackList:g,history:b}=E7(o,i,s,d,A,p,a,m,h);g.setModel(e),e.history=b,await g.onTrainBegin(),e.stopTraining_=!1;for(let _=d;_{let M=N[S][0],D=N[S][1],z=$i(x,M,D-M);T.batch=S,T.size=D-M;let W=uy(n,z),U=t(W);for(let H=0;H0){if(f=!0,r.validationData.length===2)i=r.validationData[0],o=r.validationData[1];else throw r.validationData.length===3?new Pe("validationData including sample weights is not supported yet."):new V(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${r.validationData} is invalid.`);let x=!0,N=await e.standardizeUserData(i,o,null,null,x,h);l=N[0],u=N[1],m=l.concat(u)}else if(r.validationSplit!=null&&r.validationSplit>0&&r.validationSplit<1){f=!0;let x=Math.floor(a[0].shape[0]*(1-r.validationSplit)),N=a[0].shape[0];l=Pc(a,x,N),a=Pc(a,0,x),u=Pc(s,x,N),s=Pc(s,0,x),m=l.concat(u)}else r.validationSteps!=null&&(f=!0);let A=a.concat(s).concat(c);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),g=e.getDedupedMetricsNames(),b,_;f?(e.makeTestFunction(),b=e.testFunction,_=g.slice().concat(g.map(x=>"val_"+x))):(b=null,m=[],_=g.slice());let w=T7(r.callbacks,r.yieldEvery);return await une(e,y,A,g,h,r.epochs,r.verbose,w,b,m,r.shuffle,_,r.initialEpoch,null,null)}finally{e.isTraining=!1,zi(a,t),zi(s,n),zi(l,i),zi(u,o),c!=null&&Me(c)}}function j7(e){let t=[];e instanceof Ge&&(e=[e]);for(let n=0;nn.push(a.id));else if(t!=null)for(let a in t){let s=t[a];n.push(s.id)}let r=[];if(e instanceof Ge)n.indexOf(e.id)===-1&&r.push(e);else if(Array.isArray(e))e.forEach(a=>{n.indexOf(a.id)===-1&&r.push(a)});else if(e!=null)for(let a in e){let s=e[a];n.indexOf(s.id)===-1&&r.push(s)}r.forEach(a=>{a.isDisposed||a.dispose()})}function hne(e){return e instanceof Ge}function hy(e){return Array.isArray(e)}function G7(e){return!hne(e)&&!hy(e)}function q7(e,t,n,r=!0,a=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(hy(e)&&e.length>0)i=!0;else if(G7(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new V(`Error when checking model ${a} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(G7(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new V(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(hy(e)){if(e=e,e.length!==t.length)throw new V(`Error when checking model ${a}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new V(`The model ${a} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=j7(s),n!=null)for(let i=0;i=0&&u!==c)throw new V(`Error when checking ${a}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function dne(e,t,n){let r=Ka(e.map(s=>s.shape[0]));r.sort();let a=Ka(t.map(s=>s.shape[0]));if(a.sort(),r.length>1)throw new V(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(a.length>1)throw new V(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(r.length>0&&a.length>0&&!v.arraysEqual(r,a))throw new V(`Input Tensors should have the same number of samples as target Tensors. Found ${r[0]} input sample(s) and ${a[0]} target sample(s).`)}function pne(e,t,n){let r=[Di,e0,Dc];for(let a=0;a1)throw new V(`The model expects ${t.length} ${a} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(r=>n);{let r=[];for(let a of t){let s=n.hasOwnProperty(a)?n[a]:[];Array.isArray(s)||(s=[s]),r.push(s)}return r}}var mne="layers-model",ya=class extends Yr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new V("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");Zte(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=jte(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof pa))throw new V("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new V(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(ey(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new V(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>ey(s))}else{let s=ey(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let r=fne(e.metrics,this.outputNames),a=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Mi("metric",()=>{for(let s=0;s{let l="",u,c,h;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let f=this.internalOutputShapes[s];f[f.length-1]===1||this.lossFunctions[s]===e0?["accuracy","acc"].indexOf(d)!==-1?c=ty:["crossentropy","ce"].indexOf(d)!==-1&&(c=F7):this.lossFunctions[s]===Qp?["accuracy","acc"].indexOf(d)!==-1?c=M7:["crossentropy","ce"].indexOf(d)!==-1&&(c=$7):["accuracy","acc"].indexOf(d)!==-1?c=ny:["crossentropy","ce"].indexOf(d)!==-1&&(c=ry);let m;["accuracy","acc"].indexOf(d)!==-1?m="acc":["crossentropy","ce"].indexOf(d)!==-1&&(m="ce"),h=c,u=l+m}else h=Hte(d),u=l+r0(d);let p;Mi(u,()=>{p=h}),a(s,u,p)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let r=n.batchSize==null?32:n.batchSize;ly(r);let a=!0,s=this.standardizeUserDataXY(e,t,a,r);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,r,n.verbose,n.steps);return Fn(l)}finally{zi(s[0],e),zi(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),lne(this,e,t)}checkNumSamples(e,t,n,r="steps"){let a;if(n!=null){if(a=null,t!=null)throw new V(`If ${r} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?a=e[0].shape[0]:a=e.shape[0];else throw new V(`Either the input data should have a defined shape, or ${r} shoud be specified.`);return a}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new V("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),r=n?t:[t],a=this.retrieveSymbolicTensors(r),s=new Oi;if(e instanceof Ge&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new V(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let r=[];throw t.forEach((a,s)=>{a==null&&r.push(e[s])}),new V(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(r)}`)}return t}predictLoop(e,t=32,n=!1){return B(()=>{let r=this.checkNumSamples(e);if(n)throw new Pe("Verbose predictLoop() is not implemented yet.");let a=cy(r,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=a[i][0],l=a[i][1],u=Pc(e,o,l),c=[];if(Array.isArray(u))for(let d=0;ds[l].push(o));return Fn(s.map(i=>lt(i,0)))})}predict(e,t={}){let n=j7(e);X7(n,this.inputNames,this.feedInputShapes,!1);try{let r=t.batchSize==null?32:t.batchSize;return ly(r),this.predictLoop(n,r)}finally{zi(n,e)}}predictOnBatch(e){X7(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,r){if(this.optimizer_==null)throw new Tr("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let a=[];for(let s=0;s0&&e[0].shape[0]%r!=0)throw new V(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${r}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,r,a=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,a,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(r!=null){let u=W7(r,this.outputNames);l=[];for(let c=0;c{let s=this.checkNumSamples(t,n,a,"steps"),i=[];if(r>0)throw new Pe("Verbose mode is not implemented yet.");if(a!=null)throw new Pe("steps mode in testLoop() is not implemented yet");{let o=cy(s,n),l=hn(Er(0,s));for(let u=0;u1&&(a+=`_${K3(e.slice(0,n),r)}`),t.push(a)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let u=[];for(let p=0;p1&&p{d=ie(d,p)}),d},o=this.collectedTrainableWeights.map(u=>u.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>B(()=>{let t=[],n,r=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lAa(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let r of t)if(typeof n[r]=="string")e[r]=Aa(n[r]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[Aa(r0(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>Aa(r0(e)));{let e={};for(let t in this.metrics)e[t]=Aa(r0(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=Oc(e.optimizer_config),n=Rr(t),r;if(typeof e.loss=="string")r=Ri(e.loss);else if(Array.isArray(e.loss))r=e.loss.map(s=>Ri(s));else if(e.loss!=null){r={};for(let s in e.loss)r[s]=Ri(e.loss[s])}let a;if(Array.isArray(e.metrics))a=e.metrics.map(s=>Ri(s));else if(e.metrics!=null){a={};for(let s in e.metrics)a[s]=Ri(e.metrics[s])}this.compile({loss:r,metrics:a,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=Nn.getSaveHandlers(e);if(i.length===0)throw new V(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new V(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new V("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await Nn.encodeWeights(this.getNamedWeights(t)),r=!1,a=null,s={modelTopology:this.toJSON(a,r),format:mne,generatedBy:`TensorFlow.js tfjs-layers v${iy}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await Nn.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=Nn.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;O7(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){O7(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};ya.className="Model";ae.registerClass(ya);var K7=class extends ya{};K7.className="Functional";ae.registerClass(K7);async function Ane(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let r=Oc(n),a=Rr(r,t);if(e.weightsManifest!=null){let s=await Nn.loadWeights(e.weightsManifest,e.pathPrefix,a.weights.map(o=>o.originalName)),i={};for(let o of a.weights)i[o.originalName]=s[o.originalName];a.loadWeights(i),Me(s)}return a}async function gne(e,t){if(t==null&&(t={}),typeof e=="string"){let n=Nn.getLoadHandlers(e,t);if(n.length===0)n.push(Nn.browserHTTPRequest(e,t));else if(n.length>1)throw new V(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return yne(e,void 0,t)}async function yne(e,t,n){if(n==null&&(n={}),e.load==null)throw new V("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let r=await e.load(),a=r.modelTopology;a.model_config!=null&&(a=a.model_config);let s=n.strict==null?!0:n.strict,i=r.weightData!=null&&r.weightSpecs!=null&&s,o=Rr(Oc(a),t,i),l=r.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),r.userDefinedMetadata!=null&&o.setUserDefinedMetadata(r.userDefinedMetadata),r.weightData!=null){if(r.weightSpecs==null)throw new V("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:u,optimizerWeights:c}=xne(r.weightData,r.weightSpecs);o.loadWeights(u,s),o.optimizer!=null&&c.length>0&&await o.optimizer.setWeights(c),Me(u),Me(c.map(h=>h.tensor))}return o}function xne(e,t){let n=Nn.decodeWeights(e,t),r={},a=[];return t.forEach(s=>{s.group==="optimizer"?a.push({name:s.name,tensor:n[s.name]}):r[s.name]=n[s.name]}),{modelWeights:r,optimizerWeights:a}}var Kl=class extends ya{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:qp("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new V(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof Kl||e instanceof ya,n;if(t){if(n=e,n.outputs.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new V("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new V("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let r=_7({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(r)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new V(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=b7(this.outputs[0])}this.inboundNodes=[],new Zp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:Ci(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(r=>r.shape),outputShapes:this.outputs[0].shape})}else{let r=e.apply(this.outputs[0]);if(Array.isArray(r))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[r],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(pt(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new ya({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new Tr("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},r=!1){let a,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new V("Legacy serialization format not supported yet.");a=t}else v.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),a=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof Kl))throw new Pe(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of a){let l=Rr(o,void 0,r);r&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new V("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new V("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};Kl.className="Sequential";ae.registerClass(Kl);function wne(e){return new ya(e)}function bne(e){return new Kl(e)}function _ne(e,t){return t==null&&(t={}),gne(e,t)}function p7(e){return _7(e)}function vne(e,t){mr.registerCallbackConstructor(e,t)}var Un=class extends ae.Serializable{getConfig(){return{}}},Z7=class extends Un{apply(e,t=1){return tee(e,t)}};Z7.className="elu";ae.registerClass(Z7);var Y7=class extends Un{apply(e){return Bd(e)}};Y7.className="selu";ae.registerClass(Y7);var J7=class extends Un{apply(e){return Ur(e)}};J7.className="relu";ae.registerClass(J7);var Q7=class extends Un{apply(e){return B(()=>vl(6,Ur(e)))}};Q7.className="relu6";ae.registerClass(Q7);var ev=class extends Un{apply(e){return e}};ev.className="linear";ae.registerClass(ev);var tv=class extends Un{apply(e){return On(e)}};tv.className="sigmoid";ae.registerClass(tv);var nv=class extends Un{apply(e){return ree(e)}};nv.className="hardSigmoid";ae.registerClass(nv);var rv=class extends Un{apply(e){return bl(e)}};rv.className="softplus";ae.registerClass(rv);var av=class extends Un{apply(e){return nee(e)}};av.className="softsign";ae.registerClass(av);var sv=class extends Un{apply(e){return Al(e)}};sv.className="tanh";ae.registerClass(sv);var dy=class extends Un{apply(e,t=-1){return ic(e,t)}};dy.className="softmax";ae.registerClass(dy);var iv=class extends Un{apply(e,t=-1){return $d(e,t)}};iv.className="logSoftmax";ae.registerClass(iv);var ov=class extends Un{apply(e,t=1){return B(()=>On(e.mul(t)).mul(e))}};ov.className="swish";ae.registerClass(ov);function Qa(e){return e.getClassName()}function py(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"activation")}function es(e){if(e==null){let t={};return t.className="linear",t.config={},py(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},py(t)}else return e instanceof Un?e:py(e)}function fy(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var lv=class extends ae.Serializable{},Lc=class extends lv{constructor(e){super();fy(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return B(()=>{let t=$t([1]);return this.hasL1&&(t=ie(t,Re(P(this.l1,Bt(e))))),this.hasL2&&(t=ie(t,Re(P(this.l2,Fc(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};Lc.className="L1L2";ae.registerClass(Lc);function kne(e){return fy(e),new Lc({l1:e!=null?e.l1:null,l2:0})}function Ine(e){return fy(e),new Lc({l2:e!=null?e.l2:null,l1:0})}var uv={l1l2:"L1L2"};function ft(e){return TA(e)}function cv(e,t={}){return Sc(e,ae.SerializationMap.getMap().classNameMap,t,"regularizer")}function vt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in uv?uv[e]:e,config:{}};return cv(t)}else return e instanceof lv?e:cv(e)}var my=class extends Ze{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Be(e);let n=Ur(e);return this.maxValue!=null&&(n=Sn(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};my.className="ReLU";ae.registerClass(my);var Ay=class extends Ze{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Be(e);return Qu(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};Ay.className="LeakyReLU";ae.registerClass(Ay);var yy=class extends Ze{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=_t(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=vt(e.alphaRegularizer),this.alphaConstraint=Gt(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new V(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=pt(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let r of this.sharedAxes)t[r-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let r=1;r(Ft(t),t==="channelsFirst"?ot(e,[0,2,3,1]):e))}function hv(e,t){return B(()=>(Ft(t),t==="channelsFirst"?ot(e,[0,2,3,4,1]):e))}function Nne(e,t,n,r=1,a="valid",s,i=1){return B(()=>{if(s==null&&(s=Sr()),Ft(s),e.shape.length!==3)throw new V(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new V(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new V(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=ot(e,[0,2,1])),a==="causal")throw new Pe("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=Nd(e,t,r,a==="same"?"same":"valid","NWC",i);return n!=null&&(o=Kr(o,n)),o})}function dv(e,t,n,r=[1,1],a="valid",s,i,o=null){return B(()=>{if(s==null&&(s=Sr()),Ft(s),e.rank!==3&&e.rank!==4)throw new V(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new V(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=by(e,s);if(a==="causal")throw new Pe("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=ja.conv2d({x:l,filter:t,strides:r,pad:a==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=ot(l,[0,3,1,2])),l})}function Sne(e,t,n,r=[1,1,1],a="valid",s,i){return B(()=>{if(s==null&&(s=Sr()),Ft(s),e.rank!==4&&e.rank!==5)throw new V(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new V(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=hv(e,s);if(a==="causal")throw new Pe("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=cm(o,t,r,a==="same"?"same":"valid","NDHWC",i),n!=null&&(o=Kr(o,n)),s==="channelsFirst"&&(o=ot(o,[0,4,1,2,3])),o})}var _y=class extends Ze{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",_y.verifyArgs(t),this.rank=e,Jt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new Pe(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Zl(t.kernelSize,e,"kernelSize"),this.strides=Zl(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,nr(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Ft(this.dataFormat),this.activation=es(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=_t(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Gt(t.biasConstraint),this.biasRegularizer=vt(t.biasRegularizer),this.activityRegularizer=vt(t.activityRegularizer),this.dilationRate=Zl(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new V(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new V(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new V(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(qr("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!CA(e.kernelSize,"number",1,3))throw new V(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:Qa(this.activation),useBias:this.useBias,biasInitializer:Et(this.biasInitializer),biasRegularizer:ft(this.biasRegularizer),activityRegularizer:ft(this.activityRegularizer),biasConstraint:jt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},Wc=class extends _y{constructor(e,t){super(e,t);this.kernel=null,Wc.verifyArgs(t),this.filters=t.filters,Jt(this.filters,"filters"),this.kernelInitializer=_t(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Gt(t.kernelConstraint),this.kernelRegularizer=vt(t.kernelRegularizer)}build(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],r=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",r,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return B(()=>{e=Be(e);let n,r=this.bias==null?null:this.bias.read(),a=Y3(this.activation.getClassName());if(a!=null&&this.rank===2)n=dv(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate,a);else{if(this.rank===1)n=Nne(e,this.kernel.read(),r,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=dv(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=Sne(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new Pe("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=pt(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let a=0;a 0 but got ${JSON.stringify(e.filters)}`)}},Bc=class extends Wc{constructor(e){super(2,e);Bc.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!CA(e.kernelSize,"number",1,2))throw new V(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};Bc.className="Conv2D";ae.registerClass(Bc);var i0=class extends Wc{constructor(e){super(3,e);i0.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new V(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};i0.className="Conv3D";ae.registerClass(i0);var vy=class extends Bc{constructor(e){super(e);if(this.inputSpec=[new Qt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new V(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=pt(e),e.length!==4)throw new V("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],r=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",r,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Qt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return B(()=>{let n=Be(e);if(n.shape.length!==4)throw new V(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let r=n.shape,a=r[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=r[s],l=r[i],u=this.kernelSize[0],c=this.kernelSize[1],h=this.strides[0],d=this.strides[1],p=s0(o,h,u,this.padding),f=s0(l,d,c,this.padding),m=[a,p,f,this.filters];this.dataFormat!=="channelsLast"&&(n=ot(n,[0,2,3,1]));let A=Sd(n,this.kernel.read(),m,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(A=ot(A,[0,3,1,2])),this.bias!=null&&(A=Kr(A,this.bias.read(),this.dataFormat)),this.activation!=null&&(A=this.activation.apply(A)),A})}computeOutputShape(e){e=pt(e);let t=e.slice(),n,r,a;this.dataFormat==="channelsFirst"?(n=1,r=2,a=3):(n=3,r=1,a=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[r]=s0(t[r],o,s,this.padding),t[a]=s0(t[a],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};vy.className="Conv2DTranspose";ae.registerClass(vy);var pv=class extends Wc{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new V("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new V("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new V(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=_t(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=vt(t.depthwiseRegularizer),this.depthwiseConstraint=Gt(t.depthwiseConstraint),this.pointwiseInitializer=_t(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=vt(t.pointwiseRegularizer),this.pointwiseConstraint=Gt(t.pointwiseConstraint)}build(e){if(e=pt(e),e.length{e=Be(e);let n;if(this.rank===1)throw new Pe("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=ot(e,[0,2,3,1])),n=Tm(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=Kr(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=ot(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.pointwiseInitializer=Et(this.pointwiseInitializer),e.depthwiseRegularizer=ft(this.depthwiseRegularizer),e.pointwiseRegularizer=ft(this.pointwiseRegularizer),e.depthwiseConstraint=jt(this.depthwiseConstraint),e.pointwiseConstraint=jt(this.pointwiseConstraint),e}};pv.className="SeparableConv";var ky=class extends pv{constructor(e){super(2,e)}};ky.className="SeparableConv2D";ae.registerClass(ky);var o0=class extends Wc{constructor(e){super(1,e);o0.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!CA(e.kernelSize,"number",1,1))throw new V(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};o0.className="Conv1D";ae.registerClass(o0);var Iy=class extends Ze{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return B(()=>{if(e=Be(e),this.dataFormat==="channelsLast"){let n=zp(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return zp(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=zp(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return zp(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Iy.className="Cropping2D";ae.registerClass(Iy);var Ny=class extends Ze{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,XQ(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return B(()=>{let n=Be(e),r=n.shape;if(this.dataFormat==="channelsFirst"){n=ot(n,[0,2,3,1]);let a=this.size[0]*r[2],s=this.size[1]*r[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s]);return ot(i,[0,3,1,2])}else{let a=this.size[0]*r[1],s=this.size[1]*r[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Ny.className="UpSampling2D";ae.registerClass(Ny);function Tne(e,t,n=[1,1],r="valid",a,s){return B(()=>{a==null&&(a=Sr()),Ft(a);let i=by(e,a);if(e.rank!==4)throw new V(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new V(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=gl(i,t,n,r==="same"?"same":"valid","NHWC",s),a==="channelsFirst"&&(i=ot(i,[0,3,1,2])),i})}var Sy=class extends _y{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=_t(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Gt(e.depthwiseConstraint),this.depthwiseRegularizer=vt(e.depthwiseRegularizer)}build(e){if(e=pt(e),e.length<4)throw new V(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new V(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{e=Be(e);let n=Tne(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=Kr(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,a=Fr(t,this.kernelSize[0],this.padding,this.strides[0]),s=Fr(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],r,a,s]:[e[0],a,s,r]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Et(this.depthwiseInitializer),e.depthwiseRegularizer=ft(this.depthwiseRegularizer),e.depthwiseConstraint=jt(this.depthwiseRegularizer),e}};Sy.className="DepthwiseConv2D";ae.registerClass(Sy);function fv(e,t,n,r){if(Array.isArray(e)){if(t!=null||n!=null)throw new V("When inputs is an array, neither initialState or constants should be provided");r!=null&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(s){return s==null||Array.isArray(s)?s:[s]}return t=a(t),n=a(n),{inputs:e,initialState:t,constants:n}}function mv(e,t,n,r=!1,a,s,i=!1,o=!1){return B(()=>{let l=t.shape.length;if(l<3)throw new V(`Input should be at least 3D, but is ${l}D.`);let u=[1,0].concat(Er(2,l));if(t=ot(t,u),s!=null)throw new Pe("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a!=null&&(a=a.asType("bool").asType("float32"),a.rank===l-1&&(a=mn(a,-1)),a=ot(a,u)),r&&(t=Ln(t,0),a!=null&&(a=Ln(a,0)));let c=[],h,d=n,p=t.shape[0],f=hr(t),m;a!=null&&(m=hr(a));for(let y=0;ye(g,d));if(a==null)h=b[0],d=b[1];else{let _=B(()=>{let w=m[y],x=Pn(w).sub(w),N=b[0].mul(w).add(d[0].mul(x)),S=d.map((T,M)=>b[1][M].mul(w).add(T.mul(x)));return{output:N,newStates:S}});h=_.output,d=_.newStates}o&&c.push(h)}let A;return o&&(A=An(c,1)),[h,A,d]})}var Zr=class extends Ze{constructor(e){super(e);let t;if(e.cell==null)throw new V("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new l0({cells:e.cell}):t=e.cell,t.stateSize==null)throw new V("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Qt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return Er(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){ZA(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],r;if(this.returnSequences?r=[e[0],e[1],n]:r=[e[0],n],this.returnState){let a=[];for(let s of t)a.push([e[0],s]);return[r].concat(a)}else return r}computeMask(e,t){return B(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let r=this.states.map(a=>null);return[n].concat(r)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new V(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Qt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ma("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>$t([n,r])):this.states_=[$t([n,this.cell.stateSize])];else if(e==null)Me(this.states_),this.keptStates!=null&&(Me(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>$t([n,r])):this.states_[0]=$t([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Me(this.states_);for(let r=0;rZt(r.clone()))})}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=fv(e,n,r,this.numConstants);e=a.inputs,n=a.initialState,r=a.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Qt({shape:o.shape}));i=i.concat(this.stateSpec)}if(r!=null&&(t.constants=r,s=s.concat(r),this.numConstants=r.length),s[0]instanceof Cr){let o=[e].concat(s),l=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=l;let c=super.apply(o,t);return this.inputSpec=u,c}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;e=Be(e),a==null&&(this.stateful?a=this.states_:a=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(a.length!==s)throw new V(`RNN Layer has ${s} state(s) but was passed ${a.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:r},o=mv((d,p)=>{let f=this.cell.call([d].concat(p),i);return[f[0],f.slice(1)]},e,a,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],u=o[1],c=o[2];this.stateful&&this.resetStates(c,r);let h=this.returnSequences?u:l;return this.returnState?[h].concat(c):h})}getInitialState(e){return B(()=>{let t=$t(e.shape);return t=Re(t,[1,2]),t=Rc(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?OA(t,[1,n]):t):this.cell.stateSize>1?[OA(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===Zr.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let r=t.cell,a=Rr(r,n);return new e(Object.assign(t,{cell:a}))}};Zr.className="RNN";ae.registerClass(Zr);var $c=class extends Ze{},u0=class extends $c{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=_t(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Gt(e.kernelConstraint),this.recurrentConstraint=Gt(e.recurrentConstraint),this.biasConstraint=Gt(e.biasConstraint),this.dropout=jl([1,Ya([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=jl([1,Ya([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=pt(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let r=t.training==null?!1:t.training;0Pn(e),rate:this.dropout,training:r})),0Pn(n),rate:this.recurrentDropout,training:r}));let a,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?a=Xr(P(e,s),this.kernel.read()):a=Xr(e,this.kernel.read()),this.bias!=null&&(a=Kr(a,this.bias.read())),i!=null&&(n=P(n,i));let o=ie(a,Xr(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:Qa(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),recurrentInitializer:Et(this.recurrentInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ft(this.kernelRegularizer),recurrentRegularizer:ft(this.recurrentRegularizer),biasRegularizer:ft(this.biasRegularizer),activityRegularizer:ft(this.activityRegularizer),kernelConstraint:jt(this.kernelConstraint),recurrentConstraint:jt(this.recurrentConstraint),biasConstraint:jt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};u0.className="SimpleRNNCell";ae.registerClass(u0);var Ty=class extends Zr{constructor(e){e.cell=new u0(e),super(e)}call(e,t){return B(()=>{this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return new e(t)}};Ty.className="SimpleRNN";ae.registerClass(Ty);var c0=class extends $c{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new V("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=es(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=_t(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Gt(e.kernelConstraint),this.recurrentConstraint=Gt(e.recurrentConstraint),this.biasConstraint=Gt(e.biasConstraint),this.dropout=jl([1,Ya([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=jl([1,Ya([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=pt(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,r=e[1];e=e[0],0Pn(e),rate:this.dropout,training:n,count:3})),0Pn(r),rate:this.recurrentDropout,training:n,count:3}));let a=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Ey.className="GRU";ae.registerClass(Ey);var Vc=class extends $c{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=es(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=_t(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=vt(e.kernelRegularizer),this.recurrentRegularizer=vt(e.recurrentRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.kernelConstraint=Gt(e.kernelConstraint),this.recurrentConstraint=Gt(e.recurrentConstraint),this.biasConstraint=Gt(e.biasConstraint),this.dropout=jl([1,Ya([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=jl([1,Ya([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=pt(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let r;if(this.useBias){if(this.unitForgetBias){let a=this.biasInitializer,s=this.units;r=new(t=class extends fr{apply(i,o){let l=a.apply([s]),u=new Lp().apply([s]),c=a.apply([s*2]);return o7(o7(l,u),c)}},t.className="CustomInit",t)}else r=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,r,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new V(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let r=e[1],a=e[2];e=e[0],0Pn(e),rate:this.dropout,training:n,count:4})),0Pn(r),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,u,c;0{this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};Cy.className="LSTM";ae.registerClass(Cy);var l0=class extends $c{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return B(()=>{e=e;let n=e.slice(1),r=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?r.push(n.splice(0,i.stateSize.length)):r.push(n.splice(0,1));r.reverse();let a=[],s;for(let i=0;i{Mi(`RNNCell_${r}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=r=>({className:r.getClassName(),config:r.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let r=[];for(let a of t.cells)r.push(Rr(a,n));return new e({cells:r})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return YA(e)}setWeights(e){let t=[];for(let n of this.cells){let r=n.weights.length,a=e.splice(r);for(let s=0;su7(t(),n),i=()=>Mc(s,t,r);return!a||a<=1?Zt(i().clone()):Array(a).fill(void 0).map(i).map(o=>Zt(o.clone()))}var Ene=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a{if(this.cell.dropoutMask!=null&&(Me(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Me(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new V("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return B(()=>{let{stateSize:t}=this.cell,n=e.shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)],s=$t(a);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ma("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)];if(n[0]==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>$t(a)):this.states_=[$t(a)];else if(e==null)Me(this.states_),this.keptStates!=null&&(Me(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>$t(a)):this.states_[0]=$t(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Me(this.states_);for(let s=0;sZt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:r,padding:a,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],u=e[o?4:3],c=Fr(l,r[0],a,s[0],i[0]),h=Fr(u,r[1],a,s[1],i[1]);return[...e.slice(0,2),...o?[n,c,h]:[c,h,n]]}};Av.className="ConvRNN2D";var h0=class extends Vc{constructor(e){let{filters:t,kernelSize:n,strides:r,padding:a,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Jt(this.filters,"filters"),this.kernelSize=Zl(n,2,"kernelSize"),this.kernelSize.forEach(o=>Jt(o,"kernelSize")),this.strides=Zl(r||1,2,"strides"),this.strides.forEach(o=>Jt(o,"strides")),this.padding=a||"valid",nr(this.padding),this.dataFormat=s||"channelsLast",Ft(this.dataFormat),this.dilationRate=Zl(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Jt(o,"dilationRate"))}build(e){var t;e=pt(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[n]}`);let r=e[n],a=4,s=this.kernelSize.concat([r,this.filters*a]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*a]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,u=this.filters;o=new(t=class extends fr{apply(c,h){let d=l.apply([u]),p=Vr([u]),f=l.apply([u*2]);return PA([d,p,f])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*a],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return B(()=>{if(e.length!==3)throw new V(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,r=e[0],a=e[1],s=e[2],i=4;0Pn(r),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Y,se,te)=>!se||!se[te]?Y:P(se[te],Y),u=l(r,o,0),c=l(r,o,1),h=l(r,o,2),d=l(r,o,3);0Pn(a),rate:this.recurrentDropout,training:n,count:i}));let p=this.recurrentDropoutMask,f=l(a,p,0),m=l(a,p,1),A=l(a,p,2),y=l(a,p,3),g=3,[b,_,w,x]=Ut(this.kernel.read(),i,g),[N,S,T,M]=this.useBias?Ut(this.bias.read(),i):[null,null,null,null];u=this.inputConv(u,b,N,this.padding),c=this.inputConv(c,_,S,this.padding),h=this.inputConv(h,w,T,this.padding),d=this.inputConv(d,x,M,this.padding);let[D,z,W,U]=Ut(this.recurrentKernel.read(),i,g);f=this.recurrentConv(f,D),m=this.recurrentConv(m,z),A=this.recurrentConv(A,W),y=this.recurrentConv(y,U);let H=this.recurrentActivation.apply(ie(u,f)),X=this.recurrentActivation.apply(ie(c,m)),j=ie(P(X,s),P(H,this.activation.apply(ie(h,A)))),ee=P(this.recurrentActivation.apply(ie(d,y)),this.activation.apply(j));return[ee,ee,j]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=Ene(e,["units"]),r={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,r)}inputConv(e,t,n,r){let a=ua(e,t,this.strides,r||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?Kr(a,n,this.dataFormat):a}recurrentConv(e,t){return ua(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};h0.className="ConvLSTM2DCell";ae.registerClass(h0);var Ry=class extends Av{constructor(e){let t=new h0(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};Ry.className="ConvLSTM2D";ae.registerClass(Ry);var d0=class extends Ze{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let r=0;r{this.invokeCallHook(e,t);let n=Be(e);if(0u7(n,this.rate,a,this.seed),()=>n,r)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};d0.className="Dropout";ae.registerClass(d0);var Fy=class extends d0{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};Fy.className="SpatialDropout1D";ae.registerClass(Fy);var My=class extends Ze{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Jt(this.units,"units"),this.activation=es(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=_t(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=_t(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Gt(e.kernelConstraint),this.biasConstraint=Gt(e.biasConstraint),this.kernelRegularizer=vt(e.kernelRegularizer),this.biasRegularizer=vt(e.biasRegularizer),this.activityRegularizer=vt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=pt(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=pt(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e),r=Y3(this.activation.getClassName()),a;return r!=null?a=Xr(n,this.kernel.read(),r,this.bias?this.bias.read():null):(a=Xr(n,this.kernel.read()),this.bias!=null&&(a=Kr(a,this.bias.read())),this.activation!=null&&(a=this.activation.apply(a))),a})}getConfig(){let e={units:this.units,activation:Qa(this.activation),useBias:this.useBias,kernelInitializer:Et(this.kernelInitializer),biasInitializer:Et(this.biasInitializer),kernelRegularizer:ft(this.kernelRegularizer),biasRegularizer:ft(this.biasRegularizer),activityRegularizer:ft(this.activityRegularizer),kernelConstraint:jt(this.kernelConstraint),biasConstraint:jt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};My.className="Dense";ae.registerClass(My);var $y=class extends Ze{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=pt(e);for(let t of e.slice(1))if(t==null)throw new V(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],Za(e,1)]}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let r=[0];for(let a=2;a{this.invokeCallHook(e,t);let n=Be(e);return this.activation.apply(n)})}getConfig(){let e={activation:Qa(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};Dy.className="Activation";ae.registerClass(Dy);var Oy=class extends Ze{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return B(()=>(e=Be(e),JQ(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};Oy.className="RepeatVector";ae.registerClass(Oy);var zy=class extends Ze{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Be(e),r=n.shape,a=r.slice(0,1).concat(this.fixUnknownDimension(r.slice(1),this.targetShape));return n.reshape(a)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};zy.className="Reshape";ae.registerClass(zy);var Py=class extends Ze{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=Er(1,e.dims.length+1);if(!v.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Qt({ndim:this.dims.length+1})]}computeOutputShape(e){e=pt(e);let t=e.slice();return this.dims.forEach((n,r)=>{t[r+1]=e[n]}),t}call(e,t){return ot(Be(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};Py.className="Permute";ae.registerClass(Py);var Ly=class extends Ze{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Be(e),r=-1;return ju(xi(n,this.maskValue),r)}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e),r=-1,a=!0,s=ju(xi(n,this.maskValue),r,a);return n.mul(s.asType(n.dtype))})}};Ly.className="Masking";ae.registerClass(Ly);var Wy=class extends Ze{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(yt(e.inputLength))}this.inputDim=e.inputDim,Jt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Jt(this.outputDim,"outputDim"),this.embeddingsInitializer=_t(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=vt(e.embeddingsRegularizer),this.activityRegularizer=vt(e.activityRegularizer),this.embeddingsConstraint=Gt(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return B(()=>this.maskZero?(e=Be(e),xi(e,qe(e))):null)}computeOutputShape(e){if(e=pt(e),this.inputLength==null)return[...e,this.outputDim];let t=yt(this.inputLength);if(t.length!==e.length-1)throw new V(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let r=0;r{this.invokeCallHook(e,t);let n=Be(e);return n.dtype!=="int32"&&(n=Cc(n,"int32")),l7(this.embeddings.read(),n.as1D()).reshape(pt(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Et(this.embeddingsInitializer),embeddingsRegularizer:ft(this.embeddingsRegularizer),activityRegularizer:ft(this.activityRegularizer),embeddingsConstraint:jt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};Wy.className="Embedding";ae.registerClass(Wy);var Pi=class extends Ze{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new Pe}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new V(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let a=1;aa.length);e.indexOf(null)===-1&&Ka(r).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return B(()=>{if(e=e,this.reshapeRequired){let n=[],r=e.map(a=>a.rank);if(r.indexOf(null)===-1){let a=Ya(r);for(let s of e){let i=s.rank;for(let o=0;o1){let u=Er(1,l).concat([0]);n.push(ot(o,u)),a=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(a){if(i==null){let o=s.shape,l=o.length,u=o[l-1],c=[u].concat(o.slice(0,o.length-1));s=ot(s.reshape([-1,u]),[1,0]).reshape(c)}else if(i>1){let o=[i-1].concat(Er(0,i-1));s=ot(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let r=1;r{if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an Array");if(!Array.isArray(e))throw new V("`inputs` should be an Array");if(t.length!==e.length)throw new V(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(r=>r==null))return null;t=t.map(r=>r==null?r:mn(r,0));let n=t[0];for(let r=1;r{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new V("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return B(()=>PA(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new V("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis;for(let a of t.slice(1)){if(n[r]==null||a[r]==null){n[r]=null;break}n[r]+=a[r]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new V("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new V(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return B(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let r=[];for(let s=0;s3||t.shape.length>3)throw new Pe("batchDot is not implemented for tensors of 4D or higher rank yet");if(v.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),v.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new Pe("batchDot is not implemented for complex64-type Tensors yet.");let r=e.shape.length,a=t.shape.length;n==null&&(n=[r-1,a-2]);let s=n;return B(()=>{let i;if(r>a){i=r-a;let l=[];for(let u=0;ur){i=a-r;let l=[];for(let u=0;u0){let l;r>a?l=r+a-3:l=r-1;let u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new Pe("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new V(`Dimension incompatibility: ${t[r[0]]} !== ${n[r[1]]}`)}mergeFunction(e){if(e.length!==2)throw new V(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],r;return Array.isArray(this.axes)?r=this.axes.map((a,s)=>Uc(a,e[s].shape.length)):r=[Uc(this.axes,t.shape.length),Uc(this.axes,n.shape.length)],this.normalize&&(t=Yp(t,r[0]),n=Yp(n,r[1])),Cne(t,n,r)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[Uc(this.axes,e.length),Uc(this.axes,t.length)],n}computeOutputShape(e){v.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new Pe("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);let a=t.concat(n);return a.length===1&&a.push(1),a}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};qy.className="Dot";ae.registerClass(qy);var Xy=class extends Ze{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e);return Mc(()=>Pp(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Xy.className="GaussianNoise";ae.registerClass(Xy);var Ky=class extends Ze{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Be(e);return this.rate>0&&this.rate<1?Mc(()=>{let r=Math.sqrt(this.rate/(1-this.rate));return n.mul(Pp(n.shape,1,r))},()=>n,t.training||!1):n})}};Ky.className="GaussianDropout";ae.registerClass(Ky);var Zy=class extends Ze{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Be(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return Mc(()=>{let r=Be(e),a=1.6732632423543772,s=1.0507009873554805,i=-a*s,o=Ua(kl(n),this.rate);o=Cc(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,u=-l*i*this.rate;return r.mul(o).add(o.add(-1).mul(i)).mul(l).add(u)},()=>Be(e),t.training||!1)}return e})}};Zy.className="AlphaDropout";ae.registerClass(Zy);function Hc(e,t,n,r,a,s=.001){let i;if(e.rank===2)i=ox(e,t,n,r,a,s);else if(e.rank===3)i=lx(e,t,n,r,a,s);else if(e.rank===4)i=ux(e,t,n,r,a,s);else throw new Pe(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function Rne(e,t,n,r,a=.001){return B(()=>{let s=Od(e,r),i=s.mean,o=s.variance;return[Hc(e,i,o,n,t,a),i,o]})}function Fne(e,t,n,r,a=.001){return B(()=>{let s=Od(e,r),i=s.mean,o=s.variance,l=[];for(let p of Er(0,e.rank))r.indexOf(p)!==-1?l.push(1):l.push(e.shape[p]);let u=i.reshape(l),c=o.reshape(l),h=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[Hc(e,u,c,d,h,a),i,o]})}function Mne(e,t,n,r,a=.001){return v.arraysEqual(r.slice().sort(),Er(0,e.rank-1))?Rne(e,t,n,r,a):Fne(e,t,n,r,a)}var Yy=class extends Ze{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=_t(e.betaInitializer||"zeros"),this.gammaInitializer=_t(e.gammaInitializer||"ones"),this.movingMeanInitializer=_t(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=_t(e.movingVarianceInitializer||"ones"),this.betaConstraint=Gt(e.betaConstraint),this.gammaConstraint=Gt(e.gammaConstraint),this.betaRegularizer=vt(e.betaRegularizer),this.gammaRegularizer=vt(e.gammaRegularizer)}build(e){e=pt(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new V(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Qt({ndim:e.length,axes:{[t]:n}})];let r=[n];this.scale&&(this.gamma=this.addWeight("gamma",r,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",r,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",r,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",r,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training,r=Be(e),a=r.shape,s=a.length,i=Er(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=Ci(1,s);l[o]=a[o];let u=i.slice();u.sort();let c=!v.arraysEqual(u,Er(0,s).slice(0,s-1)),h=()=>{if(c){let A=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),g=this.center?this.beta.read().reshape(l):null,b=this.scale?this.gamma.read().reshape(l):null;return Hc(r,A,y,g,b,this.epsilon)}else return Hc(r,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return h();let[d,p,f]=Mne(r,this.gamma.read(),this.beta.read(),i,this.epsilon),m=(A,y,g)=>{B(()=>{let b=1-g,_=A.read(),w=_.sub(y).mul(b);A.write(_.sub(w))})};return(()=>{m(this.movingMean,p,this.momentum),m(this.movingVariance,f,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Et(this.betaInitializer),gammaInitializer:Et(this.gammaInitializer),movingMeanInitializer:Et(this.movingMeanInitializer),movingVarianceInitializer:Et(this.movingVarianceInitializer),betaRegularizer:ft(this.betaRegularizer),gammaRegularizer:ft(this.gammaRegularizer),betaConstraint:jt(this.betaConstraint),gammaConstraint:jt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Yy.className="BatchNormalization";ae.registerClass(Yy);var Jy=class extends Ze{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=_t(e.betaInitializer||"zeros"),this.gammaInitializer=_t(e.gammaInitializer||"ones"),this.betaRegularizer=vt(e.betaRegularizer),this.gammaRegularizer=vt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=pt(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let a=0;a=t)throw new Error(`Invalid axis: ${a}`);if(this.axis.length!==Ka(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(a=>e[a]),r=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,r):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,r):this.beta=null,this.built=!0}call(e,t){let n=Be(e),r=n.shape,a=r.length;return B(()=>{let s=!0,{mean:i,variance:o}=Od(n,this.axis,s),l=Ci(1,a);for(let f of this.axis)l[f]=r[f];let u=f=>f!=null&&f.shape.length!==a&&this.axis!==[a-1]?f.reshape(l):f,c=u(this.gamma.read()),h=u(this.beta.read()),d=[],p=[];for(let f=0;f{if(e.rank!==4)throw new V(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new V("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=Sr()),n!=="channelsLast"&&n!=="channelsFirst")throw new V(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let r;return n==="channelsFirst"?r=[[0,0],[0,0],t[0],t[1]]:r=[[0,0],t[0],t[1],[0,0]],ca(e,r)})}var Qy=class extends Ze{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?Sr():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new V(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new V(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new V(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Qt({ndim:4})]}computeOutputShape(e){e=pt(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return B(()=>$ne(Be(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};Qy.className="ZeroPadding2D";ae.registerClass(Qy);function p0(e,t,n,r,a,s){return B(()=>{Ft(a),t7(s),nr(r),n==null&&(n=[1,1]),r==null&&(r="valid"),a==null&&(a=Sr()),s==null&&(s="max"),e=by(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=tc(e,t,n,o):i=Xu(e,t,n,o),a==="channelsFirst"&&(i=ot(i,[0,3,1,2])),i})}function yv(e,t,n,r,a,s){return B(()=>{Ft(a),t7(s),nr(r),n==null&&(n=[1,1,1]),r==null&&(r="valid"),a==null&&(a=Sr()),s==null&&(s="max"),e=hv(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=bm(e,t,n,o):i=om(e,t,n,o),a==="channelsFirst"&&(i=ot(i,[0,4,1,2,3])),i})}var gv=class extends Ze{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new V(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Jt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new V(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,nr(this.padding),this.inputSpec=[new Qt({ndim:3})]}computeOutputShape(e){e=pt(e);let t=Fr(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return B(()=>{this.invokeCallHook(e,t),e=Rc(Be(e),2);let n=this.poolingFunction(Be(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return Ha(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},eg=class extends gv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"max")}};eg.className="MaxPooling1D";ae.registerClass(eg);var tg=class extends gv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"avg")}};tg.className="AveragePooling1D";ae.registerClass(tg);var xv=class extends Ze{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new V(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),nr(this.padding),this.inputSpec=[new Qt({ndim:4})]}computeOutputShape(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Fr(t,this.poolSize[0],this.padding,this.strides[0]),n=Fr(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Be(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},ng=class extends xv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"max")}};ng.className="MaxPooling2D";ae.registerClass(ng);var rg=class extends xv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),p0(e,t,n,r,a,"avg")}};rg.className="AveragePooling2D";ae.registerClass(rg);var wv=class extends Ze{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new V(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Jt(this.poolSize,"poolSize"),Jt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),nr(this.padding),this.inputSpec=[new Qt({ndim:5})]}computeOutputShape(e){e=pt(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Fr(t,this.poolSize[0],this.padding,this.strides[0]),n=Fr(n,this.poolSize[1],this.padding,this.strides[1]),r=Fr(r,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Be(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},ag=class extends wv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),yv(e,t,n,r,a,"max")}};ag.className="MaxPooling3D";ae.registerClass(ag);var sg=class extends wv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Ft(a),nr(r),yv(e,t,n,r,a,"avg")}};sg.className="AveragePooling3D";ae.registerClass(sg);var bv=class extends Ze{constructor(e){super(e);this.inputSpec=[new Qt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new Pe}},ig=class extends bv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Be(e);return Tt(n,1)})}};ig.className="GlobalAveragePooling1D";ae.registerClass(ig);var og=class extends bv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Be(e);return Qn(n,1)})}};og.className="GlobalMaxPooling1D";ae.registerClass(og);var _v=class extends Ze{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Ft(this.dataFormat),this.inputSpec=[new Qt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new Pe}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},lg=class extends _v{call(e,t){return B(()=>{let n=Be(e);return this.dataFormat==="channelsLast"?Tt(n,[1,2]):Tt(n,[2,3])})}};lg.className="GlobalAveragePooling2D";ae.registerClass(lg);var ug=class extends _v{call(e,t){return B(()=>{let n=Be(e);return this.dataFormat==="channelsLast"?Qn(n,[1,2]):Qn(n,[2,3])})}};ug.className="GlobalMaxPooling2D";ae.registerClass(ug);var vv=class extends Ze{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let r=t.layer,a=Rr(r,n);delete t.layer;let s={layer:a};return Object.assign(s,t),new e(s)}},cg=class extends vv{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=pt(e),e.length<3)throw new V(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=pt(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))}call(e,t){return B(()=>(e=Be(e),mv((n,r)=>[Be(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};cg.className="TimeDistributed";ae.registerClass(cg);function Dne(e){Fi(qQ,"BidirectionalMergeMode",e)}var One="concat",hg=class extends vv{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Rr(n),t.goBackwards=t.goBackwards!==!0;let r={};if(r.className=e.layer.getClassName(),r.config=t,this.backwardLayer=Rr(r),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?One:e.mergeMode,Dne(this.mergeMode),e.weights)throw new Pe("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,r,a;return this.returnState&&(a=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,r=[n]):this.mergeMode==null?r=[n,n.slice()]:r=[n],this.returnState?this.mergeMode==null?r.concat(a).concat(a.slice()):[n].concat(a).concat(a.slice()):Fn(r)}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=fv(e,n,r,this.numConstants);if(e=a.inputs,n=a.initialState,r=a.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&r==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new V("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let u=n.map(c=>new Qt({shape:c.shape}));this.forwardLayer.stateSpec=u.slice(0,l/2),this.backwardLayer.stateSpec=u.slice(l/2),i.push(...u)}if(r!=null)throw new Pe("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof Cr;for(let l of s)if(l instanceof Cr!==o)throw new V("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),u=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=u;let h=super.apply(l,t);return this.inputSpec=c,h}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t.initialState,r,a;if(n==null)r=this.forwardLayer.call(e,t),a=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);r=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),a=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(r)&&(s=r.slice(1).concat(a.slice(1))),r=r[0],a=a[0]),this.returnSequences&&(a=Ln(a,1));let i;return this.mergeMode==="concat"?i=PA([r,a]):this.mergeMode==="sum"?i=ie(r,a):this.mergeMode==="ave"?i=P(.5,ie(r,a)):this.mergeMode==="mul"?i=P(r,a):this.mergeMode==null&&(i=[r,a]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Mi(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Mi(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let r=this.forwardLayer.states.map(a=>null);return Array.isArray(n)?n.concat(r).concat(r):[n].concat(r).concat(r)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Rr(t.layer);if(delete t.layer,t.numConstants!=null)throw new Pe("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let r=t;return r.layer=n,new e(r)}};hg.className="Bidirectional";ae.registerClass(hg);function uee(e){return new Gl(e)}function cee(e){return new gy(e)}function hee(e){return new my(e)}function dee(e){return new Ay(e)}function pee(e){return new yy(e)}function fee(e){return new wy(e)}function mee(e){return new xy(e)}function Aee(e){return new o0(e)}function yee(e){return new Bc(e)}function gee(e){return new vy(e)}function xee(e){return new i0(e)}function wee(e){return new ky(e)}function bee(e){return new Iy(e)}function _ee(e){return new Ny(e)}function vee(e){return new Sy(e)}function kee(e){return new Dy(e)}function Iee(e){return new My(e)}function Nee(e){return new d0(e)}function See(e){return new Fy(e)}function Tee(e){return new $y(e)}function Eee(e){return new Oy(e)}function Cee(e){return new zy(e)}function Ree(e){return new Py(e)}function Fee(e){return new Wy(e)}function Mee(e){return new By(e)}function $ee(e){return new Uy(e)}function Dee(e){return new Gy(e)}function Oee(e){return new Hy(e)}function zee(e){return new jy(e)}function Pee(e){return new Vy(e)}function Lee(e){return new qy(e)}function Wee(e){return new Yy(e)}function Bee(e){return new Jy(e)}function Vee(e){return new Qy(e)}function qA(e){return new tg(e)}function Uee(e){return qA(e)}function Hee(e){return qA(e)}function XA(e){return new rg(e)}function jee(e){return XA(e)}function Gee(e){return XA(e)}function KA(e){return new sg(e)}function qee(e){return KA(e)}function Xee(e){return KA(e)}function Kee(e){return new ig(e)}function Zee(e){return new lg(e)}function f7(e){return new og(e)}function m7(e){return new ug(e)}function A7(e){return new eg(e)}function y7(e){return new ng(e)}function Yee(e){return new ag(e)}function Jee(e){return new Ey(e)}function Qee(e){return new c0(e)}function ete(e){return new Cy(e)}function tte(e){return new Vc(e)}function nte(e){return new Ty(e)}function rte(e){return new u0(e)}function ate(e){return new Ry(e)}function ste(e){return new h0(e)}function ite(e){return new Zr(e)}function ote(e){return new l0(e)}function lte(e){return new hg(e)}function ute(e){return new cg(e)}var cte=f7,hte=m7,dte=A7,pte=y7;function fte(e){return new Xy(e)}function mte(e){return new Ky(e)}function Ate(e){return new Zy(e)}function yte(e){return new Ly(e)}var kv={};We(kv,{MAPE:()=>qne,MSE:()=>Zne,binaryAccuracy:()=>zne,binaryCrossentropy:()=>Pne,categoricalAccuracy:()=>Wne,categoricalCrossentropy:()=>Bne,cosineProximity:()=>Hne,mape:()=>Xne,meanAbsoluteError:()=>jne,meanAbsolutePercentageError:()=>Gne,meanSquaredError:()=>Kne,mse:()=>Yne,precision:()=>Vne,recall:()=>Une,sparseCategoricalAccuracy:()=>Lne});function zne(e,t){return ty(e,t)}function Pne(e,t){return F7(e,t)}function Lne(e,t){return M7(e,t)}function Wne(e,t){return ny(e,t)}function Bne(e,t){return ry(e,t)}function Vne(e,t){return R7(e,t)}function Une(e,t){return Ote(e,t)}function Hne(e,t){return QA(e,t)}function jne(e,t){return Jp(e,t)}function Gne(e,t){return Xl(e,t)}function qne(e,t){return Xl(e,t)}function Xne(e,t){return Xl(e,t)}function Kne(e,t){return Di(e,t)}function Zne(e,t){return Di(e,t)}function Yne(e,t){return Di(e,t)}var Iv={};We(Iv,{modelFromJSON:()=>Ane});var Nv={};We(Nv,{l1:()=>Qne,l1l2:()=>Jne,l2:()=>ere});function Jne(e){return new Lc(e)}function Qne(e){return kne(e)}function ere(e){return Ine(e)}var Sv=class extends ql{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof ya))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function f0(e,t){return et}var Ev=class extends Sv{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new Pe("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=f0:this.mode==="max"?this.monitorFunc=Tv:this.monitor.indexOf("acc")!==-1?this.monitorFunc=Tv:this.monitorFunc=f0,this.monitorFunc===f0&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===f0?Infinity:-Infinity}async onEpochEnd(e,t){await Ja(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function tre(e){return new Ev(e)}var nre={earlyStopping:tre},Mr;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Mr||(Mr={}));var Cv;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(Cv||(Cv={}));var dg={};function rre(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};dg[e]=n}function Rv(e){return dg[e]}function are(e){delete dg[e]}function k(e,t,n,r,a){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return $n(t.inputNames[s.inputIndexStart],n,r,a);if(s.type==="tensors")return t.inputNames.slice(o,l).map(h=>$n(h,n,r,a));let u=$n(t.inputNames.slice(o)[0],n,r,a),c=u.dataSync();return s.type==="number"?c[0]:v.toNestedArray(u.shape,c)}let i=t.attrParams[e];return i&&i.value}function $n(e,t,n,r){let[a,s]=Hn(e);if(r!=null){let o=r.getHashTableHandleByName(a);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[m0(a,o)]);return i!==void 0?t[m0(a,i)][s]:void 0}function sre(e,t,n){return t[m0(e,n.currentContextId)]}function ga(e,t){let[n,r]=Hn(e);return[m0(n,t&&t.currentContextId),r]}function m0(e,t){return t?`${e}-${t}`:e}function Hn(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function A0(e,t,n){let r=k("pad",e,t,n);if(r==="explicit"){r=k("explicitPaddings",e,t,n);let a=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)a[s][0]=r[s*2],a[s][1]=r[s*2+1];return a}return r}function xa(e){return e.kept?e:zr(e)}var Fv={};We(Fv,{json:()=>ire});var ire=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Mv={};We(Mv,{json:()=>ore});var ore=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],$v={};We($v,{json:()=>lre});var lre=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],Dv={};We(Dv,{json:()=>ure});var ure=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],Ov={};We(Ov,{json:()=>cre});var cre=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],zv={};We(zv,{json:()=>hre});var hre=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Pv={};We(Pv,{json:()=>dre});var dre=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],Lv={};We(Lv,{json:()=>pre});var pre=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],Wv={};We(Wv,{json:()=>fre});var fre=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]}],Bv={};We(Bv,{json:()=>mre});var mre=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],Vv={};We(Vv,{json:()=>Are});var Are=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Uv={};We(Uv,{json:()=>yre});var yre=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Hv={};We(Hv,{json:()=>gre});var gre=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],jv={};We(jv,{json:()=>xre});var xre=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],Gv={};We(Gv,{json:()=>wre});var wre=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],qv={};We(qv,{json:()=>bre});var bre=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],Xv={};We(Xv,{json:()=>_re});var _re=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],Zv=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[Fv,Mv,$v,Dv,Ov,zv,Pv,Vv,Bv,Lv,Uv,Hv,jv,Gv,qv,Xv,Wv],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,r)=>(n[r.tfOpName]=r,n),{})}transformGraph(e,t={}){let n=e.node,r=[],a=[],s=[],i=n.reduce((f,m)=>(f[m.name]=this.mapNode(m),m.op.startsWith("Placeholder")?r.push(f[m.name]):m.op==="Const"?a.push(f[m.name]):(m.input==null||m.input.length===0)&&s.push(f[m.name]),f),{}),o=[],l=[],u={},c={};t!=null&&(u=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));let h=Object.keys(i);h.forEach(f=>{let m=i[f];m.inputNames.forEach(A=>{let[y]=ga(A);m.inputs.push(i[y]),i[y].children.push(m)})}),Object.keys(c).length===0?h.forEach(f=>{let m=i[f];m.children.length===0&&l.push(m)}):Object.keys(c).forEach(f=>{let[m]=ga(f),A=i[m];A!=null&&(A.signatureKey=c[f],l.push(A))}),Object.keys(u).length>0?Object.keys(u).forEach(f=>{let[m]=ga(f),A=i[m];A&&(A.signatureKey=u[f],o.push(A))}):o=r;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((f,m)=>(f[m.signature.name]=this.mapFunction(m),f),{}));let p={nodes:i,inputs:o,outputs:l,weights:a,placeholders:r,signature:t,functions:d};return s.length>0&&(p.initNodes=s),p}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=Rv(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(r=>r.startsWith("^")?r.substr(1):r),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((r,a)=>(r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((r,a)=>{let s=a.type,i;switch(a.type){case"string":i=pg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=pg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":i=bg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=bg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":i=mg(e.attr,a.tfName,a.defaultValue||0),i===void 0&&!!a.tfDeprecatedName&&(i=mg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":i=wg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=wg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":i=fg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=fg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":i=vg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=vg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":i=xg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=xg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":i=_g(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=_g(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":i=yg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=yg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":i=gg(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=gg(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":i=Kv(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Kv(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${a.type} for op: ${e.op}`)}return r[a.name]={value:i,type:s},r},{})),n}mapFunction(e){let t=e.nodeDef,n=[],r=[],a={};t!=null&&(a=t.reduce((u,c)=>(u[c.name]=this.mapNode(c),c.op==="Const"&&r.push(u[c.name]),u),{}));let s=[],i=[];e.signature.inputArg.forEach(u=>{let[c]=ga(u.name),h={name:c,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:Ag(u.type),type:"dtype"}},children:[]};h.signatureKey=u.name,s.push(h),a[c]=h}),Object.keys(a).forEach(u=>{let c=a[u];c.inputNames.forEach(h=>{let[d]=ga(h);c.inputs.push(a[d]),a[d].children.push(c)})});let o=e.ret;e.signature.outputArg.forEach(u=>{let[c,h]=ga(o[u.name]),d=a[c];d!=null&&(d.defaultOutput=h,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:a,inputs:s,outputs:i,weights:r,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function vre(e){let t=J().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function Yv(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):vre(e);return t?n:n.toLowerCase()}function pg(e,t,n,r=!1){let a=e[t];return a!=null?Yv(a.s,r):n}function fg(e,t,n){let r=e[t];return r?r.b:n}function mg(e,t,n){let r=e[t]||{},a=r.i!=null?r.i:r.f!=null?r.f:n;return typeof a=="number"?a:parseInt(a,10)}function Ag(e){switch(typeof e=="string"&&(e=Mr[e]),e){case Mr.DT_FLOAT:return"float32";case Mr.DT_INT32:case Mr.DT_INT64:case Mr.DT_INT8:case Mr.DT_UINT8:return"int32";case Mr.DT_BOOL:return"bool";case Mr.DT_DOUBLE:return"float32";case Mr.DT_STRING:return"string";default:return null}}function Kv(e,t,n){let r=e[t];return r&&r.func?r.func.name:n}function yg(e,t,n){let r=e[t];return r&&r.type?Ag(r.type):n}function gg(e,t,n){let r=e[t];return r&&r.list&&r.list.type?r.list.type.map(a=>Ag(a)):n}function Jv(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function xg(e,t,n){let r=e[t];return r&&r.shape?Jv(r.shape):n}function wg(e,t,n){let r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map(a=>typeof a=="number"?a:parseInt(a,10)):n}function bg(e,t,n,r=!1){let a=e[t];return a&&a.list&&a.list.s?a.list.s.map(s=>Yv(s,r)):n}function _g(e,t,n){let r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map(a=>Jv(a)):n}function vg(e,t,n){let r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var kre=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(r=>this.getInput(r)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((r,a)=>(r[a]=this.getAttr(a),r),{}))}getInput(e){return $n(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return $n(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return mg(this.node.rawAttrs,e,t);if(n.s!=null)return pg(this.node.rawAttrs,e,t);if(n.b!=null)return fg(this.node.rawAttrs,e,t);if(n.shape!=null)return xg(this.node.rawAttrs,e,t);if(n.type!=null)return yg(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return wg(this.node.rawAttrs,e,t);if(n.list.s!=null)return bg(this.node.rawAttrs,e,t);if(n.list.shape!=null)return _g(this.node.rawAttrs,e,t);if(n.list.b!=null)return vg(this.node.rawAttrs,e,t);if(n.list.type!=null)return gg(this.node.rawAttrs,e,t)}return t}},Ire=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[ie(k("a",e,t,n),k("b",e,t,n))];case"AddN":return[La(k("tensors",e,t,n))];case"FloorMod":case"Mod":return[vm(k("a",e,t,n),k("b",e,t,n))];case"Mul":return[P(k("a",e,t,n),k("b",e,t,n))];case"RealDiv":case"Div":return[be(k("a",e,t,n),k("b",e,t,n))];case"DivNoNan":return[pm(k("a",e,t,n),k("b",e,t,n))];case"FloorDiv":return[vd(k("a",e,t,n),k("b",e,t,n))];case"Sub":return[we(k("a",e,t,n),k("b",e,t,n))];case"Minimum":return[vl(k("a",e,t,n),k("b",e,t,n))];case"Maximum":return[Br(k("a",e,t,n),k("b",e,t,n))];case"Pow":return[ha(k("a",e,t,n),k("b",e,t,n))];case"SquaredDifference":return[qd(k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Nre=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[Bt(k("x",e,t,n))];case"Acos":return[Yf(k("x",e,t,n))];case"Acosh":return[Jf(k("x",e,t,n))];case"Asin":return[em(k("x",e,t,n))];case"Asinh":return[tm(k("x",e,t,n))];case"Atan":return[nm(k("x",e,t,n))];case"Atan2":return[rm(k("x",e,t,n),k("y",e,t,n))];case"Atanh":return[am(k("x",e,t,n))];case"Ceil":return[lm(k("x",e,t,n))];case"Complex":return[Da(k("real",e,t,n),k("imag",e,t,n))];case"Cos":return[Yu(k("x",e,t,n))];case"Cosh":return[Td(k("x",e,t,n))];case"Elu":return[xl(k("x",e,t,n))];case"Erf":return[fm(k("x",e,t,n))];case"Exp":return[Jn(k("x",e,t,n))];case"Expm1":return[mm(k("x",e,t,n))];case"Floor":return[wl(k("x",e,t,n))];case"Log":return[zn(k("x",e,t,n))];case"Log1p":return[Fd(k("x",e,t,n))];case"Imag":return[Cd(k("x",e,t,n))];case"Neg":return[St(k("x",e,t,n))];case"Reciprocal":return[Nm(k("x",e,t,n))];case"Real":return[ac(k("x",e,t,n))];case"Relu":return[Ur(k("x",e,t,n))];case"Round":return[Sm(k("x",e,t,n))];case"Selu":return[Bd(k("x",e,t,n))];case"Sigmoid":return[On(k("x",e,t,n))];case"Sin":return[Vd(k("x",e,t,n))];case"Sign":return[Em(k("x",e,t,n))];case"Sinh":return[Ud(k("x",e,t,n))];case"Softplus":return[bl(k("x",e,t,n))];case"Sqrt":return[an(k("x",e,t,n))];case"Square":return[ht(k("x",e,t,n))];case"Tanh":return[Al(k("x",e,t,n))];case"Tan":return[Fm(k("x",e,t,n))];case"ClipByValue":return[Sn(k("x",e,t,n),k("clipValueMin",e,t,n),k("clipValueMax",e,t,n))];case"Relu6":return[Ld(k("x",e,t,n))];case"Rsqrt":return[Wd($n(e.inputNames[0],t,n))];case"Prod":return[zd(k("x",e,t,n),k("axes",e,t,n))];case"LeakyRelu":return[Qu(k("x",e,t,n),k("alpha",e,t,n))];case"Prelu":return[rc(k("x",e,t,n),k("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Ar(e,t,n=""){if(!(typeof e=="number"||typeof t=="number")){v.assert(e.length===t.length,()=>n+` Shapes ${e} and ${t} must match`);for(let r=0;rn+` Shapes ${e} and ${t} must match`)}}}function Qv(e){return!(typeof e=="number"||e.some(t=>t<0))}function jc(e,t,n){let r=kg(e,n),a=!Qv(r);if(a&&t.length===0)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(a&&t.forEach(s=>{r=kg(s.shape,r)}),!Qv(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function kg(e,t){if(typeof e=="number")return t;if(typeof t=="number")return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);let n=[];for(let r=0;r=0&&s>=0&&a!==s)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=a>=0?a:s}return n}var Sre=class{constructor(e,t,n,r,a,s,i){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=a,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=Ie(0),Zt(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),Ar(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),n.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(n.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);n.tensor=t,Zt(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach((n,r)=>this.write(n,t[r]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let r=0;r=this.maxSize)throw new Error(`Max index must be < array size (${n} vs. ${this.maxSize})`);this.writeMany(e,hr(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let n=0,r=e.map(o=>(n+=o,n));if(n!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let a=n===0?0:t.size/n,s=[];B(()=>{t=G(t,[1,n,a]);for(let o=0;o{if(n!==a.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${a.dtype}`);Ar(t,a.shape,"TensorList shape mismatch: "),Zt(a)}),this.idTensor=Ie(0),this.maxNumElements=r,Zt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new Gc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);Ar(e,this.elementShape,"TensorList shape mismatch: ");let r=jc(this.elementShape,this.tensors,e);return B(()=>{let a=this.tensors.map(s=>G(s,r));return An(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=jc(this.elementShape,this.tensors,e),r=this.tensors.pop();return Ar(r.shape,e,"TensorList shape mismatch: "),G(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(Ar(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Zt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);Ar(this.tensors[e].shape,t,"TensorList shape mismatch: ");let r=jc(this.elementShape,this.tensors,t);return G(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);Ar(this.elementShape,t.shape,"TensorList shape mismatch: "),Zt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);Ar(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let r=jc(this.elementShape,this.tensors,n);return e.length===0?vr([],[0].concat(r)):B(()=>{let a=e.map(s=>G(this.tensors[s],r));return An(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);Ar(this.elementShape,t,"TensorList shape mismatch: ");let n=jc(this.elementShape,this.tensors,t);return this.size()===0?vr([],[0].concat(n)):B(()=>{let r=this.tensors.map(a=>G(a,n));return lt(r,0)})}};function Sre(e,t,n){let r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let a=e.shape.slice(1);Ar(a,t,"TensorList shape mismatch: ");let s=hr(e);return new Gc(s,t,r)}function Tre(e,t,n){return new Gc([],e,t,n)}function Ere(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let a=Math.max(...t);if(r!=null&&r!==-1&&a>=r)throw new Error(`Max index must be < array size (${a} vs. ${r})`);let s=new Gc([],n,e.dtype,r),i=hr(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function Cre(e,t,n){let r=0,a=t.map(c=>(r+=c,r));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let a=n===0?0:t.size/n,s=[];B(()=>{t=G(t,[1,n,a]);for(let o=0;o{if(n!==a.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${a.dtype}`);Ar(t,a.shape,"TensorList shape mismatch: "),Zt(a)}),this.idTensor=Ie(0),this.maxNumElements=r,Zt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new Gc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);Ar(e,this.elementShape,"TensorList shape mismatch: ");let r=jc(this.elementShape,this.tensors,e);return B(()=>{let a=this.tensors.map(s=>G(s,r));return An(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=jc(this.elementShape,this.tensors,e),r=this.tensors.pop();return Ar(r.shape,e,"TensorList shape mismatch: "),G(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(Ar(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Zt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);Ar(this.tensors[e].shape,t,"TensorList shape mismatch: ");let r=jc(this.elementShape,this.tensors,t);return G(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);Ar(this.elementShape,t.shape,"TensorList shape mismatch: "),Zt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);Ar(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let r=jc(this.elementShape,this.tensors,n);return e.length===0?vr([],[0].concat(r)):B(()=>{let a=e.map(s=>G(this.tensors[s],r));return An(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);Ar(this.elementShape,t,"TensorList shape mismatch: ");let n=jc(this.elementShape,this.tensors,t);return this.size()===0?vr([],[0].concat(n)):B(()=>{let r=this.tensors.map(a=>G(a,n));return lt(r,0)})}};function Tre(e,t,n){let r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let a=e.shape.slice(1);Ar(a,t,"TensorList shape mismatch: ");let s=hr(e);return new Gc(s,t,r)}function Ere(e,t,n){return new Gc([],e,t,n)}function Cre(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let a=Math.max(...t);if(r!=null&&r!==-1&&a>=r)throw new Error(`Max index must be < array size (${a} vs. ${r})`);let s=new Gc([],n,e.dtype,r),i=hr(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function Rre(e,t,n){let r=0,a=t.map(c=>(r+=c,r));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${r}, and tensor's shape is: ${e.shape}`);let s=e.shape.slice(1),i=kg(s,n),o=r===0?0:e.size/r,l=B(()=>{let c=[];e=G(e,[1,r,o]);for(let h=0;h{switch(e.op){case"If":case"StatelessIf":{let r=k("thenBranch",e,t,n),a=k("elseBranch",e,t,n),s=k("cond",e,t,n),i=k("args",e,t,n);return(await s.data())[0]?n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let r=k("body",e,t,n),a=k("cond",e,t,n),s=k("args",e,t,n),i=await n.functionMap[a].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(c=>c.id),l=await i[0].data();i.forEach(c=>{!c.kept&&o.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;l[0];){let c=u;u=await n.functionMap[r].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);let h=u.map(p=>p.id);c.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()});let d=await n.functionMap[a].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()})}return u}case"LoopCond":{let r=k("pred",e,t,n);return[xa(r)]}case"Switch":{let r=k("pred",e,t,n),a=k("data",e,t,n);return a.kept||(a=xa(a)),(await r.data())[0]?[void 0,a]:[a,void 0]}case"Merge":{let r=e.inputNames.find(a=>$n(a,t,n)!==void 0);if(r){let a=$n(r,t,n);return[xa(a)]}return}case"Enter":{let r=k("frameName",e,t,n),a=k("tensor",e,t,n);return n.enterFrame(r),[xa(a)]}case"Exit":{let r=k("tensor",e,t,n);return n.exitFrame(),[xa(r)]}case"NextIteration":{let r=k("tensor",e,t,n);return n.nextIteration(),[xa(r)]}case"TensorArrayV3":{let r=k("size",e,t,n),a=k("dtype",e,t,n),s=k("elementShape",e,t,n),i=k("dynamicSize",e,t,n),o=k("clearAfterRead",e,t,n),l=k("identicalElementShapes",e,t,n),u=k("name",e,t,n),c=new Nre(u,a,r,s,l,i,o);return n.addTensorArray(c),[c.idTensor,Ie(1)]}case"TensorArrayWriteV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.write(a,s),[i.idTensor]}case"TensorArrayReadV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n);return[n.getTensorArray(r.id).read(a)]}case"TensorArrayGatherV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("dtype",e,t,n);return[n.getTensorArray(r.id).gather(a,s)]}case"TensorArrayScatterV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.scatter(a,s),[i.idTensor]}case"TensorArrayConcatV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id),s=k("dtype",e,t,n);return[a.concat(s)]}case"TensorArraySplitV3":{let r=k("tensorArrayId",e,t,n),a=k("tensor",e,t,n),s=k("lengths",e,t,n),i=n.getTensorArray(r.id);return i.split(s,a),[i.idTensor]}case"TensorArraySizeV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return[Ie(a.size(),"int32")]}case"TensorArrayCloseV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return a.clearAndClose(),[a.idTensor]}case"TensorListSetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorList(r.id);return i.setItem(a,s),[i.idTensor]}case"TensorListGetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(a,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let r=k("indices",e,t,n),a=k("tensor",e,t,n),s=k("elementShape",e,t,n),i=k("numElements",e,t,n),o=Ere(a,r,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let r=k("elementShape",e,t,n),a=k("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=k(s,e,t,n),o=Tre(r,a,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let r=k("tensorListId",e,t,n),a=k("indices",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).gather(a,i,s)]}case"TensorListStack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=k("numElements",e,t,n);return[n.getTensorList(r.id).stack(a,s,i)]}case"TensorListFromTensor":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=Sre(r,a,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let r=k("tensorListId",e,t,n),a=n.getTensorList(r.id),s=k("dtype",e,t,n),i=k("elementShape",e,t,n);return[a.concat(s,i)]}case"TensorListPushBack":{let r=k("tensorListId",e,t,n),a=k("tensor",e,t,n),s=n.getTensorList(r.id);return s.pushBack(a),[s.idTensor]}case"TensorListPopBack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(a,s)]}case"TensorListSplit":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("lengths",e,t,n),i=Cre(r,s,a);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Qv(e,t,n){let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=r==="fusedbatchnorm",l=k("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let u=k("strides",e,t,n),c=A0(e,t,n),h=k("dataFormat",e,t,n).toUpperCase(),d=k("dilations",e,t,n),[p,f]=k("args",e,t,n),m=k("leakyreluAlpha",e,t,n);return{stride:u,pad:c,dataFormat:h,dilations:d,biasArg:p,preluArg:f,activationFunc:a,leakyreluAlpha:m}}var Fre=(e,t,n)=>{switch(e.op){case"Conv1D":{let r=k("stride",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilation",e,t,n);return[Nd(k("x",e,t,n),k("filter",e,t,n),r,a,s,i)]}case"Conv2D":{let r=k("strides",e,t,n),a=A0(e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[ua(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=Qv(e,t,n);return[ja.conv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"FusedDepthwiseConv2dNative":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=Qv(e,t,n);return[ja.depthwiseConv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let r=k("outputShape",e,t,n),a=k("strides",e,t,n),s=A0(e,t,n);return[Sd(k("x",e,t,n),k("filter",e,t,n),r,[a[1],a[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let r=k("strides",e,t,n),a=A0(e,t,n),s=k("dilations",e,t,n),i=k("dataFormat",e,t,n).toUpperCase();return[gl(k("input",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,i,[s[1],s[2]])]}case"Conv3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[cm(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2],r[3]],a,s,[i[1],i[2],i[3]])]}case"AvgPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Xu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[tc(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPoolWithArgmax":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n),i=k("includeBatchInIndex",e,t,n),{result:o,indexes:l}=Nx(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a,i);return[o,l]}case"AvgPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[om(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"MaxPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[bm(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"Dilation2D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dilations",e,t,n),i=r[1],o=r[2],l=s[1],u=s[2];return[dm(k("x",e,t,n),k("filter",e,t,n),[i,o],a,[l,u],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Mre=(e,t,n)=>{switch(e.op){case"Fill":{let r=k("shape",e,t,n),a=k("dtype",e,t,n),s=k("value",e,t,n);return[Ju(r,s,a)]}case"LinSpace":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("num",e,t,n);return[xx(r,a,s)]}case"Multinomial":{let r=k("logits",e,t,n),a=k("numSamples",e,t,n),s=k("seed",e,t,n);return[Sx(r,a,s)]}case"OneHot":{let r=k("indices",e,t,n),a=k("depth",e,t,n),s=k("onValue",e,t,n),i=k("offValue",e,t,n);return[hl(r,a,s,i)]}case"Ones":return[Vr(k("shape",e,t,n),k("dtype",e,t,n))];case"OnesLike":return[Pn(k("x",e,t,n))];case"RandomUniform":return[kl(k("shape",e,t,n),k("minval",e,t,n),k("maxval",e,t,n),k("dtype",e,t,n))];case"Range":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("step",e,t,n);return[Pd(r,a,s,k("dtype",e,t,n))]}case"TruncatedNormal":{let r=k("shape",e,t,n),a=k("mean",e,t,n),s=k("stdDev",e,t,n),i=k("seed",e,t,n);return[Xd(r,a,s,k("dtype",e,t,n),i)]}case"Zeros":return[$t(k("shape",e,t,n),k("dtype",e,t,n))];case"ZerosLike":return[qe(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Ig(e,t,n){let r=k("boxes",e,t,n),a=k("scores",e,t,n),s=k("maxOutputSize",e,t,n),i=k("iouThreshold",e,t,n),o=k("scoreThreshold",e,t,n),l=k("softNmsSigma",e,t,n);return{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var $re=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=Ig(e,t,n),u=await tt.nonMaxSuppressionWithScoreAsync(r,a,s,i,o,l);return[u.selectedIndices,u.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=Ig(e,t,n),l=k("padToMaxOutputSize",e,t,n),u=await tt.nonMaxSuppressionPaddedAsync(r,a,s,i,o,l);return[u.selectedIndices,u.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=Ig(e,t,n);return[await tt.nonMaxSuppressionAsync(r,a,s,i,o)]}case"Where":{let r=ge(k("condition",e,t,n),"bool"),a=[await Dm(r)];return r.dispose(),a}case"ListDiff":return Cx(k("x",e,t,n),k("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},Dre=(e,t,n)=>{switch(e.op){case"TopKV2":{let r=k("x",e,t,n),a=k("k",e,t,n),s=k("sorted",e,t,n),i=Mm(r,a,s);return[i.values,i.indices]}case"Unique":{let r=k("x",e,t,n),a=Kd(r);return[a.values,a.indices]}case"UniqueV2":{let r=k("x",e,t,n),a=k("axis",e,t,n),s=Kd(r,a);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Ore=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let r=k("default",e,t,n);return[$n(e.name,t,n)||r];case"Placeholder":return[$n(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let u=k("x",e,t,n);return[xa(u)]}case"IdentityN":return k("x",e,t,n).map(u=>xa(u));case"Snapshot":let a=k("x",e,t,n);return[xa(a)];case"Shape":return[hn(k("x",e,t,n).shape,"int32")];case"ShapeN":return k("x",e,t,n).map(u=>hn(u.shape));case"Size":return[Ie(k("x",e,t,n).size,"int32")];case"Rank":return[Ie(k("x",e,t,n).rank,"int32")];case"NoOp":return[Ie(1)];case"Print":let s=k("x",e,t,n),i=k("data",e,t,n),o=k("message",e,t,n),l=k("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let u=0;ue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return Ie(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(r=>r.dispose()),this.tensorMap.clear(),B(()=>{let r=hr(t),a=n.length,s=r.length;v.assert(a===s,()=>`The number of elements doesn't match, keys has ${a} elements, the values has ${s} elements.`);for(let i=0;i{let r=[];for(let a=0;a{switch(e.op){case"HashTable":case"HashTableV2":{let a=k("keyDType",e,t,n),s=k("valueDType",e,t,n),i=new zre(a,s);return r.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("values",e,t,n);return[await r.getHashTableById(a.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("defaultValue",e,t,n);return[await r.getHashTableById(a.id).find(s,i)]}case"LookupTableSize":case"LookupTableSizeV2":{let a=k("tableHandle",e,t,n,r);return[r.getHashTableById(a.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Lre=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[tt.resizeBilinear(r,[a[0],a[1]],s,i)]}case"ResizeNearestNeighbor":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[tt.resizeNearestNeighbor(r,[a[0],a[1]],s,i)]}case"CropAndResize":{let r=k("image",e,t,n),a=k("boxes",e,t,n),s=k("boxInd",e,t,n),i=k("cropSize",e,t,n),o=k("method",e,t,n),l=k("extrapolationValue",e,t,n);return[tt.cropAndResize(r,a,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Wre=(e,t,n)=>{switch(e.op){case"Equal":return[Ba(k("a",e,t,n),k("b",e,t,n))];case"NotEqual":return[xi(k("a",e,t,n),k("b",e,t,n))];case"Greater":return[ur(k("a",e,t,n),k("b",e,t,n))];case"GreaterEqual":return[Ua(k("a",e,t,n),k("b",e,t,n))];case"Less":return[Rd(k("a",e,t,n),k("b",e,t,n))];case"LessEqual":return[yi(k("a",e,t,n),k("b",e,t,n))];case"LogicalAnd":return[cr(k("a",e,t,n),k("b",e,t,n))];case"LogicalNot":return[ec(k("a",e,t,n))];case"LogicalOr":return[Dd(k("a",e,t,n),k("b",e,t,n))];case"Select":case"SelectV2":return[Tn(k("condition",e,t,n),k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Bre=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[Ke(k("a",e,t,n),k("b",e,t,n),k("transposeA",e,t,n),k("transposeB",e,t,n))];case"Transpose":return[ot(k("x",e,t,n),k("perm",e,t,n))];case"_FusedMatMul":let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=k("numArgs",e,t,n),l=k("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[u,c]=k("args",e,t,n);return[ja.matMul({a:k("a",e,t,n),b:k("b",e,t,n),transposeA:k("transposeA",e,t,n),transposeB:k("transposeB",e,t,n),bias:u,activation:a,preluActivationWeights:c,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Vre=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[mi(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"FusedBatchNormV3":return[mi(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"LRN":return[ym(k("x",e,t,n),k("radius",e,t,n),k("bias",e,t,n),k("alpha",e,t,n),k("beta",e,t,n))];case"Softmax":return[ic(k("x",e,t,n))];case"LogSoftmax":return[$d(k("x",e,t,n))];case"SparseToDense":return[Om(k("sparseIndices",e,t,n),k("outputShape",e,t,n),k("sparseValues",e,t,n),k("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Ure=(e,t,n)=>{switch(e.op){case"Max":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Qn(k("x",e,t,n),i,o)]}case"Mean":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Tt(k("x",e,t,n),i,o)]}case"Min":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[_l(k("x",e,t,n),i,o)]}case"Sum":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Re(k("x",e,t,n),i,o)]}case"All":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[kd(k("x",e,t,n),i,o)]}case"Any":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[ju(k("x",e,t,n),i,o)]}case"ArgMax":{let i=k("axis",e,t,n);return[Gu(k("x",e,t,n),i)]}case"ArgMin":{let i=k("axis",e,t,n);return[Qf(k("x",e,t,n),i)]}case"Prod":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[zd(k("x",e,t,n),i,o)]}case"Cumsum":{let i=k("axis",e,t,n),o=k("exclusive",e,t,n),l=k("reverse",e,t,n);return[Ed(k("x",e,t,n),i,o,l)]}case"Bincount":let r=k("x",e,t,n),a=k("weights",e,t,n),s=k("size",e,t,n);return[ux(r,a,s)];case"DenseBincount":{let i=k("x",e,t,n),o=k("weights",e,t,n),l=k("size",e,t,n),u=k("binaryOutput",e,t,n);return[fx(i,o,l,u)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Hre=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let r=k("n",e,t,n),a=k("axis",e,t,n),s=k("tensors",e,t,n);return s=s.slice(0,r),[lt(s,a)]}case"Gather":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[Ai(r,ge(a,"int32"),0)]}case"GatherV2":{let r=k("axis",e,t,n),a=k("batchDims",e,t,n),s=k("x",e,t,n),i=k("indices",e,t,n);return[Ai(s,ge(i,"int32"),r,a)]}case"Reverse":{let r=k("dims",e,t,n),a=[];for(let i=0;i{let r=k("axis",e,t,n),a=k("tensors",e,t,n),s=a[0].shape,i=Ha(a[0]).shape,o=a.map(l=>{let u=v.arraysEqual(l.shape,s);if(!u&&!v.arraysEqual(Ha(l).shape,i))throw new Error("the input tensors shape does not match");return u?l:G(l,s)});return[An(o,r)]});case"Unpack":{let r=k("axis",e,t,n),a=k("tensor",e,t,n);return hr(a,r)}case"Tile":{let r=k("reps",e,t,n);return[Va(k("x",e,t,n),r)]}case"Split":case"SplitV":{let r=k("axis",e,t,n),a=k("numOrSizeSplits",e,t,n),s=k("x",e,t,n);return Ut(s,a,r)}case"ScatterNd":{let r=k("indices",e,t,n),a=k("values",e,t,n),s=k("shape",e,t,n);return[$x(r,a,s)]}case"GatherNd":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[Dx(r,a)]}case"SparseToDense":{let r=k("sparseIndices",e,t,n),a=k("outputShape",e,t,n),s=k("sparseValues",e,t,n),i=k("defaultValue",e,t,n);return[Om(r,s,a,s.dtype===i.dtype?i:ge(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},jre=(e,t,n)=>{switch(e.op){case"FFT":return[oc(k("x",e,t,n))];case"IFFT":return[Il(k("x",e,t,n))];case"RFFT":return[lc(k("x",e,t,n))];case"IRFFT":return[Gd(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Gre=(e,t,n)=>{switch(e.op){case"Cast":return[ge(k("x",e,t,n),k("dtype",e,t,n))];case"ExpandDims":{let r=k("axis",e,t,n);return[mn(k("x",e,t,n),r)]}case"Squeeze":{let r=k("axis",e,t,n);return[Ha(k("x",e,t,n),r)]}case"Reshape":return[G(k("x",e,t,n),k("shape",e,t,n))];case"MirrorPad":return[_m(k("x",e,t,n),k("padding",e,t,n),k("mode",e,t,n))];case"PadV2":case"Pad":return[ca(k("x",e,t,n),k("padding",e,t,n),k("constantValue",e,t,n))];case"SpaceToBatchND":{let r=k("blockShape",e,t,n),a=k("paddings",e,t,n);return[nc(k("x",e,t,n),r,a)]}case"BatchToSpaceND":{let r=k("blockShape",e,t,n),a=k("crops",e,t,n);return[Ku(k("x",e,t,n),r,a)]}case"DepthToSpace":{let r=k("blockSize",e,t,n),a=k("dataFormat",e,t,n).toUpperCase();return[hm(k("x",e,t,n),r,a)]}case"BroadcastTo":return[Zu(k("x",e,t,n),k("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function e6(e,t,n,r){let a=((s,i,o)=>{switch(s.category){case"arithmetic":return B(()=>kre(s,i,o));case"basic_math":return B(()=>Ire(s,i,o));case"control":return Rre(s,i,o);case"convolution":return B(()=>Fre(s,i,o));case"creation":return B(()=>Mre(s,i,o));case"dynamic":return $re(s,i,o);case"evaluation":return B(()=>Dre(s,i,o));case"image":return B(()=>Lre(s,i,o));case"graph":return B(()=>Ore(s,i,o));case"logical":return B(()=>Wre(s,i,o));case"matrices":return B(()=>Bre(s,i,o));case"normalization":return B(()=>Vre(s,i,o));case"reduction":return B(()=>Ure(s,i,o));case"slice_join":return B(()=>Hre(s,i,o));case"spectral":return B(()=>jre(s,i,o));case"transformation":return B(()=>Gre(s,i,o));case"hash_table":return Pre(s,i,o,r);case"custom":let l=Cv(s.op);if(l&&l.customExecutor)return l.customExecutor(new vre(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(a)?a.then(s=>[].concat(s)):[].concat(a)}var t6=class{constructor(e={},t={},n={},r={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function r6(e,t,n,r){let a=new Set,s=[],i=null,o=null,l=new Set,u=Object.keys(e).map(d=>Hn(d)[0]),c=[];r!=null&&(c=r.map(d=>Hn(d.name)[0]));let h=[...t];for(;h.length>0;){let d=h.pop();if((n6(d)||qre(d)||Xre(d))&&i==null&&(i=d,o=i.children.map(p=>p.name).filter(p=>a.has(p))),a.add(d.name),n[d.name]==null&&u.indexOf(d.name)===-1&&c.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(p=>{l.has(p.name)||(l.add(p.name),h.push(p))})}}return{inputs:e,outputs:t,usedNodes:a,missingInputs:s,dynamicNode:i,syncInputs:o}}function Kre(e,t,n){let{usedNodes:r,inputs:a}=n,s=[],i=Object.keys(a).map(c=>Hn(c)[0]).map(c=>e.nodes[c]),o=e.initNodes;i.forEach(c=>{r.has(c.name)&&s.push(c)}),e.weights.forEach(c=>{r.has(c.name)&&s.push(c)}),o!=null&&o.forEach(c=>{r.has(c.name)&&s.push(c)});let l=new Set,u=[];for(;s.length>0;){let c=s.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(h=>{!l.has(h.name)&&r.has(h.name)&&h.inputs.every(d=>l.has(d.name))&&s.push(h)})}return u}var Zre=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],Yre=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],Jre=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function n6(e){return Zre.indexOf(e.op)>=0}function qre(e){return Yre.indexOf(e.op)>=0}function Xre(e){return Jre.indexOf(e.op)>=0}var Ng=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new Ng(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(r=>r.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(a=>a.name).sort(),r=t.map(a=>a.name).sort();return n.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)}compile(e,t){let n=r6(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:a,syncInputs:s}=n;if(a!=null)throw new Error(`This execution contains the node '${a.name}', which has the dynamic op '${a.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(r.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${r}]`)}return Kre(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let r=n.map(c=>this.graph.nodes[Hn(c)[0]]),a=t.map(c=>Hn(c)[0]),s=a.map(c=>this.graph.nodes[c]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(r,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},u={};return B(()=>{let c=new t6(this.weightMap,l,u,this.functionExecutorMap),h=Object.assign({},this.weightMap);Object.keys(e).forEach(f=>{let[m,A]=Hn(f),y=[];y[A]=e[f],h[m]=y});let d=this.getFrozenTensorIds(h),p={};for(let f=0;f$n(f,h,c))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(r=>r.id)));return new Set(t)}checkTensorForDisposal(e,t,n,r,a,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=are(o.name,n,r);l!=null&&l.forEach(u=>{if(u&&!a.has(u.id)){let c=i[u.id];c===1?(u.dispose(),delete i[u.id]):c!=null&&i[u.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,r={},a={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new t6(this.weightMap,r,a,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(h=>$n(h,i,s)),l=o.map(h=>h.id),u=Object.keys(e).map(h=>e[h].id),c=new Set([...l,...u,...this.weightIds]);return Object.keys(i).forEach(h=>{i[h].forEach(d=>{d&&!d.isDisposed&&!c.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(c),o}async executeFunctionAsync(e,t,n){let r=e.reduce((a,s,i)=>(a[this.inputs[i].name]=s,a),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){let a=Object.keys(e),s=a.map(g=>this.graph.nodes[Hn(g)[0]]),i=n.map(g=>Hn(g)[0]),o=i.map(g=>this.graph.nodes[g]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:u,dynamicNode:c,syncInputs:h}=r6(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(g=>({node:g,contexts:t.currentContext})),p=Object.assign({},this.weightMap);Object.keys(e).forEach(g=>{let[b,_]=Hn(g),w=[];w[_]=e[g],p[b]=w});let f={},m=this.getFrozenTensorIds(p),A={};for(;d.length>0;){let g=this.processStack(s,d,t,p,A,m,i,f,l);await Promise.all(g)}c==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(g=>!n6(g)&&!$n(g.name,p,t)).map(g=>g.name);if(y.length>0){let g="";throw c!=null&&(g=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${h}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${a}]. Consider providing the following inputs: [${u}]. ${g}`)}return p}processStack(e,t,n,r,a,s,i,o,l){let u=[];for(;t.length>0;){let c=t.pop();n.currentContext=c.contexts;let h="";if(c.node.op==="Enter"&&k("isConstant",c.node,r,n)&&([h]=ga(c.node.name,n)),r[c.node.name]==null){let d=e6(c.node,r,n,this._resourceManager);h||([h]=ga(c.node.name,n));let p=n.currentContext;v.isPromise(d)?u.push(d.then(f=>(r[h]=f,n.currentContext=p,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l),f))):(r[h]=d,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l))}else this.processChildNodes(c.node,t,n,r,a,l)}return u}processChildNodes(e,t,n,r,a,s){e.children.forEach(i=>{let[o]=ga(i.name,n);a[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!$n(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!$n(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[r]=Hn(t),a=this.graph.nodes[r];if(a.attrParams.shape&&a.attrParams.shape.value){let s=a.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);v.assert(i,()=>`The shape of dict['${a.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}a.attrParams.dtype&&a.attrParams.dtype.value&&v.assert(n.dtype===a.attrParams.dtype.value,()=>`The dtype of dict['${a.name}'] provided in model.execute(dict) must be ${a.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let r=this._signature.inputs[n];t[r.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[r]=Hn(n);return this.graph.nodes[r]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Hn(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},Qre=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},eae="?tfjs-format=file",tae="model.json",a6=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new Qre}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=Nn.browserHTTPRequest(e,this.loadOptions);else{let t=Nn.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(Nn.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let r=Nn.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new Ng(Kv.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let a=Kv.Instance.transformGraph(e.modelInitializer);this.initializer=new Ng(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=Nn.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof Ge)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,r)=>(t[n]=e[r],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Ot(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${tae}${eae}`);let n=new a6(e,t);return await n.load(),n}var nae="3.3.0",s6={};We(s6,{CSVDataset:()=>o6,Dataset:()=>Yl,FileDataSource:()=>l6,TextLineDataset:()=>i6,URLDataSource:()=>u6,array:()=>rae,csv:()=>sae,func:()=>iae,generator:()=>oae,microphone:()=>uae,version_data:()=>cae,webcam:()=>lae,zip:()=>aae});var hae=no(K2()),dae=no(K2());function pae(e,t){return y0(e,t)}function y0(e,t,n=new Map,r=new Set){if(e==null)return null;if(r.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(a.recurse)if(Jl(e)){let s=Array.isArray(e)?[]:{};r.add(e);for(let i in e){let o=e[i],l=y0(o,t,n,r);s[i]=l}return r.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,a.value),a.value}function fae(e,t=h6){return c6(e,t)}function c6(e,t,n=new Set){let r=e[0];if(n.has(r))throw new Error("Circular references are not supported.");let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(a.recurse)if(Jl(r)){let s=Array.isArray(r)?[]:{};n.add(r);for(let i in r){let o=e.map(u=>u[i]),l=c6(o,t,n);s[i]=l}return n.delete(r),s}else throw new Error(`Can't recurse into non-iterable type: ${r}`);else return a.value}function h6(e){return e===null?null:Jl(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function d6(e,t){let n=new Map;y0(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let s=await a;n.set(r,s)}}return y0(e,t,n)}function Jl(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof Ge))}function Aae(e){return e==null||mae(e)||Array.isArray(e)||typeof e=="object"&&e instanceof Ge||v.isTypedArray(e)}function mae(e){return e===null||typeof e!="object"&&typeof e!="function"}function gae(e){return pae(e,yae)}function yae(e){return e instanceof Ge?{value:e.clone(),recurse:!1}:Jl(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var p6=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},Sg=class extends p6{constructor(){super(Sg.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let r=0;rt===!0)}rowMajorBatch(e,t=!0){return new Sae(this,e,t)}columnMajorBatch(e,t=!0,n=h6){return this.rowMajorBatch(e,t).map(r=>fae(r,n))}concatenate(e,t){return new m6(f6([this,e]),t)}take(e){return e<0||e==null?this:new Nae(this,e)}skip(e){return e<0||e==null?this:new Iae(this,e)}prefetch(e){return new y6(this,e)}shuffle(e,t){return new Fae(this,e,t)}serial(){return new kae(this)}},xae=class extends en{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:gae(e),done:!1}}},wae=class extends en{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},kae=class extends en{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},Iae=class extends en{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},Sae=class extends en{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},Tae=class extends en{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Me(e.value)}}},Eae=class extends en{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=br.getTensorsInContainer(e.value),n=this.transform(e.value),r=br.getTensorsInContainer(n);for(let a of t)br.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},Cae=class extends en{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},A6=class extends en{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=br.getTensorsInContainer(e.value),n=await this.transform(e.value),r=br.getTensorsInContainer(n);for(let a of t)br.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},Eg=class extends en{constructor(){super();this.outputQueue=new Sg,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},Rae=class extends Eg{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=br.getTensorsInContainer(e.value),n=this.transform(e.value),r=br.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let a of t)br.isTensorInList(a,r)||a.dispose();return!0}},m6=class extends en{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},ns;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(ns||(ns={}));var _ae=class extends en{constructor(e,t=ns.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function r(s){return s instanceof en?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let a=await d6(this.iterators,r);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case ns.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ns.SHORTEST:return{value:null,done:!0};case ns.LONGEST:default:}return this.count++,{value:a,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},y6=class extends en{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new p6(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},Fae=class extends y6{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=dae.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},Yl=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is - ${e}`);let r;return this.size===Infinity||this.size==null?r=this.size:t?r=Math.ceil(this.size/e):r=Math.floor(this.size/e),jn(async()=>(await n.iterator()).columnMajorBatch(e,t,Mae),r)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,jn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,jn(async()=>(await t.iterator()).filter(r=>B(()=>e(r))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return jn(async()=>(await t.iterator()).map(n=>B(()=>e(n))),this.size)}mapAsync(e){let t=this;return jn(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return jn(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,jn(async()=>{let r=Tg(async()=>({value:await t.iterator(),done:!1}));return bae(r.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let r=this,a=hae.alea(t||v.now().toString());return jn(async()=>{let s=a.int32();return n&&(s+=a.int32()),(await r.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,jn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Yl.MAX_BUFFER_SIZE=1e4;function jn(e,t=null){return new class extends Yl{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function rae(e){return jn(async()=>f6(e),e.length)}function aae(e){if(!Jl(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await d6(e,r=>{if(r instanceof Yl)return{value:r.iterator(),recurse:!1};if(Jl(r))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return vae(n,ns.SHORTEST)},t)}function Mae(e){if(e===null)return null;let t=e[0];return Aae(t)?{value:$ae(e),recurse:!1}:{value:null,recurse:!0}}function $ae(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof Ge?An(e):vr(e)}var i6=class extends Yl{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` -`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},g0='"',qc=Symbol("out"),g6=Symbol("field"),x0=Symbol("quote"),Cg=Symbol("quoteafterquote"),x6=Symbol("quoteinquote"),o6=class extends Yl{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new i6(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((r,a)=>(r[a]=r[a]+1||1,r),{}),n=Object.keys(t).filter(r=>t[r]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let r of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(r)===-1)throw new Error('The key "'+r+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},r={};for(let a=0;a14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(J().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new w6(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let r=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(r,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let r=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(r,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(r=>{let a=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&r({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(a),r({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((r,a)=>n.set(r,a*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),vr(n,t)}},b6=class extends en{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=hn([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,r=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,a=(1-n)/2,s=(1-r)/2,i=a+n,o=r+s;this.cropBox=En([s,a,o,i],[1,4])}else this.cropBox=En([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(J().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new b6(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=dl.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return B(()=>{let t=mn(ge(e,"float32"),0),n;n=tt.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let r=n.shape;return G(n,r.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},_6=class{},v6=class extends en{split(e){return new Dae(this,e)}},Dae=class extends v6{constructor(e,t){super();this.upstream=e,this.impl=new Oae(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Oae=class extends Eg{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},Pae=class extends en{decodeUTF8(){return new zae(this)}},zae=class extends v6{constructor(e){super();this.upstream=e,this.impl=new Lae(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Lae=class extends Eg{constructor(e){super();if(this.upstream=e,J().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=kk();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return J().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},k6=class extends Pae{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(J().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let r=new FileReader;r.onload=s=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},r.onabort=s=>t(new Error("Aborted")),r.onerror=s=>t(new Error(s.type));let a=this.file.slice(this.offset,n);r.readAsArrayBuffer(a)}this.offset=n}),done:!1}}};async function Bae(e,t={}){let n,r;typeof e=="string"?n=e:(n=e.url,r=Wae(e));let a=await v.fetch(n,r);if(a.ok){let s=new Uint8Array(await a.arrayBuffer());return new k6(s,t)}else throw new Error(a.statusText)}var Wae=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function I6(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var l6=class extends _6{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(I6(this.input)&&J().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new k6(this.input,this.options)}},u6=class extends _6{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return I6(this.url)?new l6(this.url,this.fileOptions).iterator():Bae(this.url,this.fileOptions)}};function sae(e,t={}){return new o6(new u6(e),t)}function iae(e){let t=Tg(e);return jn(async()=>t)}function oae(e){return jn(async()=>{let t=await e();return Tg(()=>t.next())})}async function lae(e,t){return b6.create(e,t)}async function uae(e){return w6.create(e)}var cae="3.3.0",Vae={tfjs:Ik,"tfjs-core":Nk,"tfjs-data":Sk,"tfjs-layers":Tk,"tfjs-converter":Ek,"tfjs-backend-cpu":Iw,"tfjs-backend-webgl":qb,"tfjs-backend-wasm":z3};var Gn={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function N6(){if(!Zf(Gn.name)){Fe("backend registration:",Gn.name);try{Gn.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Gn.width,Gn.height):document.createElement("canvas")}catch(e){Fe("error: cannot create canvas:",e);return}try{Gn.gl=Gn.canvas.getContext("webgl2",Gn.webGLattr)}catch(e){Fe("error: cannot get WebGL2 context:",e);return}try{yp(2,Gn.gl)}catch(e){Fe("error: cannot set WebGL2 context:",e);return}try{let e=new bp(Gn.gl);fl(Gn.name,()=>new Ll(e),Gn.priority)}catch(e){Fe("error: cannot register WebGL backend:",e);return}try{il("webgl").forEach(t=>{let n={...t,backendName:Gn.name};ui(n)})}catch(e){Fe("error: cannot update WebGL backend registration:",e);return}try{wr.set("WEBGL_VERSION",2)}catch(e){Fe("error: cannot set WebGL backend flags:",e);return}Fe("backend registered:",Gn.name)}}var S6=6;function Uae(e){let t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let r=0;r({startEndTensor:e,startPoint:$e(e,[0,0],[-1,2]),endPoint:$e(e,[0,2],[-1,2])});function jae(e,t,n){let r=$e(e,[0,1],[-1,2]),a=ie(r,t),s=$e(e,[0,3],[-1,2]),i=be(s,n),o=be(a,n),l=be(i,2),u=we(o,l),c=ie(o,l),h=P(u,n),d=P(c,n);return yl([h,d],1)}var T6=class{constructor(t,n){this.model=t,this.anchorsData=Uae(t.inputs[0].shape[1]),this.anchors=En(this.anchorsData),this.inputSize=t.inputs[0].shape[2],this.config=n}async getBoundingBoxes(t){if(!t||t.isDisposedInternal||t.shape.length!==4||t.shape[1]<1||t.shape[2]<1)return null;let[n,r,a]=B(()=>{let d=t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),p=this.model.predict(d),f;if(Array.isArray(p)){let g=p.sort((x,N)=>x.size-N.size),b=lt([g[0],g[2]],2),_=lt([g[1],g[3]],2);f=lt([_,b],1).squeeze(0)}else f=p.squeeze();let m=jae(f,this.anchors,[this.inputSize,this.inputSize]),A=$e(f,[0,0],[-1,1]),y=On(A).squeeze();return[f,m,y]}),s=await tt.nonMaxSuppressionAsync(r,a,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),i=s.arraySync();s.dispose();let l=i.map(h=>$e(r,[h,0],[1,-1])).map(h=>{let d=h.arraySync();return h.dispose(),d}),u=a.dataSync(),c=[];for(let h=0;hthis.config.face.detector.minConfidence){let f=Hae(l[h]),m=this.anchorsData[d],A=B(()=>$e(n,[d,S6-1],[1,-1]).squeeze().reshape([S6,-1]));c.push({box:f,landmarks:A,anchor:m,confidence:p})}}return n.dispose(),r.dispose(),a.dispose(),{boxes:c,scaleFactor:[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]}}};async function E6(e){let t=await Ot(e.face.detector.modelPath,{fromTFHub:e.face.detector.modelPath.includes("tfhub.dev")}),n=new T6(t,e);return e.debug&&Fe(`load model: ${e.face.detector.modelPath.match(/\/(.*)\./)[1]}`),n}function C6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:n,endPoint:r}}function Xc(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Ql(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function eu(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return tt.cropAndResize(t,s,[0],n)}function w0(e,t=1.5){let n=Ql(e),r=Xc(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}function b0(e){let t=Ql(e),n=Xc(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}var _0=[[1,0,0],[0,1,0],[0,0,1]];function Gae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function Rg(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Gae(n)}function R6(e,t){return[[1,0,e],[0,1,t],[0,0,1]]}function rs(e,t){let n=0;for(let r=0;rMg[e]),Rhe=Kae.map(e=>Mg[e]),Fhe=Zae.map(e=>Mg[e]);var $g=Jr.leftEyeLower0,Dg=Jr.rightEyeLower0,tu={leftBounds:[$g[0],$g[$g.length-1]],rightBounds:[Dg[0],Dg[Dg.length-1]]},k0={count:468,mouth:13,symmetryLine:[13,Jr.midwayBetweenEyes[0]]},D6={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},nu={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function I0(e,t,n,r){for(let a=0;a[s[0]/this.meshSize*(h[0]-this.meshSize/2),s[1]/this.meshSize*(h[1]-this.meshSize/2),h[2]]),o=r!==0?v0(r,[0,0]):_0,l=r!==0?i.map(h=>[...$6(h,o),h[2]]):i,u=r!==0?M6(a):_0,c=[...Ql({startPoint:n.startPoint,endPoint:n.endPoint}),1];return l.map(h=>[h[0]+rs(c,u[0]),h[1]+rs(c,u[1]),h[2]])}getLeftToRightEyeDepthDifference(t){let n=t[tu.leftBounds[0]][2],r=t[tu.rightBounds[0]][2];return n-r}getEyeBox(t,n,r,a,s=!1){let i=b0(w0(this.calculateLandmarksBoundingBox([t[r],t[a]]),this.irisEnlarge)),o=Xc(i),l=tt.cropAndResize(n,[[i.startPoint[1]/this.meshSize,i.startPoint[0]/this.meshSize,i.endPoint[1]/this.meshSize,i.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return s&&wr.flags.IS_BROWSER&&(l=tt.flipLeftRight(l)),{box:i,boxSize:o,crop:l}}getEyeCoords(t,n,r,a=!1){let s=[];for(let i=0;i{let u=i;return l===2?u=a:l===4&&(u=s),[o[0],o[1],u]})}async predict(t,n){let r=!1,a;if((this.skipped===0||this.skipped>n.face.detector.skipFrames||!n.face.mesh.enabled||!n.videoOptimized)&&(a=await this.boundingBoxDetector.getBoundingBoxes(t),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.boxes&&(!n.face.mesh.enabled||a.boxes.length!==this.detectedFaces&&this.detectedFaces!==n.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let i of a.boxes)this.storedBoxes.push({startPoint:i.box.startPoint.dataSync(),endPoint:i.box.endPoint.dataSync(),landmarks:i.landmarks,confidence:i.confidence});this.storedBoxes.length>0&&(r=!0)}if(n.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),r){if(!a||!a.boxes||a.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{i.box.startPoint.dispose(),i.box.endPoint.dispose(),i.landmarks.dispose()});let s=B(()=>this.storedBoxes.map((i,o)=>{let l=i.confidence,u,c=0,h;if(n.face.detector.rotation&&n.face.mesh.enabled&&wr.flags.IS_BROWSER){let[w,x]=i.landmarks.length>=k0.count?k0.symmetryLine:D6.symmetryLine;c=Rg(i.landmarks[w],i.landmarks[x]);let N=Ql({startPoint:i.startPoint,endPoint:i.endPoint}),S=[N[0]/t.shape[2],N[1]/t.shape[1]],T=tt.rotateWithOffset(t,c,0,S);h=v0(-c,N),n.face.mesh.enabled?u=eu({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255):u=eu({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.boxSize,this.boxSize]).div(255)}else{h=_0;let w=t.clone();n.face.mesh.enabled?u=eu({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.meshSize,this.meshSize]).div(255):u=eu({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.boxSize,this.boxSize]).div(255)}if(!n.face.mesh.enabled)return{coords:null,box:i,faceConfidence:null,boxConfidence:i.confidence,confidence:i.confidence,image:u};let[,d,p]=this.meshDetector.predict(u),f=d.dataSync()[0];if(f=k0.count?k0.symmetryLine:D6.symmetryLine;c=Rg(i.landmarks[w],i.landmarks[x]);let N=Ql({startPoint:i.startPoint,endPoint:i.endPoint}),S=[N[0]/t.shape[2],N[1]/t.shape[1]],T=tt.rotateWithOffset(t,c,0,S);h=v0(-c,N),u=eu({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255)}let b={coords:g,box:i,faceConfidence:f,boxConfidence:l,image:u,rawCoords:A},_=b0(i);return this.storedBoxes[o]={..._,landmarks:y,confidence:i.confidence,faceConfidence:f},b}));return s=s.filter(i=>i!==null),n.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(i=>i.faceConfidence>n.face.detector.minConfidence)),this.detectedFaces=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s,landmarks:t}}};var F2=Th(z6());var Lg={};xr(Lg,{load:()=>Wg,predict:()=>Bg});var Pg={};function Qr(e,t){if(!t||!t.kernels)return;let n=5,r=t.kernels.filter(o=>o.kernelTimeMs>0).reduce((o,l)=>o+=l.kernelTimeMs,0),a=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.kernelTimeMs>0).sort((o,l)=>l.kernelTimeMs-o.kernelTimeMs),s=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.totalBytesSnapshot>0).sort((o,l)=>l.totalBytesSnapshot-o.totalBytesSnapshot);a.length>n&&(a.length=n),s.length>n&&(s.length=n);let i={newBytes:t.newBytes,newTensors:t.newTensors,peakBytes:t.peakBytes,numKernelOps:t.kernels.length,timeKernelOps:r,slowestKernelOps:a,largestKernelOps:s};Pg[e]=i,Fe("Human profiler",e,i)}var as,N0={age:0},S0=Number.MAX_SAFE_INTEGER;async function Wg(e){return as||(as=await Ot(e.face.age.modelPath),e.debug&&Fe(`load model: ${e.face.age.modelPath.match(/\/(.*)\./)[1]}`)),as}async function Bg(e,t){return as?S00?(S0++,N0):(t.videoOptimized?S0=0:S0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=tt.resizeBilinear(e,[as.inputs[0].shape[2],as.inputs[0].shape[1]],!1),a=P(r,[255]);Me(r);let s,i={age:0};if(!t.profile)t.face.age.enabled&&(s=await as.predict(a));else{let o=t.face.age.enabled?await kr(()=>as.predict(a)):{};s=o.result.clone(),o.result.dispose(),Qr("age",o)}if(a.dispose(),s){let o=s.dataSync();i.age=Math.trunc(10*o[0])/10}s.dispose(),N0=i,n(i)})):null}var Vg={};xr(Vg,{load:()=>Gg,predict:()=>qg});var wa,Ug={gender:""},T0=Number.MAX_SAFE_INTEGER,Hg=!1,jg=[.2989,.587,.114];async function Gg(e){return wa||(wa=await Ot(e.face.gender.modelPath),Hg=wa.inputs[0].shape[3]===1,e.debug&&Fe(`load model: ${e.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),wa}async function qg(e,t){return wa?T0{let r=tt.resizeBilinear(e,[wa.inputs[0].shape[2],wa.inputs[0].shape[1]],!1),a;Hg?a=B(()=>{let[o,l,u]=Ut(r,3,3),c=P(o,jg[0]),h=P(l,jg[1]),d=P(u,jg[2]);return La([c,h,d]).sub(.5).mul(2)}):a=P(r,[255]),Me(r);let s,i={gender:"",confidence:0};if(!t.profile)t.face.gender.enabled&&(s=await wa.predict(a));else{let o=t.face.gender.enabled?await kr(()=>wa.predict(a)):{};s=o.result.clone(),o.result.dispose(),Qr("gender",o)}if(a.dispose(),s){let o=s.dataSync();if(Hg)(o[0]>t.face.gender.minConfidence||o[1]>t.face.gender.minConfidence)&&(i.gender=o[0]>o[1]?"female":"male",i.confidence=o[0]>o[1]?Math.trunc(100*o[0])/100:Math.trunc(100*o[1])/100);else{let l=Math.trunc(200*Math.abs(o[0]-.5))/100;l>t.face.gender.minConfidence&&(i.gender=o[0]<=.5?"female":"male",i.confidence=Math.min(.99,l))}}s.dispose(),Ug=i,n(i)})):null}var Xg={};xr(Xg,{load:()=>Yg,predict:()=>Jg});var Jae=["angry","disgust","fear","happy","sad","surprise","neutral"],ss,Kg=[],E0=Number.MAX_SAFE_INTEGER,Zg=[.2989,.587,.114];async function Yg(e){return ss||(ss=await Ot(e.face.emotion.modelPath),e.debug&&Fe(`load model: ${e.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),ss}async function Jg(e,t){return ss?E00?(E0++,Kg):(t.videoOptimized?E0=0:E0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=tt.resizeBilinear(e,[ss.inputs[0].shape[2],ss.inputs[0].shape[1]],!1),[a,s,i]=Ut(r,3,3);r.dispose();let o=P(a,Zg[0]),l=P(s,Zg[1]),u=P(i,Zg[2]);a.dispose(),s.dispose(),i.dispose();let c=La([o,l,u]);o.dispose(),l.dispose(),u.dispose();let h=B(()=>c.sub(.5).mul(2));c.dispose();let d=[];if(t.face.emotion.enabled){let p;if(t.profile){let f=await kr(()=>ss.predict(h));p=f.result.dataSync(),f.result.dispose(),Qr("emotion",f)}else{let f=await ss.predict(h);p=f.dataSync(),Me(f)}for(let f=0;ft.face.emotion.minConfidence&&d.push({score:Math.min(.99,Math.trunc(100*p[f])/100),emotion:Jae[f]});d.sort((f,m)=>m.score-f.score)}h.dispose(),Kg=d,n(d)})):null}var ea;async function Qg(e){return ea||(ea=await Ot(e.face.embedding.modelPath),e.debug&&Fe(`load model: ${e.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),ea}function P6(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let r=e.map((s,i)=>Math.abs(e[i]-t[i])**n).reduce((s,i)=>s+i,0)**(1/n);return Math.max(Math.trunc(1e3*(1-r))/1e3,0)}function e2(e){return B(()=>{let n=[[.05,.15,.85,.85]],r=e.image||e.tensor;if(!(r instanceof Ge))return null;let a=r.shape.length===3?tt.cropAndResize(mn(r,0),n,[0],[ea.inputs[0].shape[2],ea.inputs[0].shape[1]]):tt.cropAndResize(r,n,[0],[ea.inputs[0].shape[2],ea.inputs[0].shape[1]]),s=[.2989,.587,.114],[i,o,l]=Ut(a,3,3),u=P(i,s[0]),c=P(o,s[1]),h=P(l,s[2]),d=La([u,c,h]),p=An([d,d,d],3).squeeze(4),f=p.sub(p.min());return f.div(f.max())})}async function t2(e,t){return ea?new Promise(async n=>{let r=[];if(t.face.embedding.enabled){let a=e2(e);if(!t.profile)r=B(()=>ea.predict(a).reshape([128,2]).logSumExp(1).dataSync());else{let s=await kr(()=>ea.predict({img_inputs:a}));r=[...s.result.dataSync()],s.result.dispose(),Qr("emotion",s)}a.dispose()}n(r)}):null}var p2={};xr(p2,{PoseNet:()=>f2,load:()=>m2});function Qae(e){let[t,n,r,a]=e;return{offsets:t,heatmap:n,displacementFwd:r,displacementBwd:a}}var n2=class{constructor(t){this.model=t}predict(t){return B(()=>{let r=t.toFloat().div(127.5).sub(1).expandDims(0),s=this.model.predict(r).map(o=>o.squeeze([0])),i=Qae(s);return{heatmapScores:i.heatmap.sigmoid(),offsets:i.offsets,displacementFwd:i.displacementFwd,displacementBwd:i.displacementBwd}})}dispose(){this.model.dispose()}};function r2(e){return Math.floor(e/2)}var a2=class{constructor(t,n){this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=n}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(r2(t),t);)this.exchange(t,r2(t)),t=r2(t)}sink(t){for(;2*t<=this.numberOfElements;){let n=2*t;if(nt){l=!1;break}if(!l)break}return l}function L6(e,t,n){let[r,a,s]=n.shape,i=new a2(r*a*s,({score:o})=>o);for(let o=0;on?n:e}function B6(e,t,n,r){let a=n-e,s=r-t;return a*a+s*s}function u2(e,t){return{x:e.x+t.x,y:e.y+t.y}}var F0=Th(C0());function V6(e,t){let n=t.shape[0],r=new Float32Array(n);for(let a=0;ae.toTensor().mul(Ie(t,"int32")).toFloat().add(lse(e,n)))}function use(e,t){return B(()=>{let n=e.div(Ie(t,"int32"));return e.sub(n.mul(Ie(t,"int32")))})}function H6(e){let[t,n,r]=e.shape;return B(()=>{let s=e.reshape([t*n,r]).argMax(0),i=s.div(Ie(n,"int32")).expandDims(1),o=use(s,n).expandDims(1);return lt([i,o],1)})}var j6=ba.poseChain.map(([e,t])=>[ba.partIds[e],ba.partIds[t]]),c2=j6.map(([,e])=>e),G6=j6.map(([e])=>e),cse=16;function hse(e,t,n){let r=n.shape[2]/2;return{y:n.get(t.y,t.x,e),x:n.get(t.y,t.x,r+e)}}function h2(e,t,n,r){return{y:l2(Math.round(e.y/t),0,n-1),x:l2(Math.round(e.x/t),0,r-1)}}function q6(e,t,n,r,a,s,i,o=2){let[l,u]=r.shape,c=h2(t.position,s,l,u),h=hse(e,c,i),p=u2(t.position,h);for(let A=0;A=0;--d){let p=c2[d],f=G6[d];l[p]&&!l[f]&&(l[f]=q6(d,l[p],f,t,n,r,s))}for(let d=0;d(r+=f,{position:{y:c.get(m,0),x:c.get(m,1)},part:ba.partNames[m],score:f})),p=d.filter(f=>f.score>n);return a.dispose(),u.dispose(),{keypoints:p,score:r/d.length}}var dse=1,Z6=16;function Y6(e,t,{x:n,y:r},a){return e.some(({keypoints:s})=>{let i=s[a].position;return B6(r,n,i.y,i.x)<=t})}function pse(e,t,n){return n.reduce((a,{position:s,score:i},o)=>(Y6(e,t,s,o)||(a+=i),a),0)/n.length}function J6(e,t,n,r,a,s,i){let o=[],l=L6(i,dse,e),u=a^2;for(;o.lengthi&&o.push({keypoints:d,score:p})}return o}async function Q6(e){return Promise.all(e.map(t=>t.buffer()))}function fse(e,t,n){return{score:e.score,keypoints:e.keypoints.map(({score:r,part:a,position:s})=>({score:r,part:a,position:{x:Math.trunc(s.x*n),y:Math.trunc(s.y*t)}}))}}function e4(e,[t,n]){let r=e.squeeze(0),a=r.resizeBilinear([t,n]);return r.dispose(),a}function d2(e,[t,n],[r,a]){return e.map(i=>fse(i,t/r,n/a))}async function mse(e,t,n,r){return new Promise(async a=>{let s=await Q6([t.heatmapScores,t.offsets,t.displacementFwd,t.displacementBwd]),i=s[0],o=s[1],l=s[2],u=s[3],c=await J6(i,o,l,u,n.body.nmsRadius,n.body.maxDetections,n.body.scoreThreshold),h=d2(c,[e.shape[1],e.shape[2]],[r,r]);a(h)})}async function Ase(e,t,n,r){return new Promise(async a=>{let s=await K6(t.heatmapScores,t.offsets,n.body.scoreThreshold),i=d2([s],[e.shape[1],e.shape[2]],[r,r]);a(i)})}var f2=class{constructor(t){this.baseModel=t,this.inputSize=t.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(t,n){let r=e4(t,[this.inputSize,this.inputSize]),a=this.baseModel.predict(r,n),s=n.body.maxDetections<2?await Ase(t,a,n,this.inputSize):await mse(t,a,n,this.inputSize);return a.heatmapScores.dispose(),a.offsets.dispose(),a.displacementFwd.dispose(),a.displacementBwd.dispose(),r.dispose(),s}dispose(){this.baseModel.dispose()}};async function m2(e){let t=await Ot(e.body.modelPath),n=new n2(t);return e.debug&&Fe(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`),new f2(n)}var w2={};xr(w2,{HandPose:()=>_2,load:()=>v2});function M0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Kc(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function t4(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return tt.cropAndResize(t,s,[0],n)}function n4(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],a=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:n,endPoint:r,palmLandmarks:a,confidence:e.confidence}}function $0(e,t=1.5){let n=Kc(e),r=M0(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function D0(e){let t=Kc(e),n=M0(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}var A2=class{constructor(t,n,r){this.model=t,this.anchors=r.map(a=>[a.x_center,a.y_center]),this.anchorsTensor=En(this.anchors),this.inputSize=n,this.inputSizeTensor=hn([n,n]),this.doubleInputSizeTensor=hn([n*2,n*2])}normalizeBoxes(t){return B(()=>{let n=$e(t,[0,0],[-1,2]),r=$e(t,[0,2],[-1,2]),a=ie(be(n,this.inputSizeTensor),this.anchorsTensor),s=be(r,this.doubleInputSizeTensor),i=P(we(a,s),this.inputSizeTensor),o=P(ie(a,s),this.inputSizeTensor);return yl([i,o],1)})}normalizeLandmarks(t,n){return B(()=>{let r=ie(be(t.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[n]);return P(r,this.inputSizeTensor)})}async getBoxes(t,n){let r=this.model.predict(t),a=r.squeeze();r.dispose();let s=B(()=>On($e(a,[0,0],[-1,1])).squeeze()),i=s.dataSync(),o=$e(a,[0,1],[-1,4]),l=this.normalizeBoxes(o);o.dispose();let u=await tt.nonMaxSuppressionAsync(l,i,n.hand.maxHands,n.hand.iouThreshold,n.hand.scoreThreshold),c=u.arraySync();s.dispose(),u.dispose();let h=[];for(let d of c)if(i[d]>=n.hand.minConfidence){let p=$e(l,[d,0],[1,-1]),f=$e(a,[d,5],[1,14]),m=B(()=>this.normalizeLandmarks(f,d).reshape([-1,2]));f.dispose(),h.push({box:p,palmLandmarks:m,confidence:i[d]})}return a.dispose(),l.dispose(),h}async estimateHandBounds(t,n){let r=t.shape[1],a=t.shape[2],s=B(()=>t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),i=await this.getBoxes(s,n);s.dispose();let o=[];if(!i||i.length===0)return o;for(let l of i){let u=l.box.dataSync(),c=u.slice(0,2),h=u.slice(2,4),d=l.palmLandmarks.arraySync();l.box.dispose(),l.palmLandmarks.dispose(),o.push(n4({startPoint:c,endPoint:h,palmLandmarks:d,confidence:l.confidence},[a/this.inputSize,r/this.inputSize]))}return o}};function yse(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function r4(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return yse(n)}var a4=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function is(e,t){let n=0;for(let r=0;rg2([...s,1],n)),a=this.calculateLandmarksBoundingBox(r);return $0(D0(a),xse)}getBoxForHandLandmarks(t){let n=this.calculateLandmarksBoundingBox(t),r=$0(D0(n),o4);r.palmLandmarks=[];for(let a=0;a[i[0]*(p[0]-this.inputSize/2),i[1]*(p[1]-this.inputSize/2),i[2]*p[2]]),l=y2(r,[0,0]),u=o.map(p=>[...g2(p,l),p[2]]),c=i4(a),h=[...Kc(n),1],d=[is(h,c[0]),is(h,c[1])];return u.map(p=>[p[0]+d[0],p[1]+d[1],p[2]])}async estimateHands(t,n){let r=!1,a;(this.skipped===0||this.skipped>n.hand.skipFrames||!n.hand.landmarks||!n.videoOptimized)&&(a=await this.handDetector.estimateHandBounds(t,n),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.length>0&&(a.length!==this.detectedHands&&this.detectedHands!==n.hand.maxHands||!n.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...a],this.storedBoxes.length>0&&(r=!0));let s=[];n.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let i=0;i=n.hand.minConfidence){let b=G(y,[-1,3]),_=b.arraySync();y.dispose(),b.dispose();let w=this.transformRawCoords(_,p,l,d),x=this.getBoxForHandLandmarks(w);this.storedBoxes[i]=x;let N={landmarks:w,confidence:g,box:{topLeft:x.startPoint,bottomRight:x.endPoint}};s.push(N)}else this.storedBoxes[i]=null;y.dispose()}else{let l=$0(D0(o),o4),u={confidence:o.confidence,box:{topLeft:l.startPoint,bottomRight:l.endPoint}};s.push(u)}}return this.storedBoxes=this.storedBoxes.filter(i=>i!==null),this.detectedHands=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s}}};var u4=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var b2={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},_2=class{constructor(t){this.handPipeline=t}static getAnnotations(){return b2}async estimateHands(t,n){let r=await this.handPipeline.estimateHands(t,n);if(!r)return[];let a=[];for(let s of r){let i={};if(s.landmarks)for(let l of Object.keys(b2))i[l]=b2[l].map(u=>s.landmarks[u]);let o=s.box?[Math.max(0,s.box.topLeft[0]),Math.max(0,s.box.topLeft[1]),Math.min(t.shape[2],s.box.bottomRight[0])-s.box.topLeft[0],Math.min(t.shape[1],s.box.bottomRight[1])-s.box.topLeft[1]]:0;a.push({confidence:s.confidence,box:o,landmarks:s.landmarks,annotations:i})}return a}};async function v2(e){let[t,n]=await Promise.all([e.hand.enabled?Ot(e.hand.detector.modelPath,{fromTFHub:e.hand.detector.modelPath.includes("tfhub.dev")}):null,e.hand.landmarks?Ot(e.hand.skeleton.modelPath,{fromTFHub:e.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),r=new A2(t,t==null?void 0:t.inputs[0].shape[2],u4),a=new x2(r,n,n==null?void 0:n.inputs[0].shape[2]),s=new _2(a);return e.hand.enabled&&e.debug&&Fe(`load model: ${e.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),e.hand.landmarks&&e.debug&&Fe(`load model: ${e.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),s}var k2={};xr(k2,{load:()=>I2,predict:()=>N2});var c4=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],h4=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var yr;async function I2(e){return yr||(yr=await Ot(e.body.modelPath),yr.width=parseInt(yr.signature.inputs["input_1:0"].tensorShape.dim[2].size),yr.height=parseInt(yr.signature.inputs["input_1:0"].tensorShape.dim[1].size),e.debug&&Fe(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`)),yr}async function N2(e,t){if(!yr||!t.body.enabled)return null;let n={width:e.shape[2],height:e.shape[1]},r=tt.resizeBilinear(e,[yr.width,yr.height],!1),a=be(r,[255]);r.dispose();let s;if(t.profile){let u=await kr(()=>yr.predict(a));s=u.result.find(c=>c.size===195||c.size===155).dataSync(),u.result.forEach(c=>c.dispose()),Qr("blazepose",u)}else{let u=await yr.predict(a);s=u.find(c=>c.size===195||c.size===155).dataSync(),u.forEach(c=>c.dispose())}a.dispose();let i=[],o=s.length===195?c4:h4,l=5;for(let u=0;u{if(!e)return[];let t=[];for(let n=0;nl.part==="leftWrist"),a=e[n].keypoints.find(l=>l.part==="rightWrist"),s=e[n].keypoints.find(l=>l.part==="nose");s&&r&&a&&r.position.yl.part==="leftShoulder"),o=e[n].keypoints.find(l=>l.part==="rightShoulder");i&&o&&t.push({body:n,gesture:`leaning ${i.position.y>o.position.y?"left":"right"}`})}return t},p4=e=>{if(!e)return[];let t=[];for(let n=0;n0){let r=e[n].mesh[33][2]-e[n].mesh[263][2];Math.abs(r)<10?t.push({face:n,gesture:"facing camera"}):t.push({face:n,gesture:`facing ${r<0?"right":"left"}`}),Math.abs(e[n].mesh[374][1]-e[n].mesh[386][1])/Math.abs(e[n].mesh[443][1]-e[n].mesh[450][1])<.2&&t.push({face:n,gesture:"blink left eye"}),Math.abs(e[n].mesh[145][1]-e[n].mesh[159][1])/Math.abs(e[n].mesh[223][1]-e[n].mesh[230][1])<.2&&t.push({face:n,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[n].mesh[13][1]-e[n].mesh[14][1])/Math.abs(e[n].mesh[10][1]-e[n].mesh[152][1]));i>10&&t.push({face:n,gesture:`mouth ${Math.trunc(i)}% open`});let o=e[n].mesh[152][2];Math.abs(o)>10&&t.push({face:n,gesture:`head ${o<0?"up":"down"}`})}return t},f4=e=>{if(!e)return[];let t=[];for(let n=0;n{if(!e)return[];let t=[];for(let n=0;n0){let a=r.reduce((i,o)=>i.position[2]i.position[1](u[d]=0,h))},a=function(o,l){let u=e.createShader(l);if(e.shaderSource(u,o),e.compileShader(u),!e.getShaderParameter(u,e.COMPILE_STATUS))throw new Error("Filter: GL compile failed",e.getShaderInfoLog(u));return u};this.uniform={},this.attribute={};let s=a(t,e.VERTEX_SHADER),i=a(n,e.FRAGMENT_SHADER);if(this.id=e.createProgram(),e.attachShader(this.id,s),e.attachShader(this.id,i),e.linkProgram(this.id),!e.getProgramParameter(this.id,e.LINK_STATUS))throw new Error("Filter: GL link failed",e.getProgramInfoLog(this.id));e.useProgram(this.id),r(t,"attribute",this.attribute);for(let o in this.attribute)this.attribute[o]=e.getAttribLocation(this.id,o);r(t,"uniform",this.uniform),r(n,"uniform",this.uniform);for(let o in this.uniform)this.uniform[o]=e.getUniformLocation(this.id,o)}function A4(e){e||(e={});let t=0,n=null,r=!1,a=-1,s=[null,null],i=[],o=-1,l=-1,u=null,c=null,h={},d=e.canvas||document.createElement("canvas"),p={},f={INTERMEDIATE:1},m=d.getContext("webgl");if(!m)throw new Error("Filter: getContext() failed");this.addFilter=function(w){let x=Array.prototype.slice.call(arguments,1),N=h[w];i.push({func:N,args:x})},this.reset=function(){i=[]};let A=function(w,x){if(!(w===o&&x===l)){if(d.width=w,o=w,d.height=x,l=x,!u){let N=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);u=m.createBuffer(),m.bindBuffer(m.ARRAY_BUFFER,u),m.bufferData(m.ARRAY_BUFFER,N,m.STATIC_DRAW),m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}m.viewport(0,0,o,l),s=[null,null]}},y=function(w,x){let N=m.createFramebuffer();m.bindFramebuffer(m.FRAMEBUFFER,N);let S=m.createRenderbuffer();m.bindRenderbuffer(m.RENDERBUFFER,S);let T=m.createTexture();return m.bindTexture(m.TEXTURE_2D,T),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,w,x,0,m.RGBA,m.UNSIGNED_BYTE,null),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,m.TEXTURE_2D,T,0),m.bindTexture(m.TEXTURE_2D,null),m.bindFramebuffer(m.FRAMEBUFFER,null),{fbo:N,texture:T}},g=function(w){return s[w]=s[w]||y(o,l),s[w]},b=function(w=null){var T,M;let x=null,N=null,S=!1;t===0?x=n:x=(T=g(a))==null?void 0:T.texture,t++,r&&!(w&f.INTERMEDIATE)?(N=null,S=t%2==0):(a=(a+1)%2,N=(M=g(a))==null?void 0:M.fbo),m.bindTexture(m.TEXTURE_2D,x),m.bindFramebuffer(m.FRAMEBUFFER,N),m.uniform1f(c.uniform.flipY,S?-1:1),m.drawArrays(m.TRIANGLES,0,6)};this.apply=function(w){if(A(w.width,w.height),t=0,n||(n=m.createTexture()),m.bindTexture(m.TEXTURE_2D,n),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,w),i.length===0)return b(),d;for(let x=0;x{let c=[];e=G(e,[1,r,o]);for(let h=0;h{switch(e.op){case"If":case"StatelessIf":{let r=k("thenBranch",e,t,n),a=k("elseBranch",e,t,n),s=k("cond",e,t,n),i=k("args",e,t,n);return(await s.data())[0]?n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let r=k("body",e,t,n),a=k("cond",e,t,n),s=k("args",e,t,n),i=await n.functionMap[a].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(c=>c.id),l=await i[0].data();i.forEach(c=>{!c.kept&&o.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;l[0];){let c=u;u=await n.functionMap[r].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);let h=u.map(p=>p.id);c.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()});let d=await n.functionMap[a].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()})}return u}case"LoopCond":{let r=k("pred",e,t,n);return[xa(r)]}case"Switch":{let r=k("pred",e,t,n),a=k("data",e,t,n);return a.kept||(a=xa(a)),(await r.data())[0]?[void 0,a]:[a,void 0]}case"Merge":{let r=e.inputNames.find(a=>$n(a,t,n)!==void 0);if(r){let a=$n(r,t,n);return[xa(a)]}return}case"Enter":{let r=k("frameName",e,t,n),a=k("tensor",e,t,n);return n.enterFrame(r),[xa(a)]}case"Exit":{let r=k("tensor",e,t,n);return n.exitFrame(),[xa(r)]}case"NextIteration":{let r=k("tensor",e,t,n);return n.nextIteration(),[xa(r)]}case"TensorArrayV3":{let r=k("size",e,t,n),a=k("dtype",e,t,n),s=k("elementShape",e,t,n),i=k("dynamicSize",e,t,n),o=k("clearAfterRead",e,t,n),l=k("identicalElementShapes",e,t,n),u=k("name",e,t,n),c=new Sre(u,a,r,s,l,i,o);return n.addTensorArray(c),[c.idTensor,Ie(1)]}case"TensorArrayWriteV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.write(a,s),[i.idTensor]}case"TensorArrayReadV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n);return[n.getTensorArray(r.id).read(a)]}case"TensorArrayGatherV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("dtype",e,t,n);return[n.getTensorArray(r.id).gather(a,s)]}case"TensorArrayScatterV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.scatter(a,s),[i.idTensor]}case"TensorArrayConcatV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id),s=k("dtype",e,t,n);return[a.concat(s)]}case"TensorArraySplitV3":{let r=k("tensorArrayId",e,t,n),a=k("tensor",e,t,n),s=k("lengths",e,t,n),i=n.getTensorArray(r.id);return i.split(s,a),[i.idTensor]}case"TensorArraySizeV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return[Ie(a.size(),"int32")]}case"TensorArrayCloseV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return a.clearAndClose(),[a.idTensor]}case"TensorListSetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorList(r.id);return i.setItem(a,s),[i.idTensor]}case"TensorListGetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(a,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let r=k("indices",e,t,n),a=k("tensor",e,t,n),s=k("elementShape",e,t,n),i=k("numElements",e,t,n),o=Cre(a,r,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let r=k("elementShape",e,t,n),a=k("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=k(s,e,t,n),o=Ere(r,a,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let r=k("tensorListId",e,t,n),a=k("indices",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).gather(a,i,s)]}case"TensorListStack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=k("numElements",e,t,n);return[n.getTensorList(r.id).stack(a,s,i)]}case"TensorListFromTensor":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=Tre(r,a,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let r=k("tensorListId",e,t,n),a=n.getTensorList(r.id),s=k("dtype",e,t,n),i=k("elementShape",e,t,n);return[a.concat(s,i)]}case"TensorListPushBack":{let r=k("tensorListId",e,t,n),a=k("tensor",e,t,n),s=n.getTensorList(r.id);return s.pushBack(a),[s.idTensor]}case"TensorListPopBack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(a,s)]}case"TensorListSplit":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("lengths",e,t,n),i=Rre(r,s,a);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function e6(e,t,n){let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=r==="fusedbatchnorm",l=k("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let u=k("strides",e,t,n),c=A0(e,t,n),h=k("dataFormat",e,t,n).toUpperCase(),d=k("dilations",e,t,n),[p,f]=k("args",e,t,n),m=k("leakyreluAlpha",e,t,n);return{stride:u,pad:c,dataFormat:h,dilations:d,biasArg:p,preluArg:f,activationFunc:a,leakyreluAlpha:m}}var Mre=(e,t,n)=>{switch(e.op){case"Conv1D":{let r=k("stride",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilation",e,t,n);return[Nd(k("x",e,t,n),k("filter",e,t,n),r,a,s,i)]}case"Conv2D":{let r=k("strides",e,t,n),a=A0(e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[ua(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=e6(e,t,n);return[ja.conv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"FusedDepthwiseConv2dNative":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=e6(e,t,n);return[ja.depthwiseConv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let r=k("outputShape",e,t,n),a=k("strides",e,t,n),s=A0(e,t,n);return[Sd(k("x",e,t,n),k("filter",e,t,n),r,[a[1],a[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let r=k("strides",e,t,n),a=A0(e,t,n),s=k("dilations",e,t,n),i=k("dataFormat",e,t,n).toUpperCase();return[gl(k("input",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,i,[s[1],s[2]])]}case"Conv3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[cm(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2],r[3]],a,s,[i[1],i[2],i[3]])]}case"AvgPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Xu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[tc(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPoolWithArgmax":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n),i=k("includeBatchInIndex",e,t,n),{result:o,indexes:l}=Sx(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a,i);return[o,l]}case"AvgPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[om(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"MaxPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[bm(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"Dilation2D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dilations",e,t,n),i=r[1],o=r[2],l=s[1],u=s[2];return[dm(k("x",e,t,n),k("filter",e,t,n),[i,o],a,[l,u],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},$re=(e,t,n)=>{switch(e.op){case"Fill":{let r=k("shape",e,t,n),a=k("dtype",e,t,n),s=k("value",e,t,n);return[Ju(r,s,a)]}case"LinSpace":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("num",e,t,n);return[wx(r,a,s)]}case"Multinomial":{let r=k("logits",e,t,n),a=k("numSamples",e,t,n),s=k("seed",e,t,n);return[Tx(r,a,s)]}case"OneHot":{let r=k("indices",e,t,n),a=k("depth",e,t,n),s=k("onValue",e,t,n),i=k("offValue",e,t,n);return[hl(r,a,s,i)]}case"Ones":return[Vr(k("shape",e,t,n),k("dtype",e,t,n))];case"OnesLike":return[Pn(k("x",e,t,n))];case"RandomUniform":return[kl(k("shape",e,t,n),k("minval",e,t,n),k("maxval",e,t,n),k("dtype",e,t,n))];case"Range":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("step",e,t,n);return[Pd(r,a,s,k("dtype",e,t,n))]}case"TruncatedNormal":{let r=k("shape",e,t,n),a=k("mean",e,t,n),s=k("stdDev",e,t,n),i=k("seed",e,t,n);return[Xd(r,a,s,k("dtype",e,t,n),i)]}case"Zeros":return[$t(k("shape",e,t,n),k("dtype",e,t,n))];case"ZerosLike":return[qe(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Ig(e,t,n){let r=k("boxes",e,t,n),a=k("scores",e,t,n),s=k("maxOutputSize",e,t,n),i=k("iouThreshold",e,t,n),o=k("scoreThreshold",e,t,n),l=k("softNmsSigma",e,t,n);return{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var Dre=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=Ig(e,t,n),u=await tt.nonMaxSuppressionWithScoreAsync(r,a,s,i,o,l);return[u.selectedIndices,u.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=Ig(e,t,n),l=k("padToMaxOutputSize",e,t,n),u=await tt.nonMaxSuppressionPaddedAsync(r,a,s,i,o,l);return[u.selectedIndices,u.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=Ig(e,t,n);return[await tt.nonMaxSuppressionAsync(r,a,s,i,o)]}case"Where":{let r=ge(k("condition",e,t,n),"bool"),a=[await Dm(r)];return r.dispose(),a}case"ListDiff":return Rx(k("x",e,t,n),k("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},Ore=(e,t,n)=>{switch(e.op){case"TopKV2":{let r=k("x",e,t,n),a=k("k",e,t,n),s=k("sorted",e,t,n),i=Mm(r,a,s);return[i.values,i.indices]}case"Unique":{let r=k("x",e,t,n),a=Kd(r);return[a.values,a.indices]}case"UniqueV2":{let r=k("x",e,t,n),a=k("axis",e,t,n),s=Kd(r,a);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},zre=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let r=k("default",e,t,n);return[$n(e.name,t,n)||r];case"Placeholder":return[$n(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let u=k("x",e,t,n);return[xa(u)]}case"IdentityN":return k("x",e,t,n).map(u=>xa(u));case"Snapshot":let a=k("x",e,t,n);return[xa(a)];case"Shape":return[hn(k("x",e,t,n).shape,"int32")];case"ShapeN":return k("x",e,t,n).map(u=>hn(u.shape));case"Size":return[Ie(k("x",e,t,n).size,"int32")];case"Rank":return[Ie(k("x",e,t,n).rank,"int32")];case"NoOp":return[Ie(1)];case"Print":let s=k("x",e,t,n),i=k("data",e,t,n),o=k("message",e,t,n),l=k("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let u=0;ue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return Ie(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(r=>r.dispose()),this.tensorMap.clear(),B(()=>{let r=hr(t),a=n.length,s=r.length;v.assert(a===s,()=>`The number of elements doesn't match, keys has ${a} elements, the values has ${s} elements.`);for(let i=0;i{let r=[];for(let a=0;a{switch(e.op){case"HashTable":case"HashTableV2":{let a=k("keyDType",e,t,n),s=k("valueDType",e,t,n),i=new Pre(a,s);return r.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("values",e,t,n);return[await r.getHashTableById(a.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("defaultValue",e,t,n);return[await r.getHashTableById(a.id).find(s,i)]}case"LookupTableSize":case"LookupTableSizeV2":{let a=k("tableHandle",e,t,n,r);return[r.getHashTableById(a.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Wre=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[tt.resizeBilinear(r,[a[0],a[1]],s,i)]}case"ResizeNearestNeighbor":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[tt.resizeNearestNeighbor(r,[a[0],a[1]],s,i)]}case"CropAndResize":{let r=k("image",e,t,n),a=k("boxes",e,t,n),s=k("boxInd",e,t,n),i=k("cropSize",e,t,n),o=k("method",e,t,n),l=k("extrapolationValue",e,t,n);return[tt.cropAndResize(r,a,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Bre=(e,t,n)=>{switch(e.op){case"Equal":return[Ba(k("a",e,t,n),k("b",e,t,n))];case"NotEqual":return[xi(k("a",e,t,n),k("b",e,t,n))];case"Greater":return[ur(k("a",e,t,n),k("b",e,t,n))];case"GreaterEqual":return[Ua(k("a",e,t,n),k("b",e,t,n))];case"Less":return[Rd(k("a",e,t,n),k("b",e,t,n))];case"LessEqual":return[yi(k("a",e,t,n),k("b",e,t,n))];case"LogicalAnd":return[cr(k("a",e,t,n),k("b",e,t,n))];case"LogicalNot":return[ec(k("a",e,t,n))];case"LogicalOr":return[Dd(k("a",e,t,n),k("b",e,t,n))];case"Select":case"SelectV2":return[Tn(k("condition",e,t,n),k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Vre=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[Ke(k("a",e,t,n),k("b",e,t,n),k("transposeA",e,t,n),k("transposeB",e,t,n))];case"Transpose":return[ot(k("x",e,t,n),k("perm",e,t,n))];case"_FusedMatMul":let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=k("numArgs",e,t,n),l=k("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[u,c]=k("args",e,t,n);return[ja.matMul({a:k("a",e,t,n),b:k("b",e,t,n),transposeA:k("transposeA",e,t,n),transposeB:k("transposeB",e,t,n),bias:u,activation:a,preluActivationWeights:c,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Ure=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[mi(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"FusedBatchNormV3":return[mi(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"LRN":return[ym(k("x",e,t,n),k("radius",e,t,n),k("bias",e,t,n),k("alpha",e,t,n),k("beta",e,t,n))];case"Softmax":return[ic(k("x",e,t,n))];case"LogSoftmax":return[$d(k("x",e,t,n))];case"SparseToDense":return[Om(k("sparseIndices",e,t,n),k("outputShape",e,t,n),k("sparseValues",e,t,n),k("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},Hre=(e,t,n)=>{switch(e.op){case"Max":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Qn(k("x",e,t,n),i,o)]}case"Mean":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Tt(k("x",e,t,n),i,o)]}case"Min":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[_l(k("x",e,t,n),i,o)]}case"Sum":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Re(k("x",e,t,n),i,o)]}case"All":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[kd(k("x",e,t,n),i,o)]}case"Any":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[ju(k("x",e,t,n),i,o)]}case"ArgMax":{let i=k("axis",e,t,n);return[Gu(k("x",e,t,n),i)]}case"ArgMin":{let i=k("axis",e,t,n);return[Qf(k("x",e,t,n),i)]}case"Prod":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[zd(k("x",e,t,n),i,o)]}case"Cumsum":{let i=k("axis",e,t,n),o=k("exclusive",e,t,n),l=k("reverse",e,t,n);return[Ed(k("x",e,t,n),i,o,l)]}case"Bincount":let r=k("x",e,t,n),a=k("weights",e,t,n),s=k("size",e,t,n);return[cx(r,a,s)];case"DenseBincount":{let i=k("x",e,t,n),o=k("weights",e,t,n),l=k("size",e,t,n),u=k("binaryOutput",e,t,n);return[mx(i,o,l,u)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},jre=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let r=k("n",e,t,n),a=k("axis",e,t,n),s=k("tensors",e,t,n);return s=s.slice(0,r),[lt(s,a)]}case"Gather":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[Ai(r,ge(a,"int32"),0)]}case"GatherV2":{let r=k("axis",e,t,n),a=k("batchDims",e,t,n),s=k("x",e,t,n),i=k("indices",e,t,n);return[Ai(s,ge(i,"int32"),r,a)]}case"Reverse":{let r=k("dims",e,t,n),a=[];for(let i=0;i{let r=k("axis",e,t,n),a=k("tensors",e,t,n),s=a[0].shape,i=Ha(a[0]).shape,o=a.map(l=>{let u=v.arraysEqual(l.shape,s);if(!u&&!v.arraysEqual(Ha(l).shape,i))throw new Error("the input tensors shape does not match");return u?l:G(l,s)});return[An(o,r)]});case"Unpack":{let r=k("axis",e,t,n),a=k("tensor",e,t,n);return hr(a,r)}case"Tile":{let r=k("reps",e,t,n);return[Va(k("x",e,t,n),r)]}case"Split":case"SplitV":{let r=k("axis",e,t,n),a=k("numOrSizeSplits",e,t,n),s=k("x",e,t,n);return Ut(s,a,r)}case"ScatterNd":{let r=k("indices",e,t,n),a=k("values",e,t,n),s=k("shape",e,t,n);return[Dx(r,a,s)]}case"GatherNd":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[Ox(r,a)]}case"SparseToDense":{let r=k("sparseIndices",e,t,n),a=k("outputShape",e,t,n),s=k("sparseValues",e,t,n),i=k("defaultValue",e,t,n);return[Om(r,s,a,s.dtype===i.dtype?i:ge(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Gre=(e,t,n)=>{switch(e.op){case"FFT":return[oc(k("x",e,t,n))];case"IFFT":return[Il(k("x",e,t,n))];case"RFFT":return[lc(k("x",e,t,n))];case"IRFFT":return[Gd(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},qre=(e,t,n)=>{switch(e.op){case"Cast":return[ge(k("x",e,t,n),k("dtype",e,t,n))];case"ExpandDims":{let r=k("axis",e,t,n);return[mn(k("x",e,t,n),r)]}case"Squeeze":{let r=k("axis",e,t,n);return[Ha(k("x",e,t,n),r)]}case"Reshape":return[G(k("x",e,t,n),k("shape",e,t,n))];case"MirrorPad":return[_m(k("x",e,t,n),k("padding",e,t,n),k("mode",e,t,n))];case"PadV2":case"Pad":return[ca(k("x",e,t,n),k("padding",e,t,n),k("constantValue",e,t,n))];case"SpaceToBatchND":{let r=k("blockShape",e,t,n),a=k("paddings",e,t,n);return[nc(k("x",e,t,n),r,a)]}case"BatchToSpaceND":{let r=k("blockShape",e,t,n),a=k("crops",e,t,n);return[Ku(k("x",e,t,n),r,a)]}case"DepthToSpace":{let r=k("blockSize",e,t,n),a=k("dataFormat",e,t,n).toUpperCase();return[hm(k("x",e,t,n),r,a)]}case"BroadcastTo":return[Zu(k("x",e,t,n),k("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function t6(e,t,n,r){let a=((s,i,o)=>{switch(s.category){case"arithmetic":return B(()=>Ire(s,i,o));case"basic_math":return B(()=>Nre(s,i,o));case"control":return Fre(s,i,o);case"convolution":return B(()=>Mre(s,i,o));case"creation":return B(()=>$re(s,i,o));case"dynamic":return Dre(s,i,o);case"evaluation":return B(()=>Ore(s,i,o));case"image":return B(()=>Wre(s,i,o));case"graph":return B(()=>zre(s,i,o));case"logical":return B(()=>Bre(s,i,o));case"matrices":return B(()=>Vre(s,i,o));case"normalization":return B(()=>Ure(s,i,o));case"reduction":return B(()=>Hre(s,i,o));case"slice_join":return B(()=>jre(s,i,o));case"spectral":return B(()=>Gre(s,i,o));case"transformation":return B(()=>qre(s,i,o));case"hash_table":return Lre(s,i,o,r);case"custom":let l=Rv(s.op);if(l&&l.customExecutor)return l.customExecutor(new kre(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(a)?a.then(s=>[].concat(s)):[].concat(a)}var n6=class{constructor(e={},t={},n={},r={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function a6(e,t,n,r){let a=new Set,s=[],i=null,o=null,l=new Set,u=Object.keys(e).map(d=>Hn(d)[0]),c=[];r!=null&&(c=r.map(d=>Hn(d.name)[0]));let h=[...t];for(;h.length>0;){let d=h.pop();if((r6(d)||Xre(d)||Kre(d))&&i==null&&(i=d,o=i.children.map(p=>p.name).filter(p=>a.has(p))),a.add(d.name),n[d.name]==null&&u.indexOf(d.name)===-1&&c.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(p=>{l.has(p.name)||(l.add(p.name),h.push(p))})}}return{inputs:e,outputs:t,usedNodes:a,missingInputs:s,dynamicNode:i,syncInputs:o}}function Zre(e,t,n){let{usedNodes:r,inputs:a}=n,s=[],i=Object.keys(a).map(c=>Hn(c)[0]).map(c=>e.nodes[c]),o=e.initNodes;i.forEach(c=>{r.has(c.name)&&s.push(c)}),e.weights.forEach(c=>{r.has(c.name)&&s.push(c)}),o!=null&&o.forEach(c=>{r.has(c.name)&&s.push(c)});let l=new Set,u=[];for(;s.length>0;){let c=s.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(h=>{!l.has(h.name)&&r.has(h.name)&&h.inputs.every(d=>l.has(d.name))&&s.push(h)})}return u}var Yre=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],Jre=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],Qre=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function r6(e){return Yre.indexOf(e.op)>=0}function Xre(e){return Jre.indexOf(e.op)>=0}function Kre(e){return Qre.indexOf(e.op)>=0}var Ng=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new Ng(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(r=>r.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(a=>a.name).sort(),r=t.map(a=>a.name).sort();return n.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)}compile(e,t){let n=a6(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:a,syncInputs:s}=n;if(a!=null)throw new Error(`This execution contains the node '${a.name}', which has the dynamic op '${a.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(r.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${r}]`)}return Zre(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let r=n.map(c=>this.graph.nodes[Hn(c)[0]]),a=t.map(c=>Hn(c)[0]),s=a.map(c=>this.graph.nodes[c]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(r,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},u={};return B(()=>{let c=new n6(this.weightMap,l,u,this.functionExecutorMap),h=Object.assign({},this.weightMap);Object.keys(e).forEach(f=>{let[m,A]=Hn(f),y=[];y[A]=e[f],h[m]=y});let d=this.getFrozenTensorIds(h),p={};for(let f=0;f$n(f,h,c))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(r=>r.id)));return new Set(t)}checkTensorForDisposal(e,t,n,r,a,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=sre(o.name,n,r);l!=null&&l.forEach(u=>{if(u&&!a.has(u.id)){let c=i[u.id];c===1?(u.dispose(),delete i[u.id]):c!=null&&i[u.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,r={},a={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new n6(this.weightMap,r,a,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(h=>$n(h,i,s)),l=o.map(h=>h.id),u=Object.keys(e).map(h=>e[h].id),c=new Set([...l,...u,...this.weightIds]);return Object.keys(i).forEach(h=>{i[h].forEach(d=>{d&&!d.isDisposed&&!c.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(c),o}async executeFunctionAsync(e,t,n){let r=e.reduce((a,s,i)=>(a[this.inputs[i].name]=s,a),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){let a=Object.keys(e),s=a.map(g=>this.graph.nodes[Hn(g)[0]]),i=n.map(g=>Hn(g)[0]),o=i.map(g=>this.graph.nodes[g]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:u,dynamicNode:c,syncInputs:h}=a6(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(g=>({node:g,contexts:t.currentContext})),p=Object.assign({},this.weightMap);Object.keys(e).forEach(g=>{let[b,_]=Hn(g),w=[];w[_]=e[g],p[b]=w});let f={},m=this.getFrozenTensorIds(p),A={};for(;d.length>0;){let g=this.processStack(s,d,t,p,A,m,i,f,l);await Promise.all(g)}c==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(g=>!r6(g)&&!$n(g.name,p,t)).map(g=>g.name);if(y.length>0){let g="";throw c!=null&&(g=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${h}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${a}]. Consider providing the following inputs: [${u}]. ${g}`)}return p}processStack(e,t,n,r,a,s,i,o,l){let u=[];for(;t.length>0;){let c=t.pop();n.currentContext=c.contexts;let h="";if(c.node.op==="Enter"&&k("isConstant",c.node,r,n)&&([h]=ga(c.node.name,n)),r[c.node.name]==null){let d=t6(c.node,r,n,this._resourceManager);h||([h]=ga(c.node.name,n));let p=n.currentContext;v.isPromise(d)?u.push(d.then(f=>(r[h]=f,n.currentContext=p,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l),f))):(r[h]=d,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l))}else this.processChildNodes(c.node,t,n,r,a,l)}return u}processChildNodes(e,t,n,r,a,s){e.children.forEach(i=>{let[o]=ga(i.name,n);a[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!$n(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!$n(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[r]=Hn(t),a=this.graph.nodes[r];if(a.attrParams.shape&&a.attrParams.shape.value){let s=a.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);v.assert(i,()=>`The shape of dict['${a.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}a.attrParams.dtype&&a.attrParams.dtype.value&&v.assert(n.dtype===a.attrParams.dtype.value,()=>`The dtype of dict['${a.name}'] provided in model.execute(dict) must be ${a.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let r=this._signature.inputs[n];t[r.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[r]=Hn(n);return this.graph.nodes[r]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Hn(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},eae=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},tae="?tfjs-format=file",nae="model.json",s6=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new eae}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=Nn.browserHTTPRequest(e,this.loadOptions);else{let t=Nn.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(Nn.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let r=Nn.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new Ng(Zv.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let a=Zv.Instance.transformGraph(e.modelInitializer);this.initializer=new Ng(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=Nn.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof Ge)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,r)=>(t[n]=e[r],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Ot(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${nae}${tae}`);let n=new s6(e,t);return await n.load(),n}var rae="3.3.0",i6={};We(i6,{CSVDataset:()=>l6,Dataset:()=>Yl,FileDataSource:()=>u6,TextLineDataset:()=>o6,URLDataSource:()=>c6,array:()=>aae,csv:()=>iae,func:()=>oae,generator:()=>lae,microphone:()=>cae,version_data:()=>hae,webcam:()=>uae,zip:()=>sae});var dae=no(Z2()),pae=no(Z2());function fae(e,t){return y0(e,t)}function y0(e,t,n=new Map,r=new Set){if(e==null)return null;if(r.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(a.recurse)if(Jl(e)){let s=Array.isArray(e)?[]:{};r.add(e);for(let i in e){let o=e[i],l=y0(o,t,n,r);s[i]=l}return r.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,a.value),a.value}function mae(e,t=d6){return h6(e,t)}function h6(e,t,n=new Set){let r=e[0];if(n.has(r))throw new Error("Circular references are not supported.");let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(a.recurse)if(Jl(r)){let s=Array.isArray(r)?[]:{};n.add(r);for(let i in r){let o=e.map(u=>u[i]),l=h6(o,t,n);s[i]=l}return n.delete(r),s}else throw new Error(`Can't recurse into non-iterable type: ${r}`);else return a.value}function d6(e){return e===null?null:Jl(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function p6(e,t){let n=new Map;y0(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let s=await a;n.set(r,s)}}return y0(e,t,n)}function Jl(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof Ge))}function yae(e){return e==null||Aae(e)||Array.isArray(e)||typeof e=="object"&&e instanceof Ge||v.isTypedArray(e)}function Aae(e){return e===null||typeof e!="object"&&typeof e!="function"}function xae(e){return fae(e,gae)}function gae(e){return e instanceof Ge?{value:e.clone(),recurse:!1}:Jl(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var f6=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},Sg=class extends f6{constructor(){super(Sg.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let r=0;rt===!0)}rowMajorBatch(e,t=!0){return new Tae(this,e,t)}columnMajorBatch(e,t=!0,n=d6){return this.rowMajorBatch(e,t).map(r=>mae(r,n))}concatenate(e,t){return new A6(m6([this,e]),t)}take(e){return e<0||e==null?this:new Sae(this,e)}skip(e){return e<0||e==null?this:new Nae(this,e)}prefetch(e){return new g6(this,e)}shuffle(e,t){return new Mae(this,e,t)}serial(){return new Iae(this)}},wae=class extends en{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:xae(e),done:!1}}},bae=class extends en{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},Iae=class extends en{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},Nae=class extends en{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},Tae=class extends en{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},Eae=class extends en{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Me(e.value)}}},Cae=class extends en{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=br.getTensorsInContainer(e.value),n=this.transform(e.value),r=br.getTensorsInContainer(n);for(let a of t)br.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},Rae=class extends en{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},y6=class extends en{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=br.getTensorsInContainer(e.value),n=await this.transform(e.value),r=br.getTensorsInContainer(n);for(let a of t)br.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},Eg=class extends en{constructor(){super();this.outputQueue=new Sg,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},Fae=class extends Eg{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=br.getTensorsInContainer(e.value),n=this.transform(e.value),r=br.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let a of t)br.isTensorInList(a,r)||a.dispose();return!0}},A6=class extends en{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},ns;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(ns||(ns={}));var vae=class extends en{constructor(e,t=ns.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function r(s){return s instanceof en?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let a=await p6(this.iterators,r);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case ns.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case ns.SHORTEST:return{value:null,done:!0};case ns.LONGEST:default:}return this.count++,{value:a,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},g6=class extends en{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new f6(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},Mae=class extends g6{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=pae.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},Yl=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is + ${e}`);let r;return this.size===Infinity||this.size==null?r=this.size:t?r=Math.ceil(this.size/e):r=Math.floor(this.size/e),jn(async()=>(await n.iterator()).columnMajorBatch(e,t,$ae),r)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,jn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,jn(async()=>(await t.iterator()).filter(r=>B(()=>e(r))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return jn(async()=>(await t.iterator()).map(n=>B(()=>e(n))),this.size)}mapAsync(e){let t=this;return jn(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return jn(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,jn(async()=>{let r=Tg(async()=>({value:await t.iterator(),done:!1}));return _ae(r.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let r=this,a=dae.alea(t||v.now().toString());return jn(async()=>{let s=a.int32();return n&&(s+=a.int32()),(await r.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,jn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Yl.MAX_BUFFER_SIZE=1e4;function jn(e,t=null){return new class extends Yl{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function aae(e){return jn(async()=>m6(e),e.length)}function sae(e){if(!Jl(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await p6(e,r=>{if(r instanceof Yl)return{value:r.iterator(),recurse:!1};if(Jl(r))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return kae(n,ns.SHORTEST)},t)}function $ae(e){if(e===null)return null;let t=e[0];return yae(t)?{value:Dae(e),recurse:!1}:{value:null,recurse:!0}}function Dae(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof Ge?An(e):vr(e)}var o6=class extends Yl{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` +`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},g0='"',qc=Symbol("out"),x6=Symbol("field"),x0=Symbol("quote"),Cg=Symbol("quoteafterquote"),w6=Symbol("quoteinquote"),l6=class extends Yl{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new o6(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((r,a)=>(r[a]=r[a]+1||1,r),{}),n=Object.keys(t).filter(r=>t[r]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let r of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(r)===-1)throw new Error('The key "'+r+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},r={};for(let a=0;a14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(J().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new b6(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let r=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(r,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let r=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(r,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(r=>{let a=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&r({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(a),r({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((r,a)=>n.set(r,a*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),vr(n,t)}},_6=class extends en{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=hn([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,r=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,a=(1-n)/2,s=(1-r)/2,i=a+n,o=r+s;this.cropBox=En([s,a,o,i],[1,4])}else this.cropBox=En([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(J().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new _6(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=dl.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return B(()=>{let t=mn(ge(e,"float32"),0),n;n=tt.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let r=n.shape;return G(n,r.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},v6=class{},k6=class extends en{split(e){return new Oae(this,e)}},Oae=class extends k6{constructor(e,t){super();this.upstream=e,this.impl=new zae(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},zae=class extends Eg{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},Lae=class extends en{decodeUTF8(){return new Pae(this)}},Pae=class extends k6{constructor(e){super();this.upstream=e,this.impl=new Wae(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Wae=class extends Eg{constructor(e){super();if(this.upstream=e,J().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=Ik();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return J().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},I6=class extends Lae{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(J().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let r=new FileReader;r.onload=s=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},r.onabort=s=>t(new Error("Aborted")),r.onerror=s=>t(new Error(s.type));let a=this.file.slice(this.offset,n);r.readAsArrayBuffer(a)}this.offset=n}),done:!1}}};async function Vae(e,t={}){let n,r;typeof e=="string"?n=e:(n=e.url,r=Bae(e));let a=await v.fetch(n,r);if(a.ok){let s=new Uint8Array(await a.arrayBuffer());return new I6(s,t)}else throw new Error(a.statusText)}var Bae=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function N6(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var u6=class extends v6{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(N6(this.input)&&J().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new I6(this.input,this.options)}},c6=class extends v6{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return N6(this.url)?new u6(this.url,this.fileOptions).iterator():Vae(this.url,this.fileOptions)}};function iae(e,t={}){return new l6(new c6(e),t)}function oae(e){let t=Tg(e);return jn(async()=>t)}function lae(e){return jn(async()=>{let t=await e();return Tg(()=>t.next())})}async function uae(e,t){return _6.create(e,t)}async function cae(e){return b6.create(e)}var hae="3.3.0",Uae={tfjs:Nk,"tfjs-core":Sk,"tfjs-data":Tk,"tfjs-layers":Ek,"tfjs-converter":Ck,"tfjs-backend-cpu":Nw,"tfjs-backend-webgl":Xb,"tfjs-backend-wasm":P3};var Gn={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function S6(){if(!Zf(Gn.name)){Fe("backend registration:",Gn.name);try{Gn.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Gn.width,Gn.height):document.createElement("canvas")}catch(e){Fe("error: cannot create canvas:",e);return}try{Gn.gl=Gn.canvas.getContext("webgl2",Gn.webGLattr)}catch(e){Fe("error: cannot get WebGL2 context:",e);return}try{yp(2,Gn.gl)}catch(e){Fe("error: cannot set WebGL2 context:",e);return}try{let e=new bp(Gn.gl);fl(Gn.name,()=>new Ll(e),Gn.priority)}catch(e){Fe("error: cannot register WebGL backend:",e);return}try{il("webgl").forEach(t=>{let n={...t,backendName:Gn.name};ui(n)})}catch(e){Fe("error: cannot update WebGL backend registration:",e);return}try{wr.set("WEBGL_VERSION",2)}catch(e){Fe("error: cannot set WebGL backend flags:",e);return}Fe("backend registered:",Gn.name)}}var T6=6;function Hae(e){let t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let r=0;r({startEndTensor:e,startPoint:$e(e,[0,0],[-1,2]),endPoint:$e(e,[0,2],[-1,2])});function Gae(e,t,n){let r=$e(e,[0,1],[-1,2]),a=ie(r,t),s=$e(e,[0,3],[-1,2]),i=be(s,n),o=be(a,n),l=be(i,2),u=we(o,l),c=ie(o,l),h=P(u,n),d=P(c,n);return yl([h,d],1)}var E6=class{constructor(t,n){this.model=t,this.anchorsData=Hae(t.inputs[0].shape[1]),this.anchors=En(this.anchorsData),this.inputSize=t.inputs[0].shape[2],this.config=n}async getBoundingBoxes(t){if(!t||t.isDisposedInternal||t.shape.length!==4||t.shape[1]<1||t.shape[2]<1)return null;let[n,r,a]=B(()=>{let d=t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),p=this.model.predict(d),f;if(Array.isArray(p)){let g=p.sort((x,N)=>x.size-N.size),b=lt([g[0],g[2]],2),_=lt([g[1],g[3]],2);f=lt([_,b],1).squeeze(0)}else f=p.squeeze();let m=Gae(f,this.anchors,[this.inputSize,this.inputSize]),A=$e(f,[0,0],[-1,1]),y=On(A).squeeze();return[f,m,y]}),s=await tt.nonMaxSuppressionAsync(r,a,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),i=s.arraySync();s.dispose();let l=i.map(h=>$e(r,[h,0],[1,-1])).map(h=>{let d=h.arraySync();return h.dispose(),d}),u=a.dataSync(),c=[];for(let h=0;hthis.config.face.detector.minConfidence){let f=jae(l[h]),m=this.anchorsData[d],A=B(()=>$e(n,[d,T6-1],[1,-1]).squeeze().reshape([T6,-1]));c.push({box:f,landmarks:A,anchor:m,confidence:p})}}return n.dispose(),r.dispose(),a.dispose(),{boxes:c,scaleFactor:[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]}}};async function C6(e){let t=await Ot(e.face.detector.modelPath,{fromTFHub:e.face.detector.modelPath.includes("tfhub.dev")}),n=new E6(t,e);return e.debug&&Fe(`load model: ${e.face.detector.modelPath.match(/\/(.*)\./)[1]}`),n}function R6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:n,endPoint:r}}function Xc(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Ql(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function eu(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return tt.cropAndResize(t,s,[0],n)}function w0(e,t=1.5){let n=Ql(e),r=Xc(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}function b0(e){let t=Ql(e),n=Xc(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}var _0=[[1,0,0],[0,1,0],[0,0,1]];function qae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function Rg(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return qae(n)}function F6(e,t){return[[1,0,e],[0,1,t],[0,0,1]]}function rs(e,t){let n=0;for(let r=0;rMg[e]),Fhe=Zae.map(e=>Mg[e]),Mhe=Yae.map(e=>Mg[e]);var $g=Jr.leftEyeLower0,Dg=Jr.rightEyeLower0,tu={leftBounds:[$g[0],$g[$g.length-1]],rightBounds:[Dg[0],Dg[Dg.length-1]]},k0={count:468,mouth:13,symmetryLine:[13,Jr.midwayBetweenEyes[0]]},O6={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},nu={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function I0(e,t,n,r){for(let a=0;a[s[0]/this.meshSize*(h[0]-this.meshSize/2),s[1]/this.meshSize*(h[1]-this.meshSize/2),h[2]]),o=r!==0?v0(r,[0,0]):_0,l=r!==0?i.map(h=>[...D6(h,o),h[2]]):i,u=r!==0?$6(a):_0,c=[...Ql({startPoint:n.startPoint,endPoint:n.endPoint}),1];return l.map(h=>[h[0]+rs(c,u[0]),h[1]+rs(c,u[1]),h[2]])}getLeftToRightEyeDepthDifference(t){let n=t[tu.leftBounds[0]][2],r=t[tu.rightBounds[0]][2];return n-r}getEyeBox(t,n,r,a,s=!1){let i=b0(w0(this.calculateLandmarksBoundingBox([t[r],t[a]]),this.irisEnlarge)),o=Xc(i),l=tt.cropAndResize(n,[[i.startPoint[1]/this.meshSize,i.startPoint[0]/this.meshSize,i.endPoint[1]/this.meshSize,i.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return s&&wr.flags.IS_BROWSER&&(l=tt.flipLeftRight(l)),{box:i,boxSize:o,crop:l}}getEyeCoords(t,n,r,a=!1){let s=[];for(let i=0;i{let u=i;return l===2?u=a:l===4&&(u=s),[o[0],o[1],u]})}async predict(t,n){let r=!1,a;if((this.skipped===0||this.skipped>n.face.detector.skipFrames||!n.face.mesh.enabled||!n.videoOptimized)&&(a=await this.boundingBoxDetector.getBoundingBoxes(t),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.boxes&&(!n.face.mesh.enabled||a.boxes.length!==this.detectedFaces&&this.detectedFaces!==n.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let i of a.boxes)this.storedBoxes.push({startPoint:i.box.startPoint.dataSync(),endPoint:i.box.endPoint.dataSync(),landmarks:i.landmarks,confidence:i.confidence});this.storedBoxes.length>0&&(r=!0)}if(n.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),r){if(!a||!a.boxes||a.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{i.box.startPoint.dispose(),i.box.endPoint.dispose(),i.landmarks.dispose()});let s=B(()=>this.storedBoxes.map((i,o)=>{let l=i.confidence,u,c=0,h;if(n.face.detector.rotation&&n.face.mesh.enabled&&wr.flags.IS_BROWSER){let[w,x]=i.landmarks.length>=k0.count?k0.symmetryLine:O6.symmetryLine;c=Rg(i.landmarks[w],i.landmarks[x]);let N=Ql({startPoint:i.startPoint,endPoint:i.endPoint}),S=[N[0]/t.shape[2],N[1]/t.shape[1]],T=tt.rotateWithOffset(t,c,0,S);h=v0(-c,N),n.face.mesh.enabled?u=eu({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255):u=eu({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.boxSize,this.boxSize]).div(255)}else{h=_0;let w=t.clone();n.face.mesh.enabled?u=eu({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.meshSize,this.meshSize]).div(255):u=eu({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.boxSize,this.boxSize]).div(255)}if(!n.face.mesh.enabled)return{coords:null,box:i,faceConfidence:null,boxConfidence:i.confidence,confidence:i.confidence,image:u};let[,d,p]=this.meshDetector.predict(u),f=d.dataSync()[0];if(f=k0.count?k0.symmetryLine:O6.symmetryLine;c=Rg(i.landmarks[w],i.landmarks[x]);let N=Ql({startPoint:i.startPoint,endPoint:i.endPoint}),S=[N[0]/t.shape[2],N[1]/t.shape[1]],T=tt.rotateWithOffset(t,c,0,S);h=v0(-c,N),u=eu({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255)}let b={coords:g,box:i,faceConfidence:f,boxConfidence:l,image:u,rawCoords:A},_=b0(i);return this.storedBoxes[o]={..._,landmarks:y,confidence:i.confidence,faceConfidence:f},b}));return s=s.filter(i=>i!==null),n.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(i=>i.faceConfidence>n.face.detector.minConfidence)),this.detectedFaces=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s,landmarks:t}}};var M2=Th(P6());var Lg={};xr(Lg,{load:()=>Wg,predict:()=>Bg});var Pg={};function Qr(e,t){if(!t||!t.kernels)return;let n=5,r=t.kernels.filter(o=>o.kernelTimeMs>0).reduce((o,l)=>o+=l.kernelTimeMs,0),a=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.kernelTimeMs>0).sort((o,l)=>l.kernelTimeMs-o.kernelTimeMs),s=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.totalBytesSnapshot>0).sort((o,l)=>l.totalBytesSnapshot-o.totalBytesSnapshot);a.length>n&&(a.length=n),s.length>n&&(s.length=n);let i={newBytes:t.newBytes,newTensors:t.newTensors,peakBytes:t.peakBytes,numKernelOps:t.kernels.length,timeKernelOps:r,slowestKernelOps:a,largestKernelOps:s};Pg[e]=i,Fe("Human profiler",e,i)}var as,N0={age:0},S0=Number.MAX_SAFE_INTEGER;async function Wg(e){return as||(as=await Ot(e.face.age.modelPath),e.debug&&Fe(`load model: ${e.face.age.modelPath.match(/\/(.*)\./)[1]}`)),as}async function Bg(e,t){return as?S00?(S0++,N0):(t.videoOptimized?S0=0:S0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=tt.resizeBilinear(e,[as.inputs[0].shape[2],as.inputs[0].shape[1]],!1),a=P(r,[255]);Me(r);let s,i={age:0};if(!t.profile)t.face.age.enabled&&(s=await as.predict(a));else{let o=t.face.age.enabled?await kr(()=>as.predict(a)):{};s=o.result.clone(),o.result.dispose(),Qr("age",o)}if(a.dispose(),s){let o=s.dataSync();i.age=Math.trunc(10*o[0])/10}s.dispose(),N0=i,n(i)})):null}var Vg={};xr(Vg,{load:()=>Gg,predict:()=>qg});var wa,Ug={gender:""},T0=Number.MAX_SAFE_INTEGER,Hg=!1,jg=[.2989,.587,.114];async function Gg(e){return wa||(wa=await Ot(e.face.gender.modelPath),Hg=wa.inputs[0].shape[3]===1,e.debug&&Fe(`load model: ${e.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),wa}async function qg(e,t){return wa?T0{let r=tt.resizeBilinear(e,[wa.inputs[0].shape[2],wa.inputs[0].shape[1]],!1),a;Hg?a=B(()=>{let[o,l,u]=Ut(r,3,3),c=P(o,jg[0]),h=P(l,jg[1]),d=P(u,jg[2]);return La([c,h,d]).sub(.5).mul(2)}):a=P(r,[255]),Me(r);let s,i={gender:"",confidence:0};if(!t.profile)t.face.gender.enabled&&(s=await wa.predict(a));else{let o=t.face.gender.enabled?await kr(()=>wa.predict(a)):{};s=o.result.clone(),o.result.dispose(),Qr("gender",o)}if(a.dispose(),s){let o=s.dataSync();if(Hg)(o[0]>t.face.gender.minConfidence||o[1]>t.face.gender.minConfidence)&&(i.gender=o[0]>o[1]?"female":"male",i.confidence=o[0]>o[1]?Math.trunc(100*o[0])/100:Math.trunc(100*o[1])/100);else{let l=Math.trunc(200*Math.abs(o[0]-.5))/100;l>t.face.gender.minConfidence&&(i.gender=o[0]<=.5?"female":"male",i.confidence=Math.min(.99,l))}}s.dispose(),Ug=i,n(i)})):null}var Xg={};xr(Xg,{load:()=>Yg,predict:()=>Jg});var Qae=["angry","disgust","fear","happy","sad","surprise","neutral"],ss,Kg=[],E0=Number.MAX_SAFE_INTEGER,Zg=[.2989,.587,.114];async function Yg(e){return ss||(ss=await Ot(e.face.emotion.modelPath),e.debug&&Fe(`load model: ${e.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),ss}async function Jg(e,t){return ss?E00?(E0++,Kg):(t.videoOptimized?E0=0:E0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=tt.resizeBilinear(e,[ss.inputs[0].shape[2],ss.inputs[0].shape[1]],!1),[a,s,i]=Ut(r,3,3);r.dispose();let o=P(a,Zg[0]),l=P(s,Zg[1]),u=P(i,Zg[2]);a.dispose(),s.dispose(),i.dispose();let c=La([o,l,u]);o.dispose(),l.dispose(),u.dispose();let h=B(()=>c.sub(.5).mul(2));c.dispose();let d=[];if(t.face.emotion.enabled){let p;if(t.profile){let f=await kr(()=>ss.predict(h));p=f.result.dataSync(),f.result.dispose(),Qr("emotion",f)}else{let f=await ss.predict(h);p=f.dataSync(),Me(f)}for(let f=0;ft.face.emotion.minConfidence&&d.push({score:Math.min(.99,Math.trunc(100*p[f])/100),emotion:Qae[f]});d.sort((f,m)=>m.score-f.score)}h.dispose(),Kg=d,n(d)})):null}var ea;async function Qg(e){return ea||(ea=await Ot(e.face.embedding.modelPath),e.debug&&Fe(`load model: ${e.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),ea}function e2(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let r=e.map((s,i)=>Math.abs(e[i]-t[i])**n).reduce((s,i)=>s+i,0)**(1/n);return Math.max(Math.trunc(1e3*(1-r))/1e3,0)}function L6(e,t,n=0){let r={simmilarity:0,name:"",source:"",embedding:[]};if(!e||!t||!Array.isArray(e)||!Array.isArray(t))return r;for(let a of t)if(a.embedding&&a.name){let s=e2(e,a.embedding);s>n&&s>r.simmilarity&&(r={...a,simmilarity:s})}return r}function t2(e){return B(()=>{let n=[[.05,.15,.85,.85]],r=e.image||e.tensor;if(!(r instanceof Ge))return null;let a=r.shape.length===3?tt.cropAndResize(mn(r,0),n,[0],[ea.inputs[0].shape[2],ea.inputs[0].shape[1]]):tt.cropAndResize(r,n,[0],[ea.inputs[0].shape[2],ea.inputs[0].shape[1]]),s=[.2989,.587,.114],[i,o,l]=Ut(a,3,3),u=P(i,s[0]),c=P(o,s[1]),h=P(l,s[2]),d=La([u,c,h]),p=An([d,d,d],3).squeeze(4),f=p.sub(p.min());return f.div(f.max())})}async function n2(e,t){return ea?new Promise(async n=>{let r=[];if(t.face.embedding.enabled){let a=t2(e);if(!t.profile)r=B(()=>[...ea.predict(a).reshape([128,2]).logSumExp(1).dataSync()]);else{let s=await kr(()=>ea.predict({img_inputs:a}));r=[...s.result.dataSync()],s.result.dispose(),Qr("emotion",s)}Me(a)}n(r)}):[]}var f2={};xr(f2,{PoseNet:()=>m2,load:()=>A2});function ese(e){let[t,n,r,a]=e;return{offsets:t,heatmap:n,displacementFwd:r,displacementBwd:a}}var r2=class{constructor(t){this.model=t}predict(t){return B(()=>{let r=t.toFloat().div(127.5).sub(1).expandDims(0),s=this.model.predict(r).map(o=>o.squeeze([0])),i=ese(s);return{heatmapScores:i.heatmap.sigmoid(),offsets:i.offsets,displacementFwd:i.displacementFwd,displacementBwd:i.displacementBwd}})}dispose(){this.model.dispose()}};function a2(e){return Math.floor(e/2)}var s2=class{constructor(t,n){this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=n}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(a2(t),t);)this.exchange(t,a2(t)),t=a2(t)}sink(t){for(;2*t<=this.numberOfElements;){let n=2*t;if(nt){l=!1;break}if(!l)break}return l}function W6(e,t,n){let[r,a,s]=n.shape,i=new s2(r*a*s,({score:o})=>o);for(let o=0;on?n:e}function V6(e,t,n,r){let a=n-e,s=r-t;return a*a+s*s}function c2(e,t){return{x:e.x+t.x,y:e.y+t.y}}var F0=Th(C0());function U6(e,t){let n=t.shape[0],r=new Float32Array(n);for(let a=0;ae.toTensor().mul(Ie(t,"int32")).toFloat().add(use(e,n)))}function cse(e,t){return B(()=>{let n=e.div(Ie(t,"int32"));return e.sub(n.mul(Ie(t,"int32")))})}function j6(e){let[t,n,r]=e.shape;return B(()=>{let s=e.reshape([t*n,r]).argMax(0),i=s.div(Ie(n,"int32")).expandDims(1),o=cse(s,n).expandDims(1);return lt([i,o],1)})}var G6=ba.poseChain.map(([e,t])=>[ba.partIds[e],ba.partIds[t]]),h2=G6.map(([,e])=>e),q6=G6.map(([e])=>e),hse=16;function dse(e,t,n){let r=n.shape[2]/2;return{y:n.get(t.y,t.x,e),x:n.get(t.y,t.x,r+e)}}function d2(e,t,n,r){return{y:u2(Math.round(e.y/t),0,n-1),x:u2(Math.round(e.x/t),0,r-1)}}function X6(e,t,n,r,a,s,i,o=2){let[l,u]=r.shape,c=d2(t.position,s,l,u),h=dse(e,c,i),p=c2(t.position,h);for(let A=0;A=0;--d){let p=h2[d],f=q6[d];l[p]&&!l[f]&&(l[f]=X6(d,l[p],f,t,n,r,s))}for(let d=0;d(r+=f,{position:{y:c.get(m,0),x:c.get(m,1)},part:ba.partNames[m],score:f})),p=d.filter(f=>f.score>n);return a.dispose(),u.dispose(),{keypoints:p,score:r/d.length}}var pse=1,Y6=16;function J6(e,t,{x:n,y:r},a){return e.some(({keypoints:s})=>{let i=s[a].position;return V6(r,n,i.y,i.x)<=t})}function fse(e,t,n){return n.reduce((a,{position:s,score:i},o)=>(J6(e,t,s,o)||(a+=i),a),0)/n.length}function Q6(e,t,n,r,a,s,i){let o=[],l=W6(i,pse,e),u=a^2;for(;o.lengthi&&o.push({keypoints:d,score:p})}return o}async function e4(e){return Promise.all(e.map(t=>t.buffer()))}function mse(e,t,n){return{score:e.score,keypoints:e.keypoints.map(({score:r,part:a,position:s})=>({score:r,part:a,position:{x:Math.trunc(s.x*n),y:Math.trunc(s.y*t)}}))}}function t4(e,[t,n]){let r=e.squeeze(0),a=r.resizeBilinear([t,n]);return r.dispose(),a}function p2(e,[t,n],[r,a]){return e.map(i=>mse(i,t/r,n/a))}async function Ase(e,t,n,r){return new Promise(async a=>{let s=await e4([t.heatmapScores,t.offsets,t.displacementFwd,t.displacementBwd]),i=s[0],o=s[1],l=s[2],u=s[3],c=await Q6(i,o,l,u,n.body.nmsRadius,n.body.maxDetections,n.body.scoreThreshold),h=p2(c,[e.shape[1],e.shape[2]],[r,r]);a(h)})}async function yse(e,t,n,r){return new Promise(async a=>{let s=await Z6(t.heatmapScores,t.offsets,n.body.scoreThreshold),i=p2([s],[e.shape[1],e.shape[2]],[r,r]);a(i)})}var m2=class{constructor(t){this.baseModel=t,this.inputSize=t.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(t,n){let r=t4(t,[this.inputSize,this.inputSize]),a=this.baseModel.predict(r,n),s=n.body.maxDetections<2?await yse(t,a,n,this.inputSize):await Ase(t,a,n,this.inputSize);return a.heatmapScores.dispose(),a.offsets.dispose(),a.displacementFwd.dispose(),a.displacementBwd.dispose(),r.dispose(),s}dispose(){this.baseModel.dispose()}};async function A2(e){let t=await Ot(e.body.modelPath),n=new r2(t);return e.debug&&Fe(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`),new m2(n)}var b2={};xr(b2,{HandPose:()=>v2,load:()=>k2});function M0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Kc(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function n4(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return tt.cropAndResize(t,s,[0],n)}function r4(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],a=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:n,endPoint:r,palmLandmarks:a,confidence:e.confidence}}function $0(e,t=1.5){let n=Kc(e),r=M0(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function D0(e){let t=Kc(e),n=M0(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}var y2=class{constructor(t,n,r){this.model=t,this.anchors=r.map(a=>[a.x_center,a.y_center]),this.anchorsTensor=En(this.anchors),this.inputSize=n,this.inputSizeTensor=hn([n,n]),this.doubleInputSizeTensor=hn([n*2,n*2])}normalizeBoxes(t){return B(()=>{let n=$e(t,[0,0],[-1,2]),r=$e(t,[0,2],[-1,2]),a=ie(be(n,this.inputSizeTensor),this.anchorsTensor),s=be(r,this.doubleInputSizeTensor),i=P(we(a,s),this.inputSizeTensor),o=P(ie(a,s),this.inputSizeTensor);return yl([i,o],1)})}normalizeLandmarks(t,n){return B(()=>{let r=ie(be(t.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[n]);return P(r,this.inputSizeTensor)})}async getBoxes(t,n){let r=this.model.predict(t),a=r.squeeze();r.dispose();let s=B(()=>On($e(a,[0,0],[-1,1])).squeeze()),i=s.dataSync(),o=$e(a,[0,1],[-1,4]),l=this.normalizeBoxes(o);o.dispose();let u=await tt.nonMaxSuppressionAsync(l,i,n.hand.maxHands,n.hand.iouThreshold,n.hand.scoreThreshold),c=u.arraySync();s.dispose(),u.dispose();let h=[];for(let d of c)if(i[d]>=n.hand.minConfidence){let p=$e(l,[d,0],[1,-1]),f=$e(a,[d,5],[1,14]),m=B(()=>this.normalizeLandmarks(f,d).reshape([-1,2]));f.dispose(),h.push({box:p,palmLandmarks:m,confidence:i[d]})}return a.dispose(),l.dispose(),h}async estimateHandBounds(t,n){let r=t.shape[1],a=t.shape[2],s=B(()=>t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),i=await this.getBoxes(s,n);s.dispose();let o=[];if(!i||i.length===0)return o;for(let l of i){let u=l.box.dataSync(),c=u.slice(0,2),h=u.slice(2,4),d=l.palmLandmarks.arraySync();l.box.dispose(),l.palmLandmarks.dispose(),o.push(r4({startPoint:c,endPoint:h,palmLandmarks:d,confidence:l.confidence},[a/this.inputSize,r/this.inputSize]))}return o}};function gse(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function a4(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return gse(n)}var s4=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function is(e,t){let n=0;for(let r=0;rx2([...s,1],n)),a=this.calculateLandmarksBoundingBox(r);return $0(D0(a),wse)}getBoxForHandLandmarks(t){let n=this.calculateLandmarksBoundingBox(t),r=$0(D0(n),l4);r.palmLandmarks=[];for(let a=0;a[i[0]*(p[0]-this.inputSize/2),i[1]*(p[1]-this.inputSize/2),i[2]*p[2]]),l=g2(r,[0,0]),u=o.map(p=>[...x2(p,l),p[2]]),c=o4(a),h=[...Kc(n),1],d=[is(h,c[0]),is(h,c[1])];return u.map(p=>[p[0]+d[0],p[1]+d[1],p[2]])}async estimateHands(t,n){let r=!1,a;(this.skipped===0||this.skipped>n.hand.skipFrames||!n.hand.landmarks||!n.videoOptimized)&&(a=await this.handDetector.estimateHandBounds(t,n),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.length>0&&(a.length!==this.detectedHands&&this.detectedHands!==n.hand.maxHands||!n.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...a],this.storedBoxes.length>0&&(r=!0));let s=[];n.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let i=0;i=n.hand.minConfidence){let b=G(y,[-1,3]),_=b.arraySync();y.dispose(),b.dispose();let w=this.transformRawCoords(_,p,l,d),x=this.getBoxForHandLandmarks(w);this.storedBoxes[i]=x;let N={landmarks:w,confidence:g,box:{topLeft:x.startPoint,bottomRight:x.endPoint}};s.push(N)}else this.storedBoxes[i]=null;y.dispose()}else{let l=$0(D0(o),l4),u={confidence:o.confidence,box:{topLeft:l.startPoint,bottomRight:l.endPoint}};s.push(u)}}return this.storedBoxes=this.storedBoxes.filter(i=>i!==null),this.detectedHands=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s}}};var c4=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var _2={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},v2=class{constructor(t){this.handPipeline=t}static getAnnotations(){return _2}async estimateHands(t,n){let r=await this.handPipeline.estimateHands(t,n);if(!r)return[];let a=[];for(let s of r){let i={};if(s.landmarks)for(let l of Object.keys(_2))i[l]=_2[l].map(u=>s.landmarks[u]);let o=s.box?[Math.max(0,s.box.topLeft[0]),Math.max(0,s.box.topLeft[1]),Math.min(t.shape[2],s.box.bottomRight[0])-s.box.topLeft[0],Math.min(t.shape[1],s.box.bottomRight[1])-s.box.topLeft[1]]:0;a.push({confidence:s.confidence,box:o,landmarks:s.landmarks,annotations:i})}return a}};async function k2(e){let[t,n]=await Promise.all([e.hand.enabled?Ot(e.hand.detector.modelPath,{fromTFHub:e.hand.detector.modelPath.includes("tfhub.dev")}):null,e.hand.landmarks?Ot(e.hand.skeleton.modelPath,{fromTFHub:e.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),r=new y2(t,t==null?void 0:t.inputs[0].shape[2],c4),a=new w2(r,n,n==null?void 0:n.inputs[0].shape[2]),s=new v2(a);return e.hand.enabled&&e.debug&&Fe(`load model: ${e.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),e.hand.landmarks&&e.debug&&Fe(`load model: ${e.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),s}var I2={};xr(I2,{load:()=>N2,predict:()=>S2});var h4=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],d4=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var yr;async function N2(e){return yr||(yr=await Ot(e.body.modelPath),yr.width=parseInt(yr.signature.inputs["input_1:0"].tensorShape.dim[2].size),yr.height=parseInt(yr.signature.inputs["input_1:0"].tensorShape.dim[1].size),e.debug&&Fe(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`)),yr}async function S2(e,t){if(!yr||!t.body.enabled)return null;let n={width:e.shape[2],height:e.shape[1]},r=tt.resizeBilinear(e,[yr.width,yr.height],!1),a=be(r,[255]);r.dispose();let s;if(t.profile){let u=await kr(()=>yr.predict(a));s=u.result.find(c=>c.size===195||c.size===155).dataSync(),u.result.forEach(c=>c.dispose()),Qr("blazepose",u)}else{let u=await yr.predict(a);s=u.find(c=>c.size===195||c.size===155).dataSync(),u.forEach(c=>c.dispose())}a.dispose();let i=[],o=s.length===195?h4:d4,l=5;for(let u=0;u{if(!e)return[];let t=[];for(let n=0;nl.part==="leftWrist"),a=e[n].keypoints.find(l=>l.part==="rightWrist"),s=e[n].keypoints.find(l=>l.part==="nose");s&&r&&a&&r.position.yl.part==="leftShoulder"),o=e[n].keypoints.find(l=>l.part==="rightShoulder");i&&o&&t.push({body:n,gesture:`leaning ${i.position.y>o.position.y?"left":"right"}`})}return t},f4=e=>{if(!e)return[];let t=[];for(let n=0;n0){let r=e[n].mesh[33][2]-e[n].mesh[263][2];Math.abs(r)<10?t.push({face:n,gesture:"facing camera"}):t.push({face:n,gesture:`facing ${r<0?"right":"left"}`}),Math.abs(e[n].mesh[374][1]-e[n].mesh[386][1])/Math.abs(e[n].mesh[443][1]-e[n].mesh[450][1])<.2&&t.push({face:n,gesture:"blink left eye"}),Math.abs(e[n].mesh[145][1]-e[n].mesh[159][1])/Math.abs(e[n].mesh[223][1]-e[n].mesh[230][1])<.2&&t.push({face:n,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[n].mesh[13][1]-e[n].mesh[14][1])/Math.abs(e[n].mesh[10][1]-e[n].mesh[152][1]));i>10&&t.push({face:n,gesture:`mouth ${Math.trunc(i)}% open`});let o=e[n].mesh[152][2];Math.abs(o)>10&&t.push({face:n,gesture:`head ${o<0?"up":"down"}`})}return t},m4=e=>{if(!e)return[];let t=[];for(let n=0;n{if(!e)return[];let t=[];for(let n=0;n0){let a=r.reduce((i,o)=>i.position[2]i.position[1](u[d]=0,h))},a=function(o,l){let u=e.createShader(l);if(e.shaderSource(u,o),e.compileShader(u),!e.getShaderParameter(u,e.COMPILE_STATUS))throw new Error("Filter: GL compile failed",e.getShaderInfoLog(u));return u};this.uniform={},this.attribute={};let s=a(t,e.VERTEX_SHADER),i=a(n,e.FRAGMENT_SHADER);if(this.id=e.createProgram(),e.attachShader(this.id,s),e.attachShader(this.id,i),e.linkProgram(this.id),!e.getProgramParameter(this.id,e.LINK_STATUS))throw new Error("Filter: GL link failed",e.getProgramInfoLog(this.id));e.useProgram(this.id),r(t,"attribute",this.attribute);for(let o in this.attribute)this.attribute[o]=e.getAttribLocation(this.id,o);r(t,"uniform",this.uniform),r(n,"uniform",this.uniform);for(let o in this.uniform)this.uniform[o]=e.getUniformLocation(this.id,o)}function y4(e){e||(e={});let t=0,n=null,r=!1,a=-1,s=[null,null],i=[],o=-1,l=-1,u=null,c=null,h={},d=e.canvas||document.createElement("canvas"),p={},f={INTERMEDIATE:1},m=d.getContext("webgl");if(!m)throw new Error("Filter: getContext() failed");this.addFilter=function(w){let x=Array.prototype.slice.call(arguments,1),N=h[w];i.push({func:N,args:x})},this.reset=function(){i=[]};let A=function(w,x){if(!(w===o&&x===l)){if(d.width=w,o=w,d.height=x,l=x,!u){let N=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);u=m.createBuffer(),m.bindBuffer(m.ARRAY_BUFFER,u),m.bufferData(m.ARRAY_BUFFER,N,m.STATIC_DRAW),m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}m.viewport(0,0,o,l),s=[null,null]}},y=function(w,x){let N=m.createFramebuffer();m.bindFramebuffer(m.FRAMEBUFFER,N);let S=m.createRenderbuffer();m.bindRenderbuffer(m.RENDERBUFFER,S);let T=m.createTexture();return m.bindTexture(m.TEXTURE_2D,T),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,w,x,0,m.RGBA,m.UNSIGNED_BYTE,null),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,m.TEXTURE_2D,T,0),m.bindTexture(m.TEXTURE_2D,null),m.bindFramebuffer(m.FRAMEBUFFER,null),{fbo:N,texture:T}},g=function(w){return s[w]=s[w]||y(o,l),s[w]},b=function(w=null){var T,M;let x=null,N=null,S=!1;t===0?x=n:x=(T=g(a))==null?void 0:T.texture,t++,r&&!(w&f.INTERMEDIATE)?(N=null,S=t%2==0):(a=(a+1)%2,N=(M=g(a))==null?void 0:M.fbo),m.bindTexture(m.TEXTURE_2D,x),m.bindFramebuffer(m.FRAMEBUFFER,N),m.uniform1f(c.uniform.flipY,S?-1:1),m.drawArrays(m.TRIANGLES,0,6)};this.apply=function(w){if(A(w.width,w.height),t=0,n||(n=m.createTexture()),m.bindTexture(m.TEXTURE_2D,n),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,w),i.length===0)return b(),d;for(let x=0;x0,s=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0,i=a,o=s;if(i>O0&&(i=O0,o=i*s/a),o>O0&&(o=O0,i=o*a/s),t.filter.width>0?i=t.filter.width:t.filter.height>0&&(i=a*(t.filter.height/s)),t.filter.height>0?o=t.filter.height:t.filter.width>0&&(o=s*(t.filter.width/a)),!i||!o)return Fe("Human: invalid input",e),{tensor:null,canvas:null};(!Mt||Mt.width!==i||Mt.height!==o)&&(Mt=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas"),Mt.width!==i&&(Mt.width=i),Mt.height!==o&&(Mt.height=o));let l=Mt.getContext("2d");if(e instanceof ImageData?l.putImageData(e,0,0):l.drawImage(e,0,0,a,s,0,0,Mt.width,Mt.height),t.filter.enabled){if((!zt||!ln||Mt.width!==ln.width||Mt.height!==ln.height)&&(ln=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Mt.width,Mt.height):document.createElement("canvas"),ln.width!==Mt.width&&(ln.width=Mt.width),ln.height!==Mt.height&&(ln.height=Mt.height),zt=wr.flags.IS_BROWSER?new A4({canvas:ln}):null),!zt)return{tensor:null,canvas:Mt};zt.reset(),zt.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&zt.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&zt.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&zt.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&zt.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&zt.addFilter("hue",t.filter.hue),t.filter.negative&&zt.addFilter("negative"),t.filter.sepia&&zt.addFilter("sepia"),t.filter.vintage&&zt.addFilter("brownie"),t.filter.sepia&&zt.addFilter("sepia"),t.filter.kodachrome&&zt.addFilter("kodachrome"),t.filter.technicolor&&zt.addFilter("technicolor"),t.filter.polaroid&&zt.addFilter("polaroid"),t.filter.pixelate!==0&&zt.addFilter("pixelate",t.filter.pixelate),zt.apply(Mt)}else ln=Mt,zt&&(zt=null);let u;if(ln.data){let h=[ln.height,ln.width,3];u=wd(ln.data,h,"int32")}else if(t.backend==="webgl"||ln instanceof ImageData)u=dl.fromPixels(ln);else{let h=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas");h.width=i,h.height=o;let d=h.getContext("2d");d==null||d.drawImage(ln,0,0);let p=d==null?void 0:d.getImageData(0,0,i,o);u=dl.fromPixels(p)}let c=u.toFloat();n=c.expandDims(0),u.dispose(),c.dispose()}let r=t.filter.return?ln:null;return{tensor:n,canvas:r}}var gt={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var z0=` +`)}var O0=2048,Mt=null,ln=null,zt=null;function T2(e,t){let n;if(e instanceof Ge)n=zr(e);else{let a=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,s=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0,i=a,o=s;if(i>O0&&(i=O0,o=i*s/a),o>O0&&(o=O0,i=o*a/s),t.filter.width>0?i=t.filter.width:t.filter.height>0&&(i=a*(t.filter.height/s)),t.filter.height>0?o=t.filter.height:t.filter.width>0&&(o=s*(t.filter.width/a)),!i||!o)return Fe("Human: invalid input",e),{tensor:null,canvas:null};(!Mt||Mt.width!==i||Mt.height!==o)&&(Mt=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas"),Mt.width!==i&&(Mt.width=i),Mt.height!==o&&(Mt.height=o));let l=Mt.getContext("2d");if(e instanceof ImageData?l.putImageData(e,0,0):l.drawImage(e,0,0,a,s,0,0,Mt.width,Mt.height),t.filter.enabled){if((!zt||!ln||Mt.width!==ln.width||Mt.height!==ln.height)&&(ln=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Mt.width,Mt.height):document.createElement("canvas"),ln.width!==Mt.width&&(ln.width=Mt.width),ln.height!==Mt.height&&(ln.height=Mt.height),zt=wr.flags.IS_BROWSER?new y4({canvas:ln}):null),!zt)return{tensor:null,canvas:Mt};zt.reset(),zt.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&zt.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&zt.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&zt.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&zt.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&zt.addFilter("hue",t.filter.hue),t.filter.negative&&zt.addFilter("negative"),t.filter.sepia&&zt.addFilter("sepia"),t.filter.vintage&&zt.addFilter("brownie"),t.filter.sepia&&zt.addFilter("sepia"),t.filter.kodachrome&&zt.addFilter("kodachrome"),t.filter.technicolor&&zt.addFilter("technicolor"),t.filter.polaroid&&zt.addFilter("polaroid"),t.filter.pixelate!==0&&zt.addFilter("pixelate",t.filter.pixelate),zt.apply(Mt)}else ln=Mt,zt&&(zt=null);let u;if(ln.data){let h=[ln.height,ln.width,3];u=wd(ln.data,h,"int32")}else if(t.backend==="webgl"||ln instanceof ImageData)u=dl.fromPixels(ln);else{let h=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas");h.width=i,h.height=o;let d=h.getContext("2d");d==null||d.drawImage(ln,0,0);let p=d==null?void 0:d.getImageData(0,0,i,o);u=dl.fromPixels(p)}let c=u.toFloat();n=c.expandDims(0),u.dispose(),c.dispose()}let r=t.filter.return?ln:null;return{tensor:n,canvas:r}}var gt={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var z0=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -4889,7 +4889,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var T2={};xr(T2,{author:()=>k4,browser:()=>_4,bugs:()=>I4,default:()=>vse,description:()=>g4,devDependencies:()=>F4,engines:()=>T4,homepage:()=>N4,keywords:()=>R4,license:()=>S4,main:()=>w4,module:()=>b4,name:()=>y4,repository:()=>E4,scripts:()=>C4,sideEffects:()=>x4,types:()=>v4,version:()=>E2});var y4="@vladmandic/human",E2="1.1.4",g4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",x4=!1,w4="dist/human.node.js",b4="dist/human.esm.js",_4="dist/human.esm.js",v4="types/src/human.d.ts",k4="Vladimir Mandic ",I4={url:"https://github.com/vladmandic/human/issues"},N4="https://vladmandic.github.io/human/demo/index.html",S4="MIT",T4={node:">=12.0.0"},E4={type:"git",url:"git+https://github.com/vladmandic/human.git"},C4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},R4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],F4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},vse={name:y4,version:E2,description:g4,sideEffects:x4,main:w4,module:b4,browser:_4,types:v4,author:k4,bugs:I4,homepage:N4,license:S4,engines:T4,repository:E4,scripts:C4,keywords:R4,devDependencies:F4};var C2={};xr(C2,{all:()=>Ise,body:()=>O4,canvas:()=>kse,drawOptions:()=>de,face:()=>D4,gesture:()=>$4,hand:()=>z4});var de={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function L0(e,t,n,r=null){e.fillStyle=de.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:de.color,e.beginPath(),e.arc(t,n,de.pointSize,0,2*Math.PI),e.fill()}function M4(e,t,n,r,a){if(e.beginPath(),de.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=de.lineWidth,e.moveTo(t+de.roundRect,n),e.lineTo(t+r-de.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+de.roundRect),e.lineTo(t+r,n+a-de.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-de.roundRect,n+a),e.lineTo(t+de.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-de.roundRect),e.lineTo(t,n+de.roundRect),e.quadraticCurveTo(t,n,t+de.roundRect,n),e.closePath();e.stroke()}function R2(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.fillStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),de.fillPolygons&&(e.closePath(),e.fill())}}function W0(e,t=[]){if(!(t===void 0||t.length===0)){if(!de.useCurves||t.length<=2){R2(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(l,8,2+r*de.lineHeight)),n.fillStyle=de.labelColor,n.fillText(l,6,0+r*de.lineHeight),r+=1}}}async function D4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=de.font,n.strokeStyle=de.color,n.fillStyle=de.color,de.drawBoxes&&M4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=de.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*de.lineHeight+r.box[1];de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=de.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(de.drawPoints)for(let s of r.mesh)L0(n,s[0],s[1],s[2]);if(de.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);R2(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}}}}}var os=[];async function O4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&R2(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s)}}}}async function z4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=de.font;for(let r of t){if(de.drawBoxes&&(n.strokeStyle=de.color,n.fillStyle=de.color,M4(n,r.box[0],r.box[1],r.box[2],r.box[3]),de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+de.lineHeight,r.box[2])),n.fillStyle=de.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+de.lineHeight,r.box[2]),n.stroke()),de.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=de.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:de.color,L0(n,a[0],a[1]);if(de.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function kse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function Ise(e,t){!t||!e||e instanceof HTMLCanvasElement&&(D4(e,t.face),O4(e,t.body),z4(e,t.hand),$4(e,t.gesture))}var mt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Zc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Zc(s,i):n[a]=i}),n),{})}var B0,Je,ru,Yc,Jc,Bi,qt,V0,Qc,U0,eh,H0,j0,G0,M2=class{constructor(t={}){B0.set(this,void 0);Je.set(this,void 0);ru.set(this,void 0);Yc.set(this,void 0);Jc.set(this,void 0);Bi.set(this,void 0);qt.set(this,(...t)=>{if(!Ne(this,Yc))return;let n=this.tf.engine().state.numTensors,r=Ne(this,ru);ia(this,ru,n);let a=n-r;a!==0&&Fe(...t,a)});V0.set(this,t=>{if(!Ne(this,Jc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ge))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Qc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=mt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Fe("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Fe("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Fe(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Fe("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&N6();try{await this.tf.setBackend(this.config.backend)}catch(r){Fe("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Fe("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Fe(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),Ne(this,Je).backend=Math.trunc(mt()-n)}});U0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});eh.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=mt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(Ne(this,Je).face=Math.trunc(mt()-n),!l)return[];for(let A of l){if(Ne(this,qt).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Fe("Face object is disposed:",A.image);continue}let y=Ne(this,U0).call(this,A.mesh);Ne(this,qt).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?Bg(A.image,this.config):{}:(this.state="run:age",n=mt(),r=this.config.face.age.enabled?await Bg(A.image,this.config):{},Ne(this,Je).age=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?qg(A.image,this.config):{}:(this.state="run:gender",n=mt(),a=this.config.face.gender.enabled?await qg(A.image,this.config):{},Ne(this,Je).gender=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?Jg(A.image,this.config):{}:(this.state="run:emotion",n=mt(),s=this.config.face.emotion.enabled?await Jg(A.image,this.config):{},Ne(this,Je).emotion=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),Ne(this,qt).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?t2(A,this.config):[]:(this.state="run:embedding",n=mt(),i=this.config.face.embedding.enabled?await t2(A,this.config):[],Ne(this,Je).embedding=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),Ne(this,qt).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),Ne(this,qt).call(this,"End Face")}return Ne(this,qt).call(this,"End FaceMesh:"),this.config.async&&(Ne(this,Je).face&&delete Ne(this,Je).face,Ne(this,Je).age&&delete Ne(this,Je).age,Ne(this,Je).gender&&delete Ne(this,Je).gender,Ne(this,Je).emotion&&delete Ne(this,Je).emotion),o});H0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(z0);break;case"full":n=await t(P0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});j0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+z0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+P0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));G0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(z0):t(P0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=Eh,this.draw=C2,ia(this,B0,T2),this.version=E2,this.config=Zc(gt,t),this.state="idle",ia(this,ru,0),ia(this,Yc,!1),ia(this,Jc,!1),ia(this,Bi,!0),ia(this,Je,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>S2(n,this.config),this.classes={facemesh:F2,age:Lg,gender:Vg,emotion:Xg,body:this.config.body.modelPath.includes("posenet")?p2:k2,hand:w2},this.sysinfo=X2()}profileData(){return this.config.profile?Pg:{}}simmilarity(t,n){return this.config.face.embedding.enabled?P6(t,n):0}enhance(t){return this.config.face.embedding.enabled?e2(t):null}async load(t={}){this.state="load";let n=mt();t&&(this.config=Zc(this.config,t)),Ne(this,Bi)&&(this.config.debug&&Fe(`version: ${this.version}`),this.config.debug&&Fe(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Fe("platform:",this.sysinfo.platform),this.config.debug&&Fe("agent:",this.sysinfo.agent),await Ne(this,Qc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Fe("configuration:",this.config),this.config.debug&&Fe("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?F2.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?Wg(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?Gg(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?Yg(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?Qg(this.config):null),this.models.handpose||(this.config.hand.enabled?v2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?m2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?I2(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await F2.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await Wg(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await Gg(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await Yg(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await Qg(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await v2(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await m2(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await I2(this.config))),Ne(this,Bi)&&(this.config.debug&&Fe("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ia(this,Bi,!1));let r=Math.trunc(mt()-n);r>(Ne(this,Je).load||0)&&(Ne(this,Je).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Zc(this.config,n),this.state="check";let s=Ne(this,V0).call(this,t);s&&(Fe(s,t),r({error:s}));let i=mt();await Ne(this,Qc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),Ne(this,qt).call(this,"Start Scope:"),a=mt();let o=S2(t,this.config);if(!o||!o.tensor){Fe("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}Ne(this,Je).image=Math.trunc(mt()-a),Ne(this,qt).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face&&delete Ne(this,Je).face):(this.state="run:face",a=mt(),c=this.config.face.enabled?await Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face=Math.trunc(mt()-a)),Ne(this,qt).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?N2(o.tensor,this.config):[],Ne(this,Je).body&&delete Ne(this,Je).body):(this.state="run:body",a=mt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await N2(o.tensor,this.config):[],Ne(this,Je).body=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Body:"),Ne(this,qt).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],Ne(this,Je).hand&&delete Ne(this,Je).hand):(this.state="run:hand",a=mt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],Ne(this,Je).hand=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),Ne(this,qt).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=mt(),h=[...p4(c),...d4(l),...m4(u),...f4(c)],this.config.async?Ne(this,Je).gesture&&delete Ne(this,Je).gesture:Ne(this,Je).gesture=Math.trunc(mt()-a)),Ne(this,Je).total=Math.trunc(mt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:Ne(this,Je),canvas:o.canvas})})}async warmup(t={}){let n=mt();t&&(this.config=Zc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await Ne(this,H0).call(this):typeof Image!="undefined"?a=await Ne(this,j0).call(this):a=await Ne(this,G0).call(this),this.config.videoOptimized=r;let s=mt();return this.config.debug&&Fe("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};B0=new WeakMap,Je=new WeakMap,ru=new WeakMap,Yc=new WeakMap,Jc=new WeakMap,Bi=new WeakMap,qt=new WeakMap,V0=new WeakMap,Qc=new WeakMap,U0=new WeakMap,eh=new WeakMap,H0=new WeakMap,j0=new WeakMap,G0=new WeakMap;var th=0,P4=!1,kt={background:"darkslategray",hover:"lightgray",itemBackground:"black",itemColor:"white",buttonBackground:"lightblue",buttonHover:"lightgreen",checkboxOn:"lightgreen",checkboxOff:"lightcoral",rangeBackground:"lightblue",rangeLabel:"white",chartColor:"lightblue"};function Nse(){if(P4)return;let e=` +2Q==`;var E2={};xr(E2,{author:()=>I4,browser:()=>v4,bugs:()=>N4,default:()=>kse,description:()=>x4,devDependencies:()=>M4,engines:()=>E4,homepage:()=>S4,keywords:()=>F4,license:()=>T4,main:()=>b4,module:()=>_4,name:()=>g4,repository:()=>C4,scripts:()=>R4,sideEffects:()=>w4,types:()=>k4,version:()=>C2});var g4="@vladmandic/human",C2="1.1.5",x4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",w4=!1,b4="dist/human.node.js",_4="dist/human.esm.js",v4="dist/human.esm.js",k4="types/src/human.d.ts",I4="Vladimir Mandic ",N4={url:"https://github.com/vladmandic/human/issues"},S4="https://vladmandic.github.io/human/demo/index.html",T4="MIT",E4={node:">=12.0.0"},C4={type:"git",url:"git+https://github.com/vladmandic/human.git"},R4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},F4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],M4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kse={name:g4,version:C2,description:x4,sideEffects:w4,main:b4,module:_4,browser:v4,types:k4,author:I4,bugs:N4,homepage:S4,license:T4,engines:E4,repository:C4,scripts:R4,keywords:F4,devDependencies:M4};var R2={};xr(R2,{all:()=>Nse,body:()=>z4,canvas:()=>Ise,drawOptions:()=>de,face:()=>O4,gesture:()=>D4,hand:()=>P4});var de={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function L0(e,t,n,r=null){e.fillStyle=de.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:de.color,e.beginPath(),e.arc(t,n,de.pointSize,0,2*Math.PI),e.fill()}function $4(e,t,n,r,a){if(e.beginPath(),de.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=de.lineWidth,e.moveTo(t+de.roundRect,n),e.lineTo(t+r-de.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+de.roundRect),e.lineTo(t+r,n+a-de.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-de.roundRect,n+a),e.lineTo(t+de.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-de.roundRect),e.lineTo(t,n+de.roundRect),e.quadraticCurveTo(t,n,t+de.roundRect,n),e.closePath();e.stroke()}function F2(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.fillStyle=de.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:de.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),de.fillPolygons&&(e.closePath(),e.fill())}}function W0(e,t=[]){if(!(t===void 0||t.length===0)){if(!de.useCurves||t.length<=2){F2(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(l,8,2+r*de.lineHeight)),n.fillStyle=de.labelColor,n.fillText(l,6,0+r*de.lineHeight),r+=1}}}async function O4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=de.font,n.strokeStyle=de.color,n.fillStyle=de.color,de.drawBoxes&&$4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=de.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*de.lineHeight+r.box[1];de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=de.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(de.drawPoints)for(let s of r.mesh)L0(n,s[0],s[1],s[2]);if(de.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);F2(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=de.useDepth?"rgba(255, 200, 255, 0.3)":de.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),de.fillPolygons&&(n.fillStyle=de.useDepth?"rgba(255, 255, 200, 0.3)":de.color,n.fill())}}}}}var os=[];async function z4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&F2(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>gt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),W0(n,s)}}}}async function P4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=de.font;for(let r of t){if(de.drawBoxes&&(n.strokeStyle=de.color,n.fillStyle=de.color,$4(n,r.box[0],r.box[1],r.box[2],r.box[3]),de.shadowColor&&de.shadowColor!==""&&(n.fillStyle=de.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+de.lineHeight,r.box[2])),n.fillStyle=de.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+de.lineHeight,r.box[2]),n.stroke()),de.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=de.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:de.color,L0(n,a[0],a[1]);if(de.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function Ise(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function Nse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(O4(e,t.face),z4(e,t.body),P4(e,t.hand),D4(e,t.gesture))}var mt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Zc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Zc(s,i):n[a]=i}),n),{})}var B0,Je,ru,Yc,Jc,Bi,qt,V0,Qc,U0,eh,H0,j0,G0,$2=class{constructor(t={}){B0.set(this,void 0);Je.set(this,void 0);ru.set(this,void 0);Yc.set(this,void 0);Jc.set(this,void 0);Bi.set(this,void 0);qt.set(this,(...t)=>{if(!Ne(this,Yc))return;let n=this.tf.engine().state.numTensors,r=Ne(this,ru);ia(this,ru,n);let a=n-r;a!==0&&Fe(...t,a)});V0.set(this,t=>{if(!Ne(this,Jc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ge))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Qc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=mt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Fe("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Fe("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Fe(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Fe("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&S6();try{await this.tf.setBackend(this.config.backend)}catch(r){Fe("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Fe("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Fe(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),Ne(this,Je).backend=Math.trunc(mt()-n)}});U0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});eh.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=mt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(Ne(this,Je).face=Math.trunc(mt()-n),!l)return[];for(let A of l){if(Ne(this,qt).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Fe("Face object is disposed:",A.image);continue}let y=Ne(this,U0).call(this,A.mesh);Ne(this,qt).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?Bg(A.image,this.config):{}:(this.state="run:age",n=mt(),r=this.config.face.age.enabled?await Bg(A.image,this.config):{},Ne(this,Je).age=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?qg(A.image,this.config):{}:(this.state="run:gender",n=mt(),a=this.config.face.gender.enabled?await qg(A.image,this.config):{},Ne(this,Je).gender=Math.trunc(mt()-n)),Ne(this,qt).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?Jg(A.image,this.config):{}:(this.state="run:emotion",n=mt(),s=this.config.face.emotion.enabled?await Jg(A.image,this.config):{},Ne(this,Je).emotion=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),Ne(this,qt).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?n2(A,this.config):[]:(this.state="run:embedding",n=mt(),i=this.config.face.embedding.enabled?await n2(A,this.config):[],Ne(this,Je).embedding=Math.trunc(mt()-n)),Ne(this,qt).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),Ne(this,qt).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),Ne(this,qt).call(this,"End Face")}return Ne(this,qt).call(this,"End FaceMesh:"),this.config.async&&(Ne(this,Je).face&&delete Ne(this,Je).face,Ne(this,Je).age&&delete Ne(this,Je).age,Ne(this,Je).gender&&delete Ne(this,Je).gender,Ne(this,Je).emotion&&delete Ne(this,Je).emotion),o});H0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(z0);break;case"full":n=await t(P0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});j0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+z0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+P0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));G0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(z0):t(P0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=Eh,this.draw=R2,ia(this,B0,E2),this.version=C2,this.config=Zc(gt,t),this.state="idle",ia(this,ru,0),ia(this,Yc,!1),ia(this,Jc,!1),ia(this,Bi,!0),ia(this,Je,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>T2(n,this.config),this.classes={facemesh:M2,age:Lg,gender:Vg,emotion:Xg,body:this.config.body.modelPath.includes("posenet")?f2:I2,hand:b2},this.sysinfo=K2()}profileData(){return this.config.profile?Pg:{}}simmilarity(t,n){return this.config.face.embedding.enabled?e2(t,n):0}enhance(t){return t2(t)}match(t,n,r=0){return L6(t,n,r)}async load(t={}){this.state="load";let n=mt();t&&(this.config=Zc(this.config,t)),Ne(this,Bi)&&(this.config.debug&&Fe(`version: ${this.version}`),this.config.debug&&Fe(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Fe("platform:",this.sysinfo.platform),this.config.debug&&Fe("agent:",this.sysinfo.agent),await Ne(this,Qc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Fe("configuration:",this.config),this.config.debug&&Fe("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?M2.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?Wg(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?Gg(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?Yg(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?Qg(this.config):null),this.models.handpose||(this.config.hand.enabled?k2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?A2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?N2(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await M2.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await Wg(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await Gg(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await Yg(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await Qg(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await k2(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await A2(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await N2(this.config))),Ne(this,Bi)&&(this.config.debug&&Fe("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ia(this,Bi,!1));let r=Math.trunc(mt()-n);r>(Ne(this,Je).load||0)&&(Ne(this,Je).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Zc(this.config,n),this.state="check";let s=Ne(this,V0).call(this,t);s&&(Fe(s,t),r({error:s}));let i=mt();await Ne(this,Qc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),Ne(this,qt).call(this,"Start Scope:"),a=mt();let o=T2(t,this.config);if(!o||!o.tensor){Fe("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}Ne(this,Je).image=Math.trunc(mt()-a),Ne(this,qt).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face&&delete Ne(this,Je).face):(this.state="run:face",a=mt(),c=this.config.face.enabled?await Ne(this,eh).call(this,o.tensor):[],Ne(this,Je).face=Math.trunc(mt()-a)),Ne(this,qt).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?S2(o.tensor,this.config):[],Ne(this,Je).body&&delete Ne(this,Je).body):(this.state="run:body",a=mt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await S2(o.tensor,this.config):[],Ne(this,Je).body=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Body:"),Ne(this,qt).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],Ne(this,Je).hand&&delete Ne(this,Je).hand):(this.state="run:hand",a=mt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],Ne(this,Je).hand=Math.trunc(mt()-a)),Ne(this,qt).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),Ne(this,qt).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=mt(),h=[...f4(c),...p4(l),...A4(u),...m4(c)],this.config.async?Ne(this,Je).gesture&&delete Ne(this,Je).gesture:Ne(this,Je).gesture=Math.trunc(mt()-a)),Ne(this,Je).total=Math.trunc(mt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:Ne(this,Je),canvas:o.canvas})})}async warmup(t={}){let n=mt();t&&(this.config=Zc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await Ne(this,H0).call(this):typeof Image!="undefined"?a=await Ne(this,j0).call(this):a=await Ne(this,G0).call(this),this.config.videoOptimized=r;let s=mt();return this.config.debug&&Fe("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};B0=new WeakMap,Je=new WeakMap,ru=new WeakMap,Yc=new WeakMap,Jc=new WeakMap,Bi=new WeakMap,qt=new WeakMap,V0=new WeakMap,Qc=new WeakMap,U0=new WeakMap,eh=new WeakMap,H0=new WeakMap,j0=new WeakMap,G0=new WeakMap;var th=0,L4=!1,kt={background:"darkslategray",hover:"lightgray",itemBackground:"black",itemColor:"white",buttonBackground:"lightblue",buttonHover:"lightgreen",checkboxOn:"lightgreen",checkboxOff:"lightcoral",rangeBackground:"lightblue",rangeLabel:"white",chartColor:"lightblue"};function Sse(){if(L4)return;let e=` :root { --rounded: 0.1rem; } .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10; box-shadow: 0 0 8px dimgrey; background: ${kt.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; } @@ -4936,10 +4936,10 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ .svg-background { fill:darkslategrey; cursor:pointer; opacity: 0.6; } .svg-foreground { fill:white; cursor:pointer; opacity: 0.8; } - `,t=document.createElement("style");t.innerHTML=e,document.getElementsByTagName("head")[0].appendChild(t),P4=!0}var L4=class{constructor(t,n,r,a){a&&(kt={...kt,...a}),Nse(),this.createMenu(t,n,r),this.id=0,this.instance=th,th++,this._maxFPS=0,this.hidden=0}createMenu(t,n="",r={top:null,left:null,bottom:null,right:null}){this.menu=document.createElement("div"),this.menu.id=`menu-${th}`,this.menu.className="menu",r&&(r.top&&(this.menu.style.top=r.top),r.bottom&&(this.menu.style.bottom=r.bottom),r.left&&(this.menu.style.left=r.left),r.right&&(this.menu.style.right=r.right)),this.container=document.createElement("div"),this.container.id=`menu-container-${th}`,this.container.className="menu-container menu-container-fadein";let a=document.createElement("div");a.className="menu-title",a.id=`menu-title-${th}`;let s=` + `,t=document.createElement("style");t.innerHTML=e,document.getElementsByTagName("head")[0].appendChild(t),L4=!0}var W4=class{constructor(t,n,r,a){a&&(kt={...kt,...a}),Sse(),this.createMenu(t,n,r),this.id=0,this.instance=th,th++,this._maxFPS=0,this.hidden=0}createMenu(t,n="",r={top:null,left:null,bottom:null,right:null}){this.menu=document.createElement("div"),this.menu.id=`menu-${th}`,this.menu.className="menu",r&&(r.top&&(this.menu.style.top=r.top),r.bottom&&(this.menu.style.bottom=r.bottom),r.left&&(this.menu.style.left=r.left),r.right&&(this.menu.style.right=r.right)),this.container=document.createElement("div"),this.container.id=`menu-container-${th}`,this.container.className="menu-container menu-container-fadein";let a=document.createElement("div");a.className="menu-title",a.id=`menu-title-${th}`;let s=` - `;n&&(a.innerHTML=`${n}${s}`),this.menu.appendChild(a),a.addEventListener("click",()=>{this.container.classList.toggle("menu-container-fadeout"),this.container.classList.toggle("menu-container-fadein"),this.menu.style.borderStyle=this.container.classList.contains("menu-container-fadeout")?"none":"solid"}),this.menu.appendChild(this.container),typeof t=="object"?t.appendChild(this.menu):document.getElementById(t).appendChild(this.menu)}get newID(){return this.id++,`menu-${this.instance}-${this.id}`}get ID(){return`menu-${this.instance}-${this.id}`}get width(){return this.menu.offsetWidth}get height(){return this.menu.offsetHeight}hide(){this.container.classList.contains("menu-container-fadein")&&(this.container.classList.toggle("menu-container-fadeout"),this.container.classList.toggle("menu-container-fadein"))}visible(){return this.container.classList.contains("menu-container-fadein")}toggle(t){if(this.container.classList.toggle("menu-container-fadeout"),this.container.classList.toggle("menu-container-fadein"),this.container.classList.contains("menu-container-fadein")&&t){let n=t.x||(t.touches&&t.touches[0]?t.touches[0].pageX:null);n&&(this.menu.style.left=`${n-this.menu.offsetWidth/2}px`),this.menu.offsetLeft<0&&(this.menu.style.left=0),this.menu.offsetLeft+this.menu.offsetWidth>window.innerWidth&&(this.menu.style.left=null,this.menu.style.right=0),this.menu.style.borderStyle="solid"}else this.menu.style.borderStyle="none"}addTitle(t){let n=document.createElement("div");return n.className="menu-title",n.id=this.newID,n.innerHTML=t,this.menu.appendChild(n),n.addEventListener("click",()=>{this.hidden=!this.hidden;let r=document.getElementsByClassName("menu");for(let a of r)a.style.display=this.hidden?"none":"block"}),n}addLabel(t){let n=document.createElement("div");return n.className="menu-item menu-label",n.id=this.newID,n.innerHTML=t,this.container.appendChild(n),n}addBool(t,n,r,a){let s=document.createElement("div");return s.className="menu-item",s.innerHTML=`${t}`,this.container.appendChild(s),s.addEventListener("change",i=>{n[r]=i.target.checked,a&&a(i.target.checked)}),s}async addList(t,n,r,a){let s=document.createElement("div");s.className="menu-item";let i="";for(let o of n)i+=``;return s.innerHTML=`${t}`,s.style.fontFamily=document.body.style.fontFamily,s.style.fontSize=document.body.style.fontSize,s.style.fontVariant=document.body.style.fontVariant,this.container.appendChild(s),s.addEventListener("change",o=>{a&&a(n[o.target.selectedIndex])}),s}addRange(t,n,r,a,s,i,o){let l=document.createElement("div");return l.className="menu-item",l.innerHTML=`${t}`,this.container.appendChild(l),l.addEventListener("change",u=>{n[r]=parseInt(u.target.value)===parseFloat(u.target.value)?parseInt(u.target.value):parseFloat(u.target.value),u.target.setAttribute("value",u.target.value),o&&o(u.target.value)}),l.input=l.children[0],l}addHTML(t){let n=document.createElement("div");return n.className="menu-item",n.id=this.newID,t&&(n.innerHTML=t),this.container.appendChild(n),n}addButton(t,n,r){let a=document.createElement("button");return a.className="menu-item menu-button",a.style.fontFamily=document.body.style.fontFamily,a.style.fontSize=document.body.style.fontSize,a.style.fontVariant=document.body.style.fontVariant,a.type="button",a.id=this.newID,a.innerText=t,this.container.appendChild(a),a.addEventListener("click",()=>{a.innerText===t?a.innerText=n:a.innerText=t,r&&r(a.innerText!==t)}),a}addValue(t,n,r=""){let a=document.createElement("div");return a.className="menu-item",a.id=`menu-val-${t}`,a.innerText=`${t}: ${n}${r}`,this.container.appendChild(a),a}updateValue(t,n,r=""){let a=document.getElementById(`menu-val-${t}`);a?a.innerText=`${t}: ${n}${r}`:this.addValue(t,n)}addChart(t,n,r=150,a=40,s){s&&(kt.chartColor=s);let i=document.createElement("div");return i.className="menu-item menu-chart-title",i.id=this.newID,i.innerHTML=`${t}`,this.container.appendChild(i),i}async updateChart(t,n){if(!n||n.length===0)return;let r=document.getElementById(`menu-canvas-${t}`);if(!r)return;let a=r.getContext("2d");a.fillStyle=kt.background,a.fillRect(0,0,r.width,r.height);let s=r.width/n.length,i=1+Math.max(...n),o=r.height/i;for(let l=0;l`;n&&(a.innerHTML=`${n}${s}`),this.menu.appendChild(a),a.addEventListener("click",()=>{this.container.classList.toggle("menu-container-fadeout"),this.container.classList.toggle("menu-container-fadein"),this.menu.style.borderStyle=this.container.classList.contains("menu-container-fadeout")?"none":"solid"}),this.menu.appendChild(this.container),typeof t=="object"?t.appendChild(this.menu):document.getElementById(t).appendChild(this.menu)}get newID(){return this.id++,`menu-${this.instance}-${this.id}`}get ID(){return`menu-${this.instance}-${this.id}`}get width(){return this.menu.offsetWidth}get height(){return this.menu.offsetHeight}hide(){this.container.classList.contains("menu-container-fadein")&&(this.container.classList.toggle("menu-container-fadeout"),this.container.classList.toggle("menu-container-fadein"))}visible(){return this.container.classList.contains("menu-container-fadein")}toggle(t){if(this.container.classList.toggle("menu-container-fadeout"),this.container.classList.toggle("menu-container-fadein"),this.container.classList.contains("menu-container-fadein")&&t){let n=t.x||(t.touches&&t.touches[0]?t.touches[0].pageX:null);n&&(this.menu.style.left=`${n-this.menu.offsetWidth/2}px`),this.menu.offsetLeft<0&&(this.menu.style.left=0),this.menu.offsetLeft+this.menu.offsetWidth>window.innerWidth&&(this.menu.style.left=null,this.menu.style.right=0),this.menu.style.borderStyle="solid"}else this.menu.style.borderStyle="none"}addTitle(t){let n=document.createElement("div");return n.className="menu-title",n.id=this.newID,n.innerHTML=t,this.menu.appendChild(n),n.addEventListener("click",()=>{this.hidden=!this.hidden;let r=document.getElementsByClassName("menu");for(let a of r)a.style.display=this.hidden?"none":"block"}),n}addLabel(t){let n=document.createElement("div");return n.className="menu-item menu-label",n.id=this.newID,n.innerHTML=t,this.container.appendChild(n),n}addBool(t,n,r,a){let s=document.createElement("div");return s.className="menu-item",s.innerHTML=`${t}`,this.container.appendChild(s),s.addEventListener("change",i=>{n[r]=i.target.checked,a&&a(i.target.checked)}),s}async addList(t,n,r,a){let s=document.createElement("div");s.className="menu-item";let i="";for(let o of n)i+=``;return s.innerHTML=`${t}`,s.style.fontFamily=document.body.style.fontFamily,s.style.fontSize=document.body.style.fontSize,s.style.fontVariant=document.body.style.fontVariant,this.container.appendChild(s),s.addEventListener("change",o=>{a&&a(n[o.target.selectedIndex])}),s}addRange(t,n,r,a,s,i,o){let l=document.createElement("div");return l.className="menu-item",l.innerHTML=`${t}`,this.container.appendChild(l),l.addEventListener("change",u=>{n[r]=parseInt(u.target.value)===parseFloat(u.target.value)?parseInt(u.target.value):parseFloat(u.target.value),u.target.setAttribute("value",u.target.value),o&&o(u.target.value)}),l.input=l.children[0],l}addHTML(t){let n=document.createElement("div");return n.className="menu-item",n.id=this.newID,t&&(n.innerHTML=t),this.container.appendChild(n),n}addButton(t,n,r){let a=document.createElement("button");return a.className="menu-item menu-button",a.style.fontFamily=document.body.style.fontFamily,a.style.fontSize=document.body.style.fontSize,a.style.fontVariant=document.body.style.fontVariant,a.type="button",a.id=this.newID,a.innerText=t,this.container.appendChild(a),a.addEventListener("click",()=>{a.innerText===t?a.innerText=n:a.innerText=t,r&&r(a.innerText!==t)}),a}addValue(t,n,r=""){let a=document.createElement("div");return a.className="menu-item",a.id=`menu-val-${t}`,a.innerText=`${t}: ${n}${r}`,this.container.appendChild(a),a}updateValue(t,n,r=""){let a=document.getElementById(`menu-val-${t}`);a?a.innerText=`${t}: ${n}${r}`:this.addValue(t,n)}addChart(t,n,r=150,a=40,s){s&&(kt.chartColor=s);let i=document.createElement("div");return i.className="menu-item menu-chart-title",i.id=this.newID,i.innerHTML=`${t}`,this.container.appendChild(i),i}async updateChart(t,n){if(!n||n.length===0)return;let r=document.getElementById(`menu-canvas-${t}`);if(!r)return;let a=r.getContext("2d");a.fillStyle=kt.background,a.fillRect(0,0,r.width,r.height);let s=r.width/n.length,i=1+Math.max(...n),o=r.height/i;for(let l=0;l 00 FPS @@ -4969,15 +4969,15 @@ lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ - `,W4=class{constructor(t,n={}){this.css=Sse,this.svg=Tse,this.paramLogger=()=>{},this.chartLogger=()=>{},this.chartLen=20,this.chartHz=20,this.names=[],this.cpuAccums=[],this.gpuAccums=[],this.activeAccums=[],this.chart=new Array(this.chartLen),this.now=()=>performance&&performance.now?performance.now():Date.now(),this.updateUI=()=>{[].forEach.call(this.nodes["gl-gpu-svg"],o=>o.style.display=this.trackGPU?"inline":"none")},Object.assign(this,n),this.detected=0,this.finished=[],this.isFramebuffer=0,this.frameId=0;let r,a=0,s,i=o=>{++a<20?r=requestAnimationFrame(i):(this.detected=Math.ceil(1e3*a/(o-s)/70),cancelAnimationFrame(r)),s||(s=o)};if(requestAnimationFrame(i),t){let o=async(c,h)=>Promise.resolve(setTimeout(()=>{t.getError();let d=this.now()-c;h.forEach((p,f)=>{p&&(this.gpuAccums[f]+=d)})},0)),l=(c,h,d)=>{let p=h.now();c.apply(d,arguments),h.trackGPU&&h.finished.push(o(p,h.activeAccums.slice(0)))},u="drawElements";t[u]?t[u]=l(t[u],this,t):console.log("bench: cannot attach to webgl function")}if(!this.withoutUI){this.dom||(this.dom=document.body);let o=document.createElement("div");o.id="gl-bench",this.dom.appendChild(o),this.dom.insertAdjacentHTML("afterbegin",'"),this.dom=o,this.dom.addEventListener("click",()=>{this.trackGPU=!this.trackGPU,this.updateUI()}),this.paramLogger=((l,u,c)=>{let h=["gl-cpu","gl-gpu","gl-mem","gl-fps","gl-gpu-svg","gl-chart"],d={...h};return h.forEach(p=>d[p]=u.getElementsByClassName(p)),this.nodes=d,(p,f,m,A,y,g,b)=>{d["gl-cpu"][p].style.strokeDasharray=(f*.27).toFixed(0)+" 100",d["gl-gpu"][p].style.strokeDasharray=(m*.27).toFixed(0)+" 100",d["gl-mem"][p].innerHTML=c[p]?c[p]:A?"mem: "+A.toFixed(0)+"mb":"",d["gl-fps"][p].innerHTML="FPS: "+y.toFixed(1),l(c[p],f,m,A,y,g,b)}})(this.paramLogger,this.dom,this.names),this.chartLogger=((l,u)=>{let c={"gl-chart":u.getElementsByClassName("gl-chart")};return(h,d,p)=>{let f="",m=d.length;for(let A=0;A=1e3){let a=this.frameId-this.paramFrame,s=a/r*1e3;for(let i=0;i{this.gpuAccums[i]=0,this.finished=[]})}this.paramFrame=this.frameId,this.paramTime=n}}if(!this.detected||!this.chartFrame)this.chartFrame=this.frameId,this.chartTime=n,this.circularId=0;else{let r=n-this.chartTime,a=this.chartHz*r/1e3;for(;--a>0&&this.detected;){let i=(this.frameId-this.chartFrame)/r*1e3;this.chart[this.circularId%this.chartLen]=i;for(let o=0;o0)||((a=(r=e==null?void 0:e.face[0])==null?void 0:r.embedding)==null?void 0:a.length)>=64)return;if(!Ui)if(Ui=e,e.face[0].tensor){let o=ne.enhance(e.face[0]);if(o){let l=document.getElementById("orig"),u=o.squeeze();ne.tf.browser.toPixels(u,l),o.dispose(),u.dispose()}}else document.getElementById("compare-canvas").getContext("2d").drawImage(Ui.canvas,0,0,200,200);let t=ne.simmilarity((s=Ui==null?void 0:Ui.face[0])==null?void 0:s.embedding,(i=e==null?void 0:e.face[0])==null?void 0:i.embedding);document.getElementById("simmilarity").innerText=`simmilarity: ${Math.trunc(1e3*t)/10}%`}var V4=performance.now();async function K0(e){let t=X0,n=document.getElementById("canvas");if(ce.drawFPS.push(1e3/(performance.now()-V4)),ce.drawFPS.length>ce.maxFPSframes&&ce.drawFPS.shift(),V4=performance.now(),await ye.process.updateChart("FPS",ce.detectFPS),ce.buffered||!t.canvas){let h=await ne.image(e);t.canvas=h.canvas,ne.tf.dispose(h.tensor)}let r=n.getContext("2d");r.fillStyle=ce.baseBackground,r.fillRect(0,0,n.width,n.height),t.canvas?(t.canvas.width!==n.width&&(n.width=t.canvas.width),t.canvas.height!==n.height&&(n.height=t.canvas.height),r.drawImage(t.canvas,0,0,t.canvas.width,t.canvas.height,0,0,t.canvas.width,t.canvas.height)):r.drawImage(e,0,0,e.width,e.height,0,0,n.width,n.height),ne.draw.face(n,t.face),ne.draw.body(n,t.body),ne.draw.hand(n,t.hand),ne.draw.gesture(n,t.gesture),await Cse(t);let a=ne.tf.engine(),s=a.backendInstance?`gpu: ${(a.backendInstance.numBytesInGPU?a.backendInstance.numBytesInGPU:0).toLocaleString()} bytes`:"",i=`system: ${a.state.numBytes.toLocaleString()} bytes ${s} | tensors: ${a.state.numTensors.toLocaleString()}`,o=t.canvas?`processing: ${t.canvas.width} x ${t.canvas.height}`:"",l=Math.trunc(10*ce.detectFPS.reduce((h,d)=>h+d,0)/ce.detectFPS.length)/10,u=Math.trunc(10*ce.drawFPS.reduce((h,d)=>h+d,0)/ce.drawFPS.length)/10,c=ce.detectFPS.length>5&&l<5?'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models':"";document.getElementById("log").innerHTML=` + `,B4=class{constructor(t,n={}){this.css=Tse,this.svg=Ese,this.paramLogger=()=>{},this.chartLogger=()=>{},this.chartLen=20,this.chartHz=20,this.names=[],this.cpuAccums=[],this.gpuAccums=[],this.activeAccums=[],this.chart=new Array(this.chartLen),this.now=()=>performance&&performance.now?performance.now():Date.now(),this.updateUI=()=>{[].forEach.call(this.nodes["gl-gpu-svg"],o=>o.style.display=this.trackGPU?"inline":"none")},Object.assign(this,n),this.detected=0,this.finished=[],this.isFramebuffer=0,this.frameId=0;let r,a=0,s,i=o=>{++a<20?r=requestAnimationFrame(i):(this.detected=Math.ceil(1e3*a/(o-s)/70),cancelAnimationFrame(r)),s||(s=o)};if(requestAnimationFrame(i),t){let o=async(c,h)=>Promise.resolve(setTimeout(()=>{t.getError();let d=this.now()-c;h.forEach((p,f)=>{p&&(this.gpuAccums[f]+=d)})},0)),l=(c,h,d)=>{let p=h.now();c.apply(d,arguments),h.trackGPU&&h.finished.push(o(p,h.activeAccums.slice(0)))},u="drawElements";t[u]?t[u]=l(t[u],this,t):console.log("bench: cannot attach to webgl function")}if(!this.withoutUI){this.dom||(this.dom=document.body);let o=document.createElement("div");o.id="gl-bench",this.dom.appendChild(o),this.dom.insertAdjacentHTML("afterbegin",'"),this.dom=o,this.dom.addEventListener("click",()=>{this.trackGPU=!this.trackGPU,this.updateUI()}),this.paramLogger=((l,u,c)=>{let h=["gl-cpu","gl-gpu","gl-mem","gl-fps","gl-gpu-svg","gl-chart"],d={...h};return h.forEach(p=>d[p]=u.getElementsByClassName(p)),this.nodes=d,(p,f,m,A,y,g,b)=>{d["gl-cpu"][p].style.strokeDasharray=(f*.27).toFixed(0)+" 100",d["gl-gpu"][p].style.strokeDasharray=(m*.27).toFixed(0)+" 100",d["gl-mem"][p].innerHTML=c[p]?c[p]:A?"mem: "+A.toFixed(0)+"mb":"",d["gl-fps"][p].innerHTML="FPS: "+y.toFixed(1),l(c[p],f,m,A,y,g,b)}})(this.paramLogger,this.dom,this.names),this.chartLogger=((l,u)=>{let c={"gl-chart":u.getElementsByClassName("gl-chart")};return(h,d,p)=>{let f="",m=d.length;for(let A=0;A=1e3){let a=this.frameId-this.paramFrame,s=a/r*1e3;for(let i=0;i{this.gpuAccums[i]=0,this.finished=[]})}this.paramFrame=this.frameId,this.paramTime=n}}if(!this.detected||!this.chartFrame)this.chartFrame=this.frameId,this.chartTime=n,this.circularId=0;else{let r=n-this.chartTime,a=this.chartHz*r/1e3;for(;--a>0&&this.detected;){let i=(this.frameId-this.chartFrame)/r*1e3;this.chart[this.circularId%this.chartLen]=i;for(let o=0;o0)||((a=(r=e==null?void 0:e.face[0])==null?void 0:r.embedding)==null?void 0:a.length)>=64)return;if(!Ui)if(Ui=e,e.face[0].tensor){let o=ne.enhance(e.face[0]);if(o){let l=document.getElementById("orig"),u=o.squeeze();ne.tf.browser.toPixels(u,l),o.dispose(),u.dispose()}}else document.getElementById("compare-canvas").getContext("2d").drawImage(Ui.canvas,0,0,200,200);let t=ne.simmilarity((s=Ui==null?void 0:Ui.face[0])==null?void 0:s.embedding,(i=e==null?void 0:e.face[0])==null?void 0:i.embedding);document.getElementById("simmilarity").innerText=`simmilarity: ${Math.trunc(1e3*t)/10}%`}var U4=performance.now();async function K0(e){let t=X0,n=document.getElementById("canvas");if(ce.drawFPS.push(1e3/(performance.now()-U4)),ce.drawFPS.length>ce.maxFPSframes&&ce.drawFPS.shift(),U4=performance.now(),await ye.process.updateChart("FPS",ce.detectFPS),ce.buffered||!t.canvas){let h=await ne.image(e);t.canvas=h.canvas,ne.tf.dispose(h.tensor)}let r=n.getContext("2d");r.fillStyle=ce.baseBackground,r.fillRect(0,0,n.width,n.height),t.canvas?(t.canvas.width!==n.width&&(n.width=t.canvas.width),t.canvas.height!==n.height&&(n.height=t.canvas.height),r.drawImage(t.canvas,0,0,t.canvas.width,t.canvas.height,0,0,t.canvas.width,t.canvas.height)):r.drawImage(e,0,0,e.width,e.height,0,0,n.width,n.height),ne.draw.face(n,t.face),ne.draw.body(n,t.body),ne.draw.hand(n,t.hand),ne.draw.gesture(n,t.gesture),await Rse(t);let a=ne.tf.engine(),s=a.backendInstance?`gpu: ${(a.backendInstance.numBytesInGPU?a.backendInstance.numBytesInGPU:0).toLocaleString()} bytes`:"",i=`system: ${a.state.numBytes.toLocaleString()} bytes ${s} | tensors: ${a.state.numTensors.toLocaleString()}`,o=t.canvas?`processing: ${t.canvas.width} x ${t.canvas.height}`:"",l=Math.trunc(10*ce.detectFPS.reduce((h,d)=>h+d,0)/ce.detectFPS.length)/10,u=Math.trunc(10*ce.drawFPS.reduce((h,d)=>h+d,0)/ce.drawFPS.length)/10,c=ce.detectFPS.length>5&&l<5?'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models':"";document.getElementById("log").innerHTML=` video: ${ce.camera.name} | facing: ${ce.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ce.camera.width} x ${ce.camera.height} ${o}
backend: ${ne.tf.getBackend()} | ${i}
- performance: ${Ese(t.performance)}ms FPS process:${l} refresh:${u}
+ performance: ${Cse(t.performance)}ms FPS process:${l} refresh:${u}
${c}
`,ce.framesDraw++,ce.lastFrame=performance.now(),ce.buffered?ce.drawThread=requestAnimationFrame(()=>K0(e,n)):!ce.buffered&&ce.drawThread&&(qn("stopping buffered refresh"),cancelAnimationFrame(ce.drawThread),ce.drawThread=null)}async function Z0(){var u;if(ce.busy)return null;ce.busy=!0;let e=document.getElementById("video"),t=document.getElementById("canvas"),n=document.getElementById("log"),r=e.srcObject?e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState>2&&!e.paused:!1,a="";if(rr("setting up camera"),!navigator.mediaDevices)return a="camera access not supported",n.innerText+=` ${a}`,qn(a),rr(a),ce.busy=!1,a;let s,i={audio:!1,video:{facingMode:ce.facing?"user":"environment",resizeMode:ce.crop?"crop-and-scale":"none"}};window.innerWidth>window.innerHeight?i.video.width={ideal:window.innerWidth}:i.video.height={ideal:window.innerHeight-document.getElementById("menubar").offsetHeight};try{s=await navigator.mediaDevices.getUserMedia(i)}catch(c){return c.name==="PermissionDeniedError"||c.name==="NotAllowedError"?a="camera permission denied":c.name==="SourceUnavailableError"?a="camera not available":a=`camera error: ${c.message||c}`,n.innerText+=` -${a}`,rr(a),qn("camera error:",c),ce.busy=!1,a}if(s)e.srcObject=s;else return ce.busy=!1,"camera stream empty";let o=s.getVideoTracks()[0],l=o.getSettings();return ce.camera={name:(u=o.label)==null?void 0:u.toLowerCase(),width:l.width,height:l.height,facing:l.facingMode==="user"?"front":"back"},new Promise(c=>{e.onloadeddata=async()=>{e.width=e.videoWidth,e.height=e.videoHeight,t.width=e.width,t.height=e.height,t.style.width=t.width>t.height?"100vw":"",t.style.height=t.width>t.height?"":"100vh",ce.menuWidth.input.setAttribute("value",e.width),ce.menuHeight.input.setAttribute("value",e.height),r&&e.play(),r&&!ce.detectThread&&rh(e,t),ce.busy=!1,rr(""),c()}})}function U4(){if(!Vi){let e=null;Vi=new B4(e,{trackGPU:!1,chartHz:20,chartLen:20}),Vi.begin()}}function Rse(e,t,n,r){q0||(qn("creating worker thread"),q0=new Worker(ce.worker,{type:"module"}),q0.addEventListener("message",a=>{a.data.result.performance&&a.data.result.performance.total&&ce.detectFPS.push(1e3/a.data.result.performance.total),ce.detectFPS.length>ce.maxFPSframes&&ce.detectFPS.shift(),ce.bench&&(Vi||U4(),Vi.nextFrame(r)),document.getElementById("gl-bench")&&(document.getElementById("gl-bench").style.display=ce.bench?"block":"none"),X0=a.data.result,ce.framesDetect++,ce.drawThread||K0(e),ce.detectThread=requestAnimationFrame(s=>rh(e,n,s))})),q0.postMessage({image:t.data.buffer,width:n.width,height:n.height,userConfig:ls},[t.data.buffer])}function rh(e,t,n){var a;if(!(e.srcObject&&e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState>2&&!e.paused)&&e.srcObject){ce.drawThread&&cancelAnimationFrame(ce.drawThread),ce.detectThread&&cancelAnimationFrame(ce.detectThread),ce.drawThread=null,ce.detectThread=null,e.paused?qn("camera paused"):e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState<=2?setTimeout(()=>rh(e,t),500):qn(`camera not ready: track state: ${(a=e.srcObject)==null?void 0:a.getVideoTracks()[0].readyState} stream state: ${e.readyState}`),clearTimeout(ce.drawThread),ce.drawThread=null,qn("frame statistics: process:",ce.framesDetect,"refresh:",ce.framesDraw),qn("memory",ne.tf.engine().memory());return}if(rr(""),ce.useWorker){let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(t.width,t.height):document.createElement("canvas");s.width=t.width,s.height=t.height;let i=s.getContext("2d");i.drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height);let o=i.getImageData(0,0,t.width,t.height);Rse(e,o,t,ls,n)}else ne.detect(e,ls).then(s=>{s.performance&&s.performance.total&&ce.detectFPS.push(1e3/s.performance.total),ce.detectFPS.length>ce.maxFPSframes&&ce.detectFPS.shift(),ce.bench&&(Vi||U4(),Vi.nextFrame(n)),document.getElementById("gl-bench")&&(document.getElementById("gl-bench").style.display=ce.bench?"block":"none"),s.error?(qn(s.error),document.getElementById("log").innerText+=` -Human error: ${s.error}`):(X0=s,ce.drawThread||K0(e),ce.framesDetect++,ce.detectThread=requestAnimationFrame(i=>rh(e,t,i)))})}async function Fse(e){return new Promise(t=>{let n=new Image;n.onload=async()=>{qn("Processing image:",encodeURI(n.src));let r=document.getElementById("canvas");n.width=n.naturalWidth,n.height=n.naturalHeight,r.width=ne.config.filter.width&&ne.config.filter.width>0?ne.config.filter.width:n.naturalWidth,r.height=ne.config.filter.height&&ne.config.filter.height>0?ne.config.filter.height:n.naturalHeight;let a=await ne.detect(n,ls);X0=a,await K0(n);let s=document.createElement("canvas");s.className="thumbnail",s.width=window.innerWidth/(ce.columns+.1),s.height=s.width*r.height/r.width,a.face&&a.face.length>0?s.title=a.face.map((o,l)=>`#${l} face: ${Math.trunc(100*o.faceConfidence)}% box: ${Math.trunc(100*o.boxConfidence)}% age: ${Math.trunc(o.age)} gender: ${Math.trunc(100*o.genderConfidence)}% ${o.gender}`).join(" | "):s.title="no face detected",s.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,s.width,s.height),document.getElementById("samples-container").appendChild(s),n.src="",t(!0)},n.src=e})}async function H4(){document.getElementById("samples-container").style.display="none",document.getElementById("canvas").style.display="block";let e=document.getElementById("video"),t=document.getElementById("canvas");if(e.srcObject!==null&&!e.paused)document.getElementById("play").style.display="block",document.getElementById("btnStart").className="button button-start",document.getElementById("btnStart").innerHTML="start
video",rr("paused"),e.pause();else{let n=await Z0();if(n)rr(n);else{document.getElementById("play").style.display="none";for(let r of Object.values(ye))r.hide();rr(""),document.getElementById("btnStart").className="button button-stop",document.getElementById("btnStart").innerHTML="pause
video",await e.play(),ce.detectThread||rh(e,t)}}}async function Mse(){ls.videoOptimized=!1,document.getElementById("play").style.display="none",document.getElementById("canvas").style.display="none",document.getElementById("samples-container").style.display="block",qn("Running detection of sample images"),rr("processing images"),document.getElementById("samples-container").innerHTML="";for(let e of Object.values(ye))e.hide();for(let e of ce.samples)await Fse(e);rr("")}function $se(){let e=[];window.innerWidth>800?e=[`${document.getElementById("btnDisplay").offsetLeft-50}px`,`${document.getElementById("btnImage").offsetLeft-50}px`,`${document.getElementById("btnProcess").offsetLeft-50}px`,`${document.getElementById("btnModel").offsetLeft-50}px`]:e=["0rem","11rem","21.1rem","33rem"],ye.display=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[0]}),ye.display.addBool("perf monitor",ce,"bench",t=>ce.bench=t),ye.display.addBool("buffered output",ce,"buffered",t=>ce.buffered=t),ye.display.addBool("crop & scale",ce,"crop",t=>{ce.crop=t,Z0()}),ye.display.addBool("camera facing",ce,"facing",t=>{ce.facing=t,Z0()}),ye.display.addHTML('
'),ye.display.addBool("use 3D depth",ne.draw.drawOptions,"useDepth"),ye.display.addBool("draw with curves",ne.draw.drawOptions,"useCurves"),ye.display.addBool("print labels",ne.draw.drawOptions,"drawLabels"),ye.display.addBool("draw points",ne.draw.drawOptions,"drawPoints"),ye.display.addBool("draw boxes",ne.draw.drawOptions,"drawBoxes"),ye.display.addBool("draw polygons",ne.draw.drawOptions,"drawPolygons"),ye.display.addBool("fill polygons",ne.draw.drawOptions,"fillPolygons"),ye.image=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[1]}),ye.image.addBool("enabled",ne.config.filter,"enabled",t=>ne.config.filter.enabled=t),ce.menuWidth=ye.image.addRange("image width",ne.config.filter,"width",0,3840,10,t=>ne.config.filter.width=parseInt(t)),ce.menuHeight=ye.image.addRange("image height",ne.config.filter,"height",0,2160,10,t=>ne.config.filter.height=parseInt(t)),ye.image.addHTML('
'),ye.image.addRange("brightness",ne.config.filter,"brightness",-1,1,.05,t=>ne.config.filter.brightness=parseFloat(t)),ye.image.addRange("contrast",ne.config.filter,"contrast",-1,1,.05,t=>ne.config.filter.contrast=parseFloat(t)),ye.image.addRange("sharpness",ne.config.filter,"sharpness",0,1,.05,t=>ne.config.filter.sharpness=parseFloat(t)),ye.image.addRange("blur",ne.config.filter,"blur",0,20,1,t=>ne.config.filter.blur=parseInt(t)),ye.image.addRange("saturation",ne.config.filter,"saturation",-1,1,.05,t=>ne.config.filter.saturation=parseFloat(t)),ye.image.addRange("hue",ne.config.filter,"hue",0,360,5,t=>ne.config.filter.hue=parseInt(t)),ye.image.addRange("pixelate",ne.config.filter,"pixelate",0,32,1,t=>ne.config.filter.pixelate=parseInt(t)),ye.image.addHTML('
'),ye.image.addBool("negative",ne.config.filter,"negative",t=>ne.config.filter.negative=t),ye.image.addBool("sepia",ne.config.filter,"sepia",t=>ne.config.filter.sepia=t),ye.image.addBool("vintage",ne.config.filter,"vintage",t=>ne.config.filter.vintage=t),ye.image.addBool("kodachrome",ne.config.filter,"kodachrome",t=>ne.config.filter.kodachrome=t),ye.image.addBool("technicolor",ne.config.filter,"technicolor",t=>ne.config.filter.technicolor=t),ye.image.addBool("polaroid",ne.config.filter,"polaroid",t=>ne.config.filter.polaroid=t),ye.process=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[2]}),ye.process.addList("backend",["cpu","webgl","wasm","humangl"],ne.config.backend,t=>ne.config.backend=t),ye.process.addBool("async operations",ne.config,"async",t=>ne.config.async=t),ye.process.addBool("use web worker",ce,"useWorker"),ye.process.addHTML('
'),ye.process.addLabel("model parameters"),ye.process.addRange("max objects",ne.config.face.detector,"maxFaces",1,50,1,t=>{ne.config.face.detector.maxFaces=parseInt(t),ne.config.body.maxDetections=parseInt(t),ne.config.hand.maxHands=parseInt(t)}),ye.process.addRange("skip frames",ne.config.face.detector,"skipFrames",0,50,1,t=>{ne.config.face.detector.skipFrames=parseInt(t),ne.config.face.emotion.skipFrames=parseInt(t),ne.config.face.age.skipFrames=parseInt(t),ne.config.hand.skipFrames=parseInt(t)}),ye.process.addRange("min confidence",ne.config.face.detector,"minConfidence",0,1,.05,t=>{ne.config.face.detector.minConfidence=parseFloat(t),ne.config.face.gender.minConfidence=parseFloat(t),ne.config.face.emotion.minConfidence=parseFloat(t),ne.config.hand.minConfidence=parseFloat(t)}),ye.process.addRange("score threshold",ne.config.face.detector,"scoreThreshold",.1,1,.05,t=>{ne.config.face.detector.scoreThreshold=parseFloat(t),ne.config.hand.scoreThreshold=parseFloat(t),ne.config.body.scoreThreshold=parseFloat(t)}),ye.process.addRange("overlap",ne.config.face.detector,"iouThreshold",.1,1,.05,t=>{ne.config.face.detector.iouThreshold=parseFloat(t),ne.config.hand.iouThreshold=parseFloat(t)}),ye.process.addBool("detection rotation",ne.config.face.detector,"rotation",t=>{ne.config.face.detector.rotation=t,ne.config.hand.rotation=t}),ye.process.addHTML('
'),ye.process.addButton("process sample images","process images",()=>Mse()),ye.process.addHTML('
'),ye.process.addChart("FPS","FPS"),ye.models=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[3]}),ye.models.addBool("face detect",ne.config.face,"enabled",t=>ne.config.face.enabled=t),ye.models.addBool("face mesh",ne.config.face.mesh,"enabled",t=>ne.config.face.mesh.enabled=t),ye.models.addBool("face iris",ne.config.face.iris,"enabled",t=>ne.config.face.iris.enabled=t),ye.models.addBool("face age",ne.config.face.age,"enabled",t=>ne.config.face.age.enabled=t),ye.models.addBool("face gender",ne.config.face.gender,"enabled",t=>ne.config.face.gender.enabled=t),ye.models.addBool("face emotion",ne.config.face.emotion,"enabled",t=>ne.config.face.emotion.enabled=t),ye.models.addHTML('
'),ye.models.addBool("body pose",ne.config.body,"enabled",t=>ne.config.body.enabled=t),ye.models.addBool("hand pose",ne.config.hand,"enabled",t=>ne.config.hand.enabled=t),ye.models.addHTML('
'),ye.models.addBool("gestures",ne.config.gesture,"enabled",t=>ne.config.gesture.enabled=t),ye.models.addHTML('
'),ye.models.addBool("face compare",ne.config.face.embedding,"enabled",t=>{ne.config.face.embedding.enabled=t,Ui=null}),document.getElementById("btnDisplay").addEventListener("click",t=>ye.display.toggle(t)),document.getElementById("btnImage").addEventListener("click",t=>ye.image.toggle(t)),document.getElementById("btnProcess").addEventListener("click",t=>ye.process.toggle(t)),document.getElementById("btnModel").addEventListener("click",t=>ye.models.toggle(t)),document.getElementById("btnStart").addEventListener("click",()=>H4()),document.getElementById("play").addEventListener("click",()=>H4())}async function Dse(e){let t=document.getElementById("canvas");t.width=e.canvas.width,t.height=e.canvas.height,t.getContext("2d").drawImage(e.canvas,0,0,e.canvas.width,e.canvas.height,0,0,t.width,t.height),await ne.draw.all(t,e)}async function Ose(){if(qn("Demo starting ..."),$se(),document.getElementById("log").innerText=`Human: version ${ne.version}`,ce.modelsPreload&&!ce.useWorker){rr("loading"),await ne.load(ls);let e=Object.keys(ne.models).filter(t=>ne.models[t]);qn("Demo loaded models:",e)}if(!ce.useWorker){rr("initializing");let e=await ne.warmup(ls);e&&e.canvas&&ce.drawWarmup&&await Dse(e)}rr("human: ready"),document.getElementById("loader").style.display="none",document.getElementById("play").style.display="block",qn("Demo ready...")}window.onload=Ose;window.onresize=Z0; +${a}`,rr(a),qn("camera error:",c),ce.busy=!1,a}if(s)e.srcObject=s;else return ce.busy=!1,"camera stream empty";let o=s.getVideoTracks()[0],l=o.getSettings();return ce.camera={name:(u=o.label)==null?void 0:u.toLowerCase(),width:l.width,height:l.height,facing:l.facingMode==="user"?"front":"back"},new Promise(c=>{e.onloadeddata=async()=>{e.width=e.videoWidth,e.height=e.videoHeight,t.width=e.width,t.height=e.height,t.style.width=t.width>t.height?"100vw":"",t.style.height=t.width>t.height?"":"100vh",ce.menuWidth.input.setAttribute("value",e.width),ce.menuHeight.input.setAttribute("value",e.height),r&&e.play(),r&&!ce.detectThread&&rh(e,t),ce.busy=!1,rr(""),c()}})}function H4(){if(!Vi){let e=null;Vi=new V4(e,{trackGPU:!1,chartHz:20,chartLen:20}),Vi.begin()}}function Fse(e,t,n,r){q0||(qn("creating worker thread"),q0=new Worker(ce.worker,{type:"module"}),q0.addEventListener("message",a=>{a.data.result.performance&&a.data.result.performance.total&&ce.detectFPS.push(1e3/a.data.result.performance.total),ce.detectFPS.length>ce.maxFPSframes&&ce.detectFPS.shift(),ce.bench&&(Vi||H4(),Vi.nextFrame(r)),document.getElementById("gl-bench")&&(document.getElementById("gl-bench").style.display=ce.bench?"block":"none"),X0=a.data.result,ce.framesDetect++,ce.drawThread||K0(e),ce.detectThread=requestAnimationFrame(s=>rh(e,n,s))})),q0.postMessage({image:t.data.buffer,width:n.width,height:n.height,userConfig:ls},[t.data.buffer])}function rh(e,t,n){var a;if(!(e.srcObject&&e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState>2&&!e.paused)&&e.srcObject){ce.drawThread&&cancelAnimationFrame(ce.drawThread),ce.detectThread&&cancelAnimationFrame(ce.detectThread),ce.drawThread=null,ce.detectThread=null,e.paused?qn("camera paused"):e.srcObject.getVideoTracks()[0].readyState==="live"&&e.readyState<=2?setTimeout(()=>rh(e,t),500):qn(`camera not ready: track state: ${(a=e.srcObject)==null?void 0:a.getVideoTracks()[0].readyState} stream state: ${e.readyState}`),clearTimeout(ce.drawThread),ce.drawThread=null,qn("frame statistics: process:",ce.framesDetect,"refresh:",ce.framesDraw),qn("memory",ne.tf.engine().memory());return}if(rr(""),ce.useWorker){let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(t.width,t.height):document.createElement("canvas");s.width=t.width,s.height=t.height;let i=s.getContext("2d");i.drawImage(e,0,0,e.width,e.height,0,0,t.width,t.height);let o=i.getImageData(0,0,t.width,t.height);Fse(e,o,t,ls,n)}else ne.detect(e,ls).then(s=>{s.performance&&s.performance.total&&ce.detectFPS.push(1e3/s.performance.total),ce.detectFPS.length>ce.maxFPSframes&&ce.detectFPS.shift(),ce.bench&&(Vi||H4(),Vi.nextFrame(n)),document.getElementById("gl-bench")&&(document.getElementById("gl-bench").style.display=ce.bench?"block":"none"),s.error?(qn(s.error),document.getElementById("log").innerText+=` +Human error: ${s.error}`):(X0=s,ce.drawThread||K0(e),ce.framesDetect++,ce.detectThread=requestAnimationFrame(i=>rh(e,t,i)))})}async function Mse(e){return new Promise(t=>{let n=new Image;n.onload=async()=>{qn("Processing image:",encodeURI(n.src));let r=document.getElementById("canvas");n.width=n.naturalWidth,n.height=n.naturalHeight,r.width=ne.config.filter.width&&ne.config.filter.width>0?ne.config.filter.width:n.naturalWidth,r.height=ne.config.filter.height&&ne.config.filter.height>0?ne.config.filter.height:n.naturalHeight;let a=await ne.detect(n,ls);X0=a,await K0(n);let s=document.createElement("canvas");s.className="thumbnail",s.width=window.innerWidth/(ce.columns+.1),s.height=s.width*r.height/r.width,a.face&&a.face.length>0?s.title=a.face.map((o,l)=>`#${l} face: ${Math.trunc(100*o.faceConfidence)}% box: ${Math.trunc(100*o.boxConfidence)}% age: ${Math.trunc(o.age)} gender: ${Math.trunc(100*o.genderConfidence)}% ${o.gender}`).join(" | "):s.title="no face detected",s.getContext("2d").drawImage(r,0,0,r.width,r.height,0,0,s.width,s.height),document.getElementById("samples-container").appendChild(s),n.src="",t(!0)},n.src=e})}async function j4(){document.getElementById("samples-container").style.display="none",document.getElementById("canvas").style.display="block";let e=document.getElementById("video"),t=document.getElementById("canvas");if(e.srcObject!==null&&!e.paused)document.getElementById("play").style.display="block",document.getElementById("btnStart").className="button button-start",document.getElementById("btnStart").innerHTML="start
video",rr("paused"),e.pause();else{let n=await Z0();if(n)rr(n);else{document.getElementById("play").style.display="none";for(let r of Object.values(ye))r.hide();rr(""),document.getElementById("btnStart").className="button button-stop",document.getElementById("btnStart").innerHTML="pause
video",await e.play(),ce.detectThread||rh(e,t)}}}async function $se(){ls.videoOptimized=!1,document.getElementById("play").style.display="none",document.getElementById("canvas").style.display="none",document.getElementById("samples-container").style.display="block",qn("Running detection of sample images"),rr("processing images"),document.getElementById("samples-container").innerHTML="";for(let e of Object.values(ye))e.hide();for(let e of ce.samples)await Mse(e);rr("")}function Dse(){let e=[];window.innerWidth>800?e=[`${document.getElementById("btnDisplay").offsetLeft-50}px`,`${document.getElementById("btnImage").offsetLeft-50}px`,`${document.getElementById("btnProcess").offsetLeft-50}px`,`${document.getElementById("btnModel").offsetLeft-50}px`]:e=["0rem","11rem","21.1rem","33rem"],ye.display=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[0]}),ye.display.addBool("perf monitor",ce,"bench",t=>ce.bench=t),ye.display.addBool("buffered output",ce,"buffered",t=>ce.buffered=t),ye.display.addBool("crop & scale",ce,"crop",t=>{ce.crop=t,Z0()}),ye.display.addBool("camera facing",ce,"facing",t=>{ce.facing=t,Z0()}),ye.display.addHTML('
'),ye.display.addBool("use 3D depth",ne.draw.drawOptions,"useDepth"),ye.display.addBool("draw with curves",ne.draw.drawOptions,"useCurves"),ye.display.addBool("print labels",ne.draw.drawOptions,"drawLabels"),ye.display.addBool("draw points",ne.draw.drawOptions,"drawPoints"),ye.display.addBool("draw boxes",ne.draw.drawOptions,"drawBoxes"),ye.display.addBool("draw polygons",ne.draw.drawOptions,"drawPolygons"),ye.display.addBool("fill polygons",ne.draw.drawOptions,"fillPolygons"),ye.image=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[1]}),ye.image.addBool("enabled",ne.config.filter,"enabled",t=>ne.config.filter.enabled=t),ce.menuWidth=ye.image.addRange("image width",ne.config.filter,"width",0,3840,10,t=>ne.config.filter.width=parseInt(t)),ce.menuHeight=ye.image.addRange("image height",ne.config.filter,"height",0,2160,10,t=>ne.config.filter.height=parseInt(t)),ye.image.addHTML('
'),ye.image.addRange("brightness",ne.config.filter,"brightness",-1,1,.05,t=>ne.config.filter.brightness=parseFloat(t)),ye.image.addRange("contrast",ne.config.filter,"contrast",-1,1,.05,t=>ne.config.filter.contrast=parseFloat(t)),ye.image.addRange("sharpness",ne.config.filter,"sharpness",0,1,.05,t=>ne.config.filter.sharpness=parseFloat(t)),ye.image.addRange("blur",ne.config.filter,"blur",0,20,1,t=>ne.config.filter.blur=parseInt(t)),ye.image.addRange("saturation",ne.config.filter,"saturation",-1,1,.05,t=>ne.config.filter.saturation=parseFloat(t)),ye.image.addRange("hue",ne.config.filter,"hue",0,360,5,t=>ne.config.filter.hue=parseInt(t)),ye.image.addRange("pixelate",ne.config.filter,"pixelate",0,32,1,t=>ne.config.filter.pixelate=parseInt(t)),ye.image.addHTML('
'),ye.image.addBool("negative",ne.config.filter,"negative",t=>ne.config.filter.negative=t),ye.image.addBool("sepia",ne.config.filter,"sepia",t=>ne.config.filter.sepia=t),ye.image.addBool("vintage",ne.config.filter,"vintage",t=>ne.config.filter.vintage=t),ye.image.addBool("kodachrome",ne.config.filter,"kodachrome",t=>ne.config.filter.kodachrome=t),ye.image.addBool("technicolor",ne.config.filter,"technicolor",t=>ne.config.filter.technicolor=t),ye.image.addBool("polaroid",ne.config.filter,"polaroid",t=>ne.config.filter.polaroid=t),ye.process=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[2]}),ye.process.addList("backend",["cpu","webgl","wasm","humangl"],ne.config.backend,t=>ne.config.backend=t),ye.process.addBool("async operations",ne.config,"async",t=>ne.config.async=t),ye.process.addBool("use web worker",ce,"useWorker"),ye.process.addHTML('
'),ye.process.addLabel("model parameters"),ye.process.addRange("max objects",ne.config.face.detector,"maxFaces",1,50,1,t=>{ne.config.face.detector.maxFaces=parseInt(t),ne.config.body.maxDetections=parseInt(t),ne.config.hand.maxHands=parseInt(t)}),ye.process.addRange("skip frames",ne.config.face.detector,"skipFrames",0,50,1,t=>{ne.config.face.detector.skipFrames=parseInt(t),ne.config.face.emotion.skipFrames=parseInt(t),ne.config.face.age.skipFrames=parseInt(t),ne.config.hand.skipFrames=parseInt(t)}),ye.process.addRange("min confidence",ne.config.face.detector,"minConfidence",0,1,.05,t=>{ne.config.face.detector.minConfidence=parseFloat(t),ne.config.face.gender.minConfidence=parseFloat(t),ne.config.face.emotion.minConfidence=parseFloat(t),ne.config.hand.minConfidence=parseFloat(t)}),ye.process.addRange("score threshold",ne.config.face.detector,"scoreThreshold",.1,1,.05,t=>{ne.config.face.detector.scoreThreshold=parseFloat(t),ne.config.hand.scoreThreshold=parseFloat(t),ne.config.body.scoreThreshold=parseFloat(t)}),ye.process.addRange("overlap",ne.config.face.detector,"iouThreshold",.1,1,.05,t=>{ne.config.face.detector.iouThreshold=parseFloat(t),ne.config.hand.iouThreshold=parseFloat(t)}),ye.process.addBool("detection rotation",ne.config.face.detector,"rotation",t=>{ne.config.face.detector.rotation=t,ne.config.hand.rotation=t}),ye.process.addHTML('
'),ye.process.addButton("process sample images","process images",()=>$se()),ye.process.addHTML('
'),ye.process.addChart("FPS","FPS"),ye.models=new nh(document.body,"",{top:`${document.getElementById("menubar").offsetHeight}px`,left:e[3]}),ye.models.addBool("face detect",ne.config.face,"enabled",t=>ne.config.face.enabled=t),ye.models.addBool("face mesh",ne.config.face.mesh,"enabled",t=>ne.config.face.mesh.enabled=t),ye.models.addBool("face iris",ne.config.face.iris,"enabled",t=>ne.config.face.iris.enabled=t),ye.models.addBool("face age",ne.config.face.age,"enabled",t=>ne.config.face.age.enabled=t),ye.models.addBool("face gender",ne.config.face.gender,"enabled",t=>ne.config.face.gender.enabled=t),ye.models.addBool("face emotion",ne.config.face.emotion,"enabled",t=>ne.config.face.emotion.enabled=t),ye.models.addHTML('
'),ye.models.addBool("body pose",ne.config.body,"enabled",t=>ne.config.body.enabled=t),ye.models.addBool("hand pose",ne.config.hand,"enabled",t=>ne.config.hand.enabled=t),ye.models.addHTML('
'),ye.models.addBool("gestures",ne.config.gesture,"enabled",t=>ne.config.gesture.enabled=t),ye.models.addHTML('
'),ye.models.addBool("face compare",ne.config.face.embedding,"enabled",t=>{ne.config.face.embedding.enabled=t,Ui=null}),document.getElementById("btnDisplay").addEventListener("click",t=>ye.display.toggle(t)),document.getElementById("btnImage").addEventListener("click",t=>ye.image.toggle(t)),document.getElementById("btnProcess").addEventListener("click",t=>ye.process.toggle(t)),document.getElementById("btnModel").addEventListener("click",t=>ye.models.toggle(t)),document.getElementById("btnStart").addEventListener("click",()=>j4()),document.getElementById("play").addEventListener("click",()=>j4())}async function Ose(e){let t=document.getElementById("canvas");t.width=e.canvas.width,t.height=e.canvas.height,t.getContext("2d").drawImage(e.canvas,0,0,e.canvas.width,e.canvas.height,0,0,t.width,t.height),await ne.draw.all(t,e)}async function zse(){if(qn("Demo starting ..."),Dse(),document.getElementById("log").innerText=`Human: version ${ne.version}`,ce.modelsPreload&&!ce.useWorker){rr("loading"),await ne.load(ls);let e=Object.keys(ne.models).filter(t=>ne.models[t]);qn("Demo loaded models:",e)}if(!ce.useWorker){rr("initializing");let e=await ne.warmup(ls);e&&e.canvas&&ce.drawWarmup&&await Ose(e)}rr("human: ready"),document.getElementById("loader").style.display="none",document.getElementById("play").style.display="block",qn("Demo ready...")}window.onload=zse;window.onresize=Z0; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/demo-browser-index.js.map b/dist/demo-browser-index.js.map index b0d7227f..65835b5a 100644 --- a/dist/demo-browser-index.js.map +++ b/dist/demo-browser-index.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/log.ts", "../src/sysinfo.ts", "../node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "(disabled):crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "(disabled):path", "(disabled):worker_threads", "(disabled):perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/transform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transform.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transform_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transform.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.ts", "../src/tfjs/backend.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/blazeface/facepipeline.ts", "../src/human.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/box.ts", "../src/handpose/handdetector.ts", "../src/handpose/util.ts", "../src/handpose/handpipeline.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/gesture/gesture.ts", "../src/imagefx.js", "../src/image.ts", "../config.ts", "../src/sample.ts", "../src/draw.ts", "../demo/menu.js", "../demo/gl-bench.js", "../demo/browser.js"], - "sourcesContent": ["import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\n// Detect the global object, even if operating in strict mode.\n// http://stackoverflow.com/a/14387057/265298\nvar global = (0, eval)('this'),\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n enhance(input: Tensor): Tensor | null {\n if (this.config.face.embedding.enabled) return embedding.enhance(input);\n return null;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2) {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function enhance(input) {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config) {\n if (!model) return null;\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return output;\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n image.dispose();\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAsICAoIBwsKCQoNDAsNERwSEQ8PESIZGhQcKSQrKigk\nJyctMkA3LTA9MCcnOEw5PUNFSElIKzZPVU5GVEBHSEX/2wBDAQwNDREPESESEiFFLicuRUVFRUVF\nRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUVFRUX/wAARCASwBLADASIA\nAhEBAxEB/8QAGwABAAIDAQEAAAAAAAAAAAAAAAEDAgQFBgf/xABDEAEAAgECBAMECQIDBgUFAQAA\nAQIDBBEFEiExE0FRBiJhcRQjMkJSgZGhsWLBJDNyFSVTY3OSNEPR4fAHFjWCokT/xAAYAQEAAwEA\nAAAAAAAAAAAAAAAAAQIDBP/EACARAQEBAQADAQEBAQEBAAAAAAABAhEDITFBEjJRIhP/2gAMAwEA\nAhEDEQA/APqYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAKNTq8OkxzfNkisQC8eb1XtRNbzXT4q7eU2nu0MntRq/D8StMccvW29ZmdvgjsTyvZjxOLj\n+s8WLxn8TFPXs6Oj9oct7c14rkxz22nrB2I49KOdTjelmszfmpMeUxv/AA28OqwZ4icWWtt/SUi4\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmdo3nsPNe0Pt\nFh09Z0+DNWL7+9O/7A3eJcZppsV5raI27esvH6jX5ddM25p79Ilo59VbUZOe2Tm/PeGvfPfT2iKR\nPLv1+DO678XmW/a97U6TtOyzTbTF538/T9WjTNecm9a7126tqk3rSYxY5ta1plRZqZNXGjyZcPXl\nmZmsx+qjBrsuO16xM7eXRt04JrdTltk5OWJnfaWf0a2lty5MdZnfzSn+WOHiOutFpjHa9e8bQ2fp\n+alYy462pk7zXbuxjPesbRS0f6ZZV1ET1tErzXFLHo+A+1ddZf6NrI8PJHa1vN6iJi0bxMTHwfOa\nzhzd61v1846utwniM6DUdb3nBaNrVmd9vjC/ZVePYirBqMWppz4rxaPgtEAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAItaK1m09ojcHnvarjM8P0vh49+a/eY8ng9D\nh1fGM1rxjtGPfvbzdbjuTJxHX48cTPNltM/KsS9Dw7S49Jp6UpHaGe2vjz1y9J7LYK13vHWe7bj2\nex1tvM80ekuxW3RnW3Vm6P5jRx8H0+OYmMcb+bapo8GKPdpC6bQwtdHU8JpWkdJ/JweL6e23iU67\nd4dubSqyVi9Zi0bwIs68XGp36TtEq7ZJmZmevzdbifCKWtbJinkt6eTgZPFw32t+sRurbWVzxs1y\nRv6T8V1NZNPtfq0seTm+Kevr+SZuxXjvaPiV8N4viycto9HseG6+uu08W6Rkj7UPmFck1tE1nlmP\nLd3eA8V8HVVi1pjq6Ma/pnqce/ERMTETHaUrKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAADW19+TQ5p/p2bLS4v04Zmt5VjeQeJ4bjnLqsupv+Ka1+ERLv4reTmcNxcuC\nvy3l0qdI2hlr66sT02ot0ZV7qqrInruzrVZLGSZ37JjqgYTG0K5lbaFVhDT1Ub456RPweY4hixWi\neSdpjvD1eWejz3FNHWYtkpvFo9EIseb3tS3SerOms22rfpPqZKzvvHSYUz70TExG6Gdbs2rljeJ/\nMx5L0vEzPaelnOi98c9J2bFNTFpit47+a+PVUvx9T9nOIfT+GV5p3yY/ds67wvsXqpxau+G09Lx+\nr3TqrEAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADV4ljnLw3U0jvO\nO0fs2lWqyUw6XLkyfYrWZkHldBEV09eveG3Fq1mI3jd4vPrOIaid8G9MP3Y38k6fNrt/rMk9Ou8s\ntfXXn49rGWInuy8SO/k5Gl1E3rG/fzbOe94wTy99mbRvTrMOOvNfJWsesywniukrG/jU6fF43WYN\nTmtEeJtEQ06aSmK2+bNtEd+qfSO17unF9Hmvy1y13XWyVmN4tExLxVK8PmNq5NrT58zawam+m/yc\n0Xj8NpRYSvQZ7xEOdqI3rPozxayNRXe0ct/ON03jmrKB5nV4q1yTO20Obmv4c+cx8HoeI6WZpNoj\nq83niYmYscU0r8aJ6T1n49zeJ+Meqm1drb9J+Kd5p136StGVem9l9TbHxLDFp7W7+sS+q1nesT6w\n+PcAzVjiGHftzQ+v4f8AJpv6On8jH9ZgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAABp8VrW/C9TW0ztOO3b5Nxp8VmI4bn37TWYB8f1HFtTfUfR9FWJmsdZ9I7MtJxDX5s\nd8ta1y0xzteaR2277rcuhycP12SceLxMeWNpjttHwlu8I0mfQ1y+D7k5YmJmY36T36Ka43z/AF1t\ncI1ds+qxVj7/AEej19PCw9HJ4NoK4OIU5Y35YmZdzVTGebVZabx5jJS+Tmns81rNLm1Wrzc9rVw4\nYibbem72mXTTS0w0M3BvEta1bWrM95ie5EanY87wXgNOL6XPfxraXLhra/W28bR/dzYzarBqJxRe\nbzE7Rt5vWU9n8mPHOGmS0Ypnea1naJb+k9ncNLR7u2y/WcxXO4TOoyUrN6zD0FaW5Y3hu49FiwUi\nKxCvLMR0hlW0jn6ukWw3iXjOJzbDlneOj3GaN6zDzfFOH+LE7SRGo83XNSZ2lbG2/WfdlvaT2cy6\nrNFInlrv1mfJ37cK4PwTTxOoidRm2+/2/KFuyMp47XB4LivXiunrH2b2iH2qn2K/J8x4fGDNxTSZ\n9Nh8OviRvTyfT6xtWI+DeXs9MNZubypASqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAOZx6/LoOWPvWiHTcf2hiZ0e8fc2mf1E5+vP/AEeuSd7RC2uKtI6QjHfeINTfwtPf\nJvty9WPfbt/lucP03gxfJf7d/wBoReYpm97zaNeLb4Ims9Nt94auDjem1Wo5PFi1onylS+1o7l8V\nbxvtupjDMdNkYtXS1+Stt+m63xImEJ4xjHER2ZxMUjeUTO3VRmydBbjLJqPi08mbeVOXJPq1sl5Q\nVbkz9+rRy35rxHqzmZlVEe/Ez5LRlW5iyfR6zffaIjq1OSNZps2a21rZInafSPJhxGMl9LStLRWM\nlorM/A4dkrWbYfLZC2W/7K6eubX6b4RzT+W76K8b7G6X62cu3Sten59nsm3j+OXz3/0ANGIAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0OIYfpOHPijvNNo+fdvtXJO18k/\n/OwPFYbz2ls3jx8VqW6xMdWPEdP9D4lkx/dt79flLLHbkxTPwY6nt2512ORTRzE2x4/dpE7cvkme\nE4IrW3hRMxO8THRtU1FKWtvtvK2upx22rzRCtXkqzh2jtF7ZbT122b01ndnpuWuP3Z3+Ky20qDVv\nfauzVy3mejZzNK8dVjqi87KLRLYtXruqvXzkQp7Qoid88R6rcl+WGlW0/Sa22mfhCZOq2x082ix6\njkm822pO8VrPdr4dNObVeDo8XW3uzMbzK+mvxT7szE27cvnu9j7PcNjSaXx8mOIzZevbrEeic5tN\n+SZnpt8J4fHD9HXHO3PPW0x/DeBtJxx29vaAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAKNRim9Z5e89Nl4DzXtVh5babURHrSf7f3ec1+qnDorWrvvt5Pccb0n0zhmWk\nRvevv1+cPE2rGTFNZU26PFfxwa5dVkjelI2772nZnX6bbrEUq3o0d678u8wmuDL2ittvVjXdneeK\ncGv4jpJ6U56+kS7+j118+GLXpakzHaWlp9NNY3tv+bbiYiNoQy1y30uyZJlrWmZnuym6q1iIJnop\nyW2Te8bdWnnypQqzZOadokiIpSZntWN5lrxki19vNRxrUeBwnNNd+fJEY6/OejXLn3Xe/wDp9wyn\nE8uo4lqqxblv7lJ26T6vpD5X7G8QycKzeBMbzMRM1/FH/wA/h9QwZ6ajDXLitvWzRgsAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeL45w+dDrZvWv1OWd4+E+j2jX\n12jx67TWw5Y6T2nzifU+rZ1y9eHwzDYxxEy18+DJodXfT5o96vafWPVbjyxDn1OOzHudbM0rt2UW\niI69mVtRXZq5tREb9VUoy2iIlRbJ0UX1VZ6btTLrI7V6yk62M2oisT1c7JmtkttVMUyZp6x0beDS\nRWOvdKijDimvWd3G9pNRMfRcNfvZOb9Hpb0itJeP47k/3hgjaZnbaP1XxWW3T0movbNS0W645nbf\n0nrMPpXs3xamoxdJiLbe/X1n8Uf3fKsOTw4jbaXo+EarJhtGTHMxeJ6xH7Sti9Zaj6x3HM4NxXFx\nDS1mtoi8dJrv2l011QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAGjxLhODieOIye7kr9m8d4eM4to9RwjPXFa0ZIvG9bR0fQXmPbDFvTTZPOJmEWS/V8bs9R43NxLL\nG8eFbePg1bajU5/s0l1ceKLx1hbjwRE9mOpx0y2uRTSZsm3PMw2aaKtIjo6kYo9EXpET0hVLXxYK\nxC6MZvyx1lFs0RHfaPiCnU12pLyHGNDbUajBekWma2npWN3p8+opa20e9LSyZLxExTlpM+vdOdcZ\na9tPS8MyUvFrzWlI6727u1pYxYrbVmb7x+TQx6au3Nqcl7/0rcmW9axGnwZJj1novmxnZXV0fFp4\nZxLBPgTGK8xzXr5fOH0bFlpmxVyY7Rato3iYfNuG2x56Wrqa8s2jz+7Lu8O12bS6jkwzN6THNNI6\ntvrN68Y4rxlx1vHa0bskAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAA4XtTTm0OKfTJ/aXdcL2pyRGjwU362yb7fkJz9eTxxyZJjyltRXzUZK7TFtl9Lbwy06YzrHwa+\nfJFd/wCVt8m0bQ0eS2qzcm+1K/an+zNZFL5M1pjFXeI72ky48eGnPkvNp27+TPU6nHpMfLXaIjpE\nerk5dRMxOfN1mPeisfshW1ne1a1577Y6x5R3U0zze31FOWI6ze0byU098kRlzbxM9qrMlPDpyRMR\nMd5Vt/Ihp5898mWZm1pjftE91uCt7fCI7dWeHDEW3t723l6rslqxWZnasR+SYhFbzhnfxJ2jyeq9\nlcGXWZcmW0zWKxHLaI7794eJx5fpfEKabT8t8l5isddo3l9S4VjrwrRUwzSJt3tav3pdOL6Y6dXD\nj8HFWm+/KsU4NRXPvtWazHquWVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAa+fXYNP9u8b+kdZBsDkZOO135cWOZn4y5Wu4xqctbe9y19Kp4njt6vi+PDm8DFMWybbzPlV\n5PiGtz67UxbNbeKTtWIjaIXYpnwuaftT5tXJT3vmi1pMsrU5qIrG1V1a+5DCa7b9GFbRr5J6Wnbt\nCu+Wmk0m8956z8ZWZNorbfzcbX5rZslazPux3hUt41NTntktObJ13+zX1bek01r4/HzVm0bxPXy/\n+bNfDgjVa2uOY92kdfg6ufJOKvLXtttVVSqbcta2vM7zXtHpLQy5ZtMd+vWd+7Zy3mdJHXra3f0c\nvUarw7zFY5rT2hH1Lavnrgx81p3U49Pk4nE5L35MO/StfNRXR5tXnrS8W67WvfyiPSPi7uLHFK1p\njrtSsbR5Lc4RzsXBaYreP4l45esRD2HD9fnw6evvWvO3Tfr0aGk0U55ra0TFInv6uzgrXFXlx0i0\n77RPlC83Yj+JW7oddqr6vHzTTw9/f6dod+L1t9m0T8pcbFSmPHER3892W0zPuz+jSbVvidkcqmfP\nSel7bekrI4n4dZnPWIrHeYnZee2Wpy8dEaml4npNZblw5qzb8M9JbYgAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAABEzFYmZnaI7yCXL1XGa0jJXT0571nbee27DiXEprp8nhbxG20W8\n5cbD0ikfnKO+urTPvjoZdXqctdsmTaPSvRpWmsdZ6yztfaGplvv3lWW1tyRlz1x0vkn7Vo5atTNe\nY0+1o79V2KsZsvX7Ne5mwxnyTNvsx2iGneM/rCdRSuOsTasTt5kRFtpjqmOH4t4nk7estiMNa97R\nHwhna0iuKTEdmGWa4672nZtRele1N59Zlq6vLOSsYorEc07qcW65euzRvtXvPZy52naZ7ujr6fXV\nrWdukREK8+njHgmZmPc67bq6ivVWhxxgxZLztNrT1mZ/SP4VZs0zaOvfp84WUtNsXLvtv3699+rU\nz7+Jtt5qURqMnPpctaR1rMSw4ZoK57eNk6xHaJRh97Ltt7lo5Z+L1HAPZvVauZ2nFTSzMTzeJEz8\nto6xPfvsZntPZ9rXxabmxzefdrv0j1dXh/BcmstW1qxTHHasR3+b0GPhGl+kWmd64dNEVjf73T7X\ny8vy+Ddx6O3iRakxTH5RXrMw1/lX+3Itw2MFIraN48qRHdZi0cUjmmPen9noox1iO0fNzdXEYrTt\nstcmd9aX0bJ+HePmiKTitO8TMLZ1cVjrMfqpz6ys4pjfrPRWZ9rXXptUit6zO+23VyaRHEc05L1/\nw9J9ys/en1ljqdVbwYw452tlnl3jyjzbmmiMeKtYjpEbLeTXPUU8ee/+qjJpsV5rbkrFqzE1tEbT\nDpYNbW21Mnu29fKWna0KbqTdjXXjld0cvQ63ltGHNPSfs2n+HUbS9c2s2UASqAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAOVxPWe99HpP8ArmP4b+r1EabT3yT3iOkesvMVtN7za07zad5l\nXV5GmM9vVfEstvDx0jtaVVMlq+UJ18b5cMRvPeSuK87bUt+i2Z3PtG7zXpjkzXt6R+TXyTMzvM7t\nydHqZ+zhv1+Cv/ZuqvPTHMfOYaTMil1a1K2vHSLTELq2v+KWzThGo84rH5rq8JzedqR+ZeI7WnOS\n34pYTafWXR/2Pln/AMyrKOCWnvmiPyR6O1y9585lhWJvl557Q6eo4T4dYiMvW3b3UanhldHpJtGX\ne09unmjsT7eb1l4trI2t0hsZfrdNO0bzy+nzU20/+NmkzO9esz+TZxWis9dttvPv+Tn21jjaW8zn\n26bTG3mp1M/Wzv3t0jyWXiKZJmsTERaZhXXDbNl8WaztWenxZLstPp5pau8frDtVrNMM5cfTfpMf\n3aunxxbes9d/R09Dp8ebJi09ptFr3jtt2WyrW9wy1Jx132mK+Xq9PotT0iIU19ntLtExa3T47T+q\n6nBaYvsZstZ+cT/LeMnUi0TXffo1s2m8Ws2/OIMWk5Jib5L328rS2t94Sh5TV4ppklpW6PT6rh+P\nNbebTHyas8E081mZy5P2W6OFhjxNTE/hr/LoRO0Kvo9dPqctKzMxEx1la5t3tdnjnMs4noievcrO\nyZjeFF1OSnNV0OG62cn1GWffj7Mz5w05joovzY7xes7TE7w0xrjPeex6Ua+j1UarBFu1o6Wj0lsN\n3JfQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACrU5o0+nvlt92P3BxuM6nxNRGCs+7Tv8\n2hToxm1r3m9utrTvMsonqyt7XTmcja0u3O6FMfi5t/u0/lzdJM81p9O3zdvHTwsUR5+bfPqOfX1h\ndqV+3O7bs1+T31oqmI3TEM4rvCdkDGIIhlFd2daboS0NXG2bD6bufxXU1vlmu/u4us/N0+L1tTSx\nkr9qk7w89j1FNZMV3jxLzvaJ8mer+LSOZqK2xZotbvljfr/89U453rXt9lse081xZtNjx7TGKu0t\nDHlrevSevaN5Y6+tJ8c7VRNMt63n3ub+6/R54rERMztDYy4a5omclYmfxKcenrjtHLvtPrCnVmdb\neFe3JXmjy6eS/DrMuLVYsta9Mdt++6qLxO+0dEc8UmInr18iUfReHcXrqccb9Z27Q61Lb13eJ9nc\n1Z35rTvE9avY4bTkpG8xEfB05vYxqybc07R281naGMREdoT5JQqy9mply7Q3bV3iXG1eXw7TWSka\nc258t7+tpT5/BjT7MfHqndz12Z+M4lMMKyziUJJiN1WSu9fku23RaOgKNJqbaTU1t9yelo+D0cTE\nxEx1iXmM1Nt3W4PqvFweDaffx9vjDbGvxz+TP66QDRiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAOJxzU73rp6z296zsZMkYsdr2naKxvLyObNOfNfJbvad1dXkaeOdpvsc2yuZVzfbfqybutwu\ns5s8R92J3dvJb3tnO4HSMegtmt3nfZvYp8SZl0z45NfSK7onH1bNcfRFqnUKJr0Y7dVtq7prjEsK\n0XVpEM6028mW20IHK41aPo3J6zs4ODhdcvPnvExFevNXpMOrxi/PlrTee7PLX6Pwa09uaNlKtHg9\ndM3z5d7ReOu02nu0JzZMfblrv5R5uvrcdImZ26T1mYhxs1Os7RH93PZ7axuafNfLitvbaYU3yZYt\nPXs9NwHhui1HBa5LVicsb81onrEuVqNNSuS8Y67dZ6xPZa59Il9uX41vEitImZme3q2Kxbxora0T\nMd/ROSa4Ztkj7c9OafL5LuGYubmyX3iu/TfbdSfVnpvZLT/XZK233+Mbbva1xRXyiPk8pwbH4N6T\nadq5a71n0tD1WDL4tPe6Xr0tDpz8YVnJHWEXYxbqlBedoef4tW0XraO09HdyztSZcbUz43C+ee9b\nSVMaeOfqq7+jGckQ1Yz7+7v2RN/WXPXZPjci2+2yyJaVMuy+uSJlA2d+pNoVRbeDcSxyTE+TDDlt\npdRXLTynrHrDOyiyZeVFnY9TjvXJjres71tG8MnJ4Nqt4tp7T1jrV1nRL1x2cvABKAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAHJ49qfD09cNZ97JPX5PPw2uI6j6Vrsl/ux7tfk1mWr7dOM8iLdm\nvfebREefRsWldw7SxqNbWbR7lPesrn3Vteo7dYjDpMGCvfbeXQ0uLlxRLRxROfUc34p6fCHYrXlr\nEejqrjY8uzCYW7MZjdVKqK9VlaxCYrsnYExBMRMJRPZA8/xPHtmpP9W2xx76vhWOInvt/C7ike7N\nvwzE9kcapGfhlevTaFbFo8RqJ5vy8/RoW09ek0msxHfp3dzNoLzp4zUmZpMbT8HJyYJi20X2n0lh\nZY1li/RaidBF4w2mK3jrHaFGp1lN+tptPp5IjBkid5mIp16TKu0abBPv33vPlM7z+iPdFNcWXU5I\ntkrNce/b1W5db1nTaf3ax9q0fxDW1ebNk2phty1mOu09VOm8W19orEz23j1TwfSeERFuEYMddptW\nd43dvBn21eKJ75KbW+cf/JcTgMxXTb3nbljz+TpcPmc2uyZO1KRtVtGVdi0bx07qJnllsRO6rNTe\nN4XVamsy8mnvPwc3R2jPwe8TPbdlxXNOPSZfhWWpwO85OFzv57qrODkzeHntSe8Sn6Rv0a3EZ218\n8nXekfr1a0ZLVnqx19dWb6demXybOO7lYMvNMdW9S/VVLo0us7tPHdtUtEwJiZU3jq2Jhham8CVG\nPNODNTJXvWd3qcWSubFXJWd4tG8PK3pPd1OB6veLaa89Y61/u2xfxh5c/rsgNHOAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAANLimq+i6O0xPv392rdeZ4rq/pOqnlnelOkIt5F8Z7Wj27I2I6sb25YY\nV1ImY3dbQ08LRc23vZp2j5OJG+XJWle9p2h6HHtbJXFT7OOIpX+7TxT31j5rycdTh+Dpz+XaG/sw\nw18PHWseULN2trBE9UcrJKBhFU7JAQi0dEomegNDUYovM7x3jb5tO1ZvpbaTLtzRExWfWPJ08kbT\nEx5NXWYYyV5omYtHWJieyeDzuizfRs19Jn6TM7Ru1uMcJxZqTkw+5f4ebqa7SV1MR4tdrx2vEfy1\naxqsNOTLjnLXytVXi3Xj8+nmsxTLM16d5npPyUzpekTtSK+U7vS6vQ/SYmK1vWPS1HOn2dvvvvE/\ntDO5XlcO+LbfHSd/W3o6/BdDOXPTnj3Kz38rS6Wm4FNrRyRzTH3p6RH/AKvR8L4dXSzE3jmtHn5I\nmbfqLV+m4dbLSsZInHjr3iI6zLpYaxS01rHuxHRHiT9mv6s67Vj1aqL6326MrWiYa+/Q54BxPaGe\nXRZpj8MquB4+Xg8zPnB7SX30to379GxpK1xcHiKz5IS8xr8PLPixH2bftLTy05o6dHYyVjLhy0t1\nizjZa3pMVv3iO/qz1G2L+NbSajbNyW7xLsY8kTDz+fJXFqKZN4iZnafi6WHL0iYlStI7OO+7axW2\ncrFl7dW9jvE9ULN+J3ZbdFGOy+AYWpEqN7afNXLj+1Wd23KrJVMvCzseh0+auow1yU7WhY4fCdV4\nOadPefcvPuz6S7jol649Tl4AJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAV581NPhtkvO0R+4NPi2\nr8DB4dJ9+/7Q83Po2NTqLanNbLfvPaPSFDHV66sZ5ET0hRknyW2lTtMyouz0c8usx2n7s7vScKwx\nzc1vu/y85p+maJh6Th+SOWeveXR4/wDLm8v+nX5mUWa9bbrInolmu5jdTNkxYFk2Isr3TuCzeGMz\n+THdEyDDJO9Ja823rt2XWnya946pGvktDXta0ztWu/ybvLE9dkcoOf4GbJPWK1j49VmLh9JtE33v\nMevb9G7WsW8l1ccREISophiJ2jpDYpijbaOjOuOJ8ujOdqxsgVcsUjaETYvbaFFrgu5lVsm0yUtu\nryg43H5m+GIj1XcJzePoL4pnrWGtxmfchr8JvfHS1622if3QljzTTLes+qrNjrkiYtCzPMxnm095\nYZJ6boS5teB49Tqscza97VtvWvlv8V/FOF34RrIxTM2xXjelp/eHoeA6XnzReY3ivX/0dfivDcfE\n9HbDbaLx1pb0lOs+jO7K8Lis3cN+0NKcd9PmthzV5clJ2mF9J9GHHVL108dm1SznYr/Ft0tuhLb8\nmNohFbMhLWy0mJ3rPXvDvcO1karBG8/WV6Wj+7kWrvDDBlvpdRGSnbzj1hpjX4z8mOx6UYYstc2O\nuSk71tG7Ns5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACZ2jeXneJ62dVl5KT9VTt8Z9W9xbWclPo+O\nfft9qfSHEU1pv48ftYST23ZTDC/p0YtlVuvVjMbM5+LCZjYGWGdrTPxiHY4ffaf3cjTxz1v6xMS6\nOlty2iXVj/Dk8n+ndrkhnGRo1v8AFdW3RCrZ5uiYsqrboncSu508yjmZRYQt50TfowYTbYGVrKrT\nuTZjvukQnYhMIGVY2ZxPVWyrHVCWzXpVXkt3TE7Va+W4K7X3jv1auTNy3jdba0RZpamfroQN7Hk3\n6wr1GTaN2OOJiu6Mu98NvgDi8Wy74d/yZ8PiPAiO2zU4nb6qIn1bugjfFE/ASp1ke9u15mbbRDZ1\nMb823kx0Ontn1OOkedoJCvT8I03gaKsz9q/WW+isRWsVjtHRKyrhe0XCfpWL6Vgr9fjjrEfeh5fF\nfeH0V5Dj3DPoOo+k4a/U5J6xH3ZZ7z3228evytOk7NvFbo0cdols47bSybt7HbddHVqUs2aW3Qnq\nxVeu8LILR3SlZw3V/R8nhXn6u0/pLuPMXjeHT4Zruf6jLPvR9mZ8/g1xrvpz+TH7HUAaMAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAABRq9VXSYJyW79qx6yvmdo3l5viGs+maqYrO+OnSvx+KLeLZz2te1rZL2v\ned7WneZYWnZl5K72YV1xEyxmeqJljzIEWlVkszvbZp5soN3h2SJz3pP3odCnuWmPRxuERfJrZmtZ\nmtY96fR28kbX3dXj/wAuTyf6bmK+9YX1s0cNtm3Sd4LFY2K23W1s16StiUJW7bp22RW3RluBuruz\nmWEgrmCGWyNkoExKE1QlPmsqRDKeyBjaejWy2W3ttDUyz1QKslvehVqKTNosyyTvELabXptIJpaP\nB39Ia2mz+JGpr51jdZefDx2hzuHZObNq58poJaGtjxJ2+LoaKP8ADRPo5+T3skx5OhpOmC0fBNQ0\n5yTbn+bt8A0u9raiY6RHLVwY62mI6zMvaaHBGn0mPHt1iN5+aYVsACBXqMFNTgviyxvW0bSsAeE1\nmkvw7V2w5Ote9besJx2er4rw2nEdNNekZa9aW9JeQjnxZLYskTW9Z2mJY7zz26fHrrdpbZsY7NGt\nmxjvso1b9NmUwpx33XRO4K7VUTE1nmrvEx1bVo2VWiJE/XY4frY1WPlt0y17x6/FuPM0m+HJGTHO\n1qu9pNVXVYt46Xj7VfRtnXXL5MfzexsALsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHM4jxOMFJphmJv529Dq\nZLfjDjPEIx450+K3v2+1MeUOHSOWFc3nJkmZnf4yujpVlqunOeFpV2nctLCZUXRM7MJtsWlRkv3Q\nky5NmpWt9RnrixVm17TtEQnJabXisRMzPSIew9n+CRoccajURvqLx5/chfOest642OGcIpoOG2w7\nROW9d72+LQvXevyejcPUU5M+SvpLeOataraw2a0dLbLqTtK1G3Es4lVWWUSoldFtmcXUbpidgXzK\nGEW3TuCUSncnsDFMMLSms9EC6J6FpVzbZE5ALy0809ZbFr9GtfrEoFMzuuwz0Ueey3HbaBLDXe7i\ntMOfwWnP9I+NZbuttvhs1uBRtXPb4SDm3iIvf57N7Dbl0VrS5+XrltEd+Z1Jx7cNms9N4TURRw3T\n+PrcO3WszEvZOD7P6aYiMlvu16S7y1QAIAABxOPcLnUY/pWCv1tI96I+9DtgmXl68Biy7/NtUu3+\nO8HnFa2s0tfd75KR5fFyMWTdhrPHVnX9R0cd21S3Rzsdm1iuqs256wrmGcT0RYSx5d047X02SMmO\nesd49YRE9WcdSXhZ2O1p89NRji9J+cei1xMc3wXi+KZj1j1dTTaqmor06WjvWW+ddcu8XK8BZmAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAMMmWmKu952UZ9XFZmuP3revlDTtzWnmvO8q3XGmfHb9ZanV3yxtWeWn7y4es\nvPNtDqZJ6Ts5mppvdl/XXRMyfGvSNlu/RVvtOzLfoipLT1VTKbSpvfogRkvtDVyZOhkyvQcA4Dzz\nXV6yvTvTHMfvK+c9U3rkW+zvA/D21urr789cdZ8vi9KDb45rejl8Rry6iJ/FV1HP4vXbBTJEfYt1\n+UpiHM295bXsqrO9l8QkZ0lZEqqLeyBZHZLGvZkhIndADKJ3TMoqWQMZ6pjsxll2jsCLSrmU2lFY\n36gieyu0LJk3jbsga0wdqzK20QpyztQGprL/AFMrOE05NLkt6qdVWZxNrSe5o9vWBLiUjnzXn0vL\nq555dHt8HOwV928/1z/LpzXxbYccRvzTB+jucOwxh0dI22mY3ltIrHLWIjyjZKyoAAAAACJiJjaY\n3iXleM8InR5J1GniZw2n3oj7s/8Ao9Wi9a3rNbRE1mNpifNFnVs65XhcWTdt47bnFuF24dm8TFEz\np7T0/pn0a+HJux1OOrOux08d1ndqY7tillVkzExLOk7yd4YxGwluViJhE45raL0na0dtlWO0+bZr\n1TKi+2zptZGTamT3b/tLacvJjiY3XaTWdYxZZ6/dtPm1zrv1z78fPcbwC7EAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABhkyV\nxUm152iAZWtFazNp2iGhm1Vss8uP3aevnKrNntqLdelI7VRHRnrX/HRjx/tZREVjZXeybW6KbWZt\npCZ6S08tN7Nmbb7zCrJtyoS5145bSx5mWafelr3tsKmS/o08uXyhlly7RPV2+AcBnPNdZrK+53pS\nfP4ytnPVda4y4BwHxOXV6uvu96Unz+MvVxG0bQRG0bR2G0nHLb2gCUDX12LxtFmpHeazt82wT1gH\nmMN4tWs+rcr2aEV8DU5sM/cvO3yb+O0csLUTSdrLphRE8tlkZI7Atr2ZMazDJVKTYSCawi7Ksq7z\n1QERvLK3ZGPrKbyCrbdnMcsbeaa18/RhvvM7oGEwTG0JmYYTIML22a2e28xELM19oURPNO4lOem+\nn3ZY5+prVnMc2GYU4/L4A0a15cNf6rz/AC6fC6+NxCPOuOu/5tHJTbHj+F5/l1+BYumXJMd9o3/d\nMRXYASgAAAAAAABhlxUz4rY8lYtS0bTEvH8R4ffhmo6bzhtPu29Pg9mq1Gnx6rDbFmrzVsizq2df\nzXkMWTeIbNL7tbXaHLwzUctvexWn3bmPL8WFnHVL326VZ91MfFVjvvVlz79kLrcf2m7j7bNHH3bl\nJ2SirLQoy4t1++7G0dBC/RanxI8PJPv18/WG241+alovSdrV6w6mDNGfFF4/OPSW2b1zeTPL1aAs\nzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAVZ9RXBTe3WZ7R6iZOpzZq4ac1p+UermZMl89+a/byj0Ra9815ted59PQ32hlrXXRjH\nDpCLX6ML5NlNsm/ZRqstfdXzbsZt06sLZNvNB1Za8RDWyZdo7q8udq5Mu/mIMt4md2lmy7JzZuWJ\ndHgfBL8RvGo1MTXTxPSPx/8AstJ1XWpIs4BwSdbeNVqq/URPu0n73/s9hEREbRG0QUpWlYrWIisR\ntER5JbSccur2gCUAAAAPM8Sry8Uyz67fwuxbzVPGsE49XGbvF42V4M0TEL33ERnktsxpk3sumK2j\nadmFdPFZ33VS2Mdui2J3UU6LYlFSsN2O5NkCyJ6K7T1TEsbAsxdpReerKkTFGMxvYEz0rsqtbbpC\nb2VT1QEzuwtbaGUxspuJU3neWdKoiu8rq12gCI92YatLcublnzbEz1aOptyZqTuDHLfxN6R0+t5X\nqdJhjBp6UiPLeXl9NSMnEKxHa1+bb8nrlvxUAAAAAAAAAAABTqtNj1eC2LLXeto/R43VabJw/VTh\nydY+7b1h7ho8V4dXiGlmvbJXrS3xRZ1fGv5rzeHN02bEW3cys3xZJx5ImtqztMS3MeTeGFjqlb2O\n8btql3NpbZtYsnSBLeiWfdTjtutid+ghherHS5p0+f3vsX6T8Fkw181d4lMvEWdnHaGnw/UeNh5L\nT7+PpPxbjdyWcvAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAo1Oprgr63ntAmTqdRqK4K9etp7Q5d7Wy2m953lNrWyWm953mVd77R0\nZa1104xxlN9lV8qnJl2a9s3xUXX2ybsJyRDWtl3YWydEC+2VRkzeW6q+T4tbJm+KRdfK1cmWZnlr\nvNp7RC/R6HU8SycmCk7ed57Q9ZwvgOn4fEXtHi5/O9o7fJaZ6z1uRyOEezVstq6jiEbV71xevzer\nrWtKxWsRFY6REeSRrJxz22gCUAAAAAANbX6aNVpL0npMRvWfSXlKamsRMVvXm+EvZXjmpaPWHzfL\noNRjzXicfWJ8phfPxFejx72x7xMzK+sXiNoiXlq+Pi6fWV/VfTNqfLJl/WTg9Pji8R70LqvMV1Gq\nj/zcv6yz+lanzzZP1lWpelTET6S81Gp1P/Gyf90s412rjtnyfqql6asREdWM9+jz9eJ6yP8Az7uh\nodZqMt458tpB1JvEViI3/RhzRt13/R1MNaziiZiJn5K9ZNceKZiIiQcu/WekT+iYrWI3lzdTrs+8\n8uW0fJzcur1Np/zsn6g79phVaIeetqNR/wAXJ/3SwnUaj/i5P+6UD0ldonum161h5mNRqP8Ai5P1\nlNtRqJjacuT9Qd22WN5aGeZyZd/KHJy59RHbLf8AVq31Gp/4uT9ZEvS8Lr/vSs2npzRtL1z53wK+\noza/HW2XJNd99pmX0Rb8VAAAAAAAAAAAAAAcHj/C5yV+l4I9+v24jzj1cLFk8nu5jeNpeW41wmdL\nknU6ev1Vp96sfdn/ANFdTrXG+eq1q5F2LLtbZoY8m8d11bbSydErsYsm+zZrO/zcnBm226uhiyRK\nEtrvCrJDOJTeu8A1MWX6Lqq5N/dnpb5O5ExMbx2cPNTeJb/DM/iYPDtPvY+nzhri/jDy5/W6AuwA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n", "let instance = 0;\nlet CSScreated = false;\n\nlet theme = {\n background: 'darkslategray',\n hover: 'lightgray',\n itemBackground: 'black',\n itemColor: 'white',\n buttonBackground: 'lightblue',\n buttonHover: 'lightgreen',\n checkboxOn: 'lightgreen',\n checkboxOff: 'lightcoral',\n rangeBackground: 'lightblue',\n rangeLabel: 'white',\n chartColor: 'lightblue',\n};\n\nfunction createCSS() {\n if (CSScreated) return;\n const css = `\n :root { --rounded: 0.1rem; }\n .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10;\n box-shadow: 0 0 8px dimgrey; background: ${theme.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; }\n\n .menu:hover { box-shadow: 0 0 8px ${theme.hover}; }\n .menu-container { display: block; max-height: 100vh; }\n .menu-container-fadeout { max-height: 0; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-container-fadein { max-height: 100vh; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-item { display: flex; white-space: nowrap; padding: 0.2rem; cursor: default; width: 100%; }\n .menu-title { cursor: pointer; }\n .menu-hr { margin: 0.2rem; border: 1px solid rgba(0, 0, 0, 0.5) }\n .menu-label { padding: 0; font-weight: 800; }\n\n .menu-list { margin-right: 0.8rem; }\n select:focus { outline: none; }\n .menu-list-item { background: ${theme.itemBackground}; color: ${theme.itemColor}; border: none; padding: 0.2rem; font-family: inherit;\n font-variant: inherit; border-radius: var(--rounded); font-weight: 800; }\n\n .menu-chart-title { padding: 0; font-size: 0.8rem; font-weight: 800; align-items: center}\n .menu-chart-canvas { background: transparent; margin: 0.2rem 0 0.2rem 0.6rem; }\n \n .menu-button { border: 0; background: ${theme.buttonBackground}; width: -webkit-fill-available; padding: 8px; margin: 8px; cursor: pointer; box-shadow: 4px 4px 4px 0 dimgrey;\n border-radius: var(--rounded); justify-content: center; font-family: inherit; font-variant: inherit; font-size: 1rem; font-weight: 800; }\n .menu-button:hover { background: ${theme.buttonHover}; box-shadow: 4px 4px 4px 0 black; }\n .menu-button:focus { outline: none; }\n\n .menu-checkbox { width: 2.8rem; height: 1rem; background: ${theme.itemBackground}; margin: 0.5rem 0.5rem 0 0; position: relative; border-radius: var(--rounded); }\n .menu-checkbox:after { content: 'OFF'; color: ${theme.checkboxOff}; position: absolute; right: 0.2rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox:before { content: 'ON'; color: ${theme.checkboxOn}; position: absolute; left: 0.3rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox-label { width: 1.3rem; height: 0.8rem; cursor: pointer; position: absolute; top: 0.1rem; left: 0.1rem; z-index: 1; background: ${theme.checkboxOff};\n border-radius: var(--rounded); transition: left 0.6s ease; }\n\n input[type=checkbox] { visibility: hidden; }\n input[type=checkbox]:checked + label { left: 1.4rem; background: ${theme.checkboxOn}; }\n\n .menu-range { margin: 0.2rem 0.5rem 0 0; width: 3.5rem; background: transparent; color: ${theme.rangeBackground}; }\n .menu-range:before { color: ${theme.rangeLabel}; margin: 0 0.4rem 0 0; font-weight: 800; font-size: 0.6rem; position: relative; top: 0.3rem; content: attr(value); }\n\n input[type=range] { -webkit-appearance: none; }\n input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-moz-range-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-webkit-slider-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n input[type=range]::-moz-range-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n\n .svg-background { fill:darkslategrey; cursor:pointer; opacity: 0.6; }\n .svg-foreground { fill:white; cursor:pointer; opacity: 0.8; }\n `;\n const el = document.createElement('style');\n el.innerHTML = css;\n document.getElementsByTagName('head')[0].appendChild(el);\n CSScreated = true;\n}\n\nclass Menu {\n constructor(parent, title, position, userTheme) {\n if (userTheme) theme = { ...theme, ...userTheme };\n createCSS();\n this.createMenu(parent, title, position);\n this.id = 0;\n this.instance = instance;\n instance++;\n this._maxFPS = 0;\n this.hidden = 0;\n }\n\n createMenu(parent, title = '', position = { top: null, left: null, bottom: null, right: null }) {\n this.menu = document.createElement('div');\n this.menu.id = `menu-${instance}`;\n this.menu.className = 'menu';\n if (position) {\n if (position.top) this.menu.style.top = position.top;\n if (position.bottom) this.menu.style.bottom = position.bottom;\n if (position.left) this.menu.style.left = position.left;\n if (position.right) this.menu.style.right = position.right;\n }\n\n this.container = document.createElement('div');\n this.container.id = `menu-container-${instance}`;\n this.container.className = 'menu-container menu-container-fadein';\n\n // set menu title with pulldown arrow\n const elTitle = document.createElement('div');\n elTitle.className = 'menu-title';\n elTitle.id = `menu-title-${instance}`;\n const svg = `\n \n \n `;\n if (title) elTitle.innerHTML = `${title}${svg}`;\n this.menu.appendChild(elTitle);\n elTitle.addEventListener('click', () => {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n this.menu.style.borderStyle = this.container.classList.contains('menu-container-fadeout') ? 'none' : 'solid';\n });\n\n this.menu.appendChild(this.container);\n if (typeof parent === 'object') parent.appendChild(this.menu);\n else document.getElementById(parent).appendChild(this.menu);\n }\n\n get newID() {\n this.id++;\n return `menu-${this.instance}-${this.id}`;\n }\n\n get ID() {\n return `menu-${this.instance}-${this.id}`;\n }\n\n get width() {\n return this.menu.offsetWidth;\n }\n\n get height() {\n return this.menu.offsetHeight;\n }\n\n hide() {\n if (this.container.classList.contains('menu-container-fadein')) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n }\n }\n\n visible() {\n return (this.container.classList.contains('menu-container-fadein'));\n }\n\n toggle(evt) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n if (this.container.classList.contains('menu-container-fadein') && evt) {\n const x = evt.x || (evt.touches && evt.touches[0] ? evt.touches[0].pageX : null);\n // const y = evt.y || (evt.touches && evt.touches[0] ? evt.touches[0].pageY : null);\n if (x) this.menu.style.left = `${x - (this.menu.offsetWidth / 2)}px`;\n // if (y) this.menu.style.top = '5.5rem'; // `${evt.y + 55}px`;\n if (this.menu.offsetLeft < 0) this.menu.style.left = 0;\n if ((this.menu.offsetLeft + this.menu.offsetWidth) > window.innerWidth) {\n this.menu.style.left = null;\n this.menu.style.right = 0;\n }\n this.menu.style.borderStyle = 'solid';\n } else {\n this.menu.style.borderStyle = 'none';\n }\n }\n\n addTitle(title) {\n const el = document.createElement('div');\n el.className = 'menu-title';\n el.id = this.newID;\n el.innerHTML = title;\n this.menu.appendChild(el);\n el.addEventListener('click', () => {\n this.hidden = !this.hidden;\n const all = document.getElementsByClassName('menu');\n for (const item of all) {\n item.style.display = this.hidden ? 'none' : 'block';\n }\n });\n return el;\n }\n\n addLabel(title) {\n const el = document.createElement('div');\n el.className = 'menu-item menu-label';\n el.id = this.newID;\n el.innerHTML = title;\n this.container.appendChild(el);\n return el;\n }\n\n addBool(title, object, variable, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `
${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = evt.target.checked;\n if (callback) callback(evt.target.checked);\n });\n return el;\n }\n\n async addList(title, items, selected, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n let options = '';\n for (const item of items) {\n const def = item === selected ? 'selected' : '';\n options += ``;\n }\n el.innerHTML = `
${title}`;\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n if (callback) callback(items[evt.target.selectedIndex]);\n });\n return el;\n }\n\n addRange(title, object, variable, min, max, step, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = parseInt(evt.target.value) === parseFloat(evt.target.value) ? parseInt(evt.target.value) : parseFloat(evt.target.value);\n evt.target.setAttribute('value', evt.target.value);\n if (callback) callback(evt.target.value);\n });\n el.input = el.children[0];\n return el;\n }\n\n addHTML(html) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = this.newID;\n if (html) el.innerHTML = html;\n this.container.appendChild(el);\n return el;\n }\n\n addButton(titleOn, titleOff, callback) {\n const el = document.createElement('button');\n el.className = 'menu-item menu-button';\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n el.type = 'button';\n el.id = this.newID;\n el.innerText = titleOn;\n this.container.appendChild(el);\n el.addEventListener('click', () => {\n if (el.innerText === titleOn) el.innerText = titleOff;\n else el.innerText = titleOn;\n if (callback) callback(el.innerText !== titleOn);\n });\n return el;\n }\n\n addValue(title, val, suffix = '') {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = `menu-val-${title}`;\n el.innerText = `${title}: ${val}${suffix}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateValue(title, val, suffix = '') {\n const el = document.getElementById(`menu-val-${title}`);\n if (el) el.innerText = `${title}: ${val}${suffix}`;\n else this.addValue(title, val);\n }\n\n addChart(title, id, width = 150, height = 40, color) {\n if (color) theme.chartColor = color;\n const el = document.createElement('div');\n el.className = 'menu-item menu-chart-title';\n el.id = this.newID;\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async updateChart(id, values) {\n if (!values || (values.length === 0)) return;\n const canvas = document.getElementById(`menu-canvas-${id}`);\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = theme.background;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const width = canvas.width / values.length;\n const max = 1 + Math.max(...values);\n const height = canvas.height / max;\n for (let i = 0; i < values.length; i++) {\n const gradient = ctx.createLinearGradient(0, (max - values[i]) * height, 0, 0);\n gradient.addColorStop(0.1, theme.chartColor);\n gradient.addColorStop(0.4, theme.background);\n ctx.fillStyle = gradient;\n ctx.fillRect(i * width, 0, width - 4, canvas.height);\n ctx.fillStyle = theme.background;\n ctx.font = `${width / 1.5}px \"Segoe UI\"`;\n ctx.fillText(Math.round(values[i]), i * width + 1, canvas.height - 1, width - 1);\n }\n }\n}\n\nexport default Menu;\n", "/* eslint-disable max-len */\n\n// based on: https://github.com/munrocket/gl-bench\n\nconst UICSS = `\n #gl-bench { position: absolute; right: 1rem; bottom: 1rem; z-index:1000; -webkit-user-select: none; -moz-user-select: none; user-select: none; }\n #gl-bench div { position: relative; display: block; margin: 4px; padding: 0 2px 0 2px; background: darkslategray; border-radius: 0.1rem; cursor: pointer; opacity: 0.9; }\n #gl-bench svg { height: 60px; margin: 0 0px 0px 4px; }\n #gl-bench text { font-size: 16px; font-family: 'Lato', 'Segoe UI'; dominant-baseline: middle; text-anchor: middle; }\n #gl-bench .gl-mem { font-size: 12px; fill: white; }\n #gl-bench .gl-fps { font-size: 13px; fill: white; }\n #gl-bench line { stroke-width: 5; stroke: white; stroke-linecap: round; }\n #gl-bench polyline { fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; }\n #gl-bench rect { fill: black; }\n #gl-bench .opacity { stroke: black; }\n `;\n\nconst UISVG = `\n
\n \n 00 FPS\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n `;\n\nclass GLBench {\n /** GLBench constructor\n * @param { WebGLRenderingContext | WebGL2RenderingContext } gl context\n * @param { Object | undefined } settings additional settings\n */\n constructor(gl, settings = {}) {\n this.css = UICSS;\n this.svg = UISVG;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.paramLogger = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.chartLogger = () => {};\n this.chartLen = 20;\n this.chartHz = 20;\n\n this.names = [];\n this.cpuAccums = [];\n this.gpuAccums = [];\n this.activeAccums = [];\n this.chart = new Array(this.chartLen);\n this.now = () => ((performance && performance.now) ? performance.now() : Date.now());\n this.updateUI = () => {\n [].forEach.call(this.nodes['gl-gpu-svg'], (node) => node.style.display = this.trackGPU ? 'inline' : 'none');\n };\n\n Object.assign(this, settings);\n this.detected = 0;\n this.finished = [];\n this.isFramebuffer = 0;\n this.frameId = 0;\n\n // 120hz device detection\n let rafId; let n = 0; let\n t0;\n const loop = (t) => {\n if (++n < 20) {\n rafId = requestAnimationFrame(loop);\n } else {\n this.detected = Math.ceil(1e3 * n / (t - t0) / 70);\n cancelAnimationFrame(rafId);\n }\n if (!t0) t0 = t;\n };\n requestAnimationFrame(loop);\n\n // attach gpu profilers\n if (gl) {\n const glFinish = async (t, activeAccums) => Promise.resolve(setTimeout(() => {\n gl.getError();\n const dt = this.now() - t;\n activeAccums.forEach((active, i) => {\n if (active) this.gpuAccums[i] += dt;\n });\n }, 0));\n\n const addProfiler = (fn, self, target) => {\n const t = self.now();\n // eslint-disable-next-line prefer-rest-params\n fn.apply(target, arguments);\n if (self.trackGPU) self.finished.push(glFinish(t, self.activeAccums.slice(0)));\n };\n\n /* ['drawArrays', 'drawElements', 'drawArraysInstanced', 'drawBuffers', 'drawElementsInstanced', 'drawRangeElements'].forEach((fn) => {\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n }\n });\n */\n const fn = 'drawElements';\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n } else {\n // eslint-disable-next-line no-console\n console.log('bench: cannot attach to webgl function');\n }\n\n /*\n gl.getExtension = ((fn, self) => {\n // eslint-disable-next-line prefer-rest-params\n const ext = fn.apply(gl, arguments);\n if (ext) {\n ['drawElementsInstancedANGLE', 'drawBuffersWEBGL'].forEach((fn2) => {\n if (ext[fn2]) {\n ext[fn2] = addProfiler(ext[fn2], self, ext);\n }\n });\n }\n return ext;\n })(gl.getExtension, this);\n */\n }\n\n // init ui and ui loggers\n if (!this.withoutUI) {\n if (!this.dom) this.dom = document.body;\n const elm = document.createElement('div');\n elm.id = 'gl-bench';\n this.dom.appendChild(elm);\n this.dom.insertAdjacentHTML('afterbegin', '');\n this.dom = elm;\n this.dom.addEventListener('click', () => {\n this.trackGPU = !this.trackGPU;\n this.updateUI();\n });\n\n this.paramLogger = ((logger, dom, names) => {\n const classes = ['gl-cpu', 'gl-gpu', 'gl-mem', 'gl-fps', 'gl-gpu-svg', 'gl-chart'];\n const nodes = { ...classes };\n classes.forEach((c) => nodes[c] = dom.getElementsByClassName(c));\n this.nodes = nodes;\n return (i, cpu, gpu, mem, fps, totalTime, frameId) => {\n nodes['gl-cpu'][i].style.strokeDasharray = (cpu * 0.27).toFixed(0) + ' 100';\n nodes['gl-gpu'][i].style.strokeDasharray = (gpu * 0.27).toFixed(0) + ' 100';\n // eslint-disable-next-line no-nested-ternary\n nodes['gl-mem'][i].innerHTML = names[i] ? names[i] : (mem ? 'mem: ' + mem.toFixed(0) + 'mb' : '');\n nodes['gl-fps'][i].innerHTML = 'FPS: ' + fps.toFixed(1);\n logger(names[i], cpu, gpu, mem, fps, totalTime, frameId);\n };\n })(this.paramLogger, this.dom, this.names);\n\n this.chartLogger = ((logger, dom) => {\n const nodes = { 'gl-chart': dom.getElementsByClassName('gl-chart') };\n return (i, chart, circularId) => {\n let points = '';\n const len = chart.length;\n for (let j = 0; j < len; j++) {\n const id = (circularId + j + 1) % len;\n if (chart[id] !== undefined) points = points + ' ' + (60 * j / (len - 1)).toFixed(1) + ',' + (45 - chart[id] * 0.5 / this.detected).toFixed(1);\n }\n nodes['gl-chart'][i].setAttribute('points', points);\n logger(this.names[i], chart, circularId);\n };\n })(this.chartLogger, this.dom);\n }\n }\n\n /**\n * Explicit UI add\n * @param { string | undefined } name\n */\n addUI(name) {\n if (this.names.indexOf(name) === -1) {\n this.names.push(name);\n if (this.dom) {\n this.dom.insertAdjacentHTML('beforeend', this.svg);\n this.updateUI();\n }\n this.cpuAccums.push(0);\n this.gpuAccums.push(0);\n this.activeAccums.push(false);\n }\n }\n\n /**\n * Increase frameID\n * @param { number | undefined } now\n */\n nextFrame(now) {\n this.frameId++;\n const t = now || this.now();\n\n // params\n if (this.frameId <= 1) {\n this.paramFrame = this.frameId;\n this.paramTime = t;\n } else {\n const duration = t - this.paramTime;\n if (duration >= 1e3) {\n const frameCount = this.frameId - this.paramFrame;\n const fps = frameCount / duration * 1e3;\n for (let i = 0; i < this.names.length; i++) {\n const cpu = this.cpuAccums[i] / duration * 100;\n const gpu = this.gpuAccums[i] / duration * 100;\n const mem = (performance && performance.memory) ? performance.memory.usedJSHeapSize / (1 << 20) : 0;\n this.paramLogger(i, cpu, gpu, mem, fps, duration, frameCount);\n this.cpuAccums[i] = 0;\n Promise.all(this.finished).then(() => {\n this.gpuAccums[i] = 0;\n this.finished = [];\n });\n }\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n }\n\n // chart\n if (!this.detected || !this.chartFrame) {\n this.chartFrame = this.frameId;\n this.chartTime = t;\n this.circularId = 0;\n } else {\n const timespan = t - this.chartTime;\n let hz = this.chartHz * timespan / 1e3;\n while (--hz > 0 && this.detected) {\n const frameCount = this.frameId - this.chartFrame;\n const fps = frameCount / timespan * 1e3;\n this.chart[this.circularId % this.chartLen] = fps;\n for (let i = 0; i < this.names.length; i++) this.chartLogger(i, this.chart, this.circularId);\n this.circularId++;\n this.chartFrame = this.frameId;\n this.chartTime = t;\n }\n }\n }\n\n /**\n * Begin named measurement\n * @param { string | undefined } name\n */\n begin(name) {\n this.updateAccums(name);\n }\n\n /**\n * End named measure\n * @param { string | undefined } name\n */\n end(name) {\n this.updateAccums(name);\n }\n\n updateAccums(name) {\n let nameId = this.names.indexOf(name);\n if (nameId === -1) {\n nameId = this.names.length;\n this.addUI(name);\n }\n\n const t = this.now();\n const dt = t - this.t0;\n for (let i = 0; i < nameId + 1; i++) {\n if (this.activeAccums[i]) this.cpuAccums[i] += dt;\n }\n this.activeAccums[nameId] = !this.activeAccums[nameId];\n this.t0 = t;\n }\n}\n\nexport default GLBench;\n", "// import Human from '../dist/human.esm.js'; // equivalent of @vladmandic/human\nimport Human from '../src/human';\nimport Menu from './menu.js';\nimport GLBench from './gl-bench.js';\n\nconst userConfig = { backend: 'webgl' }; // add any user configuration overrides\n\n/*\nconst userConfig = {\n backend: 'wasm',\n async: false,\n warmup: 'face',\n videoOptimized: false,\n face: { enabled: true, mesh: { enabled: true }, iris: { enabled: false }, age: { enabled: false }, gender: { enabled: false }, emotion: { enabled: false }, embedding: { enabled: false } },\n hand: { enabled: false },\n gesture: { enabled: false },\n body: { enabled: false, modelPath: '../models/blazepose.json' },\n};\n*/\n\nconst human = new Human(userConfig);\n\n// ui options\nconst ui = {\n baseBackground: 'rgba(50, 50, 50, 1)', // 'grey'\n crop: true, // video mode crop to size or leave full frame\n columns: 2, // when processing sample images create this many columns\n facing: true, // camera facing front or back\n useWorker: false, // use web workers for processing\n worker: 'worker.js',\n samples: ['../assets/sample6.jpg', '../assets/sample1.jpg', '../assets/sample4.jpg', '../assets/sample5.jpg', '../assets/sample3.jpg', '../assets/sample2.jpg'],\n compare: '../assets/sample-me.jpg',\n console: true, // log messages to browser console\n maxFPSframes: 10, // keep fps history for how many frames\n modelsPreload: true, // preload human models on startup\n busy: false, // internal camera busy flag\n menuWidth: 0, // internal\n menuHeight: 0, // internal\n camera: {}, // internal, holds details of webcam details\n detectFPS: [], // internal, holds fps values for detection performance\n drawFPS: [], // internal, holds fps values for draw performance\n buffered: false, // experimental, should output be buffered between frames\n drawWarmup: false, // debug only, should warmup image processing be displayed on startup\n drawThread: null, // internl, perform draw operations in a separate thread\n detectThread: null, // internl, perform detect operations in a separate thread\n framesDraw: 0, // internal, statistics on frames drawn\n framesDetect: 0, // internal, statistics on frames detected\n bench: true, // show gl fps benchmark window\n lastFrame: 0, // time of last frame processing\n};\n\n// global variables\nconst menu = {};\nlet worker;\nlet bench;\nlet lastDetectedResult = {};\n\n// helper function: translates json to human readable string\nfunction str(...msg) {\n if (!Array.isArray(msg)) return msg;\n let line = '';\n for (const entry of msg) {\n if (typeof entry === 'object') line += JSON.stringify(entry).replace(/{|}|\"|\\[|\\]/g, '').replace(/,/g, ', ');\n else line += entry;\n }\n return line;\n}\n\n// helper function: wrapper around console output\nfunction log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (ui.console) console.log(ts, ...msg);\n}\n\nfunction status(msg) {\n // eslint-disable-next-line no-console\n const div = document.getElementById('status');\n if (div) div.innerText = msg;\n}\n\nlet original;\nasync function calcSimmilariry(result) {\n document.getElementById('compare-container').style.display = human.config.face.embedding.enabled ? 'block' : 'none';\n if (!human.config.face.embedding.enabled) return;\n if (!(result?.face?.length > 0) || (result?.face[0]?.embedding?.length >= 64)) return;\n if (!original) {\n original = result;\n if (result.face[0].tensor) {\n const enhanced = human.enhance(result.face[0]);\n if (enhanced) {\n const c = document.getElementById('orig');\n const squeeze = enhanced.squeeze();\n human.tf.browser.toPixels(squeeze, c);\n enhanced.dispose();\n squeeze.dispose();\n }\n } else {\n document.getElementById('compare-canvas').getContext('2d').drawImage(original.canvas, 0, 0, 200, 200);\n }\n }\n const simmilarity = human.simmilarity(original?.face[0]?.embedding, result?.face[0]?.embedding);\n document.getElementById('simmilarity').innerText = `simmilarity: ${Math.trunc(1000 * simmilarity) / 10}%`;\n}\n\n// draws processed results and starts processing of a next frame\nlet lastDraw = performance.now();\nasync function drawResults(input) {\n const result = lastDetectedResult;\n const canvas = document.getElementById('canvas');\n\n // update draw fps data\n ui.drawFPS.push(1000 / (performance.now() - lastDraw));\n if (ui.drawFPS.length > ui.maxFPSframes) ui.drawFPS.shift();\n lastDraw = performance.now();\n\n // draw fps chart\n await menu.process.updateChart('FPS', ui.detectFPS);\n\n // get updated canvas\n if (ui.buffered || !result.canvas) {\n const image = await human.image(input);\n result.canvas = image.canvas;\n human.tf.dispose(image.tensor);\n }\n\n // draw image from video\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = ui.baseBackground;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n if (result.canvas) {\n if (result.canvas.width !== canvas.width) canvas.width = result.canvas.width;\n if (result.canvas.height !== canvas.height) canvas.height = result.canvas.height;\n ctx.drawImage(result.canvas, 0, 0, result.canvas.width, result.canvas.height, 0, 0, result.canvas.width, result.canvas.height);\n } else {\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n }\n\n // draw all results\n human.draw.face(canvas, result.face);\n human.draw.body(canvas, result.body);\n human.draw.hand(canvas, result.hand);\n human.draw.gesture(canvas, result.gesture);\n await calcSimmilariry(result);\n\n // update log\n const engine = human.tf.engine();\n const gpu = engine.backendInstance ? `gpu: ${(engine.backendInstance.numBytesInGPU ? engine.backendInstance.numBytesInGPU : 0).toLocaleString()} bytes` : '';\n const memory = `system: ${engine.state.numBytes.toLocaleString()} bytes ${gpu} | tensors: ${engine.state.numTensors.toLocaleString()}`;\n const processing = result.canvas ? `processing: ${result.canvas.width} x ${result.canvas.height}` : '';\n const avgDetect = Math.trunc(10 * ui.detectFPS.reduce((a, b) => a + b, 0) / ui.detectFPS.length) / 10;\n const avgDraw = Math.trunc(10 * ui.drawFPS.reduce((a, b) => a + b, 0) / ui.drawFPS.length) / 10;\n const warning = (ui.detectFPS.length > 5) && (avgDetect < 5) ? 'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models' : '';\n document.getElementById('log').innerHTML = `\n video: ${ui.camera.name} | facing: ${ui.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ui.camera.width} x ${ui.camera.height} ${processing}
\n backend: ${human.tf.getBackend()} | ${memory}
\n performance: ${str(result.performance)}ms FPS process:${avgDetect} refresh:${avgDraw}
\n ${warning}
\n `;\n\n ui.framesDraw++;\n ui.lastFrame = performance.now();\n // if buffered, immediate loop but limit frame rate although it's going to run slower as JS is singlethreaded\n if (ui.buffered) {\n ui.drawThread = requestAnimationFrame(() => drawResults(input, canvas));\n } else if (!ui.buffered && ui.drawThread) {\n log('stopping buffered refresh');\n cancelAnimationFrame(ui.drawThread);\n ui.drawThread = null;\n }\n}\n\n// setup webcam\nasync function setupCamera() {\n if (ui.busy) return null;\n ui.busy = true;\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n const output = document.getElementById('log');\n const live = video.srcObject ? ((video.srcObject.getVideoTracks()[0].readyState === 'live') && (video.readyState > 2) && (!video.paused)) : false;\n let msg = '';\n status('setting up camera');\n // setup webcam. note that navigator.mediaDevices requires that page is accessed via https\n if (!navigator.mediaDevices) {\n msg = 'camera access not supported';\n output.innerText += `\\n${msg}`;\n log(msg);\n status(msg);\n ui.busy = false;\n return msg;\n }\n let stream;\n const constraints = {\n audio: false,\n video: { facingMode: ui.facing ? 'user' : 'environment', resizeMode: ui.crop ? 'crop-and-scale' : 'none' },\n };\n if (window.innerWidth > window.innerHeight) constraints.video.width = { ideal: window.innerWidth };\n else constraints.video.height = { ideal: (window.innerHeight - document.getElementById('menubar').offsetHeight) };\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (err) {\n if (err.name === 'PermissionDeniedError' || err.name === 'NotAllowedError') msg = 'camera permission denied';\n else if (err.name === 'SourceUnavailableError') msg = 'camera not available';\n else msg = `camera error: ${err.message || err}`;\n output.innerText += `\\n${msg}`;\n status(msg);\n log('camera error:', err);\n ui.busy = false;\n return msg;\n }\n if (stream) video.srcObject = stream;\n else {\n ui.busy = false;\n return 'camera stream empty';\n }\n const track = stream.getVideoTracks()[0];\n const settings = track.getSettings();\n // log('camera constraints:', constraints, 'window:', { width: window.innerWidth, height: window.innerHeight }, 'settings:', settings, 'track:', track);\n ui.camera = { name: track.label?.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === 'user' ? 'front' : 'back' };\n return new Promise((resolve) => {\n video.onloadeddata = async () => {\n video.width = video.videoWidth;\n video.height = video.videoHeight;\n canvas.width = video.width;\n canvas.height = video.height;\n canvas.style.width = canvas.width > canvas.height ? '100vw' : '';\n canvas.style.height = canvas.width > canvas.height ? '' : '100vh';\n ui.menuWidth.input.setAttribute('value', video.width);\n ui.menuHeight.input.setAttribute('value', video.height);\n // silly font resizing for paint-on-canvas since viewport can be zoomed\n if (live) video.play();\n // eslint-disable-next-line no-use-before-define\n if (live && !ui.detectThread) runHumanDetect(video, canvas);\n ui.busy = false;\n // do once more because onresize events can be delayed or skipped\n // if (video.width > window.innerWidth) await setupCamera();\n status('');\n resolve();\n };\n });\n}\n\nfunction initPerfMonitor() {\n if (!bench) {\n const gl = null;\n // cosnt gl = human.tf.engine().backend.gpgpu.gl;\n // if (!gl) log('bench cannot get tensorflow webgl context');\n bench = new GLBench(gl, {\n trackGPU: false, // this is really slow\n chartHz: 20,\n chartLen: 20,\n });\n bench.begin();\n }\n}\n\n// wrapper for worker.postmessage that creates worker if one does not exist\nfunction webWorker(input, image, canvas, timestamp) {\n if (!worker) {\n // create new webworker and add event handler only once\n log('creating worker thread');\n worker = new Worker(ui.worker, { type: 'module' });\n // after receiving message from webworker, parse&draw results and send new frame for processing\n worker.addEventListener('message', (msg) => {\n if (msg.data.result.performance && msg.data.result.performance.total) ui.detectFPS.push(1000 / msg.data.result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n lastDetectedResult = msg.data.result;\n ui.framesDetect++;\n if (!ui.drawThread) drawResults(input);\n // eslint-disable-next-line no-use-before-define\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n });\n }\n // pass image data as arraybuffer to worker by reference to avoid copy\n worker.postMessage({ image: image.data.buffer, width: canvas.width, height: canvas.height, userConfig }, [image.data.buffer]);\n}\n\n// main processing function when input is webcam, can use direct invocation or web worker\nfunction runHumanDetect(input, canvas, timestamp) {\n // if live video\n const live = input.srcObject && (input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState > 2) && (!input.paused);\n if (!live && input.srcObject) {\n // stop ui refresh\n if (ui.drawThread) cancelAnimationFrame(ui.drawThread);\n if (ui.detectThread) cancelAnimationFrame(ui.detectThread);\n ui.drawThread = null;\n ui.detectThread = null;\n // if we want to continue and camera not ready, retry in 0.5sec, else just give up\n if (input.paused) log('camera paused');\n else if ((input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState <= 2)) setTimeout(() => runHumanDetect(input, canvas), 500);\n else log(`camera not ready: track state: ${input.srcObject?.getVideoTracks()[0].readyState} stream state: ${input.readyState}`);\n clearTimeout(ui.drawThread);\n ui.drawThread = null;\n log('frame statistics: process:', ui.framesDetect, 'refresh:', ui.framesDraw);\n log('memory', human.tf.engine().memory());\n return;\n }\n status('');\n if (ui.useWorker) {\n // get image data from video as we cannot send html objects to webworker\n const offscreen = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(canvas.width, canvas.height) : document.createElement('canvas');\n offscreen.width = canvas.width;\n offscreen.height = canvas.height;\n const ctx = offscreen.getContext('2d');\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n const data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // perform detection in worker\n webWorker(input, data, canvas, userConfig, timestamp);\n } else {\n human.detect(input, userConfig).then((result) => {\n if (result.performance && result.performance.total) ui.detectFPS.push(1000 / result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n if (result.error) {\n log(result.error);\n document.getElementById('log').innerText += `\\nHuman error: ${result.error}`;\n } else {\n lastDetectedResult = result;\n if (!ui.drawThread) drawResults(input);\n ui.framesDetect++;\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n }\n });\n }\n}\n\n// main processing function when input is image, can use direct invocation or web worker\nasync function processImage(input) {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = async () => {\n log('Processing image:', encodeURI(image.src));\n const canvas = document.getElementById('canvas');\n image.width = image.naturalWidth;\n image.height = image.naturalHeight;\n canvas.width = human.config.filter.width && human.config.filter.width > 0 ? human.config.filter.width : image.naturalWidth;\n canvas.height = human.config.filter.height && human.config.filter.height > 0 ? human.config.filter.height : image.naturalHeight;\n const result = await human.detect(image, userConfig);\n lastDetectedResult = result;\n await drawResults(image);\n const thumb = document.createElement('canvas');\n thumb.className = 'thumbnail';\n thumb.width = window.innerWidth / (ui.columns + 0.1);\n thumb.height = thumb.width * canvas.height / canvas.width;\n if (result.face && result.face.length > 0) {\n thumb.title = result.face.map((a, i) => `#${i} face: ${Math.trunc(100 * a.faceConfidence)}% box: ${Math.trunc(100 * a.boxConfidence)}% age: ${Math.trunc(a.age)} gender: ${Math.trunc(100 * a.genderConfidence)}% ${a.gender}`).join(' | ');\n } else {\n thumb.title = 'no face detected';\n }\n const ctx = thumb.getContext('2d');\n ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);\n document.getElementById('samples-container').appendChild(thumb);\n image.src = '';\n resolve(true);\n };\n image.src = input;\n });\n}\n\n// just initialize everything and call main function\nasync function detectVideo() {\n document.getElementById('samples-container').style.display = 'none';\n document.getElementById('canvas').style.display = 'block';\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n if ((video.srcObject !== null) && !video.paused) {\n document.getElementById('play').style.display = 'block';\n document.getElementById('btnStart').className = 'button button-start';\n document.getElementById('btnStart').innerHTML = 'start
video';\n status('paused');\n video.pause();\n } else {\n const cameraError = await setupCamera();\n if (!cameraError) {\n document.getElementById('play').style.display = 'none';\n for (const m of Object.values(menu)) m.hide();\n status('');\n document.getElementById('btnStart').className = 'button button-stop';\n document.getElementById('btnStart').innerHTML = 'pause
video';\n await video.play();\n if (!ui.detectThread) runHumanDetect(video, canvas);\n } else {\n status(cameraError);\n }\n }\n}\n\n// just initialize everything and call main function\nasync function detectSampleImages() {\n userConfig.videoOptimized = false; // force disable video optimizations\n document.getElementById('play').style.display = 'none';\n document.getElementById('canvas').style.display = 'none';\n document.getElementById('samples-container').style.display = 'block';\n log('Running detection of sample images');\n status('processing images');\n document.getElementById('samples-container').innerHTML = '';\n for (const m of Object.values(menu)) m.hide();\n for (const image of ui.samples) await processImage(image);\n status('');\n}\n\nfunction setupMenu() {\n let x = [];\n if (window.innerWidth > 800) {\n // initial position of menu items, later it's calculated based on mouse coordinates\n x = [`${document.getElementById('btnDisplay').offsetLeft - 50}px`, `${document.getElementById('btnImage').offsetLeft - 50}px`, `${document.getElementById('btnProcess').offsetLeft - 50}px`, `${document.getElementById('btnModel').offsetLeft - 50}px`];\n } else {\n // absolute minimum spacing for menus\n x = ['0rem', '11rem', '21.1rem', '33rem'];\n }\n\n menu.display = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[0] });\n menu.display.addBool('perf monitor', ui, 'bench', (val) => ui.bench = val);\n menu.display.addBool('buffered output', ui, 'buffered', (val) => ui.buffered = val);\n menu.display.addBool('crop & scale', ui, 'crop', (val) => {\n ui.crop = val;\n setupCamera();\n });\n menu.display.addBool('camera facing', ui, 'facing', (val) => {\n ui.facing = val;\n setupCamera();\n });\n menu.display.addHTML('
');\n menu.display.addBool('use 3D depth', human.draw.drawOptions, 'useDepth');\n menu.display.addBool('draw with curves', human.draw.drawOptions, 'useCurves');\n menu.display.addBool('print labels', human.draw.drawOptions, 'drawLabels');\n menu.display.addBool('draw points', human.draw.drawOptions, 'drawPoints');\n menu.display.addBool('draw boxes', human.draw.drawOptions, 'drawBoxes');\n menu.display.addBool('draw polygons', human.draw.drawOptions, 'drawPolygons');\n menu.display.addBool('fill polygons', human.draw.drawOptions, 'fillPolygons');\n\n menu.image = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[1] });\n menu.image.addBool('enabled', human.config.filter, 'enabled', (val) => human.config.filter.enabled = val);\n ui.menuWidth = menu.image.addRange('image width', human.config.filter, 'width', 0, 3840, 10, (val) => human.config.filter.width = parseInt(val));\n ui.menuHeight = menu.image.addRange('image height', human.config.filter, 'height', 0, 2160, 10, (val) => human.config.filter.height = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addRange('brightness', human.config.filter, 'brightness', -1.0, 1.0, 0.05, (val) => human.config.filter.brightness = parseFloat(val));\n menu.image.addRange('contrast', human.config.filter, 'contrast', -1.0, 1.0, 0.05, (val) => human.config.filter.contrast = parseFloat(val));\n menu.image.addRange('sharpness', human.config.filter, 'sharpness', 0, 1.0, 0.05, (val) => human.config.filter.sharpness = parseFloat(val));\n menu.image.addRange('blur', human.config.filter, 'blur', 0, 20, 1, (val) => human.config.filter.blur = parseInt(val));\n menu.image.addRange('saturation', human.config.filter, 'saturation', -1.0, 1.0, 0.05, (val) => human.config.filter.saturation = parseFloat(val));\n menu.image.addRange('hue', human.config.filter, 'hue', 0, 360, 5, (val) => human.config.filter.hue = parseInt(val));\n menu.image.addRange('pixelate', human.config.filter, 'pixelate', 0, 32, 1, (val) => human.config.filter.pixelate = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addBool('negative', human.config.filter, 'negative', (val) => human.config.filter.negative = val);\n menu.image.addBool('sepia', human.config.filter, 'sepia', (val) => human.config.filter.sepia = val);\n menu.image.addBool('vintage', human.config.filter, 'vintage', (val) => human.config.filter.vintage = val);\n menu.image.addBool('kodachrome', human.config.filter, 'kodachrome', (val) => human.config.filter.kodachrome = val);\n menu.image.addBool('technicolor', human.config.filter, 'technicolor', (val) => human.config.filter.technicolor = val);\n menu.image.addBool('polaroid', human.config.filter, 'polaroid', (val) => human.config.filter.polaroid = val);\n\n menu.process = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[2] });\n menu.process.addList('backend', ['cpu', 'webgl', 'wasm', 'humangl'], human.config.backend, (val) => human.config.backend = val);\n menu.process.addBool('async operations', human.config, 'async', (val) => human.config.async = val);\n // menu.process.addBool('enable profiler', human.config, 'profile', (val) => human.config.profile = val);\n // menu.process.addBool('memory shield', human.config, 'deallocate', (val) => human.config.deallocate = val);\n menu.process.addBool('use web worker', ui, 'useWorker');\n menu.process.addHTML('
');\n menu.process.addLabel('model parameters');\n menu.process.addRange('max objects', human.config.face.detector, 'maxFaces', 1, 50, 1, (val) => {\n human.config.face.detector.maxFaces = parseInt(val);\n human.config.body.maxDetections = parseInt(val);\n human.config.hand.maxHands = parseInt(val);\n });\n menu.process.addRange('skip frames', human.config.face.detector, 'skipFrames', 0, 50, 1, (val) => {\n human.config.face.detector.skipFrames = parseInt(val);\n human.config.face.emotion.skipFrames = parseInt(val);\n human.config.face.age.skipFrames = parseInt(val);\n human.config.hand.skipFrames = parseInt(val);\n });\n menu.process.addRange('min confidence', human.config.face.detector, 'minConfidence', 0.0, 1.0, 0.05, (val) => {\n human.config.face.detector.minConfidence = parseFloat(val);\n human.config.face.gender.minConfidence = parseFloat(val);\n human.config.face.emotion.minConfidence = parseFloat(val);\n human.config.hand.minConfidence = parseFloat(val);\n });\n menu.process.addRange('score threshold', human.config.face.detector, 'scoreThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.scoreThreshold = parseFloat(val);\n human.config.hand.scoreThreshold = parseFloat(val);\n human.config.body.scoreThreshold = parseFloat(val);\n });\n menu.process.addRange('overlap', human.config.face.detector, 'iouThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.iouThreshold = parseFloat(val);\n human.config.hand.iouThreshold = parseFloat(val);\n });\n menu.process.addBool('detection rotation', human.config.face.detector, 'rotation', (val) => {\n human.config.face.detector.rotation = val;\n human.config.hand.rotation = val;\n });\n menu.process.addHTML('
');\n menu.process.addButton('process sample images', 'process images', () => detectSampleImages());\n menu.process.addHTML('
');\n menu.process.addChart('FPS', 'FPS');\n\n menu.models = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[3] });\n menu.models.addBool('face detect', human.config.face, 'enabled', (val) => human.config.face.enabled = val);\n menu.models.addBool('face mesh', human.config.face.mesh, 'enabled', (val) => human.config.face.mesh.enabled = val);\n menu.models.addBool('face iris', human.config.face.iris, 'enabled', (val) => human.config.face.iris.enabled = val);\n menu.models.addBool('face age', human.config.face.age, 'enabled', (val) => human.config.face.age.enabled = val);\n menu.models.addBool('face gender', human.config.face.gender, 'enabled', (val) => human.config.face.gender.enabled = val);\n menu.models.addBool('face emotion', human.config.face.emotion, 'enabled', (val) => human.config.face.emotion.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('body pose', human.config.body, 'enabled', (val) => human.config.body.enabled = val);\n menu.models.addBool('hand pose', human.config.hand, 'enabled', (val) => human.config.hand.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('gestures', human.config.gesture, 'enabled', (val) => human.config.gesture.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('face compare', human.config.face.embedding, 'enabled', (val) => {\n human.config.face.embedding.enabled = val;\n original = null;\n });\n\n document.getElementById('btnDisplay').addEventListener('click', (evt) => menu.display.toggle(evt));\n document.getElementById('btnImage').addEventListener('click', (evt) => menu.image.toggle(evt));\n document.getElementById('btnProcess').addEventListener('click', (evt) => menu.process.toggle(evt));\n document.getElementById('btnModel').addEventListener('click', (evt) => menu.models.toggle(evt));\n document.getElementById('btnStart').addEventListener('click', () => detectVideo());\n document.getElementById('play').addEventListener('click', () => detectVideo());\n}\n\nasync function drawWarmup(res) {\n const canvas = document.getElementById('canvas');\n canvas.width = res.canvas.width;\n canvas.height = res.canvas.height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(res.canvas, 0, 0, res.canvas.width, res.canvas.height, 0, 0, canvas.width, canvas.height);\n await human.draw.all(canvas, res);\n}\n\nasync function main() {\n log('Demo starting ...');\n setupMenu();\n document.getElementById('log').innerText = `Human: version ${human.version}`;\n if (ui.modelsPreload && !ui.useWorker) {\n status('loading');\n await human.load(userConfig); // this is not required, just pre-loads all models\n const loaded = Object.keys(human.models).filter((a) => human.models[a]);\n log('Demo loaded models:', loaded);\n }\n if (!ui.useWorker) {\n status('initializing');\n const res = await human.warmup(userConfig); // this is not required, just pre-warms all models for faster initial inference\n if (res && res.canvas && ui.drawWarmup) await drawWarmup(res);\n }\n status('human: ready');\n document.getElementById('loader').style.display = 'none';\n document.getElementById('play').style.display = 'block';\n log('Demo ready...');\n}\n\nwindow.onload = main;\nwindow.onresize = setupCamera;\n"], - "mappings": "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GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC4FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GE/UjB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,8BAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,yBAAA,IAAA,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CAAC,KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IC6DR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GExTjB,GAAY,IAAZ,AAAA,UAAY,EAAQ,CAClB,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,UAAA,GAAA,cALU,IAAA,IAAQ,KASpB,GAAY,IAAZ,AAAA,UAAY,EAAiB,CAC3B,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAA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,EAAc,EAAiB,IAAuB,CAC/D,GAAM,GAA2B,EAC3B,CAAC,KAAA,GAAQ,EACf,MAAO,CAAC,MAAO,IAAM,GAAM,EAAI,MCItB,GAA2C,CACtD,WAAY,GACZ,aAAc,CAAC,cACf,SAAU,CAAC,EAAY,IAAmB,CACxC,GAAM,CAAC,GAAc,EAKrB,MAAO,CAAC,EAHK,IACJ,GAAoB,EAAI,MAMrC,YAA+C,EAAM,EAAiB,CAIpE,GAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GACvB,EAAa,GAAa,EAAS,GAAO,EAAG,UAC3C,EAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCpOnB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,WAAA,IAAA,GAAA,OAAA,IAAA,GAAA,S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AmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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CH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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", + "sourcesContent": ["import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\n// Detect the global object, even if operating in strict mode.\n// http://stackoverflow.com/a/14387057/265298\nvar global = (0, eval)('this'),\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return embedding.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: String, source: String | undefined, embedding: Array }>, threshold = 0): { name: String, source: String | undefined, simmilarity: Number, embedding: Array } {\n return embedding.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = {};\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2): Number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: Array, threshold = 0) {\n let best = { simmilarity: 0, name: '', source: '', embedding: [] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = simmilarity(embedding, f.embedding);\n if (perc > threshold && perc > best.simmilarity) best = { ...f, simmilarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n", "let instance = 0;\nlet CSScreated = false;\n\nlet theme = {\n background: 'darkslategray',\n hover: 'lightgray',\n itemBackground: 'black',\n itemColor: 'white',\n buttonBackground: 'lightblue',\n buttonHover: 'lightgreen',\n checkboxOn: 'lightgreen',\n checkboxOff: 'lightcoral',\n rangeBackground: 'lightblue',\n rangeLabel: 'white',\n chartColor: 'lightblue',\n};\n\nfunction createCSS() {\n if (CSScreated) return;\n const css = `\n :root { --rounded: 0.1rem; }\n .menu { position: absolute; top: 0rem; right: 0; width: max-content; padding: 0 0.2rem 0 0.2rem; line-height: 1.8rem; z-index: 10;\n box-shadow: 0 0 8px dimgrey; background: ${theme.background}; border-radius: var(--rounded); border-color: black; border-style: solid; border-width: thin; }\n\n .menu:hover { box-shadow: 0 0 8px ${theme.hover}; }\n .menu-container { display: block; max-height: 100vh; }\n .menu-container-fadeout { max-height: 0; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-container-fadein { max-height: 100vh; overflow: hidden; transition: max-height, 0.5s ease; }\n .menu-item { display: flex; white-space: nowrap; padding: 0.2rem; cursor: default; width: 100%; }\n .menu-title { cursor: pointer; }\n .menu-hr { margin: 0.2rem; border: 1px solid rgba(0, 0, 0, 0.5) }\n .menu-label { padding: 0; font-weight: 800; }\n\n .menu-list { margin-right: 0.8rem; }\n select:focus { outline: none; }\n .menu-list-item { background: ${theme.itemBackground}; color: ${theme.itemColor}; border: none; padding: 0.2rem; font-family: inherit;\n font-variant: inherit; border-radius: var(--rounded); font-weight: 800; }\n\n .menu-chart-title { padding: 0; font-size: 0.8rem; font-weight: 800; align-items: center}\n .menu-chart-canvas { background: transparent; margin: 0.2rem 0 0.2rem 0.6rem; }\n \n .menu-button { border: 0; background: ${theme.buttonBackground}; width: -webkit-fill-available; padding: 8px; margin: 8px; cursor: pointer; box-shadow: 4px 4px 4px 0 dimgrey;\n border-radius: var(--rounded); justify-content: center; font-family: inherit; font-variant: inherit; font-size: 1rem; font-weight: 800; }\n .menu-button:hover { background: ${theme.buttonHover}; box-shadow: 4px 4px 4px 0 black; }\n .menu-button:focus { outline: none; }\n\n .menu-checkbox { width: 2.8rem; height: 1rem; background: ${theme.itemBackground}; margin: 0.5rem 0.5rem 0 0; position: relative; border-radius: var(--rounded); }\n .menu-checkbox:after { content: 'OFF'; color: ${theme.checkboxOff}; position: absolute; right: 0.2rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox:before { content: 'ON'; color: ${theme.checkboxOn}; position: absolute; left: 0.3rem; top: -0.4rem; font-weight: 800; font-size: 0.5rem; }\n .menu-checkbox-label { width: 1.3rem; height: 0.8rem; cursor: pointer; position: absolute; top: 0.1rem; left: 0.1rem; z-index: 1; background: ${theme.checkboxOff};\n border-radius: var(--rounded); transition: left 0.6s ease; }\n\n input[type=checkbox] { visibility: hidden; }\n input[type=checkbox]:checked + label { left: 1.4rem; background: ${theme.checkboxOn}; }\n\n .menu-range { margin: 0.2rem 0.5rem 0 0; width: 3.5rem; background: transparent; color: ${theme.rangeBackground}; }\n .menu-range:before { color: ${theme.rangeLabel}; margin: 0 0.4rem 0 0; font-weight: 800; font-size: 0.6rem; position: relative; top: 0.3rem; content: attr(value); }\n\n input[type=range] { -webkit-appearance: none; }\n input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-moz-range-track { width: 100%; height: 1rem; cursor: pointer; background: ${theme.itemBackground}; border-radius: var(--rounded); border: 1px; }\n input[type=range]::-webkit-slider-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n input[type=range]::-moz-range-thumb { border: 1px solid #000000; margin-top: 0.05rem; height: 0.9rem; width: 1rem; border-radius: var(--rounded); background: ${theme.rangeBackground}; cursor: pointer; -webkit-appearance: none; }\n\n .svg-background { fill:darkslategrey; cursor:pointer; opacity: 0.6; }\n .svg-foreground { fill:white; cursor:pointer; opacity: 0.8; }\n `;\n const el = document.createElement('style');\n el.innerHTML = css;\n document.getElementsByTagName('head')[0].appendChild(el);\n CSScreated = true;\n}\n\nclass Menu {\n constructor(parent, title, position, userTheme) {\n if (userTheme) theme = { ...theme, ...userTheme };\n createCSS();\n this.createMenu(parent, title, position);\n this.id = 0;\n this.instance = instance;\n instance++;\n this._maxFPS = 0;\n this.hidden = 0;\n }\n\n createMenu(parent, title = '', position = { top: null, left: null, bottom: null, right: null }) {\n this.menu = document.createElement('div');\n this.menu.id = `menu-${instance}`;\n this.menu.className = 'menu';\n if (position) {\n if (position.top) this.menu.style.top = position.top;\n if (position.bottom) this.menu.style.bottom = position.bottom;\n if (position.left) this.menu.style.left = position.left;\n if (position.right) this.menu.style.right = position.right;\n }\n\n this.container = document.createElement('div');\n this.container.id = `menu-container-${instance}`;\n this.container.className = 'menu-container menu-container-fadein';\n\n // set menu title with pulldown arrow\n const elTitle = document.createElement('div');\n elTitle.className = 'menu-title';\n elTitle.id = `menu-title-${instance}`;\n const svg = `\n \n \n `;\n if (title) elTitle.innerHTML = `${title}${svg}`;\n this.menu.appendChild(elTitle);\n elTitle.addEventListener('click', () => {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n this.menu.style.borderStyle = this.container.classList.contains('menu-container-fadeout') ? 'none' : 'solid';\n });\n\n this.menu.appendChild(this.container);\n if (typeof parent === 'object') parent.appendChild(this.menu);\n else document.getElementById(parent).appendChild(this.menu);\n }\n\n get newID() {\n this.id++;\n return `menu-${this.instance}-${this.id}`;\n }\n\n get ID() {\n return `menu-${this.instance}-${this.id}`;\n }\n\n get width() {\n return this.menu.offsetWidth;\n }\n\n get height() {\n return this.menu.offsetHeight;\n }\n\n hide() {\n if (this.container.classList.contains('menu-container-fadein')) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n }\n }\n\n visible() {\n return (this.container.classList.contains('menu-container-fadein'));\n }\n\n toggle(evt) {\n this.container.classList.toggle('menu-container-fadeout');\n this.container.classList.toggle('menu-container-fadein');\n if (this.container.classList.contains('menu-container-fadein') && evt) {\n const x = evt.x || (evt.touches && evt.touches[0] ? evt.touches[0].pageX : null);\n // const y = evt.y || (evt.touches && evt.touches[0] ? evt.touches[0].pageY : null);\n if (x) this.menu.style.left = `${x - (this.menu.offsetWidth / 2)}px`;\n // if (y) this.menu.style.top = '5.5rem'; // `${evt.y + 55}px`;\n if (this.menu.offsetLeft < 0) this.menu.style.left = 0;\n if ((this.menu.offsetLeft + this.menu.offsetWidth) > window.innerWidth) {\n this.menu.style.left = null;\n this.menu.style.right = 0;\n }\n this.menu.style.borderStyle = 'solid';\n } else {\n this.menu.style.borderStyle = 'none';\n }\n }\n\n addTitle(title) {\n const el = document.createElement('div');\n el.className = 'menu-title';\n el.id = this.newID;\n el.innerHTML = title;\n this.menu.appendChild(el);\n el.addEventListener('click', () => {\n this.hidden = !this.hidden;\n const all = document.getElementsByClassName('menu');\n for (const item of all) {\n item.style.display = this.hidden ? 'none' : 'block';\n }\n });\n return el;\n }\n\n addLabel(title) {\n const el = document.createElement('div');\n el.className = 'menu-item menu-label';\n el.id = this.newID;\n el.innerHTML = title;\n this.container.appendChild(el);\n return el;\n }\n\n addBool(title, object, variable, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `
${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = evt.target.checked;\n if (callback) callback(evt.target.checked);\n });\n return el;\n }\n\n async addList(title, items, selected, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n let options = '';\n for (const item of items) {\n const def = item === selected ? 'selected' : '';\n options += ``;\n }\n el.innerHTML = `
${title}`;\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n if (callback) callback(items[evt.target.selectedIndex]);\n });\n return el;\n }\n\n addRange(title, object, variable, min, max, step, callback) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n el.addEventListener('change', (evt) => {\n object[variable] = parseInt(evt.target.value) === parseFloat(evt.target.value) ? parseInt(evt.target.value) : parseFloat(evt.target.value);\n evt.target.setAttribute('value', evt.target.value);\n if (callback) callback(evt.target.value);\n });\n el.input = el.children[0];\n return el;\n }\n\n addHTML(html) {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = this.newID;\n if (html) el.innerHTML = html;\n this.container.appendChild(el);\n return el;\n }\n\n addButton(titleOn, titleOff, callback) {\n const el = document.createElement('button');\n el.className = 'menu-item menu-button';\n el.style.fontFamily = document.body.style.fontFamily;\n el.style.fontSize = document.body.style.fontSize;\n el.style.fontVariant = document.body.style.fontVariant;\n el.type = 'button';\n el.id = this.newID;\n el.innerText = titleOn;\n this.container.appendChild(el);\n el.addEventListener('click', () => {\n if (el.innerText === titleOn) el.innerText = titleOff;\n else el.innerText = titleOn;\n if (callback) callback(el.innerText !== titleOn);\n });\n return el;\n }\n\n addValue(title, val, suffix = '') {\n const el = document.createElement('div');\n el.className = 'menu-item';\n el.id = `menu-val-${title}`;\n el.innerText = `${title}: ${val}${suffix}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n updateValue(title, val, suffix = '') {\n const el = document.getElementById(`menu-val-${title}`);\n if (el) el.innerText = `${title}: ${val}${suffix}`;\n else this.addValue(title, val);\n }\n\n addChart(title, id, width = 150, height = 40, color) {\n if (color) theme.chartColor = color;\n const el = document.createElement('div');\n el.className = 'menu-item menu-chart-title';\n el.id = this.newID;\n el.innerHTML = `${title}`;\n this.container.appendChild(el);\n return el;\n }\n\n // eslint-disable-next-line class-methods-use-this\n async updateChart(id, values) {\n if (!values || (values.length === 0)) return;\n const canvas = document.getElementById(`menu-canvas-${id}`);\n if (!canvas) return;\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = theme.background;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n const width = canvas.width / values.length;\n const max = 1 + Math.max(...values);\n const height = canvas.height / max;\n for (let i = 0; i < values.length; i++) {\n const gradient = ctx.createLinearGradient(0, (max - values[i]) * height, 0, 0);\n gradient.addColorStop(0.1, theme.chartColor);\n gradient.addColorStop(0.4, theme.background);\n ctx.fillStyle = gradient;\n ctx.fillRect(i * width, 0, width - 4, canvas.height);\n ctx.fillStyle = theme.background;\n ctx.font = `${width / 1.5}px \"Segoe UI\"`;\n ctx.fillText(Math.round(values[i]), i * width + 1, canvas.height - 1, width - 1);\n }\n }\n}\n\nexport default Menu;\n", "/* eslint-disable max-len */\n\n// based on: https://github.com/munrocket/gl-bench\n\nconst UICSS = `\n #gl-bench { position: absolute; right: 1rem; bottom: 1rem; z-index:1000; -webkit-user-select: none; -moz-user-select: none; user-select: none; }\n #gl-bench div { position: relative; display: block; margin: 4px; padding: 0 2px 0 2px; background: darkslategray; border-radius: 0.1rem; cursor: pointer; opacity: 0.9; }\n #gl-bench svg { height: 60px; margin: 0 0px 0px 4px; }\n #gl-bench text { font-size: 16px; font-family: 'Lato', 'Segoe UI'; dominant-baseline: middle; text-anchor: middle; }\n #gl-bench .gl-mem { font-size: 12px; fill: white; }\n #gl-bench .gl-fps { font-size: 13px; fill: white; }\n #gl-bench line { stroke-width: 5; stroke: white; stroke-linecap: round; }\n #gl-bench polyline { fill: none; stroke: white; stroke-linecap: round; stroke-linejoin: round; stroke-width: 3.5; }\n #gl-bench rect { fill: black; }\n #gl-bench .opacity { stroke: black; }\n `;\n\nconst UISVG = `\n
\n \n 00 FPS\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n `;\n\nclass GLBench {\n /** GLBench constructor\n * @param { WebGLRenderingContext | WebGL2RenderingContext } gl context\n * @param { Object | undefined } settings additional settings\n */\n constructor(gl, settings = {}) {\n this.css = UICSS;\n this.svg = UISVG;\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.paramLogger = () => {};\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.chartLogger = () => {};\n this.chartLen = 20;\n this.chartHz = 20;\n\n this.names = [];\n this.cpuAccums = [];\n this.gpuAccums = [];\n this.activeAccums = [];\n this.chart = new Array(this.chartLen);\n this.now = () => ((performance && performance.now) ? performance.now() : Date.now());\n this.updateUI = () => {\n [].forEach.call(this.nodes['gl-gpu-svg'], (node) => node.style.display = this.trackGPU ? 'inline' : 'none');\n };\n\n Object.assign(this, settings);\n this.detected = 0;\n this.finished = [];\n this.isFramebuffer = 0;\n this.frameId = 0;\n\n // 120hz device detection\n let rafId; let n = 0; let\n t0;\n const loop = (t) => {\n if (++n < 20) {\n rafId = requestAnimationFrame(loop);\n } else {\n this.detected = Math.ceil(1e3 * n / (t - t0) / 70);\n cancelAnimationFrame(rafId);\n }\n if (!t0) t0 = t;\n };\n requestAnimationFrame(loop);\n\n // attach gpu profilers\n if (gl) {\n const glFinish = async (t, activeAccums) => Promise.resolve(setTimeout(() => {\n gl.getError();\n const dt = this.now() - t;\n activeAccums.forEach((active, i) => {\n if (active) this.gpuAccums[i] += dt;\n });\n }, 0));\n\n const addProfiler = (fn, self, target) => {\n const t = self.now();\n // eslint-disable-next-line prefer-rest-params\n fn.apply(target, arguments);\n if (self.trackGPU) self.finished.push(glFinish(t, self.activeAccums.slice(0)));\n };\n\n /* ['drawArrays', 'drawElements', 'drawArraysInstanced', 'drawBuffers', 'drawElementsInstanced', 'drawRangeElements'].forEach((fn) => {\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n }\n });\n */\n const fn = 'drawElements';\n if (gl[fn]) {\n gl[fn] = addProfiler(gl[fn], this, gl);\n } else {\n // eslint-disable-next-line no-console\n console.log('bench: cannot attach to webgl function');\n }\n\n /*\n gl.getExtension = ((fn, self) => {\n // eslint-disable-next-line prefer-rest-params\n const ext = fn.apply(gl, arguments);\n if (ext) {\n ['drawElementsInstancedANGLE', 'drawBuffersWEBGL'].forEach((fn2) => {\n if (ext[fn2]) {\n ext[fn2] = addProfiler(ext[fn2], self, ext);\n }\n });\n }\n return ext;\n })(gl.getExtension, this);\n */\n }\n\n // init ui and ui loggers\n if (!this.withoutUI) {\n if (!this.dom) this.dom = document.body;\n const elm = document.createElement('div');\n elm.id = 'gl-bench';\n this.dom.appendChild(elm);\n this.dom.insertAdjacentHTML('afterbegin', '');\n this.dom = elm;\n this.dom.addEventListener('click', () => {\n this.trackGPU = !this.trackGPU;\n this.updateUI();\n });\n\n this.paramLogger = ((logger, dom, names) => {\n const classes = ['gl-cpu', 'gl-gpu', 'gl-mem', 'gl-fps', 'gl-gpu-svg', 'gl-chart'];\n const nodes = { ...classes };\n classes.forEach((c) => nodes[c] = dom.getElementsByClassName(c));\n this.nodes = nodes;\n return (i, cpu, gpu, mem, fps, totalTime, frameId) => {\n nodes['gl-cpu'][i].style.strokeDasharray = (cpu * 0.27).toFixed(0) + ' 100';\n nodes['gl-gpu'][i].style.strokeDasharray = (gpu * 0.27).toFixed(0) + ' 100';\n // eslint-disable-next-line no-nested-ternary\n nodes['gl-mem'][i].innerHTML = names[i] ? names[i] : (mem ? 'mem: ' + mem.toFixed(0) + 'mb' : '');\n nodes['gl-fps'][i].innerHTML = 'FPS: ' + fps.toFixed(1);\n logger(names[i], cpu, gpu, mem, fps, totalTime, frameId);\n };\n })(this.paramLogger, this.dom, this.names);\n\n this.chartLogger = ((logger, dom) => {\n const nodes = { 'gl-chart': dom.getElementsByClassName('gl-chart') };\n return (i, chart, circularId) => {\n let points = '';\n const len = chart.length;\n for (let j = 0; j < len; j++) {\n const id = (circularId + j + 1) % len;\n if (chart[id] !== undefined) points = points + ' ' + (60 * j / (len - 1)).toFixed(1) + ',' + (45 - chart[id] * 0.5 / this.detected).toFixed(1);\n }\n nodes['gl-chart'][i].setAttribute('points', points);\n logger(this.names[i], chart, circularId);\n };\n })(this.chartLogger, this.dom);\n }\n }\n\n /**\n * Explicit UI add\n * @param { string | undefined } name\n */\n addUI(name) {\n if (this.names.indexOf(name) === -1) {\n this.names.push(name);\n if (this.dom) {\n this.dom.insertAdjacentHTML('beforeend', this.svg);\n this.updateUI();\n }\n this.cpuAccums.push(0);\n this.gpuAccums.push(0);\n this.activeAccums.push(false);\n }\n }\n\n /**\n * Increase frameID\n * @param { number | undefined } now\n */\n nextFrame(now) {\n this.frameId++;\n const t = now || this.now();\n\n // params\n if (this.frameId <= 1) {\n this.paramFrame = this.frameId;\n this.paramTime = t;\n } else {\n const duration = t - this.paramTime;\n if (duration >= 1e3) {\n const frameCount = this.frameId - this.paramFrame;\n const fps = frameCount / duration * 1e3;\n for (let i = 0; i < this.names.length; i++) {\n const cpu = this.cpuAccums[i] / duration * 100;\n const gpu = this.gpuAccums[i] / duration * 100;\n const mem = (performance && performance.memory) ? performance.memory.usedJSHeapSize / (1 << 20) : 0;\n this.paramLogger(i, cpu, gpu, mem, fps, duration, frameCount);\n this.cpuAccums[i] = 0;\n Promise.all(this.finished).then(() => {\n this.gpuAccums[i] = 0;\n this.finished = [];\n });\n }\n this.paramFrame = this.frameId;\n this.paramTime = t;\n }\n }\n\n // chart\n if (!this.detected || !this.chartFrame) {\n this.chartFrame = this.frameId;\n this.chartTime = t;\n this.circularId = 0;\n } else {\n const timespan = t - this.chartTime;\n let hz = this.chartHz * timespan / 1e3;\n while (--hz > 0 && this.detected) {\n const frameCount = this.frameId - this.chartFrame;\n const fps = frameCount / timespan * 1e3;\n this.chart[this.circularId % this.chartLen] = fps;\n for (let i = 0; i < this.names.length; i++) this.chartLogger(i, this.chart, this.circularId);\n this.circularId++;\n this.chartFrame = this.frameId;\n this.chartTime = t;\n }\n }\n }\n\n /**\n * Begin named measurement\n * @param { string | undefined } name\n */\n begin(name) {\n this.updateAccums(name);\n }\n\n /**\n * End named measure\n * @param { string | undefined } name\n */\n end(name) {\n this.updateAccums(name);\n }\n\n updateAccums(name) {\n let nameId = this.names.indexOf(name);\n if (nameId === -1) {\n nameId = this.names.length;\n this.addUI(name);\n }\n\n const t = this.now();\n const dt = t - this.t0;\n for (let i = 0; i < nameId + 1; i++) {\n if (this.activeAccums[i]) this.cpuAccums[i] += dt;\n }\n this.activeAccums[nameId] = !this.activeAccums[nameId];\n this.t0 = t;\n }\n}\n\nexport default GLBench;\n", "// import Human from '../dist/human.esm.js'; // equivalent of @vladmandic/human\nimport Human from '../src/human';\nimport Menu from './menu.js';\nimport GLBench from './gl-bench.js';\n\nconst userConfig = { backend: 'webgl' }; // add any user configuration overrides\n\n/*\nconst userConfig = {\n backend: 'wasm',\n async: false,\n warmup: 'face',\n videoOptimized: false,\n face: { enabled: true, mesh: { enabled: true }, iris: { enabled: false }, age: { enabled: false }, gender: { enabled: false }, emotion: { enabled: false }, embedding: { enabled: false } },\n hand: { enabled: false },\n gesture: { enabled: false },\n body: { enabled: false, modelPath: '../models/blazepose.json' },\n};\n*/\n\nconst human = new Human(userConfig);\n\n// ui options\nconst ui = {\n baseBackground: 'rgba(50, 50, 50, 1)', // 'grey'\n crop: true, // video mode crop to size or leave full frame\n columns: 2, // when processing sample images create this many columns\n facing: true, // camera facing front or back\n useWorker: false, // use web workers for processing\n worker: 'worker.js',\n samples: ['../assets/sample6.jpg', '../assets/sample1.jpg', '../assets/sample4.jpg', '../assets/sample5.jpg', '../assets/sample3.jpg', '../assets/sample2.jpg'],\n compare: '../assets/sample-me.jpg',\n console: true, // log messages to browser console\n maxFPSframes: 10, // keep fps history for how many frames\n modelsPreload: true, // preload human models on startup\n busy: false, // internal camera busy flag\n menuWidth: 0, // internal\n menuHeight: 0, // internal\n camera: {}, // internal, holds details of webcam details\n detectFPS: [], // internal, holds fps values for detection performance\n drawFPS: [], // internal, holds fps values for draw performance\n buffered: false, // experimental, should output be buffered between frames\n drawWarmup: false, // debug only, should warmup image processing be displayed on startup\n drawThread: null, // internl, perform draw operations in a separate thread\n detectThread: null, // internl, perform detect operations in a separate thread\n framesDraw: 0, // internal, statistics on frames drawn\n framesDetect: 0, // internal, statistics on frames detected\n bench: true, // show gl fps benchmark window\n lastFrame: 0, // time of last frame processing\n};\n\n// global variables\nconst menu = {};\nlet worker;\nlet bench;\nlet lastDetectedResult = {};\n\n// helper function: translates json to human readable string\nfunction str(...msg) {\n if (!Array.isArray(msg)) return msg;\n let line = '';\n for (const entry of msg) {\n if (typeof entry === 'object') line += JSON.stringify(entry).replace(/{|}|\"|\\[|\\]/g, '').replace(/,/g, ', ');\n else line += entry;\n }\n return line;\n}\n\n// helper function: wrapper around console output\nfunction log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (ui.console) console.log(ts, ...msg);\n}\n\nfunction status(msg) {\n // eslint-disable-next-line no-console\n const div = document.getElementById('status');\n if (div) div.innerText = msg;\n}\n\nlet original;\nasync function calcSimmilariry(result) {\n document.getElementById('compare-container').style.display = human.config.face.embedding.enabled ? 'block' : 'none';\n if (!human.config.face.embedding.enabled) return;\n if (!(result?.face?.length > 0) || (result?.face[0]?.embedding?.length >= 64)) return;\n if (!original) {\n original = result;\n if (result.face[0].tensor) {\n const enhanced = human.enhance(result.face[0]);\n if (enhanced) {\n const c = document.getElementById('orig');\n const squeeze = enhanced.squeeze();\n human.tf.browser.toPixels(squeeze, c);\n enhanced.dispose();\n squeeze.dispose();\n }\n } else {\n document.getElementById('compare-canvas').getContext('2d').drawImage(original.canvas, 0, 0, 200, 200);\n }\n }\n const simmilarity = human.simmilarity(original?.face[0]?.embedding, result?.face[0]?.embedding);\n document.getElementById('simmilarity').innerText = `simmilarity: ${Math.trunc(1000 * simmilarity) / 10}%`;\n}\n\n// draws processed results and starts processing of a next frame\nlet lastDraw = performance.now();\nasync function drawResults(input) {\n const result = lastDetectedResult;\n const canvas = document.getElementById('canvas');\n\n // update draw fps data\n ui.drawFPS.push(1000 / (performance.now() - lastDraw));\n if (ui.drawFPS.length > ui.maxFPSframes) ui.drawFPS.shift();\n lastDraw = performance.now();\n\n // draw fps chart\n await menu.process.updateChart('FPS', ui.detectFPS);\n\n // get updated canvas\n if (ui.buffered || !result.canvas) {\n const image = await human.image(input);\n result.canvas = image.canvas;\n human.tf.dispose(image.tensor);\n }\n\n // draw image from video\n const ctx = canvas.getContext('2d');\n ctx.fillStyle = ui.baseBackground;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n if (result.canvas) {\n if (result.canvas.width !== canvas.width) canvas.width = result.canvas.width;\n if (result.canvas.height !== canvas.height) canvas.height = result.canvas.height;\n ctx.drawImage(result.canvas, 0, 0, result.canvas.width, result.canvas.height, 0, 0, result.canvas.width, result.canvas.height);\n } else {\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n }\n\n // draw all results\n human.draw.face(canvas, result.face);\n human.draw.body(canvas, result.body);\n human.draw.hand(canvas, result.hand);\n human.draw.gesture(canvas, result.gesture);\n await calcSimmilariry(result);\n\n // update log\n const engine = human.tf.engine();\n const gpu = engine.backendInstance ? `gpu: ${(engine.backendInstance.numBytesInGPU ? engine.backendInstance.numBytesInGPU : 0).toLocaleString()} bytes` : '';\n const memory = `system: ${engine.state.numBytes.toLocaleString()} bytes ${gpu} | tensors: ${engine.state.numTensors.toLocaleString()}`;\n const processing = result.canvas ? `processing: ${result.canvas.width} x ${result.canvas.height}` : '';\n const avgDetect = Math.trunc(10 * ui.detectFPS.reduce((a, b) => a + b, 0) / ui.detectFPS.length) / 10;\n const avgDraw = Math.trunc(10 * ui.drawFPS.reduce((a, b) => a + b, 0) / ui.drawFPS.length) / 10;\n const warning = (ui.detectFPS.length > 5) && (avgDetect < 5) ? 'warning: your performance is low: try switching to higher performance backend, lowering resolution or disabling some models' : '';\n document.getElementById('log').innerHTML = `\n video: ${ui.camera.name} | facing: ${ui.camera.facing} | screen: ${window.innerWidth} x ${window.innerHeight} camera: ${ui.camera.width} x ${ui.camera.height} ${processing}
\n backend: ${human.tf.getBackend()} | ${memory}
\n performance: ${str(result.performance)}ms FPS process:${avgDetect} refresh:${avgDraw}
\n ${warning}
\n `;\n\n ui.framesDraw++;\n ui.lastFrame = performance.now();\n // if buffered, immediate loop but limit frame rate although it's going to run slower as JS is singlethreaded\n if (ui.buffered) {\n ui.drawThread = requestAnimationFrame(() => drawResults(input, canvas));\n } else if (!ui.buffered && ui.drawThread) {\n log('stopping buffered refresh');\n cancelAnimationFrame(ui.drawThread);\n ui.drawThread = null;\n }\n}\n\n// setup webcam\nasync function setupCamera() {\n if (ui.busy) return null;\n ui.busy = true;\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n const output = document.getElementById('log');\n const live = video.srcObject ? ((video.srcObject.getVideoTracks()[0].readyState === 'live') && (video.readyState > 2) && (!video.paused)) : false;\n let msg = '';\n status('setting up camera');\n // setup webcam. note that navigator.mediaDevices requires that page is accessed via https\n if (!navigator.mediaDevices) {\n msg = 'camera access not supported';\n output.innerText += `\\n${msg}`;\n log(msg);\n status(msg);\n ui.busy = false;\n return msg;\n }\n let stream;\n const constraints = {\n audio: false,\n video: { facingMode: ui.facing ? 'user' : 'environment', resizeMode: ui.crop ? 'crop-and-scale' : 'none' },\n };\n if (window.innerWidth > window.innerHeight) constraints.video.width = { ideal: window.innerWidth };\n else constraints.video.height = { ideal: (window.innerHeight - document.getElementById('menubar').offsetHeight) };\n try {\n stream = await navigator.mediaDevices.getUserMedia(constraints);\n } catch (err) {\n if (err.name === 'PermissionDeniedError' || err.name === 'NotAllowedError') msg = 'camera permission denied';\n else if (err.name === 'SourceUnavailableError') msg = 'camera not available';\n else msg = `camera error: ${err.message || err}`;\n output.innerText += `\\n${msg}`;\n status(msg);\n log('camera error:', err);\n ui.busy = false;\n return msg;\n }\n if (stream) video.srcObject = stream;\n else {\n ui.busy = false;\n return 'camera stream empty';\n }\n const track = stream.getVideoTracks()[0];\n const settings = track.getSettings();\n // log('camera constraints:', constraints, 'window:', { width: window.innerWidth, height: window.innerHeight }, 'settings:', settings, 'track:', track);\n ui.camera = { name: track.label?.toLowerCase(), width: settings.width, height: settings.height, facing: settings.facingMode === 'user' ? 'front' : 'back' };\n return new Promise((resolve) => {\n video.onloadeddata = async () => {\n video.width = video.videoWidth;\n video.height = video.videoHeight;\n canvas.width = video.width;\n canvas.height = video.height;\n canvas.style.width = canvas.width > canvas.height ? '100vw' : '';\n canvas.style.height = canvas.width > canvas.height ? '' : '100vh';\n ui.menuWidth.input.setAttribute('value', video.width);\n ui.menuHeight.input.setAttribute('value', video.height);\n // silly font resizing for paint-on-canvas since viewport can be zoomed\n if (live) video.play();\n // eslint-disable-next-line no-use-before-define\n if (live && !ui.detectThread) runHumanDetect(video, canvas);\n ui.busy = false;\n // do once more because onresize events can be delayed or skipped\n // if (video.width > window.innerWidth) await setupCamera();\n status('');\n resolve();\n };\n });\n}\n\nfunction initPerfMonitor() {\n if (!bench) {\n const gl = null;\n // cosnt gl = human.tf.engine().backend.gpgpu.gl;\n // if (!gl) log('bench cannot get tensorflow webgl context');\n bench = new GLBench(gl, {\n trackGPU: false, // this is really slow\n chartHz: 20,\n chartLen: 20,\n });\n bench.begin();\n }\n}\n\n// wrapper for worker.postmessage that creates worker if one does not exist\nfunction webWorker(input, image, canvas, timestamp) {\n if (!worker) {\n // create new webworker and add event handler only once\n log('creating worker thread');\n worker = new Worker(ui.worker, { type: 'module' });\n // after receiving message from webworker, parse&draw results and send new frame for processing\n worker.addEventListener('message', (msg) => {\n if (msg.data.result.performance && msg.data.result.performance.total) ui.detectFPS.push(1000 / msg.data.result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n lastDetectedResult = msg.data.result;\n ui.framesDetect++;\n if (!ui.drawThread) drawResults(input);\n // eslint-disable-next-line no-use-before-define\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n });\n }\n // pass image data as arraybuffer to worker by reference to avoid copy\n worker.postMessage({ image: image.data.buffer, width: canvas.width, height: canvas.height, userConfig }, [image.data.buffer]);\n}\n\n// main processing function when input is webcam, can use direct invocation or web worker\nfunction runHumanDetect(input, canvas, timestamp) {\n // if live video\n const live = input.srcObject && (input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState > 2) && (!input.paused);\n if (!live && input.srcObject) {\n // stop ui refresh\n if (ui.drawThread) cancelAnimationFrame(ui.drawThread);\n if (ui.detectThread) cancelAnimationFrame(ui.detectThread);\n ui.drawThread = null;\n ui.detectThread = null;\n // if we want to continue and camera not ready, retry in 0.5sec, else just give up\n if (input.paused) log('camera paused');\n else if ((input.srcObject.getVideoTracks()[0].readyState === 'live') && (input.readyState <= 2)) setTimeout(() => runHumanDetect(input, canvas), 500);\n else log(`camera not ready: track state: ${input.srcObject?.getVideoTracks()[0].readyState} stream state: ${input.readyState}`);\n clearTimeout(ui.drawThread);\n ui.drawThread = null;\n log('frame statistics: process:', ui.framesDetect, 'refresh:', ui.framesDraw);\n log('memory', human.tf.engine().memory());\n return;\n }\n status('');\n if (ui.useWorker) {\n // get image data from video as we cannot send html objects to webworker\n const offscreen = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(canvas.width, canvas.height) : document.createElement('canvas');\n offscreen.width = canvas.width;\n offscreen.height = canvas.height;\n const ctx = offscreen.getContext('2d');\n ctx.drawImage(input, 0, 0, input.width, input.height, 0, 0, canvas.width, canvas.height);\n const data = ctx.getImageData(0, 0, canvas.width, canvas.height);\n // perform detection in worker\n webWorker(input, data, canvas, userConfig, timestamp);\n } else {\n human.detect(input, userConfig).then((result) => {\n if (result.performance && result.performance.total) ui.detectFPS.push(1000 / result.performance.total);\n if (ui.detectFPS.length > ui.maxFPSframes) ui.detectFPS.shift();\n if (ui.bench) {\n if (!bench) initPerfMonitor();\n bench.nextFrame(timestamp);\n }\n if (document.getElementById('gl-bench')) document.getElementById('gl-bench').style.display = ui.bench ? 'block' : 'none';\n if (result.error) {\n log(result.error);\n document.getElementById('log').innerText += `\\nHuman error: ${result.error}`;\n } else {\n lastDetectedResult = result;\n if (!ui.drawThread) drawResults(input);\n ui.framesDetect++;\n ui.detectThread = requestAnimationFrame((now) => runHumanDetect(input, canvas, now));\n }\n });\n }\n}\n\n// main processing function when input is image, can use direct invocation or web worker\nasync function processImage(input) {\n return new Promise((resolve) => {\n const image = new Image();\n image.onload = async () => {\n log('Processing image:', encodeURI(image.src));\n const canvas = document.getElementById('canvas');\n image.width = image.naturalWidth;\n image.height = image.naturalHeight;\n canvas.width = human.config.filter.width && human.config.filter.width > 0 ? human.config.filter.width : image.naturalWidth;\n canvas.height = human.config.filter.height && human.config.filter.height > 0 ? human.config.filter.height : image.naturalHeight;\n const result = await human.detect(image, userConfig);\n lastDetectedResult = result;\n await drawResults(image);\n const thumb = document.createElement('canvas');\n thumb.className = 'thumbnail';\n thumb.width = window.innerWidth / (ui.columns + 0.1);\n thumb.height = thumb.width * canvas.height / canvas.width;\n if (result.face && result.face.length > 0) {\n thumb.title = result.face.map((a, i) => `#${i} face: ${Math.trunc(100 * a.faceConfidence)}% box: ${Math.trunc(100 * a.boxConfidence)}% age: ${Math.trunc(a.age)} gender: ${Math.trunc(100 * a.genderConfidence)}% ${a.gender}`).join(' | ');\n } else {\n thumb.title = 'no face detected';\n }\n const ctx = thumb.getContext('2d');\n ctx.drawImage(canvas, 0, 0, canvas.width, canvas.height, 0, 0, thumb.width, thumb.height);\n document.getElementById('samples-container').appendChild(thumb);\n image.src = '';\n resolve(true);\n };\n image.src = input;\n });\n}\n\n// just initialize everything and call main function\nasync function detectVideo() {\n document.getElementById('samples-container').style.display = 'none';\n document.getElementById('canvas').style.display = 'block';\n const video = document.getElementById('video');\n const canvas = document.getElementById('canvas');\n if ((video.srcObject !== null) && !video.paused) {\n document.getElementById('play').style.display = 'block';\n document.getElementById('btnStart').className = 'button button-start';\n document.getElementById('btnStart').innerHTML = 'start
video';\n status('paused');\n video.pause();\n } else {\n const cameraError = await setupCamera();\n if (!cameraError) {\n document.getElementById('play').style.display = 'none';\n for (const m of Object.values(menu)) m.hide();\n status('');\n document.getElementById('btnStart').className = 'button button-stop';\n document.getElementById('btnStart').innerHTML = 'pause
video';\n await video.play();\n if (!ui.detectThread) runHumanDetect(video, canvas);\n } else {\n status(cameraError);\n }\n }\n}\n\n// just initialize everything and call main function\nasync function detectSampleImages() {\n userConfig.videoOptimized = false; // force disable video optimizations\n document.getElementById('play').style.display = 'none';\n document.getElementById('canvas').style.display = 'none';\n document.getElementById('samples-container').style.display = 'block';\n log('Running detection of sample images');\n status('processing images');\n document.getElementById('samples-container').innerHTML = '';\n for (const m of Object.values(menu)) m.hide();\n for (const image of ui.samples) await processImage(image);\n status('');\n}\n\nfunction setupMenu() {\n let x = [];\n if (window.innerWidth > 800) {\n // initial position of menu items, later it's calculated based on mouse coordinates\n x = [`${document.getElementById('btnDisplay').offsetLeft - 50}px`, `${document.getElementById('btnImage').offsetLeft - 50}px`, `${document.getElementById('btnProcess').offsetLeft - 50}px`, `${document.getElementById('btnModel').offsetLeft - 50}px`];\n } else {\n // absolute minimum spacing for menus\n x = ['0rem', '11rem', '21.1rem', '33rem'];\n }\n\n menu.display = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[0] });\n menu.display.addBool('perf monitor', ui, 'bench', (val) => ui.bench = val);\n menu.display.addBool('buffered output', ui, 'buffered', (val) => ui.buffered = val);\n menu.display.addBool('crop & scale', ui, 'crop', (val) => {\n ui.crop = val;\n setupCamera();\n });\n menu.display.addBool('camera facing', ui, 'facing', (val) => {\n ui.facing = val;\n setupCamera();\n });\n menu.display.addHTML('
');\n menu.display.addBool('use 3D depth', human.draw.drawOptions, 'useDepth');\n menu.display.addBool('draw with curves', human.draw.drawOptions, 'useCurves');\n menu.display.addBool('print labels', human.draw.drawOptions, 'drawLabels');\n menu.display.addBool('draw points', human.draw.drawOptions, 'drawPoints');\n menu.display.addBool('draw boxes', human.draw.drawOptions, 'drawBoxes');\n menu.display.addBool('draw polygons', human.draw.drawOptions, 'drawPolygons');\n menu.display.addBool('fill polygons', human.draw.drawOptions, 'fillPolygons');\n\n menu.image = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[1] });\n menu.image.addBool('enabled', human.config.filter, 'enabled', (val) => human.config.filter.enabled = val);\n ui.menuWidth = menu.image.addRange('image width', human.config.filter, 'width', 0, 3840, 10, (val) => human.config.filter.width = parseInt(val));\n ui.menuHeight = menu.image.addRange('image height', human.config.filter, 'height', 0, 2160, 10, (val) => human.config.filter.height = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addRange('brightness', human.config.filter, 'brightness', -1.0, 1.0, 0.05, (val) => human.config.filter.brightness = parseFloat(val));\n menu.image.addRange('contrast', human.config.filter, 'contrast', -1.0, 1.0, 0.05, (val) => human.config.filter.contrast = parseFloat(val));\n menu.image.addRange('sharpness', human.config.filter, 'sharpness', 0, 1.0, 0.05, (val) => human.config.filter.sharpness = parseFloat(val));\n menu.image.addRange('blur', human.config.filter, 'blur', 0, 20, 1, (val) => human.config.filter.blur = parseInt(val));\n menu.image.addRange('saturation', human.config.filter, 'saturation', -1.0, 1.0, 0.05, (val) => human.config.filter.saturation = parseFloat(val));\n menu.image.addRange('hue', human.config.filter, 'hue', 0, 360, 5, (val) => human.config.filter.hue = parseInt(val));\n menu.image.addRange('pixelate', human.config.filter, 'pixelate', 0, 32, 1, (val) => human.config.filter.pixelate = parseInt(val));\n menu.image.addHTML('
');\n menu.image.addBool('negative', human.config.filter, 'negative', (val) => human.config.filter.negative = val);\n menu.image.addBool('sepia', human.config.filter, 'sepia', (val) => human.config.filter.sepia = val);\n menu.image.addBool('vintage', human.config.filter, 'vintage', (val) => human.config.filter.vintage = val);\n menu.image.addBool('kodachrome', human.config.filter, 'kodachrome', (val) => human.config.filter.kodachrome = val);\n menu.image.addBool('technicolor', human.config.filter, 'technicolor', (val) => human.config.filter.technicolor = val);\n menu.image.addBool('polaroid', human.config.filter, 'polaroid', (val) => human.config.filter.polaroid = val);\n\n menu.process = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[2] });\n menu.process.addList('backend', ['cpu', 'webgl', 'wasm', 'humangl'], human.config.backend, (val) => human.config.backend = val);\n menu.process.addBool('async operations', human.config, 'async', (val) => human.config.async = val);\n // menu.process.addBool('enable profiler', human.config, 'profile', (val) => human.config.profile = val);\n // menu.process.addBool('memory shield', human.config, 'deallocate', (val) => human.config.deallocate = val);\n menu.process.addBool('use web worker', ui, 'useWorker');\n menu.process.addHTML('
');\n menu.process.addLabel('model parameters');\n menu.process.addRange('max objects', human.config.face.detector, 'maxFaces', 1, 50, 1, (val) => {\n human.config.face.detector.maxFaces = parseInt(val);\n human.config.body.maxDetections = parseInt(val);\n human.config.hand.maxHands = parseInt(val);\n });\n menu.process.addRange('skip frames', human.config.face.detector, 'skipFrames', 0, 50, 1, (val) => {\n human.config.face.detector.skipFrames = parseInt(val);\n human.config.face.emotion.skipFrames = parseInt(val);\n human.config.face.age.skipFrames = parseInt(val);\n human.config.hand.skipFrames = parseInt(val);\n });\n menu.process.addRange('min confidence', human.config.face.detector, 'minConfidence', 0.0, 1.0, 0.05, (val) => {\n human.config.face.detector.minConfidence = parseFloat(val);\n human.config.face.gender.minConfidence = parseFloat(val);\n human.config.face.emotion.minConfidence = parseFloat(val);\n human.config.hand.minConfidence = parseFloat(val);\n });\n menu.process.addRange('score threshold', human.config.face.detector, 'scoreThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.scoreThreshold = parseFloat(val);\n human.config.hand.scoreThreshold = parseFloat(val);\n human.config.body.scoreThreshold = parseFloat(val);\n });\n menu.process.addRange('overlap', human.config.face.detector, 'iouThreshold', 0.1, 1.0, 0.05, (val) => {\n human.config.face.detector.iouThreshold = parseFloat(val);\n human.config.hand.iouThreshold = parseFloat(val);\n });\n menu.process.addBool('detection rotation', human.config.face.detector, 'rotation', (val) => {\n human.config.face.detector.rotation = val;\n human.config.hand.rotation = val;\n });\n menu.process.addHTML('
');\n menu.process.addButton('process sample images', 'process images', () => detectSampleImages());\n menu.process.addHTML('
');\n menu.process.addChart('FPS', 'FPS');\n\n menu.models = new Menu(document.body, '', { top: `${document.getElementById('menubar').offsetHeight}px`, left: x[3] });\n menu.models.addBool('face detect', human.config.face, 'enabled', (val) => human.config.face.enabled = val);\n menu.models.addBool('face mesh', human.config.face.mesh, 'enabled', (val) => human.config.face.mesh.enabled = val);\n menu.models.addBool('face iris', human.config.face.iris, 'enabled', (val) => human.config.face.iris.enabled = val);\n menu.models.addBool('face age', human.config.face.age, 'enabled', (val) => human.config.face.age.enabled = val);\n menu.models.addBool('face gender', human.config.face.gender, 'enabled', (val) => human.config.face.gender.enabled = val);\n menu.models.addBool('face emotion', human.config.face.emotion, 'enabled', (val) => human.config.face.emotion.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('body pose', human.config.body, 'enabled', (val) => human.config.body.enabled = val);\n menu.models.addBool('hand pose', human.config.hand, 'enabled', (val) => human.config.hand.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('gestures', human.config.gesture, 'enabled', (val) => human.config.gesture.enabled = val);\n menu.models.addHTML('
');\n menu.models.addBool('face compare', human.config.face.embedding, 'enabled', (val) => {\n human.config.face.embedding.enabled = val;\n original = null;\n });\n\n document.getElementById('btnDisplay').addEventListener('click', (evt) => menu.display.toggle(evt));\n document.getElementById('btnImage').addEventListener('click', (evt) => menu.image.toggle(evt));\n document.getElementById('btnProcess').addEventListener('click', (evt) => menu.process.toggle(evt));\n document.getElementById('btnModel').addEventListener('click', (evt) => menu.models.toggle(evt));\n document.getElementById('btnStart').addEventListener('click', () => detectVideo());\n document.getElementById('play').addEventListener('click', () => detectVideo());\n}\n\nasync function drawWarmup(res) {\n const canvas = document.getElementById('canvas');\n canvas.width = res.canvas.width;\n canvas.height = res.canvas.height;\n const ctx = canvas.getContext('2d');\n ctx.drawImage(res.canvas, 0, 0, res.canvas.width, res.canvas.height, 0, 0, canvas.width, canvas.height);\n await human.draw.all(canvas, res);\n}\n\nasync function main() {\n log('Demo starting ...');\n setupMenu();\n document.getElementById('log').innerText = `Human: version ${human.version}`;\n if (ui.modelsPreload && !ui.useWorker) {\n status('loading');\n await human.load(userConfig); // this is not required, just pre-loads all models\n const loaded = Object.keys(human.models).filter((a) => human.models[a]);\n log('Demo loaded models:', loaded);\n }\n if (!ui.useWorker) {\n status('initializing');\n const res = await human.warmup(userConfig); // this is not required, just pre-warms all models for faster initial inference\n if (res && res.canvas && ui.drawWarmup) await drawWarmup(res);\n }\n status('human: ready');\n document.getElementById('loader').style.display = 'none';\n document.getElementById('play').style.display = 'block';\n log('Demo ready...');\n}\n\nwindow.onload = main;\nwindow.onresize = setupCamera;\n"], + "mappings": ";;;;;;;61BAAA,qEAMO,YAAwB,CAI7B,YAAY,EAAW,EAAgB,EAAW,EAAQ,CACxD,KAAK,aAAe,GAAiB,IAAS,EAAW,EAAgB,GACzE,KAAK,OAAS,OAGV,eAAc,EAAO,EAAkH,CAC3I,GAAM,GAAc,KAAM,MAAK,aAAa,QAAQ,EAAO,GACrD,EAAgH,GACtH,OAAW,KAAe,IAAe,GAAK,CAC5C,GAAI,EAAW,mBAAoB,SACnC,GAAM,GAAO,EAAW,OAAS,EAAW,OAAO,YAAc,GAC3D,EAAU,EAAK,IAAI,AAAC,GAAO,CAC/B,EAAG,GAAK,EAAM,MAAM,GACpB,EAAG,GAAK,EAAM,MAAM,GACpB,EAAG,GAAK,KAAK,aAAa,WAEtB,EAAc,GACpB,GAAI,GAAQ,EAAK,OAAS,EACxB,OAAW,KAAO,QAAO,KAAY,IAAmB,EAAY,GAAO,AAAO,GAAiB,GAAK,IAAI,AAAC,GAAU,EAAK,IAE9H,GAAM,GAAM,EAAW,IAAM,CAC3B,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,IACtC,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,IACtC,KAAK,IAAI,EAAM,MAAM,GAAI,EAAW,IAAI,SAAS,IAAM,EAAW,IAAI,WAAW,GACjF,KAAK,IAAI,EAAM,MAAM,GAAI,EAAW,IAAI,SAAS,IAAM,EAAW,IAAI,WAAW,IAC/E,EACE,EAAS,EAAW,IAAM,CAC9B,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,GAAK,EAAM,MAAM,IACvD,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,GAAK,EAAM,MAAM,IACvD,KAAK,IAAI,EAAM,MAAM,GAAK,EAAW,IAAI,SAAS,GAAM,EAAW,IAAI,WAAW,IAAM,EAAM,MAAM,GACpG,KAAK,IAAI,EAAM,MAAM,GAAK,EAAW,IAAI,SAAS,GAAM,EAAW,IAAI,WAAW,IAAM,EAAM,MAAM,IAClG,GACJ,EAAQ,KAAK,CACX,WAAY,EAAW,gBAAkB,EAAW,eAAiB,EACrE,cAAe,EAAW,cAC1B,eAAgB,EAAW,eAC3B,MACA,OACA,SACA,UACA,cACA,MAAO,EAAW,MAAQ,EAAW,MAAM,QAAU,OAEnD,EAAW,QAAQ,EAAW,OAAO,UACrC,EAAW,OAAO,EAAW,MAAM,UAEzC,MAAO,KAIP,GAAa,CAAC,KAAM,KAAM,MAC9B,mBAA2B,EAAQ,CAEjC,GAAa,KAAM,SAAQ,IAAI,CAC5B,CAAC,GAAW,IAAM,EAAO,KAAK,QAAW,AAAU,GAAK,GAAU,KAClE,CAAC,GAAW,IAAM,EAAO,KAAK,KAAK,QAAW,AAAG,GAAe,EAAO,KAAK,KAAK,UAAW,CAAE,UAAW,EAAO,KAAK,KAAK,UAAU,SAAS,eAAkB,KAC/J,CAAC,GAAW,IAAM,EAAO,KAAK,KAAK,QAAW,AAAG,GAAe,EAAO,KAAK,KAAK,UAAW,CAAE,UAAW,EAAO,KAAK,KAAK,UAAU,SAAS,eAAkB,OAElK,GAAM,GAAW,GAAI,IAAkB,GAAW,GAAI,GAAW,GAAI,GAAW,GAAI,GACpF,MAAI,GAAO,KAAK,KAAK,SAAW,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,KAAK,UAAU,MAAM,YAAY,MAC1G,EAAO,KAAK,KAAK,SAAW,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,KAAK,UAAU,MAAM,YAAY,MACvG,EAGT,GAAQ,cAAuB,KC1E/B,0JAAO,GAAM,KAAY,CACvB,OAAQ,UAAW,WAAY,UAAW,WAAY,eACtD,gBAAiB,YAAa,aAAc,YAAa,aACzD,UAAW,WAAY,WAAY,YAAa,YAAa,cAGlD,IAAgB,GAAQ,UAAU,OAElC,GAAU,GAAQ,UAAU,OAAO,CAAC,EAAQ,EAAW,IAClE,GAAO,GAAa,EACb,GACN,IAEG,IAAqB,CACzB,CAAC,UAAW,gBAAiB,CAAC,YAAa,gBAC3C,CAAC,YAAa,aAAc,CAAC,UAAW,YACxC,CAAC,WAAY,aAAc,CAAC,WAAY,iBACxC,CAAC,aAAc,iBAAkB,CAAC,aAAc,cAChD,CAAC,WAAY,aAAc,CAAC,YAAa,cACzC,CAAC,eAAgB,iBAAkB,CAAC,UAAW,aAEpC,IAAuB,IAAmB,IAAI,CAAC,CAAC,EAAY,KAAiB,CAAC,GAAQ,GAAa,GAAQ,KAE3G,IAAY,CACvB,CAAC,OAAQ,WAAY,CAAC,UAAW,WAAY,CAAC,OAAQ,YACtD,CAAC,WAAY,YAAa,CAAC,OAAQ,gBACnC,CAAC,eAAgB,aAAc,CAAC,YAAa,aAC7C,CAAC,eAAgB,WAAY,CAAC,UAAW,YACzC,CAAC,WAAY,aAAc,CAAC,OAAQ,iBACpC,CAAC,gBAAiB,cAAe,CAAC,aAAc,cAChD,CAAC,gBAAiB,YAAa,CAAC,WAAY,aAC5C,CAAC,YAAa,eAGH,IAAe,CAC1B,YACA,aACA,wBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,aACA,wBACA,YACA,cACA,aACA,wBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,aACA,wBACA,eCzDK,eAAgB,EAAK,CAC1B,GAAM,GAAK,GAAI,MACT,EAAK,GAAG,EAAG,WAAW,WAAW,SAAS,EAAG,QAAQ,EAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,EAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,EAAG,kBAAkB,WAAW,SAAS,EAAG,OAErM,AAAI,GAAK,QAAQ,IAAI,EAAI,SAAU,GAAG,GCLjC,aAAgB,CACrB,GAAI,GACA,EACJ,GAAI,MAAO,YAAc,YAAa,CACpC,GAAM,GAAM,UAAU,UAAU,MAAM,iBACtC,AAAI,GAAO,EAAI,IAEb,GAAW,EAAI,GAAG,MAAM,iBAAiB,GAAG,QAAQ,SAAU,IAC9D,EAAQ,UAAU,UAAU,QAAQ,EAAI,GAAI,IACxC,EAAS,IAAI,GAAQ,EAAM,QAAQ,EAAI,GAAI,KAC/C,EAAQ,EAAM,QAAQ,MAAO,UAE1B,AAAI,OAAO,UAAY,aAC5B,GAAW,GAAG,QAAQ,YAAY,QAAQ,OAC1C,EAAQ,UAAU,QAAQ,WAE5B,MAAO,CAAE,WAAU,u1QChBrB,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,CAAA,EAAA,IAAA,CA2BC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAc,EAAM,CAClB,GAAI,GAAK,KAAM,EAAO,IAEtB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,QAAU,EAAG,GAAK,EAAG,EAAI,sBACjC,MAAA,GAAG,GAAK,EAAG,GACX,EAAG,GAAK,EAAG,GACJ,EAAG,GAAK,EAAK,GAAG,EAAI,EAAI,IAIjC,EAAG,EAAI,EACP,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAO,KAGT,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAK,GACd,EAAQ,GAAQ,EAAK,MACrB,EAAO,EAAG,KACd,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAQ,GAAG,OAAS,WAAe,GAC7D,EAAK,OAAS,UAAW,CACvB,MAAO,KAAU,KAAS,QAAW,GAAK,uBAE5C,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGT,YAAgB,CACd,GAAI,GAAI,WAEJ,EAAO,SAAS,EAAM,CACxB,EAAO,EAAK,WACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAK,EAAK,WAAW,GACrB,GAAI,GAAI,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,GAIL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,KAAO,IAIZ,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9GnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAEzB,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGP,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAK,EAAG,GAAK,GACxB,MAAA,GAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACH,EAAG,GAAM,EAAG,IAAM,GAAM,EAAK,IAAM,GAGxC,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC7EnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAK,EAAG,EAAK,EAAG,IAAM,EAC1B,MAAA,GAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EACzC,GAAG,EAAK,EAAG,EAAI,OAAS,GAC5B,GAAG,EAAK,EAAG,EAAK,EAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAEH,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAC5B,GAAK,EAAQ,QACf,GAAG,EAAI,EAAG,GAAK,GAAK,EAAG,IAAM,GAE/B,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UClFnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAKC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CAEnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAC9B,MAAA,GAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,EAAG,EAAK,EAAI,EAAK,EACV,GAGT,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAI,GAEd,GAAI,IAAU,GAAO,GAEnB,EAAI,EAAE,GAAK,MAIX,KADA,EAAO,GAAK,EACP,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,EAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,EAAG,EAAI,EACP,EAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,EAAG,OAIP,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,UAAY,IAIjB,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9FnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAyBC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAE3B,MAAA,GAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,EAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAG,EAAG,EAAG,EAAI,GAAI,EAAQ,IAYnC,IAXI,IAAU,GAAO,GAEnB,GAAI,EACJ,EAAO,MAGP,GAAO,EAAO,KACd,EAAI,EACJ,EAAQ,KAAK,IAAI,EAAO,EAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,EAAO,EAAE,EAE5B,GAAM,IAAK,EAAK,WAAY,GAAI,IAAM,EAAK,SAE3C,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACP,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAU,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPI,GAAK,KACP,GAAG,IAAQ,EAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGT,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,QAAU,IAIf,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UChJnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAIC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACzC,MAAA,GAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,EAAG,EAAI,EAAK,EAAI,EAAK,EACrB,EAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,EAAG,EAAK,EAAI,EAAK,GAmB1B,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,WAAa,EACpB,EAAG,EAAI,WAEH,IAAS,KAAK,MAAM,GAEtB,GAAG,EAAK,EAAO,WAAe,EAC9B,EAAG,EAAI,EAAO,GAGd,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UCnGnC,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,CAAA,EAAA,IAAA,CAwBC,AAAA,UAAU,EAAM,EAAM,CAIvB,GAAI,GAAS,KACT,EAAQ,IACR,EAAS,EACT,EAAS,GACT,EAAU,SACV,EAAa,EAAK,IAAI,EAAO,GAC7B,EAAe,EAAK,IAAI,EAAG,GAC3B,EAAW,EAAe,EAC1B,EAAO,EAAQ,EACf,EAMJ,WAAoB,EAAM,EAAS,EAAU,CAC3C,GAAI,GAAM,GACV,EAAW,GAAW,GAAQ,CAAE,QAAS,IAAU,GAAW,GAG9D,GAAI,GAAY,EAAO,EACrB,EAAQ,QAAU,CAAC,EAAM,EAAS,IACjC,GAAQ,KAAQ,IAAa,EAAM,GAAI,GAGtC,EAAO,GAAI,GAAK,GAIhB,EAAO,UAAW,CAIpB,OAHI,GAAI,EAAK,EAAE,GACX,EAAI,EACJ,EAAI,EACD,EAAI,GACT,EAAK,GAAI,GAAK,EACd,GAAK,EACL,EAAI,EAAK,EAAE,GAEb,KAAO,GAAK,GACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,GAC7C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,YAC7C,EAAK,OAAS,EAGd,EAAO,EAAS,EAAK,GAAI,GAGjB,GAAQ,MAAQ,GACpB,SAAS,EAAM,EAAM,EAAc,EAAO,CAUxC,MATI,IAEE,GAAM,GAAK,EAAK,EAAO,GAE3B,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAM,MAK1C,EAAgB,GAAK,GAAW,EAAa,GAIrC,IAElB,EACA,EACA,UAAY,GAAU,EAAQ,OAAU,MAAQ,EAChD,EAAQ,OAEV,EAAK,OAAS,GAAW,EAYzB,WAAc,EAAK,CACjB,GAAI,GAAG,EAAS,EAAI,OAChB,EAAK,KAAM,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GAMtD,IAHK,GAAU,GAAM,CAAC,MAGf,EAAI,GACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,EAAO,IACrB,EAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,EAAI,EAAI,GAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIR,AAAA,GAAG,EAAI,SAAS,EAAO,CAItB,OAFI,GAAG,EAAI,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACxB,KACL,EAAI,EAAE,EAAI,EAAQ,EAAI,GACtB,EAAI,EAAI,EAAQ,EAAE,EAAS,GAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,IAAQ,GAAE,GAAK,IAErE,MAAA,GAAG,EAAI,EAAG,EAAG,EAAI,EACV,IAIN,GAOL,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,WAAiB,EAAK,EAAO,CAC3B,GAAI,GAAS,GAAI,EAAO,MAAO,GAAM,EACrC,GAAI,GAAS,GAAO,SAClB,IAAK,IAAQ,GACX,GAAI,CAAE,EAAO,KAAK,EAAQ,EAAI,GAAO,EAAQ,UAAc,EAAd,EAGjD,MAAQ,GAAO,OAAS,EAAS,GAAO,SAAW,EAAM,EAAM,KAQjE,WAAgB,EAAM,EAAK,CAEzB,OADI,GAAa,EAAO,GAAI,EAAO,EAAI,EAChC,EAAI,EAAW,QACpB,EAAI,EAAO,GACT,EAAS,IAAS,EAAI,EAAO,GAAK,IAAM,EAAW,WAAW,KAElE,MAAO,GAAS,GAQlB,YAAoB,CAClB,GAAI,CACF,GAAI,GACJ,MAAI,IAAe,GAAM,EAAW,aAElC,EAAM,EAAI,GAEV,GAAM,GAAI,YAAW,GACpB,GAAO,QAAU,EAAO,UAAU,gBAAgB,IAE9C,EAAS,SACT,EADS,CAEhB,GAAI,GAAU,EAAO,UACjB,EAAU,GAAW,EAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,EAAQ,EAAS,EAAO,OAAQ,EAAS,KAQhE,WAAkB,EAAG,CACnB,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,EAAO,EAAK,SAAU,GAMjB,MAAO,IAAW,UAAY,EAAO,QAAS,CACjD,EAAO,QAAU,EAEjB,GAAI,CACF,EAAqB,WACd,EADc,OAEb,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,UAAW,CAAE,MAAO,OAK3B,GACA,QCrPF,GAAA,GAAA,CAAA,EAAA,IAAA,CAYA,GAAI,GAAe,KAKf,EAAiB,KAKjB,EAAiB,KAQjB,EAAoB,KASpB,EAAkB,KAOlB,EAAiB,KAIjB,EAAa,KAEjB,EAAG,KAAO,EACV,EAAG,OAAS,EACZ,EAAG,OAAS,EACZ,EAAG,UAAY,EACf,EAAG,QAAU,EACb,EAAG,OAAS,EAEZ,EAAO,QAAU,IC3DjB,GAAA,GAAA,CAAA,EAAA,IAAA,CA2BC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAc,EAAM,CAClB,GAAI,GAAK,KAAM,EAAO,IAEtB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,QAAU,EAAG,GAAK,EAAG,EAAI,sBACjC,MAAA,GAAG,GAAK,EAAG,GACX,EAAG,GAAK,EAAG,GACJ,EAAG,GAAK,EAAK,GAAG,EAAI,EAAI,IAIjC,EAAG,EAAI,EACP,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAO,KAGT,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAK,GACd,EAAQ,GAAQ,EAAK,MACrB,EAAO,EAAG,KACd,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAQ,GAAG,OAAS,WAAe,GAC7D,EAAK,OAAS,UAAW,CACvB,MAAO,KAAU,KAAS,QAAW,GAAK,uBAE5C,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGT,YAAgB,CACd,GAAI,GAAI,WAEJ,EAAO,SAAS,EAAM,CACxB,EAAO,EAAK,WACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAK,EAAK,WAAW,GACrB,GAAI,GAAI,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,GAIL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,KAAO,IAIZ,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9GnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAEzB,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGP,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAK,EAAG,GAAK,GACxB,MAAA,GAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACH,EAAG,GAAM,EAAG,IAAM,GAAM,EAAK,IAAM,GAGxC,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC7EnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAK,EAAG,EAAK,EAAG,IAAM,EAC1B,MAAA,GAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EACzC,GAAG,EAAK,EAAG,EAAI,OAAS,GAC5B,GAAG,EAAK,EAAG,EAAK,EAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAEH,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAC5B,GAAK,EAAQ,QACf,GAAG,EAAI,EAAG,GAAK,GAAK,EAAG,IAAM,GAE/B,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UClFnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAKC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CAEnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAC9B,MAAA,GAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,EAAG,EAAK,EAAI,EAAK,EACV,GAGT,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAI,GAEd,GAAI,IAAU,GAAO,GAEnB,EAAI,EAAE,GAAK,MAIX,KADA,EAAO,GAAK,EACP,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,EAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,EAAG,EAAI,EACP,EAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,EAAG,OAIP,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,UAAY,IAIjB,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9FnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAyBC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAE3B,MAAA,GAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,EAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAG,EAAG,EAAG,EAAI,GAAI,EAAQ,IAYnC,IAXI,IAAU,GAAO,GAEnB,GAAI,EACJ,EAAO,MAGP,GAAO,EAAO,KACd,EAAI,EACJ,EAAQ,KAAK,IAAI,EAAO,EAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,EAAO,EAAE,EAE5B,GAAM,IAAK,EAAK,WAAY,GAAI,IAAM,EAAK,SAE3C,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACP,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAU,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPI,GAAK,KACP,GAAG,IAAQ,EAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGT,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,QAAU,IAIf,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UChJnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAIC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACzC,MAAA,GAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,EAAG,EAAI,EAAK,EAAI,EAAK,EACrB,EAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,EAAG,EAAK,EAAI,EAAK,GAmB1B,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,WAAa,EACpB,EAAG,EAAI,WAEH,IAAS,KAAK,MAAM,GAEtB,GAAG,EAAK,EAAO,WAAe,EAC9B,EAAG,EAAI,EAAO,GAGd,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UCnGnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAwBC,AAAA,UAAU,EAAM,EAAM,CAIvB,GAAI,GAAS,KACT,EAAQ,IACR,EAAS,EACT,EAAS,GACT,EAAU,SACV,EAAa,EAAK,IAAI,EAAO,GAC7B,EAAe,EAAK,IAAI,EAAG,GAC3B,EAAW,EAAe,EAC1B,EAAO,EAAQ,EACf,EAMJ,WAAoB,EAAM,EAAS,EAAU,CAC3C,GAAI,GAAM,GACV,EAAW,GAAW,GAAQ,CAAE,QAAS,IAAU,GAAW,GAG9D,GAAI,GAAY,EAAO,EACrB,EAAQ,QAAU,CAAC,EAAM,EAAS,IACjC,GAAQ,KAAQ,IAAa,EAAM,GAAI,GAGtC,EAAO,GAAI,GAAK,GAIhB,EAAO,UAAW,CAIpB,OAHI,GAAI,EAAK,EAAE,GACX,EAAI,EACJ,EAAI,EACD,EAAI,GACT,EAAK,GAAI,GAAK,EACd,GAAK,EACL,EAAI,EAAK,EAAE,GAEb,KAAO,GAAK,GACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,GAC7C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,YAC7C,EAAK,OAAS,EAGd,EAAO,EAAS,EAAK,GAAI,GAGjB,GAAQ,MAAQ,GACpB,SAAS,EAAM,EAAM,EAAc,EAAO,CAUxC,MATI,IAEE,GAAM,GAAK,EAAK,EAAO,GAE3B,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAM,MAK1C,EAAgB,GAAK,GAAW,EAAa,GAIrC,IAElB,EACA,EACA,UAAY,GAAU,EAAQ,OAAU,MAAQ,EAChD,EAAQ,OAEV,EAAK,OAAS,GAAW,EAYzB,WAAc,EAAK,CACjB,GAAI,GAAG,EAAS,EAAI,OAChB,EAAK,KAAM,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GAMtD,IAHK,GAAU,GAAM,CAAC,MAGf,EAAI,GACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,EAAO,IACrB,EAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,EAAI,EAAI,GAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIR,AAAA,GAAG,EAAI,SAAS,EAAO,CAItB,OAFI,GAAG,EAAI,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACxB,KACL,EAAI,EAAE,EAAI,EAAQ,EAAI,GACtB,EAAI,EAAI,EAAQ,EAAE,EAAS,GAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,IAAQ,GAAE,GAAK,IAErE,MAAA,GAAG,EAAI,EAAG,EAAG,EAAI,EACV,IAIN,GAOL,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,WAAiB,EAAK,EAAO,CAC3B,GAAI,GAAS,GAAI,EAAO,MAAO,GAAM,EACrC,GAAI,GAAS,GAAO,SAClB,IAAK,IAAQ,GACX,GAAI,CAAE,EAAO,KAAK,EAAQ,EAAI,GAAO,EAAQ,UAAc,EAAd,EAGjD,MAAQ,GAAO,OAAS,EAAS,GAAO,SAAW,EAAM,EAAM,KAQjE,WAAgB,EAAM,EAAK,CAEzB,OADI,GAAa,EAAO,GAAI,EAAO,EAAI,EAChC,EAAI,EAAW,QACpB,EAAI,EAAO,GACT,EAAS,IAAS,EAAI,EAAO,GAAK,IAAM,EAAW,WAAW,KAElE,MAAO,GAAS,GAQlB,YAAoB,CAClB,GAAI,CACF,GAAI,GACJ,MAAI,IAAe,GAAM,EAAW,aAElC,EAAM,EAAI,GAEV,GAAM,GAAI,YAAW,GACpB,GAAO,QAAU,EAAO,UAAU,gBAAgB,IAE9C,EAAS,SACT,EADS,CAEhB,GAAI,GAAU,EAAO,UACjB,EAAU,GAAW,EAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,EAAQ,EAAS,EAAO,OAAQ,EAAS,KAQhE,WAAkB,EAAG,CACnB,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,EAAO,EAAK,SAAU,GAMjB,MAAO,IAAW,UAAY,EAAO,QAAS,CACjD,EAAO,QAAU,EAEjB,GAAI,CACF,EAAqB,WACd,EADc,OAEb,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,UAAW,CAAE,MAAO,OAK3B,GACA,QCrPF,GAAA,GAAA,CAAA,EAAA,IAAA,CAYA,GAAI,GAAe,KAKf,EAAiB,KAKjB,EAAiB,KAQjB,EAAoB,KASpB,EAAkB,KAOlB,EAAiB,KAIjB,EAAa,KAEjB,EAAG,KAAO,EACV,EAAG,OAAS,EACZ,EAAG,OAAS,EACZ,EAAG,UAAY,EACf,EAAG,QAAU,EACb,EAAG,OAAS,EAEZ,EAAO,QAAU,IC3DjB,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,CAAA,EAAA,IAAA,CACA,GAAI,GAAiC,UAAW,CAC9C,GAAI,GAAa,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,GAAa,GAAc,YAEpE,SAAS,EAA+B,CACtC,EAAgC,GAAiC,GAEnE,YAA2B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAM,YAA2B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAO,YAA4B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAO,YAA4B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAQ,YAA4B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAQ,GAAI,GAAO,MAAO,IAAgC,YAAY,EAA8B,GAAO,EAAoB,EAAmB,EAAO,MAAS,GAAI,SAAQ,SAAS,EAAQ,EAAO,CAAC,EAAoB,EAAQ,EAAmB,IAAS,GAAI,GAAgB,GAAO,EAAI,IAAI,IAAO,GAAW,EAAO,eAAe,IAAM,GAAgB,GAAK,EAAO,IAAM,GAAI,GAAW,GAAO,EAAY,iBAAqB,EAAM,SAAS,EAAO,EAAQ,CAAC,KAAM,IAAa,EAAmB,GAAU,EAAsB,GAAU,EAAoB,GAAU,EAAqB,GAAM,EAAmB,MAAO,SAAS,SAAS,EAAsB,MAAO,gBAAgB,WAAW,EAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,EAAqB,CAAC,GAAoB,CAAC,GAAqB,CAAC,EAAsB,GAAI,GAAuB,EAAO,wBAA2B,GAAS,GAAwB,IAAO,EAAO,QAAU,GAAI,GAAgB,GAAG,WAAoB,EAAK,CAAC,MAAG,GAAO,WAAsB,EAAO,WAAc,EAAK,GAAwB,EAAgB,EAAK,GAAI,GAAM,EAAU,EAAW,EAAmB,EAAW,EAAS,GAAG,EAAoB,CAAI,EAAuB,EAAwB,KAAQ,QAAQ,GAAiB,IAAS,EAAgB,UAAU,IAAI,EAAM,SAAoB,EAAS,EAAO,CAAC,MAAI,IAAO,GAAe,eAAU,GAAS,GAAiB,MAAQ,EAAS,EAAS,UAAa,GAAiB,EAAO,aAAgB,EAAS,EAAO,KAAK,SAAS,EAAW,SAAoB,EAAS,CAAC,GAAI,GAAI,EAAM,EAAS,IAAM,MAAI,GAAI,QAAQ,GAAI,GAAI,YAAW,IAAK,GAAO,EAAI,QAAe,GAAQ,QAAQ,KAAQ,OAAO,GAAG,GAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,EAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,SAAS,EAAG,CAAC,GAAG,CAAE,aAAc,KAAa,KAAM,KAAM,QAAQ,GAAM,qBAAqB,IAAO,EAAM,SAAS,EAAO,CAAC,QAAQ,KAAQ,IAAS,EAAO,QAAW,UAAU,CAAC,MAAM,8BAA8B,GAAI,GAAkB,GAAG,CAAC,EAA0B,WAAwB,EAAxB,CAA2B,KAAA,SAAQ,MAAM,2GAAiH,EAAE,OAAO,OAAO,EAAkB,WAAe,GAAyB,OAAO,OAAM,aAAa,GAAM,SAAoB,EAAE,CAAC,MAAO,MAAK,KAAI,EAAW,SAAoB,EAAE,CAAC,GAAI,GAAK,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,GAAK,KAAK,EAAE,UAAU,GAAO,MAAO,IAAO,UAAiB,IAAS,MAAO,aAAY,YAAa,EAAW,WAAmB,MAAO,YAAW,aAAa,GAAW,WAAa,MAAO,OAAO,YAAY,GAAM,SAAS,EAAO,CAAC,KAAK,KAAY,MAAO,QAAQ,aAAgB,OAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAe,IAAoB,IAA0B,GAAuB,EAAgB,KAAK,SAAS,KAAa,MAAO,WAAW,aAAa,SAAS,eAAe,GAAgB,SAAS,cAAc,KAAO,MAAO,IAAe,aAAe,GAAY,GAAgB,GAAc,EAAgB,QAAQ,WAAW,EAAG,EAAgB,EAAgB,OAAO,EAAE,EAAgB,YAAY,KAAK,GAAQ,EAAgB,GAAM,EAAqB,GAAM,SAAoB,EAAS,EAAO,CAAC,MAAI,IAAO,GAAe,eAAU,GAAS,GAAiB,MAAQ,EAAS,EAAS,UAAa,GAAiB,EAAO,aAAgB,EAAS,EAAO,KAAK,SAAS,EAAW,SAAoB,EAAS,CAAC,GAAI,GAAI,EAAM,EAAS,IAAM,MAAI,GAAI,QAAQ,GAAI,GAAI,YAAW,IAAK,GAAO,EAAI,QAAe,IAAU,GAAM,SAAS,EAAI,CAAC,GAAI,GAAI,GAAI,gBAAe,MAAA,GAAI,KAAK,MAAM,EAAI,IAAO,EAAI,KAAK,MAAa,EAAI,cAAiB,GAAuB,GAAW,SAAS,EAAI,CAAC,GAAI,GAAI,GAAI,gBAAe,MAAA,GAAI,KAAK,MAAM,EAAI,IAAO,EAAI,aAAa,cAAc,EAAI,KAAK,MAAa,GAAI,YAAW,EAAI,YAAW,EAAU,SAAS,EAAI,EAAO,EAAQ,CAAC,GAAI,GAAI,GAAI,gBAAe,EAAI,KAAK,MAAM,EAAI,IAAM,EAAI,aAAa,cAAc,EAAI,OAAO,UAAU,CAAC,GAAG,EAAI,QAAQ,KAAK,EAAI,QAAQ,GAAG,EAAI,SAAS,CAAC,EAAO,EAAI,UAAU,OAAO,KAAW,EAAI,QAAQ,EAAQ,EAAI,KAAK,QAAO,EAAe,SAAS,EAAM,CAAC,SAAS,MAAM,IAAgB,GAAwB,MAAO,cAAc,aAAa,QAAO,YAAoB,KAAc,aAAa,GAAI,GAAI,EAAO,OAAU,QAAQ,IAAI,KAAK,SAAa,EAAI,EAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,IAAO,GAAoB,EAAgB,eAAe,IAAM,GAAO,GAAK,EAAgB,IAAM,EAAgB,KAAQ,EAAO,WAAa,GAAW,EAAO,WAAgB,EAAO,aAAe,GAAY,EAAO,aAAkB,EAAO,MAAQ,GAAM,EAAO,MAAQ,GAAI,IAAa,QAAQ,KAAS,EAAc,QAAQ,MAAU,GAAwB,QAAQ,gBAAoB,GAAc,EAAO,YAAc,IAAW,EAAO,YAAc,GAAI,IAAc,EAAO,eAAkB,GAAQ,MAAO,cAAc,UAAU,GAAM,mCAAmC,GAAI,GAAe,GAAe,GAAM,GAAU,GAAW,YAAgB,EAAU,EAAK,CAAK,GAAW,GAAM,qBAAqB,GAAO,YAAkB,EAAM,CAAC,GAAI,GAAK,EAAO,IAAI,GAAO,MAAA,IAAO,EAAK,gCAAgC,EAAM,8BAAqC,EAAK,YAAe,EAAM,EAAW,EAAS,EAAK,GAAK,CAAC,GAAI,IAAI,CAAC,OAAS,SAAS,GAAI,CAAC,GAAI,IAAI,EAAE,GAAG,IAAM,MAAuB,KAAM,EAAE,CAAC,GAAI,IAAK,IAAI,QAAQ,GAAG,EAAE,GAAI,GAAW,IAAK,GAAa,GAAI,GAAI,IAAK,MAAO,KAAK,MAAQ,SAAS,GAAI,CAAC,GAAI,IAAI,GAAW,GAAI,QAAQ,MAAA,IAAmB,GAAI,IAAY,KAAM,YAA4B,GAAI,CAAC,MAAG,KAAa,SAAgB,GAAa,IAAQ,IAAa,UAAiB,QAAQ,IAAY,GAAI,GAAI,IAAK,GAAS,GAAW,GAAM,GAAO,GAAM,EAAE,GAAG,EAAM,OAAQ,IAAE,EAAE,GAAE,EAAK,OAAO,KAAI,CAAC,GAAI,IAAU,GAAI,EAAS,KAAO,GAAc,MAAQ,GAAE,IAAM,MAAY,GAAM,IAAG,GAAU,EAAK,MAAS,GAAM,IAAG,EAAK,IAAK,GAAI,IAAI,GAAK,MAAM,KAAK,IAAO,MAAA,IAAI,GAAmB,IAAQ,KAAQ,GAAE,GAAa,IAAc,GAAI,YAAe,EAAM,EAAW,EAAS,EAAK,CAAC,EAAS,GAAU,GAAG,GAAI,IAAY,EAAS,MAAM,SAAS,GAAK,CAAC,MAAO,MAAO,WAAe,GAAW,IAAa,SAAS,MAAG,KAAY,IAAa,CAAC,EAAa,GAAS,GAAc,UAAU,CAAC,MAAO,IAAM,EAAM,EAAW,EAAS,UAAU,IAAO,YAA2B,EAAK,EAAI,EAAe,CAA0C,OAArC,GAAO,EAAI,EAAmB,GAAI,GAAS,CAAE,IAAK,IAAQ,CAAC,GAAI,IAAG,EAAK,KAAO,GAAG,CAAC,GAAG,MAAO,IAAI,GAAG,CAAE,IAAG,KAAK,CAAC,IAAK,OAAO,aAAa,IAAI,SAAS,GAAI,IAAG,EAAK,KAAO,GAAG,GAAI,IAAG,MAAM,IAAI,CAAC,IAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,GAAI,IAAG,EAAK,KAAO,GAA4F,GAArF,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAK,KAAO,GAAM,GAAG,MAAO,IAAK,OAAO,aAAa,QAAQ,CAAC,GAAI,IAAG,GAAG,MAAM,IAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,MAAO,IAAI,YAAsB,EAAI,EAAe,CAAC,MAAO,GAAI,GAAkB,IAAmB,EAAI,GAAgB,GAAG,YAA2B,EAAI,EAAK,EAAO,EAAgB,CAAC,GAAG,CAAE,GAAgB,GAAG,MAAO,GAA0D,OAApD,IAAS,EAAW,GAAO,EAAO,EAAgB,EAAU,GAAE,EAAE,GAAE,EAAI,OAAO,EAAE,GAAE,CAAC,GAAI,IAAE,EAAI,WAAW,IAAG,GAAG,IAAG,OAAO,IAAG,MAAM,CAAC,GAAI,IAAG,EAAI,WAAW,EAAE,IAAG,GAAE,MAAQ,KAAE,OAAO,IAAI,GAAG,KAAK,GAAG,IAAG,IAAI,CAAC,GAAG,GAAQ,GAAO,MAAM,EAAK,KAAU,WAAU,IAAG,KAAK,CAAC,GAAG,EAAO,GAAG,GAAO,MAAM,EAAK,KAAU,IAAI,IAAG,EAAE,EAAK,KAAU,IAAI,GAAE,WAAW,IAAG,MAAM,CAAC,GAAG,EAAO,GAAG,GAAO,MAAM,EAAK,KAAU,IAAI,IAAG,GAAG,EAAK,KAAU,IAAI,IAAG,EAAE,GAAG,EAAK,KAAU,IAAI,GAAE,OAAO,CAAC,GAAG,EAAO,GAAG,GAAO,MAAM,EAAK,KAAU,IAAI,IAAG,GAAG,EAAK,KAAU,IAAI,IAAG,GAAG,GAAG,EAAK,KAAU,IAAI,IAAG,EAAE,GAAG,EAAK,KAAU,IAAI,GAAE,IAAI,MAAA,GAAK,GAAQ,EAAS,EAAO,GAAS,YAAsB,EAAI,EAAO,EAAgB,CAAC,MAAO,IAAkB,EAAI,IAAmB,EAAO,GAAiB,YAAyB,EAAI,CAAW,OAAN,GAAI,EAAU,EAAE,EAAE,EAAE,EAAI,OAAO,EAAE,EAAE,CAAC,GAAI,GAAE,EAAI,WAAW,GAAM,GAAG,OAAO,GAAG,OAAM,GAAE,MAAQ,IAAE,OAAO,IAAI,EAAI,WAAW,EAAE,GAAG,MAAQ,GAAG,IAAI,EAAE,EAAY,GAAG,KAAK,GAAK,EAAU,GAAG,MAAM,GAAK,EAAO,GAAK,EAAE,MAAO,GAAI,YAA4B,EAAM,EAAO,CAAC,IAAmB,IAAI,EAAM,GAAQ,YAAiB,EAAE,EAAS,CAAC,MAAG,GAAE,EAAS,GAAG,IAAG,EAAS,EAAE,GAAgB,EAAE,GAAI,IAAO,GAAM,GAAO,GAAO,GAAQ,GAAO,GAAQ,GAAQ,GAAQ,YAAoC,EAAI,CAAC,GAAO,EAAI,EAAO,MAAS,GAAM,GAAI,WAAU,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,GAAI,IAAe,EAAO,gBAAmB,SAAS,GAAG,EAAwB,EAAW,EAAO,WAAc,GAAO,EAAO,eAAkB,EAAO,WAAe,EAAW,EAAO,mBAAmB,EAAW,GAAI,aAAY,OAAO,CAAC,QAAU,GAAe,MAAM,QAAU,WAAW,MAAM,OAAS,KAAU,CAAE,GAAW,iBAAkB,oBAAoB,KAAA,GAAI,+NAAkO,GAAqB,QAAQ,IAAI,qHAA2H,MAAM,cAAmB,GAAY,IAAO,EAAW,QAAO,GAAe,GAAO,WAAW,GAA2B,IAAQ,GAAI,IAAc,GAAa,GAAO,GAAW,GAAO,GAAW,GAAO,GAAW,GAAO,GAAc,GAAO,GAAmB,GAAU,GAAc,GAAU,GAAuB,GAAW,KAAK,CAAC,KAAK,UAAU,CAAC,QAA2B,GAAuB,IAAmB,IAAK,aAAiB,CAAC,GAAG,CAAA,EAA8B,CAAA,GAAG,EAAO,OAAsF,IAAxE,MAAO,GAAO,QAAW,YAAW,GAAO,OAAU,CAAC,EAAO,SAAiB,EAAO,OAAU,QAAQ,GAAY,EAAO,OAAU,SAAU,GAAqB,KAAc,aAAsB,CAAC,GAAmB,GAAK,GAAqB,IAAY,aAAkB,CAAI,GAA8B,GAAqB,IAAY,aAAsB,CAAI,GAA8B,IAAc,IAAK,aAAkB,CAAC,GAAG,CAAA,EAA8B,CAAA,GAAG,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,QAAQ,GAAa,EAAO,QAAW,SAAU,GAAqB,KAAe,YAAqB,EAAG,CAAC,GAAa,QAAQ,GAAI,YAAsB,EAAG,CAAC,GAAc,QAAQ,GAAI,GAAI,IAAgB,EAAM,GAAqB,KAAS,GAAsB,KAAK,YAA0B,EAAG,CAAC,GAAO,CAAC,EAAuB,uDAAuD,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAkB,YAA6B,EAAG,CAA0G,GAAzG,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAoB,IAAiB,GAAM,MAAuB,MAAM,eAAc,IAAsB,GAAqB,MAAQ,IAAsB,CAAC,GAAI,GAAS,GAAsB,GAAsB,KAAK,KAAa,EAAO,gBAAmB,GAAG,EAAO,gBAAmB,GAAG,YAAe,EAAK,CAAI,EAAO,SAAY,EAAO,QAAW,GAAS,GAAuB,QAAQ,MAAM,uBAAwB,GAAI,SAAO,OAAO,GAAM,GAAG,EAAI,GAAM,GAAM,GAAK,GAAW,EAAE,EAAK,SAAS,EAAK,+CAA+C,GAAI,GAAE,GAAI,aAAY,aAAa,GAAM,KAAA,GAAmB,GAAS,EAAE,YAAmB,EAAI,EAAO,CAAC,MAAO,QAAO,UAAU,WAAW,EAAI,WAAW,GAAQ,EAAI,QAAQ,KAAU,EAAE,GAAI,IAAc,wCAAwC,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAc,UAAU,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAe,uCAA2C,GAAU,KAAiB,IAAe,EAAW,KAAgB,YAAmB,EAAK,CAAC,GAAG,CAAC,GAAG,GAAM,IAAgB,GAAY,MAAO,IAAI,YAAW,IAAY,GAAG,EAAY,MAAO,GAAW,GAAW,KAAK,wDAAyD,EAAzD,CAA8D,GAAM,IAAM,aAA2B,CAAC,GAAG,CAAC,IAAa,IAAoB,GAAuB,CAAC,GAAG,MAAO,QAAQ,YAAY,CAAC,GAAU,IAAiB,MAAO,OAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,EAAS,CAAC,GAAG,CAAC,EAAS,GAAO,KAAK,uCAAuC,GAAe,IAAI,MAAO,GAAS,gBAAmB,MAAM,UAAU,CAAC,MAAO,IAAU,MAAuB,GAAG,EAAW,MAAO,IAAI,SAAQ,SAAS,EAAQ,EAAO,CAAC,EAAU,GAAe,SAAS,EAAS,CAAC,EAAQ,GAAI,YAAW,KAAY,KAAY,MAAO,SAAQ,UAAU,KAAK,UAAU,CAAC,MAAO,IAAU,MAAkB,aAAqB,CAAC,GAAI,GAAK,CAAC,EAAI,IAAe,WAAyB,GAAS,GAAO,CAAC,GAAI,IAAQ,GAAS,QAA6E,GAArE,EAAO,IAAO,GAAQ,GAAU,EAAO,IAAO,EAAK,GAAW,GAAU,CAAC,EAAuB,CAAC,GAAI,IAAiB,GAAQ,cAAc,OAAO,GAAQ,cAAc,QAAQ,SAAS,GAAE,CAAC,GAAQ,uBAAuB,GAAE,UAAU,CAAK,EAAE,IAAiB,GAAoB,yBAA6B,GAAwB,GAAiB,oBAAoB,WAAmC,GAAO,CAAC,EAAgB,GAAO,SAAY,GAAO,QAAW,WAAgC,GAAS,CAAC,MAAO,MAAmB,KAAK,SAAS,GAAO,CAAC,MAAO,aAAY,YAAY,GAAO,KAAQ,KAAK,GAAS,SAAS,GAAO,CAAC,EAAI,0CAA0C,IAAQ,GAAM,MAAU,aAA2B,CAAC,MAAG,CAAC,IAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,GAAU,KAAiB,CAAC,GAAU,KAAiB,MAAO,QAAQ,WAAmB,MAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,GAAS,CAAC,GAAI,IAAO,YAAY,qBAAqB,GAAS,GAAM,MAAO,IAAO,KAAK,EAA0B,SAAS,GAAO,CAAC,MAAA,GAAI,kCAAkC,IAAQ,EAAI,6CAAoD,EAAuB,OAA2C,EAAuB,GAA4B,GAAG,EAAO,gBAAoB,GAAG,CAAC,GAAI,IAAQ,EAAO,gBAAmB,EAAK,GAAiB,MAAO,UAAc,GAAd,CAAiB,MAAA,GAAI,sDAAsD,IAAU,GAAO,MAAA,MAAmB,MAAM,GAA0B,GAAG,GAAI,IAAW,CAAC,KAAK,SAAS,EAAG,EAAG,CAAC,WAAW,UAAU,CAAC,GAAmC,EAAG,IAAK,KAAK,aAAyB,CAAC,GAAQ,cAAc,YAA8B,EAAU,CAAC,KAAM,EAAU,OAAO,GAAE,CAAC,GAAI,GAAS,EAAU,QAAQ,GAAG,MAAO,IAAU,WAAW,CAAC,EAAS,GAAQ,SAAS,GAAI,GAAK,EAAS,KAAQ,MAAO,IAAO,SAAa,EAAS,MAAM,OAAW,GAAU,IAAI,KAAa,GAAU,IAAI,GAAM,EAAS,KAAW,EAAK,EAAS,MAAM,OAAU,KAAK,EAAS,MAAO,YAAgC,EAAK,EAAM,CAAC,GAAG,GAAM,GAAG,EAAK,IAAmB,QAAQ,EAAK,IAAM,EAAM,EAAE,MAAM,IAAI,GAAG,GAAO,EAAE,MAAO,GAAK,GAAO,YAAW,GAAM,UAAS,GAAI,GAAsB,QAAQ,KAAK,IAAoB,IAAgC,GAAO,EAAgB,EAAE,GAAG,GAAuB,EAAK,CAAC,GAAI,IAAW,QAAQ,gBAAgB,IAAoB,IAAgC,EAAE,EAAsB,GAAG,GAAG,IAAY,GAAuB,GAAE,EAAM,EAAgB,EAAK,GAAO,GAAE,MAAO,GAAG,GAAI,IAAI,QAAQ,OAAO,IAAoB,GAAM,EAAE,GAAO,GAAG,IAAK,EAAE,MAAO,IAAI,EAAgB,KAAK,+CAA+C,GAAI,EAAO,uBAA0B,GAAuB,YAAoB,EAAY,CAAC,GAAG,EAAuB,KAAK,qFAAqF,GAAG,CAAC,EAAY,KAAK,kDAAkD,IAAoB,EAAY,IAAI,GAAG,EAAE,GAAI,GAAQ,GAAQ,SAAS,GAAa,EAAQ,OAAO,YAAY,GAAQ,eAAe,GAAS,GAAQ,eAAe,OAAO,GAAQ,eAAe,QAAQ,EAAQ,QAAQ,GAAG,EAAQ,OAAO,QAAQ,OAAU,YAAsB,EAAY,CAAC,GAAG,EAAuB,KAAK,uFAAuF,GAAG,CAAC,EAAY,KAAK,oDAAoD,GAAI,GAAQ,GAAQ,SAAS,GAAa,EAAQ,OAAO,YAAY,CAAC,IAAM,WAAW,YAAuB,EAAY,CAAC,GAAG,EAAuB,KAAK,wFAAwF,GAAG,CAAC,EAAY,KAAK,qDAAqD,IAAoB,EAAY,IAAI,GAAG,EAAE,GAAI,GAAQ,GAAQ,SAAS,GAAa,GAAG,EAAQ,CAAC,GAAI,GAAO,EAAQ,OAAO,GAAQ,mBAAmB,IAAS,GAAI,IAAQ,CAAC,cAAc,GAAG,eAAe,GAAG,oBAAoB,UAAU,CAAuB,OAAlB,GAAgB,EAAU,EAAE,EAAE,EAAE,EAAgB,EAAE,EAAG,GAAQ,wBAAyB,YAAY,UAAU,CAAqB,OAAhB,GAAG,GAAQ,KAAa,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAoB,EAAG,EAAE,GAAG,EAAE,IAAoB,EAAG,IAAI,GAAG,EAAG,GAAI,GAAQ,EAAG,IAAI,IAAoB,GAAS,GAAG,EAAmC,OAAvB,GAAU,GAAQ,KAAa,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAoB,EAAU,EAAE,GAAG,EAAE,QAAQ,MAAM,IAAoB,EAAG,KAAK,EAAE,GAAW,QAAQ,MAAM,IAAoB,EAAG,IAAI,EAAE,GAAI,GAAyB,EAAG,CAAC,EAAsB,GAAG,GAA4C,IAAK,WAAW,UAAU,GAAG,SAAS,GAAG,mBAAmB,GAAG,gBAAgB,UAAU,GAAG,gBAAgB,UAAU,CAAC,KAAM,GAAQ,mBAAmB,OAAO,GAAG,GAAQ,mBAAmB,QAAW,GAAwB,MAAgB,MAA4B,WAAW,SAAS,EAAS,CAAC,GAAI,GAAG,KAAmB,GAAI,SAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,GAAU,QAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,GAAG,QAAQ,MAAM,IAAoB,EAAG,IAAI,EAAE,GAAG,QAAQ,MAAM,IAAoB,EAAG,IAAI,EAAE,GAAG,GAAQ,kBAAkB,GAAuB,EAAG,EAAE,YAAY,GAAyB,EAAE,EAAE,GAAM,GAAwB,YAAY,CAAC,IAAM,WAAY,aAAa,UAAU,CAAC,GAAQ,kBAAkB,GAAI,GAAG,KAAgB,QAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,IAAI,QAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,GAAG,GAAuB,EAAG,EAAE,YAAY,GAAyB,EAAE,EAAE,GAAG,YAAY,CAAC,IAAM,gBAAgB,oBAAoB,UAAU,CAAC,OAAQ,KAAK,IAAQ,SAAS,CAAC,GAAI,GAAQ,GAAQ,SAAS,GAAM,GAAS,EAAQ,QAAQ,GAAQ,mBAAmB,EAAQ,QAAS,GAAQ,SAAS,GAAG,OAAQ,GAAE,EAAE,EAAE,GAAQ,cAAc,OAAO,EAAE,EAAE,CAAC,GAAI,GAAO,GAAQ,cAAc,GAAG,EAAO,YAAY,GAAQ,cAAc,GAAG,OAAQ,GAAE,EAAE,EAAE,GAAQ,eAAe,OAAO,EAAE,EAAE,CAAC,GAAI,GAAO,GAAQ,eAAe,GAAO,EAAQ,EAAO,QAAQ,GAAQ,eAAe,GAAS,EAAO,YAAY,GAAQ,eAAe,IAAI,eAAe,SAAS,EAAQ,CAAC,GAAI,EAAe,CAAA,GAAG,EAAQ,iBAAiB,CAAC,GAAI,GAAU,IAAoB,EAAQ,iBAAiB,KAAK,GAAG,IAAoB,EAAQ,iBAAiB,KAAK,GAAG,EAAE,GAAM,GAAW,GAAM,EAAQ,kBAAkB,EAAQ,iBAAiB,EAAK,EAAQ,mBAAmB,EAAQ,WAAU,GAAM,EAAQ,WAAW,EAAQ,UAAU,EAAK,EAAQ,QAAO,GAAQ,OAAO,QAAQ,QAAM,mBAAmB,SAAS,EAAO,CAAC,GAAQ,gCAAgC,UAAU,CAAC,MAAO,IAAQ,SAAS,EAAO,QAAQ,kBAAkB,GAAQ,cAAc,KAAK,GAAQ,GAAQ,eAAe,OAAO,GAAQ,eAAe,QAAQ,GAAQ,GAAG,GAAQ,eAAe,EAAO,SAAS,EAAO,QAAQ,UAAa,gCAAgC,SAAS,EAAK,CAAC,IAAoB,IAA8C,GAAG,EAAE,GAAG,CAAC,WAAA,CAAe,IAAoB,IAA8C,GAAG,IAAI,sBAAsB,SAAS,EAAK,GAAG,uBAAuB,SAAS,EAAO,EAAkB,CAAC,EAAO,UAAU,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,KAAY,GAAI,EAAE,IAAqG,GAA3F,EAAO,SAAQ,IAAQ,oCAAoC,EAAO,QAAQ,kBAAoB,EAAE,cAAiB,EAAE,cAAiB,KAAgB,CAAC,GAAI,IAAO,GAAQ,SAAS,EAAE,cAAiB,GAAQ,GAAO,OAAO,YAAY,EAAE,KAAK,EAAE,cAAsB,QAAQ,MAAM,0CAA0C,GAAI,uBAAuB,EAAE,aAAgB,uCAAuC,GAAQ,oCAAoC,OAAU,OAAO,GAAG,KAAM,8BAA+B,aAAuD,KAAM,cAAe,GAAY,EAAE,cAAc,KAAM,gBAAiB,GAAc,EAAE,gBAAmB,KAAM,aAAc,GAAW,EAAE,gBAAmB,KAAM,eAAgB,GAAa,EAAE,gBAAmB,KAAM,SAAU,EAAO,OAAO,GAAQ,GAAkB,EAAkB,GAAW,EAAO,YAAY,GAAO,aAAa,MAAO,GAAO,oBAAoB,KAAM,QAAS,EAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,KAAM,WAAY,EAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,KAAM,QAAS,MAAM,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,KAAM,OAAO,CAAC,GAAI,IAAS,EAAO,SAAS,QAAQ,KAAK,IAAoB,EAAO,QAAQ,iBAAiB,IAAI,GAAM,IAAU,GAAQ,mBAAmB,WAAiB,KAAM,cAAe,GAAG,CAAC,GAAK,EAAE,kBAAqB,GAArB,CAAwB,GAAG,aAAa,IAAW,OAAO,KAAM,QAAW,MAAM,aAAc,GAAQ,mBAAmB,GAAgB,KAAM,iBAAkB,GAAQ,sBAAsB,EAAE,MAAc,EAAE,KAAK,SAAS,eAAgB,EAAO,YAAY,EAAE,MAAW,EAAI,kCAAkC,IAAK,GAAQ,oCAAoC,QAAW,EAAO,QAAQ,SAAS,EAAE,CAAC,EAAI,0BAA0B,EAAE,SAAS,IAAI,EAAE,OAAO,KAAK,EAAE,UAAa,GAAqB,GAAO,GAAG,UAAU,SAAS,EAAK,CAAC,EAAO,UAAU,CAAC,KAAK,MAAS,EAAO,GAAG,QAAQ,SAAS,EAAK,CAAC,EAAO,QAAQ,KAAQ,EAAO,GAAG,OAAO,SAAS,EAAK,KAAI,EAAO,YAAY,CAAC,IAAM,OAAO,UAAY,EAAO,qBAAwB,EAAW,WAAa,EAAW,WAAa,MAAc,qBAAqB,UAAU,CAAC,GAAI,GAAc,EAAW,6CAA6C,GAAQ,cAAc,KAAK,GAAI,QAAO,KAAiB,aAAa,UAAU,CAA6H,MAAzH,IAAQ,cAAc,QAAQ,GAAG,IAAQ,uBAAuB,GAAQ,uBAAuB,GAAQ,cAAc,KAAO,GAAQ,cAAc,OAAO,EAAS,GAAQ,cAAc,MAAkB,MAAM,aAAa,SAAS,EAAM,CAA+B,OAA1B,GAAE,YAAY,MAAM,EAAY,YAAY,MAAM,GAAE,IAAK,YAA6B,EAAS,EAAS,CAAC,GAA6B,EAAS,GAAU,GAAa,GAAU,EAAO,oBAAuB,GAAoB,aAA2B,CAAC,MAAO,IAAc,EAAO,iBAAoB,GAAiB,YAA0B,EAAI,EAAI,CAAC,MAAO,IAAU,IAAI,GAAK,GAAK,EAAO,iBAAoB,GAAiB,YAAwB,EAAU,EAAS,EAAK,EAAK,CAAC,GAAM,qBAAqB,GAAa,GAAW,SAAS,CAAC,EAAS,GAAa,GAAU,mBAAmB,EAAK,EAAK,GAAa,GAAM,qBAAqB,YAAsB,EAAK,EAAK,CAAC,GAAI,GAAW,MAAM,EAAK,GAAM,GAAI,IAAuB,EAAqB,GAAoB,UAAU,CAAC,GAAI,GAAE,QAAQ,SAAY,MAAO,GAAE,GAAG,IAAI,EAAE,GAAG,KAAa,EAAwB,GAAoB,UAAU,CAAC,MAAO,aAAY,MAAM,EAAO,+BAA0C,MAAO,UAAU,YAAa,GAAoB,QAAa,GAAoB,UAAU,CAAC,MAAO,aAAY,OAAO,YAAkB,EAAM,CAAC,MAAA,KAAoB,MAAqB,GAAG,EAAa,EAAM,YAAiB,EAAK,EAAI,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,EAAK,GAAK,YAA0C,EAAe,EAAa,CAAC,GAAG,GAAgB,EAAc,YAAY,CAAC,IAAM,wCAAwC,EAAwB,YAAY,CAAC,aAAe,EAAe,IAAM,2BAA2B,CAAC,GAAI,GAAQ,GAAQ,SAAS,GAAoB,EAAO,GAAS,EAAQ,OAAO,GAAG,CAAC,EAAQ,OAAO,EAAO,YAAY,CAAC,IAAM,uBAAuB,MAAO,GAAE,aAAiB,CAAC,KAAQ,YAAmC,EAAK,EAAO,EAAO,CAAC,GAAI,GAAK,GAAiB,EAAO,GAAQ,MAAO,IAAW,GAAM,MAAM,KAAK,GAAM,YAA2D,EAAe,EAAU,EAAE,YAAgC,EAAK,EAAI,EAAQ,CAAC,GAAG,GAAM,GAAG,EAAK,IAAmB,QAAQ,EAAK,GAAK,MAAM,IAAI,GAAI,EAAgO,CAAC,GAAG,QAAQ,KAAK,IAAoB,GAAM,IAAI,EAAK,MAAM,GAA8I,OAAvI,GAAK,YAAY,MAAU,GAAK,EAAK,EAAY,GAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,KAAc,CAAwB,GAAvB,EAAK,YAAY,MAAS,EAAK,GAAM,MAAA,IAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,GAAS,IAAuF,GAAnF,GAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,GAAM,IAAU,EAAG,MAAqD,GAA/C,KAAkD,QAAQ,KAAK,IAAoB,GAAM,IAAI,EAAK,MAAM,GAAG,GAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,GAAM,MAAO,OAAj1B,CAAC,GAAI,IAAI,QAAQ,KAAK,IAAoB,GAAM,EAAE,EAAI,GAAS,GAAG,KAAM,YAAY,MAAM,IAAI,GAAG,KAAM,YAAY,MAAM,GAAG,GAAG,KAAM,KAAK,MAAO,GAAE,KAAK,6CAA6C,IAA+oB,YAAgC,EAAK,EAAI,EAAI,CAAC,IAAmB,WAAW,EAAK,EAAI,EAAI,GAAK,aAAwC,CAAC,MAAG,GAAmC,AAAA,cAAM,OAAO,OAAc,UAAU,oBAAuB,YAA6C,EAAM,EAAK,CAA2J,OAAtJ,GAAY,UAAU,OAAO,EAAM,EAAM,KAAgB,GAAsB,EAAgB,GAAK,GAAW,GAAsB,GAAO,GAAE,IAAM,EAAU,GAAE,EAAE,GAAE,EAAY,KAAI,CAAC,GAAI,IAAI,UAAU,EAAE,IAAG,IAAoB,GAAE,IAAG,GAAI,GAAI,IAAI,GAA0C,EAAM,GAAsB,GAAK,GAAM,MAAA,IAAa,GAAc,GAAI,GAAI,IAA+C,GAAO,GAAsB,GAAG,YAA0B,EAAO,EAAI,CAAC,GAAsB,OAAO,EAAE,GAAI,GAAW,IAAR,IAAM,EAAQ,EAAG,IAAmB,MAAU,CAAC,GAAI,GAAO,EAAG,IAAO,GAAQ,EAAI,GAAE,IAAM,GAAsB,KAAK,EAAO,IAAoB,KAAO,GAAG,IAAoB,IAAM,EAAE,EAAI,MAAO,IAAsB,YAA+C,EAAM,EAAY,EAAK,CAAC,GAA+C,OAAO,EAA0B,OAAV,GAAE,GAAM,EAAU,GAAE,EAAE,GAAE,EAAY,KAAK,GAA+C,IAAG,IAAoB,EAAE,IAAG,GAAI,IAAa,EAAM,EAAM,GAAM,GAAyC,GAAW,CAAC,EAAM,GAA9C,GAAqB,GAA4B,MAAO,IAAK,MAAM,KAAK,IAAgD,aAAoC,CAAC,MAAO,KAAmB,OAAO,YAAmC,EAAK,CAAC,GAAG,CAAC,MAAA,GAAW,KAAK,EAAK,GAAO,WAAW,QAAQ,IAAI,GAA2B,EAAW,QAAe,QAAQ,EAAR,GAAa,YAAiC,EAAc,CAAC,GAAI,GAAQ,KAA4B,GAAG,GAAe,EAAS,MAAO,GAAM,GAAI,GAAY,WAAW,GAAG,EAAc,EAAa,MAAO,GAAM,OAAQ,GAAQ,EAAE,GAAS,EAAE,GAAS,EAAE,CAAC,GAAI,IAAkB,EAAS,GAAE,GAAG,GAAS,GAAkB,KAAK,IAAI,GAAkB,EAAc,WAAW,GAAI,IAAQ,KAAK,IAAI,EAAY,GAAQ,KAAK,IAAI,EAAc,IAAmB,QAAY,GAAY,GAA0B,IAAS,GAAG,GAAa,MAAO,GAAM,MAAO,GAAM,GAAI,IAAS,CAAC,eAAe,EAAE,wBAAwB,UAAU,CAAC,OAAQ,GAAE,GAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,EAAG,GAAS,eAAe,GAAG,GAAS,cAAc,GAAG,GAAS,cAAc,IAAI,6BAA6B,UAAU,CAAK,GAAS,gCAAgC,IAAW,KAAK,GAAS,yBAAyB,GAAS,+BAA+B,KAAO,cAAc,GAAG,UAAU,SAAS,EAAe,EAAW,EAAS,CAAC,WAAgC,GAAK,GAAK,CAAC,GAAG,GAAK,QAAQ,GAAK,OAAO,MAAO,GAAM,OAAQ,MAAK,IAAM,GAAG,GAAK,KAAI,GAAK,IAAG,MAAO,GAAM,MAAO,GAAK,OAAQ,MAAK,IAAS,cAAc,CAAC,GAAI,IAAK,GAAS,cAAc,IAAG,GAAG,GAAK,gBAAgB,GAAgB,EAAuB,GAAK,SAAS,GAAW,OAAQ,GAAS,cAAc,KAAK,CAAC,eAAe,EAAe,WAAW,EAAW,SAAS,IAAW,GAAS,cAAc,KAAK,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,WAAW,GAAE,cAAc,oBAAoB,SAAS,EAAe,CAAC,OAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAM,GAAS,cAAc,GAAG,gBAAgB,GAAgB,IAAS,cAAc,OAAO,EAAE,GAAG,EAAE,IAAK,+BAA+B,UAAU,CAAC,MAAO,IAAS,gBAAgB,GAAS,oBAAoB,qBAAqB,iBAAiB,UAAU,CAAC,GAAI,GAAS,iCAAyC,OAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAE,CAAC,GAAI,GAAK,GAAS,cAAc,GAAG,GAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,EAAK,eAAe,MAAM,KAAK,EAAK,YAAY,cAAc,GAAG,0BAA0B,SAAS,EAAO,EAAgB,CAAC,OAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAM,GAAS,cAAc,GAAG,QAAQ,GAAS,EAAC,GAAiB,GAAiB,GAAS,cAAc,GAAG,kBAAkB,GAAS,eAAe,MAAQ,eAAe,SAAS,EAAE,CAAC,GAAI,GAAE,GAAS,cAAc,GAAG,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,GAAS,cAAc,OAAO,EAAE,IAAI,wBAAwB,SAAS,EAAa,CAAC,GAAI,GAAe,SAAwB,EAAM,CAAC,EAAE,GAAS,eAAe,GAAS,oBAAoB,EAAa,GAAS,mBAAmB,EAAa,YAAY,GAAO,GAAS,mBAAmB,EAAE,GAAS,gBAAgB,GAAG,EAAa,aAAc,EAAa,kBAAkB,EAAe,EAAa,OAAO,iBAAiB,EAAa,gBAAgB,EAAe,EAAa,YAAY,GAAS,cAAc,KAAK,GAAc,GAAS,mCAAoC,QAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAM,GAAS,cAAc,GAAG,QAAQ,EAAa,QAAQ,GAAS,cAAc,GAAG,iBAAiB,EAAa,iBAAiB,GAAS,eAAe,MAAS,+BAA+B,SAAS,EAAa,EAAiB,EAAY,EAAU,GAAS,CAAC,GAAI,IAAS,KAAgB,GAAQ,GAAW,IAAI,IAAoB,IAAS,GAAG,EAAY,IAAoB,GAAQ,GAAG,GAAG,EAAU,IAAoB,GAAQ,GAAG,GAAG,GAAS,GAA4B,EAAE,EAAa,UAAU,EAAiB,EAAU,IAAS,GAAa,KAAW,gCAAgC,SAAS,EAAa,CAAC,OAAO,OAAmB,GAAE,MAAO,OAAO,GAAE,MAAO,IAAQ,4CAA4C,MAAO,KAAe,qBAAqB,SAAS,EAAO,CAAC,MAAI,GAAmB,GAAQ,OAAa,UAAa,GAAQ,OAAa,UAAiB,GAAQ,EAAO,SAAS,EAAO,SAAS,GAAtH,IAA0H,kBAAkB,UAAU,CAAC,MAAO,UAAS,mBAAmB,SAAS,0BAA0B,YAAyB,EAAS,CAAC,GAAI,GAAO,GAAgB,GAAU,EAAM,EAAQ,GAAQ,GAAQ,MAAA,IAAa,EAAS,EAAQ,GAAe,EAAQ,YAAkE,EAAa,EAAa,EAAM,EAAO,CAAC,GAAI,IAAS,KAAgB,GAAQ,GAAW,IAAQ,GAAgB,EAAK,GAAc,IAAgB,GAAgB,IAAc,IAAoB,IAAS,GAAG,GAAgB,IAAoB,GAAQ,GAAG,GAAG,EAAM,IAAoB,GAAQ,GAAG,GAAG,EAAO,GAA4B,EAAE,EAAa,UAAU,EAAE,GAAgB,IAAS,GAAa,IAAU,YAA+D,EAAa,EAAa,EAAM,EAAO,CAAC,EAAa,EAAa,GAAa,GAAc,GAAG,GAAyD,EAAa,EAAa,EAAM,GAAQ,YAAgC,EAAQ,CAAC,MAAO,GAAQ,EAAE,GAAa,GAAS,EAAQ,GAAI,IAAmB,CAAC,EAAE,MAAO,WAAW,YAAY,SAAS,EAAE,MAAO,SAAS,YAAY,OAAO,GAAG,YAAyB,EAAO,CAAC,EAAO,GAAuB,GAAQ,GAAI,GAAW,GAAmB,IAAU,OAAO,WAAW,YAAY,SAAS,cAAc,GAAQ,QAAW,MAAO,GAAW,YAA+B,EAAO,CAAC,MAAO,IAAgB,GAAQ,YAA4D,EAAO,EAAM,EAAO,CAAC,GAAI,GAAO,GAAsB,GAAQ,GAAG,CAAC,EAAO,MAAM,GAA2I,GAArI,EAAO,iBAAiB,KAAoB,EAAO,iBAAiB,GAAG,EAAM,IAAoB,EAAO,gBAAgB,GAAG,GAAG,GAAU,EAAO,iBAAiB,CAAC,EAAO,4BAA4B,CAAI,EAAO,iBAAgB,GAAO,EAAO,iBAAgB,GAAI,IAAmB,GAAM,GAAG,EAAO,aAAa,EAAO,YAAY,MAAM,CAAC,GAAI,IAAa,EAAO,YAAY,MAAM,aAAa,MAAM,GAAmB,GAAa,KAAK,GAAG,GAAa,KAAK,GAAG,GAAa,KAAK,EAAO,OAAO,GAAa,KAAK,EAAO,OAAO,EAAO,MAAM,EAAM,EAAO,OAAO,EAAU,IAAoB,EAAO,YAAY,MAAM,SAAS,EAAE,EAAE,EAAM,WAAiB,EAAO,gBAAgB,CAAC,GAAI,IAAa,IAAoB,EAAO,gBAAgB,GAAG,GAAG,MAAA,IAAsD,GAAa,EAAO,EAAM,GAAe,MAAO,OAAM,GAAG,MAAO,GAAE,YAAyD,EAAO,EAAM,EAAO,CAAC,MAAG,GAA8B,GAAoC,EAAE,EAAE,EAAO,EAAM,GAAe,GAAmD,EAAO,EAAM,GAAQ,YAA6C,EAAO,EAAM,EAAO,CAAC,GAAI,GAAO,GAAsB,GAAQ,MAAG,GAAe,GAAmD,EAAO,EAAM,GAAoB,GAAgD,EAAO,EAAM,GAAS,YAA+C,EAAU,EAAE,YAAqC,EAAS,EAAK,EAAE,YAA+C,EAAI,CAAC,GAAI,GAAI,EAAI,aAAa,0BAA0B,GAAG,EAAK,MAAA,GAAI,oBAAuB,SAAS,EAAM,EAAQ,CAAC,EAAI,yBAA4B,EAAM,IAAU,EAAI,oBAAuB,SAAS,EAAK,EAAM,GAAM,GAAU,CAAC,EAAI,yBAA4B,EAAK,EAAM,GAAM,KAAY,EAAI,sBAAyB,SAAS,EAAK,EAAM,GAAK,GAAQ,GAAU,CAAC,EAAI,2BAA8B,EAAK,EAAM,GAAK,GAAQ,KAAmB,EAAG,YAAgD,EAAI,CAAC,GAAI,GAAI,EAAI,aAAa,2BAA2B,GAAG,EAAK,MAAA,GAAI,kBAAqB,UAAU,CAAC,MAAO,GAAI,wBAA2B,EAAI,kBAAqB,SAAS,EAAI,CAAC,EAAI,qBAAwB,IAAM,EAAI,gBAAmB,SAAS,EAAI,CAAC,EAAI,mBAAsB,IAAM,EAAI,cAAiB,SAAS,EAAI,CAAC,MAAO,GAAI,iBAAoB,IAAa,EAAG,YAA2C,EAAI,CAAC,GAAI,GAAI,EAAI,aAAa,sBAAsB,GAAG,EAAK,MAAA,GAAI,YAAe,SAAS,EAAE,EAAK,CAAC,EAAI,iBAAoB,EAAE,IAAc,EAAG,YAAyC,EAAI,CAAC,MAAM,CAAC,CAAE,GAAI,eAAe,EAAI,aAAa,qBAAqB,GAAI,IAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,EAAE,YAAY,SAAqB,EAAU,CAAK,GAAG,WAAW,IAAG,UAAU,IAAY,SAAS,SAAS,EAAM,CAAsB,OAAjB,GAAI,GAAG,UAAkB,EAAE,EAAM,OAAO,EAAE,EAAI,IAAK,EAAM,GAAG,KAAK,MAAO,IAAK,UAAU,SAAS,EAAO,EAAM,EAAO,EAAO,CAAe,OAAV,IAAO,GAAW,GAAE,EAAE,GAAE,EAAM,EAAE,GAAE,CAAC,GAAI,IAAI,EAAO,IAAoB,EAAO,GAAE,GAAG,GAAG,GAAG,IAAQ,GAAa,IAAoB,EAAO,GAAE,GAAG,GAAG,GAAI,EAAE,OAAU,IAAK,MAAO,KAAQ,cAAc,SAAS,EAAO,EAAuB,CAAC,GAAI,GAAI,EAAO,WAAW,QAAQ,GAAwB,GAAG,CAAC,EAAI,MAAO,GAAE,GAAI,GAAO,GAAG,gBAAgB,EAAI,GAAwB,MAAO,IAAQ,gBAAgB,SAAS,EAAI,EAAuB,CAAC,GAAI,GAAO,GAAQ,GAAG,IAAoB,EAAO,GAAG,GAAG,KAAgB,GAAI,GAAQ,CAAC,OAAO,EAAO,WAAW,EAAuB,QAAQ,EAAuB,aAAa,MAAM,GAAK,MAAG,GAAI,QAAO,GAAI,OAAO,YAAY,GAAQ,GAAG,SAAS,GAAQ,EAAW,OAAO,GAAuB,2BAA4B,aAAa,EAAuB,4BAA2B,GAAG,eAAe,GAAgB,GAAQ,mBAAmB,SAAS,EAAc,CAAC,MAAA,IAAG,eAAe,GAAG,SAAS,GAAe,EAAO,IAAI,GAAM,GAAG,gBAAgB,GAAG,eAAe,MAAY,CAAE,IAAe,CAAC,KAAQ,WAAW,SAAS,EAAc,CAAC,MAAO,IAAG,SAAS,IAAgB,cAAc,SAAS,EAAc,CAAI,GAAG,iBAAiB,GAAG,SAAS,IAAe,IAAG,eAAe,MAAQ,MAAO,KAAW,UAAS,GAAS,0BAA0B,GAAG,SAAS,GAAe,MAAM,QAAW,GAAG,SAAS,IAAgB,GAAG,SAAS,GAAe,MAAM,QAAO,IAAG,SAAS,GAAe,MAAM,OAAO,YAAY,QAAU,GAAM,GAAG,SAAS,GAAe,QAAQ,GAAG,SAAS,GAAe,MAAM,eAAe,SAAS,EAAQ,CAAuC,GAAlC,GAAQ,GAAQ,GAAG,gBAAkB,CAAA,EAAQ,mBAA0B,CAAA,EAAQ,mBAAmB,GAAK,GAAI,GAAM,EAAQ,MAAM,GAAsC,GAAO,GAAuC,GAAO,GAAkC,GAAO,EAAM,sBAAsB,EAAM,aAAa,4BAA4B,GAAgC,GAAO,GAAI,GAAK,EAAM,0BAA0B,GAAG,EAAK,QAAQ,SAAS,EAAI,CAAI,EAAI,QAAQ,gBAAgB,GAAG,EAAI,QAAQ,SAAS,GAAG,EAAM,aAAa,OAAS,qBAAqB,SAAS,EAAQ,CAAkO,OAA7N,GAAE,GAAG,SAAS,GAAa,EAAO,GAAG,aAAa,GAAS,CAAC,SAAS,GAAG,iBAAiB,EAAE,mBAAmB,GAAG,0BAA0B,IAAQ,EAAO,EAAO,SAAa,GAAY,GAAM,oBAAoB,EAAE,OAAe,GAAE,EAAE,GAAE,GAAY,EAAE,GAAE,CAAC,GAAI,IAAE,GAAM,iBAAiB,EAAE,IAAO,GAAK,GAAE,KAAK,EAAO,iBAAiB,KAAK,IAAI,EAAO,iBAAiB,GAAK,OAAO,GAAM,GAAK,MAAM,KAAK,KAAK,IAAK,GAAK,MAAM,EAAE,GAAK,YAAY,OAAM,GAAI,IAAI,GAAM,mBAAmB,EAAE,IAAM,GAAG,GAAI,CAAC,GAAI,IAAG,GAAG,SAAS,GAAG,UAAU,EAAO,IAAM,CAAC,GAAE,KAAK,IAAI,GAAG,SAAS,IAAI,GAAI,OAAQ,IAAE,EAAE,GAAE,GAAE,KAAK,EAAE,GAAE,CAAC,GAAI,IAAE,GAAK,IAAI,GAAE,IAAI,GAAI,GAAM,mBAAmB,EAAE,IAAG,GAAG,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,IAAI,QAAa,GAAqC,CAAC,UAAU,YAAY,oBAAoB,YAA6C,EAAO,EAAW,CAAC,GAAI,GAAE,GAAY,EAAM,EAAgB,IAAoB,EAAG,KAAI,IAAQ,GAAkB,CAAC,MAAQ,CAAC,CAAC,IAAoB,EAAG,IAAG,IAAI,MAAQ,CAAC,CAAC,IAAoB,EAAG,IAAG,IAAI,QAAU,CAAC,CAAC,IAAoB,EAAG,IAAG,IAAI,UAAY,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,mBAAqB,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,sBAAwB,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,gBAAkB,GAAqC,GAAiB,6BAA+B,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,aAAa,IAAoB,EAAG,KAAI,IAAI,aAAa,IAAoB,EAAG,KAAI,IAAI,0BAA0B,IAAoB,EAAG,KAAI,IAAI,oBAAoB,IAAoB,EAAG,KAAI,IAAI,yBAAyB,IAAoB,EAAG,KAAI,IAAI,6BAA6B,IAAoB,EAAG,KAAI,KAAS,GAAO,GAAsB,GAA6B,GAAlB,CAAC,IAAoB,GAAkB,oBAAqB,MAAO,GAAE,GAAI,IAAc,GAAG,cAAc,GAAO,IAAmB,MAAO,IAAc,YAA0C,EAAG,EAAG,CAAC,MAAO,IAAoC,EAAG,GAAI,GAAI,IAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,SAAS,EAAO,EAAK,CAAC,GAAI,GAAO,GAAS,QAAQ,GAAW,IAAO,GAAG,IAAO,GAAK,MAAS,EAAE,EAAI,GAAK,GAAkB,EAAO,IAAI,EAAO,OAAO,GAAO,EAAO,KAAK,IAAQ,QAAQ,OAAU,IAAI,UAAU,CAAC,GAAS,SAAS,EAAE,GAAI,GAAI,IAAoB,GAAS,QAAQ,GAAG,GAAG,MAAO,IAAK,OAAO,SAAS,EAAI,CAAC,GAAI,GAAI,GAAa,GAAK,MAAO,IAAK,MAAM,SAAS,EAAI,EAAK,CAAC,MAAO,KAAM,YAAmB,EAAG,CAAC,MAAG,GAA8B,GAAoC,EAAE,EAAE,GAAW,EAAE,YAAkB,EAAG,EAAW,EAAY,EAAO,GAAU,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,EAAG,EAAW,EAAY,EAAO,IAAW,YAAmB,EAAG,EAAI,EAAO,EAAK,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,EAAG,EAAI,EAAO,GAAgB,OAAN,IAAI,EAAU,GAAE,EAAE,GAAE,EAAO,KAAI,CAAqF,OAAhF,IAAI,IAAoB,EAAI,GAAE,GAAG,GAAO,GAAI,IAAoB,EAAK,IAAE,EAAE,IAAI,GAAW,GAAE,EAAE,GAAE,GAAI,KAAK,GAAS,UAAU,EAAG,IAAmB,GAAI,KAAI,IAAK,GAAI,MAAA,KAAoB,GAAM,GAAG,GAAW,EAAE,YAA8B,EAAQ,CAAC,GAAI,GAAQ,GAAQ,mBAAmB,MAAS,GAAQ,IAAU,YAA+B,EAAQ,EAAI,CAAC,GAAQ,mBAAmB,KAAK,UAAU,CAAC,GAAU,IAAI,GAAS,KAAO,YAAqB,EAAa,CAAC,GAAG,EAAuB,KAAK,sFAAsF,GAAI,GAAO,GAAQ,eAAe,GAAG,EAAO,UAAU,OAAU,KAAK,kBAAkB,GAAG,CAAC,EAAa,YAAY,KAAK,kCAAkC,GAAQ,eAAe,KAAK,GAAqC,OAAzB,GAAU,GAAQ,IAAI,GAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAG,IAAoB,EAAU,EAAE,GAAG,GAAG,EAAE,GAAI,IAAU,EAAa,UAAU,EAAa,UAAc,GAAQ,GAAQ,SAAS,EAAa,aAAa,CAAC,OAAO,EAAO,UAAU,EAAa,UAAU,UAAU,EAAa,UAAU,kBAAkB,EAAa,kBAAkB,iBAAiB,EAAa,aAAiB,GAAI,GAAQ,kBAAkB,EAAE,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,EAAa,UAAU,QAAQ,MAAM,IAAoB,GAAK,MAAK,GAAG,GAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,GAAQ,kBAAkB,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,EAAa,WAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,IAAW,QAAQ,MAAM,IAAoB,GAAK,MAAK,GAAG,EAAa,WAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,GAAG,IAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,IAAI,GAAG,EAAa,UAAU,GAAI,IAAY,KAAkC,GAAc,GAAY,GAAG,QAAQ,MAAM,IAAoB,GAAK,MAAK,GAAG,IAAe,EAAO,QAAQ,GAAQ,GAAI,IAAI,CAAC,IAAM,MAAM,cAAgB,EAAa,aAAa,IAAM,EAAa,IAAI,iBAAmB,EAAa,YAAY,UAAY,EAAa,UAAU,UAAY,EAAa,WAAW,EAAO,WAAW,UAAU,CAAC,GAAI,KAAK,YAAY,MAAM,EAAO,YAAY,GAAI,EAAa,eAAkB,EAAO,QAAQ,GAAO,aAAa,MAAO,GAAO,YAAY,YAAyB,EAAY,EAAK,EAAc,EAAI,CAAC,GAAG,MAAO,oBAAoB,YAAa,MAAA,GAAI,uFAA8F,EAAE,GAAG,CAAC,EAAa,MAAA,GAAI,qDAA4D,GAAG,GAAI,IAAa,GAAO,GAAM,EAAE,GAAG,GAAyB,IAAa,SAAS,GAAG,IAAQ,MAAO,IAAsC,UAAU,EAAY,EAAK,EAAc,GAAK,GAAG,GAAM,MAAO,IAAM,GAAI,IAAU,EAAM,GAAU,EAAM,GAAS,EAAK,GAAM,GAAM,GAAI,IAAU,IAAoB,GAAM,GAAG,IAAW,MAAM,GAAU,IAAoB,EAAK,GAAG,GAAG,GAAS,IAAoB,EAAK,IAAI,KAAK,GAAO,GAAU,QAAQ,GAAI,IAAkB,IAAW,EAAK,GAAmB,GAAU,GAAU,GAAG,IAAgB,KAAW,GAAU,GAAO,GAAU,IAAqC,OAA9B,IAAiB,GAAQ,KAAa,GAAE,EAAE,GAAE,KAAK,EAAE,EAAE,GAAE,IAAqB,KAAkB,GAAG,IAAG,EAAE,IAAoB,GAAa,GAAG,GAAiB,IAAoB,GAAiB,IAAI,GAAG,GAAiB,GAAI,IAAQ,GAAiB,IAAI,IAAoB,IAAS,GAAG,GAAQ,GAAI,IAAa,CAAC,UAAU,GAAU,UAAU,GAAU,kBAAkB,GAAkB,SAAS,GAAS,aAAa,EAAc,YAAY,GAAiB,IAAI,EAAI,aAAa,IAAc,MAAG,GAAwB,IAAa,IAAI,cAAc,YAAY,GAAa,KAAmB,GAAY,IAAqB,EAAE,YAAkB,EAAK,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,GAAM,OAAO,OAAW,IAAG,MAAO,WAAW,IAAG,GAAI,GAAY,WAAW,MAAO,GAAY,UAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,SAAS,SAAS,OAAO,QAAQ,QAAQ,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,IAAG,MAAO,YAAY,QAAQ,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,IAAG,MAAM,OAAQ,SAAS,SAAS,OAAO,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,QAAQ,IAAG,MAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,GAAE,MAAO,UAAU,QAAQ,QAAQ,IAAG,MAAO,QAAQ,QAAQ,QAAQ,IAAG,MAAO,gBAAgB,QAAQ,GAAE,MAAO,WAAW,QAAQ,IAAG,MAAO,QAAQ,QAAQ,IAAG,MAAO,UAAU,GAAE,MAAO,aAAa,GAAE,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,GAAE,MAAO,SAAS,KAAI,MAAO,QAAQ,IAAG,MAAO,QAAQ,GAAE,MAAO,QAAQ,GAAE,MAAO,OAAO,IAAG,MAAO,OAAO,IAAI,MAAG,OAAO,YAAY,UAAgB,UAAU,qBAAwB,EAAY,MAAA,IAAS,IAAU,GAAO,GAAuB,GAAQ,sBAAsB,GAAI,IAAU,GAAqB,CAAC,KAAK,GAAQ,GAAgD,GAAU,GAAS,GAAU,IAAc,GAAc,CAAC,EAAI,GAAe,EAAI,GAAa,EAAI,GAAiC,EAAI,GAAO,EAAI,GAA0B,EAAI,GAAkD,EAAI,GAAuB,EAAI,GAAuB,EAAI,GAAoB,EAAI,GAAuB,EAAI,GAA8B,EAAI,GAAsC,EAAI,GAAwB,EAAI,GAAoC,EAAI,GAAsC,EAAI,GAA4B,EAAI,GAAiC,EAAI,GAAU,EAAI,GAAS,EAAI,GAAU,EAAI,GAAe,EAAI,GAAY,EAAO,WAAc,EAAI,GAAqB,EAAI,GAAsB,EAAI,GAAgB,EAAI,IAAc,GAAI,KAAiB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAiB,EAAO,iBAAoB,UAAU,CAAC,MAAO,IAAiB,EAAO,iBAAoB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAuB,EAAO,uBAA0B,UAAU,CAAC,MAAO,IAAuB,EAAO,uBAA0B,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,EAAO,EAAO,OAAU,UAAU,CAAC,MAAO,GAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAsB,EAAO,sBAAyB,UAAU,CAAC,MAAO,IAAsB,EAAO,sBAAyB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAY,EAAO,YAAe,UAAU,CAAC,MAAO,IAAY,EAAO,YAAe,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAkB,EAAO,kBAAqB,UAAU,CAAC,MAAO,IAAkB,EAAO,kBAAqB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAkB,EAAO,kBAAqB,UAAU,CAAC,MAAO,IAAkB,EAAO,kBAAqB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA4B,EAAO,4BAA+B,UAAU,CAAC,MAAO,IAA4B,EAAO,4BAA+B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAyB,EAAO,yBAA4B,UAAU,CAAC,MAAO,IAAyB,EAAO,yBAA4B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA6C,EAAO,6CAAgD,UAAU,CAAC,MAAO,IAA6C,EAAO,6CAAgD,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAgD,EAAO,gDAAmD,UAAU,CAAC,MAAO,IAAgD,EAAO,gDAAmD,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA4C,EAAO,4CAA+C,UAAU,CAAC,MAAO,IAA4C,EAAO,4CAA+C,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAmC,EAAO,mCAAsC,UAAU,CAAC,MAAO,IAAmC,EAAO,mCAAsC,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAsC,EAAO,sCAAyC,UAAU,CAAC,MAAO,IAAsC,EAAO,sCAAyC,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA0C,EAAO,0CAA6C,UAAU,CAAC,MAAO,IAA0C,EAAO,0CAA6C,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA4B,EAAO,4BAA+B,UAAU,CAAC,MAAO,IAA4B,EAAO,4BAA+B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAyB,EAAO,yBAA4B,UAAU,CAAC,MAAO,IAAyB,EAAO,yBAA4B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA6B,EAAO,6BAAgC,UAAU,CAAC,MAAO,IAA6B,EAAO,6BAAgC,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA6C,EAAO,6CAAgD,KAAS,GAA+B,EAAO,+BAAkC,MAAM,EAAO,MAAS,GAAM,EAAO,QAAW,GAAQ,EAAO,QAAW,GAAQ,EAAO,WAAc,EAAW,EAAO,WAAc,GAAW,GAAI,IAAU,YAAoB,EAAO,CAAC,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,EAAO,IAAI,KAAK,OAAO,EAAO,GAAsB,YAAoB,CAAK,IAAU,KAAU,IAAU,IAAsB,IAAW,YAAa,EAAK,CAAuB,GAAtB,EAAK,GAAM,EAAc,GAAgB,EAAG,OAAO,GAAG,EAAuB,CAAC,EAAoB,GAAQ,YAAY,CAAC,IAAM,WAAW,OAAgB,GAAT,KAAY,GAAgB,EAAG,OAAO,YAAgB,CAAI,IAAiB,IAAU,GAAK,EAAO,UAAa,GAAQ,CAAA,IAAa,MAAc,KAAU,EAAoB,GAAW,EAAO,sBAAwB,EAAO,uBAA0B,OAAa,EAAO,UAAc,GAAO,UAAa,cAAc,WAAW,UAAU,CAAC,WAAW,UAAU,CAAC,EAAO,UAAa,KAAK,GAAG,KAAS,IAAQ,IAAS,EAAO,IAAO,GAAI,YAAc,EAAO,EAAS,CAAC,GAAG,CAAA,IAAU,IAAe,IAAS,GAAU,CAAA,GAAG,CAAC,GAAa,EAAwB,KAAA,aAAY,CAAC,IAAM,cAAc,WAAa,IAAe,GAAI,IAAW,GAAkB,IAAqB,IAAQ,sBAAsB,GAAW,EAAO,KAAiB,EAAO,QAAU,EAAO,OAAU,GAAQ,GAAM,IAAK,EAAM,EAAO,GAAI,IAAW,KAAS,GAAG,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,OAAO,GAAG,EAAO,QAAW,QAAS,MAAG,IAAwB,IAAc,GAAM,GAAQ,cAAa,KAGj+8D,EAA8B,UAInC,MAAO,IAAY,UAAY,MAAO,IAAW,SACnD,EAAO,QAAU,EACV,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,UAAW,CAAE,MAAO,KACxB,MAAO,IAAY,UAC1B,GAAQ,8BAAmC,KCpB7C,GAAA,GAAA,CAAA,EAAA,IAAA,CACA,GAAI,GAAqB,UAAW,CAClC,GAAI,GAAa,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,GAAa,GAAc,YAEpE,SAAS,EAAmB,CAC1B,EAAoB,GAAqB,GAE3C,GAAI,GAAO,MAAO,IAAoB,YAAY,EAAkB,GAAO,EAAoB,EAAmB,EAAO,MAAS,GAAI,SAAQ,SAAS,EAAQ,GAAO,CAAC,EAAoB,EAAQ,EAAmB,KAAS,GAAI,GAAgB,GAAO,EAAI,IAAI,IAAO,GAAW,EAAO,eAAe,IAAM,GAAgB,GAAK,EAAO,IAAM,GAAI,GAAW,GAAO,EAAY,iBAAqB,EAAM,SAAS,EAAO,GAAQ,CAAC,KAAM,KAAa,EAAmB,GAAU,EAAsB,GAAU,EAAoB,GAAU,EAAqB,GAAM,EAAmB,MAAO,SAAS,SAAS,EAAsB,MAAO,gBAAgB,WAAW,EAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,EAAqB,CAAC,GAAoB,CAAC,GAAqB,CAAC,EAAsB,GAAI,GAAgB,GAAG,WAAoB,EAAK,CAAC,MAAG,GAAO,WAAsB,EAAO,WAAc,EAAK,GAAwB,EAAgB,EAAK,GAAI,GAAM,EAAU,EAAW,EAAmB,EAAW,EAAY,EAAwB,GAAuB,EAAwB,KAAQ,QAAQ,GAAiB,IAAS,EAAgB,UAAU,IAAI,EAAM,SAAoB,EAAS,GAAO,CAAC,MAAI,IAAO,GAAe,eAAU,GAAS,GAAiB,MAAQ,EAAS,EAAS,UAAa,GAAiB,EAAO,aAAgB,EAAS,GAAO,KAAK,SAAS,EAAW,SAAoB,EAAS,CAAC,GAAI,IAAI,EAAM,EAAS,IAAM,MAAI,IAAI,QAAQ,IAAI,GAAI,YAAW,KAAK,EAAO,GAAI,QAAe,IAAQ,QAAQ,KAAQ,OAAO,GAAG,GAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,EAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,SAAS,EAAG,CAAC,GAAG,CAAE,aAAc,KAAa,KAAM,KAAM,QAAQ,GAAM,qBAAqB,IAAO,EAAM,SAAS,EAAO,CAAC,QAAQ,KAAQ,IAAS,EAAO,QAAW,UAAU,CAAC,MAAM,+BAAsC,EAAyB,OAAO,OAAM,aAAa,GAAM,SAAoB,EAAE,CAAC,MAAO,MAAK,KAAI,EAAW,SAAoB,EAAE,CAAC,GAAI,IAAK,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,IAAK,KAAK,EAAE,UAAU,EAAO,MAAO,KAAO,UAAiB,KAAS,MAAO,aAAY,YAAa,EAAW,WAAmB,MAAO,YAAW,aAAa,GAAW,WAAa,MAAO,OAAO,YAAY,GAAM,SAAS,EAAO,CAAC,KAAK,KAAY,MAAO,QAAQ,aAAgB,OAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAe,IAAoB,IAA0B,GAAuB,EAAgB,KAAK,SAAS,KAAa,MAAO,WAAW,aAAa,SAAS,eAAe,GAAgB,SAAS,cAAc,KAAO,GAAY,GAAgB,GAAc,EAAgB,QAAQ,WAAW,EAAG,EAAgB,EAAgB,OAAO,EAAE,EAAgB,YAAY,KAAK,GAAQ,EAAgB,GAAI,EAAM,SAAS,EAAI,CAAC,GAAI,IAAI,GAAI,gBAAe,MAAA,IAAI,KAAK,MAAM,EAAI,IAAO,GAAI,KAAK,MAAa,GAAI,cAAiB,GAAuB,GAAW,SAAS,EAAI,CAAC,GAAI,IAAI,GAAI,gBAAe,MAAA,IAAI,KAAK,MAAM,EAAI,IAAO,GAAI,aAAa,cAAc,GAAI,KAAK,MAAa,GAAI,YAAW,GAAI,YAAW,EAAU,SAAS,EAAI,GAAO,GAAQ,CAAC,GAAI,IAAI,GAAI,gBAAe,GAAI,KAAK,MAAM,EAAI,IAAM,GAAI,aAAa,cAAc,GAAI,OAAO,UAAU,CAAC,GAAG,GAAI,QAAQ,KAAK,GAAI,QAAQ,GAAG,GAAI,SAAS,CAAC,GAAO,GAAI,UAAU,OAAO,MAAW,GAAI,QAAQ,GAAQ,GAAI,KAAK,OAAO,EAAe,SAAS,EAAM,CAAC,SAAS,MAAM,IAAa,GAAI,GAAI,EAAO,OAAU,QAAQ,IAAI,KAAK,SAAa,EAAI,EAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,IAAO,GAAoB,EAAgB,eAAe,IAAM,GAAO,GAAK,EAAgB,IAAM,EAAgB,KAAQ,EAAO,WAAa,GAAW,EAAO,WAAgB,EAAO,aAAe,GAAY,EAAO,aAAkB,EAAO,MAAQ,GAAM,EAAO,MAAQ,GAAI,GAAc,EAAO,YAAc,GAAW,EAAO,YAAc,GAAI,GAAc,EAAO,eAAkB,GAAQ,MAAO,cAAc,UAAU,GAAM,mCAAmC,GAAI,GAAe,EAAM,GAAU,EAAW,WAAgB,EAAU,GAAK,CAAK,GAAW,GAAM,qBAAqB,IAAO,WAAkB,EAAM,CAAC,GAAI,IAAK,EAAO,IAAI,GAAO,MAAA,GAAO,GAAK,gCAAgC,EAAM,8BAAqC,GAAK,YAAe,EAAM,GAAW,GAAS,GAAK,GAAK,CAAC,GAAI,IAAI,CAAC,OAAS,SAAS,GAAI,CAAC,GAAI,IAAI,EAAE,GAAG,IAAM,MAAuB,KAAM,EAAE,CAAC,GAAI,IAAK,IAAI,QAAQ,GAAG,EAAE,GAAI,GAAW,IAAK,GAAa,GAAI,GAAI,IAAK,MAAO,KAAK,MAAQ,SAAS,GAAI,CAAC,GAAI,IAAI,GAAW,GAAI,QAAQ,MAAA,IAAmB,GAAI,IAAY,KAAM,YAA4B,GAAI,CAAC,MAAG,MAAa,SAAgB,GAAa,IAAQ,KAAa,UAAiB,QAAQ,IAAY,GAAI,GAAI,IAAK,EAAS,GAAW,GAAM,GAAO,GAAM,EAAE,GAAG,GAAM,OAAQ,IAAE,EAAE,GAAE,GAAK,OAAO,KAAI,CAAC,GAAI,IAAU,GAAI,GAAS,KAAO,GAAc,MAAQ,GAAE,IAAM,MAAY,GAAM,IAAG,GAAU,GAAK,MAAS,GAAM,IAAG,GAAK,IAAK,GAAI,IAAI,GAAK,MAAM,KAAK,IAAO,MAAA,IAAI,GAAmB,IAAQ,KAAQ,GAAE,GAAa,IAAc,GAAI,WAAe,EAAM,GAAW,GAAS,GAAK,CAAC,GAAS,IAAU,GAAG,GAAI,IAAY,GAAS,MAAM,SAAS,GAAK,CAAC,MAAO,MAAO,WAAe,GAAW,KAAa,SAAS,MAAG,KAAY,IAAa,CAAC,GAAa,EAAS,GAAc,UAAU,CAAC,MAAO,IAAM,EAAM,GAAW,GAAS,UAAU,KAAO,GAAI,IAAY,MAAO,cAAc,YAAY,GAAI,aAAY,QAAQ,OAAU,YAA2B,EAAK,GAAI,GAAe,CAA8C,OAAzC,IAAO,GAAI,GAAmB,GAAO,GAAU,EAAK,KAAS,CAAE,KAAQ,KAAQ,EAAE,GAAO,GAAG,GAAO,GAAI,IAAI,EAAK,UAAU,GAAa,MAAO,IAAY,OAAO,EAAK,SAAS,GAAI,KAAyB,OAAP,IAAI,GAAS,GAAI,IAAO,CAAC,GAAI,IAAG,EAAK,MAAO,GAAG,CAAE,IAAG,KAAK,CAAC,IAAK,OAAO,aAAa,IAAI,SAAS,GAAI,IAAG,EAAK,MAAO,GAAG,GAAI,IAAG,MAAM,IAAI,CAAC,IAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,GAAI,IAAG,EAAK,MAAO,GAA4F,GAArF,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAK,MAAO,GAAM,GAAG,MAAO,IAAK,OAAO,aAAa,QAAQ,CAAC,GAAI,IAAG,GAAG,MAAM,IAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAQ,MAAO,IAAI,YAAsB,EAAI,GAAe,CAAC,MAAO,GAAI,GAAkB,GAAO,EAAI,IAAgB,GAAG,WAA2B,EAAI,GAAK,GAAO,GAAgB,CAAC,GAAG,CAAE,IAAgB,GAAG,MAAO,GAA0D,OAApD,IAAS,GAAW,GAAO,GAAO,GAAgB,EAAU,GAAE,EAAE,GAAE,EAAI,OAAO,EAAE,GAAE,CAAC,GAAI,IAAE,EAAI,WAAW,IAAG,GAAG,IAAG,OAAO,IAAG,MAAM,CAAC,GAAI,IAAG,EAAI,WAAW,EAAE,IAAG,GAAE,MAAQ,KAAE,OAAO,IAAI,GAAG,KAAK,GAAG,IAAG,IAAI,CAAC,GAAG,IAAQ,GAAO,MAAM,GAAK,MAAU,WAAU,IAAG,KAAK,CAAC,GAAG,GAAO,GAAG,GAAO,MAAM,GAAK,MAAU,IAAI,IAAG,EAAE,GAAK,MAAU,IAAI,GAAE,WAAW,IAAG,MAAM,CAAC,GAAG,GAAO,GAAG,GAAO,MAAM,GAAK,MAAU,IAAI,IAAG,GAAG,GAAK,MAAU,IAAI,IAAG,EAAE,GAAG,GAAK,MAAU,IAAI,GAAE,OAAO,CAAC,GAAG,GAAO,GAAG,GAAO,MAAM,GAAK,MAAU,IAAI,IAAG,GAAG,GAAK,MAAU,IAAI,IAAG,GAAG,GAAG,GAAK,MAAU,IAAI,IAAG,EAAE,GAAG,GAAK,MAAU,IAAI,GAAE,IAAI,MAAA,IAAK,IAAQ,EAAS,GAAO,GAAS,YAAsB,EAAI,GAAO,GAAgB,CAAC,MAAO,GAAkB,EAAI,GAAO,GAAO,IAAiB,YAA4B,EAAM,GAAO,CAAC,GAAM,IAAI,EAAM,IAAQ,YAAiB,EAAE,GAAS,CAAC,MAAG,GAAE,GAAS,GAAG,IAAG,GAAS,EAAE,IAAgB,EAAE,GAAI,IAAO,GAAM,GAAO,GAAO,GAAQ,GAAO,GAAQ,GAAQ,GAAQ,YAAoC,EAAI,CAAC,GAAO,EAAI,EAAO,MAAS,GAAM,GAAI,WAAU,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,GAAI,IAAe,EAAO,gBAAmB,SAAa,GAAc,GAAa,GAAO,GAAW,GAAO,GAAW,GAAO,GAAc,GAAO,GAAmB,GAAM,GAAW,KAAK,CAAC,KAAK,UAAU,CAAC,QAAwB,aAAiB,CAAC,GAAG,EAAO,OAAsF,IAAxE,MAAO,GAAO,QAAW,YAAW,GAAO,OAAU,CAAC,EAAO,SAAiB,EAAO,OAAU,QAAQ,GAAY,EAAO,OAAU,SAAU,GAAqB,IAAc,aAAsB,CAAC,GAAmB,GAAK,GAAqB,IAAY,aAAkB,CAAC,GAAqB,IAAY,aAAkB,CAAC,GAAG,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,QAAQ,GAAa,EAAO,QAAW,SAAU,GAAqB,IAAe,YAAqB,EAAG,CAAC,GAAa,QAAQ,GAAI,YAAsB,EAAG,CAAC,GAAc,QAAQ,GAAI,GAAI,IAAgB,EAAM,GAAqB,KAAS,GAAsB,KAAK,YAA0B,EAAG,CAAC,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAkB,YAA6B,EAAG,CAA0G,GAAzG,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAoB,IAAiB,GAAM,MAAuB,MAAM,eAAc,IAAsB,GAAqB,MAAQ,IAAsB,CAAC,GAAI,IAAS,GAAsB,GAAsB,KAAK,MAAa,EAAO,gBAAmB,GAAG,EAAO,gBAAmB,GAAG,YAAe,EAAK,CAAI,EAAO,SAAY,EAAO,QAAW,GAAM,GAAM,GAAG,EAAI,GAAM,EAAM,GAAK,EAAW,EAAE,EAAK,SAAS,EAAK,+CAA+C,GAAI,IAAE,GAAI,aAAY,aAAa,GAAM,KAAA,GAAmB,IAAS,GAAE,YAAmB,EAAI,GAAO,CAAC,MAAO,QAAO,UAAU,WAAW,EAAI,WAAW,IAAQ,EAAI,QAAQ,MAAU,EAAE,GAAI,IAAc,wCAAwC,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAc,UAAU,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAe,yBAA6B,GAAU,KAAiB,IAAe,EAAW,KAAgB,YAAmB,EAAK,CAAC,GAAG,CAAC,GAAG,GAAM,IAAgB,EAAY,MAAO,IAAI,YAAW,GAAY,GAAG,EAAY,MAAO,GAAW,GAAW,KAAK,wDAAyD,GAAzD,CAA8D,GAAM,KAAM,aAA2B,CAAC,GAAG,CAAC,GAAa,IAAoB,GAAuB,CAAC,GAAG,MAAO,QAAQ,YAAY,CAAC,GAAU,IAAiB,MAAO,OAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,EAAS,CAAC,GAAG,CAAC,EAAS,GAAO,KAAK,uCAAuC,GAAe,IAAI,MAAO,GAAS,gBAAmB,MAAM,UAAU,CAAC,MAAO,IAAU,MAAuB,GAAG,EAAW,MAAO,IAAI,SAAQ,SAAS,EAAQ,GAAO,CAAC,EAAU,GAAe,SAAS,GAAS,CAAC,EAAQ,GAAI,YAAW,MAAY,MAAY,MAAO,SAAQ,UAAU,KAAK,UAAU,CAAC,MAAO,IAAU,MAAkB,aAAqB,CAAC,GAAI,GAAK,CAAC,EAAI,IAAe,YAAyB,GAAS,GAAO,CAAC,GAAI,IAAQ,GAAS,QAAQ,EAAO,IAAO,GAAQ,EAAW,EAAO,IAAO,EAAK,GAA2B,EAAW,QAAQ,GAAU,EAAO,IAAO,EAAK,GAAoB,oBAAoB,GAAiB,oBAAoB,YAAmC,GAAO,CAAC,GAAgB,GAAO,UAAa,YAAgC,GAAS,CAAC,MAAO,MAAmB,KAAK,SAAS,GAAO,CAAC,MAAO,aAAY,YAAY,GAAO,KAAQ,KAAK,GAAS,SAAS,GAAO,CAAC,EAAI,0CAA0C,IAAQ,GAAM,MAAU,aAA2B,CAAC,MAAG,CAAC,GAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,GAAU,KAAiB,CAAC,GAAU,KAAiB,MAAO,QAAQ,WAAmB,MAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,GAAS,CAAC,GAAI,IAAO,YAAY,qBAAqB,GAAS,GAAM,MAAO,IAAO,KAAK,GAA0B,SAAS,GAAO,CAAC,MAAA,GAAI,kCAAkC,IAAQ,EAAI,6CAAoD,GAAuB,QAA2C,GAAuB,IAA4B,GAAG,EAAO,gBAAoB,GAAG,CAAC,GAAI,IAAQ,EAAO,gBAAmB,EAAK,IAAiB,MAAO,UAAc,GAAd,CAAiB,MAAA,GAAI,sDAAsD,IAAU,GAAO,MAAA,MAAmB,MAAM,GAA0B,GAAG,YAA8B,EAAU,CAAC,KAAM,EAAU,OAAO,GAAE,CAAC,GAAI,IAAS,EAAU,QAAQ,GAAG,MAAO,KAAU,WAAW,CAAC,GAAS,GAAQ,SAAS,GAAI,IAAK,GAAS,KAAQ,MAAO,KAAO,SAAa,GAAS,MAAM,OAAW,GAAU,IAAI,MAAa,GAAU,IAAI,IAAM,GAAS,KAAW,GAAK,GAAS,MAAM,OAAU,KAAK,GAAS,MAAO,aAAiB,CAAC,KAAQ,YAAgC,EAAK,GAAI,GAAI,CAAC,GAAO,WAAW,EAAK,GAAI,GAAI,IAAK,aAAoC,CAAC,MAAO,IAAO,OAAO,YAAmC,EAAK,CAAC,GAAG,CAAC,MAAA,GAAW,KAAK,EAAK,GAAO,WAAW,QAAQ,IAAI,GAA2B,EAAW,QAAe,QAAQ,GAAR,GAAa,YAAiC,EAAc,CAAC,GAAI,IAAQ,KAAgC,GAAY,WAAW,GAAG,EAAc,GAAa,MAAO,GAAM,OAAQ,IAAQ,EAAE,IAAS,EAAE,IAAS,EAAE,CAAC,GAAI,IAAkB,GAAS,GAAE,GAAG,IAAS,GAAkB,KAAK,IAAI,GAAkB,EAAc,WAAW,GAAI,IAAQ,KAAK,IAAI,GAAY,GAAQ,KAAK,IAAI,EAAc,IAAmB,QAAY,GAAY,GAA0B,IAAS,GAAG,GAAa,MAAO,GAAM,MAAO,GAAM,GAAI,IAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,SAAS,EAAO,GAAK,CAAC,GAAI,IAAO,GAAS,QAAQ,GAAW,KAAO,GAAG,KAAO,GAAK,MAAS,EAAE,EAAI,GAAK,GAAkB,GAAO,IAAI,GAAO,OAAO,GAAO,GAAO,KAAK,KAAQ,QAAQ,OAAU,IAAI,UAAU,CAAC,GAAS,SAAS,EAAE,GAAI,GAAI,GAAO,GAAS,QAAQ,GAAG,GAAG,MAAO,IAAK,OAAO,SAAS,EAAI,CAAC,GAAI,IAAI,GAAa,GAAK,MAAO,KAAK,MAAM,SAAS,EAAI,GAAK,CAAC,MAAO,KAAM,YAAmB,EAAG,CAAC,MAAO,GAAE,YAAkB,EAAG,GAAW,GAAY,GAAO,GAAU,EAAE,YAAmB,EAAG,GAAI,GAAO,GAAK,CAAW,OAAN,IAAI,EAAU,GAAE,EAAE,GAAE,GAAO,KAAI,CAA2D,OAAtD,IAAI,GAAO,GAAI,GAAE,GAAG,GAAO,GAAI,GAAO,GAAK,IAAE,EAAE,IAAI,GAAW,GAAE,EAAE,GAAE,GAAI,KAAK,GAAS,UAAU,EAAG,GAAO,GAAI,KAAI,IAAK,GAAI,MAAA,IAAO,IAAM,GAAG,GAAW,EAAE,GAAI,IAAc,CAAC,EAAI,GAAO,EAAI,GAAuB,EAAI,GAAwB,EAAI,GAAU,EAAI,GAAS,EAAI,IAAe,GAAI,KAAiB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAiB,EAAO,iBAAoB,UAAU,CAAC,MAAO,IAAiB,EAAO,iBAAoB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAuB,EAAO,uBAA0B,UAAU,CAAC,MAAO,IAAuB,EAAO,uBAA0B,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAsB,EAAO,sBAAyB,UAAU,CAAC,MAAO,IAAsB,EAAO,sBAAyB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAY,EAAO,YAAe,UAAU,CAAC,MAAO,IAAY,EAAO,YAAe,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAkB,EAAO,kBAAqB,UAAU,CAAC,MAAO,IAAkB,EAAO,kBAAqB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAY,EAAO,MAAS,EAAM,GAAI,IAAU,YAAoB,EAAO,CAAC,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,EAAO,IAAI,KAAK,OAAO,EAAO,GAAsB,YAAoB,CAAK,IAAU,KAAU,IAAU,IAAsB,IAAW,YAAa,EAAK,CAA6D,GAA5D,EAAK,GAAM,EAAc,GAAgB,GAAU,MAAY,GAAgB,GAAG,OAAO,aAAgB,CAAI,IAAiB,IAAU,GAAK,EAAO,UAAa,GAAQ,CAAA,GAAa,MAAc,KAAU,EAAoB,GAAW,EAAO,sBAAwB,EAAO,uBAA0B,OAAa,EAAO,UAAc,GAAO,UAAa,cAAc,WAAW,UAAU,CAAC,WAAW,UAAU,CAAC,EAAO,UAAa,KAAK,GAAG,MAAS,IAAQ,KAA2B,GAAlB,EAAO,IAAO,GAAO,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,OAAO,GAAG,EAAO,QAAW,QAAS,MAAA,MAG/6yB,EAAkB,UAIvB,MAAO,IAAY,UAAY,MAAO,IAAW,SACnD,EAAO,QAAU,EACV,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,UAAW,CAAE,MAAO,KACxB,MAAO,IAAY,UAC1B,GAAQ,kBAAuB,KCpBjC,GAAA,GAAA,CAAA,EAAA,IAAA,CA2BC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAc,EAAM,CAClB,GAAI,GAAK,KAAM,EAAO,IAEtB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,QAAU,EAAG,GAAK,EAAG,EAAI,sBACjC,MAAA,GAAG,GAAK,EAAG,GACX,EAAG,GAAK,EAAG,GACJ,EAAG,GAAK,EAAK,GAAG,EAAI,EAAI,IAIjC,EAAG,EAAI,EACP,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAO,KAGT,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAK,GACd,EAAQ,GAAQ,EAAK,MACrB,EAAO,EAAG,KACd,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAQ,GAAG,OAAS,WAAe,GAC7D,EAAK,OAAS,UAAW,CACvB,MAAO,KAAU,KAAS,QAAW,GAAK,uBAE5C,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGT,YAAgB,CACd,GAAI,GAAI,WAEJ,EAAO,SAAS,EAAM,CACxB,EAAO,EAAK,WACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAK,EAAK,WAAW,GACrB,GAAI,GAAI,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,GAIL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,KAAO,IAIZ,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9GnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAEzB,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGP,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAK,EAAG,GAAK,GACxB,MAAA,GAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACH,EAAG,GAAM,EAAG,IAAM,GAAM,EAAK,IAAM,GAGxC,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC7EnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAK,EAAG,EAAK,EAAG,IAAM,EAC1B,MAAA,GAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EACzC,GAAG,EAAK,EAAG,EAAI,OAAS,GAC5B,GAAG,EAAK,EAAG,EAAK,EAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAEH,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAC5B,GAAK,EAAQ,QACf,GAAG,EAAI,EAAG,GAAK,GAAK,EAAG,IAAM,GAE/B,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UClFnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAKC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CAEnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAC9B,MAAA,GAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,EAAG,EAAK,EAAI,EAAK,EACV,GAGT,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAI,GAEd,GAAI,IAAU,GAAO,GAEnB,EAAI,EAAE,GAAK,MAIX,KADA,EAAO,GAAK,EACP,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,EAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,EAAG,EAAI,EACP,EAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,EAAG,OAIP,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,UAAY,IAIjB,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9FnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAyBC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAE3B,MAAA,GAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,EAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAG,EAAG,EAAG,EAAI,GAAI,EAAQ,IAYnC,IAXI,IAAU,GAAO,GAEnB,GAAI,EACJ,EAAO,MAGP,GAAO,EAAO,KACd,EAAI,EACJ,EAAQ,KAAK,IAAI,EAAO,EAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,EAAO,EAAE,EAE5B,GAAM,IAAK,EAAK,WAAY,GAAI,IAAM,EAAK,SAE3C,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACP,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAU,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPI,GAAK,KACP,GAAG,IAAQ,EAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGT,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,QAAU,IAIf,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UChJnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAIC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACzC,MAAA,GAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,EAAG,EAAI,EAAK,EAAI,EAAK,EACrB,EAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,EAAG,EAAK,EAAI,EAAK,GAmB1B,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,WAAa,EACpB,EAAG,EAAI,WAEH,IAAS,KAAK,MAAM,GAEtB,GAAG,EAAK,EAAO,WAAe,EAC9B,EAAG,EAAI,EAAO,GAGd,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UCnGnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAwBC,AAAA,UAAU,EAAM,EAAM,CAOvB,GAAI,GAAU,GAAG,MAAM,QACnB,EAAQ,IACR,EAAS,EACT,EAAS,GACT,EAAU,SACV,EAAa,EAAK,IAAI,EAAO,GAC7B,EAAe,EAAK,IAAI,EAAG,GAC3B,EAAW,EAAe,EAC1B,EAAO,EAAQ,EACf,EAMJ,WAAoB,EAAM,EAAS,EAAU,CAC3C,GAAI,GAAM,GACV,EAAW,GAAW,GAAQ,CAAE,QAAS,IAAU,GAAW,GAG9D,GAAI,GAAY,EAAO,EACrB,EAAQ,QAAU,CAAC,EAAM,EAAS,IACjC,GAAQ,KAAQ,IAAa,EAAM,GAAI,GAGtC,EAAO,GAAI,GAAK,GAIhB,EAAO,UAAW,CAIpB,OAHI,GAAI,EAAK,EAAE,GACX,EAAI,EACJ,EAAI,EACD,EAAI,GACT,EAAK,GAAI,GAAK,EACd,GAAK,EACL,EAAI,EAAK,EAAE,GAEb,KAAO,GAAK,GACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,GAC7C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,YAC7C,EAAK,OAAS,EAGd,EAAO,EAAS,EAAK,GAAI,GAGjB,GAAQ,MAAQ,GACpB,SAAS,EAAM,EAAM,EAAc,EAAO,CAUxC,MATI,IAEE,GAAM,GAAK,EAAK,EAAO,GAE3B,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAM,MAK1C,EAAgB,GAAK,GAAW,EAAa,GAIrC,IAElB,EACA,EACA,UAAY,GAAU,EAAQ,OAAU,MAAQ,EAChD,EAAQ,OAEV,EAAK,OAAS,GAAW,EAYzB,WAAc,EAAK,CACjB,GAAI,GAAG,EAAS,EAAI,OAChB,EAAK,KAAM,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GAMtD,IAHK,GAAU,GAAM,CAAC,MAGf,EAAI,GACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,EAAO,IACrB,EAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,EAAI,EAAI,GAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIR,AAAA,GAAG,EAAI,SAAS,EAAO,CAItB,OAFI,GAAG,EAAI,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACxB,KACL,EAAI,EAAE,EAAI,EAAQ,EAAI,GACtB,EAAI,EAAI,EAAQ,EAAE,EAAS,GAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,IAAQ,GAAE,GAAK,IAErE,MAAA,GAAG,EAAI,EAAG,EAAG,EAAI,EACV,IAIN,GAOL,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,WAAiB,EAAK,EAAO,CAC3B,GAAI,GAAS,GAAI,EAAO,MAAO,GAAM,EACrC,GAAI,GAAS,GAAO,SAClB,IAAK,IAAQ,GACX,GAAI,CAAE,EAAO,KAAK,EAAQ,EAAI,GAAO,EAAQ,UAAc,EAAd,EAGjD,MAAQ,GAAO,OAAS,EAAS,GAAO,SAAW,EAAM,EAAM,KAQjE,WAAgB,EAAM,EAAK,CAEzB,OADI,GAAa,EAAO,GAAI,EAAO,EAAI,EAChC,EAAI,EAAW,QACpB,EAAI,EAAO,GACT,EAAS,IAAS,EAAI,EAAO,GAAK,IAAM,EAAW,WAAW,KAElE,MAAO,GAAS,GAQlB,YAAoB,CAClB,GAAI,CACF,GAAI,GACJ,MAAI,IAAe,GAAM,EAAW,aAElC,EAAM,EAAI,GAEV,GAAM,GAAI,YAAW,GACpB,GAAO,QAAU,EAAO,UAAU,gBAAgB,IAE9C,EAAS,SACT,EADS,CAEhB,GAAI,GAAU,EAAO,UACjB,EAAU,GAAW,EAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,EAAQ,EAAS,EAAO,OAAQ,EAAS,KAQhE,WAAkB,EAAG,CACnB,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,EAAO,EAAK,SAAU,GAMjB,MAAO,IAAW,UAAY,EAAO,QAAS,CACjD,EAAO,QAAU,EAEjB,GAAI,CACF,EAAqB,WACd,EADc,OAEb,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,UAAW,CAAE,MAAO,OAK3B,GACA,QCxPF,GAAA,GAAA,CAAA,EAAA,IAAA,CAYA,GAAI,GAAe,KAKf,EAAiB,KAKjB,EAAiB,KAQjB,EAAoB,KASpB,EAAkB,KAOlB,EAAiB,KAIjB,EAAa,KAEjB,EAAG,KAAO,EACV,EAAG,OAAS,EACZ,EAAG,OAAS,EACZ,EAAG,UAAY,EACf,EAAG,QAAU,EACb,EAAG,OAAS,EAEZ,EAAO,QAAU,IC3DjB,GAAA,GAAA,IAAA,IAAA,GAAA,QAAA,GAAA,QAAA,GAAA,QAAA,GAAA,QAAA,GAAA,QCoBa,GAAkB,KAClB,GAAkB,KAwBzB,GAAA,KAAkB,CAItB,YAAoB,EAAgC,EAAoB,CAApD,KAAA,QAAA,EAAgC,KAAA,UAAA,EAH5C,KAAA,KAAO,GAAI,SACX,KAAA,aAAe,EAIvB,IAAI,EAAc,CAChB,MAAK,MAAK,KAAK,IAAI,IACjB,KAAK,UAAU,SAAS,KAAK,QAAS,GAEjC,KAAK,KAAK,IAAI,GAGvB,IAAI,EAAgB,EAAQ,CAC1B,KAAK,eACL,KAAK,KAAK,IAAI,EAAQ,GAGxB,IAAI,EAAc,CAChB,MAAO,MAAK,KAAK,IAAI,GAGvB,OAAO,EAAc,CACnB,MAAA,MAAK,eACE,KAAK,KAAK,OAAO,GAG1B,YAAU,CACR,MAAO,MAAK,eAyBV,GAAA,KAAoB,CACxB,SAAS,EAAc,CACrB,MAAO,IAAkB,YAE3B,OAAO,EAAc,CACnB,MAAO,IAAkB,UAE3B,gBAAc,CACZ,MAAO,GAET,KAAK,EAAa,CAChB,MAAO,IAAkB,QAE3B,KAAK,EAAc,CACjB,MAAO,IAAkB,QAE3B,SAAS,EAAc,CACrB,MAAO,IAAkB,YAE3B,YAAU,CACR,MAAO,IAAkB,cAE3B,YAAY,EAAgB,EAAe,CACzC,MAAO,IAAkB,eAE3B,MAAM,EAAuB,EAAiB,EAAe,CAC3D,MAAO,IAAkB,SAE3B,KACI,EAAgB,EAAuB,EAAiB,EACxD,EAAgB,CAClB,MAAO,IAAkB,QAE3B,QAAM,CACJ,MAAO,IAAkB,UAG3B,gBAAc,CACZ,MAAO,IAAkB,kBAG3B,SAAO,CACL,MAAO,MAAK,mBAAqB,GAAK,GAAkB,GAE1D,SAAO,CACL,MAAO,IAAkB,aAI7B,YAA2B,EAAkB,CAC3C,KAAM,IAAI,OACN,IAAI,6HCpHJ,YAAkB,EACY,CAClC,GAAI,GAAU,EAAM,OAChB,EAAO,EACP,EAAQ,EAEZ,KAAO,EAAU,GAEf,EAAS,KAAK,SAAW,EAAW,EAEpC,IAEA,EAAO,EAAM,GACb,EAAM,GAAW,EAAM,GACvB,EAAM,GAAS,EAqBb,YAAuB,EAEP,EAAiD,CAErE,GAAI,EAAM,SAAW,EAAO,OAC1B,KAAM,IAAI,OACR,yEAC0B,EAAM,iCACL,EAAO,UAEtC,GAAI,GAAU,EAAM,OAChB,EAAM,EACN,EAAQ,EAEZ,KAAO,EAAU,GAEf,EAAS,KAAK,SAAW,EAAW,EAEpC,IAEA,EAAO,EAAM,GACb,EAAQ,EAAO,GACf,EAAM,GAAW,EAAM,GACvB,EAAO,GAAW,EAAO,GACzB,EAAM,GAAS,EACf,EAAO,GAAS,EAKd,YAAgB,EAAa,EAAW,EAAW,CACvD,MAAO,MAAK,IAAI,EAAK,KAAK,IAAI,EAAG,IAG7B,YAA4B,EAAW,CAC3C,MAAO,GAAM,GAAM,EAAI,EAAM,EAAM,EAG/B,YAAc,EAAa,CAC/B,GAAI,GAAM,EACV,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,GAAO,EAAI,GAEb,MAAO,GAUH,YAAsB,EAAW,EAAS,CAC9C,GAAM,GAAI,KAAK,SACf,MAAQ,GAAI,EAAM,GAAI,GAAK,EAIvB,YAAsB,EAAe,EAAa,CACtD,GAAI,GAAS,EACb,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CACjC,GAAM,GAAO,OAAO,EAAE,IAAM,OAAO,EAAE,IACrC,GAAU,EAAO,EAEnB,MAAO,GAkBH,WAAiB,EAAe,EAAiB,CACrD,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,MAAO,IAAQ,SAAW,EAAM,KAI9C,YACF,EAAkB,EAAkB,EAAqB,GAAE,CAC7D,EACI,GAAY,EAAQ,GACpB,IAAM,EAAqB,WAAW,SAAc,gBAGpD,YAAwB,EAAa,CACzC,EACI,GAAK,KACL,IAAM,iEAsBN,YAEF,EAA0B,EAAc,GAAI,EAAiB,GAAK,CAIpE,GAHI,GAAU,MACZ,GAAS,IAEP,MAAM,QAAQ,IAAQ,GAAa,IAAQ,CAAC,EAC9C,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAE,EAChC,GAAQ,EAAI,GAAI,EAAQ,OAG1B,GAAO,KAAK,GAEd,MAAO,GAcH,YAAwB,EAAe,CAC3C,GAAI,EAAM,SAAW,EAEnB,MAAO,GAET,GAAI,GAAO,EAAM,GACjB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,GAAQ,EAAM,GAEhB,MAAO,GAGH,YAAwB,EAAe,CAC3C,MAAO,GAAM,SAAW,EAGpB,YAAsB,EAAgB,EAAc,CACxD,GAAI,IAAO,EACT,MAAO,GAMT,GAJI,GAAM,MAAQ,GAAM,MAIpB,EAAG,SAAW,EAAG,OACnB,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,GAAI,EAAG,KAAO,EAAG,GACf,MAAO,GAGX,MAAO,GAGH,YAAgB,EAAS,CAC7B,MAAO,GAAI,GAAM,EAGb,YAAe,EAAS,CAE5B,GAAK,KAAa,MAAQ,KAExB,MAAQ,MAAa,KAAK,GAE5B,GAAI,IAAM,SACR,MAAO,GACF,GAAI,IAAM,UACf,MAAO,GACF,CACL,GAAM,GAAM,KAAK,IAAI,EAAI,GACzB,MAAQ,GAAM,GAAM,GAAM,IAIxB,YAA8B,EAAY,CAC9C,GAAM,GAAQ,KAAK,KAAK,KAAK,KAAK,IAClC,MAAO,CAAC,EAAO,KAAK,KAAK,EAAO,IAe5B,YAAgC,EAAS,CAC7C,GAAM,GAAkB,GAAI,aAAY,GACxC,OAAS,GAAI,EAAG,EAAI,EAAG,EAAE,EACvB,EAAgB,GAAK,EAEvB,MAAA,IAAQ,GACD,EAGH,YAAmB,EAAW,EAAY,CAC9C,MAAI,IAAQ,EAAE,OACL,EAEF,EAAI,IAAI,OAAO,EAAO,EAAE,QAG3B,YACF,EAAwB,EAAW,GAAoB,EACvD,EAAmB,CACrB,MAAO,IAAI,SAAc,CAAC,EAAS,IAAU,CAC3C,GAAI,GAAW,EAET,EAAQ,IAAK,CACjB,GAAI,IAAW,CACb,IACA,OAGF,IAEA,GAAM,GAAc,EAAQ,GAE5B,GAAI,GAAc,MAAQ,GAAY,EAAY,CAChD,IACA,OAEF,WAAW,EAAO,IAGpB,MAaE,YACF,EAAiB,EAAY,CAC/B,GAAI,GAAY,EACZ,EAAc,GAElB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAClC,GAAI,EAAM,IAAM,EACd,GAAa,EAAM,WACV,EAAM,KAAO,GAAI,CAC1B,GAAI,IAAgB,GAClB,KAAM,OACF,yDACmB,aAAuB,KAEhD,EAAc,UACL,EAAM,GAAK,EACpB,KAAM,OAAM,gCAAgC,EAAM,aAAa,KAInE,GAAI,IAAgB,GAAI,CACtB,GAAI,EAAO,GAAK,IAAS,EACvB,KAAM,OAAM,QAAQ,sCAAyC,KAE/D,MAAO,GAGT,GAAI,IAAc,EAChB,KAAM,OACF,qCAAqC,gCAG3C,GAAI,EAAO,GAAc,EACvB,KAAM,OACF,wDACO,OAAU,KAGvB,GAAM,GAAW,EAAM,QACvB,MAAA,GAAS,GAAe,EAAO,EACxB,EAGH,YACF,EAAuB,EAAe,CACxC,GAAM,GAAO,EAAM,OAGnB,MAAA,GAAO,GAAQ,KAAO,EAAM,IAAI,CAAC,EAAG,IAAM,GAAK,GAAG,OAAO,GAGzD,EACI,EAAK,MAAM,GAAM,GAAM,CAAC,GAAQ,EAAK,GACrC,IACI,+CAA+C,MAAS,mBAC5C,KAGpB,EACI,EAAK,MAAM,GAAM,GAAM,IACvB,IAAM,0DACU,KAGb,EAAK,IAAI,GAAK,EAAI,EAAI,EAAO,EAAI,GAIpC,YAAuB,EAAiB,EAAe,CAE3D,GAAM,GAAqB,GACrB,EAAqB,GACrB,EAAe,GAAQ,MAAQ,MAAM,QAAQ,IAAS,EAAK,SAAW,EACtE,EAAQ,GAAQ,MAAQ,EAC1B,KACA,GAAe,EAAM,GAAO,OAC5B,EAAI,EACR,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,GAAI,GAAQ,KAAM,CAChB,GAAI,EAAK,KAAO,GAAK,EAAM,KAAO,EAChC,KAAM,IAAI,OACN,sBAAsB,oBAAoB,EAAM,gBAEjD,AAAA,GAAK,IAAM,MAAQ,EAAK,GAAK,IAAM,EAAM,KAAO,GACnD,GAAS,KAAK,EAAM,IACpB,EAAS,KAAK,IAEZ,EAAK,IAAM,GACb,IAGA,EAAM,KAAO,GACf,GAAS,KAAK,EAAM,IACpB,EAAS,KAAK,IAGlB,MAAO,CAAC,SAAA,EAAU,SAAA,GAGd,YACF,EAAU,EAAY,CACxB,GAAI,GAAS,KACb,GAAI,GAAS,MAAQ,IAAU,UAC7B,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,OAExB,MAAM,IAAI,OAAM,qBAAqB,KAEvC,MAAO,GAGH,YACF,EAAU,EAAY,CACxB,GAAI,GAAS,KACb,GAAI,GAAS,MAAQ,IAAU,UAC7B,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,WACf,IAAU,SACnB,EAAS,GAAI,OAAgB,OAE7B,MAAM,IAAI,OAAM,qBAAqB,KAEvC,MAAO,GAGH,YACF,EAA+B,EAAQ,CACzC,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAM,EAAK,GACjB,GAAI,MAAM,IAAQ,CAAC,SAAS,GAC1B,KAAM,OAAM,oBAAoB,6BAAiC,OAMjE,YAAuB,EAAe,CAC1C,MAAO,KAAU,QAAU,IAAU,aAAe,IAAU,WAC1D,IAAU,SAAW,IAAU,SAO/B,YAA0B,EAAmB,EAAiB,CAUlE,MATI,CAAA,KAAY,aAGZ,IAAY,WAAa,IAAY,aAGrC,IAAY,SAAW,IAAY,WAAa,IAAY,aAG5D,IAAY,QAAU,IAAY,QAMlC,YAAuB,EAAK,CAChC,MAAO,aAAa,eAAgB,YAAa,aAC7C,YAAa,YAGb,YAA0B,EAAe,CAC7C,GAAI,IAAU,WAAa,IAAU,QACnC,MAAO,GACF,GAAI,IAAU,YACnB,MAAO,GACF,GAAI,IAAU,OACnB,MAAO,GAEP,KAAM,IAAI,OAAM,iBAAiB,KAU/B,YAA+B,EAAiB,CACpD,GAAI,GAAO,KACT,MAAO,GAET,GAAI,GAAQ,EACZ,MAAA,GAAI,QAAQ,GAAK,GAAS,EAAE,QACrB,EAIH,YAAmB,EAAS,CAChC,MAAO,OAAO,IAAU,UAAY,YAAiB,QAGjD,YAAoB,EAAS,CACjC,MAAO,OAAO,IAAU,UAGpB,YAAmB,EAAS,CAChC,MAAO,OAAO,IAAU,SAGpB,YAAqB,EAAkB,CAC3C,MAAI,OAAM,QAAQ,GACT,GAAW,EAAO,IAEvB,YAAkB,cACb,UACE,YAAkB,aAAc,YAAkB,YACpD,QACE,GAAS,GACX,UACE,GAAS,GACX,SACE,GAAU,GACZ,OAEF,UAGH,YAAqB,EAAW,CACpC,MAAO,CAAC,CAAE,IAAK,EAAE,aAAe,EAAE,MAAQ,EAAE,OAGxC,YAAyB,EAAc,EAAa,CACxD,OAAS,GAAI,EAAO,EAAI,EAAM,EAAE,EAC9B,GAAI,EAAO,GAAM,EACf,MAAO,GAGX,MAAO,GAGH,YAAyB,EAAe,CAC5C,GAAM,GAAO,EAAM,OACnB,GAAI,EAAO,EACT,MAAO,GAKT,GAAM,GAAU,GAAI,OAAM,EAAO,GACjC,EAAQ,EAAO,GAAK,EAAM,EAAO,GACjC,OAAS,GAAI,EAAO,EAAG,GAAK,EAAG,EAAE,EAC/B,EAAQ,GAAK,EAAQ,EAAI,GAAK,EAAM,EAAI,GAE1C,MAAO,GAGT,YAA2B,EAAgB,EAAiB,EAAa,CACvE,GAAM,GAAM,GAAI,OAChB,GAAI,EAAM,SAAW,EAAG,CACtB,GAAM,GAAI,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAI,GAAK,EAAE,EAAS,OAEjB,CACL,GAAM,GAAI,EAAM,GACV,EAAO,EAAM,MAAM,GACnB,EAAM,EAAK,OAAO,CAAC,EAAK,IAAM,EAAM,GAC1C,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAI,GAAK,GAAkB,EAAS,EAAI,EAAK,EAAM,GAGvD,MAAO,GAIH,YAAwB,EAAiB,EAAa,CAC1D,GAAI,EAAM,SAAW,EAEnB,MAAO,GAAE,GAEX,GAAM,GAAO,EAAM,OAAO,CAAC,EAAK,IAAM,EAAM,GAC5C,GAAI,IAAS,EAEX,MAAO,GAET,GAAI,IAAS,EAAE,OACb,KAAM,IAAI,OAAM,IAAI,oCAAwC,EAAE,WAGhE,MAAO,IAAkB,EAAG,EAAO,GAG/B,YACF,EAAc,EAAQ,CACxB,GAAM,GAAQ,GAAoB,EAAM,GACxC,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAM,GAAK,EAEb,MAAO,GAGH,YACF,EAAc,EAAQ,CACxB,GAAI,GAAS,MAAQ,IAAU,WAAa,IAAU,YACpD,MAAO,IAAI,cAAa,GACnB,GAAI,IAAU,QACnB,MAAO,IAAI,YAAW,GACjB,GAAI,IAAU,OACnB,MAAO,IAAI,YAAW,GAEtB,KAAM,IAAI,OAAM,qBAAqB,KASnC,YACF,EAAiB,EAAQ,CAC3B,GAAM,GAAO,EAAM,OAAO,CAAC,EAAM,IAAS,EAAO,EAAM,GACvD,GAAI,GAAS,MAAQ,IAAU,UAC7B,MAAO,IAAc,EAAO,GAAI,cAAa,IACxC,GAAI,IAAU,QACnB,MAAO,IAAc,EAAO,GAAI,YAAW,IACtC,GAAI,IAAU,OACnB,MAAO,IAAc,EAAO,GAAI,YAAW,IAE3C,KAAM,IAAI,OAAM,qBAAqB,KAInC,YAA6C,EAAe,CAChE,EAAM,QAAQ,GAAU,CACtB,EACI,OAAO,UAAU,IAAY,GAAW,EACxC,IACI,0EACU,SAYhB,YACF,EAAgB,EAAc,EAAiB,CACjD,GAAI,IAAS,EACX,MAAO,GACF,GAAI,IAAS,EAClB,MAAO,GAAK,GAEd,GAAI,GAAQ,EAAK,EAAK,OAAS,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,GAAS,EAAQ,GAAK,EAAK,GAE7B,MAAO,GAWH,YACF,EAAe,EAAc,EAAiB,CAChD,GAAI,IAAS,EACX,MAAO,GACF,GAAI,IAAS,EAClB,MAAO,CAAC,GAEV,GAAM,GAAiB,GAAI,OAAM,GACjC,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,EAAK,GAAK,KAAK,MAAM,EAAQ,EAAQ,IACrC,GAAS,EAAK,GAAK,EAAQ,GAE7B,MAAA,GAAK,EAAK,OAAS,GAAK,EACjB,EAQH,YAAoB,EAAW,CAOnC,MAAO,IAAU,EAAO,MAAQ,MAAO,GAAO,MAAS,WCntBzD,GAAM,IAA4B,YAmB5B,GAAA,KAAkB,CAUtB,YAAmB,EAAW,CAAX,KAAA,OAAA,EATX,KAAA,MAAe,GACf,KAAA,aAAwD,GAExD,KAAA,SAAkB,GAOxB,KAAK,mBAGP,YAAY,EAAsB,EAAkB,CAC9C,KAAK,UAAY,MACnB,QAAQ,KACJ,YAAY,KAAK,oEACgB,MAEvC,KAAK,aAAe,EACpB,KAAK,SAAW,EAGlB,aACI,EAAkB,EAClB,EAAoC,CAKtC,GAJA,KAAK,aAAa,GAAY,CAAC,aAAA,EAAc,QAAA,GAIzC,KAAK,SAAS,IAAa,KAAM,CACnC,GAAM,GAAY,KAAK,SAAS,GAChC,QAAQ,KACJ,qCAAqC,MAAa,MACtD,KAAK,IAAI,EAAU,SAIjB,UAAS,EAAgB,CAC7B,MAAI,KAAY,MAAK,MACZ,KAAK,MAAM,GAGpB,MAAK,MAAM,GAAY,KAAM,MAAK,aAAa,GACxC,KAAK,MAAM,IAGpB,IAAI,EAAgB,CAClB,GAAI,IAAY,MAAK,MACnB,MAAO,MAAK,MAAM,GAGpB,GAAM,GAAY,KAAK,aAAa,GACpC,GAAI,GAAU,GACZ,KAAM,IAAI,OACN,QAAQ,uEAId,MAAA,MAAK,MAAM,GAAY,EAEhB,KAAK,MAAM,GAGpB,UAAU,EAAgB,CACxB,MAAO,MAAK,IAAI,GAGlB,QAAQ,EAAgB,CACtB,MAAO,MAAK,IAAI,GAGlB,UAAQ,CACN,MAAO,MAAK,SAGV,WAAQ,CACV,MAAO,MAAK,MAGd,IAAI,EAAkB,EAAgB,CACpC,GAAI,KAAK,aAAa,IAAa,KACjC,KAAM,IAAI,OACN,mBAAmB,oCAEzB,KAAK,MAAM,GAAY,EACnB,KAAK,aAAa,GAAU,SAAW,MACzC,KAAK,aAAa,GAAU,QAAQ,GAIhC,aAAa,EAAgB,CACnC,GAAI,KAAK,aAAa,IAAa,KACjC,KAAM,IAAI,OACN,yBAAyB,qCAE/B,MAAO,MAAK,aAAa,GAAU,eAGrC,SAAS,EAAY,CACnB,KAAK,MAAQ,OAAO,OAAO,GAAI,GAGjC,OAAK,CACH,KAAK,MAAQ,GACb,KAAK,SAAW,GAChB,KAAK,mBAGC,kBAAgB,CACtB,GAAI,MAAO,MAAK,QAAW,aACvB,MAAO,MAAK,OAAO,UAAa,aAChC,MAAO,MAAK,OAAO,SAAS,QAAW,YACzC,OAGF,GAAM,GAAY,GAAe,KAAK,OAAO,SAAS,QAClD,KAA6B,IACb,EAAU,IAA2B,MAAM,KACnD,QAAQ,GAAW,CAC3B,GAAM,CAAC,EAAK,GAAS,EAAS,MAAM,KACpC,KAAK,SAAS,GAAO,GAAW,EAAK,OAMvC,YAAyB,EAAmB,CAChD,GAAM,GAAS,GACf,MAAA,GAAY,QAAQ,8BAA+B,CAAC,KAAM,IACxD,IAAY,EAAQ,EAAE,GAAI,EAAE,IACrB,EAAE,KAAK,OAET,EAGT,YACI,EAAiC,EAAc,EAAc,CAC/D,EAAO,mBAAmB,IAAS,mBAAmB,GAAS,IAGjE,YAAoB,EAAkB,EAAa,CAEjD,GADA,EAAQ,EAAM,cACV,IAAU,QAAU,IAAU,QAChC,MAAO,KAAU,OACZ,GAAI,GAAG,CAAE,MAAY,EAC1B,MAAO,CAAC,EAEV,KAAM,IAAI,OACN,oCAAoC,cAAkB,MAWtD,YAAa,CACjB,MAAO,IAGF,GAAI,IAAmB,KACxB,YAA+B,EAAwB,CAC3D,GAAM,EC1LR,GAAI,IAEE,aAA4B,CAChC,GAAI,IAAmB,KAAM,CAE3B,GAAI,GACJ,GAAI,MAAQ,SAAY,YACtB,EAAK,eACI,MAAQ,SAAY,YAC7B,EAAK,eACI,MAAQ,UAAa,YAC9B,EAAK,gBACI,MAAQ,OAAU,YAC3B,EAAK,SAEL,MAAM,IAAI,OAAM,kCAElB,GAAkB,EAEpB,MAAO,IAIT,aAAqB,CACnB,GAAM,GAAK,KACX,MAAI,GAAG,YAAc,MACnB,GAAG,WAAa,GAAI,MAEf,EAAG,WAUN,YAAuB,EAAa,EAAa,CACrD,GAAM,GAAY,KAClB,GAAI,EAAU,IAAI,GAChB,MAAO,GAAU,IAAI,GAChB,CACL,GAAM,GAAY,IAClB,MAAA,GAAU,IAAI,EAAK,GACZ,EAAU,IAAI,ICzClB,GAAM,IAAM,MAGN,GAAO,OAGP,GAAQ,QAGR,GAAM,MAGN,GAAO,OAGP,GAAM,MAON,GAAM,MAON,GAAS,SAMT,GAAS,SAMT,GAAO,OAGP,GAAQ,QAGR,GAAO,OAGP,GAAQ,QAGR,GAAQ,QAGR,GAAU,UASV,GAAc,cAQd,GAAY,YAUZ,GAAgB,gBAShB,GAAc,cAOd,GAAiB,iBASjB,GAAW,WAMX,GAAc,cAOd,GAAO,OAMP,GAAO,OAGP,GAAc,cAOd,GAAU,UAGV,GAAa,aAGb,GAAS,SAMT,GAAS,SAUT,GAAuB,uBAUvB,GAAsB,sBAUtB,GAAS,SAST,GAAyB,yBASzB,GAAwB,wBASxB,GAAM,MAGN,GAAO,OAGP,GAAS,SAQT,GAAgB,gBAShB,GAAgB,gBAOhB,GAAe,eAOf,GAAwB,wBAWxB,GACT,sCAWS,GACT,qCAWS,GAAO,OAGP,GAAa,aAQb,GAA0B,0BAI1B,GAA2B,2BAI3B,GAAU,UAGV,GAAM,MAGN,GAAU,UAGV,GAAM,MAGN,GAAQ,QAGR,GAAM,MAGN,GAAa,aAMb,GAAQ,QAGR,GAAM,MAGN,GAAO,OAOP,GAAgB,gBAGhB,GAAQ,QAGR,GAAW,WAGX,GAAiB,iBAOjB,GAAW,WAOX,GAAW,WAGX,GAAU,UAGV,GAAe,eAGf,GAAW,WAGX,GAAO,OAGP,GAAO,OAGP,GAAW,WAGX,GAAQ,QAGR,GAAQ,QAGR,GAAY,YAMZ,GAAO,OAGP,GAAY,YAGZ,GAAW,WAMX,GAAM,MAGN,GAAQ,QAGR,GAAa,aAGb,GAAa,aAGb,GAAY,YAGZ,GAAa,aAMb,GAAM,MASN,GAAU,UASV,GAAM,MAON,GAAU,UAGV,GAAU,UASV,GAAc,cASd,GAAY,YAUZ,GAAgB,gBAUhB,GAAoB,oBASpB,GAAO,OAOP,GAAM,MAON,GAAU,UAGV,GAAY,YAOZ,GAAM,MAGN,GAAc,cAQd,GAAW,WAGX,GAAM,MAGN,GAAW,WAGX,GAAsB,sBAStB,GAAsB,sBAUtB,GAAsB,sBAUtB,GAAW,WAGX,GAAS,SAQT,GAAO,OAMP,GAAQ,QAOR,GAAO,OAGP,GAAM,MAGN,GAAQ,QAGR,GAAO,OAOP,GAAQ,QAQR,GAAO,OAGP,GAAa,aAGb,GAAO,OAGP,GAAU,UAMV,GAAwB,wBAQxB,GAA4B,4BAK5B,GAAiB,iBAQjB,GAAqB,qBAIrB,GAAQ,QAGR,GAAU,UAMV,GAAQ,QAGR,GAAQ,QAGR,GAAY,YAMZ,GAAS,SAGT,GAAO,OAGP,GAAQ,QAMR,GAAM,MAGN,GAAO,OAGP,GAAO,OAGP,GAAU,UAGV,GAAW,WAGX,GAAO,OAGP,GAAM,MAON,GAAiB,iBAOjB,GAAS,SAOT,GAAU,UAMV,GAAoB,oBAGpB,GAAS,SAGT,GAAM,MAGN,GAAgB,gBAOhB,GAAe,eAaf,GAAM,MAGN,GAAO,OAGP,GAAO,OAMP,GAAO,OAOP,GAAY,YASZ,GAAY,YAMZ,GAAS,SAQT,GAAS,SAMT,GAAqB,qBAOrB,GAAY,YAMZ,GAAO,OAMP,GAAa,aASb,GAAmB,mBAQnB,GAAe,eAgBf,GAAc,cAiBd,GAAuB,uBCr3B9B,GACF,GAAU,iBAAkB,IAAM,GAAI,MACpC,GACF,GAAU,eAAgB,IAAM,GAAI,MAoElC,YACF,EAAoB,EAAmB,CACzC,GAAM,GAAM,GAAQ,EAAY,GAChC,MAAO,IAAe,IAAI,GAOtB,YAAsB,EAAkB,CAC5C,MAAO,IAAa,IAAI,GAGpB,YAA+B,EAAmB,CACtD,GAAM,GAAK,GAAe,UACpB,EAAyB,GAE/B,OAAa,CACX,GAAM,CAAC,KAAA,EAAM,MAAA,GAAS,EAAG,OACzB,GAAI,EACF,MAEF,GAAM,CAAC,EAAK,GAAU,EAChB,CAAC,GAAa,EAAI,MAAM,KAC1B,IAAY,GACd,EAAO,KAAK,GAGhB,MAAO,GAcH,YAAyB,EAAoB,CACjD,GAAM,CAAC,WAAA,EAAY,YAAA,GAAe,EAC5B,EAAM,GAAQ,EAAY,GAC5B,GAAe,IAAI,IACrB,QAAQ,KACJ,eAAe,mBACX,4BAEV,GAAe,IAAI,EAAK,GAWpB,YAA2B,EAAkB,CACjD,GAAM,CAAC,WAAA,GAAc,EAEjB,GAAa,IAAI,IAGf,IAAM,QAAQ,UAChB,QAAQ,KAAK,gCAAgC,MAGjD,GAAa,IAAI,EAAY,GAUzB,YACF,EAAoB,EAAmB,CACzC,GAAM,GAAM,GAAQ,EAAY,GAChC,GAAI,CAAC,GAAe,IAAI,GACtB,KAAM,IAAI,OACN,eAAe,mBACX,wBAEV,GAAe,OAAO,GAIlB,YAA6B,EAAkB,CACnD,GAAI,CAAC,GAAa,IAAI,GACpB,KAAM,IAAI,OACN,iBAAiB,oCAEvB,GAAa,OAAO,GAShB,YACF,EAA+B,EAAsB,CACvC,GAAqB,GAC7B,QAAQ,GAAe,CAC7B,GAAM,GACF,OAAO,OAAO,GAAI,EAAc,CAAC,YAAa,IAClD,GAAe,KAInB,YAAiB,EAAoB,EAAmB,CACtD,MAAO,GAAG,KAAe,ICrN3B,GAAA,GAAA,GAAA,GAAA,EAAA,CAAA,YAAA,IAAA,GAAA,OAAA,IAAA,EAAA,mCAAA,IAAA,GAAA,cAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,yBAAA,IAAA,GAAA,MAAA,IAAA,GAAA,eAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,YAAA,IAAA,GAAA,aAAA,IAAA,GAAA,MAAA,IAAA,GAAA,QAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,WAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,UAAA,IAAA,GAAA,WAAA,IAAA,GAAA,MAAA,IAAA,GAAA,SAAA,IAAA,GAAA,UAAA,IAAA,GAAA,cAAA,IAAA,GAAA,SAAA,IAAA,GAAA,aAAA,IAAA,GAAA,aAAA,IAAA,GAAA,WAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,0BAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,eAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,IAAA,IAAA,GAAA,eAAA,IAAA,GAAA,YAAA,IAAA,GAAA,YAAA,IAAA,GAAA,SAAA,IAAA,GAAA,QAAA,IAAA,GAAA,aAAA,IAAA,GAAA,cAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,IAAA,IAAA,GAAA,KAAA,IAAA,GAAA,cAAA,IAAA,GAAA,aAAA,IAAA,KAyBM,YACF,EAAiB,EAAe,CAClC,MAAI,KAAU,SACL,GAAa,GAGf,GAAa,CAAC,GAAQ,GAG/B,YAA4B,EAAe,EAAe,CACxD,MAAQ,aAAa,eAAgB,IAAU,WAC1C,YAAa,aAAc,IAAU,SACrC,YAAa,aAAc,IAAU,OAGtC,YAAuB,EAAe,EAAe,CACzD,GAAI,IAAU,SACZ,KAAM,IAAI,OAAM,6CASlB,GAPI,MAAM,QAAQ,IAChB,GAAS,GAAQ,IAGf,IAAM,QAAQ,UACX,GAAyB,EAAe,GAE3C,GAAmB,EAAG,GACxB,MAAO,GAET,GAAI,GAAS,MAAQ,IAAU,WAAa,IAAU,YACpD,MAAO,IAAI,cAAa,GACnB,GAAI,IAAU,QACnB,MAAO,IAAI,YAAW,GACjB,GAAI,IAAU,OAAQ,CAC3B,GAAM,GAAO,GAAI,YAAY,EAAe,QAC5C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,KAAK,MAAO,EAAe,MAAQ,GACrC,GAAK,GAAK,GAGd,MAAO,OAEP,MAAM,IAAI,OAAM,qBAAqB,KAenC,aAAa,CACjB,MAAO,KAAM,SAAS,MAmBlB,YACF,EAAc,EAA0B,CAC1C,MAAO,KAAM,SAAS,MAAM,EAAM,GAW9B,YAAuB,EAAW,EAAW,QAAO,CACxD,MAAA,GAAW,GAAY,QAChB,IAAM,SAAS,OAAO,EAAG,GAW5B,YAAuB,EAAmB,EAAW,QAAO,CAChE,MAAA,GAAW,GAAY,QAChB,IAAM,SAAS,OAAO,EAAO,GClGhC,GAAA,IAAA,KAAe,CACnB,YAAoB,EAAoC,EAAe,CAAnD,KAAA,aAAA,EAAoC,KAAA,OAAA,EAClD,GAAU,MACZ,MAAK,OAAS,GAAI,KAItB,cAAc,EAAoB,EAAwB,EAAiB,CAEzE,GAAI,GACE,EAAsB,IAAK,CAC/B,EAAU,KAER,EACE,EAAa,KACnB,GAAI,KAAK,aAAa,iBACpB,EAAQ,KAAK,aAAa,KAAK,OAC1B,CACL,IACA,OAAW,KAAU,GACnB,EAAO,WAET,EAAQ,QAAQ,QAAQ,CAAC,SAAe,KAAQ,IAElD,GAAI,IAAM,QAAQ,gCAChB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAM,GAAS,EAAQ,GAGvB,EAAO,OAAO,KAAK,GAAa,CAC9B,GAA0B,EAAY,EAAO,MAAO,KAe1D,MAVsB,CACpB,WAAA,EACA,QAAA,EACA,OAAA,EACA,OAAQ,EAAM,KAAK,GAAU,EAAO,UACpC,UAAW,EAAM,KACb,GAAU,EAAO,qBAAuB,KACpC,EAAO,sBACP,KAKZ,iBAAiB,EAA4B,CAC3C,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,UAAA,GAAa,EAEzD,EAAQ,QAAQ,GAAS,CACvB,QAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,IAAY,KAAK,GAAiB,CACpE,KAAK,OAAO,iBACR,EAAY,EAAQ,EAAe,GAAI,EAAe,GAAI,EAC1D,EAAe,UAMrB,YACF,EAAsB,EAAU,EAAkB,CACpD,GAAI,IAAU,UAEZ,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAM,EAAK,GACjB,GAAI,MAAM,IAAQ,CAAC,SAAS,GAE1B,MAAA,SAAQ,KAAK,SAAS,uBAAyB,MACxC,GAGX,MAAO,GAGH,GAAA,IAAA,KAAa,CACjB,iBACI,EAAc,EAAgB,EAC9B,EAAgC,EAChC,EAAkB,CACpB,GAAM,GAAO,MAAO,IAAW,SAAgB,GAAS,GAAG,MAAY,GAC7B,EAAO,MAC3C,EAAkB,GAAS,EAAM,IACjC,EAAO,EAAO,KACd,EAAO,EAAO,KACd,EAAa,GAAS,EAAO,MAAM,WAAY,IACjD,EAAyB,GAE7B,OAAW,KAAQ,GAAQ,CACzB,GAAM,GAAQ,EAAO,GACrB,GAAI,GAAS,KAAM,CAGjB,GAAM,GAAa,EAAM,OAAS,EAAO,MACnC,EAAY,EAAW,OAC7B,GACI,GAAG,MAAS,MAAc,EAAY,EAAI,EAAa,OAI/D,QAAQ,IACJ,KAAK,OAAiB,OAAW,MAAS,OAAY,OAClD,OAA6B,IACjC,mBAAoB,YAAa,aAAc,gBAC/C,eAAgB,sBChGlB,YACF,EAAkB,EAAc,EAAS,CAG3C,GAAM,GAA8C,GAC9C,EAA0C,GAChD,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,EAAa,EAAG,GAAG,IAAM,GAG3B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAO,EAAK,GACZ,EAAa,EAAK,OACxB,OAAW,KAAa,GAAY,CAClC,GAAM,GAAQ,EAAW,GAErB,EAAgB,GACpB,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,GAAI,EAAa,EAAM,IAAK,CAC1B,EAAK,QAAQ,QAAQ,GAAU,EAAa,EAAO,IAAM,IACzD,EAAgB,GAChB,EAAW,EAAK,IAAM,GACtB,MAIJ,GAAI,EACF,OAMN,GAAM,GAAgD,GACtD,EAAe,EAAE,IAAM,GACvB,GAAM,GAAwC,GAE9C,OAAS,GAAI,EAAK,OAAS,EAAG,GAAK,EAAG,IAAK,CACzC,GAAM,GAAO,EAAK,GACZ,EAAa,EAAK,OAGxB,OAAS,GAAI,EAAG,EAAI,EAAK,QAAQ,OAAQ,IACvC,GAAI,EAAe,EAAK,QAAQ,GAAG,IAAK,CACtC,OAAW,KAAa,GACtB,EAAe,EAAW,GAAW,IAAM,GAC3C,EAAS,EAAK,IAAM,GAEtB,OAMN,GAAM,GAA2B,GACjC,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAO,EAAK,GAElB,GAAI,EAAW,EAAK,KAAO,EAAS,EAAK,IAAK,CAE5C,GAAM,GAA8C,GACpD,OAAW,KAAa,GAAK,OAAQ,CACnC,GAAM,GAAY,EAAK,OAAO,GAC1B,EAAa,EAAU,KACzB,GAAa,GAAa,GAK9B,GAAM,GAAa,OAAO,OAAO,GAAI,GACrC,EAAW,OAAS,EACpB,EAAW,QAAU,EAAK,QAE1B,EAAa,KAAK,IAItB,MAAO,GAUH,YACF,EACA,EAA0B,EAC1B,EAAqC,CAEvC,OAAS,GAAI,EAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACjD,GAAM,GAAO,EAAa,GAEpB,EAAgB,GAYtB,GAXA,EAAK,QAAQ,QAAQ,GAAI,CACvB,GAAM,GAAa,EAA6B,EAAE,IAC9C,GAAc,KAChB,EAAI,KAAK,GAIT,EAAI,KAAK,QAIT,EAAK,UAAY,KACnB,KAAM,IAAI,OACN,4DACO,EAAK,eAIlB,GAAM,GAAiB,EAAK,SAAS,GAErC,OAAW,KAAa,GAAK,OAAQ,CACnC,GAAI,CAAE,KAAa,IACjB,KAAM,IAAI,OACN,iCAAiC,iCACH,OAAO,KAAK,OAIhD,GAAM,GAAK,EAAK,IAAM,EAAe,MACrC,GAAI,EAAG,QAAU,UACf,KAAM,IAAI,OACN,4BACI,EAAK,qCACN,yCAAiD,EAAG,UAE7D,GAAM,GAAI,EAAK,OAAO,GACtB,GAAI,CAAM,GAAY,EAAG,MAAO,EAAE,OAChC,KAAM,IAAI,OACN,4BACI,EAAK,sCACL,iBAAyB,EAAG,wDACL,EAAE,UAGnC,GAAI,EAA6B,EAAE,KAAO,KACxC,EAA6B,EAAE,IAAM,MAChC,CACL,GAAM,GAAc,EAA6B,EAAE,IACnD,EAA6B,EAAE,IAAM,EAAI,EAAa,GACtD,EAAY,aCvKpB,GAAM,IAAwB,GAExB,GAA6B,EAE7B,GAAwB,EAExB,YACF,EAA2B,EAAiB,EAC5C,EAAgB,CAClB,GAAM,GAAU,GAAe,GACzB,EAAY,GAAwB,EAAM,EAAO,EAAO,GACxD,EAAO,EAAM,OACb,EAAY,GAAkB,EAAM,EAAO,EAAO,EAAS,GAC3D,EAAQ,CAAC,UACf,MAAI,IACF,GAAM,KAAK,YAAY,KACvB,EAAM,KAAK,WAAW,KACtB,EAAM,KAAK,aAAa,MACxB,EAAM,KAAK,cAEb,EAAM,KAAK,EAAU,IAAI,GAAK,OAAS,GAAG,KAAK;IACxC,EAAM,KAAK;GAGpB,YACI,EAA2B,EAAiB,EAC5C,EAAiB,CACnB,GAAM,GAAI,GAAc,GAClB,EAAU,EAAQ,EAAQ,OAAS,GACnC,EAAY,GAAI,OAAM,GAAS,KAAK,GACpC,EAAO,EAAM,OACb,EACF,IAAU,YAAc,GAAoB,GAAQ,EAExD,GAAI,EAAO,EACT,OAAS,GAAM,EAAG,EAAM,EAAI,EAAS,IAAO,CAC1C,GAAM,GAAS,EAAM,EACrB,OAAS,GAAI,EAAG,EAAI,EAAS,IAC3B,EAAU,GAAK,KAAK,IAChB,EAAU,GACV,GAAY,EAAe,EAAS,GAAI,EAAG,GAAO,QAI5D,MAAO,GAGT,YACI,EAAqC,EAAa,EAAe,CACnE,GAAI,GACJ,MAAI,OAAM,QAAQ,GAChB,EAAS,GAAG,WAAW,EAAI,GAAG,QAAQ,UAC/B,WAAW,EAAI,GAAG,QAAQ,QACxB,GAAS,GAClB,EAAS,IAAI,KACJ,IAAU,OACnB,EAAS,GAAgB,GAEzB,EAAS,WAAW,EAAI,QAAQ,KAAwB,WAGnD,GAAS,EAAQ,GAG1B,YAAyB,EAAS,CAChC,MAAO,KAAM,EAAI,QAAU,OAG7B,YACI,EAA2B,EAAiB,EAC5C,EAAmB,EAAqB,EAAS,GAAI,CACvD,GAAM,GAAoB,IAAU,YAAc,EAAI,EAEhD,EAAO,EAAM,GACb,EAAO,EAAM,OACnB,GAAI,IAAS,EAAG,CACd,GAAI,IAAU,YAAa,CACzB,GAAM,GAAe,GAAoB,GACzC,MAAO,CAAC,GAAY,EAAa,GAAI,EAAG,IAE1C,MAAI,KAAU,OACL,CAAC,GAAgB,EAAK,KAExB,CAAC,EAAK,GAAG,YAGlB,GAAI,IAAS,EAAG,CACd,GAAI,EAAO,GAAuB,CAChC,GAAM,GAAgB,GAA6B,EAE/C,EAAY,MAAM,KAClB,EAAK,MAAM,EAAG,IACd,EAAW,MAAM,KAAqC,EAAK,MAC1D,GAAO,IAA8B,EACtC,EAAO,IACX,MAAI,KAAU,aACZ,GAAY,GAAoB,GAChC,EAAW,GAAoB,IAE1B,CACL,IACA,EAAU,IAAI,CAAC,EAAG,IAAM,GAAY,EAAG,EAAU,GAAI,IAChD,KAAK,MACV,UACA,EACK,IACG,CAAC,EAAG,IAAM,GACN,EAAG,EAAU,EAAO,GAA6B,GAAI,IAC5D,KAAK,MACV,KAGJ,GAAM,GACF,IAAU,YAAc,GAAoB,GACpB,MAAM,KAAoB,GAEtD,MAAO,CACL,IACA,EAAY,IAAI,CAAC,EAAG,IAAM,GAAY,EAAG,EAAU,GAAI,IAClD,KAAK,MACV,KAKJ,GAAM,GAAW,EAAM,MAAM,GACvB,EAAa,EAAQ,MAAM,GAC3B,EAAS,EAAQ,GAAK,EACtB,EAAkB,GACxB,GAAI,EAAO,GAAuB,CAChC,OAAS,GAAI,EAAG,EAAI,GAA4B,IAAK,CACnD,GAAM,GAAQ,EAAI,EACZ,EAAM,EAAQ,EACpB,EAAM,KAAK,GAAG,GACV,EAAK,MAAM,EAAO,GAAM,EAAU,EAAO,EAAY,EACrD,KAEN,EAAM,KAAK,OACX,OAAS,GAAI,EAAO,GAA4B,EAAI,EAAM,IAAK,CAC7D,GAAM,GAAQ,EAAI,EACZ,EAAM,EAAQ,EACpB,EAAM,KAAK,GAAG,GACV,EAAK,MAAM,EAAO,GAAM,EAAU,EAAO,EAAY,EACrD,IAAM,EAAO,SAGnB,QAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAM,GAAQ,EAAI,EACZ,EAAM,EAAQ,EACpB,EAAM,KAAK,GAAG,GACV,EAAK,MAAM,EAAO,GAAM,EAAU,EAAO,EAAY,EACrD,IAAM,EAAO,IAGrB,GAAM,GAAM,IAAS,EAAI,IAAM,GAC/B,EAAM,GAAK,IAAM,EAAM,GAAK,EAC5B,OAAS,GAAI,EAAG,EAAI,EAAM,OAAS,EAAG,IACpC,EAAM,GAAK,IAAM,EAAM,GAAK,EAE9B,GAAI,GAAa;EACjB,OAAS,GAAI,EAAG,EAAI,EAAM,IACxB,GAAc;EAEhB,MAAA,GAAM,EAAM,OAAS,GACjB,IAAM,EAAM,EAAM,OAAS,GAAK,IAAO,GAAS,GAAK,GAClD,EAGT,YAA6B,EACU,CACrC,GAAM,GAAyC,GAC/C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,GAAK,EACpC,EAAc,KAAK,CAAC,EAAK,GAAI,EAAK,EAAI,KAExC,MAAO,GC3JH,GAAA,IAAA,KAAmB,CAMvB,YAAY,EAA2B,EAAU,EAAuB,CAItE,GAJqC,KAAA,MAAA,EACrC,KAAK,MAAQ,EAAM,QACnB,KAAK,KAAY,GAAc,GAE3B,GAAU,KAAM,CAClB,GAAM,GAAI,EAAO,OACZ,EACD,IAAM,KAAK,KACX,IAAM,qBAAqB,qDACG,KAAK,UAEzC,GAAI,IAAU,YACZ,KAAM,IAAI,OACN,8JAIN,KAAK,OAAS,GAAe,GAAkB,EAAO,KAAK,MAC3D,KAAK,QAAU,GAAe,GAWhC,IAAI,KAA6B,EAAc,CACzC,EAAK,SAAW,GAClB,GAAO,CAAC,IAEL,EACD,EAAK,SAAW,KAAK,KACrB,IAAM,uCAAuC,EAAK,gCAC3B,KAAK,SAEhC,GAAM,GAAQ,KAAK,WAAW,GAC9B,KAAK,OAAO,GAAS,EAUvB,OAAO,EAAc,CACf,EAAK,SAAW,GAClB,GAAO,CAAC,IAEV,GAAI,GAAI,EACR,OAAW,KAAO,GAAM,CACtB,GAAI,EAAM,GAAK,GAAO,KAAK,MAAM,GAAI,CACnC,GAAM,GAAM,qCAAqC,qBAC3B,KAAK,QAC3B,KAAM,IAAI,OAAM,GAElB,IAEF,GAAI,GAAQ,EAAK,EAAK,OAAS,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,GAAS,KAAK,QAAQ,GAAK,EAAK,GAElC,MAAO,MAAK,OAAO,GAGrB,WAAW,EAAc,CACvB,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,GAAK,GAEd,GAAI,GAAQ,EAAK,EAAK,OAAS,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,GAAS,KAAK,QAAQ,GAAK,EAAK,GAElC,MAAO,GAGT,WAAW,EAAa,CACtB,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,CAAC,GAEV,GAAM,GAAiB,GAAI,OAAM,KAAK,MAAM,QAC5C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,EAAK,GAAK,KAAK,MAAM,EAAQ,KAAK,QAAQ,IAC1C,GAAS,EAAK,GAAK,KAAK,QAAQ,GAElC,MAAA,GAAK,EAAK,OAAS,GAAK,EACjB,KAGL,OAAI,CACN,MAAO,MAAK,MAAM,OAQpB,UAAQ,CACN,MAAO,MAAY,WAAW,KAAK,OAAQ,KAAK,MAAO,KAAK,SAiC5D,GAAiC,KAEjC,GAAuB,KAEvB,GAA8C,KAW5C,YAA2B,EAAuB,CACtD,GAAY,EAQR,YAAuB,EAAkB,CAC7C,GAAY,EAOR,YAAkC,EAAyB,CAC/D,GAAuB,EAuBnB,GAAA,IAAA,KAAa,CA6BjB,YAAY,EAAoB,EAAiB,EAAgB,EAAU,CAX3E,KAAA,KAAO,GAoIG,KAAA,mBAAqB,GAxH7B,KAAK,MAAQ,EAAM,QACnB,KAAK,MAAQ,GAAS,UACtB,KAAK,KAAY,GAAc,GAC/B,KAAK,QAAU,GAAe,GAC9B,KAAK,OAAS,EACd,KAAK,GAAK,EACV,KAAK,SAAY,KAAK,KAAO,EAAI,KAAK,KAAK,WAAa,YAGtD,OAAI,CACN,MAAO,MAAK,MAAM,YAQd,SAAM,CACV,GAAM,GAAO,KAAM,MAAK,OACxB,MAAO,IAAU,OAAO,KAAK,MAAO,KAAK,MAAY,GAOvD,YAAU,CACR,MAAO,IAAU,OAAO,KAAK,MAAO,KAAK,MAAY,KAAK,iBAStD,QAAK,CACT,GAAM,GAAO,KAAM,MAAK,OACxB,MAAO,IAAc,KAAK,MAAO,GASnC,WAAS,CACP,MAAO,IAAc,KAAK,MAAO,KAAK,iBASlC,OAAI,CACR,KAAK,kBACL,GAAM,GAAO,KAAY,KAAK,KAAK,QACnC,GAAI,KAAK,QAAU,SAAU,CAC3B,GAAM,GAAQ,KAAM,GACpB,GAAI,CACF,MAAO,GAAM,IAAI,GAAU,GAAa,UACxC,EADwC,CAExC,KAAM,IAAI,OACN,kGAIR,MAAO,GAST,UAAQ,CACN,KAAK,kBACL,GAAM,GAAO,KAAY,SAAS,KAAK,QACvC,GAAI,KAAK,QAAU,SACjB,GAAI,CACF,MAAQ,GAAsB,IAAI,GAAU,GAAa,UAEzD,EAFyD,CAGzD,KAAM,IAAI,OACN,iGAIR,MAAO,QAIH,QAAK,CACT,KAAK,kBACL,GAAM,GAAO,KAAM,MAAY,KAAK,KAAK,QACzC,MAAI,MAAK,QAAU,SACV,EAEA,GAAI,YAAY,EAAoB,QAS/C,SAAO,CACD,KAAK,YAGT,MAAY,cAAc,MAC1B,KAAK,mBAAqB,OAIxB,aAAU,CACZ,MAAO,MAAK,mBAGd,iBAAe,CACb,GAAI,KAAK,WACP,KAAM,IAAI,OAAM,uBAYpB,MAAM,EAAU,GAAK,CACnB,MAAO,IAAU,MAAM,KAAM,GAO/B,OAAK,CACH,MAAA,MAAK,kBACE,GAAU,MAAM,MAQzB,SAAS,EAAU,GAAK,CACtB,GAAM,GAAO,KAAK,WAClB,MAAO,IAAe,EAAM,KAAK,MAAO,KAAK,MAAO,GAGtD,KAAqB,EAAe,CAClC,MAAA,MAAK,kBACE,GAAU,KAAK,KAAW,GAEnC,SAAS,EAAY,GAAM,EAAe,EAAgB,CACxD,MAAA,MAAK,kBACE,KAAY,aAAa,KAAM,EAAW,EAAM,KAI3D,OAAO,eAAe,GAAQ,OAAO,YAAa,CAChD,MAAQ,GAMC,CAAC,CAAC,GAAY,EAAS,MAAQ,MAAQ,EAAS,UAAY,MAC/D,EAAS,iBAAmB,OAI9B,YAA8B,CAIlC,MAAO,IAAU,SAAU,IAClB,IAKX,IAkCM,GAAA,IAAA,aAA+C,GAAS,CAG5D,YACI,EAAgC,EAAoB,EACpD,EAAgB,CAClB,MACI,EAAa,MAAO,EAAa,MAAO,EAAa,OAAQ,GAH/B,KAAA,UAAA,EAIlC,KAAK,KAAO,EAWd,OAAO,EAAmB,CACxB,GAAI,EAAS,QAAU,KAAK,MAC1B,KAAM,IAAI,OACN,2BAA2B,EAAS,8BACjB,KAAK,qBAE9B,GAAI,CAAM,GAAY,EAAS,MAAO,KAAK,OACzC,KAAM,IAAI,OACN,2BAA2B,EAAS,8BACjB,KAAK,qBAE9B,KAAY,cAAc,MAC1B,KAAK,OAAS,EAAS,OACvB,KAAY,OAAO,KAAM,MAG3B,SAAO,CACL,KAAY,gBAAgB,MAC5B,KAAK,mBAAqB,KAI9B,OAAO,eAAe,GAAU,OAAO,YAAa,CAClD,MAAQ,GACC,YAAoB,KAAU,EAAS,QAAU,MACpD,EAAS,iBAAkB,YChiBnC,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,eAAA,IAAA,GAAA,eAAA,IAAA,KCgEA,GAAY,IAAZ,AAAA,UAAY,EAAI,CACd,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,OAPU,IAAA,IAAI,KAqBhB,GAAK,IAAL,AAAA,UAAK,EAAiB,CACpB,EAAA,QAAA,UACA,EAAA,MAAA,QACA,EAAA,KAAA,QACA,EAAA,UAAA,cAJG,IAAA,IAAiB,KAOtB,GAAK,IAAL,AAAA,UAAK,EAAgB,CACnB,EAAA,QAAA,UACA,EAAA,MAAA,QACA,EAAA,KAAA,OACA,EAAA,UAAA,cAJG,IAAA,IAAgB,KAOrB,GAAK,IAAL,AAAA,UAAK,EAAmB,CACtB,EAAA,QAAA,UACA,EAAA,MAAA,UACA,EAAA,KAAA,UACA,EAAA,UAAA,cAJG,IAAA,IAAmB,KAOxB,GAAK,IAAL,AAAA,UAAK,EAAqB,CACxB,EAAA,QAAA,YACA,EAAA,MAAA,YACA,EAAA,KAAA,YACA,EAAA,UAAA,cAJG,IAAA,IAAqB,KAO1B,GAAM,IAAgB,CACpB,QAAW,GACX,MAAS,GACT,KAAQ,GACR,UAAa,IAGT,YAAqB,EAAiB,EAAe,CACzD,GAAI,IAAU,UAAY,IAAU,SAAU,CAC5C,GAAI,IAAU,UAAY,IAAU,SAClC,MAAO,SAET,KAAM,IAAI,OAAM,kBAAkB,UAAc,KAElD,MAAO,IAAc,GAAO,GAIxB,YAAqB,EAAc,CACvC,MAAO,IAAW,EAAM,SD9GpB,YAA2C,EAAM,EAAI,CACzD,GAAI,EAAE,QAAU,EAAE,MAChB,MAAO,CAAC,EAAG,GAEb,GAAM,GAAQ,GAAW,EAAE,MAAO,EAAE,OACpC,MAAO,CAAC,EAAE,KAAK,GAAQ,EAAE,KAAK,IAG1B,YAA2B,EAAW,EAAS,CACnD,EACI,EAAE,QAAU,EAAE,MACd,IAAM,2BAA2B,EAAE,qBACpB,EAAE,2BAGjB,YAAyB,EAAgB,EAAoB,CACjE,MAAO,GAAW,KAAK,GAAK,EAAE,KAAO,EAAO,IAexC,YAAgC,EAAuB,CAC3D,GAAM,GAAiB,GACjB,EAAO,GAAI,KACjB,MAAA,IAAoB,EAAQ,EAAM,GAC3B,EAGT,YACI,EAA4B,EAAgB,EAAkB,CAChE,GAAI,GAAa,KACf,OAEF,GAAI,YAAqB,IAAQ,CAC/B,EAAK,KAAK,GACV,OAEF,GAAI,CAAC,GAAW,GACd,OAGF,GAAM,GAAW,EACjB,OAAW,KAAK,GAAU,CACxB,GAAM,GAAM,EAAS,GAChB,EAAK,IAAI,IACZ,GAAK,IAAI,GACT,GAAoB,EAAK,EAAM,KAMrC,YAAoB,EAAQ,CAC1B,MAAO,OAAM,QAAQ,IAAQ,MAAO,IAAQ,SEe9C,YAEI,EACgC,CAElC,MAAQ,GAAmD,YAAc,KAG3E,GAAA,IAAA,KAAiB,CAAjB,aAAA,CAEE,KAAA,oBAAwC,GAExC,KAAA,eAAiB,EACjB,KAAA,SAAW,EACX,KAAA,WAAa,EACb,KAAA,iBAAmB,EACnB,KAAA,eAAiB,EAMjB,KAAA,cAAgB,EAGhB,KAAA,YAAc,EAId,KAAA,WAA2B,GAK3B,KAAA,kBAA8B,GAC9B,KAAA,YAAc,EAEd,KAAA,WAAa,GAAI,SAOjB,KAAA,UAAY,GACZ,KAAA,cAA6B,CAC3B,SAAU,EACV,WAAY,EACZ,UAAW,EACX,QAAS,GACT,OAAQ,QACJ,cAAW,CAET,MAAO,OAAM,KAAK,GAAI,KAAI,KAAK,QAAQ,IAAI,GAAK,EAAE,UAI1D,SAAO,CACL,OAAW,KAAgB,MAAK,oBAC9B,KAAK,oBAAoB,GAAc,YAKvC,GAAA,KAAa,CAgBjB,YAAmB,EAAgB,CAAhB,KAAA,IAAA,EAbnB,KAAA,SAA0C,GAC1C,KAAA,gBAKI,GAKI,KAAA,qBAAuB,EAG7B,KAAK,MAAQ,GAAI,SAGb,QAAK,CACT,GAAI,KAAK,oBAAsB,KAC7B,MAAO,MAAK,mBAAmB,KAAK,IAAK,IAE3C,GAAI,KAAK,iBAAmB,KAC1B,OAEF,GAAM,GAAiB,KAAK,oBAE5B,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAc,EAAe,GAEnC,GADgB,KAAM,MAAK,kBAAkB,GAAa,QAC7C,CACX,KAAM,MAAK,WAAW,GACtB,QAIJ,KAAM,IAAI,OACN,6EAIF,UAAO,CACT,GAAI,KAAK,oBAAsB,KAC7B,KAAM,IAAI,OACN,YAAY,KAAK,kIAIvB,GAAI,KAAK,iBAAmB,KAAM,CAChC,GAAM,CAAC,KAAA,EAAM,UAAA,GAAa,KAAK,kCAC/B,GAAI,EACF,KAAM,IAAI,OACN,iCAAiC,wHAIvC,KAAK,WAAW,GAElB,MAAO,MAAK,gBAGd,cAAY,CACV,MAAO,QAAO,KAAK,KAAK,iBAG1B,YAAY,EAAmB,CAC7B,GAAI,CAAE,KAAe,MAAK,UAGxB,GAAI,IAAe,MAAK,gBAAiB,CACvC,GAAM,CAAC,UAAA,GAAa,KAAK,kBAAkB,GAC3C,GAAI,EAEF,MAAO,UAGT,OAAO,MAGX,MAAO,MAAK,SAAS,GAGvB,mBAAmB,EAAmB,CAEpC,MAAM,KAAe,MAAK,gBAGnB,KAAK,gBAAgB,GAAa,QAFhC,KAKX,gBACI,EACA,EACA,EAAW,EAAC,CACd,MAAI,KAAe,MAAK,gBACtB,SAAQ,KACJ,GAAG,uEAEA,IAET,MAAK,gBAAgB,GAAe,CAAC,QAAA,EAAS,SAAA,GACvC,SAGH,YAAW,EAAmB,CAClC,GAAI,KAAK,gBAAgB,IAAgB,KACvC,KAAM,IAAI,OAAM,iBAAiB,4BAGnC,GADA,KAAK,YAAc,EACf,KAAK,SAAS,IAAgB,KAAM,CACtC,KAAK,gBAAkB,KACvB,GAAM,CAAC,QAAA,EAAS,UAAA,GAAa,KAAK,kBAAkB,GAEpD,GAAI,CADW,GAAY,KAAM,GAAU,GAEzC,MAAO,GAGX,MAAA,MAAK,gBAAkB,KAAK,SAAS,GACrC,KAAK,yBAEL,KAAK,SAAW,GAAI,IAAS,KAAK,iBAE3B,GAGD,wBAAsB,CACZ,GAAqB,KAAK,aAClC,QAAQ,GAAS,CACnB,EAAO,WAAa,MACtB,EAAO,UAAU,KAAK,mBAKpB,yBAAyB,EAAmB,CAClC,GAAqB,GAC7B,QAAQ,GAAS,CACnB,EAAO,aAAe,MACxB,EAAO,YAAY,KAAK,SAAS,MAW/B,kBAAkB,EAAmB,CAE3C,GAAM,GAAuB,KAAK,gBAAgB,GAClD,GAAI,GAAwB,KAC1B,KAAM,IAAI,OACN,6BAA6B,6BAGnC,GAAI,CACF,GAAM,GAAU,EAAqB,UAMrC,GAAI,GAAW,CAAE,aAAmB,MAChC,MAAO,GAAQ,MAAS,WAAY,CACtC,GAAM,GAAY,EAAE,KAAK,qBACnB,EACF,EACK,KAAK,GAEA,EAAY,KAAK,qBACZ,GAET,MAAK,SAAS,GAAe,EAC7B,KAAK,mBAAqB,KACnB,KAER,MAAM,GAED,GAAY,KAAK,sBAGrB,MAAK,mBAAqB,KAC1B,QAAQ,KACJ,6BAA6B,YACjC,QAAQ,KAAK,EAAI,OAAS,EAAI,UACvB,KAEjB,MAAA,MAAK,mBAAqB,EACnB,CAAC,QAAA,EAAS,UAAW,QAE5B,OAAA,MAAK,SAAS,GAAe,EACtB,CAAC,QAAS,GAAM,UAAW,UAE7B,EAF6B,CAGpC,MAAA,SAAQ,KAAK,6BAA6B,YAC1C,QAAQ,KAAK,EAAI,OAAS,EAAI,SACvB,CAAC,QAAS,GAAO,UAAW,KAIvC,cAAc,EAAmB,CAC/B,GAAI,CAAE,KAAe,MAAK,iBACxB,KAAM,IAAI,OAAM,GAAG,mCAEjB,KAAK,cAAgB,GAAe,KAAK,oBAAsB,MAGjE,KAAK,uBAGH,IAAe,MAAK,UACtB,MAAK,yBAAyB,GAC9B,KAAK,SAAS,GAAa,UAC3B,MAAO,MAAK,SAAS,IAGvB,MAAO,MAAK,gBAAgB,GAGxB,KAAK,cAAgB,GACvB,MAAK,mBAAqB,KAC1B,KAAK,YAAc,KACnB,KAAK,gBAAkB,MAInB,mBAAiB,CACvB,GAAI,OAAO,KAAK,KAAK,iBAAiB,SAAW,EAC/C,KAAM,IAAI,OAAM,iCAElB,MAAO,QAAO,KAAK,KAAK,iBAAiB,KAAK,CAAC,EAAW,IAEjD,KAAK,gBAAgB,GAAG,SAC3B,KAAK,gBAAgB,GAAG,UAIxB,iCAA+B,CAErC,GAAM,GAAiB,KAAK,oBAE5B,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAc,EAAe,GAC7B,CAAC,QAAA,EAAS,UAAA,GAAa,KAAK,kBAAkB,GACpD,GAAI,GAAa,EACf,MAAO,CAAC,KAAM,EAAa,UAAA,GAG/B,KAAM,IAAI,OACN,0EAIN,SAAS,EAAwB,EAAc,CAC7C,GAAM,GAAO,KAAK,MAAM,WAAW,IAAI,GACjC,EAAa,EAAK,QAClB,EAAS,KAAK,SAAS,GACvB,EAAW,EAAW,SAAS,GAGrC,EAAW,YAAY,EAAQ,IAC/B,EAAK,QAAU,EACf,EAAQ,KAAK,EAAQ,EAAQ,EAAK,MAAO,EAAK,MAAO,GACjD,KAAK,0BAGP,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,KAIvE,KAAgC,EAA6B,EAAe,CAE1E,GAAI,GAAe,KACnB,GAAI,GAAM,KAAM,CAEd,GAAI,MAAO,IAAa,WACtB,KAAM,IAAI,OAAM,uCAElB,EAAK,MACA,CAEL,GAAI,MAAO,IAAa,UAAY,CAAE,aAAoB,SACxD,KAAM,IAAI,OACN,kFAGN,GAAI,MAAO,IAAO,WAChB,KAAM,IAAI,OACN,kFAGN,EAAO,EAIT,GAAI,GACJ,MAAO,MAAK,UACR,IAAM,KAAK,WAAW,GAAO,IAAM,KAAK,SAAS,GAAS,IACxD,GAAS,IACL,YAAkB,UACpB,QAAQ,MAAM,2CAET,IAIP,UAAa,EAAmB,EAAiB,EAAU,CACjE,IACA,GAAI,CACF,GAAM,GAAM,IACZ,MAAA,KACO,QACA,EADA,CAEP,KAAA,KACM,GAKF,cAAY,CAClB,MAAO,IAAO,eAIR,gBAAc,CACpB,MAAO,IAAO,iBASR,MAAM,EAAS,CACrB,GAAM,GAAY,EAAO,UAAU,GAAU,CAAC,EAAA,IACxC,EAAS,CAAC,EAAA,GACV,EAAQ,GAAgB,EAC5B,EAAG,IAAK,CACN,GAAM,GAAQ,UACR,EAAa,CAAC,EAAG,GACjB,EAAQ,CAAC,MAAA,GAEf,MAAO,GAAO,UACH,GAAM,EAEN,MAGT,EAAkB,GACxB,MAAA,MAAK,YAAY,KAAK,MAAM,YAAY,KAAM,EAAQ,CAAC,GAAI,EAAM,EAAO,IACjE,EAgBT,UACI,EAAoB,EAAwB,EAAoB,CAElE,GADkB,GAAU,EAAY,KAAK,cAAgB,KAE3D,KAAM,IAAI,OAAM,WAAW,kCACvB,KAAK,gBAEX,MAAO,MAAK,cAAc,CAAC,WAAA,EAAY,OAAA,EAAQ,MAAA,IAGzC,wBAAsB,CAC5B,MAAO,MAAK,IAAI,QAAQ,WAGlB,sBACJ,EAAoB,EACpB,EAAsB,CACxB,GAAM,GAAkB,KAAK,QAAQ,aAGjC,EAAmB,EACvB,EAAS,QAAQ,GAAO,CAGtB,GAAqB,EAAK,QAAU,YAAc,EAAI,IAQxD,GAAM,GACF,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,GACjE,EACF,EAAkB,EAAmB,EAAmB,EAC5D,GAAI,EAAgB,EAClB,KAAM,IAAI,OACN,YAAY,KAAK,6CACb,8BAA0C,MAS9C,cACJ,EACgC,CAClC,GAAI,GACA,EAAkB,GAChB,EAAW,KAAK,WAEhB,EAAoB,KAAK,MAAM,SAC/B,EAAqB,KAAK,MAAM,WAElC,KAAK,0BACP,KAAK,MAAM,kBAAkB,KAAK,GAGpC,GAAI,GACA,KAAK,aAAe,MAMtB,KAAK,QAGP,GAAI,GAEE,EAAoB,GAA6B,GACnD,EAAa,WACb,KAAK,MAAM,aAAe,KAAO,KAAK,MAAM,YAAY,KAAO,GAMnE,GAAI,GAA6B,GAAe,CAC9C,GAAM,CAAC,WAAA,EAAY,OAAA,EAAQ,MAAA,GAAS,EAChC,KAAK,aAAe,MAMtB,KAAK,QAEP,GAAM,GAAS,GAAU,EAAY,KAAK,aACrC,EACD,GAAU,KACV,IAAM,kCAAkC,mBACpC,KAAK,gBAEb,EAAa,IAAK,CAChB,GAAM,GAAmB,KAAK,QAAQ,aACtC,EAAM,EAAO,WAAW,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAS,KAAK,UACtD,GAAM,GAAW,MAAM,QAAQ,GAAO,EAAM,CAAC,GACzC,KAAK,0BACP,KAAK,sBAAsB,EAAY,EAAkB,GAG3D,GAAM,GAAa,EAAS,IAAK,GAA8B,CAI7D,GAAK,EAAmB,MAAQ,KAC9B,MAAO,GAET,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,MAAA,GAAS,EAC/B,MAAO,MAAK,qBAAqB,EAAQ,EAAO,KAQlD,GAAI,EAAU,CACZ,GAAM,GACF,KAAK,sBAAsB,EAAY,EAAQ,GACnD,EAAQ,KAAK,2BAA2B,GAE1C,MAAO,QAEJ,CACL,GAAM,CAAC,YAAA,GAAe,EAEhB,EAA0B,GAAW,CAIrC,CAAC,GAGL,GAAQ,EAAQ,IAAI,GAAU,KAAK,KAAK,KAAK,MAAM,OAGrD,EAAa,IAAK,CAChB,GAAM,GAAmB,KAAK,QAAQ,aACtC,EAAM,KAAK,KAAK,IAAM,EAAY,KAAK,QAAS,IAChD,GAAM,GAAQ,MAAM,QAAQ,GAAO,EAAM,CAAC,GAC1C,MAAI,MAAK,0BAEP,KAAK,sBAAsB,EAAmB,EAAkB,GAE3D,GAOX,GAAM,CAAC,OAAA,EAAQ,MAAA,GAAS,EAClB,EAAgB,GAA6B,GAC/C,KACA,EAAa,cAEb,EACJ,MAAA,MAAK,UAED,IAAM,KAAK,MAAM,cAAe,IAAM,KAAK,MAAM,cAAe,IAAK,CAC/D,CAAC,KAAK,IAAI,QAAQ,UAAY,CAAC,KAAK,MAAM,UAC5C,EAAU,IAEV,GAAgB,KAAK,SAAS,cAC1B,EAAmB,EAAQ,IAAM,KACjC,KAAK,IAAI,QAAQ,UACnB,KAAK,SAAS,iBAAiB,GAEjC,EAAU,EAAc,WAI5B,GACF,KAAK,YACD,EAAmB,EAAQ,EAAS,EAAe,EAAO,GAG5D,KAAK,MAAM,WACb,KAAK,MAAM,cAAc,QAAQ,KAAK,CACpC,KAAM,EACN,WAAY,KAAK,MAAM,SAAW,EAClC,mBAAoB,KAAK,MAAM,SAC/B,aAAc,KAAK,MAAM,WAAa,EACtC,qBAAsB,KAAK,MAAM,WACjC,YAAa,OAAO,KAAK,GAAQ,IAC7B,GAAO,EAAO,IAAQ,KAAO,EAAO,GAAK,MAAQ,MACrD,aAAc,EAAQ,IAAI,GAAQ,EAAK,OACvC,aAAc,EAAc,OAC5B,UAAW,EAAc,YAGrB,MAAM,QAAQ,GAAO,EAAU,EAAQ,GAQzC,2BAA2B,EAAiB,CAElD,MADc,GAAQ,IAAI,GAAU,KAAK,KAAK,KAAK,MAAM,KAWnD,sBACJ,EAAoB,EACpB,EAAiB,CACnB,GAAM,GAAa,GAAY,GAC/B,GAAI,GAAc,KAAM,CACtB,GAAM,GAAyB,EAAW,cAAgB,GACpD,EAA2B,EAAW,eAAiB,GAIzD,EACA,EAAW,cACR,GACD,MAAM,QAAQ,GACd,IAAM,0DAEV,EAAqB,OAAO,KAAK,GAAQ,IAAK,GAAQ,EAAO,KAE7D,EAAqB,EAAa,IAAK,GAAc,EAAO,IAG9D,GAAM,GACF,EAAQ,OAAO,CAAC,EAAG,IAAM,EAAc,IAE3C,MAAO,GAAmB,OAAO,GAQnC,MAAO,GAQT,WACI,EAAoB,EAAiB,EACrC,EAAuB,CACzB,GAAI,GAAU,KACZ,KAAM,IAAI,OAAM,iDAElB,EAAQ,GAAS,UACjB,EAAU,GAAW,KAAK,QAC1B,GAAI,GAAc,EACd,IAAU,UAAiB,GAAS,EAAO,KAC7C,GAAe,EAAoB,IAAI,GAAU,GAAa,KAEhE,GAAM,GAAS,EAAQ,MAAM,EAAa,EAAO,GAC3C,EAAI,GAAI,IAAO,EAAO,EAAO,EAAQ,KAAK,gBAIhD,GAHA,KAAK,YAAY,EAAG,GAGhB,IAAU,SAAU,CACtB,GAAM,GAAO,KAAK,MAAM,WAAW,IAAI,GACjC,EAAW,GAAqB,GACtC,KAAK,MAAM,UAAY,EAAW,EAAK,MACvC,EAAK,MAAQ,EAEf,MAAO,GAQT,qBACI,EAAgB,EAAiB,EACjC,EAAuB,CACzB,EAAQ,GAAS,UACjB,GAAM,GAAI,GAAI,IAAO,EAAO,EAAO,EAAQ,KAAK,gBAChD,MAAA,MAAK,YAAY,EAAG,GACb,EAGT,aACI,EAAsB,EAAY,GAAM,EACxC,EAAgB,CAClB,EAAO,GAAQ,KAAK,iBAAiB,WACjC,GAAS,MAAQ,IAAU,EAAa,OAC1C,GAAe,EAAa,KAAK,IAEnC,GAAM,GAAI,GAAI,IAAS,EAAc,EAAW,EAAM,KAAK,gBAC3D,GAAI,KAAK,MAAM,oBAAoB,EAAE,OAAS,KAC5C,KAAM,IAAI,OAAM,sBAAsB,EAAE,+BAE1C,MAAA,MAAK,MAAM,oBAAoB,EAAE,MAAQ,EACzC,KAAK,OAAO,EAAG,KAAK,SACb,EAGT,YAAY,EAAW,EAAsB,CAC3C,KAAK,MAAM,aACP,EAAE,QAAU,UACd,KAAK,MAAM,mBAIb,GAAI,GAAQ,EACR,EAAE,QAAU,aAAe,EAAE,QAAU,UACzC,GAAQ,EAAE,KAAY,GAAgB,EAAE,QAE1C,KAAK,MAAM,UAAY,EAElB,KAAK,MAAM,WAAW,IAAI,EAAE,SAC/B,MAAK,MAAM,iBACX,KAAK,MAAM,WAAW,IAAI,EAAE,OAAQ,CAClC,QAAS,GAAW,KAAK,QACzB,MAAO,EAAE,MACT,MAAO,EAAE,MACT,MAAA,KAIE,YAAa,KACjB,KAAK,MAAM,GASf,OAAO,EAAW,EAAsB,CACtC,KAAK,YAAY,EAAG,GACpB,KAAK,QAAQ,OAAO,EAAE,QAGxB,aAAa,EAAgB,EAAsB,CAC7C,KAAK,MAAM,WAAW,IAAI,IAC1B,KAAK,MAAM,WAAW,IAAI,GAAQ,UAAY,GAChD,MAAK,MAAM,WAAW,OAAO,GAC7B,KAAK,MAAM,kBAGf,cAAc,EAAS,CACrB,GAAI,CAAC,KAAK,MAAM,WAAW,IAAI,EAAE,QAC/B,OAEF,GAAM,GAAO,KAAK,MAAM,WAAW,IAAI,EAAE,QASzC,GAPA,KAAK,MAAM,aACP,EAAE,QAAU,UACd,MAAK,MAAM,mBACX,KAAK,MAAM,UAAY,EAAK,OAI1B,EAAE,QAAU,aAAe,EAAE,QAAU,SAAU,CACnD,GAAM,GAAQ,EAAE,KAAY,GAAgB,EAAE,OAC9C,KAAK,MAAM,UAAY,EAIrB,EAAK,QAAQ,YAAY,EAAE,SAC7B,KAAK,aAAa,EAAE,OAAQ,EAAK,SAQrC,kBAAgB,CACd,OAAW,KAAW,MAAK,MAAM,oBAAqB,CACpD,GAAM,GAAI,KAAK,MAAM,oBAAoB,GACzC,KAAK,gBAAgB,IAIzB,gBAAgB,EAAW,CACzB,KAAK,cAAc,GACf,KAAK,MAAM,oBAAoB,EAAE,OAAS,MAC5C,MAAO,MAAK,MAAM,oBAAoB,EAAE,MAI5C,QAAM,CACJ,GAAM,GAAO,KAAK,QAAQ,SAC1B,MAAA,GAAK,WAAa,KAAK,MAAM,WAC7B,EAAK,eAAiB,KAAK,MAAM,eACjC,EAAK,SAAW,KAAK,MAAM,SACvB,KAAK,MAAM,iBAAmB,GAChC,GAAK,WAAa,GACd,EAAK,SAAW,MAClB,GAAK,QAAU,IAEjB,EAAK,QAAQ,KACT,0EAGC,OAGH,SAAQ,EAAyD,CAErE,KAAK,MAAM,UAAY,GAEvB,GAAM,GAAa,KAAK,MAAM,SACxB,EAAkB,KAAK,MAAM,WAEnC,KAAK,MAAM,cAAc,QAAU,GACnC,KAAK,MAAM,cAAc,OAAS,KAAM,KAExC,KAAK,MAAM,UAAY,GAEvB,KAAK,MAAM,cAAc,UAAY,KAAK,IACtC,GAAG,KAAK,MAAM,cAAc,QAAQ,IAAI,GAAK,EAAE,qBACnD,KAAK,MAAM,cAAc,SAAW,KAAK,MAAM,SAAW,EAC1D,KAAK,MAAM,cAAc,WACrB,KAAK,MAAM,WAAa,EAC5B,OAAW,KAAU,MAAK,MAAM,cAAc,QAC5C,EAAO,aAAe,KAAM,GAAO,aACnC,EAAO,UAAY,KAAM,GAAO,UAElC,MAAO,MAAK,MAAM,cAGpB,UAAQ,CACN,MAAO,MAAK,MAAM,cAAgB,GAAK,KAAK,MAAM,cAAgB,EAG5D,YACJ,EAAoB,EAAwB,EAC5C,EAAyB,EAAiB,EAAmB,CAC/D,GAAM,GACF,CAAC,GAAI,KAAK,MAAM,iBAAkB,WAAA,EAAY,OAAA,EAAQ,QAAA,EAAS,MAAA,GAE7D,EAAa,GAAY,GAC3B,GAAc,MAChB,GAAgB,EAAW,UAEzB,GAAiB,MACnB,GAAS,SAAY,GAGnB,GAAM,EAAI,IAAI,CAAC,EAAI,IAAK,CACtB,GAAI,GAAM,KAAM,CACd,GAAM,GAAS,EAAQ,GACjB,EAAY,GAAoB,EAAO,KAAM,EAAO,OAC1D,MAAO,MAAK,WAAW,EAAM,EAAO,MAAO,EAAO,OAEpD,MAAO,KAIF,EAAc,EAAI,OAAS,EAAI,EAAM,EAAI,GAAI,EAAO,KAG/D,KAAK,MAAM,WAAW,KAAK,GAG7B,KAAuB,EAAS,CAC9B,MAAA,GAAO,KAAO,GACP,EAGD,WAAS,CACX,KAAK,MAAM,gBAAkB,GAC/B,MAAK,MAAM,WAAa,IAE1B,KAAK,MAAM,gBAGL,SAAO,CACb,KAAK,MAAM,gBAOb,WAAW,EAAa,CACtB,GAAM,GAAwB,CAC5B,MAAO,GACP,KAAM,gBACN,GAAI,KAAK,MAAM,eAEb,GACF,GAAU,KAAO,GAEnB,KAAK,MAAM,WAAW,KAAK,GAC3B,KAAK,MAAM,YAAc,EAO3B,SAAS,EAAwB,CAC/B,GAAM,GAAyB,GAAsB,GAC/C,EACF,GAAI,KAAI,EAAuB,IAAI,GAAK,EAAE,KAG9C,OAAS,GAAI,EAAG,EAAI,KAAK,MAAM,YAAY,MAAM,OAAQ,IAAK,CAC5D,GAAM,GAAS,KAAK,MAAM,YAAY,MAAM,GACxC,CAAC,EAAO,MAAQ,CAAC,EAA0B,IAAI,EAAO,KACxD,EAAO,UAIX,GAAM,GAAW,KAAK,MAAM,WAAW,MACvC,KAAK,MAAM,YAAc,KAAK,MAAM,WAAW,SAAW,EACtD,KACA,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,OAAS,GAGzD,EAAuB,QAAQ,GAAS,CAGlC,CAAC,EAAO,MAAQ,EAAO,UAAY,EAAS,IAC9C,KAAK,MAAM,KAWjB,UACI,EAAY,EAAc,EAC1B,EAAmB,GAAK,CAG1B,GAFK,EACD,EAAG,OAAS,EAAG,IAAM,6CACrB,GAAM,MAAQ,EAAG,QAAU,UAC7B,KAAM,IAAI,OAAM,0CAA0C,EAAG,UAG/D,GAAM,GAAI,KAAK,UACX,IAAM,KAAK,YAAa,IAAM,KAAK,UACnC,IAAM,KAAK,KAAK,UAAW,IAE1B,EACD,YAAa,IACb,IAAM,kDAEV,GAAM,GAAe,GAAqB,KAAK,MAAM,WAAY,EAAI,GACrE,GAAI,CAAC,GAAoB,EAAa,SAAW,GAAK,EAAG,OAAS,EAChE,KAAM,IAAI,OACN,uIAKN,MAAO,MAAK,KAAK,WAAY,IAAK,CAChC,GAAM,GAAuD,GAC7D,EAAuB,EAAE,IAAO,GAAM,KAAQ,GAAK,EAAE,OAAS,EAG9D,GACI,EAAwB,EAExB,GAAK,KAAK,KAAK,GAEf,IACJ,GAAM,GAAQ,EAAG,IAAI,GAAK,EAAuB,EAAE,KAEnD,MAAI,MAAK,MAAM,gBAAkB,GAG/B,MAAK,MAAM,WAAW,QAAQ,GAAO,CACnC,OAAW,KAAU,GAAK,MACxB,EAAO,YAGX,KAAK,MAAM,WAAa,MAEnB,CAAC,MAAO,EAAG,MAAA,KAItB,WAA6B,EAAwB,CAEnD,MAAK,GACI,GAAW,GAChB,IAAM,qDACH,IAAI,IAAuB,CAC3B,EACD,EAAO,MAAM,GAAK,YAAa,KAC/B,IAAM,oEAGV,GAAI,GAIE,EAA2B,GACjC,EAAO,QAAQ,CAAC,EAAO,IAAK,CAC1B,EAAS,GAAK,IAGhB,GAAM,GAA8B,CAAC,EAAG,IACtC,GAAM,EAAM,GAAG,EAAQ,GAClB,EACD,EAAI,gBAAiB,IACrB,IAAM,8FAEL,EACI,GAAW,EAAI,UACpB,IAAM,oGAEH,EAAI,OAGP,EAAgB,CAAC,EAAO,IAAmB,CAC/C,GAAM,GAAU,EAAI,SAAS,EAAI,GAC3B,EAAkB,MAAM,QAAQ,GAAW,EAAU,CAAC,GACvD,EACD,EAAM,SAAW,EAAO,OACxB,IAAM,uKAGL,EACD,EAAM,MAAM,GAAK,YAAa,KAC9B,IAAM,wIAGV,GAAM,GAAyC,GAC/C,MAAA,GAAM,QAAQ,CAAC,EAAM,IAAK,CACxB,EAAQ,GAAK,IAAM,IAEd,GAGT,MAAO,MAAK,cAAc,CACxB,YAAA,EACA,cAAA,EACA,OAAQ,KAKd,SAAS,EAAc,CAGrB,MADa,MAAK,MAAM,WAAW,IAAI,GAC3B,QAAQ,SAAS,GAE/B,KAAK,EAAc,CAGjB,MADa,MAAK,MAAM,WAAW,IAAI,GAC3B,QAAQ,KAAK,QAGrB,MAAK,EAAiB,CAC1B,GAAM,GAAQ,KACR,EAAa,KAAM,MAAK,QAAQ,KAAK,GAC3C,MAAA,GAAW,OAAS,KAAQ,EACrB,EASD,MAAwB,EAAS,CACvC,MAAI,MAAK,MAAM,aAAe,MAC5B,GAAO,QAAU,KAAK,MAAM,YAAY,GACxC,KAAK,MAAM,YAAY,MAAM,KAAK,IAG7B,KAGL,sBAAmB,CACrB,MAAO,MAAK,MAAM,oBAOpB,OAAK,CAEH,KAAK,uBAEL,KAAK,MAAM,UACX,KAAK,IAAI,QACT,KAAK,MAAQ,GAAI,IAEjB,OAAW,KAAe,MAAK,SAC7B,KAAK,yBAAyB,GAC9B,KAAK,SAAS,GAAa,UAC3B,MAAO,MAAK,SAAS,GAEvB,KAAK,YAAc,KACnB,KAAK,gBAAkB,KACvB,KAAK,mBAAqB,OA5vBb,GAAA,aAAe,EAKf,GAAA,eAAiB,EA2vBlC,YAAc,EAAe,CAC3B,GAAM,GAAS,GAAmB,GAAc,GAAQ,WACxD,MAAO,GAAO,WAAW,EAAQ,EAAO,WAGpC,aAAyB,CAC7B,GAAM,GAAK,KACX,GAAI,EAAG,WAAa,KAAM,CACxB,GAAM,GAAc,GAAI,IAAY,GACpC,EAAG,UAAY,GAAI,IAAO,GAE5B,MAAA,IAAqB,EAAG,UAAU,KAIlC,GAAiB,IAAM,EAAG,WACnB,EAAG,UAGL,GAAM,GAAS,KAQhB,YAAc,EAAW,EAAS,CAEtC,GAAM,GAAS,CAAC,EAAA,EAAG,EAAA,GACnB,MAAO,GAAO,UAAU,GAAK,GCpwC/B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,UAAA,IAAA,GAAA,SAAA,IAAA,KAkBA,aAA4B,CAC1B,MAAO,OAAO,YAAc,aAAe,WAAa,KAGpD,aAAkB,CACtB,GAAI,KAAuB,CAEzB,GAAM,GAAI,UAAU,WAAa,UAAU,QAAW,OAAe,MAErE,MAAO,2TACK,KAAK,IAEb,0kDACK,KAAK,EAAE,OAAO,EAAG,IAE5B,MAAO,GAGH,aAAmB,CACvB,MAAQ,OAAO,SAAW,aAAe,OAAO,UAAY,MAEvD,MAAO,oBAAsB,YClBpC,GAAM,IAAM,IAOZ,GAAI,aAAa,QAAS,IAAM,GAAO,GAAa,CAC9C,GACF,QAAQ,KACJ,iJAOR,GAAI,aAAa,aAAc,IAAkB,MAGjD,GAAI,aACA,UACA,IAAO,MAAO,UAAY,aACrB,MAAO,SAAQ,UAAa,aAC5B,MAAO,SAAQ,SAAS,MAAS,aAG1C,GAAI,aACA,YACA,IAAM,MAAO,YAAc,aAAe,WAAa,MACnD,UAAU,WAAa,MAAQ,SAAS,KAAK,UAAU,YACvD,aAAa,KAAK,UAAU,SAMpC,GAAI,aAAa,OAAQ,IAAM,IAM/B,GAAI,aACA,qCAAsC,IAAM,GAAI,QAAQ,UAG5D,GAAI,aAAa,+BAAgC,IAAM,IAGvD,GAAI,aAAa,UAAW,IAAM,IAGlC,GAAI,aAAa,+BAAgC,IAAM,IAGvD,GAAI,aAAa,sBAAuB,IAAM,ICtDxC,YAAqB,EAAiB,EAAgB,CAC1D,GAAI,GAAwB,EAE5B,GAAI,GAAa,GACf,MAAO,KAAU,SAAW,GAAK,CAAC,EAAI,QAExC,GAAI,CAAC,MAAM,QAAQ,GACjB,MAAO,GAET,GAAM,GAAkB,GAExB,KAAO,MAAM,QAAQ,IACd,GAAa,IAAc,IAAU,UAC1C,EAAM,KAAK,EAAU,QACrB,EAAY,EAAU,GAExB,MAAI,OAAM,QAAQ,IACd,IAAM,QAAQ,uCAChB,GAA2B,EAAK,EAAO,IAGlC,EAGT,YACI,EAAiB,EAAiB,EAAiB,CAErD,GADA,EAAU,GAAW,GACjB,CAAE,MAAM,QAAQ,IAAS,CAAC,GAAa,GAAM,CAC/C,EACI,EAAM,SAAW,EACjB,IAAM,eAAe,EAAQ,KAAK,+DACU,EAAM,eACtD,OAEF,EACI,EAAM,OAAS,EACf,IAAM,eAAe,EAAQ,KAAK,oDACR,EAAI,mBAClC,EACI,EAAI,SAAW,EAAM,GACrB,IAAM,eAAe,EAAQ,KAAK,sBAAsB,EAAM,wBACrC,EAAI,mBACjC,GAAM,GAAW,EAAM,MAAM,GAC7B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAE,EAChC,GAA2B,EAAI,GAAI,EAAU,EAAQ,OAAO,IAIhE,YACI,EACA,EAAuB,EAAiB,EAAoB,CAC9D,GAAI,IAAkB,oBAGtB,CAAA,GAAI,GAAiB,KACnB,KAAM,IAAI,OAAM,kCAElB,GAAI,IAAkB,WAAa,IAAkB,GACjD,IAAkB,WAAa,IAAgB,SACjD,KAAM,IAAI,OACN,aAAa,iBAAuB,cAC9B,qBAAiC,aAIzC,WACF,EAAiB,EAAiB,EAClC,EAAuD,UAAS,CAClE,GAAI,YAAa,IACf,MAAA,IAAY,EAAc,EAAE,MAAO,EAAS,GACrC,EAET,GAAI,GAAgB,GAAW,GAS/B,GANI,IAAkB,UAClB,CAAC,OAAQ,QAAS,WAAW,QAAQ,IAAiB,GACxD,GAAgB,GAElB,GAAY,EAAc,EAAe,EAAS,GAE7C,GAAK,MACL,CAAC,GAAa,IAAM,CAAC,MAAM,QAAQ,IAAM,MAAO,IAAM,UACtD,MAAO,IAAM,WAAa,MAAO,IAAM,SAAW,CACrD,GAAM,GAAO,GAAK,KAAO,OAAU,EAAS,YAAY,KACxD,KAAM,IAAI,OACN,aAAa,iBAAuB,+CACF,MAExC,GAAM,GAAgB,GAAW,EAAG,GAChC,CAAC,GAAa,IAAM,CAAC,MAAM,QAAQ,IACrC,GAAI,CAAC,IAGP,GAAM,GAAS,IAAkB,SAC7B,GAAa,EAAG,GAChB,GAAQ,EAAe,GAHJ,IAIvB,MAAO,GAAO,WAAW,EAAQ,EAAe,GAG5C,YACF,EAA0B,EAAiB,EAC3C,EAAuD,UAAS,CAClE,GAAI,CAAC,MAAM,QAAQ,GACjB,KAAM,IAAI,OACN,YAAY,eAAqB,gDAIvC,MADgB,GACD,IACX,CAAC,EAAG,IACA,EAAgB,EAAG,GAAG,KAAW,KAAM,EAAc,ICnHxD,GAAM,IAAkB,OAOzB,WAAiC,EAAsB,CAC3D,GAAM,GAAO,OAAO,KAAK,GACzB,GAAI,EAAK,SAAW,EAClB,KAAM,IAAI,OACN,yGAEG,EAAK,gBAGd,GAAI,GAAS,EAAK,GACZ,EAAK,EAAE,GAGT,EAAO,SAAS,MAClB,GAAS,EAAO,UAAU,EAAG,EAAO,OAAS,IAI/C,EAAS,EAAS,GAGlB,GAAM,GAAK,IAAI,IAAe,CAC5B,EAAO,WAAW,GAClB,GAAI,CACF,GAAM,GAAS,EAAG,GAAG,GACrB,MAAI,IAAU,IACZ,QAAQ,MAAM,2CAEhB,EAAO,SAAS,GACT,QACA,EADA,CAEP,KAAA,GAAO,SAAS,MACV,IAGV,MAAA,QAAO,eAAe,EAAI,OAAQ,CAAC,MAAO,EAAQ,aAAc,KAGzD,EClBT,YAAoC,EAAoB,EAAkB,CACxE,GAAM,GAAQ,EAAgB,EAAM,OAAQ,WACtC,EAAQ,EAAgB,EAAM,OAAQ,WACvC,GACD,EAAM,MAAO,EAAM,MACnB,yBAAyB,EAAM,aAAa,EAAM,8CAGtD,GAAM,GAAwB,CAAC,KAAM,EAAO,KAAM,GAClD,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KClCrB,YACF,EAAoB,EAAiB,EACrC,EAAgB,CAIlB,GAHI,GAAS,MACX,GAAQ,GAAW,IAEjB,IAAU,YACZ,KAAM,IAAI,OACN,oFAGN,GAAI,CAAC,GAAa,IAAW,CAAC,MAAM,QAAQ,IACxC,MAAO,IAAW,UAAY,MAAO,IAAW,WAChD,MAAO,IAAW,SACpB,KAAM,IAAI,OACN,4HAGN,GAAI,GAAS,KAAM,CACjB,GAAmC,GAEnC,GAAM,GAAe,GAAc,GAC7B,EAAe,GAAc,GACnC,EACI,IAAiB,EACjB,IACI,iCAAiC,8BAC9B,oBAA+B,KAE1C,OAAS,GAAI,EAAG,EAAI,EAAc,OAAQ,EAAE,EAAG,CAC7C,GAAM,GAAW,EAAc,GACzB,EAAoB,IAAM,EAAc,OAAS,EACnD,IAAa,GAAc,EAAM,MAAM,IACvC,GACJ,EACI,EAAc,KAAO,EAAM,IAAM,CAAC,EAClC,IAAM,gDACE,yCACM,SAItB,MAAI,CAAC,GAAa,IAAW,CAAC,MAAM,QAAQ,IAC1C,GAAS,CAAC,IAGZ,EAAQ,GAAS,EACjB,EAAS,IAAU,SACf,GAAa,EAAQ,GACrB,GAAQ,EAAoB,GAAI,IAC7B,EAAO,WAAW,EAAsB,EAAO,GCtBlD,YACF,EAAoB,EAAqB,EAAgB,CAC3D,GAAM,GAAgB,GAAW,EAAQ,GACzC,MAAO,IAAW,EAAQ,EAAO,EAAe,GCjC3C,GAAM,IAAkD,CAC7D,QAAW,EACX,QAAW,EACX,MAAS,EACT,OAAU,EACV,MAAS,EACT,KAAQ,EACR,UAAa,GCFT,GAA0B,EAmBhC,kBACI,EAAuC,EAAmB,CAG5D,GAAM,GAAgC,GAChC,EAA2C,GAE3C,EAAkB,MAAM,QAAQ,GAClC,EAAQ,IAAI,GAAU,EAAO,MAC7B,OAAO,KAAK,GAEhB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,GAAM,GAAO,EAAM,GACb,EAAI,MAAM,QAAQ,GAAW,EAAQ,GAAG,OAAS,EAAQ,GAC/D,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,SAAW,EAAE,QAAU,QAC5D,EAAE,QAAU,UAAY,EAAE,QAAU,YACtC,KAAM,IAAI,OAAM,gCAAgC,OAAU,EAAE,SAE9D,GAAM,GAA6B,CAAC,KAAA,EAAM,MAAO,EAAE,MAAO,MAAO,EAAE,OACnE,GAAI,EAAE,QAAU,SAAU,CACxB,GAAM,GAAY,GAAI,SAAoB,KAAM,IAAU,CACxD,GAAM,GAAO,KAAM,GAAE,QACf,EAAgB,EAAK,OAAO,CAAC,EAAG,IAAM,EAAI,EAAE,OAAQ,GACtD,GAA0B,EAAK,OAC7B,EAAQ,GAAI,YAAW,GACzB,EAAS,EACb,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAM,EAAK,GACX,EACF,GAAI,YAAW,GAAI,aAAY,CAAC,EAAI,SAAS,QACjD,EAAM,IAAI,EAAe,GACzB,GAAU,GACV,EAAM,IAAI,EAAK,GACf,GAAU,EAAI,OAEhB,EAAQ,KAEV,EAAa,KAAK,OAElB,GAAa,KAAK,EAAE,QAElB,GAAS,MACX,GAAK,MAAQ,GAEf,EAAM,KAAK,GAGb,GAAM,GAAe,KAAM,SAAQ,IAAI,GACvC,MAAO,CAAC,KAAM,GAAuB,GAAe,MAAA,GAkBhD,YACF,EAAqB,EAA6B,CAEpD,GAAM,GAAsB,GACxB,EACA,EAAS,EACb,OAAW,KAAQ,GAAO,CACxB,GAAM,GAAO,EAAK,KACZ,EAAQ,EAAK,MACb,EAAQ,EAAK,MACb,EAAO,GAAc,GACvB,EAEJ,GAAI,gBAAkB,GAAM,CAC1B,GAAM,GAAe,EAAK,aAC1B,GAAI,EAAa,QAAU,SAAW,EAAa,QAAU,UAC3D,GAAI,CAAE,QAAS,IAAgB,SAAW,IACxC,KAAM,IAAI,OACN,UAAU,EAAK,0BAA0B,EAAa,oEAGnD,EAAa,QAAU,WAChC,GAAI,IAAU,UACZ,KAAM,IAAI,OACN,UAAU,EAAK,0BAA0B,EAAa,yDACH,UAGzD,MAAM,IAAI,OACN,UAAU,EAAK,uCACO,EAAa,+EAIzC,GAAM,GAAyB,GAAqB,EAAa,OAC3D,EACF,EAAO,MAAM,EAAQ,EAAS,EAAO,GACnC,EAAkB,EAAa,QAAU,QAC3C,GAAI,YAAW,GACf,GAAI,aAAY,GACpB,GAAI,IAAU,UACZ,GAAI,EAAa,QAAU,SAAW,EAAa,QAAU,SAAU,CACrE,EAAS,GAAI,cAAa,EAAe,QACzC,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAI,EAAe,GACzB,EAAO,GAAK,EAAI,EAAa,MAAQ,EAAa,aAE3C,EAAa,QAAU,UAC5B,IAAkB,QACpB,GAAgB,MAElB,EAAS,EAAc,OAEvB,MAAM,IAAI,OACN,iCAAiC,EAAa,0CAG3C,IAAU,QAAS,CAC5B,GAAI,EAAa,QAAU,SAAW,EAAa,QAAU,SAC3D,KAAM,IAAI,OACN,iCAAiC,EAAa,gCAGpD,EAAS,GAAI,YAAW,EAAe,QACvC,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAI,EAAe,GACzB,EAAO,GAAK,KAAK,MAAM,EAAI,EAAa,MAAQ,EAAa,UAG/D,MAAM,IAAI,OAAM,gCAAgC,OAAU,KAE5D,GAAU,EAAO,UACR,IAAU,SAAU,CAC7B,GAAM,GAAO,GAAc,EAAK,OAChC,EAAS,GACT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAM,GAAa,GAAI,aACnB,EAAO,MAAM,EAAQ,EAAS,KAA0B,GAC5D,GAAU,GACV,GAAM,GAAQ,GAAI,YAAW,EAAO,MAAM,EAAQ,EAAS,IAC1D,EAAwB,KAAK,GAC9B,GAAU,OAEP,CACL,GAAM,GAAc,GAAqB,GACnC,EAAa,EAAO,MAAM,EAAQ,EAAS,EAAO,GAExD,GAAI,IAAU,UACZ,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,WACf,IAAU,YAAa,CAChC,EAAS,GAAI,cAAa,GAC1B,GAAM,GAAO,GAAI,cAAa,EAAO,OAAS,GACxC,EAAQ,GAAI,cAAa,EAAO,OAAS,GAC/C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAK,GAAK,EAAO,EAAI,GACrB,EAAM,GAAK,EAAO,EAAI,EAAI,GAE5B,GAAM,GAAa,GAAO,EAAM,EAAO,WACjC,EAAc,GAAO,EAAO,EAAO,WACzC,EAAI,GAAQ,GAAQ,EAAY,GAChC,EAAW,UACX,EAAY,cAEZ,MAAM,IAAI,OAAM,gCAAgC,OAAU,KAE5D,GAAU,EAAO,EAEf,IAAU,aACZ,GAAI,GAAQ,GAAO,EAAQ,EAAO,IAGtC,MAAO,GAMH,YAAiC,EAAgB,CAErD,GAAI,IAAO,KACT,KAAM,IAAI,OAAM,wBAAwB,KAAK,UAAU,MAGzD,GAAI,GAAkB,EAShB,EAA6B,GACnC,EAAG,QAAS,GAAiB,CAM3B,GALA,GAAmB,EAAE,WAErB,EAAa,KACT,EAAE,aAAe,EAAE,OAAO,WAAa,EACA,GAAK,GAAE,YAAoB,IAClE,CAAE,aAAoB,eAAgB,YAAoB,aACxD,YAAoB,aACxB,KAAM,IAAI,OAAM,mCAAmC,EAAE,YAAY,UAKrE,GAAM,GAAI,GAAI,YAAW,GACrB,EAAS,EACb,MAAA,GAAa,QAAS,GAAiB,CACrC,EAAE,IAAI,GAAI,YAAW,EAAE,QAAS,GAChC,GAAU,EAAE,aAGP,EAAE,OAIX,GAAM,IAAgB,MAAO,SAAW,aACnC,OAAO,OAAS,aAAe,MAAO,OAAS,aAC/C,MAAO,OAAS,aAWf,YAA2B,EAAW,CAC1C,MAAI,IACK,OAAO,WAAW,GAEpB,GAAI,MAAK,CAAC,IAAM,KASnB,YAAoC,EAAmB,CAC3D,GAAI,GACF,MAAO,QAAO,KAAK,GAAQ,SAAS,UAEtC,GAAM,GAAM,GAAI,YAAW,GACvB,EAAI,GACR,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAI,EAAG,IACrC,GAAK,OAAO,aAAa,EAAI,IAE/B,MAAO,MAAK,GASR,YAAoC,EAAW,CACnD,GAAI,GAAe,CACjB,GAAM,GAAM,OAAO,KAAK,EAAK,UAC7B,MAAO,GAAI,OAAO,MAAM,EAAI,WAAY,EAAI,WAAa,EAAI,YAE/D,GAAM,GAAI,KAAK,GACT,EAAS,GAAI,YAAW,EAAE,QAChC,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,EAAE,EAC9B,EAAO,IAAI,CAAC,EAAE,WAAW,IAAK,GAEhC,MAAO,GAAO,OASV,YAAkC,EAAsB,CAC5D,GAAI,EAAQ,SAAW,EACrB,MAAO,GAAQ,GAGjB,GAAI,GAAkB,EACtB,EAAQ,QAAS,GAAuB,CACtC,GAAmB,EAAO,aAG5B,GAAM,GAAO,GAAI,YAAW,GACxB,EAAS,EACb,MAAA,GAAQ,QAAS,GAAuB,CACtC,EAAK,IAAI,GAAI,YAAW,GAAS,GACjC,GAAU,EAAO,aAEZ,EAAK,OAUR,YAAmB,EAAY,CACnC,GAAM,GAAY,IAElB,IADA,EAAO,EAAK,OACL,EAAK,SAAS,IACnB,EAAO,EAAK,MAAM,EAAG,EAAK,OAAS,GAErC,GAAM,GAAQ,EAAK,MAAM,GACzB,MAAO,GAAM,EAAM,OAAS,GAQxB,YAAuC,EAA8B,CAEzE,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OAAM,uDAGlB,MAAO,CACL,UAAW,GAAI,MACf,kBAAmB,OACnB,mBAAoB,EAAe,eAAiB,KAChD,EACA,GAAiB,KAAK,UAAU,EAAe,gBACnD,iBAAkB,EAAe,aAAe,KAC5C,EACA,GAAiB,KAAK,UAAU,EAAe,cACnD,gBAAiB,EAAe,YAAc,KAC1C,EACA,EAAe,WAAW,YAUlC,aAAmC,CACjC,GAAM,GAAmB,GAAqB,CAC5C,GAAI,GAAI,GAAK,GACT,EAAI,EAER,KAAQ,GAAI,UAAgB,GAC1B,GAAK,QACL,IAAM,EAER,MAAA,IAAK,CAAC,QACN,GAAK,UAEE,EAAI,GAGP,EAAe,GAAI,aAAY,MAErC,EAAa,GAAK,EAClB,OAAS,GAAI,EAAG,EAAI,KAAM,IACxB,EAAa,GAAK,EAAgB,GAEpC,OAAS,GAAI,KAAM,EAAI,KAAM,IAC3B,EAAa,GAAK,UAAe,GAAI,MAAS,IAGhD,MAAO,GAST,aAAoC,CAClC,GAAM,GAAgB,GAAI,aAAY,IAEtC,EAAc,GAAK,EACnB,EAAc,IAAM,WACpB,EAAc,IAAM,WACpB,EAAc,IAAM,WACpB,OAAS,GAAI,EAAG,EAAI,GAAI,IACtB,EAAc,GAAK,GAAK,GAE1B,OAAS,GAAI,GAAI,EAAI,GAAI,IACvB,EAAc,GAAK,WAAe,GAAI,IAAO,IAG/C,MAAO,GAST,aAAkC,CAChC,GAAM,GAAc,GAAI,aAAY,IAEpC,OAAS,GAAI,EAAG,EAAI,GAAI,IACtB,EAAY,GAAK,KAEnB,MAAA,GAAY,GAAK,EAAY,IAAM,EAE5B,EAUH,aAA2B,CAK/B,GAAM,GAAe,KACf,EAAgB,KAChB,EAAc,KAEpB,MAAQ,IAA+B,CACrC,GAAM,GAAS,GAAI,aAAY,EAAI,EAAe,QAC5C,EAAmB,GAAI,aAAY,GACzC,OAAS,GAAQ,EAAG,EAAQ,EAAe,OAAQ,IAAS,CAC1D,GAAM,GAAc,EAAe,GAC7B,EACF,EAAa,EAAY,GAAe,IAAO,GAAc,OAC7D,EAAc,GAAe,IACjC,EAAiB,GAAS,EAE5B,MAAO,IAAI,cAAa,IC5dtB,GAAA,IAAA,KAAuB,CAO3B,aAAA,CACE,KAAK,YAAc,GACnB,KAAK,YAAc,SAGN,cAAW,CACxB,MAAI,IAAiB,UAAY,MAC/B,IAAiB,SAAW,GAAI,KAE3B,GAAiB,eASnB,oBAAmB,EAAoB,CAC5C,GAAiB,cAAc,YAAY,KAAK,SAS3C,oBAAmB,EAAoB,CAC5C,GAAiB,cAAc,YAAY,KAAK,SAW3C,iBAAgB,EAAoB,CACzC,MAAO,IAAiB,YAAY,EAAK,cAWpC,iBAAgB,EAAsB,EAAyB,CAEpE,MAAO,IAAiB,YAAY,EAAK,OAAQ,SAGpC,aACX,EAAsB,EACtB,EAAyB,CAC3B,GAAM,GAA6B,GAInC,MAHgB,KAAgB,OAC5B,GAAiB,cAAc,YAC/B,GAAiB,cAAc,aAC3B,QAAQ,GAAS,CACvB,GAAM,GAAU,EAAO,EAAK,GACxB,IAAY,MACd,EAAc,KAAK,KAGhB,IAIE,GAAsB,GAC/B,GAAiB,mBAAmB,GAC3B,GAAsB,GAC/B,GAAiB,mBAAmB,GAC3B,GAAmB,GAC5B,GAAiB,gBAAgB,GACxB,GACT,CAAC,EAAsB,IACnB,GAAiB,gBAAgB,EAAK,GCtFxC,GAAgB,eAChB,GAAmB,EAKnB,GAAmB,eAInB,GAAkB,mBAexB,aAA4B,CAC1B,GAAI,CAAC,IAAM,QAAQ,cAIjB,KAAM,IAAI,OACN,2FAIN,GAAM,GAAiB,MAAO,SAAW,YAAc,KAAO,OACxD,EAAU,EAAU,WAAa,EAAU,cAC7C,EAAU,iBAAmB,EAAU,aACvC,EAAU,cACd,GAAI,GAAW,KACb,KAAM,IAAI,OACN,6DAEN,MAAO,GAGT,YAAuB,EAAuB,CAC5C,GAAM,GAAK,EAAY,OACvB,EAAG,kBAAkB,GAAkB,CAAC,QAAS,cACjD,EAAG,kBAAkB,GAAiB,CAAC,QAAS,cAQ5C,GAAA,IAAA,KAAuB,CAM3B,YAAY,EAAiB,CAG3B,GAFA,KAAK,UAAY,KAEb,GAAa,MAAQ,CAAC,EACxB,KAAM,IAAI,OACN,kEAEN,KAAK,UAAY,OAGb,MAAK,EAA8B,CAEvC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAIN,MAAO,MAAK,eAAe,KAAK,UAAW,QAIvC,OAAI,CACR,MAAO,MAAK,eAAe,KAAK,WAiB1B,eAAe,EAAmB,EAA+B,CAEvE,MAAO,IAAI,SAAmC,CAAC,EAAS,IAAU,CAChE,GAAM,GAAc,KAAK,UAAU,KAAK,GAAe,IACvD,EAAY,gBAAkB,IAAM,GAAc,GAElD,EAAY,UAAY,IAAK,CAC3B,GAAM,GAAK,EAAY,OAEvB,GAAI,GAAkB,KAAM,CAE1B,GAAM,GAAU,EAAG,YAAY,GAAkB,YAE3C,EADa,EAAQ,YAAY,IACT,IAAI,KAAK,WACvC,EAAW,UAAY,IAAK,CAC1B,GAAI,EAAW,QAAU,KACvB,MAAA,GAAG,QACI,EAAO,GAAI,OACd,gCAAgC,KAAK,6BAGzC,EAAQ,EAAW,OAAO,iBAG9B,EAAW,QAAU,GACnB,GAAG,QACI,EAAO,EAAW,QAE3B,EAAQ,WAAa,IAAM,EAAG,YACzB,CAEL,GAAM,GACF,GAA6B,GAE3B,EAAS,EAAG,YAAY,GAAiB,aAC3C,EAAY,EAAO,YAAY,IAC7B,EACF,EAAU,IAAI,CAAC,UAAW,KAAK,UAAW,mBAAA,IAC1C,EACJ,EAAe,UAAY,IAAK,CAE9B,EAAU,EAAG,YAAY,GAAkB,aAE3C,GAAM,GADa,EAAQ,YAAY,IACJ,IAAI,CACrC,UAAW,KAAK,UAChB,eAAA,EACA,mBAAA,IAEF,EAAgB,UAAY,IAAM,EAAQ,CAAC,mBAAA,IAC3C,EAAgB,QAAU,GAAQ,CAGhC,EAAY,EAAO,YAAY,IAC/B,GAAM,GAAoB,EAAU,OAAO,KAAK,WAChD,EAAkB,UAAY,IAC5B,GAAG,QACI,EAAO,EAAgB,QAEhC,EAAkB,QAAU,GAC1B,GAAG,QACI,EAAO,EAAgB,UAIpC,EAAe,QAAU,GACvB,GAAG,QACI,EAAO,EAAe,QAE/B,EAAO,WAAa,IAAK,CACnB,GAAW,KACb,EAAG,QAEH,EAAQ,WAAa,IAAM,EAAG,WAKtC,EAAY,QAAU,GAAS,EAAO,EAAY,WAvHtC,GAAA,WAAa,eA4HxB,GAAM,IAA6B,GACnC,IAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,IAAQ,EAAI,WAAW,GAAiB,YAClD,GAAiB,EAAI,MAAM,GAAiB,WAAW,SAHzD,KASX,GAAiB,mBAAmB,IACpC,GAAiB,mBAAmB,IAmB9B,YAA2B,EAAiB,CAChD,MAAO,IAAI,IAAiB,GAG9B,YAA0B,EAAW,CACnC,MAAO,GAAI,WAAW,GAAiB,YACnC,EAAI,MAAM,GAAiB,WAAW,QACtC,EAGA,GAAA,IAAA,KAA8B,CAGlC,aAAA,CACE,KAAK,UAAY,UAGb,aAAU,CACd,MAAO,IAAI,SACP,CAAC,EAAS,IAAU,CAClB,GAAM,GACF,KAAK,UAAU,KAAK,GAAe,IACvC,EAAY,gBAAkB,IAAM,GAAc,GAElD,EAAY,UAAY,IAAK,CAC3B,GAAM,GAAK,EAAY,OACjB,EAAK,EAAG,YAAY,GAAiB,YAUrC,EATQ,EAAG,YAAY,IASY,SACzC,EAAkB,UAAY,IAAK,CACjC,GAAM,GAA4C,GAClD,OAAW,KAAQ,GAAkB,OACnC,EAAI,EAAK,WAAa,EAAK,mBAE7B,EAAQ,IAEV,EAAkB,QAAU,GAC1B,GAAG,QACI,EAAO,EAAkB,QAElC,EAAG,WAAa,IAAM,EAAG,SAE3B,EAAY,QAAU,GAAS,EAAO,EAAY,cAIpD,aAAY,EAAY,CAC5B,MAAA,GAAO,GAAiB,GACjB,GAAI,SAA4B,CAAC,EAAS,IAAU,CACzD,GAAM,GAAc,KAAK,UAAU,KAAK,GAAe,IACvD,EAAY,gBAAkB,IAAM,GAAc,GAElD,EAAY,UAAY,IAAK,CAC3B,GAAM,GAAK,EAAY,OACjB,EAAS,EAAG,YAAY,GAAiB,aACzC,EAAY,EAAO,YAAY,IAE/B,EAAiB,EAAU,IAAI,GACjC,EACJ,EAAe,UAAY,IAAK,CAC9B,GAAI,EAAe,QAAU,KAC3B,MAAA,GAAG,QACI,EAAO,GAAI,OACd,gCAAgC,qBAE/B,CAEL,GAAM,GAAoB,EAAU,OAAO,GACrC,EAAkB,IAAK,CAE3B,EAAU,EAAG,YAAY,GAAkB,aAE3C,GAAM,GADa,EAAQ,YAAY,IACD,OAAO,GAC7C,EAAmB,UAAY,IAC3B,EAAQ,EAAe,OAAO,oBAClC,EAAmB,QAAU,GACzB,EAAO,EAAe,QAI5B,EAAkB,UAAY,EAC9B,EAAkB,QAAU,GAC1B,KACA,EAAG,QACI,EAAO,EAAe,UAInC,EAAe,QAAU,GACvB,GAAG,QACI,EAAO,EAAe,QAG/B,EAAO,WAAa,IAAK,CACnB,GAAW,KACb,EAAG,QAEH,EAAQ,WAAa,IAAM,EAAG,UAIpC,EAAY,QAAU,GAAS,EAAO,EAAY,WCrUlD,GAAiB,IACjB,GAAc,sBACd,GAAc,OACd,GAAwB,iBACxB,GAAsB,eACtB,GAAqB,cACrB,GAAwB,iBA8B9B,YAAsB,EAAY,CAOhC,MAAO,CACL,KAAM,CAAC,GAAa,EAAM,IAAa,KAAK,IAC5C,SAAU,CAAC,GAAa,EAAM,IAAuB,KAAK,IAC1D,YAAa,CAAC,GAAa,EAAM,IAAqB,KAAK,IAC3D,WAAY,CAAC,GAAa,EAAM,IAAoB,KAAK,IACzD,cACI,CAAC,GAAa,EAAM,IAAuB,KAAK,KAWxD,YAA6B,EAAW,CACtC,GAAM,GAAQ,EAAI,MAAM,IACxB,GAAI,EAAM,OAAS,EACjB,KAAM,IAAI,OAAM,uBAAuB,KAEzC,MAAO,GAAM,MAAM,EAAG,EAAM,OAAS,GAAG,KAAK,IAG/C,YAA0B,EAAW,CACnC,MAAO,GAAI,WAAW,GAAoB,YACtC,EAAI,MAAM,GAAoB,WAAW,QACzC,EAgBA,GAAA,IAAA,KAA0B,CAO9B,YAAY,EAAiB,CAC3B,GAAI,CAAC,IAAM,QAAQ,eAAiB,MAAO,SAAW,aAClD,MAAO,QAAO,cAAiB,YAKjC,KAAM,IAAI,OACN,2DAIN,GAFA,KAAK,GAAK,OAAO,aAEb,GAAa,MAAQ,CAAC,EACxB,KAAM,IAAI,OACN,sEAEN,KAAK,UAAY,EACjB,KAAK,KAAO,GAAa,KAAK,gBAY1B,MAAK,EAA8B,CACvC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAEC,CACL,GAAM,GAAW,KAAK,UAAU,EAAe,eACzC,EAAc,KAAK,UAAU,EAAe,aAE5C,EACF,GAA6B,GAEjC,GAAI,CACF,KAAK,GAAG,QAAQ,KAAK,KAAK,KAAM,KAAK,UAAU,IAC/C,KAAK,GAAG,QAAQ,KAAK,KAAK,SAAU,GACpC,KAAK,GAAG,QAAQ,KAAK,KAAK,YAAa,GACvC,KAAK,GAAG,QACJ,KAAK,KAAK,WACV,GAA0B,EAAe,aAC7C,GAAM,GAAyB,CAC7B,OAAQ,EAAe,OACvB,YAAa,EAAe,YAC5B,YAAa,EAAe,aAE9B,MAAI,GAAe,WAAa,MAC9B,GAAO,UAAY,EAAe,WAEhC,EAAe,qBAAuB,MACxC,GAAO,oBAAsB,EAAe,qBAE1C,EAAe,kBAAoB,MACrC,GAAO,iBAAmB,EAAe,kBAE3C,KAAK,GAAG,QAAQ,KAAK,KAAK,cAAe,KAAK,UAAU,IAEjD,CAAC,mBAAA,SACD,EADC,CAGR,KAAA,MAAK,GAAG,WAAW,KAAK,KAAK,MAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,UAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,aAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,YAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,eAEvB,GAAI,OACN,yBAAyB,KAAK,kHAER,EAAmB,wCACrB,EAAmB,qCACpB,EAAmB,2BAa1C,OAAI,CACR,GAAM,GACF,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,OACzC,GAAI,GAAQ,KACV,KAAM,IAAI,OACN,kDAAkD,KAAK,cAG7D,GAAI,EAAK,oBAAsB,OAC7B,KAAM,IAAI,OACN,6EAIN,GAAM,GAAsB,GAGtB,EAAW,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,WACtD,GAAI,GAAY,KACd,KAAM,IAAI,OACN,4CAA4C,KAAK,0BAGvD,EAAI,cAAgB,EAGpB,GAAM,GAAc,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,cACzD,GAAI,GAAe,KACjB,KAAM,IAAI,OACN,gDAAgD,KAAK,2BAG3D,EAAI,YAAc,EAGlB,GAAM,GAAiB,KAAK,GAAG,QAAQ,KAAK,KAAK,eACjD,GAAI,GAAkB,KAAM,CAC1B,GAAM,GAAW,KAAK,MAAM,GAC5B,EAAI,OAAS,EAAS,OACtB,EAAI,YAAc,EAAS,YAC3B,EAAI,YAAc,EAAS,YACvB,EAAS,WAAgB,MAC3B,GAAI,UAAY,EAAS,WAEvB,EAAS,qBAA0B,MACrC,GAAI,oBAAsB,EAAS,qBAEjC,EAAS,kBAAuB,MAClC,GAAI,iBAAmB,EAAS,kBAKpC,GAAM,GAAmB,KAAK,GAAG,QAAQ,KAAK,KAAK,YACnD,GAAI,GAAoB,KACtB,KAAM,IAAI,OACN,wDACI,KAAK,2BAEf,MAAA,GAAI,WAAa,GAA0B,GAEpC,IA1JO,GAAA,WAAa,kBA8JxB,GAAM,IAAgC,GACtC,IAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,IAAQ,EAAI,WAAW,GAAoB,YACrD,GACH,EAAI,MAAM,GAAoB,WAAW,SAJxC,KAUX,GAAiB,mBAAmB,IACpC,GAAiB,mBAAmB,IA0B9B,YAA8B,EAAiB,CACnD,MAAO,IAAI,IAAoB,GAG3B,GAAA,IAAA,KAAiC,CAGrC,aAAA,CACE,EACI,IAAM,QAAQ,cACd,IAAM,4CACV,EACI,MAAO,SAAW,aACd,MAAO,QAAO,cAAiB,YACnC,IAAM,2DACV,KAAK,GAAK,OAAO,kBAGb,aAAU,CACd,GAAM,GAA4C,GAC5C,EAAS,GAAc,GACvB,EAAS,GAAiB,GAChC,OAAS,GAAI,EAAG,EAAI,KAAK,GAAG,OAAQ,EAAE,EAAG,CACvC,GAAM,GAAM,KAAK,GAAG,IAAI,GACxB,GAAI,EAAI,WAAW,IAAW,EAAI,SAAS,GAAS,CAClD,GAAM,GAAY,GAAoB,GACtC,EAAI,GAAa,KAAK,MAAM,KAAK,GAAG,QAAQ,KAGhD,MAAO,QAGH,aAAY,EAAY,CAC5B,EAAO,GAAiB,GACxB,GAAM,GAAO,GAAa,GAC1B,GAAI,KAAK,GAAG,QAAQ,EAAK,OAAS,KAChC,KAAM,IAAI,OAAM,8BAA8B,MAEhD,GAAM,GAAO,KAAK,MAAM,KAAK,GAAG,QAAQ,EAAK,OAE7C,MAAA,MAAK,GAAG,WAAW,EAAK,MACxB,KAAK,GAAG,WAAW,EAAK,UACxB,KAAK,GAAG,WAAW,EAAK,aACxB,KAAK,GAAG,WAAW,EAAK,YACjB,ICrUL,GAAoB,MAEpB,GAAA,KAAgC,CAMpC,aAAA,CACE,KAAK,SAAW,SAGH,cAAW,CACxB,MAAI,IAA0B,UAAY,MACxC,IAA0B,SAAW,GAAI,KAEpC,GAA0B,eAS5B,iBAAgB,EAAgB,EAA0B,CAC/D,EAAO,GAAU,KAAM,IAAM,yCACzB,EAAO,SAAS,KAClB,GAAS,EAAO,MAAM,EAAG,EAAO,QAAQ,MAE1C,EAAO,EAAO,OAAS,EAAG,IAAM,uCAChC,GAAM,GAAW,GAA0B,cAC3C,EACI,EAAS,SAAS,IAAW,KAC7B,IAAM,2DACF,OACR,EAAS,SAAS,GAAU,QAGvB,YAAW,EAAc,CAC9B,GAAM,GAAU,KAAK,cAAc,SAAS,GAC5C,GAAI,GAAW,KACb,KAAM,IAAI,OAAM,yCAAyC,MAE3D,MAAO,SAGF,aAAU,CACf,MAAO,QAAO,KAAK,KAAK,cAAc,YAY1C,YAAkB,EAAW,CAC3B,GAAI,EAAI,QAAQ,MAAuB,GACrC,KAAM,IAAI,OACN,6EAEG,GAA0B,aAAa,KAAK,QAErD,MAAO,CACL,OAAQ,EAAI,MAAM,IAAmB,GACrC,KAAM,EAAI,MAAM,IAAmB,IAIvC,kBACI,EAAmB,EACnB,EAAe,GAAK,CACtB,EACI,IAAc,EACd,IAAM,wCAAwC,MAElD,GAAM,GAAe,GAAiB,gBAAgB,GACtD,EACI,EAAa,OAAS,EACtB,IAAM,kEACF,MACR,EACI,EAAa,OAAS,EACtB,IAAM,yCAAyC,EAAa,wCACxB,MACxC,GAAM,GAAc,EAAa,GAE3B,EAAe,GAAiB,gBAAgB,GACtD,EACI,EAAa,OAAS,EACtB,IAAM,uEACK,MACf,EACI,EAAa,OAAS,EACtB,IAAM,yCAAyC,EAAa,6CACnB,MAC7C,GAAM,GAAc,EAAa,GAE3B,EAAe,GAAS,GAAW,OACnC,EAAa,GAAS,GAAW,KACjC,EAAa,IAAiB,GAAS,GAAW,OAElD,EAAiB,KAAM,GAAY,OAKrC,GAAgB,GAClB,KAAM,IAA0B,WAAW,GACtC,YAAY,GAGnB,GAAM,GAAa,KAAM,GAAY,KAAK,GAK1C,MAAI,IAAgB,CAAC,GACnB,KAAM,IAA0B,WAAW,GACtC,YAAY,GAGZ,EAAW,mBAsCpB,mBAAyB,CACvB,GAAM,GAAU,GAA0B,aACpC,EAA2C,GACjD,OAAW,KAAU,GAAS,CAC5B,GAAM,GACF,KAAM,IAA0B,WAAW,GAAQ,aACvD,OAAW,KAAQ,GAAW,CAC5B,GAAM,GAAM,EAAS,GAAoB,EACzC,EAAI,GAAO,EAAU,IAGzB,MAAO,GAoCT,kBAA2B,EAAW,CACpC,GAAM,GAAgB,GAAS,GAE/B,MADgB,IAA0B,WAAW,EAAc,QACpD,YAAY,EAAc,MAkD3C,kBACI,EAAmB,EAAe,CAEpC,MAAO,IAAmB,EAAW,EADhB,IAkDvB,kBACI,EAAmB,EAAe,CAEpC,MAAO,IAAmB,EAAW,EADhB,ICrUjB,GAAA,IAAA,KAAsB,CAK1B,MAAM,EAAc,EAAkB,CACpC,MAAO,OAAM,EAAM,GAGrB,KAAG,CACD,MAAO,aAAY,MAGrB,OAAO,EAAc,EAAgB,CACnC,GAAI,IAAa,SAAW,IAAa,OACvC,KAAM,IAAI,OACN,kDAAkD,KAExD,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAAI,cAElB,KAAK,YAAY,OAAO,GAEjC,OAAO,EAAmB,EAAgB,CACxC,MAAO,IAAI,aAAY,GAAU,OAAO,KAI5C,GAAI,IAAM,IAAI,cAAe,CAC3B,IAAM,YAAY,UAAW,GAAI,KAGjC,GAAI,CACF,GAA0B,gBACtB,GAAoB,WAAY,GAAI,WACjC,EADiC,EAK1C,GAAI,CACF,GAA0B,gBACtB,GAAiB,WAAY,GAAI,WAC9B,EAD8B,GC9ClC,GAAM,IAAe,CAE1B,YAAa,IAAc,MAIzB,GAaE,GAAA,KAAmB,CAKvB,aAAA,CAEE,KAAK,KAAe,gBAGpB,KAAK,YAAc,GAAI,MAAK,KAAK,YAGnC,MAAM,EAAc,EAA0B,CAC5C,MAAI,KAAM,OAAO,OAAS,KACjB,IAAM,OAAO,MAAM,EAAM,GAG9B,KAAe,MACjB,IAAc,GAAa,eAEtB,GAAY,EAAM,IAG3B,KAAG,CACD,GAAM,GAAO,QAAQ,SACrB,MAAO,GAAK,GAAK,IAAO,EAAK,GAAK,IAGpC,OAAO,EAAc,EAAgB,CACnC,GAAI,IAAa,SAAW,IAAa,OACvC,KAAM,IAAI,OACN,sDAAsD,KAE5D,MAAO,MAAK,YAAY,OAAO,GAEjC,OAAO,EAAmB,EAAgB,CACxC,MAAI,GAAM,SAAW,EACZ,GAEF,GAAI,MAAK,KAAK,YAAY,GAAU,OAAO,KAIlD,IAAM,IAAI,YACZ,IAAM,YAAY,OAAQ,GAAI,KCtC1B,YACF,EAAoB,EAAW,UAC/B,EAAuB,CACzB,MAAA,GAAQ,GAAS,UACZ,GAAmC,GACjC,GAAI,IAAmB,EAAO,EAAO,GCb9C,YAAiC,EAAiB,EAAe,CAC/D,GAAM,GAAK,EAAgB,EAAG,IAAK,QAGnC,GAAI,CAAM,GAAa,GACrB,KAAM,IAAI,OAAM,mCAAmC,KAErD,GAAI,IAAU,UAAY,EAAG,QAAU,UACnC,IAAU,UAAY,EAAG,QAAU,SACrC,KAAM,IAAI,OAAM,yCAGlB,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,MAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAO,EAAG,CAAC,MAAA,KClBxB,YAAkC,EAAe,CAE/C,GAAM,GAAyB,CAAC,EADrB,EAAgB,EAAG,IAAK,QAAS,sBAK5C,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCjBnB,YAAkC,EAAM,EAAU,GAAK,CAC3D,QAAQ,IAAI,EAAE,SAAS,ICZzB,KAcA,GAAM,IAAuB,CAC3B,OAAA,GACA,KAAA,GACA,MAAA,GACA,MAAA,IAEF,GAAa,ICzCb,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,aAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,UAAA,IAAA,GAAA,cAAA,IAAA,GAAA,cAAA,IAAA,GAAA,WAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,6BAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,KAAA,IAAA,GAAA,aAAA,IAAA,GAAA,WAAA,IAAA,GAAA,YAAA,IAAA,GAAA,UAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,YAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,gBAAA,IAAA,KC6BA,GAAM,IAA2B,QAC3B,GAA8B,QAC9B,GAAqC,eAE3C,YAAkB,EAAU,CAC1B,MAAO,IAAI,SAAQ,GAAW,WAAW,IAAU,KAAK,GAGpD,GAAA,IAAA,KAAuB,CAQ3B,YAAY,EAAuB,CACjC,GAAI,CAAC,IAAM,QAAQ,cAGjB,KAAM,IAAI,OACN,uFAIF,EAAe,WAAW,GAAiB,aAC7C,GAAiB,EAAe,MAAM,GAAiB,WAAW,SAEhE,IAAkB,MAAQ,EAAe,SAAW,IACtD,GAAiB,IAGnB,KAAK,sBAAwB,EAAiB,GAC9C,KAAK,mBACD,EAAiB,QAGjB,MAAK,EAA8B,CACvC,GAAI,MAAQ,WAAc,YACxB,KAAM,IAAI,OACN,2FAGN,GAAM,GAAa,OAAO,IAAI,gBAAgB,GAAI,MAC9C,CAAC,EAAe,YAAa,CAAC,KAAM,8BAExC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,yFAEC,CACL,GAAM,GAAyC,CAAC,CAC9C,MAAO,CAAC,KAAO,KAAK,oBACpB,QAAS,EAAe,cAEpB,EAA4C,CAChD,cAAe,EAAe,cAC9B,OAAQ,EAAe,OACvB,YAAa,EAAe,YAC5B,YAAa,EAAe,YAC5B,gBAAA,GAEE,EAAe,WAAa,MAC9B,GAA+B,UAAY,EAAe,WAExD,EAAe,qBAAuB,MACxC,GAA+B,oBAC3B,EAAe,qBAEjB,EAAe,kBAAoB,MACrC,GAA+B,iBAC3B,EAAe,kBAErB,GAAM,GACF,OAAO,IAAI,gBAAgB,GAAI,MAC3B,CAAC,KAAK,UAAU,IAChB,CAAC,KAAM,sBAIT,EAAa,KAAK,YAAc,KAAO,SAAS,cAAc,KACvB,KAAK,WAQlD,GAPA,EAAW,SAAW,KAAK,sBAC3B,EAAW,KAAO,EAIlB,KAAM,IAAM,IAAM,EAAW,cAAc,GAAI,YAAW,WAEtD,EAAe,YAAc,KAAM,CACrC,GAAM,GAAmB,KAAK,kBAAoB,KAC9C,SAAS,cAAc,KACvB,KAAK,iBACT,EAAiB,SAAW,KAAK,mBACjC,EAAiB,KAAO,EACxB,KAAM,IACF,IAAM,EAAiB,cAAc,GAAI,YAAW,WAG1D,MAAO,CAAC,mBAAoB,GAA6B,OArF7C,GAAA,WAAa,eA0F/B,GAAA,IAAA,KAAkB,CAGhB,YAAY,EAAa,CACvB,GAAI,GAAS,MAAQ,EAAM,OAAS,EAClC,KAAM,IAAI,OACN,wEACgB,KAEtB,KAAK,MAAQ,OAGT,OAAI,CACR,GAAM,GAAW,KAAK,MAAM,GACtB,EAAc,KAAK,MAAM,MAAM,GAErC,MAAO,IAAI,SAAwB,CAAC,EAAS,IAAU,CACrD,GAAM,GAAa,GAAI,YACvB,EAAW,OAAU,GAAgB,CAEnC,GAAM,GAAY,KAAK,MAAO,EAAM,OAAe,QAC7C,EAAgB,EAAU,cAChC,GAAI,GAAiB,KAAM,CACzB,EAAO,GAAI,OACP,4CAA4C,EAAS,SACzD,OAGE,EAAY,SAAW,GACzB,EAAQ,CAAC,cAAA,IAGX,GAAM,GAAkB,EAAU,gBAClC,GAAI,GAAmB,KAAM,CAC3B,EAAO,GAAI,OACP,6CAA6C,EAAS,SAC1D,OAGF,GAAI,GACJ,GAAI,CACF,EACI,KAAK,4BAA4B,EAAiB,SAC/C,EAD+C,CAEtD,EAAO,GACP,OAGF,GAAM,GAAsC,GACtC,EAAkB,GAClB,EAAgC,GACtC,EAAgB,QAAQ,GAAe,CACrC,EAAa,MAAM,QAAQ,GAAO,CAChC,EAAM,KAAK,GACX,EAAe,KAAK,QAEtB,EAAY,KAAK,GAAG,EAAa,WAGnC,EAAgB,QAAQ,GAAe,CACrC,EAAa,MAAM,QAAQ,GAAO,CAChC,GAAM,GAAmB,GAAI,YAC7B,EAAiB,OAAU,GAAgB,CAEzC,GAAM,GAAc,EAAM,OAAe,OACnC,EAAQ,EAAM,QAAQ,GAE5B,GADA,EAAe,GAAS,EACpB,EAAe,QAAQ,QAAU,GAAI,CACvC,GAAM,GAAyB,CAC7B,cAAA,EACA,YAAA,EACA,WAAY,GAAwB,GACpC,OAAQ,EAAU,OAClB,YAAa,EAAU,YACvB,YAAa,EAAU,aAErB,EAAU,WAAa,MACzB,GAAO,UAAY,EAAU,WAE3B,EAAU,qBAAuB,MACnC,GAAO,oBAAsB,EAAU,qBAErC,EAAU,kBAAoB,MAChC,GAAO,iBAAmB,EAAU,kBAEtC,EAAQ,KAGZ,EAAiB,QAAU,GACvB,EAAO,6CAA6C,OACxD,EAAiB,kBAAkB,EAAW,SAIpD,EAAW,QAAU,GAAS,EAC1B,sEACc,EAAS,6EAE3B,EAAW,WAAW,KAOlB,4BACJ,EAAiC,EAAa,CAChD,GAAM,GAAsB,GACtB,EAAY,EAAM,IAAI,GAAQ,GAAS,EAAK,OAC5C,EAAqC,GAC3C,OAAW,KAAS,GAClB,EAAM,MAAM,QAAQ,GAAO,CACzB,GAAM,GAAe,GAAS,GAC9B,GAAI,EAAU,QAAQ,KAAkB,GACtC,KAAM,IAAI,OACN,uDACI,MAGV,GADA,EAAU,KAAK,GACX,EAAU,QAAQ,KAAkB,GACtC,KAAM,IAAI,OACN,8BAA8B,uBAElC,EAAW,GAAQ,EAAM,EAAU,QAAQ,MAKjD,GAAI,EAAU,SAAW,EAAM,OAC7B,KAAM,IAAI,OACN,wDACI,EAAU,oDACV,EAAM,YAEhB,MAAO,KAIE,GAAoC,GAC1C,IAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,IAAQ,EAAI,WAAW,GAAiB,YAClD,GAAiB,EAAI,MAAM,GAAiB,WAAW,SAHzD,KASX,GAAiB,mBAAmB,IAyC9B,YAA2B,EAAiB,QAAO,CACvD,MAAO,IAAI,IAAiB,GA2CxB,YAAuB,EAAa,CACxC,MAAO,IAAI,IAAa,GCnVpB,YACF,EAAmC,EACnC,EAAwB,EAAoB,CAC9C,EAAc,GACd,EAAgB,GAAiB,KAAO,EAAI,EAC5C,EAAc,GAAe,KAAO,EAAI,EACxC,EAAc,EAAe,GAC7B,GAAI,GAAkB,EAEhB,EAAmB,GACvB,GAAQ,KAAK,GAAQ,CACnB,GAAM,GAAW,EACb,GAAE,EAAkB,EAAS,OAAU,GAAc,GAEzD,MAAA,GAAW,GACJ,IAEF,GAGT,WAAuB,EAAiC,CACtD,EACI,GAAY,MAAQ,MAAM,QAAQ,IAAa,EAAS,OAAS,EACjE,IAAM,uCAGZ,WAAuB,EAAuB,EAAmB,CAC/D,EACI,GAAiB,GAAK,GAAiB,EACvC,IAAM,oEACmB,KAC7B,EACI,GAAe,GAAK,GAAe,EACnC,IAAM,kEACiB,KAC3B,EACI,GAAe,EACf,IAAM,yEACmB,qBAClB,KAGb,MAAO,SAAQ,IAAI,EAAS,IAAI,ICnClC,kBACI,EAAqB,EAAyB,CAC5C,GAAe,MACjB,GAAc,IAGhB,GAAM,GAAY,EAAY,WAAa,KAAO,IAAM,SAAS,MACf,EAAY,UAGxD,EAAW,EAAU,IACvB,GACI,EAAU,EAAU,EAAY,YAAa,CAAC,SAAU,MAE1D,EAAqB,EACrB,EAAmB,GAQnB,EANY,GAAY,YAAc,KACxC,KAAM,SAAQ,IAAI,GAClB,KAAM,IACF,EAAU,EAAY,WAAY,EAClC,IAEyB,IAAI,GAAY,EAAS,eAEpD,EAAsB,GACtB,EAAoB,EAO1B,MALgB,GAAY,YAAc,KACtC,KAAM,SAAQ,IAAI,GAClB,KAAM,IACF,EAAgB,EAAY,WAAY,EACxC,GAaV,kBACI,EAAiC,EAAiB,GAClD,EACA,EAAyB,CAW3B,MAFoB,IAFE,GAClB,GAAyB,EAAW,CAAC,YAAA,KAGtB,EAAU,EAAgB,GA2BzC,YACF,EAAqE,CAGvE,MAAO,OACI,EAAiC,EAAiB,GAClD,IAAmD,CAG5D,GAAM,GAAyB,EAAS,IAAI,IAAM,IAC5C,EAKF,GACE,EACF,GAAe,KAAO,EAAY,IAAI,IAAM,IAAS,GACnD,EAAmC,GAwCzC,GAvCA,EAAS,QAAQ,CAAC,EAAqB,IAAc,CACnD,GAAI,GAAc,EAClB,EAAoB,QAAQ,QAAQ,GAAe,CACjD,GAAM,GAAY,gBAAkB,GAChC,EAAa,aAAa,MAC1B,EAAa,MAEX,EAAe,GAAqB,GACjC,GAAc,EAAa,OAE9B,EAA8B,IAAK,CACvC,EAAuB,GAAc,GACjC,EAAoB,IAAe,MACrC,GAAoB,GAAc,IAGpC,EAAoB,GAAY,KAAK,CACnC,cAAe,EACf,YAAA,EACA,UAAW,KAIX,GAAe,KACjB,EAAY,QAAQ,CAAC,EAAY,IAAe,CAC1C,IAAe,EAAa,MAC9B,KACA,EAAa,GAAe,MAIhC,IAGF,EAAuB,KAAK,EAAa,MACzC,GAAe,MAIf,CAAC,EAAa,MAAM,GAAS,GAAQ,CACvC,GAAM,GAAkB,EAAY,OAAO,CAAC,EAAG,IAAM,CAAC,EAAa,IACnE,KAAM,IAAI,OACN,kDACG,EAAgB,KAAK;wCAErB,EAAuB,KAAK,UAKrC,GAAM,GACF,EAAuB,OAAO,CAAC,EAAa,EAAa,IACnD,IACF,EAAY,KAAK,GAEZ,GACN,IAED,EAAsB,GAC5B,EAAoB,QAAQ,GAAI,CAC9B,EAAS,GAAG,MAAM,QAAQ,GAAW,CACnC,GAAM,GAAW,EACX,GAAe,SAAS,KAAa,GAAN,KAAY,EACjD,EAAU,KAAK,OAGnB,GAAM,GAAU,KAAM,GAAqB,GAErC,EAAmC,GACrC,EAAoB,EACxB,MAAA,GAAoB,QAAQ,GAAI,CAC9B,GAAM,GAAa,EAAS,GAAG,MAAM,OAEjC,EAAa,EACjB,OAAS,GAAI,EAAG,EAAI,EAAY,IAC9B,GAAc,EAAQ,EAAoB,GAAG,WAI/C,GAAM,GAAc,GAAI,aAAY,GAC9B,EAAkB,GAAI,YAAW,GACnC,EAAoB,EACxB,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAM,GAAS,GAAI,YAAW,EAAQ,EAAoB,IAC1D,EAAgB,IAAI,EAAQ,GAC5B,GAAqB,EAAO,WAGP,EAAoB,GAC5B,QAAQ,GAAe,CACpC,GAAM,GAAa,EAAY,MAC3B,EAAa,YACb,EAAa,YAAc,EAAa,WACtC,EACF,GAAc,EAAY,CAAC,EAAa,gBAC5C,OAAW,KAAQ,GACjB,EAAiB,GAAQ,EAAgB,KAI7C,GAAqB,IAGhB,GCrNX,GAAM,IAAyB,2BACzB,GAAY,mBACZ,GAAA,KAAkB,CActB,YAAY,EAAc,EAAyB,CAgCjD,GAvCO,KAAA,eAAiB,OAQpB,GAAe,MACjB,GAAc,IAEhB,KAAK,iBAAmB,EAAY,iBACpC,KAAK,WAAa,EAAY,WAC9B,KAAK,mBAAqB,EAAY,mBAElC,EAAY,WAAa,KAC3B,GACI,MAAO,GAAY,WAAc,WACjC,IAAM,+HAGV,KAAK,MAAQ,EAAY,WAEzB,KAAK,MAAQ,IAAM,SAAS,MAG9B,EACI,GAAQ,MAAQ,EAAK,OAAS,EAC9B,IAAM,2DAGN,MAAM,QAAQ,IAChB,EACI,EAAK,SAAW,EAChB,IAAM,iEACmB,EAAK,YAEpC,KAAK,KAAO,EAER,EAAY,aAAe,MAC3B,EAAY,YAAY,MAAQ,KAClC,KAAM,IAAI,OACN,sEAEN,KAAK,YAAc,EAAY,aAAe,QAG1C,MAAK,EAA8B,CACvC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,2FAIN,GAAM,GAAO,OAAO,OAAO,CAAC,OAAQ,KAAK,gBAAiB,KAAK,aAC/D,EAAK,KAAO,GAAI,UAEhB,GAAM,GAAyC,CAAC,CAC9C,MAAO,CAAC,uBACR,QAAS,EAAe,cAEpB,EAA4C,CAChD,cAAe,EAAe,cAC9B,OAAQ,EAAe,OACvB,YAAa,EAAe,YAC5B,YAAa,EAAe,YAC5B,gBAAA,GAEE,EAAe,WAAa,MAC9B,GAA+B,UAAY,EAAe,WAExD,EAAe,qBAAuB,MACxC,GAA+B,oBAC3B,EAAe,qBAEjB,EAAe,kBAAoB,MACrC,GAA+B,iBAC3B,EAAe,kBAGrB,EAAK,KAAK,OACN,aACA,GAAI,MACA,CAAC,KAAK,UAAU,IAChB,CAAC,KAAM,KACX,cAEA,EAAe,YAAc,MAC/B,EAAK,KAAK,OACN,oBACA,GAAI,MAAK,CAAC,EAAe,YAAa,CAAC,KAAM,KAC7C,qBAGN,GAAM,GAAW,KAAM,MAAK,MAAM,KAAK,KAAM,GAE7C,GAAI,EAAS,GACX,MAAO,CACL,mBAAoB,GAA6B,GACjD,UAAW,CAAC,IAGd,KAAM,IAAI,OACN,gEACG,EAAS,gBAYd,OAAI,CACR,GAAM,GAAqB,KAAM,MAAK,MAAM,KAAK,KAAM,KAAK,aAE5D,GAAI,CAAC,EAAmB,GACtB,KAAM,IAAI,OACN,cAAc,KAAK,gCAChB,EAAmB,iFAG5B,GAAI,GACJ,GAAI,CACF,EAAc,KAAM,GAAmB,aAChC,EADgC,CAEvC,GAAI,GAAU,+CAA+C,KAAK,QAGlE,KAAI,MAAK,KAAK,SAAS,OACrB,GAAW,+UAOX,GAAW,uEAGP,GAAI,OAAM,GAElB,GAAM,GAAgB,EAAY,cAC5B,EAAkB,EAAY,gBAC9B,EAAc,EAAY,YAC1B,EAAc,EAAY,YAC1B,EAAS,EAAY,OACrB,EAAY,EAAY,UACxB,EAAsB,EAAY,oBAGxC,GAAI,GAAiB,MAAQ,GAAmB,KAC9C,KAAM,IAAI,OACN,2BAA2B,KAAK,iEAItC,GAAI,GACA,EACA,GAAmB,MAErB,EAAC,EAAa,GADE,KAAM,MAAK,YAAY,IAIzC,GAAM,GAA4B,CAChC,cAAA,EACA,YAAA,EACA,WAAA,EACA,YAAA,EACA,YAAA,EACA,OAAA,GAGE,GAAa,MACf,GAAU,UAAY,GAEpB,GAAuB,MACzB,GAAU,oBAAsB,GAGlC,GAAM,GAAc,EAAY,iBAChC,MAAI,IACF,GAAU,iBAAmB,GAGxB,OAGK,aAAY,EAAsC,CAE9D,GAAM,GAAa,MAAM,QAAQ,KAAK,MAAQ,KAAK,KAAK,GAAK,KAAK,KAC5D,CAAC,EAAQ,GAAU,GAAS,GAC5B,EAAa,KAAK,kBAAoB,EAEtC,EAAc,GACpB,OAAW,KAAS,GAClB,EAAY,KAAK,GAAG,EAAM,SAG5B,GAAM,GAAsB,GACtB,EAAsC,GAC5C,OAAW,KAAgB,GACzB,OAAW,KAAQ,GAAa,MAC1B,KAAK,oBAAsB,KAC7B,EAAY,KAAK,KAAK,mBAAmB,IAEzC,EAAU,KAAK,EAAa,EAAO,GAKrC,KAAK,oBACP,EAAU,KAAK,GAAG,KAAM,SAAQ,IAAI,IAGtC,GAAM,GAAU,KAAM,IAAyB,EAAW,CACxD,YAAa,KAAK,YAClB,UAAW,KAAK,MAChB,WAAY,KAAK,aAEnB,MAAO,CAAC,EAAa,GAAwB,MA7N/B,GAAA,iBAAmB,eA4O/B,YAAmB,EAAW,CAClC,GAAM,GAAY,EAAI,YAAY,KAC5B,EAAkB,EAAI,YAAY,KAClC,EAAS,EAAI,UAAU,EAAG,GAC1B,EACF,EAAkB,EAAY,EAAI,UAAU,GAAmB,GACnE,MAAO,CAAC,EAAS,IAAK,GAGlB,YAAuB,EAAW,CACtC,MAAO,GAAI,MAAM,GAAY,mBAAqB,KAG7C,GAAM,IACT,CAAC,EAAa,IAA6B,CACzC,GAAI,MAAO,QAAU,aAChB,IAAe,MAAQ,EAAY,WAAa,MAInD,MAAO,MACF,CACL,GAAI,GAAS,GAMb,GALI,MAAM,QAAQ,GAChB,EAAS,EAAI,MAAM,GAAW,GAAa,IAE3C,EAAS,GAAa,GAEpB,EACF,MAAO,IAAK,EAAK,GAGrB,MAAO,OAEb,GAAiB,mBAAmB,IACpC,GAAiB,mBAAmB,IAwE9B,YAAe,EAAc,EAAyB,CAC1D,MAAO,IAAI,IAAY,EAAM,GAQzB,YACF,EAAc,EAAyB,CACzC,MAAO,IAAK,EAAM,GCrXpB,GAAA,IAAA,KAAuB,CACrB,YAA6B,EAA+B,CAA/B,KAAA,eAAA,OAEvB,OAAI,CACR,MAAO,MAAK,iBAIhB,GAAA,KAAsB,CACpB,YACqB,EACqC,CADrC,KAAA,YAAA,OAGf,MAAK,EAA8B,CACvC,MAAO,MAAK,YAAY,KAyBtB,YACF,EAAmC,EACnC,EAA0B,EAA+B,CAC3D,MAAI,WAAU,SAAW,EAElB,EAAkC,eAAiB,MACnD,EAAkC,aAAe,KAE7C,GAAI,IAAkB,GAI7B,SAAQ,KACJ,yNAIG,GAAI,IAAkB,CAAC,cAAe,KAK/C,SAAQ,KACJ,yNAIG,GAAI,IAAkB,CAC3B,cAAe,EACf,YAAA,EACA,WAAA,EACA,eAAA,KAoBA,YACF,EACuB,CACzB,MAAO,IAAI,IAAiB,GCpH9B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,gBAAA,IAAA,KC2CA,YACI,EAAsB,EAAsB,EAAa,GACzD,EAAa,GAAK,CACpB,GAAI,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAK,EAAgB,EAAG,IAAK,UACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAA4B,CAAC,EAAO,EAAG,GACvC,EAA0B,CAAC,WAAA,EAAY,WAAA,GAE7C,MAAO,GAAO,UACV,GAAa,EAAgC,GAG5C,GAAM,IAAS,EAAG,CAAC,QAAA,KCX1B,YACI,EAA4B,EAAe,EAAU,EACrD,EAAW,EAAC,CACd,GAAI,EAAQ,EACV,KAAM,IAAI,OAAM,iDAAiD,KAInE,GAAM,GAAuB,CAAC,QAFb,EAAgB,EAAS,UAAW,SAAU,UAGzD,EAAqB,CAAC,MAAA,EAAO,QAAA,EAAS,SAAA,GAE5C,MAAO,GAAO,UACV,GAAQ,EACR,GAGC,GAAM,IAAS,EAAG,CAAC,QAAA,KCf1B,YAAsC,EAAiB,EAAe,CACpE,GAAM,GAAK,EAAgB,EAAG,IAAK,aAgBnC,GAdI,GAAQ,MACV,GAAO,EAAG,MAAM,IAAI,CAAC,EAAG,IAAM,GAAG,WAE9B,EACD,EAAG,OAAS,EAAK,OACjB,IAAM,qCAAqC,EAAG,kCACb,MACrC,EAAK,QAAQ,GAAO,CACb,EACD,GAAQ,GAAK,EAAO,EAAG,KACvB,IAAM,+CAA+C,EAAG,KAAO,aAC/C,OAGlB,EAAG,MAAQ,EACb,MAAO,GAAG,QAGZ,GAAM,GAA0B,CAAC,EAAG,GAC9B,EAAwB,CAAC,KAAA,GAE/B,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KClBvB,YACF,EAA6B,EAC7B,EAAkB,CACpB,GAAM,GAAU,EAAgB,EAAQ,SAAU,mBAC5C,EACF,EAAgB,EAAa,cAAe,mBAE3C,EACD,GAAc,MAAQ,EAAa,GAAK,OAAO,UAAU,GACzD,IAAM,+DACS,KACd,EACD,EAAQ,OAAS,EACjB,IAAM,gDAAgD,EAAQ,QAC7D,EACD,EAAa,OAAS,EACtB,IAAM,qDACS,EAAa,QAC3B,EACD,EAAQ,MAAM,KAAO,EAAa,MAAM,GACxC,IAAM,uCACC,EAAQ,MAAM,UAAU,EAAa,MAAM,uEAEjD,EACD,EAAa,GAAK,OAAO,UAAU,GACnC,IAAM,4DACC,KAIX,GAAM,GAAe,GAAO,GAAK,EAAS,SAAU,GAC9C,EACF,GAAO,GAAK,EAAc,SAAU,GAClC,EAA0B,GAAU,GACpC,EAAoB,GAAO,EAAe,GAChD,MAAO,IAAK,EAAS,SAGhB,GAAM,IAAkB,EAAG,CAAC,iBAAA,KC/FnC,GAAA,GAAA,GAAA,GAAA,CAAA,WAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,SAAA,IAAA,KC+CM,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,mDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,oEAEN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GDlClD,GAAI,IA2BJ,YACI,EAEA,EAAc,EAAC,CAEjB,GAAI,EAAc,EAChB,KAAM,IAAI,OACN,kEAEN,GAAI,GAAU,KACZ,KAAM,IAAI,OAAM,4DAElB,GAAI,GAAc,GACd,EAAc,GACd,EAAU,GACV,EAAU,GACV,EAAe,GACf,EAAgB,GACpB,GAAK,EAAqB,eAAgB,YACxC,EAAc,WAEZ,MAAQ,YAAe,aAAe,YAAkB,WAC1D,EAAc,WAEZ,MAAQ,mBAAsB,aAC9B,YAAkB,kBACpB,EAAU,WAER,MAAQ,mBAAsB,aAC9B,YAAkB,kBACpB,EAAU,WAEA,EAAe,YAAc,KACvC,EAAe,WAEb,MAAQ,cAAiB,aAAe,YAAkB,aAC5D,EAAgB,OAEhB,MAAM,IAAI,OACN,qPAIY,EAAc,YAAY,QAE5C,GAAI,EAAS,CACX,GAAM,GAAgC,EACtC,GAAI,GACC,EAA4B,WACzB,EACN,KAAM,IAAI,OACN,yGAOR,GADe,GAAU,GAAY,EAAO,cAC9B,KAAM,CAClB,GAAM,GAA2B,CAAC,OAAA,GAC5B,EAAyB,CAAC,YAAA,GAChC,MAAO,GAAO,UACV,GAAY,EACZ,GAGN,GAAM,CAAC,EAAO,GAAU,EACpB,CACG,EAA4B,WAC5B,EAA4B,aAE/B,CAAC,EAAO,MAAO,EAAO,QACtB,EAEA,EACF,EAEK,EAAe,WAAW,MAAM,aAAa,EAAG,EAAG,EAAO,GAAQ,KAC9D,GAAe,EACxB,EAAQ,EAAiC,KAChC,IAAW,GAAW,IAC3B,KAAuB,MACzB,IAAsB,SAAS,cAAc,UAAU,WAAW,OAEpE,GAAoB,OAAO,MAAQ,EACnC,GAAoB,OAAO,OAAS,EACpC,GAAoB,UAChB,EAA4B,EAAG,EAAG,EAAO,GAC7C,EAAO,GAAoB,aAAa,EAAG,EAAG,EAAO,GAAQ,MAE/D,GAAI,GACJ,GAAI,IAAgB,EAClB,EAAS,GAAI,YAAW,OACnB,CACL,GAAM,GAAY,EAAQ,EAC1B,EAAS,GAAI,YAAW,EAAY,GACpC,OAAS,GAAI,EAAG,EAAI,EAAW,IAC7B,OAAS,GAAU,EAAG,EAAU,EAAa,EAAE,EAC7C,EAAO,EAAI,EAAc,GAAW,EAAK,EAAI,EAAI,GAKvD,MAAO,IAAS,EAD2B,CAAC,EAAQ,EAAO,GACzB,SAKpC,YAAqB,EAEW,CAC9B,MAAQ,IAAU,MAAW,EAAqB,eAAgB,YAGpE,aAAoC,CAClC,MAAO,OAAO,SAAW,aACrB,MAAQ,cAAiB,aACzB,OAAO,eAAe,qBAG5B,YAA0B,EAC8C,CACtE,MAAO,IAAU,MAAQ,EAAO,QAAU,GAAK,EAAO,SAAW,EAGnE,YAAoC,EAE4B,CAC9D,MAAO,OAAiC,CAAE,aAAkB,eACxD,GAAiB,IAAW,CAAC,GAAY,GA6B/C,kBACI,EAEA,EAAc,EAAC,CACjB,GAAI,GAC+B,KAInC,GAAI,IAAM,QAAQ,wBACd,GAA2B,GAAS,CAGtC,GAAI,GAEJ,GAAI,CAKF,EAAc,KAAO,mBACjB,EAA6B,CAAC,iBAAkB,eAC7C,EAD6C,CAEpD,EAAc,KASZ,GAAe,MAAQ,EAAY,QAAU,EAAO,OACpD,EAAY,SAAW,EAAO,OAChC,EAAS,EAET,EAAS,MAGX,GAAS,EAGX,MAAO,IAAY,EAAQ,GAuB7B,kBACI,EACA,EAA0B,CAC5B,GAAI,GAAO,EAAgB,EAAK,MAAO,YACvC,GAAI,CAAE,aAAe,KAAS,CAE5B,GAAM,GAAoB,EAC1B,EAAO,GAAK,EAAmB,SAC/B,EAAkB,UAEpB,GAAI,EAAK,OAAS,GAAK,EAAK,OAAS,EACnC,KAAM,IAAI,OACN,wDAAwD,EAAK,SAEnE,GAAM,CAAC,EAAQ,GAAS,EAAK,MAAM,MAAM,EAAG,GACtC,EAAQ,EAAK,OAAS,EAAI,EAAI,EAAK,MAAM,GAE/C,GAAI,EAAQ,GAAK,IAAU,EACzB,KAAM,IAAI,OACN,0DACqB,KAG3B,GAAI,EAAK,QAAU,WAAa,EAAK,QAAU,QAC7C,KAAM,IAAI,OACN,kCAAkC,EAAK,+CAI7C,GAAM,GAAO,KAAM,GAAK,OAClB,EAAa,EAAK,QAAU,UAAY,IAAM,EAC9C,EAAQ,GAAI,mBAAkB,EAAQ,EAAS,GAErD,OAAS,GAAI,EAAG,EAAI,EAAS,EAAO,EAAE,EAAG,CACvC,GAAM,GAAO,CAAC,EAAG,EAAG,EAAG,KAEvB,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAQ,EAAK,EAAI,EAAQ,GAE/B,GAAI,EAAK,QAAU,WACjB,GAAI,EAAQ,GAAK,EAAQ,EACvB,KAAM,IAAI,OACN,mFACiC,cAE9B,EAAK,QAAU,SACpB,GAAQ,GAAK,EAAQ,KACvB,KAAM,IAAI,OACN,mFACmC,MAIvC,IAAU,EACZ,GAAK,GAAK,EAAQ,EAClB,EAAK,GAAK,EAAQ,EAClB,EAAK,GAAK,EAAQ,GAElB,EAAK,GAAK,EAAQ,EAItB,GAAM,GAAI,EAAI,EACd,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAC/B,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAC/B,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAC/B,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAGjC,GAAI,GAAU,KAAM,CAClB,EAAO,MAAQ,EACf,EAAO,OAAS,EAChB,GAAM,GAAM,EAAO,WAAW,MACxB,EAAY,GAAI,WAAU,EAAO,EAAO,GAC9C,EAAI,aAAa,EAAW,EAAG,GAEjC,MAAI,KAAS,GACX,EAAK,UAEA,EAGF,GAAM,IAAa,EAAG,CAAC,YAAA,KEzV9B,GAAA,GAAA,GAAA,GAAA,CAAA,mBAAA,IAAA,KAUM,YAA6B,EAAoB,EAAmB,CAExE,GAAM,GAAa,EAAO,MAAM,OAC1B,EAAc,EAAQ,MAAM,OAClC,GAAI,EAAa,EACf,KAAM,IAAI,OACN,4EACqB,MAE3B,GAAI,EAAc,EAChB,KAAM,IAAI,OACN,8EACqB,MAE3B,GAAI,EAAQ,QAAU,QACpB,KAAM,IAAI,OACN,yEACsB,EAAQ,UAEpC,GAAI,EAAQ,MAAM,EAAc,GAAK,EACnC,KAAM,IAAI,OACN,iEACG,EAAQ,MAAM,EAAc,UAAU,KAG/C,GAAI,GAAc,EAAO,SAAW,EAClC,KAAM,IAAI,OACN,mEACiB,EAAO,UAG9B,GAAM,GAAe,EAAQ,MACvB,EAAY,EAAa,EAAa,OAAS,GAIjD,EAAU,EACd,OAAS,GAAI,EAAG,EAAI,EAAa,OAAS,EAAG,EAAE,EAC7C,GAAW,EAAa,GAG1B,GAAM,GAAa,EAAO,MAEpB,EAAc,EAAa,QACjC,EAAY,MAEZ,GAAI,GAAY,EAChB,OAAS,GAAI,EAAW,EAAI,EAAY,EAAE,EACxC,GAAa,EAAW,GACxB,EAAY,KAAK,EAAW,IAG9B,GAAM,GACF,CAAC,GAAG,GAAe,EAAO,OAAO,IAAI,GAAU,EAAS,GACvD,GAAG,MAAM,EAAG,GAEjB,MAAO,CAAC,EAAa,EAAS,EAAW,GCjE3C,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,gBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,oBAAA,IAAA,KAQM,YACF,EAAiB,EAAiB,EAAe,CACnD,GAAM,GAAY,EAAQ,KAAO,EAAK,EAAQ,MAAM,EAAQ,KAAO,GAAK,EAClE,EAAY,EAAQ,KAAO,EAAK,EAAQ,KAAO,EAAI,EAEnD,EAAa,6FACyB,EAAQ,yBAC5B,EAAQ,iBAAiB,gBAC9B,oBAA2B,KAE9C,GAAI,EAAQ,KAAO,EACjB,KAAM,IAAI,OAAM,EAAa,kBAAkB,OAEjD,GAAI,EAAM,OAAS,EAAY,GAAQ,KAAO,GAC5C,KAAM,IAAI,OACN,EACA,0BAA0B,EAAY,GAAQ,KAAO,MAE3D,GAAI,EAAQ,OAAS,EAAW,EAAM,OAAS,EAC7C,KAAM,IAAI,OACN,EAAa,mBAAmB,EAAW,EAAM,OAAS,KAEhE,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,GAAI,EAAQ,MAAM,KAAO,EAAQ,MAAM,GACrC,KAAM,IAAI,OACN,EACA,kBAAkB,OAAO,EAAQ,MAAM,wBAAwB,OAC3D,EAAQ,MAAM,QAG1B,OAAS,GAAI,EAAG,EAAI,EAAQ,KAAO,EAAU,EAAE,EAC7C,GAAI,EAAQ,MAAM,EAAI,KAAc,EAAM,EAAI,GAC5C,KAAM,IAAI,OACN,EACA,kBAAkB,EAAI,OAClB,EAAQ,MAAM,EAAI,gBAAuB,EAAI,OAC7C,EAAM,EAAI,OAmBlB,YACF,EAAiB,EAAiB,EAAe,CACnD,GAAI,EAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,EAAQ,SAEnC,GAAI,EAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,EAAQ,SAEnC,GAAI,EAAQ,QAAU,QACpB,KAAM,IAAI,OAAM,0DACZ,EAAQ,SAEd,GAAI,EAAM,OAAS,EACjB,KAAM,IAAI,OACN,6DAA6D,KAGnE,GAAI,EAAM,SAAW,EAAG,CACtB,GAAI,EAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,EAAQ,SAEd,GAAI,EAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,EAAQ,SAIhB,GAAoB,EAAO,EAAS,GAYhC,YACF,EAAqB,EACrB,EAAe,CAEjB,GAAM,GAAc,EAAQ,MAAM,OAC5B,EAAa,EAAc,EAAK,EAAQ,MAAM,EAAc,GAAK,EAKjE,EAAU,EAAM,OAElB,EAAY,EAChB,OAAS,GAAI,EAAW,EAAI,EAAS,EAAE,EACrC,GAAa,EAAM,GAGrB,GAAM,GAAgB,EAAY,EAAK,EAAI,EACrC,EAAa,GAAc,EAAQ,OAAS,EAE5C,EAAU,CAAC,GAAG,GAAe,EAAM,MAAM,EAAG,IAAa,GACzD,EAAa,GAAc,GACjC,MAAO,CAAC,UAAA,EAAW,WAAA,EAAY,UAAA,EAAW,QAAA,EAAS,WAAA,GCnJrD,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,UAAA,IAAA,GAAA,aAAA,IAAA,GAAA,2BAAA,IAAA,GAAA,YAAA,IAAA,GAAA,0BAAA,IAAA,GAAA,eAAA,IAAA,GAAA,sBAAA,IAAA,KA8BM,YACF,EAAmB,EAAiB,EAAc,CACpD,GAAM,GAAY,EAAM,MAAM,OACzB,EACD,IAAc,EAAM,OACpB,IAAM,iBAAiB,uBAA+B,uCAClB,OACnC,EACD,IAAc,EAAK,OACnB,IAAM,iBAAiB,sBAA8B,uCACjB,OAExC,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC1B,EACD,EAAM,GAAK,EAAK,IAAM,EAAM,MAAM,GAClC,IAAM,iBAAiB,aAAqB,aAAa,OACjD,EAAM,GAAK,EAAK,kCAAkC,OAChD,EAAM,MAAM,OAKxB,YAAqB,EAAY,CACrC,GAAM,GAAO,GACT,EAAO,EACX,KAAO,EAAO,GACR,EAAO,GACT,EAAK,KAAK,GAEZ,GAAQ,EACR,IAEF,MAAO,GAIH,YACF,EAAiB,EAAe,EAAiB,CACnD,GAAM,GAAO,GACb,OAAS,GAAO,EAAG,EAAO,EAAM,OAAQ,IACtC,EAAK,GAAQ,KAAK,KAAM,GAAI,GAAQ,EAAM,IAAS,EAAQ,IAE7D,MAAO,GAKH,YACF,EAAmB,EAAgC,EACnD,EAAoB,CACtB,GAAM,GAAa,CAAC,GAAG,GACvB,OAAS,GAAI,EAAW,OAAQ,EAAI,EAAW,OAAQ,IACrD,EAAW,KAAK,GAElB,OAAS,GAAI,EAAG,EAAI,EAAe,IAC7B,IAAM,EACR,EAAW,GAA0B,EAErC,GAAW,OACP,EAAwB,EACxB,GACJ,EAAW,OAGf,MAAO,GAGT,YACI,EAAgC,EAChC,EAAsB,CACxB,MAAI,IAAkB,EACb,EAGF,EAAkB,GAAgB,GAG3C,YAAuB,EAAuB,EAA8B,CAC1E,GAAM,GAAa,GACnB,OAAS,GAAI,EAAG,EAAI,EAAe,IACjC,EAAW,KAAK,EAAyB,GAE3C,MAAO,GAIH,YACF,EAAsB,EAAwB,EAC9C,EAAiB,EAAe,EAAmB,EACnD,EACA,EAAoB,CACtB,GAAM,GAAY,EAAW,OACzB,EAAkB,GAAI,OAAM,GAC5B,EAAgB,GAAI,OAAM,GAC1B,EAAoB,GAAI,OAAM,GAClC,GAAI,EAAa,QAAU,EAAsB,EAAG,CAClD,GAAM,GAAY,EAAa,GAIzB,EAAgB,EAAsB,EAC5C,EAAkB,GACd,EAAW,EAAW,EAAe,EAAO,GAChD,EAAgB,GACZ,EAAS,EAAW,EAAe,EAAK,GAC5C,EACI,GAAsB,EAAS,EAAW,EAAe,OAE7D,QAAS,GAAO,EAAG,EAAO,EAAW,IACnC,EAAgB,GAAQ,GACpB,EAAW,EAAO,EAAS,EAAY,EAAM,GACjD,EAAc,GACV,GAAY,EAAS,EAAK,EAAS,EAAY,EAAM,GACzD,EAAkB,GAAQ,GAAe,EAAS,EAAM,GAI5D,MAAO,CACL,MAAO,EACP,IAAK,EACL,QAAS,GAMP,YACF,EAAmB,EAAgC,EACnD,EAAyB,EAAoB,CAC/C,GAAM,GAAa,CAAC,GAAG,GACjB,EAAa,GAAc,EAAe,GAEhD,OAAS,GAAO,EAAG,EAAO,EAAW,OAAQ,IAC3C,GAAI,EAAW,QAAQ,GAAQ,GAC7B,EAAW,GAAQ,MACd,CACL,GAAM,GACF,GAAgB,EAAwB,EAAe,GACvD,EAAgB,EAAc,GAC9B,EAAY,GAAK,GACnB,GAAgB,GAGlB,EAAW,GAAQ,EAGvB,MAAO,GAKH,YACF,EAAiB,EAAgC,EACjD,EAAuB,EAAoB,CAC7C,GAAM,GAAa,CAAC,GAAG,GACjB,EAAa,GAAc,EAAe,GAEhD,OAAS,GAAO,EAAG,EAAO,EAAW,OAAQ,IAC3C,GAAI,EAAW,QAAQ,GAAQ,GAC7B,EAAW,GAAQ,OAAO,qBACrB,CACL,GAAM,GACF,GAAgB,EAAwB,EAAe,GACvD,EAAgB,EAAY,GAC5B,EAAU,GAAK,GACjB,GAAgB,OAAO,kBAEzB,EAAW,GAAQ,EAIvB,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,IAAK,CAE1C,GAAM,GAAW,EAAW,GACxB,EAAW,GAAK,GAClB,GAAW,IAAM,GAEnB,EAAW,GAAU,GAAM,EAAG,EAAW,GAAI,EAAW,IAE1D,MAAO,GAGH,YACF,EAAmB,EAAc,EAAoB,CACvD,GAAI,GAAS,EAAQ,GACrB,MAAI,GAAgB,GAAK,GAAS,GAAU,OAC1C,GAAS,GAGJ,EAGH,YACF,EAAmB,EAAwB,EAC3C,EAAsB,EAAc,EAAoB,CAE1D,GAAI,GAAQ,EAAa,GACnB,EAAS,EAAQ,IAAS,EAI5B,AAAA,GAAY,GAAK,GAAQ,EAAe,GAAK,GAAQ,GAAS,OAC5D,GAAS,EAIX,EAAQ,OAAO,iBAGf,EAAQ,OAAO,kBAKnB,GAAM,GAAW,EAAW,GAC5B,MAAI,GAAQ,GACV,IAAS,GAIX,EAAa,GAAM,EAAG,EAAO,EAAW,GAEjC,EAGH,YACF,EAAiB,EAAuB,EACxC,EAAsB,EAAc,EAAoB,CAE1D,GAAI,GAAO,EAAY,GACjB,EAAS,EAAQ,IAAS,EAI5B,AAAA,GAAW,GAAK,GAAS,EAAgB,GAAK,GAAS,GAAQ,OAC7D,GAAS,EAGX,EAAO,OAAO,iBAGd,EAAO,OAAO,kBAKlB,GAAM,GAAW,EAAW,GAC5B,MAAI,GAAO,GACT,IAAQ,GAMN,EAAS,EAEX,EAAY,GAAM,EAAG,EAAM,GAG3B,EAAY,GAAM,GAAI,EAAM,EAAW,GAGlC,EAOH,YACF,EAAiB,EAAiB,EAAc,CAElD,GAAI,GAAkB,EAAK,OAC3B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,GAAI,EAAK,GAAK,EAAG,CACf,EAAkB,EAClB,MAIJ,OAAS,GAAI,EAAkB,EAAG,EAAI,EAAK,OAAQ,IACjD,GAAI,EAAM,GAAK,GAAK,EAAK,KAAO,EAAM,GACpC,MAAO,GAGX,MAAO,GAGH,YAA4B,EAAiB,EAAiB,CAClE,GAAI,GAAa,EAAM,OAAS,EAAI,EAAM,EAAM,OAAS,GAAK,EAC9D,OAAS,GAAI,EAAG,EAAI,EAAM,OAAS,EAAG,IACpC,GAAc,EAAM,GAAK,EAAQ,GAEnC,MAAO,GAGH,YACF,EAAe,EAAwB,EAAsB,CAE/D,GAAI,GACE,EAAQ,EAAE,MAAM,OAClB,MAAO,IAAU,SACnB,EAAS,CAAC,EAAO,GAAG,GAAI,OAAM,EAAQ,GAAG,KAAK,IACrC,EAAM,OAAS,EACxB,EAAS,EAAM,OAAO,GAAI,OAAM,EAAQ,EAAM,QAAQ,KAAK,IAE3D,EAAS,EAAM,QAEjB,EAAO,QAAQ,GAAI,CACZ,EACD,IAAM,GAAI,IAAM,uDAEtB,GAAI,GACJ,MAAI,IAAQ,KACV,EAAQ,GAAI,OAAM,GAAO,KAAK,IACrB,MAAO,IAAS,SACzB,EAAQ,CAAC,EAAM,GAAG,GAAI,OAAM,EAAQ,GAAG,KAAK,KACnC,EAAK,OAAS,EACvB,EAAQ,EAAK,OAAO,GAAI,OAAM,EAAQ,EAAK,QAAQ,KAAK,KAExD,EAAQ,EAEV,EAAQ,EAAM,IAAI,CAAC,EAAG,IAChB,GAAK,EACA,EAEF,GACD,IAAM,GACN,IAAM,qDACC,mCAAmC,MACvC,EAAE,MAAM,GAAK,EAAO,KAGxB,CAAC,EAAQ,GAGZ,YACF,EAAkB,EAAiB,EAAe,EAClD,EAAmB,EAAiB,EACpC,EAAqB,EAAsB,CAE7C,GAAI,GAAS,EAAM,QACf,EAAO,EAAI,QACX,EAAW,EAEX,GAAW,MACb,GAAW,GAAI,OAAM,EAAO,SAG9B,GAAM,GAAe,GAAW,GAChC,GAAI,EAAa,OAAS,EACxB,KAAM,IAAI,OAAM,8CAGlB,GAAI,IAAiB,GAAK,IAAgB,EACxC,KAAM,IAAI,OACN,iEAGN,GAAI,IAAiB,GAAK,IAAmB,EAC3C,KAAM,IAAI,OACN,oEAGN,GAAM,GAAsB,EAAO,OAAS,EAAO,OAG7C,EAAa,GAAW,GACxB,EAAW,EAAO,QACxB,EAAW,QAAQ,GAAO,CACxB,EAAO,GAAQ,EACf,EAAK,GAAQ,EACb,EAAS,OAAO,EAAM,EAAG,KAG3B,GAAM,CACJ,MAAO,EACP,IAAK,EACL,QAAS,GAEP,GACI,EAAU,EAAc,EAAqB,EAAQ,EAAM,EAC3D,EAAW,EAAS,GAC5B,EAAS,EACT,EAAO,EACP,EAAW,EAEX,GAAM,GAAa,GAAW,GAE9B,EAAW,QAAQ,GAAO,CACxB,EAAK,GAAQ,EAAO,GAAQ,EAC5B,EAAS,GAAQ,IAInB,GAAM,GAAO,GAAgB,EAAQ,EAAM,GAErC,EAAW,EAAK,OAAO,CAAC,EAAG,IAAS,EAAW,QAAQ,KAAU,IAIvE,MAAO,CAAC,WAFW,EAAS,MAAM,GAAK,IAAM,GAEzB,OAAA,EAAQ,KAAA,EAAM,SAAA,EAAU,KAAA,EAAM,SAAA,EAAU,SAAA,GC/a9D,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,cAAA,IAAA,KA8DM,GAAA,IAAA,KAA4B,CAYhC,cAAY,CACV,MAAQ,MAAK,YACR,gBAiBA,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,KAWb,GAAA,KAAuB,CAO3B,aAAA,CACE,KAAK,aAAe,SAMf,SAAM,CACX,MAAI,IAAiB,UAAY,MAC/B,IAAiB,SAAW,GAAI,KAE3B,GAAiB,eAMnB,UAAiC,EAA+B,CACrE,GAAiB,SAAS,aAAa,EAAI,WACvC,CAAC,EAAK,EAAI,cA4BZ,YACF,EAA+B,CACjC,EACI,EAAI,WAAa,KACjB,IAAM,+EAEV,EACI,MAAO,GAAI,WAAc,SACzB,IAAM,sDACF,MAAO,GAAI,WACnB,EACI,EAAI,UAAU,OAAS,EACvB,IAAM,qFAGV,GAAiB,SAAS,GC/K5B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,qBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,YAAA,IAAA,KAsBA,GAAM,IAAuB,KAChB,GAAuB,GAE9B,YACF,EACA,EAAoD,EAAgB,CACtE,MAAI,IAAW,MACb,GAAU,MAEL,GACH,EAAQ,EAAU,CAAC,EAAG,IAAM,GAAS,EAAa,EAAa,IAG/D,aAAqB,CACzB,MAAO,GAAO,QAAQ,mBAAqB,GAAK,GACA,GAGlD,YACI,EAAoB,EACpB,EAAoC,CACtC,GAAI,GAAiB,GAOrB,GANI,IAAa,IAAW,GAAa,KACvC,GAAiB,IAEf,GAAa,IAAW,GAAa,IACvC,GAAiB,IAEf,EAAgB,CAClB,GAAM,GAAQ,EAAO,YAAY,KAC3B,EAAQ,EAAS,YAAY,KAEnC,GAAI,IAAU,EACZ,KAAM,IAAI,OACN,yCAAyC,gBAC5B,KAIrB,GAAI,MAAM,QAAQ,IAAW,MAAM,QAAQ,GAAW,CACpD,GAAM,GAAc,GAAW,GACzB,EAAgB,GAAW,GACjC,GAAI,CAAC,GAAY,EAAa,GAC5B,KAAM,IAAI,OACN,0CACY,kBAA4B,MAIhD,GAAM,GACF,GAAa,GAAU,EAAS,GAAQ,GACtC,EAAe,GAAa,GAC9B,EACA,GAAQ,GAEZ,GAAI,EAAW,SAAW,EAAa,OACrC,KAAM,IAAI,OACN,yCAAyC,EAAW,uBACvC,EAAa;YACb;YACA,MAEnB,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,EAAE,EAAG,CAC5C,GAAM,GAAI,EAAW,GACf,EAAI,EAAa,GAEvB,GAAI,CAAC,EAAU,EAAG,GAChB,KAAM,IAAI,OACN,yBAAyB,QAAQ,eAAe,QAAQ;YAC3C;YACA,OAUjB,YAA8B,EAAuB,EAAY,CACrE,IAAK,KAAK,IAAM,EAAK,OAAQ,IAAM,KAG/B,YAA4B,EAAoB,EAAoB,CACxE,GAAM,GAAM,MAAO,IAAa,UAAY,MAAO,IAAa,UACxD,MAAO,IAAa,UACxB,CAAC,GACD,EACJ,MAAI,IAAS,IAAW,GAAU,EAAoB,KAClD,GAAS,IAAa,GAAU,EAAsB,IAEjD,GAAsB,EAAQ,EAAK,CAAC,EAAG,IAAM,GAAK,GAEpD,GACH,EAAQ,EAAU,CAAC,EAAG,IAAM,GAAS,EAAa,EAAa,IAG/D,YAA6B,EAAW,EAAW,EAAgB,CAIvE,GAHI,GAAW,MACb,GAAU,MAER,CAAC,GAAS,EAAG,EAAG,GAClB,KAAM,IAAI,OAAM,8BAA8B,mBAAmB,KAIrE,YAAkB,EAAW,EAAW,EAAe,CACrD,MAAI,CAAC,SAAS,IAAM,CAAC,SAAS,GACrB,GAEL,CAAA,OAAM,IAAM,MAAM,IAAM,KAAK,IAAI,EAAI,GAAK,GAM1C,YACF,EAA6B,EAAa,EAAY,CACxD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,GAAI,EAAO,GAAK,GAAO,EAAO,GAAK,EACjC,KAAM,IAAI,OACN,sBAAsB,EAAO,WAAW,YAAc,KAK1D,YACF,EAAqB,EAAqB,CAG5C,OAAO,GAAI,cAAa,IAAS,QAAQ,GAAI,cAAa,IAItD,YAAwB,EAAqB,CAEjD,OAAS,GAAI,EAAG,EAAK,EAAgB,OAAQ,IAAK,CAChD,GAAM,GAAM,EAAE,GACV,MAAM,QAAQ,GAChB,GAAc,GAEd,EAAE,GAAK,GAAa,GAGxB,MAAO,GCpKT,GAAM,IAAU,QC6BV,aAAwB,CAC5B,IAAM,IAAI,OAAQ,IAiBd,aAAyB,CAC7B,IAAM,IAAI,QAAS,IAIf,aAAoC,CACxC,IAAM,IAAI,+BAAgC,IAC1C,QAAQ,KAAK,0DAIT,YAA0B,EAAW,CACrC,IAAM,QAAQ,iCAChB,QAAQ,KACJ,EAAM,+EAId,GAAwB,IAOlB,aAA0B,CAC9B,EAAO,mBAQH,aAAgB,CACpB,MAAO,GAwBH,aAAgB,CACpB,MAAO,GAAO,SAkCV,YAAkB,EAAqD,CAE3E,MAAO,GAAO,QAAQ,GA2ClB,WACF,EAA6B,EAAe,CAC9C,MAAO,GAAO,KAAK,EAAU,GAczB,YAAkB,EAA0B,CAChC,GAAsB,GAC9B,QAAQ,GAAU,EAAO,WAmC7B,YAAiC,EAAS,CAC9C,MAAO,GAAO,KAAK,GA4Bf,YAAe,EAAa,CAChC,MAAO,GAAO,KAAK,GAkBf,YAAqB,EAAmB,CAC5C,MAAO,GAAO,WAAW,GAUrB,aAAe,CACnB,MAAO,GAAO,QASV,aAAoB,CACxB,MAAO,GAAO,YAQV,YAAwB,EAAY,CACxC,EAAO,cAAc,GAOjB,YAAsB,EAAY,CACtC,MAAO,GAAO,YAAY,GAQtB,YAA6B,EAAY,CAE7C,MAAO,GAAO,mBAAmB,GAkB7B,YACF,EAAc,EACd,EAAW,EAAC,CACd,MAAO,GAAO,gBAAgB,EAAM,EAAS,GAWzC,aAAiB,CACrB,MAAO,GAAO,QASV,YAAsB,EAAsB,EAAkB,CAClE,IAAM,YAAY,EAAc,GC7UlC,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAoB,CAAC,EAAG,EAAI,EAAG,GAErC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCNvB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,YAC7B,EAAK,EAAgB,EAAG,IAAK,YACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAyB,CAAC,EAAG,EAAI,EAAG,GAE1C,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCZ5B,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OAGjC,GAFA,CAAC,EAAI,GAAM,GAAe,EAAI,GAE1B,EAAG,QAAU,SAAW,EAAG,QAAU,QACvC,MAAO,IAAS,EAAI,GAGtB,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GACnC,EAAQ,GAGd,MAAO,GAAO,UAAU,GAAS,EAAgC,GAG5D,GAAM,IAAM,EAAG,CAAC,KAAA,KChBvB,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAyB,CAAC,EAAG,EAAI,EAAG,GAE1C,MAAO,GAAO,UAAU,GAAU,GAE7B,GAAM,GAAM,EAAG,CAAC,KAAA,KCvBvB,YAAgC,EAAe,CAC7C,GAAM,GAAK,EAAgB,EAAG,IAAK,OAEnC,GAAI,EAAG,QAAU,YAAa,CAC5B,GAAM,GAA2B,CAAC,EAAG,GACrC,MAAO,GAAO,UAAU,GAAY,OAC/B,CACL,GAAM,GAAoB,CAAC,EAAG,GAC9B,MAAO,GAAO,UAAU,GAAK,IAI1B,GAAM,IAAM,EAAG,CAAC,KAAA,KCdvB,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCHxB,YAAkC,EAAe,CAE/C,GAAM,GAAsB,CAAC,EADlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCNzB,YAAiC,EAA4B,CACtD,EACD,MAAM,QAAQ,GACd,IAAM,8DACL,EACD,EAAQ,QAAU,EAClB,IAAM,uDACC,EAAQ,UAEnB,GAAM,GACF,EAAQ,IAAI,CAAC,EAAG,IAAM,EAAgB,EAAG,UAAU,IAAK,SAEtD,EAAc,EAAS,GAC7B,EAAS,QAAQ,GAAI,CACnB,GAAI,EAAE,QAAU,EAAY,MAC1B,KAAM,IAAI,OACN,8DAIR,EAAS,QAAQ,GAAI,CACnB,GAAI,CAAM,GAAY,EAAE,MAAO,EAAY,OACzC,KAAM,IAAI,OACN,8DAIR,GAAM,GAAqB,EAE3B,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCfxB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,MAAO,SAGpC,EAAkB,CAAC,KAAA,EAAM,SAAA,GAE/B,MAAO,GAAO,UACV,GAAK,EAAgC,GAGpC,GAAM,IAAM,EAAG,CAAC,KAAA,KCXvB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,MAAO,SAGpC,EAAkB,CAAC,KAAA,EAAM,SAAA,GAE/B,MAAO,GAAO,UACV,GAAK,EAAgC,GAIpC,GAAM,IAAM,EAAG,CAAC,KAAA,KCjBvB,YAAmC,EAAsB,EAAO,EAAC,CAG/D,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,WAG7B,EAAqB,CAAC,KAAA,GAE5B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCV1B,YAAmC,EAAsB,EAAO,EAAC,CAG/D,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,WAG7B,EAAqB,CAAC,KAAA,GAE5B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCxB1B,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCJxB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCRzB,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCFxB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAK,EAAgB,EAAG,IAAK,SACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAsB,CAAC,EAAG,EAAI,EAAG,GAEvC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCfzB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCmDnB,YACF,EACA,EAAuC,EACvC,EAA4B,EAAqB,OACjD,EAAkC,CAKpC,GAAM,GAAgB,EAAW,GAC3B,EACF,CAAC,GAAG,EAAa,GACf,EAAc,GAAwB,GAE5C,MAAO,IACH,EAAY,EAAc,EAAS,EAAW,EAC9C,KAAyB,KAAsB,GAG/C,YACF,EACA,EAAqC,EACrC,EAAoC,EACpC,EACA,EAA6C,eAAc,CAC7D,GAAM,CAAC,EAAc,GAAe,GAAgB,GAEhD,EACJ,GAAI,IAAe,eACjB,EAAc,CAAC,EAAc,EAAa,EAAQ,GAAI,EAAQ,YACrD,IAAe,gBACxB,EAAc,CAAC,EAAc,EAAa,EAAQ,GAAI,EAAQ,QAE9D,MAAM,IAAI,OAAM,sBAAsB,KAGxC,MAAO,IACH,EAAS,EAAa,EAAS,EAAW,EAAK,EAAc,GAC7D,GAMA,YACF,EACA,EACA,EACA,EAA4C,EAC5C,EACA,EAA8B,QAAO,CACvC,GAAM,CAAC,EAAa,EAAc,GAAe,GAAiB,GAE9D,EACA,EACJ,GAAI,IAAe,QACjB,EAAc,eACd,EACI,CAAC,EAAa,EAAc,EAAa,EAAQ,GAAI,EAAQ,YACxD,IAAe,QACxB,EAAc,gBACd,EACI,CAAC,EAAa,EAAc,EAAa,EAAQ,GAAI,EAAQ,QAEjE,MAAM,IAAI,OAAM,sBAAsB,KAGxC,MAAO,IACH,EAAS,EAAa,EAAS,EAAW,EAAK,GAAO,EACtD,GAOA,YACF,EACA,EACA,EAAkC,EAClC,EACA,EAAuC,EAAY,GACnD,EAA6C,eAAc,CAC7D,GAAI,CAAC,EAAW,EAAU,EAAS,GAAc,CAAC,GAAI,GAAI,GAAI,IAC9D,GAAI,IAAe,eACjB,CAAC,EAAW,EAAU,EAAS,GAAc,UACpC,IAAe,gBACxB,CAAC,EAAW,EAAY,EAAU,GAAW,MAE7C,MAAM,IAAI,OAAM,sBAAsB,KAGxC,GAAM,CAAC,EAAc,EAAY,CAAG,GAAkB,EAChD,CAAC,EAAc,GAAe,GAAgB,GAC9C,CAAC,EAAgB,GAAiB,GAAgB,GAElD,EACF,GAAuB,EAAc,GACnC,EACF,GAAuB,EAAa,GAClC,CAAC,QAAA,EAAS,UAAA,EAAW,SAAA,GAAY,GACnC,EAAK,EAAU,EAAS,EAAc,EAAa,EACnD,EAAsB,EAAc,GAElC,EAAc,EAAY,EAAiB,EAAa,EAE1D,EACJ,MAAI,KAAe,gBACjB,EAAW,CAAC,EAAW,EAAa,EAAW,GACtC,IAAe,gBACxB,GAAW,CAAC,EAAW,EAAW,EAAU,IAGvC,CACL,UAAA,EACA,WAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,YAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,sBAAA,EACA,qBAAA,EACA,eAAA,EACA,cAAA,EACA,QAAA,EACA,SAAA,EACA,YAAA,GA0CE,YACF,EACA,EACA,EACA,EAA4C,EAC5C,EAAY,GACZ,EAA6C,eAC7C,EAAqC,CACvC,GAAI,CAAC,EAAW,EAAS,EAAU,EAAS,GACxC,CAAC,GAAI,GAAI,GAAI,GAAI,IACrB,GAAI,IAAe,eACjB,CAAC,EAAW,EAAS,EAAU,EAAS,GAAc,UAC7C,IAAe,gBACxB,CAAC,EAAW,EAAY,EAAS,EAAU,GAAW,MAEtD,MAAM,IAAI,OAAM,sBAAsB,KAGxC,GAAM,CAAC,EAAa,EAAc,EAAY,CAAG,GAC7C,EACE,CAAC,EAAa,EAAc,GAAe,GAAiB,GAC5D,CAAC,EAAe,EAAgB,GAClC,GAAiB,GAEf,EACF,GAAuB,EAAa,GAClC,EACF,GAAuB,EAAc,GACnC,EACF,GAAuB,EAAa,GAClC,CAAC,QAAA,EAAS,SAAA,EAAU,UAAA,EAAW,SAAA,GAAY,GAC7C,EAAK,EAAS,EAAU,EAAS,EAAa,EAAc,EAC5D,EAAsB,EAAuB,EAC7C,GAEE,EAAc,EAAY,EAAiB,EAAa,EAE1D,EACJ,MAAI,KAAe,gBACjB,EAAW,CAAC,EAAW,EAAa,EAAU,EAAW,GAChD,IAAe,gBACxB,GAAW,CAAC,EAAW,EAAU,EAAW,EAAU,IAGjD,CACL,UAAA,EACA,WAAA,EACA,QAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,SAAA,EACA,UAAA,EACA,SAAA,EACA,YAAA,EACA,QAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,qBAAA,EACA,sBAAA,EACA,qBAAA,EACA,cAAA,EACA,eAAA,EACA,cAAA,EACA,QAAA,EACA,SAAA,EACA,YAAA,GAIJ,YACI,EAA2B,EAAmB,EAC9C,EAAkB,EAAqC,CACrD,GAAW,MACb,GAAU,GAAkB,EAAS,EAAW,IAElD,GAAM,GAAY,EAAQ,GACpB,EAAY,EAAQ,GAEpB,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GACxD,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GAE9D,MAAO,CAAC,EAAY,GAGtB,YACI,EAA2C,EAC3C,EAAqB,EAAgB,EACrC,EAAqC,CACnC,GAAW,MACb,GAAU,GAAkB,EAAS,EAAW,IAElD,GAAM,GAAa,EAAQ,GACrB,EAAY,EAAQ,GACpB,EAAY,EAAQ,GAEpB,EACF,GAAO,GAAa,EAAY,EAAI,GAAW,EAAS,EAAG,GACzD,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GACxD,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GAE9D,MAAO,CAAC,EAAc,EAAY,EAAY,GAG1C,YACF,EACA,EAAmB,EAAgB,EAAW,EAAC,CACjD,GAAM,GAAqB,GAAuB,EAAW,GAC7D,MAAO,MAAK,MACP,GAAW,GAAM,GAAS,GAAK,EAAS,GAAsB,GAGrE,YAAyB,EAAsB,CAC7C,MAAI,OAAO,IAAU,SACZ,CAAC,EAAO,EAAO,GAEpB,EAAM,SAAW,EACZ,CAAC,EAAM,GAAI,EAAM,GAAI,GAEvB,EAGT,YAA0B,EAAsC,CAE9D,MAAO,OAAO,IAAU,SAAW,CAAC,EAAO,EAAO,GAAS,EAc7D,YAAgC,EAAoB,EAAgB,CAClE,MAAI,IAAY,EACP,EAGF,EAAc,GAAa,GAAM,GAAW,GAGrD,YACI,EAA4C,EAC5C,EAAiB,EAAsB,EACvC,EAAsB,EACtB,EACA,EACc,CAChB,GAAI,GACA,EACA,EAEJ,GAAI,MAAO,IAAQ,SAAU,CAE3B,EAAU,CAAC,IAAK,EAAK,OAAQ,EAAK,KAAM,EAAK,MAAO,EAAK,KADxC,IAAQ,EAAK,QAAU,UAExC,GAAM,GAAW,GACb,CAAC,EAAU,GAAU,EAAc,EAAc,EAAK,GAC1D,EAAY,EAAS,GACrB,EAAW,EAAS,WACX,IAAQ,OAAQ,CACzB,EAAY,KAAK,KAAK,EAAW,GACjC,EAAW,KAAK,KAAK,EAAU,GAC/B,GAAM,GACF,KAAK,IAAI,EAAI,GAAY,GAAK,EAAe,EAAe,GAC1D,EACF,KAAK,IAAI,EAAI,GAAW,GAAK,EAAc,EAAc,GACvD,EAAM,KAAK,MAAM,EAAiB,GAClC,EAAS,EAAiB,EAC1B,EAAO,KAAK,MAAM,EAAgB,GAClC,EAAQ,EAAgB,EAC9B,EAAU,CAAC,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,MAAA,EAAO,KAAM,gBAClC,IAAQ,QACjB,EAAU,CAAC,IAAK,EAAG,OAAQ,EAAG,KAAM,EAAG,MAAO,EAAG,KAAM,SACvD,EAAY,KAAK,KAAM,GAAW,EAAe,GAAK,GACtD,EAAW,KAAK,KAAM,GAAU,EAAc,GAAK,WAC1C,MAAO,IAAQ,SAAU,CAClC,GAAM,GAAM,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GACzD,EAAS,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GAC5D,EAAO,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GAC1D,EAAQ,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GAIjE,EAAU,CAAC,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,MAAA,EAAO,KAHpB,IAAQ,GAAK,IAAW,GAAK,IAAS,GAAK,IAAU,EAClE,QACA,YAEJ,EAAY,GACP,GAAW,EAAe,EAAM,GAAU,EAAe,EAC1D,GACJ,EAAW,GACN,GAAU,EAAc,EAAO,GAAS,EAAc,EAAG,OAE9D,MAAM,OAAM,8BAA8B,KAE5C,MAAO,CAAC,QAAA,EAAS,UAAA,EAAW,SAAA,GAG9B,YACI,EAA4B,EAAiB,EAC7C,EAAiB,EAAqB,EACtC,EAAqB,EAAqB,EAC1C,EAAqB,EAAqC,CAM5D,GAAI,GACA,EACA,EACA,EAEJ,GAAI,MAAO,IAAQ,SAAU,CAE3B,EAAU,CACR,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,KAAM,EACN,KARe,IAAQ,EAAK,QAAU,UAUxC,GAAM,GAAW,GACb,CAAC,EAAS,EAAU,EAAS,GAAI,EAAa,EAAG,EAAa,EAC9D,GACJ,EAAW,EAAS,GACpB,EAAY,EAAS,GACrB,EAAW,EAAS,WACX,IAAQ,OAAQ,CACzB,EAAW,KAAK,KAAK,EAAU,GAC/B,EAAY,KAAK,KAAK,EAAW,GACjC,EAAW,KAAK,KAAK,EAAU,GAC/B,GAAM,GAAiB,GAAW,GAAK,EAAc,EAAc,EAC7D,EACD,GAAY,GAAK,EAAe,EAAe,EAC9C,EAAiB,GAAW,GAAK,EAAc,EAAc,EAC7D,EAAQ,KAAK,MAAM,EAAgB,GACnC,EAAO,EAAgB,EACvB,EAAM,KAAK,MAAM,EAAiB,GAClC,EAAS,EAAiB,EAC1B,EAAO,KAAK,MAAM,EAAgB,GAClC,EAAQ,EAAgB,EAE9B,EAAU,CAAC,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,KAAA,EAAM,KAAM,gBAC/C,IAAQ,QACjB,EAAU,CACR,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,KAAM,EACN,KAAM,SAER,EAAW,KAAK,KAAM,GAAU,EAAc,GAAK,GACnD,EAAY,KAAK,KAAM,GAAW,EAAe,GAAK,GACtD,EAAW,KAAK,KAAM,GAAU,EAAc,GAAK,OAEnD,MAAM,OAAM,8BAA8B,KAE5C,MAAO,CAAC,QAAA,EAAS,SAAA,EAAU,UAAA,EAAW,SAAA,GASxC,YAAe,EAAe,EAAqC,CACjE,GAAI,CAAC,EACH,MAAO,MAAK,MAAM,GAEpB,OAAQ,OACD,QAEH,MAAO,MAAK,MAAM,OACf,OAEH,MAAO,MAAK,KAAK,OACd,QACH,MAAO,MAAK,MAAM,WAElB,KAAM,IAAI,OAAM,wBAAwB,MAIxC,YAA4B,EAAsB,CACtD,GAAM,CAAC,EAAM,EAAM,GAAQ,GAAgB,GAC3C,MAAO,KAAS,GAAK,IAAS,GAAK,IAAS,EAGxC,YACF,EAA0B,EAA0B,CACtD,MAAO,IAAkB,IAAY,GAAkB,GAUnD,YAAkC,EAAyB,CAE/D,GAAI,IAAe,OACjB,MAAO,eACF,GAAI,IAAe,OACxB,MAAO,gBAEP,KAAM,IAAI,OAAM,sBAAsB,KC9hB1C,YACI,EAAsB,EAAkB,CAG1C,GAAM,GAAwB,CAAC,EAFpB,EAAgB,EAAG,IAAK,UAAW,sBAGxC,EAAsB,CAAC,MAAA,GAC7B,MAAO,GAAO,UACV,GAAS,EAAgC,GAExC,GAAM,GAAU,EAAG,CAAC,SAAA,KCX3B,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAAW,WACxC,EAAY,EAEb,EACS,GAA+B,EAAS,GAClD,IAAM,wEACa,oBAA0B,MAEjD,GAAI,GAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACD,EAAI,OAAS,EACb,IAAM,mDAAmD,EAAI,SAE7D,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,wEACiB,iBAA+B,MAG5D,GAAM,GAAwB,CAAC,EAAG,GAE5B,EAAsB,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAGnD,EAAM,EAAO,UACH,GAAS,EACT,GAId,MAFA,GAAM,GAAK,EAAK,EAAG,OAEf,EACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,EAGF,GAAM,IAAU,EAAG,CAAC,SAAA,KCjC3B,YACI,EAAiB,EACjB,EAA0C,EAC1C,EACA,EAA8B,QAAO,CACvC,GAAM,GAAK,EAAgB,EAAG,IAAK,YAAa,WAE5C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGnE,EACD,EAAI,OAAS,EACb,IAAM,qDAAqD,EAAI,SAC9D,EACD,IAAe,QACf,IAAM,gFACuB,KAE7B,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,0EACiB,iBAA+B,MAG5D,GAAM,GAA0B,CAAC,EAAG,GAE9B,EACe,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAG7D,EAAM,EAAO,UACH,GAAW,EACX,GAId,MAFA,GAAM,GAAK,EAAK,EAAI,OAEhB,EACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAIhE,EAGF,GAAM,IAAY,EAAG,CAAC,WAAA,KChD7B,YAAmC,EAA8B,EAAO,EAAC,CACvE,EAAO,EAAQ,QAAU,EAAG,IAAM,sCAElC,GAAM,GACF,GAAqB,EAAS,UAAW,SAAU,qBAWvD,GATI,EAAS,GAAG,QAAU,aACxB,EAAS,QAAQ,GAAS,CACxB,GAAI,EAAO,QAAU,YACnB,KAAM,IAAI,OAAM;uBACD,EAAO,aAKxB,EAAS,SAAW,EACtB,MAAO,IAAM,EAAS,IAGxB,GAAM,GAAuB,EACvB,EAAoB,CAAC,KAAA,GAE3B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCxD1B,YAAoC,EAAe,CAGjD,GAAM,GAAwB,CAAC,EAFpB,EAAgB,EAAG,IAAK,YAInC,MAAO,GAAO,UAAU,GAAS,GAE5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCgB3B,YACI,EAAiB,EAAwB,EAAsB,CACjE,GAAM,GAAK,EAAgB,EAAG,IAAK,QAAS,qBAE5C,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OAAM,kCAGlB,GAAM,GAAsB,CAAC,EAAG,GAC1B,EAAoB,CAAC,MAAA,EAAO,KAAA,GAElC,MAAO,GAAO,UACV,GAAO,EAAgC,GAGtC,GAAM,IAAQ,EAAG,CAAC,OAAA,KCtCzB,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCCxB,YACI,EAA+B,EAC/B,EAA+B,EAC/B,EAAwB,EAAsB,CAChD,GAAM,GACF,EAAgB,EAAY,aAAc,iBACxC,EACF,EAAgB,EAAY,aAAc,iBACxC,EAAY,EAAgB,EAAU,WAAY,iBAClD,EAAQ,EAAgB,EAAM,OAAQ,iBACtC,EAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAK,EAAgB,EAAG,IAAK,iBAE7B,EAAW,GAAO,CAAC,EAAO,GAAK,GAC/B,EAAW,GAAO,EAAU,GAC5B,EAAgB,GAAI,EAAU,GAG9B,EAAY,EAAI,MAAM,GACtB,EAAY,EAAI,MAAM,GAAK,EAC3B,EAA8B,CAAC,EAAW,GAC1C,EAAI,GAAM,EAAK,CAAC,EAAG,GAAI,GACvB,EAAI,GAAM,EAAK,CAAC,EAAG,GAAY,GAC/B,EAAI,GAAM,EAAK,CAAC,EAAG,EAAY,GAAI,GACnC,EAAI,GAAM,EAAK,CAAC,EAAG,EAAY,GAAI,GAEnC,EACF,GAAI,EAAI,GAAQ,GAAI,GAAK,IACrB,EAAI,EAAI,GAAQ,GAAI,EAAa,MACnC,EAAiB,EAAI,GAAK,GAAO,GAAQ,IAC/C,MAAO,CAAC,EAAM,GAGT,GAAM,IAAgB,EAAG,CAAC,eAAA,KCHjC,YACI,EAAiB,EAAsB,EAAiB,CAC1D,GAAM,GAAK,EAAgB,EAAG,IAAK,kBAC7B,EAAO,EAAW,OAAO,CAAC,EAAG,IAAM,EAAI,GAExC,EACD,EAAG,MAAQ,EAAI,EAAW,OAC1B,IAAM,iBAAiB,EAAG,+CACtB,EAAW,UAEd,EACD,EAAM,SAAW,EAAW,OAC5B,IAAM,mBACF,EAAM,oDACN,EAAW,UAEd,EACD,EAAG,MAAM,GAAK,GAAS,EACvB,IAAM,yBACI,EAAG,MAAM,wEACe,EAAW,KAAK,cAAc,KAEpE,GAAM,GAA+B,CAAC,EAAG,GACnC,EAA6B,CAAC,WAAA,EAAY,MAAA,GAEhD,MAAO,GAAO,UACV,GAAgB,EAChB,GAGC,GAAM,IAAiB,EAAG,CAAC,gBAAA,KCtF5B,YAAgC,EAAY,CAChD,GAAI,GACJ,MAAI,GAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,EAAM,EAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAE,OACpB,EAAE,OAAS,EACpB,EAAM,EAAQ,EAAG,CAAC,EAAG,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,KACnC,EAAE,OAAS,EACpB,EAAM,EAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,KAErD,EAAM,EAGD,ECwBT,YACI,EAAyB,EACzB,EACA,EACA,EACA,EAAwB,CACtB,GAAmB,MACrB,GAAkB,MAEpB,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACA,GAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAGzC,EACD,EAAM,OAAS,EAAU,KACzB,IAAM,gFAEL,EACD,GAAW,MAAQ,EAAM,OAAS,EAAQ,KAC1C,IAAM,8EAEL,EACD,GAAU,MAAQ,EAAM,OAAS,EAAO,KACxC,IAAM,6EAKV,GAAM,GAA+B,CACnC,EAHoB,GAAM,GAI1B,MAAO,EACP,OAAQ,EACR,KAAM,EACN,SAAU,GAGN,EAA6B,CAAC,gBAAA,GAG9B,EAAM,EAAO,UACH,GAAgB,EAChB,GAEhB,MAAO,GAAQ,EAAK,EAAG,OAGlB,GAAM,IAAY,EAAG,CAAC,WAAA,KC3E7B,YACI,EAAwB,EACxB,EACA,EAAuC,EACvC,EAAwB,CAC1B,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACJ,MAAI,IAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAEzC,EACD,EAAG,OAAS,EACZ,IAAM,uDACC,EAAG,SACT,EACD,EAAM,OAAS,GAAK,EAAM,OAAS,EACnC,IAAM,oEACU,EAAM,SACrB,EACD,EAAU,OAAS,GAAK,EAAU,OAAS,EAC3C,IAAM,wEACc,EAAU,SAC9B,GAAU,MACP,EACD,EAAO,OAAS,GAAK,EAAO,OAAS,EACrC,IAAM,qEACc,EAAO,SAE7B,GAAW,MACR,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,sEACc,EAAQ,SAG3B,GAAU,EAAI,EAAO,EAAW,EAAS,EAAQ,GAGnD,GAAM,IAAc,EAAG,CAAC,aAAA,KC5C/B,YACI,EAAwB,EACxB,EACA,EAAuC,EACvC,EAAwB,CAC1B,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACJ,MAAI,IAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAEzC,EACD,EAAG,OAAS,EACZ,IAAM,uDACC,EAAG,SACT,EACD,EAAM,OAAS,GAAK,EAAM,OAAS,EACnC,IAAM,oEACU,EAAM,SACrB,EACD,EAAU,OAAS,GAAK,EAAU,OAAS,EAC3C,IAAM,wEACc,EAAU,SAC9B,GAAU,MACP,EACD,EAAO,OAAS,GAAK,EAAO,OAAS,EACrC,IAAM,qEACc,EAAO,SAE7B,GAAW,MACR,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,sEACc,EAAQ,SAG3B,GAAU,EAAI,EAAO,EAAW,EAAS,EAAQ,GAGnD,GAAM,IAAc,EAAG,CAAC,aAAA,KC5C/B,YACI,EAAwB,EACxB,EACA,EAAuC,EACvC,EAAwB,CAC1B,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACJ,MAAI,IAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAEzC,EACD,EAAG,OAAS,EACZ,IAAM,uDACC,EAAG,SACT,EACD,EAAM,OAAS,GAAK,EAAM,OAAS,EACnC,IAAM,oEACU,EAAM,SACrB,EACD,EAAU,OAAS,GAAK,EAAU,OAAS,EAC3C,IAAM,wEACc,EAAU,SAC9B,GAAU,MACP,EACD,EAAO,OAAS,GAAK,EAAO,OAAS,EACrC,IAAM,qEACc,EAAO,SAE7B,GAAW,MACR,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,sEACc,EAAQ,SAE3B,GAAU,EAAI,EAAO,EAAW,EAAS,EAAQ,GAGnD,GAAM,IAAc,EAAG,CAAC,aAAA,KCjC/B,YACI,EAAiB,EAAuB,EAAY,CACtD,GAAM,GAAK,EAAgB,EAAG,IAAK,YAC7B,EAAW,EAAgB,EAAS,UAAW,YAEhD,EACD,EAAG,QAAU,QACb,IAAM,yDAC8B,EAAG,SACtC,EAAO,GAAQ,EAAG,IAAM,sCAAsC,MAC9D,EACD,EAAS,OAAS,EAAG,MAAQ,EAAS,OAAS,EAC/C,IAAM,gGACgC,EAAG,yBAClC,EAAS,UAEpB,GAAM,GAAyB,CAAC,EAAG,EAAI,QAAS,GAC1C,EAAuB,CAAC,KAAA,GAE9B,MAAO,GAAO,UACV,GAAU,EAAgC,GAGzC,GAAM,IAAW,EAAG,CAAC,UAAA,KCzB5B,YACI,EAAsB,EAAkB,CAC1C,GAAI,GAAQ,EAAgB,EAAG,cAAe,KACxC,EAAS,EAAM,MAErB,GAAI,EAAM,KAAK,GAAK,CAAE,GAAI,IAAM,EAAI,GAAM,GACxC,KAAM,IAAI,OAAM,2CAA2C,OAG7D,GAAI,EAAM,OAAS,EAAM,KACvB,KAAM,IAAI,OAAM,+BAA+B,EAAM,uBACjD,EAAM,SAGZ,GAAI,EAAM,OAAS,EAAM,KAAM,CAC7B,GAAM,GAAW,EAAM,MAAM,QAC7B,KAAO,EAAS,OAAS,EAAM,QAC7B,EAAS,QAAQ,GAEnB,EAAQ,EAAQ,EAAO,GAGzB,GAAM,GAAa,EAAM,MACnB,EAAiB,MAAM,KAAK,GAClC,OAAS,GAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IACrC,GAAI,EAAW,KAAO,EAAM,GAC1B,EAAK,GAAK,UACD,EAAM,MAAM,KAAO,EAC5B,KAAM,IAAI,OACN,mBAAmB,8BAAmC,OAK9D,GAFa,EAAK,IAAI,CAAC,EAAG,IAAM,EAAI,EAAI,EAAI,IAAI,OAAO,GAAK,GAAK,GAExD,SAAW,EAClB,MAAO,IAAM,GAIf,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,KAAA,GAC1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAc,EAAG,CAAC,aAAA,KClD/B,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCHxB,YACI,EAAiB,EAAsB,EAAoB,CAC7D,GAAM,GAAK,EAAgB,EAAG,IAAK,eAC9B,EACA,GAAgB,EACjB,IAAM,uBAAuB,yCACK,OAEtC,GAAM,GAA4B,CAAC,EAAG,GAChC,EAA0B,CAAC,aAAA,EAAc,aAAA,GAE/C,MAAO,GAAO,UACV,GAAa,EAAgC,GAG5C,GAAM,IAAc,EAAG,CAAC,aAAA,KCvB/B,YAAmB,EAAmC,CACpD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KCY5B,YACI,EAAqC,EAAY,CACnD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KCD5B,YACI,EAAqC,EAAY,CACnD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KC5B5B,YACI,EAAqC,EAAY,CACnD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KC0B5B,YACI,EAAiB,EACjB,EACA,EACA,EAA4B,OAC5B,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACD,EAAQ,OAAS,EACjB,IAAM,wDACC,EAAQ,SACf,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,uEACiB,iBAA+B,MAG5D,GAAM,GAAU,IAAe,OAAS,EAAI,MAAM,GAAK,EAAI,MAAM,GAC5D,EACD,IAAY,EAAQ,MAAM,GAC1B,IAAM,oCAAoC,wCACZ,EAAQ,MAAM,OAC3C,EACS,GAA+B,EAAS,GAClD,IAAM,uEACa,oBAA0B,MAEjD,GAAM,GAAuB,CAAC,EAAG,EAAK,OAAQ,GACxC,EACY,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,GAGlD,EAAM,EAAO,UACH,GAAQ,EACR,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAS,EAAG,CAAC,QAAA,KChE1B,YACI,EAAiB,EAA6B,EAC9C,EACA,EAA0B,MAAO,EAAW,EAC5C,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,MAGzC,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACD,EAAQ,OAAS,EACjB,IAAM,wDACC,EAAQ,SACf,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,uEACiB,iBAA+B,MAGvD,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,oCAAoC,EAAI,MAAM,yCACtB,EAAQ,MAAM,OAC3C,EACS,GAA+B,EAAQ,GACjD,IAAM,oEACY,mBAAwB,MACzC,EACD,IAAe,MACf,IAAM,sCACF,0CAER,GAAM,GAAW,EACb,EAAS,CAAC,EAAG,EAAQ,MAAM,GAAI,EAAQ,MAAM,GAAI,EAAQ,MAAM,KAC7D,EAAU,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAG,EAAI,MAAM,GAAI,EAAI,MAAM,KAMjE,EAAM,GACP,EAAuB,EANM,CAAC,EAAG,GAMsB,EAHnC,OAFW,CAAC,EAAG,GAMP,GAEjC,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,KAGxC,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,GAAM,IAAS,EAAG,CAAC,QAAA,KChE1B,YACI,EAAmE,EACnE,EAAkB,EAClB,EACA,EAA4B,OAC5B,EAAwC,CACrC,EACD,EAAO,SAAW,EAAG,KACrB,IAAM,sBACE,EAAO,2BAA2B,EAAG,oBAEjD,GAAI,GAAW,EACX,EAAO,EACP,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,KAC1D,EAAW,CAAC,EAAG,EAAO,GAAI,EAAO,GAAI,EAAO,KAGzC,EACD,EAAS,SAAW,EACpB,IACI,qEACG,EAAS,WACf,EACD,EAAK,OAAS,EACd,IAAM,4DACM,EAAK,QAChB,EACD,EAAO,OAAS,EAChB,IAAM,gEACM,EAAO,QACvB,GAAM,GAAU,IAAe,OAAS,EAAS,GAAK,EAAS,GACzD,EAAW,IAAe,OAAS,EAAK,MAAM,GAAK,EAAK,MAAM,GAC/D,EACD,IAAY,EAAO,MAAM,GACzB,IAAM,4CAA4C,wCACd,EAAO,MAAM,OAChD,EACD,IAAa,EAAO,MAAM,GAC1B,IAAM,6CAA6C,yCACd,EAAO,MAAM,OAClD,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,+EACiB,iBAA+B,MAG5D,GAAM,GAAoC,CAAC,GAAI,EAAM,OAAA,GAE/C,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,EAAiB,WAAY,GAGtD,EAAM,EAAO,UACH,GAAqB,EACrB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAsB,EAAG,CAAC,qBAAA,KC1EvC,YACI,EAAiB,EACjB,EACA,EAAkC,EAClC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAElD,MAAO,IACH,EAAa,EAAI,EAAS,EAAS,EAAK,OAAQ,GAG/C,GAAM,IAAkB,EAAG,CAAC,iBAAA,KCMnC,YACI,EAAiB,EACjB,EAA0C,EAC1C,EAA8B,QAC9B,EAA6C,CAAC,EAAG,EAAG,GAAE,CACxD,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEnE,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACD,EAAQ,OAAS,EACjB,IAAM,wDACC,EAAQ,SACd,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,oCAAoC,EAAI,MAAM,yCACtB,EAAQ,MAAM,OAC3C,EACD,GAA+B,EAAS,GACxC,IAAM,uEACa,oBAA0B,MAC5C,EACD,IAAe,QACf,IAAM,sCACF,4CAER,GAAM,GAAuB,CAAC,EAAG,EAAK,OAAQ,GAExC,EAAqB,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,GAGhD,EAAM,EAAO,UACH,GAAQ,EACR,GAEhB,MAAI,GACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGhE,EAGF,GAAM,IAAS,EAAG,CAAC,QAAA,KCrE1B,YACI,EAGA,EAAO,EAAkB,EACzB,EAAmB,CAChB,EACD,EAAO,SAAW,EAAG,KACrB,IAAM,sBACE,EAAO,2BAA2B,EAAG,oBAEjD,GAAI,GAAW,EACX,EAAO,EACP,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,KACvE,EAAW,CAAC,EAAG,EAAO,GAAI,EAAO,GAAI,EAAO,GAAI,EAAO,KAGzD,GAAM,GAAU,EAAS,GACnB,EAAW,EAAK,MAAM,GACvB,EACD,EAAS,SAAW,EACpB,IACI,qEACG,EAAS,WACf,EACD,EAAK,OAAS,EACd,IAAM,4DACM,EAAK,QAChB,EACD,EAAO,OAAS,EAChB,IAAM,gEACM,EAAO,QAClB,EACD,IAAY,EAAO,MAAM,GACzB,IAAM,4CAA4C,wCACd,EAAO,MAAM,OAChD,EACD,IAAa,EAAO,MAAM,GAC1B,IAAM,6CAA6C,yCACd,EAAO,MAAM,OAEtD,GAAM,GAAsC,CAAC,GAAI,EAAM,OAAA,GAEjD,EAC2B,CAAC,IAAA,EAAK,QAAA,EAAS,WAAY,GAGtD,EAAM,EAAO,UACH,GAAuB,EACvB,GAEhB,MAAI,GACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGhE,EAGF,GAAM,IAAsB,EAAG,CAAC,qBAAA,KChEvC,YACI,EAAiB,EACjB,EAGA,EAA0C,EAAmB,CAC/D,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAElD,MAAO,IAAoB,EAAa,EAAI,EAAS,EAAS,GAGzD,GAAM,IAAkB,EAAG,CAAC,iBAAA,KChBnC,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCPvB,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCMxB,YACI,EAAsB,EAAO,EAAG,EAAY,GAAO,EAAU,GAAK,CAGpE,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,WAG7B,EAAqB,CAAC,KAAA,EAAM,UAAA,EAAW,QAAA,GAE7C,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCd1B,YACI,EAAiB,EAAuB,EACxC,EAAe,GAAK,CACtB,GAAM,GAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAW,EAAgB,EAAS,UAAW,iBAEhD,EACD,EAAG,QAAU,QACb,IAAM,8DAC8B,EAAG,SACtC,EACD,EAAG,MAAQ,EACX,IAAM,sEACM,EAAG,SACd,EAAO,GAAQ,EAAG,IAAM,sCAAsC,MAC9D,EACD,EAAS,OAAS,EAAG,MAAQ,EAAS,OAAS,EAC/C,IACI,+FAC8B,EAAG,yBAC9B,EAAS,UAEpB,GAAM,GAA8B,CAAC,EAAG,EAAI,QAAS,GAC/C,EAA4B,CAAC,KAAA,EAAM,aAAA,GAEzC,MAAO,GAAO,UACV,GAAe,EACf,GAGC,GAAM,IAAgB,EAAG,CAAC,eAAA,KCZjC,YACI,EAA0B,EAC1B,EAA4B,OAAM,CACpC,GAAM,GAAK,EAAgB,EAAG,IAAK,gBAE7B,EAAe,IAAe,OAAU,EAAG,MAAM,GAAK,EAAG,MAAM,GAC/D,EAAc,IAAe,OAAU,EAAG,MAAM,GAAK,EAAG,MAAM,GAC9D,EAAc,IAAe,OAAU,EAAG,MAAM,GAAK,EAAG,MAAM,GAE/D,EACD,EAAc,GAAa,EAC3B,IAAM;MACN,SAAmB;MACnB,EAAG,SAEF,EACD,EAAa,GAAa,EAC1B,IAAM;MACN,SAAkB;UACd,EAAG,SAEN,EACA,EAAc,GAAY,IAAe,EAC1C,IAAM,8CACF,EAAY,YACZ,uCAAgD,EAAG,SAE3D,GAAM,GAA6B,CAAC,EAAG,GACjC,EAA2B,CAAC,UAAA,EAAW,WAAA,GAE7C,MAAO,GAAO,UACV,GAAc,EACd,GAGC,GAAM,IAAe,EAAG,CAAC,cAAA,KC3BhC,YACI,EAAiB,EACjB,EAAkC,EAClC,EAA4B,OAC5B,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAE9C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEtD,EACD,EAAI,OAAS,EACb,IAAM,gEACM,EAAI,SACf,EACD,EAAQ,OAAS,EACjB,IAAM,iEACC,EAAQ,SACd,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,uDACE,EAAI,MAAM,qDACJ,EAAQ,MAAM,OAE5B,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,gFACiB,iBAA+B,MAG5D,GAAM,GAAsC,CAAC,EAAG,EAAK,OAAQ,GACvD,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,GAGpC,EAAM,EAAO,UACH,GAAuB,EACvB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAkB,EAAG,CAAC,iBAAA,KC9EnC,YAAe,EAAS,CAGtB,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCMxB,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAqC,CAAC,EAAG,GACzC,EAAqB,OAAM,CAC7B,GAAM,GAAK,EAAgB,EAAG,IAAK,cAC7B,EAAU,EAAgB,EAAQ,SAAU,cAE7C,EACD,EAAG,OAAS,GAAK,EAAG,OAAS,EAC7B,IAAM,gEACC,EAAG,SACT,EACD,EAAQ,OAAS,EACjB,IAAM,4DACC,EAAQ,SACd,EACD,IAAe,OACf,IAAM,gFACuB,KAEjC,GAAI,GAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,KACzD,EAAe,IAGjB,GAAM,GAA2B,CAAC,EAAG,EAAK,OAAQ,GAC5C,EAAyB,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAGxC,EAAM,EAAO,UACH,GAAY,EACZ,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,EAGF,GAAM,IAAa,EAAG,CAAC,YAAA,KC9ExB,YACF,EAAmB,EAAkB,CACvC,GAAM,GAAS,EAAQ,OACjB,EAAiB,GACvB,OAAS,GAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,GAAM,GAAM,EAAS,EAAI,EACnB,EAAI,EAAQ,IAAQ,EAChB,AAAA,GAAS,EAAS,OAAS,EAAI,IAAM,GACvC,GAAK,IAAM,GACjB,EAAK,QAAQ,GAGjB,MAAO,GAOH,YACF,EAAmB,EAAkB,CACvC,GAAM,GAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACxC,GAAM,GAAQ,EAAQ,EAAQ,OAAS,EAAI,GACrC,EAAU,EAAS,OAAS,EAAI,EAChC,EAAS,EAAS,GACpB,AAAA,IAAS,MAAS,IAAU,GAAK,EAAS,IAC5C,EAAO,QAAQ,GAGnB,MAAO,GAGH,YACF,EAAkB,EAAgB,CACpC,GAAM,GAAmB,GACnB,EAAI,KAAK,IAAI,EAAO,OAAQ,EAAO,QAEzC,OAAS,GAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,GAAI,GAAI,EAAO,EAAO,OAAS,EAAI,GAC/B,GAAK,MACP,GAAI,GAEN,GAAI,GAAI,EAAO,EAAO,OAAS,EAAI,GAInC,GAHI,GAAK,MACP,GAAI,GAEF,IAAM,EACR,EAAO,QAAQ,WACN,IAAM,EACf,EAAO,QAAQ,WACN,IAAM,EAAG,CAClB,GAAM,GAAS,wDACR,SAAc,KACrB,KAAM,OAAM,OAEZ,GAAO,QAAQ,GAGnB,MAAO,GC3CT,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAK,EAAgB,EAAG,IAAK,SACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAsB,CAAC,EAAG,EAAI,EAAG,GAEvC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCHzB,YACI,EAA8B,EAAiB,EAAe,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAK,EAAgB,EAAG,IAAK,SAC7B,EAAa,EAAgB,EAAW,YAAa,QAAS,QAI9D,EAAiB,GAA2B,EAAG,MAAO,EAAG,OACzD,EAAgB,GAAY,EAAI,GAChC,EAAgB,GAAY,EAAI,GAClC,EAAW,OAAS,GAGtB,EACI,EAAW,MAAM,KAAO,EAAG,MAAM,GACjC,IAAM,kEAGR,EAAW,OAAS,GAEtB,GACI,EAAW,MAAO,EAAc,MAAO,oBAG7C,GAAM,GAAuB,CAC3B,UAAW,EACX,EAAG,EACH,EAAG,GAEL,MAAO,GAAO,UAAU,GAAQ,GAG3B,GAAM,IAAQ,EAAG,CAAC,OAAA,KC9CzB,YAAsC,EAAe,CAEnD,GAAM,GAA0B,CAAC,EADtB,EAAgB,EAAG,IAAK,cAEnC,MAAO,GAAO,UAAU,GAAW,GAE9B,GAAM,IAAY,EAAG,CAAC,WAAA,KCc7B,YACI,EAAsB,EAAoB,CAE5C,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAY,GAAI,EAAI,GACpB,EAAQ,GAAU,GAClB,EAAc,GAAM,EAAI,GAC9B,MAAO,IAAM,EAAa,EAAO,GAG5B,GAAM,IAAW,EAAG,CAAC,UAAA,KC5B5B,YAAc,EAAuB,EAAqB,CACxD,GAAM,GAAM,EAAgB,EAAI,KAAM,OAChC,EAAM,EAAgB,EAAI,KAAM,OAEjC,EACA,GAAI,OAAS,GAAK,EAAI,OAAS,IAAO,GAAI,OAAS,GAAK,EAAI,OAAS,GACtE,IAAM,+DACC,EAAI,YAAY,EAAI,SAE/B,GAAM,GAAW,EAAI,OAAS,EAAI,EAAI,KAAO,EAAI,MAAM,GACjD,EAAW,EAAI,OAAS,EAAI,EAAI,KAAO,EAAI,MAAM,GAOvD,GALK,EACD,IAAY,EACZ,IAAM,gEACC,SAAe,MAEtB,EAAI,OAAS,GAAK,EAAI,OAAS,EAAG,CACpC,GAAM,GAAO,EAAQ,EAAK,CAAC,EAAG,KACxB,EAAO,EAAQ,EAAK,CAAC,GAAI,IACzB,EAAO,GAAO,EAAM,GAC1B,MAAO,GAAQ,EAAM,YACZ,EAAI,OAAS,GAAK,EAAI,OAAS,EAAG,CAC3C,GAAM,GAAO,EAAQ,EAAK,CAAC,EAAG,KACxB,EAAO,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,KAC7C,EAAO,GAAO,EAAM,GAC1B,MAAO,GAAQ,EAAM,CAAC,EAAK,eAClB,EAAI,OAAS,GAAK,EAAI,OAAS,EAAG,CAC3C,GAAM,GAAO,EAAQ,EAAK,CAAC,GAAI,IACzB,EAAO,GAAO,EAAK,GACzB,MAAO,GAAQ,EAAM,CAAC,EAAK,WACtB,CACL,GAAM,GAAO,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,KAEnD,MADa,IAAO,EAAK,IAKtB,GAAM,IAAM,EAAG,CAAC,KAAA,KC3CvB,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCLvB,YAAgC,EAAe,CAC7C,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC5B,EACD,EAAG,QAAU,SAAW,EAAG,QAAU,UACrC,IAAM,6CAEN,EAAG,QAAU,SACf,GAAK,GAAK,EAAI,YAGhB,GAAM,GAAoB,CAAC,EAAG,GAC9B,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KChBvB,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAGnC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCAvB,YAAuC,EAAsB,EAAO,EAAC,CACnE,GAAM,GAAK,EAAgB,EAAG,IAAK,aAAc,qBAE5C,EAAO,GAAQ,EAAG,KAAM,IAAM,sCAEnC,GAAM,GAA2B,CAAC,MAAO,GACnC,EAAyB,CAAC,IAAK,GAErC,MAAO,GAAO,UACV,GAAY,EAAgC,GAG3C,GAAM,IAAa,EAAG,CAAC,YAAA,KCjB9B,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCQzB,YAAiC,EAAiB,EAAc,CAC9D,GAAM,GAAK,EAAgB,EAAG,IAAK,OAAQ,qBACtC,EACD,EAAG,OAAS,EAAK,OACjB,IAAM,qCAAqC,EAAG,kCACb,MAErC,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,KAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EACN,GAGC,GAAM,IAAO,EAAG,CAAC,MAAA,KC5BxB,YACI,EAAiB,EACjB,EAKA,EAAkB,UAAS,CACzB,GAAc,MAChB,GAAa,GAEf,GAAM,GAAO,GAAO,CAAC,EAAS,GAAa,GACrC,EAAI,GAAW,EAAa,EAAU,EAC5C,OAAS,GAAI,EAAG,EAAI,EAAG,EAAE,EACvB,EAAK,IAAI,EAAG,EAAG,GAEjB,GAAM,GAAgB,EAAQ,EAAK,WAAY,CAAC,EAAS,IACzD,GAAI,GAAc,KAChB,MAAO,GAEP,GAAI,EAAW,SAAW,EACxB,MAAO,IAAK,GAAW,EAAK,GAAI,CAAC,EAAW,GAAI,EAAG,IAC9C,GAAI,EAAW,SAAW,EAE/B,MAAO,IACI,GAAW,GAAW,EAAK,GAAI,GAC/B,CAAC,EAAW,GAAI,EAAW,GAAI,EAAG,IACxC,GAAI,EAAW,SAAW,EAE/B,MAAO,IAAK,GAAW,GAAW,GAAW,EAAK,GAAI,GAAI,GAAI,CACrD,EAAW,GAAI,EAAW,GAAI,EAAW,GAAI,EAAG,IAGzD,KAAM,IAAI,OACN,qEAE8B,EAAmB,YAKpD,GAAM,IAAM,EAAG,CAAC,KAAA,KC5CvB,YACI,EAAoB,EAAsB,EAAgB,CAC5D,GAAM,GAAmB,CAAC,MAAA,EAAO,MAAA,EAAO,MAAA,GAExC,MAAO,GAAO,UAAU,GAAM,GAAI,GCJpC,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCUzB,YACI,EAAiB,EAA4B,EAAO,EAAG,EAAY,EAAC,CACtE,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAW,EAAgB,EAAS,UAAW,SAAU,SAEzD,EAAyB,CAAC,EAAG,EAAI,QAAS,GAC1C,EAAuB,CAAC,KAAA,EAAM,UAAA,GAEpC,MAAO,GAAO,UACV,GAAU,EAAgC,GAGzC,GAAM,IAAS,EAAG,CAAC,QAAA,KCvB1B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAK,EAAgB,EAAG,IAAK,WACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GAEzC,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCb3B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,gBAC7B,EAAK,EAAgB,EAAG,IAAK,gBACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA6B,CAAC,EAAG,EAAI,EAAG,GAE9C,MAAO,GAAO,UAAU,GAAc,GAGjC,GAAM,IAAe,EAAG,CAAC,cAAA,KCjBhC,YAAiC,EAAmB,CAGlD,GAAM,GAAqB,CAAC,MAFb,EAAgB,EAAO,QAAS,SAG/C,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCPxB,YAAqC,EAAe,CAGlD,GAAM,GAAyB,CAAC,EAFrB,EAAgB,EAAG,IAAK,aAInC,MAAO,GAAO,UAAU,GAAU,GAE7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCP5B,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCPzB,YAAkC,EAAe,CAE/C,GAAM,GAAsB,CAAC,EADlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCAzB,YAAsC,EAAiB,EAAQ,GAAG,CAGhE,GAAM,GAA0B,CAAC,EAFtB,EAAgB,EAAG,IAAK,cAG7B,EAAwB,CAAC,MAAA,GAE/B,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KCb7B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,QAC7B,EAAK,EAAgB,EAAG,IAAK,QACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAqB,CAAC,EAAG,EAAI,EAAG,GAEtC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCZxB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAK,EAAgB,EAAG,IAAK,aACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA0B,CAAC,EAAG,EAAI,EAAG,GAE3C,MAAO,GAAO,UAAU,GAAW,GAG9B,GAAM,IAAY,EAAG,CAAC,WAAA,KCrBvB,YAAmB,EAAe,EAAc,EAAW,CAC/D,GAAI,GAAO,EACT,KAAM,IAAI,OAAM,4CAGlB,GAAM,GAAuB,CAAC,MAAA,EAAO,KAAA,EAAM,IAAA,GAC3C,MAAO,GAAO,UAAU,GAAU,GAAI,GCIxC,YACI,EAAiB,EAAc,EAAG,EAAO,EAAG,EAAQ,EAAG,EAAO,GAAG,CACnE,GAAM,GAAK,EAAgB,EAAG,IAAK,8BAC9B,EACD,EAAG,OAAS,GAAK,EAAG,OAAS,EAC7B,IAAM;sBACU,EAAG,SAClB,EACI,GAAM,GACX,IAAM,2FAC6B,MAEvC,GAAI,GAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAG3D,GAAM,GAAoB,CAAC,EAAG,GAExB,EAAkB,CAAC,YAAA,EAAa,KAAA,EAAM,MAAA,EAAO,KAAA,GAG7C,EAAM,EAAO,UACH,GAAK,EACL,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEpD,EAIJ,GAAM,IAA6B,EAAG,CAAC,4BAAA,KCzC9C,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAGnC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCLvB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCazB,YAAc,EAAwB,CAEpC,MAAK,GACI,GAAW,GAAI,IAAM,8CACvB,CAAC,EAAsB,IAAkC,CAE9D,GAAM,GAAK,EAAgB,EAAG,IAAK,UAAW,qBACxC,EACD,GAAM,KAAQ,EAAgB,EAAI,KAAM,WAAa,KAC1D,MAAO,GAAO,KAAK,IAAK,CACtB,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,IAAM,EAAE,GAAK,CAAC,GAAK,GAC3D,MAAI,IAAO,MACJ,GACD,EAAM,MAAO,EAAI,MACjB,kFAGN,GAAW,GACJ,EAAM,MAkCnB,YAAe,EAAgC,CAE7C,MAAK,GACI,GAAW,GAAI,IAAM,+CACvB,CAAC,EAAgC,IAAoC,CACrE,EACD,MAAM,QAAQ,GACd,IAAM,oFAGV,GAAM,GACF,GAAqB,EAAM,OAAQ,WAAY,qBAC7C,EACD,GAAM,KAAQ,EAAgB,EAAI,KAAM,YAAc,KAC3D,MAAO,GAAO,KAAK,IAAK,CACtB,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,IAAM,EAAE,GAAG,GAAQ,EAAO,GAClE,MAAI,IAAO,MACJ,GACD,EAAM,MAAO,EAAI,MACjB,iGAGN,GAAW,GACJ,KA8Bb,YAA0D,EAAc,CAKtE,MAAK,GACI,GAAW,GAChB,IAAM,sDACH,CAAC,EAAM,IAAU,CACjB,EACD,YAAa,IACb,IAAM,uDACL,EACD,GAAM,MAAQ,YAAc,IAC5B,IAAM,4DACV,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,IAAM,EAAE,GAAI,CAAC,GAAI,GACzD,MAAA,IAAW,GACJ,CAAC,KAAM,EAAM,GAAS,MAAA,IAmCjC,YAAyC,EAA2B,CAKlE,MAAK,GACI,GAAW,GAChB,IAAM,uDACH,CAAC,EAAgB,IAAU,CAC3B,EACD,MAAM,QAAQ,IAAS,EAAK,MAAM,GAAO,YAAe,KACxD,IAAM,sEAEL,EACD,GAAM,MAAQ,YAAc,IAC5B,IAAM,gEACV,GAAM,GAAM,EAAO,UAAU,IAAM,EAAE,GAAG,GAAO,EAAM,GACrD,MAAI,IAAM,MACH,GACD,EAAI,MAAM,MAAO,EAAG,MACpB,yGAGN,GAAW,EAAI,OACR,GAkCX,YAAuB,EAAiB,EAAoB,CAErD,EACI,GAAW,GAChB,IAAM,uDACL,EACD,GAAW,MACP,MAAM,QAAQ,IAAY,EAAQ,MAAM,GAAK,YAAa,KAC9D,IACI,iFAGR,GAAM,GAAmB,GAAW,KACpC,GAAI,CAAC,EAAkB,CAErB,EAAU,GACV,OAAW,KAAW,GAAO,oBAC3B,EAAQ,KAAK,EAAO,oBAAoB,IAI5C,GAAM,GACF,EAAmB,EAAQ,OAAO,GAAY,CAAC,EAAS,WAAa,KAGnE,EAAmB,EAAQ,OACjC,EAAU,EAAQ,OAAO,GAAY,EAAS,WACzC,EACD,EAAQ,OAAS,EACjB,IAAM,gGAC+B,6BAGzC,GAAM,GAAmB,GACnB,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,EAAG,EAAS,KAAM,GAErD,EACD,EAAM,KAAK,GAAK,GAAK,MACrB,IAAM,gMAGL,EACD,EAAM,OAAS,EACf,IAAM,iFACiB,EAAM,eAEjC,GAAM,GAA6B,GACnC,MAAA,GAAQ,QAAQ,CAAC,EAAG,IAAK,CACnB,EAAM,IAAM,MACd,GAAW,EAAE,MAAQ,EAAM,MAG3B,GAAyB,MAG3B,EAAsB,QAAQ,GAAK,EAAW,EAAE,MAAQ,MAEnD,CAAC,MAAA,EAAO,MAAO,GA2CxB,YAAsC,EAAwB,CAE5D,MAAO,GAAO,WAAW,GAG3B,YAAoB,EAAe,CAEjC,GADyB,EAAM,OAAO,GAAK,GAAK,MAAM,OAC/B,EACrB,KAAM,IAAI,OACN;sECvVR,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAGnC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCPvB,YAAqC,EAAe,CAGlD,GAAM,GAAyB,CAAC,EAFrB,EAAgB,EAAG,IAAK,aAGnC,MAAO,GAAO,UAAU,GAAU,GAE7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCH5B,YAAuC,EAAe,CACpD,GAAM,GAAK,EAAgB,EAAG,IAAK,cAkBnC,MAbiB,IAAY,GAUpB,EAAC,MANM,GAAI,GAAS,GAAI,KAMhB,SAJG,GACH,EAAI,EAAI,GAAQ,GAAI,QAMrB,GAEX,GAAM,IAAa,EAAG,CAAC,YAAA,KCN9B,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAG7B,EAAkB,CAAC,iBAAkB,EAAM,SAAA,GAEjD,MAAO,GAAO,UACV,GAAK,EAAgC,GAGpC,GAAM,IAAM,EAAG,CAAC,KAAA,KClBvB,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAoB,CAAC,EAAG,EAAI,EAAG,GAErC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCFvB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CACtE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAG,QAAU,QACf,GAAK,GAAK,EAAI,UAGhB,GAAM,GAAoB,CAAC,EAAG,GACxB,EAAkB,CAAC,KAAA,EAAM,SAAA,GAE/B,MAAO,GAAO,UACV,GAAK,EAAgC,GAGpC,GAAM,IAAM,EAAG,CAAC,KAAA,KCjBvB,YAAuC,EAAsB,EAAO,GAAE,CACpE,GAAM,GAAU,EAAgB,EAAQ,SAAU,cAKlD,GAHI,IAAS,IACX,GAAO,EAAQ,KAAO,GAEpB,IAAS,EAAQ,KAAO,EAC1B,KAAM,OACF,gFACmB,EAAQ,qBAAqB,KAgCtD,MAjBiB,IAAW,CAAC,EAAgB,IAAsB,CACjE,GAAM,GAAW,GACX,EAAO,GAAI,EAAQ,EAAM,IACzB,EAAU,GAAI,EAAQ,GACtB,EACF,GAAI,GAAK,EAAS,WAAY,GAAI,GAAI,GAAI,GAAU,EAAM,KAC9D,MAAA,GAAK,CAAC,IAQC,CAAC,MAAA,EAAO,SANE,CAAC,EAAY,IAAmB,CAC/C,GAAM,CAAC,GAAS,EACV,EAAW,GACX,EAAU,GAAI,GACpB,MAAO,IAAI,EAAI,EAAI,GAAI,EAAI,EAAM,GAAW,QAKhC,GAUX,GAAM,IAAa,EAAG,CAAC,YAAA,KClFxB,YAA+B,EAAgB,EAAY,CAC/D,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EACjC,GAAI,EAAK,EAAK,OAAS,EAAI,KAAO,EAAO,EAAI,EAC3C,MAAO,GAGX,MAAO,GAGH,YACF,EAAqB,EAAqB,EAAc,CAC1D,GAAM,GAAO,EAAU,OAAS,EAAU,OACpC,EAAM,GACR,EAAS,EACT,EAAY,EACd,OAAS,GAAM,EAAG,EAAM,EAAM,IAC1B,EAAK,QAAQ,KAAS,GACxB,EAAI,KAAK,EAAU,MAEnB,EAAI,KAAK,EAAU,MAGvB,MAAO,GAGH,YACF,EAAkB,EAAc,CAClC,GAAM,GAAW,GACX,EAAO,EAAO,OACpB,OAAS,GAAM,EAAG,EAAM,EAAM,IACxB,EAAK,QAAQ,KAAS,IACxB,EAAS,KAAK,EAAO,IAGzB,GAAM,GAAc,EAAK,IAAI,GAAO,EAAO,IAC3C,MAAO,CAAC,EAAU,GAGd,YACF,EAAiB,EAAc,CACjC,GAAM,GAAiB,EAAK,IAAI,GAAK,GACrC,MAAO,IAAiB,EAAO,EAAgB,GAG3C,YACF,EAAa,EAAgB,EAAY,CACtC,EACD,GAAqB,EAAM,GAC3B,IAAM,GAAG,qDACO,cAAiB,YAQjC,YAA6B,EAAgB,EAAY,CAE7D,GAAI,GAAqB,EAAM,GAC7B,MAAO,MAET,GAAM,GAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAM,EAAE,EACtB,EAAK,QAAQ,KAAO,IACtB,EAAO,KAAK,GAGhB,MAAA,GAAK,QAAQ,GAAQ,EAAO,KAAK,IAC1B,EAIH,YAAiC,EAAc,CACnD,MAAO,GAAK,IAAI,CAAC,EAAM,IAAM,CAAC,EAAG,IAC5B,KAAK,CAAC,EAAG,IAAM,EAAE,GAAK,EAAE,IACxB,IAAI,GAAK,EAAE,IAGZ,YAA2B,EAAiB,EAAY,CAC5D,GAAM,GAAgB,GACtB,OAAS,GAAI,EAAO,EAAS,EAAI,EAAM,EAAE,EACvC,EAAI,KAAK,GAEX,MAAO,GC9CT,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CACtE,GAAM,GAAK,EAAgB,EAAG,IAAK,aAE7B,EAAO,GAAe,EAAM,EAAG,OAC/B,EAAO,GAAI,EAAI,EAAM,IACrB,EAAI,GAAI,EAAI,GACZ,EAAI,GAAI,GACR,EAAI,GAAI,EAAG,GACX,EAAI,GAAI,GACR,EAAM,GAAI,EAAQ,EAAM,EAAE,OAAQ,GAExC,GAAI,EAAU,CACZ,GAAM,GAAW,GAAqB,EAAI,MAAO,GACjD,MAAO,GAAQ,EAAK,GAEtB,MAAO,GAGF,GAAM,IAAY,EAAG,CAAC,WAAA,KCvC7B,YACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,aAAc,QAC3C,EAAK,EAAgB,EAAG,IAAK,aAAc,QACjD,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA2B,CAAC,EAAG,EAAI,EAAG,GAE5C,MAAO,GAAO,UAAU,GAAY,GAG/B,GAAM,IAAa,EAAG,CAAC,YAAA,KCd9B,YAAuC,EAAe,CAEpD,GAAM,GAA2B,CAAC,EADvB,EAAgB,EAAG,IAAK,aAAc,SAEjD,MAAO,GAAO,UAAU,GAAY,GAG/B,GAAM,IAAa,EAAG,CAAC,YAAA,KCJ9B,YACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,YAAa,QAC1C,EAAK,EAAgB,EAAG,IAAK,YAAa,QAChD,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA0B,CAAC,EAAG,EAAI,EAAG,GAC3C,MAAO,GAAO,UAAU,GAAW,GAE9B,GAAM,IAAY,EAAG,CAAC,WAAA,KCP7B,YACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,aAAc,QAC3C,EAAK,EAAgB,EAAG,IAAK,aAAc,QACjD,MAAA,IAA2B,EAAG,MAAO,EAAG,OAGjC,GAAW,GAAU,EAAG,GAAI,GAAW,GAAW,EAAG,KAGvD,GAAM,IAAa,EAAG,CAAC,YAAA,KCG9B,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAY,EAEd,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACS,GAA+B,EAAS,GAClD,IAAM,wEACa,oBAA0B,MAC7C,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,wEACiB,iBAA+B,MAG5D,GAAM,GAAwB,CAAC,EAAG,GAE5B,EAAsB,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAGjD,EAAM,EAAO,UACH,GAAS,EACT,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAU,EAAG,CAAC,SAAA,KClC3B,YACI,EAAiB,EAA8C,CAAC,EAAG,EAAG,GACtE,EAA0C,EAC1C,EACA,EAA8B,QAAO,CACvC,GAAM,GAAK,EAAgB,EAAG,IAAK,aAE/B,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGnE,EACD,EAAI,OAAS,EACb,IAAM,qDAAqD,EAAI,SAC9D,EACD,IAAe,QACf,IAAM,gFACuB,KAC7B,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,0EACiB,iBAA+B,MAG5D,GAAM,GAA0B,CAAC,EAAG,GAE9B,EACe,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAG3D,EAAM,EAAO,UACH,GAAW,EACX,GAEhB,MAAI,GACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAIhE,EAGF,GAAM,IAAY,EAAG,CAAC,WAAA,KCnD7B,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAsB,GAAK,CAG7B,GAAM,GAAkC,CAAC,EAF9B,EAAgB,EAAG,IAAK,sBAG7B,EACuB,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,oBAAA,GAGlD,EAAS,EAAO,UACH,GAAmB,EACnB,GAEnB,MAAO,CAAC,OAAQ,EAAO,GAAI,QAAS,EAAO,IAGtC,GAAM,IAAoB,EAAG,CAAC,mBAAA,KCtBrC,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAK,EAAgB,EAAG,IAAK,WACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE1B,EAAG,QAAU,QACf,GAAK,GAAK,EAAI,SACd,EAAK,GAAK,EAAI,UAEhB,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GAEzC,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCjB3B,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAG7B,EAAmB,CAAC,KAAA,EAAM,SAAA,GAEhC,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAO,EAAG,CAAC,MAAA,KCZxB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAG7B,EAAkB,CAAC,KAAA,EAAM,SAAA,GAG/B,MAAO,GAAO,UACH,GAAK,EACL,GAGN,GAAM,IAAM,EAAG,CAAC,KAAA,KCZvB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAK,EAAgB,EAAG,IAAK,WACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE1B,EAAG,QAAU,QACf,GAAK,GAAK,EAAI,SACd,EAAK,GAAK,EAAI,UAGhB,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GAEzC,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCrB3B,YACI,EAAiB,EACjB,EAA2B,CACxB,EACD,IAAS,WAAa,IAAS,YAC/B,IAAM,+DACK,MAEf,GAAM,GAAK,EAAgB,EAAG,IAAK,aACnC,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OACN,kEAGD,EACD,EAAS,SAAW,EAAG,KACvB,IAAM,wCAAwC,EAAG,aACtC,EAAS,WACxB,GAAM,GAAc,IAAS,UAAY,EAAI,EAC7C,OAAS,GAAI,EAAG,EAAI,EAAG,KAAM,IACtB,EACD,EAAS,GAAG,SAAW,EACvB,IAAM,yDACL,EACD,EAAS,GAAG,IAAM,GAAK,EAAS,GAAG,IAAM,EAAG,MAAM,GAAK,GACnD,EAAS,GAAG,IAAM,GAAK,EAAS,GAAG,IAAM,EAAG,MAAM,GAAK,EAC3D,IAAM,wBAAwB,wCACpB,EAAG,MAAM,GAAK,uCACX,EAAG,SAGtB,GAAM,GAAwB,CAAC,SAAA,EAAU,KAAA,GACnC,EAA0B,CAAC,EAAG,GACpC,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KCnC7B,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAoB,CAAC,EAAG,EAAI,EAAG,GAErC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KC9BvB,YAAmC,EAAe,CAChD,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAQ,GACd,MAAO,GAAO,UAAU,SAAU,CAAC,EAAG,GAAK,GAGtC,GAAM,IAAS,EAAG,CAAC,QAAA,KCG1B,YACI,EAAsB,EAAwB,KAC9C,EAAW,GAAK,CAClB,EAAI,EAAgB,EAAG,IAAK,WAC5B,GAAM,GAAO,GAAe,EAAM,EAAE,OAC9B,EAAQ,GAAK,EAAG,EAAM,GACxB,EAAgB,EAAM,MACrB,GACH,GAAgB,GAAqB,EAAM,MAAO,IAEpD,GAAM,GACF,GAAO,GAAI,GAAK,EAAG,WAAY,EAAQ,EAAO,KAC5C,EAAW,GAAK,EAAY,EAAM,GACxC,MAAO,CAAC,KAAM,EAAO,SAAA,GAGhB,GAAM,IAAU,EAAG,CAAC,SAAA,KChB3B,YACI,EAA2B,EAC3B,EACA,EAA6B,CAC/B,GAAM,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,EAAK,GAAqB,EAAG,IAAK,gBAClC,EAAK,GAAqB,EAAG,IAAK,gBAEpC,EAAQ,EACN,EAAY,GAClB,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CACzC,GAAM,GAAS,EAAU,GAAG,EAAO,EAAG,GAAI,EAAG,IAC7C,EAAU,KAAK,EAAO,IACtB,EAAU,KAAK,EAAO,IACtB,EAAQ,EAAO,GAEjB,GAAM,GAAmB,GACnB,EAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,GAAK,EACzC,EAAK,KAAK,EAAU,IACpB,EAAK,KAAK,EAAU,EAAI,IAE1B,MAAO,CAAC,EAAM,GAET,GAAM,IAAe,EAAG,CAAC,cAAA,KCpBhC,YACI,EAAsC,EAAoB,EAC1D,EAAa,GAAK,CACpB,GAAM,GAAU,EAAgB,EAAQ,SAAU,eAC5C,EAAc,EAAQ,KACtB,EAAW,EAAQ,KACzB,GAAI,EAAc,EAChB,KAAM,IAAI,OACN,+DACG,MAET,GAAI,EAAW,EACb,KAAM,IAAI,OAAM,gDAAgD,KAIlE,EAAO,GAAQ,KAAK,SAMpB,GAAM,GAA4B,CAAC,OAF/B,IAAa,EAAI,EAAQ,EAAS,CAAC,EAAG,KAAO,GAG3C,EAA0B,CAAC,WAAA,EAAY,KAAA,EAAM,WAAA,GAG7C,EAAM,EAAO,UACH,GAAa,EACb,GAGhB,MAAO,KAAa,EAAI,EAAQ,EAAK,CAAC,EAAI,OAAqB,EAG1D,GAAM,IAAc,EAAG,CAAC,aAAA,KCzC/B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,YAC7B,EAAK,EAAgB,EAAG,IAAK,YACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAyB,CAAC,EAAG,EAAI,EAAG,GAE1C,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCjBtB,YACF,EAAoB,EAAkB,UAAS,CACjD,GAAI,IAAU,YAAa,CACzB,GAAM,GAAO,GAAM,EAAO,WACpB,EAAO,GAAM,EAAO,WAC1B,MAAO,IAAQ,EAAM,GAEvB,GAAM,GAAS,GAAoB,GAAc,GAAQ,GACzD,MAAO,GAAO,WAAW,EAAQ,EAAO,GCPpC,YACF,EAAoB,EAAkB,UAAS,CACjD,GAAI,IAAU,YAAa,CACzB,GAAM,GAAO,GAAK,EAAO,WACnB,EAAO,GAAM,EAAO,WAC1B,MAAO,IAAQ,EAAM,GAEvB,GAAM,GAAS,GAAmB,GAAc,GAAQ,GACxD,MAAO,GAAO,WAAW,EAAQ,EAAO,GCR1C,YAAqC,EAAe,CAGlD,GAAM,GAAyB,CAAC,EAFrB,EAAgB,EAAG,IAAK,aAGnC,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCN5B,YACI,EAAyB,EAAuB,CAClD,GAAM,GAAM,EAAgB,EAAI,KAAM,gBAChC,EAAM,EAAgB,EAAI,KAAM,gBAEjC,EACD,EAAI,OAAS,GAAK,EAAI,OAAS,EAC/B,IAAM,+DACC,EAAI,YAAY,EAAI,SAE/B,GAAM,GAAO,EAAQ,EAAK,CAAC,GAAI,IACzB,EAAO,EAAQ,EAAK,CAAC,EAAG,KAC9B,MAAO,IAAO,EAAM,GAGf,GAAM,IAAe,EAAG,CAAC,cAAA,KCFhC,YACI,EAAiB,EAAmC,EAAgB,EAAC,CACvE,GAAM,GAAK,EAAgB,EAAG,IAAK,OACnC,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAGlB,GAAM,GAAoB,CAAC,SAAA,EAAU,cAAA,GAC/B,EAAsB,CAAC,EAAG,GAChC,MAAO,GAAO,UACV,GAAO,EACP,GAGC,GAAM,IAAM,EAAG,CAAC,KAAA,KCzCvB,YACI,EAAwB,EACxB,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,EACpB,IAAM,oDACH,GAAI,EAAG,CAAC,GAAW,GAGrB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCTzB,YACI,EAAwB,EACxB,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,GAAK,EAAS,GAAG,SAAW,GAC5C,EAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,GAAI,EAAG,EAAU,GAGnB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCVzB,YACI,EACA,EACA,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,GAAK,EAAS,GAAG,SAAW,GAC5C,EAAS,GAAG,SAAW,GAAK,EAAS,GAAG,SAAW,EACvD,IAAM,yDACH,GAAI,EAAG,EAAU,GAGnB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCXzB,YACI,EACA,EAIA,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,GAAK,EAAS,GAAG,SAAW,GAC5C,EAAS,GAAG,SAAW,GAAK,EAAS,GAAG,SAAW,GACnD,EAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,GAAI,EAAG,EAAU,GAGnB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCoCzB,YACI,EAAiB,EAAsB,EAAoB,CAC7D,GAAM,GAAK,EAAgB,EAAG,IAAK,kBAE9B,EACD,EAAG,MAAQ,EAAI,EAAW,OAC1B,IAAM,cAAc,EAAG,sCACnB,EAAW,UAEd,EACD,EAAS,SAAW,EAAW,OAC/B,IAAM,qBACF,EAAS,wCAAwC,EAAW,UAE/D,EACD,EAAG,MAAM,OACL,CAAC,EAAG,EAAG,IACD,EAAI,GAAK,GAAK,EAAW,OACpB,GACD,GAAI,EAAS,EAAI,GAAG,GAAK,EAAS,EAAI,GAAG,IACtC,EAAW,EAAI,IACnB,EAEA,EAET,IACJ,IAAM,4BAA4B,EAAG,MAAM,MAAM,oBAC7C,EAAS,+CACT,EAAW,cAEnB,GAAM,GAA+B,CAAC,EAAG,GACnC,EAA6B,CAAC,WAAA,EAAY,SAAA,GAEhD,MAAO,GAAO,UACV,GAAgB,EAChB,GAGC,GAAM,IAAiB,EAAG,CAAC,gBAAA,KC1DlC,YACI,EAAqB,EACrB,EAA0B,EAC1B,EAAqC,EAAiC,CACpE,GAAa,MACf,GAAY,CAAC,EAAG,IAEd,GAAW,MACb,GAAU,GAER,IAAQ,GACV,GAAM,SAGR,GAAM,GAAK,EAAgB,EAAO,IAAK,WACnC,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACS,GAA+B,EAAS,GAClD,IAAM,qEACa,oBAA0B,MAEjD,GAAM,GAAqB,GACvB,EAAI,MAAO,EAAa,EAAS,EAAW,GAC1C,EACF,CAAC,EAAS,eAAgB,EAAS,eAOnC,EACA,IAAQ,OACV,EAAc,GACV,CAAC,EAAS,aAAc,EAAS,aAAc,GAEnD,EAAc,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAG7B,GAAM,GAAgB,EAAS,KAAO,GAAK,EAAS,KAAO,EACrD,CAAC,EAAiB,GAAiB,GACrC,CAAC,EAAS,SAAU,EAAS,SAAU,EAAU,GAC/C,EAAe,EAAgB,EAAM,QACrC,EACF,EAAgB,EAAM,GAAe,EAAK,EAAU,GAKlD,EAHY,KAAgB,MAC9B,IAAM,GAAQ,EAAY,EAAa,EAAS,GAChD,IAAM,GAAQ,EAAY,EAAa,EAAS,MAG9C,EAAM,EAAgB,EAAI,GAAe,EAAG,EAAU,GAE5D,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,EAMT,YACI,EAA8B,EAC9B,EAAuB,CACzB,GAAM,GAAW,EAAY,IAAI,GAAK,EAAE,IAClC,EAAa,EAAY,IAAI,GAAK,EAAE,IACpC,EAAiB,EAAW,OAAO,EAAU,GAC7C,EAAc,EAAW,IAAI,CAAC,EAAG,IAAO,GAAI,EAAe,GAAK,GAAK,GACrE,EAAS,EAAW,IAAI,CAAC,EAAG,IAAM,EAAI,EAAY,IAClD,EAAW,EAAW,IAAI,CAAC,EAAG,IAAM,CAAC,EAAS,GAAI,EAAO,KACzD,EAAQ,EAAW,IAAI,CAAC,EAAG,IAAM,CAAC,EAAG,EAAY,KACvD,MAAO,CAAC,EAAU,GAMpB,YACI,EAA+B,EAA0B,CAM3D,GAAM,GAHqB,EAAY,IAAI,CAAC,EAAG,IACtC,EAAK,GAAI,GAAM,GAAS,GAAK,IAEG,IAAI,GAAK,EAAI,GAIhD,EAAgB,EAAc,IAAI,GAAK,KAAK,MAAM,EAAI,IACtD,EAAc,EAAc,IAAI,CAAC,EAAG,IAAM,EAAI,EAAc,IAClE,MAAO,GAAc,IAAI,CAAC,EAAG,IACpB,CAAC,EAAc,GAAI,EAAY,KAInC,GAAM,IAAO,EAAG,CAAC,MAAA,KC1GxB,YACI,EAAyB,EAAsB,CACjD,GAAI,GAAQ,EAAgB,EAAM,OAAQ,OACtC,EAAO,EAAgB,EAAK,MAAO,OACvC,CAAC,EAAO,GAAQ,GAAe,EAAO,GAEtC,GAAM,GAAoB,CAAC,EAAG,EAAO,EAAG,GAExC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCvBvB,YAAkC,EAAiB,EAAmB,CACpE,GAAM,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAS,EAAgB,EAAO,QAAS,SAEzC,EAAsB,CAAC,EAAG,EAAI,MAAO,GAC3C,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCQzB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CACtE,GAAI,GAAK,EAAgB,EAAG,IAAK,QAE7B,EAAG,QAAU,QAEf,GAAK,GAAK,EAAI,UAGhB,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,KAAA,EAAM,SAAA,GAEhC,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAO,EAAG,CAAC,MAAA,KCzCxB,YACI,EAAoB,EACpB,EAAgB,CAClB,GAAM,GAAO,GAAc,GACvB,EAAS,KACb,GAAI,GAAS,MAAQ,IAAU,UAC7B,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,OAExB,MAAM,IAAI,OAAM,qBAAqB,KAEvC,OAAS,GAAI,EAAG,EAAI,EAAM,IACxB,EAAO,GAAK,IAEd,MAAO,GAAO,WAAW,EAAQ,EAAO,GAGnC,GAAM,IAAO,EAAG,CAAC,MAAA,KCpCxB,GAA4B,GAAA,MAwBtB,GAAA,KAAkB,CAUtB,YACI,EAAc,EAAsB,EACpC,EAAqB,EAAa,CACpC,KAAK,KAAO,EACZ,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,QAAU,IACf,KAAK,UAAY,EACb,KAAK,WACP,MAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,EACvC,KAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,GAEzC,GAAM,GAAY,GAAc,KAAK,SACrC,KAAK,OAAoB,GAAA,KAAK,EAAU,YAInC,WAAS,CACd,GAAI,CAAC,MAAM,KAAK,SAAU,CACxB,GAAM,GAAQ,KAAK,QACnB,MAAA,MAAK,QAAU,IACR,EAGT,GAAI,GAAiB,EACjB,EAAU,GACd,KAAO,CAAC,GAAS,CACf,GAAI,GAAY,EAAY,EAC5B,EACE,GAAK,EAAI,KAAK,SAAW,EACzB,EAAK,EAAI,KAAK,SAAW,EACzB,EAAI,EAAK,EAAK,EAAK,QACZ,GAAK,GAAK,IAAM,GAEzB,GAAM,GAAM,KAAK,KAAK,GAAO,KAAK,IAAI,GAAK,GAC3C,EAAU,KAAK,KAAO,KAAK,OAAS,EAAK,EACzC,EAAU,KAAK,KAAO,KAAK,OAAS,EAAK,EAErC,EAAC,KAAK,WAAa,KAAK,iBAAiB,KAC3C,GAAU,IAId,MAAI,EAAC,KAAK,WAAa,KAAK,iBAAiB,KAC3C,MAAK,QAAU,KAAK,aAAa,IAE5B,KAAK,aAAa,GAInB,aAAa,EAAa,CAChC,MAAI,MAAK,OAAS,MAAQ,KAAK,QAAU,UAChC,EAEF,KAAK,MAAM,GAIZ,iBAAiB,EAAa,CACpC,MAAO,IAAS,KAAK,OAAS,GAAS,KAAK,QAM1C,GAAA,KAAgB,CASpB,YACI,EAAe,EAAc,EAC7B,EAAa,CACf,KAAK,MAAQ,EACb,KAAK,KAAO,EAAI,EAChB,KAAK,MAAQ,EAEb,GAAM,GAAY,GAAc,KAAK,SACrC,KAAK,MAAmB,GAAA,KAAK,EAAU,YACvC,KAAK,MAAQ,GAAI,IAAY,EAAG,EAAG,EAAO,GAAO,KAAK,SAElD,EAAQ,EACV,KAAK,EAAI,EAAS,EAAI,EAEtB,KAAK,EAAI,EAAS,EAAI,EAExB,KAAK,EAAI,EAAI,KAAK,KAAK,EAAI,KAAK,GAI3B,WAAS,CACd,GAAI,GAAY,EAAY,EAAY,EAAW,EAAW,EAC9D,OAAa,CACX,EACE,GAAI,KAAK,MAAM,YACf,EAAI,EAAK,KAAK,EAAI,QACX,GAAK,GAMd,GALA,GAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAK,KAAQ,EAAK,EACvB,EAAM,GAAM,EAAO,KAAK,EAAK,GAAI,EAAI,KAAK,IAAI,IAC9C,EAAI,KAAK,QACL,EAAI,GAAM,KAAK,IAAI,GAAK,EAC1B,MAGJ,MAAA,GAAK,EAAI,KAAK,KAAQ,KAAK,EAAI,EAC3B,KAAK,MAAQ,GACf,IAAK,KAAK,IAAI,KAAK,QAAS,EAAI,KAAK,QAEhC,KAAK,aAAa,GAGnB,aAAa,EAAa,CAChC,MAAI,MAAK,QAAU,UACV,EAEF,KAAK,MAAM,KAIhB,GAAA,KAAoB,CAMxB,YACI,EAAM,EAAG,EAAM,EAAG,EAClB,EAAoB,CAWtB,GAQM,KAAA,eAAiB,IACpB,KAAK,OAAS,MAAQ,KAAK,QAAU,UAnBxC,KAAK,IAAM,EACX,KAAK,MAAQ,EAAM,EACnB,KAAK,MAAQ,EACT,GAAQ,MACV,GAAO,KAAK,UAEV,MAAO,IAAS,UAClB,GAAO,EAAK,YAGV,CAAC,KAAK,kBAAoB,KAAK,OAAS,EAC1C,KAAM,IAAI,OACN,0BAA0B,OAAS,iCAEzC,KAAK,OAAoB,GAAA,KAAK,GAOxB,aAAa,EAAa,CAChC,MAAI,MAAK,iBACA,EAEF,KAAK,MAAM,GAGpB,WAAS,CACP,MAAO,MAAK,aAAa,KAAK,IAAM,KAAK,MAAQ,KAAK,YC9K1D,YACI,EAAoB,EAAe,EAAO,EAC1C,EAA2B,UAAW,EAAa,CAOrD,GANI,GAAQ,MACV,GAAO,GAEL,GAAS,MACX,GAAQ,WAEN,IAAU,WAAa,IAAU,QACnC,KAAM,IAAI,OAAM,yBAAyB,KAE3C,GAAM,GAAS,GAAI,IAAU,EAAO,EAAM,EAAO,GAC3C,EAAM,GAAO,EAAO,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAO,YAEzB,MAAO,GAAI,WAGN,GAAM,IAAc,EAAG,CAAC,aAAA,KCrB/B,YACI,EAAoB,EAAO,EAAG,EAAS,EAAG,EAC1C,EAAa,CACf,GAAI,GAAS,MAAS,IAAuB,OAC3C,KAAM,IAAI,OAAM,yBAAyB,KAE3C,GAAM,GACF,GAAI,IAAY,EAAM,EAAQ,EAAO,GAAuB,GAC1D,EAAM,GAAO,EAAO,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAU,YAE5B,MAAO,GAAI,WAGN,GAAM,IAAe,EAAG,CAAC,cAAA,KCVhC,YACI,EAAoB,EAAS,EAAG,EAAS,EAAG,EAAkB,UAC9D,EAAoB,CACtB,GAAM,GAAM,GAAO,EAAO,GACpB,EAAS,GAAI,IAAc,EAAQ,EAAQ,KAAM,GACvD,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAO,YAEzB,MAAO,GAAI,WAGN,GAAM,IAAgB,EAAG,CAAC,eAAA,KCd3B,YACF,EAAe,EAAc,EAAO,EACpC,EAA2B,UAAS,CACtC,GAAI,IAAS,EACX,KAAM,IAAI,OAAM,8BAGlB,GAAM,GAAoB,CAAC,MAAA,EAAO,KAAA,EAAM,KAAA,EAAM,MAAA,GAE9C,MAAO,GAAO,UAAU,GAAO,GAAiB,GCVlD,YAAiC,EAAmB,CAGlD,GAAM,GAAqB,CAAC,MAFb,EAAgB,EAAO,QAAS,SAG/C,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCTxB,YAAuC,EAAe,CAGpD,GAAM,GAA2B,CAAC,EAFvB,EAAgB,EAAG,IAAK,eAGnC,MAAO,GAAO,UAAU,GAAY,GAE/B,GAAM,IAAa,EAAG,CAAC,YAAA,KCL9B,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCRxB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCWzB,YACI,EAAiB,EAAsB,CAGzC,GAAM,GAAwB,CAAC,EAFpB,EAAgB,EAAG,IAAK,YAG7B,EAAsB,CAAC,KAAM,GAEnC,MAAO,GAAO,UACV,GAAS,EAAgC,GAGxC,GAAM,IAAU,EAAG,CAAC,SAAA,KCxC3B,YAAoB,EAAsB,CACxC,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCN7B,YAAoB,EAAwB,EAAsB,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCR7B,YAAoB,EAAwB,EAAsB,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCR7B,YAAoB,EAAwB,EAAsB,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCA7B,YAAkC,EAAe,CAE/C,GAAM,GAAsB,CAAC,EADlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCPzB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCTnB,YACF,EAAyC,EAAgB,CAC3D,GAAM,IAAa,IAAU,IAAU,UAAa,MAAM,QAAQ,KAC9D,IAAU,YACZ,KAAM,IAAI,OACN,kFAGN,GAAI,IAAU,UAAY,GAAa,IACnC,CAAE,aAAiB,aACrB,KAAM,IAAI,OACN,6EAKN,MAAO,IAAW,EAFM,GACQ,GACe,GCbjD,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCuBxB,YACI,EAAiB,EACjB,EAAsC,EACtC,EAAqB,EAAoC,CAAC,EAAG,GAC7D,EAA4B,OAAM,CACpC,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EACF,EAAgB,EAAiB,kBAAmB,mBAClD,EACF,EAAgB,EAAiB,kBAAmB,mBAEpD,EAAM,EACN,EAAe,GAMnB,GALI,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGvD,IAAe,OACjB,KAAM,IAAI,OACN,sFAID,EACD,EAAI,OAAS,EACb,IAAM,gEACM,EAAI,SACf,EACD,EAAiB,OAAS,EAC1B,IAAM,2EACU,EAAiB,SAChC,EACD,EAAiB,OAAS,EAC1B,IAAM,2EACU,EAAiB,SAChC,EACD,EAAiB,MAAM,KAAO,EAC9B,IACI,yFACuB,EAAiB,MAAM,OACjD,EACD,EAAiB,MAAM,KAAO,EAC9B,IAAM,yFAC2B,EAAiB,MAAM,OAE5D,GAAM,GAAa,EAAiB,MAAM,GACpC,EAAoB,EAAiB,MAAM,GAC5C,EACD,EAAiB,MAAM,KAAO,EAAa,EAC3C,IACI,6EACW,EAAa,cACb,EAAiB,MAAM,OAE1C,GAAM,GAAY,GACd,EAAK,EAAkB,EAAS,EAAK,EAAY,GAE/C,EACF,GAAO,EAAW,EAFE,EAEiC,QAAS,GAElE,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAkB,EAAG,CAAC,iBAAA,KCxFnC,kBACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAK,EAAgB,EAAG,IAAK,aAE9B,EACD,EAAG,QAAU,EAAG,MAChB,IAAM,kDACF,EAAG,iBAAiB,EAAG,WAE1B,EACD,EAAG,OAAS,EAAG,IAAM,qCAAqC,EAAG,WAE5D,EACD,EAAG,OAAS,EAAG,IAAM,qCAAqC,EAAG,WAEjE,GAAM,GAAQ,KAAM,GAAG,OACjB,EAAQ,KAAM,GAAG,OACjB,EAAO,GAAI,KAAI,GAEjB,EAAa,EACjB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAC3B,EAAK,IAAI,EAAM,KAClB,IAIJ,GAAM,GAAS,GAAI,IAAa,CAAC,GAAa,EAAG,OAC3C,EAAU,GAAI,IAAa,CAAC,GAAa,SAC/C,OAAS,GAAI,EAAG,EAAI,EAAG,EAAI,EAAM,OAAQ,IAClC,EAAK,IAAI,EAAM,KAClB,GAAO,OAAO,GAAK,EAAM,GACzB,EAAQ,OAAO,GAAK,EACpB,KAGJ,MAAO,CAAC,EAAO,WAAY,EAAQ,YAE9B,GAAM,IAAiB,GClD9B,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAEnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCLxB,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCPvB,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCfxB,YACI,EAAwB,EAAe,EAAY,CACrD,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,CAAC,GAAQ,CAAC,IAEtB,GAAM,IAAU,EAAG,CAAC,SAAA,KCT3B,YACI,EAAwB,EACxB,EAAsB,CACxB,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,EAAO,GAEnB,GAAM,IAAU,EAAG,CAAC,SAAA,KCV3B,YACI,EAAwB,EACxB,EAA8B,CAChC,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,EAAO,GAEnB,GAAM,IAAU,EAAG,CAAC,SAAA,KCV3B,YACI,EAAwB,EACxB,EAAsC,CACxC,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,EAAO,GAEnB,GAAM,IAAU,EAAG,CAAC,SAAA,KCS3B,YAAoC,EAAsB,EAAM,GAAE,CAChE,GAAM,GAAU,EAAgB,EAAQ,SAAU,UAAW,WAK7D,GAHI,IAAQ,IACV,GAAM,EAAQ,KAAO,GAEnB,IAAQ,EAAQ,KAAO,EACzB,KAAM,OACF,4EACmB,EAAQ,oBAAoB,KAGrD,GAAM,GAAwB,CAAC,OAAQ,GACjC,EAAsB,CAAC,IAAA,GAE7B,MAAO,GAAO,UACV,GAAS,EAAgC,GAGxC,GAAM,IAAU,EAAG,CAAC,SAAA,KC1B3B,YAAc,EAAa,CACzB,EACI,EAAM,QAAU,YAChB,IAAM,6DACS,EAAM,UAEzB,GAAM,GAAoB,CAAC,MAAA,GAE3B,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCXvB,YAAe,EAAa,CAC1B,EACI,EAAM,QAAU,YAChB,IAAM,8DACS,EAAM,UAEzB,GAAM,GAAqB,CAAC,MAAA,GAE5B,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCJxB,YAAgB,EAAa,CAC3B,GAAM,GAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACtD,EAAQ,EAAM,KAAO,EACvB,EACJ,GAAI,GAAsB,EAAG,CAC3B,GAAM,GAAe,EAAQ,EAAO,CAAC,EAAO,IAC5C,EAAM,GAAK,OACN,CAGL,GAAM,GAAc,CAAC,EAAO,EAAK,GAAqB,IAChD,EAAY,EAAQ,GAAK,GAAQ,CAAC,EAAO,IACzC,EAAY,EAAQ,GAAK,GAAQ,CAAC,EAAO,IAEzC,EACF,GAAQ,GAAM,EAAW,CAAC,EAAG,GAAI,CAAC,EAAO,EAAqB,IAAK,GACjE,EAA0B,EAC5B,GAAQ,GAAM,EAAW,CAAC,EAAG,GAAI,CAAC,EAAO,EAAqB,IAAK,GACnE,GAAO,KAEL,EAAI,GAAO,CAAC,EAAW,GAAgB,GACvC,EAAI,GAAO,CAAC,EAAW,GAAgB,GACvC,EACF,EAAQ,GAAQ,EAAG,GAAI,CAAC,EAAY,GAAI,EAAY,KACxD,EAAM,GAAK,GAIb,GAFA,EAAM,GAAK,GAEP,EAAM,OAAS,GAAK,EAAM,MAAM,KAAO,EAAG,CAC5C,GAAM,GAAO,EACP,EAAQ,EAAM,MAAM,GAC1B,EAAM,EAAQ,EAAK,CAAC,EAAO,EAAI,MAAM,GAAK,EAAO,EAAI,MAAM,KAC3D,EAAK,UAEP,MAAO,GAGF,GAAM,IAAQ,EAAG,CAAC,OAAA,KCxBzB,YACI,EAAsB,EAAkC,EAAO,EAAC,CAGlE,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,UAG7B,EAAoB,CAAC,gBAAA,EAAiB,KAAA,GAE5C,MAAO,GAAO,UACH,GAAQ,EACR,GAGN,GAAM,IAAQ,EAAG,CAAC,OAAA,KC1BzB,YAAe,EAAe,EAAkB,CAC9C,EACI,EAAM,QAAU,UAChB,IAAM,mDAAmD,EAAM,SAEnE,GAAI,GAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACpD,EAAQ,EAAM,KAAO,EAEvB,EACJ,GAAI,GAAa,MAAQ,EAAY,EAAoB,CAEvD,GAAM,GAAQ,EAAM,MAAM,IAAI,GAAK,GAC7B,EAAO,EAAM,MAAM,IAAI,GAAK,GAClC,EAAK,EAAM,MAAM,OAAS,GAAK,EAC/B,EAAgB,GAAM,EAAO,EAAO,GACpC,EAAqB,UACZ,GAAa,MAAQ,EAAY,EAAoB,CAE9D,GAAM,GAAa,EAAM,MAAM,IAAI,GAAK,GACxC,EAAW,EAAM,MAAM,OAAS,GAAK,EAAY,EACjD,EAAgB,GAAO,CAAC,EAAO,GAAM,IAAc,EAAM,MAAM,OAAS,GACxE,EAAqB,MAErB,GAAgB,EAIlB,GAAM,GAAa,GAAU,GACvB,EACF,EAAQ,GAAQ,EAAe,GAAa,CAAC,EAAO,IAElD,EAAM,GAAI,GAGV,EAAO,KAAK,MAAM,EAAqB,GAAK,EAC5C,EAAa,GAAK,GAClB,EAAa,GAAK,GAClB,EAAuB,GACzB,EAAY,CAAC,EAAM,EAAqB,GACxC,EAAW,MAAM,OAAS,GACxB,EAAuB,GACzB,EAAY,CAAC,EAAM,EAAqB,GACxC,EAAW,MAAM,OAAS,GAExB,EAAc,EAAc,MAAM,QACxC,MAAA,GAAY,EAAc,MAAM,OAAS,GAAK,EAEvC,EACH,GAAQ,EAAqB,GAAI,EAAqB,IAAK,GAG1D,GAAM,IAAO,EAAG,CAAC,MAAA,KC5DxB,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCOxB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,qBAC7B,EAAK,EAAgB,EAAG,IAAK,qBACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAkC,CAAC,EAAG,EAAI,EAAG,GAC7C,EAAQ,GAEd,MAAO,GAAO,UACV,GAAmB,EAAqC,GAGvD,GAAM,IAAoB,EAAG,CAAC,mBAAA,KC3BrC,YAAoC,EAAsB,EAAe,CACvE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAO,GAAQ,EAAI,GAAa,EAAG,MAAO,GAAM,UAG3C,GAAM,IAAU,EAAG,CAAC,SAAA,KCF3B,YACI,EAA8B,EAAO,EAAC,CACxC,GAAM,GACF,GAAqB,EAAS,UAAW,QAAS,qBAEjD,EACD,EAAS,QAAU,EAAG,IAAM,wCAE5B,EAAS,OAAS,GACf,EACD,GAAQ,EAAS,GAAG,KAAM,IAAM,sCAGtC,GAAM,GAAqB,EACrB,EAAmB,CAAC,KAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAQ,EAAG,CAAC,OAAA,KCvBzB,YAAiC,EAAiB,EAAQ,EAAG,CAG3D,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAG7B,EAAmB,CAAC,MAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAErC,GAAM,IAAO,EAAG,CAAC,MAAA,KCWxB,YACI,EAAsB,EAAiB,EAAe,EACtD,EAAY,EAAG,EAAU,EAAG,EAAe,EAAG,EAAc,EAC5D,EAAiB,EAAC,CAGpB,GAAM,GAA6B,CAAC,EAFzB,EAAgB,EAAG,IAAK,iBAG7B,EAA2B,CAC/B,MAAA,EACA,IAAA,EACA,QAAA,EACA,UAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,GAGF,MAAO,GAAO,UACV,GAAc,EACd,GAGC,GAAM,IAAe,EAAG,CAAC,cAAA,KC7ChC,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCLjB,YAAmB,EAAsB,EAAgB,CAC7D,GAAc,GACd,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,EAC3B,KAAM,IAAI,OAAM,sDAGlB,MAAO,IAAW,EADM,KACS,EAAe,GCA5C,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,kEAEN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,gFAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GCjB5C,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,sEAEN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GCjB5C,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,wEAGN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GClB5C,YACF,EACA,EACA,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,0EAGN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAA,GAAQ,GACJ,EACG,GAAW,EAAQ,EAAO,EAAe,GCjBlD,YACI,EAAiB,EAAI,EAAG,EAAS,GAAI,CACvC,GAAM,GAAK,EAAgB,EAAG,IAAK,QACnC,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAElB,GAAM,GAAU,EAAG,MAAM,EAAG,MAAM,OAAS,GAC3C,GAAI,EAAI,EACN,KAAM,IAAI,OACN,uDAAuD,cAC5C,KAGjB,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,EAAA,EAAG,OAAA,GAEvB,CAAC,EAAQ,GAAW,EAAO,UAC7B,GAAM,EAAgC,GAE1C,MAAO,CAAC,OAAA,EAAQ,QAAA,GAGX,GAAM,IAAO,EAAG,CAAC,MAAA,KC7BxB,YACI,EAAoB,EAAO,EAAG,EAAS,EAAG,EAC1C,EAAa,CACf,GAAI,GAAS,MAAS,IAAuB,OAC3C,KAAM,IAAI,OAAM,qCAElB,GAAM,GACF,GAAI,IAAY,EAAM,EAAQ,EAAO,GAAsB,GACzD,EAAM,GAAO,EAAO,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAU,YAE5B,MAAO,GAAI,WAGN,GAAM,IAAkB,EAAG,CAAC,iBAAA,KCkBnC,YACI,EAAiB,EAAO,EAAC,CAC3B,GAAM,GAAK,EAAgB,EAAG,IAAK,SAAU,qBAC7C,EAAO,EAAG,KAAO,EAAG,IAAM,wCAE1B,GAAM,GAAuB,CAAC,EAAG,GAC3B,EAAqB,CAAC,KAAA,GACtB,CAAC,EAAQ,GAAW,EAAO,UACH,GAAQ,EACR,GAC9B,MAAO,CAAC,OAAA,EAAQ,QAAA,GAGX,GAAM,IAAS,EAAG,CAAC,QAAA,KC5C1B,YACI,EAAiB,EAAiC,EAAmB,CACvE,GAAM,GAAK,EAAgB,EAAG,IAAK,sBAC7B,EACF,EAAgB,EAAY,aAAc,qBAAsB,SACpE,EAAO,GAAM,GAAc,IAAM,oCAEjC,GAAM,GAAmC,CAAC,EAAG,EAAI,WAAY,GACvD,EAAiC,CAAC,YAAA,GAExC,MAAO,GAAO,UACV,GAAoB,EACpB,GAGC,GAAM,IAAqB,EAAG,CAAC,oBAAA,KCnBtC,YAAkB,EAAsB,EAAO,EAAC,CAC9C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAAW,qBACzC,EACD,GAAQ,CAAC,EAAG,MAAM,QAAU,EAAO,EAAG,MAAM,OAC5C,IACI,UAAU,iBAAoB,EAAG,MAAM,WAAW,EAAG,MAAM,WAEnE,GAAM,GAAuB,CAAC,MAAO,GAC/B,EAAqB,CAAC,KAAA,GAE5B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAU,EAAG,CAAC,SAAA,KCnBrB,YACF,EAAyB,EAAY,GAAM,EAC3C,EAAgB,CAClB,MAAO,GAAO,aAAa,EAAc,EAAW,EAAM,GCjBtD,YAAoB,EAAqB,EAAoB,CACjE,GAAM,GAAU,GAChB,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IAC/B,EAAS,IACX,EAAQ,KAAK,GAIjB,GAAM,GAAW,GAAO,EAAW,SAE7B,EAAM,GAAO,CAAC,EAAQ,OAAQ,EAAU,QAAS,SACvD,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAM,GAAM,EAAS,WAAW,EAAQ,IAClC,EAAS,EAAI,EAAU,OAC7B,EAAI,OAAO,IAAI,EAAK,GAEtB,MAAO,GAAI,WCEb,kBAA2B,EAA4B,CACrD,GAAM,GACF,EAAgB,EAAW,YAAa,aAAc,QACpD,EAAO,KAAM,GAAW,OACxB,EAAM,GAAU,EAAW,MAAO,GACxC,MAAI,KAAc,GAChB,EAAW,UAEN,EAGF,GAAM,IAAa,GCP1B,kBACI,EAA2B,EAC3B,EAAa,CACf,GAAM,GAAU,EAAgB,EAAQ,SAAU,YAC5C,EAAQ,EAAgB,EAAM,OAAQ,WAAY,QAElD,EAAW,GAAQ,KAAO,EAAI,EAC9B,EAAU,EAAM,KAChB,EAAc,EAAQ,MAEvB,EAAO,EAAU,EAAG,IAAM,yBAC1B,GACD,EAAY,MAAM,EAAU,EAAW,GAAU,EAAM,MACvD,qEAEJ,GAAI,GAAc,EAClB,OAAS,GAAI,EAAU,EAAI,EAAW,EAAS,IAC7C,GAAe,EAAY,GAE7B,GAAM,GACF,EAAY,MAAM,EAAG,GAChB,OAAO,CAAC,GAAc,EAAY,MAAM,EAAW,IACtD,EAAiB,EAAQ,EAAS,GAClC,EAAe,EAAQ,EAAO,CAAC,KAC/B,EAAoB,KAAM,IAAW,GACrC,EAAU,GAAQ,EAAmB,CAAC,IAEtC,EAAM,GAAO,EAAgB,EAAS,GAG5C,MAAI,KAAW,GACb,EAAQ,UAEN,IAAS,GACX,EAAM,UAER,EAAQ,UACR,EAAe,UACf,EAAa,UACb,EAAkB,UAEX,EAGF,GAAM,IAAmB,GCjBhC,YACI,EAAsB,EAAgC,YACtD,EAAwB,KAAM,EAAW,GAAK,CAChD,EAAI,EAAgB,EAAG,IAAK,QAE5B,GAAM,GAAO,GAAS,EAAG,EAAK,GAC1B,EAAgB,EAAK,MACzB,GAAI,EAAU,CACZ,GAAM,GAAO,GAAe,EAAM,EAAE,OACpC,EAA0B,GAAqB,EAAK,MAAO,GAE7D,MAAO,GAAQ,EAAM,GAGvB,YACI,EAAW,EAAkB,EAAwB,KAAI,CAC3D,GAAI,EAAE,OAAS,EACb,MAAO,IAAI,GAIb,GAAI,EAAE,OAAS,GAAK,IAAS,KAC3B,MAAO,IAAS,EAAQ,EAAG,CAAC,KAAM,EAAG,GAIvC,GAAI,EAAE,OAAS,GAAK,MAAO,IAAS,UAChC,MAAM,QAAQ,IAAS,EAAK,SAAW,EAAG,CAC5C,GAAI,IAAM,EACR,MAAO,IAAI,GAAI,GAAI,GAErB,GAAI,IAAM,SACR,MAAO,IAAI,GAAI,GAAI,GAErB,GAAI,IAAM,UACR,MAAO,IAAI,GAAI,GAAI,GAErB,GAAI,IAAM,aAAe,IAAM,EAE7B,MAAO,IAAK,GAAI,GAAI,GAAI,GAAI,GAAO,EAAG,UAAW,IAGnD,KAAM,IAAI,OAAM,qCAAqC,KAIvD,GAAI,MAAM,QAAQ,IAAS,EAAK,SAAW,EAAG,CAC5C,GAAI,IAAM,EACR,MAAO,IAAI,GAAI,GAAI,GAAI,EAAK,IAAK,EAAK,GAAK,GAE7C,GAAI,IAAM,SACR,MAAO,IAAI,GAAI,GAAI,GAAI,EAAK,IAAK,EAAK,IAExC,GAAI,IAAM,UACR,MAAO,IAAI,GAAI,GAAI,GAAI,EAAK,IAAK,EAAK,IAExC,GAAI,IAAM,OAAS,IAAM,YAEvB,MAAO,IAAK,GAAI,GAAO,GAAI,IAG7B,KAAM,IAAI,OAAM,qCAAqC,KAGvD,KAAM,IAAI,OAAM,gCAAgC,KAG3C,GAAM,IAAO,EAAG,CAAC,MAAA,KChFxB,YACI,EAAiB,EAAiB,EAClC,EAAsB,EAAa,GAAI,CACzC,GAAM,GAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAS,EAAgB,EAAO,QAAS,iBAE/C,GAAiB,EAAI,GAChB,EACI,GAAY,EAAG,MAAO,EAAG,OAAQ,IAAM,6BAEhD,GAAM,GAAM,GAAO,GACb,EAAgB,GAAI,EAAK,GAE3B,EAAS,EAAI,GAAI,EAAI,GAAK,GAC9B,GAAI,EAAY,CACT,EACD,GAAQ,KAAM,IAAM,kDACxB,GAAM,GAAQ,EAAgB,EAAM,OAAQ,iBAC5C,EAAS,GAAI,EAAQ,GAAI,EAAK,GAAI,EAAQ,KAE5C,MAAO,IAAI,EAAI,GAGV,GAAM,IAAgB,EAAG,CAAC,eAAA,KCpCjC,YACI,EAA4B,EAC5B,EAAkB,CACpB,GAAM,GAAW,EAAgB,EAAS,UAAW,YAAa,SAC5D,EAAW,EAAgB,EAAS,UAAW,aACrC,GAAc,EAAU,EAAU,GAElD,GAAM,GAA0B,CAAC,QAAS,EAAU,QAAS,GACvD,EAAwB,CAAC,MAAA,GAG/B,MAAO,GAAO,UACH,GAAW,EACX,GAGN,GAAM,IAAY,EAAG,CAAC,WAAA,KChCvB,YACF,EAAuB,EAAsB,EAC7C,EAAqB,CACvB,GAAI,EAAc,QAAU,QAC1B,KAAM,IAAI,OACN,8EACsB,EAAc,UAE1C,GAAI,EAAc,KAAO,EACvB,KAAM,IAAI,OACN,sEACkB,EAAc,UAGtC,GAAM,GAAW,EAAc,KAAO,EAAI,EAAc,MAAM,GAAK,EAC7D,EAAU,EAAc,KAAO,EAAI,EAAc,MAAM,GAAK,EAElE,GAAI,EAAY,SAAW,EACzB,KAAM,IAAI,OACN,kDACI,EAAY,sBAAsB,MAG5C,GAAM,GAAY,EAAa,KAC/B,GAAI,CAAE,GAAa,OAAS,GACtB,EAAa,OAAS,GAAK,IAAc,GAC7C,KAAM,IAAI,OACN,oCACG,EAAa,2BAA2B,MAGjD,GAAI,EAAa,QAAU,EAAc,MACvC,KAAM,IAAI,OAAM,qDCGpB,YACI,EAAkC,EAClC,EAA0B,EAAkC,EAAC,CAC/D,GAAM,GACF,EAAgB,EAAe,gBAAiB,gBAAiB,SAC/D,EACF,EAAgB,EAAc,eAAgB,iBAC5C,EAAgB,EAClB,EAAc,eAAgB,gBAAiB,EAAc,OAEjD,GACZ,EAAgB,EAAe,EAAa,GAEhD,GAAM,GAA8B,CAClC,cAAe,EACf,aAAc,EACd,aAAc,GAGV,EAA4B,CAAC,YAAA,GAEnC,MAAO,GAAO,UACV,GAAe,EACf,GAGC,GAAM,IAAgB,EAAG,CAAC,eAAA,KC9BjC,YAAmB,EAAsB,EAA0B,CACjE,GAAM,GAAW,EAAgB,EAAS,UAAW,WAAY,SAG3D,EAAyB,CAAC,OAFrB,EAAgB,EAAG,IAAK,YAES,QAAS,GAErD,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KC3CtB,YAAwB,EAAW,EAAqB,CAC5D,GAAI,GAAc,KAChB,MAAO,GAAE,MAAM,QAEjB,GAAS,GAAY,EAAE,MAAO,GAC5B,MAAO,GAET,GAAI,EAAE,MAAM,SAAW,EAAW,OAAQ,CACxC,GAAM,GAAyB,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAE,MAAM,OAAQ,IAC9B,EAAW,IAAM,MAAQ,EAAE,MAAM,IAAM,KACzC,EAAa,KAAK,EAAE,MAAM,IAE1B,EAAa,KAAK,EAAW,IAGjC,MAAO,GAGT,MAAO,GCKT,YACI,EAAsB,EAAc,EACpC,EAAoB,CACtB,GAAM,GAAK,EAAgB,EAAG,IAAK,WAUnC,GARK,EACD,EAAG,QAAU,UACb,IAAM,gFACmB,EAAG,yBAC3B,EACD,GAAQ,GAAK,EAAO,EACpB,IAAM,qDAAqD,MAE3D,IAAS,EACX,MAAO,aAAa,IAAS,EAAG,QAAU,EAG5C,GAAM,GAAc,GAAc,EAAI,GAChC,EAAW,EAAI,EACf,EAAa,GACf,GAAM,GAAI,GAAc,EAAa,EAAG,EAAG,UAAW,GAAO,IAC7D,GAEJ,MAAO,GAAI,EAAI,GAGV,GAAM,IAAU,EAAG,CAAC,SAAA,KC1DrB,YAA8B,EAAa,CAE/C,MAAO,MAAK,MAAM,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,IAAI,GAAS,KAAK,IAAI,MAG/D,YACF,EAAsB,EAAW,EAAS,CAC5C,GAAM,GAAO,EAAI,EAAe,EAC1B,EAAY,GAAI,cAAa,GACnC,OAAS,GAAI,EAAG,EAAI,EAAc,EAAE,EAAG,CACrC,GAAM,GAAU,EAAM,KAAK,GAAK,EAAM,GAAe,EAAO,GAC5D,EAAU,GAAK,EAAI,EAAI,KAAK,IAAI,GAElC,MAAO,IAAS,EAAW,WCO7B,kBACI,EAA2B,EAAuB,EAAI,EAAC,CACzD,GAAM,GAAe,EAAgB,EAAa,cAAe,UAC3D,EAAW,EAAgB,EAAS,UAAW,UAErD,EACI,EAAa,KAAO,EACpB,IAAM,uEACS,EAAa,QAChC,EACI,EAAa,KAAO,IAAM,EAAS,KACnC,IAAM,mFAEC,EAAa,yBAAyB,EAAS,QAC1D,GACI,EAAa,MAAM,MAAM,EAAG,EAAa,MAAM,OAAS,GACxD,EAAS,MACT,2FAEJ,GAAM,GAAU,EAAa,MAAM,EAAa,MAAM,OAAS,GAC/D,EACI,EAAI,GAAK,GAAK,EACd,IAAM,4EACY,eAAqB,KAE3C,GAAM,GAAkB,KAAM,GAAa,OACrC,EAAc,KAAM,GAAS,OAI7B,CAAC,EAAO,GAAQ,CAAC,EAAgB,OAAS,EAAS,GACnD,EAAY,GAAuB,OAAQ,GAEjD,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAS,EAAI,EACb,EAAO,EAAgB,SAAS,EAAQ,EAAS,GACjD,EAAmD,GACzD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAU,KAAK,CAAC,MAAO,EAAK,GAAI,MAAO,IAEzC,EAAU,KAAK,CAAC,EAAG,IAAM,EAAE,MAAQ,EAAE,OAErC,EAAU,GAAK,EACf,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,GAAI,EAAU,GAAG,QAAU,EAAY,GAAI,CACzC,EAAU,GAAK,EACf,OAKN,MAAI,KAAgB,GAClB,EAAa,UAEX,IAAY,GACd,EAAS,UAIJ,GAAO,EAAW,EAAS,MAAO,QAGpC,GAAM,IAAc,GCtG3B,GAAA,GAAA,GAAA,GAAA,CAAA,OAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,OAAA,IAAA,KC+CA,YACI,EAAM,EAAO,EACb,EACA,EACA,EAA4B,OAC5B,EAAwC,CAC1C,GAAI,GAAM,EACN,EAAE,OAAS,GACb,GAAM,EAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,GAAI,GAAO,EACP,EAAK,OAAS,GAChB,GAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEvD,EACD,EAAI,OAAS,EACb,IAAM,iEACC,EAAI,UACV,EACD,EAAK,OAAS,EACd,IAAM,8DACC,EAAK,UACX,EACD,EAAY,SAAW,EACvB,IAAM,mEACC,MACX,GAAM,GAAU,IAAe,OAAS,EAAI,MAAM,GAAK,EAAI,MAAM,GAC3D,EAAW,IAAe,OAAS,EAAK,MAAM,GAAK,EAAK,MAAM,GAC/D,EACD,IAAY,EAAY,GACxB,IAAM,4CAA4C,wCACd,EAAY,OAC/C,EACD,IAAa,EAAY,GACzB,IAAM,0CAA0C,0CACV,EAAY,QAClD,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,gFACiB,iBAA+B,MAG5D,GAAM,GAAqC,CAAC,EAAG,EAAK,GAAI,GAClD,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,EAAiB,YAAA,GAGhD,MAAO,GAAO,UACH,GAAsB,EACtB,GAGN,GAAM,IAAuB,EAAG,CAAC,sBAAA,KCpElC,YACF,EAAY,EAAW,EAAsB,CAC/C,GAAI,GAAc,MAAQ,IAAe,SACvC,MAAO,GAET,GAAI,IAAe,OACjB,MAAO,GAAI,EAAI,GAAK,IAEtB,KAAM,IAAI,OACN,gDAAgD,MAIhD,YACF,EAAc,EAAoB,CACpC,GAAI,GAAM,EACJ,EACa,GAAiB,EAAK,MAAO,EAAa,OAC7D,MAAI,GAAW,OAAS,GACtB,GAAM,GAAI,EAAK,IAEV,EAAQ,EAAK,EAAK,OAGrB,YACF,EAAW,EAAwB,EACnC,EAAuB,CACzB,GAAI,IAAe,SACjB,MAAO,GACF,GAAI,IAAe,OACxB,MAAO,IAAK,GACP,GAAI,IAAe,MACxB,MAAO,IAAI,GACN,GAAI,IAAe,QACxB,MAAO,IAAM,GACR,GAAI,IAAe,QACxB,MAAO,IAAM,EAAG,GACX,GAAI,IAAe,YACxB,MAAO,IAAU,EAAG,GAEtB,KAAM,IAAI,OAAM,4BAA4B,MAIvC,GAAM,IAAa,CAAC,EAAuB,IAEzC,CADc,GAAgB,IACb,IAAe,SCiBzC,YAAmD,CACjD,EAAA,EACA,OAAA,EACA,QAAA,EACA,IAAA,EACA,WAAA,EAAa,OACb,UAAA,EAAY,CAAC,EAAG,GAChB,gBAAA,EACA,KAAA,EACA,WAAA,EAAa,SACb,uBAAA,EACA,eAAA,GAaD,CAGC,GAFA,EAAa,GAAc,SAEvB,GAAW,EAAO,MAAM,cAAe,KAAgB,GAAO,CAChE,GAAI,GAAS,GACT,EAAG,EAAQ,EAAS,EAAK,EAAY,EAAW,GACpD,MAAI,IAAQ,MACV,GAAS,GAAI,EAAQ,IAGhB,GACI,EAAQ,EAAY,EAAwB,GAGzD,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEtD,EACD,EAAI,OAAS,EACb,IAAM,6DACC,EAAI,SACV,EACD,EAAQ,OAAS,EACjB,IAAM,8DACC,EAAQ,SACf,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,6EACiB,iBAA+B,MAGvD,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,oCAAoC,EAAI,MAAM,yCACtB,EAAQ,MAAM,OAC3C,EACS,GAA+B,EAAS,GAClD,IAAM,uEACa,oBAA0B,MAC5C,EACD,IAAe,OACf,IAAM,sCACF,2CAER,GAAM,GAAqB,GACvB,EAAI,MAAO,EAAQ,MAAO,EAAS,EAAW,EAAK,GAEnD,EACA,GAAQ,MACV,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,CAAC,GAAS,GAAe,EAAO,GAEjB,GAA2B,EAAS,SAAU,EAAM,QAGrE,GAAI,GACA,GAA0B,MAC5B,GAA0B,EACtB,EAAwB,gBAAiB,iBAG/C,GAAM,GAAO,CAAC,EAAc,IAAmB,CAC7C,GAAM,CAAC,EAAS,EAAK,EAAG,GACpB,EAEE,EAAe,GAAqB,EAAI,EAAG,GAE5C,EACS,GAAkB,GAC5B,IAAM,uHAEoD,MAE9D,GAAM,GACF,GAAoB,EAAI,MAAO,EAAc,EAAS,EAAS,GAC7D,EACF,GAAqB,EAAK,EAAc,EAAQ,MAAO,EAAS,GAC9D,EAAgB,CAAC,EAAM,GAE7B,GAAI,GAAS,KAAM,CACjB,GAAM,GAAU,GAAqB,EAAO,GAC5C,EAAI,KAAK,GAEX,MAAO,IAGH,EAA4B,CAChC,EAAG,EACH,OAAQ,EACR,KAAM,EACN,uBAAwB,GAGpB,EAA0B,CAC9B,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GAKF,MAAI,IAAQ,KAEN,GAAW,CAAC,EAAe,EAAkB,IAAsB,CACjE,GAAI,GAEA,EAAO,UACH,GAAa,EACb,GAER,MAAA,GAAK,CAAC,EAAQ,EAAK,IAEf,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAEpB,EAAK,GAEI,GACrB,CAAC,EAAe,EAAkB,EAAc,IAAsB,CACpE,GAAI,GAAyB,EAAO,UAChC,GAAa,EACb,GAEJ,MAAA,GAAK,CAAC,EAAQ,EAAK,EAAK,IAEpB,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAGZ,EAAK,EAAS,GAGnC,GAAM,IAAS,EAAG,CAAC,aAAA,KCxP1B,YACI,EAAM,EAAO,EACb,EAAkC,EAClC,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAI,GAAM,EACN,EAAE,OAAS,GACb,GAAM,EAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,GAAI,GAAO,EACP,EAAK,OAAS,GAChB,GAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAG5D,GAAM,GAAoD,CAAC,EAAG,EAAK,GAAI,GACjE,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,UAAA,EAAW,YAAA,GAG/C,MAAO,GAAO,UACH,GACA,EAAgC,GAItC,GAAM,IACT,EAAG,CAAC,qCAAA,KC1BR,YACI,EAA0C,EAAO,EACjD,EAAkC,EAClC,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAI,GAAO,EACP,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAG5D,GAAM,GAAmD,CAAC,GAAI,EAAM,OAAA,GAC9D,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,UAAA,EAAW,WAAY,GAErD,EAEF,EAAO,UACH,GAAoC,EACpC,GAER,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IACT,EAAG,CAAC,oCAAA,KCoCR,YAA4D,CAC1D,EAAA,EACA,OAAA,EACA,QAAA,EACA,IAAA,EACA,WAAA,EAAa,OACb,UAAA,EAAY,CAAC,EAAG,GAChB,gBAAA,EACA,KAAA,EACA,WAAA,EAAa,SACb,uBAAA,EACA,eAAA,GAaD,CACC,GAAI,GAAW,EAAO,MAAM,cAAe,KAAgB,GAAO,CAChE,GAAI,GAAS,GACT,EAAG,EAAQ,EAAS,EAAK,EAAY,EAAW,GACpD,MAAI,IAAQ,MACV,GAAS,GAAI,EAAQ,IAGhB,GACI,EAAQ,EAAY,EAAwB,GAGzD,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAE9C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEtD,EACD,EAAI,OAAS,EACb,IAAM,sEACM,EAAI,SACf,EACD,EAAQ,OAAS,EACjB,IAAM,uEACc,EAAQ,SAC3B,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,6DACE,EAAI,MAAM,qDACJ,EAAQ,MAAM,OAC5B,GAAa,MACf,GAAY,CAAC,EAAG,IAEb,EACS,GAA+B,EAAS,GAClD,IACI,sFACqB,oBAA0B,MAEnD,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,qFACuB,iBAA+B,MAGlE,GAAM,GAAqB,GACvB,EAAI,MAAO,EAAQ,MAAO,EAAS,EAAW,EAAK,EACnD,IAEA,EACA,GAAQ,MACV,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,CAAC,GAAS,GAAe,EAAO,GAEjB,GAA2B,EAAS,SAAU,EAAM,QAGrE,GAAI,GACA,GAA0B,MAC5B,GAA0B,EACtB,EAAwB,gBAAiB,0BAG/C,GAAM,GAAO,CAAC,EAAc,IAAmB,CACxC,EACS,GAAkB,GAC5B,IAAM,mHAEE,MACZ,GAAM,CAAC,EAAS,EAAK,EAAG,GAAQ,EAE1B,EAAe,GAAqB,EAAI,EAAG,GAE3C,EAAO,GACR,EAAiB,MAAO,EAAc,EAAqB,EAC5D,EAAK,EAAW,GACd,EAAY,GACd,EAAiB,EAAe,EAAqB,MAAO,EAC5D,EAAK,EAAW,GAEpB,GAAI,GAAQ,KAAM,CAChB,GAAM,GAAU,GAAqB,EAAO,GAC5C,MAAO,CAAC,EAAM,EAAW,GAE3B,MAAO,CAAC,EAAM,IAGV,EAAqC,CACzC,EAAG,EACH,OAAQ,EACR,KAAM,EACN,uBAAwB,GAEpB,EAAmC,CACvC,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GAKF,MAAI,IAAQ,KAEN,GAAW,CAAC,EAAe,EAAkB,IAAsB,CAEjE,GAAI,GAAyB,EAAO,UAChC,GAAsB,EACtB,GAEJ,MAAA,GAAK,CAAC,EAAQ,EAAK,IAEf,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAEpB,EAAK,GAEI,GACrB,CAAC,EAAe,EAAkB,EAAc,IAAsB,CAEpE,GAAI,GAAyB,EAAO,UAChC,GAAsB,EACtB,GAEJ,MAAA,GAAK,CAAC,EAAQ,EAAK,EAAK,IAEpB,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAGZ,EAAK,EAAS,GAGnC,GAAM,IAAkB,EAAG,CAAC,sBAAA,KChNnC,YAAwC,CACtC,EAAA,EACA,EAAA,EACA,WAAA,EAAa,GACb,WAAA,EAAa,GACb,KAAA,EACA,WAAA,EAAa,SACb,uBAAA,EACA,eAAA,GAUD,CACG,GAAI,GAAW,EAAO,MAAM,cAAe,KAAgB,GAAO,CAChE,GAAI,GAAS,GAAc,EAAG,EAAG,EAAY,GAC7C,MAAI,IAAQ,MACV,GAAS,GAAI,EAAQ,IAGhB,GACI,EAAQ,EAAY,EAAwB,GAIzD,GAAI,GAAK,EAAgB,EAAG,IAAK,gBAC7B,EAAK,EAAgB,EAAG,IAAK,gBACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GACtD,EACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GAEtD,EACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GACtD,EACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GAEtD,EAAa,EAAG,MAAM,MAAM,EAAG,IAC/B,EAAa,EAAG,MAAM,MAAM,EAAG,IAC/B,EAAiB,GAAc,GAC/B,EAAiB,GAAc,GAEhC,EACD,EAAG,MAAQ,GAAK,EAAG,MAAQ,GAAK,EAAG,OAAS,EAAG,KAC/C,IAAM,kFACoB,EAAG,YAAY,EAAG,SAE3C,EACI,GAAY,EAAY,GAC7B,IAAM,4CAA4C,WAC3C,6BAAsC,EAAG,aACzC,EAAG,qBAET,EACD,IAAgB,EAChB,IAAM,wCAAwC,WACvC,6BAAuC,EAAG,aAC1C,EAAG,wBAAwB,oBACX,iBAE3B,GAAM,GAAW,EAAG,MAAM,MAAM,EAAG,IAAI,OAAO,CAAC,EAAa,IAEtD,EAAgB,EAClB,EAAQ,EAAI,CAAC,EAAW,EAAa,IACrC,EAAQ,EAAI,CAAC,EAAW,EAAa,IACnC,EAAgB,EAClB,EAAQ,EAAI,CAAC,EAAW,EAAa,IACrC,EAAQ,EAAI,CAAC,EAAW,EAAa,IAErC,EACA,GAAQ,MACV,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,CAAC,GAAS,GAAe,EAAO,GAEjB,GAA2B,EAAU,EAAM,QAG5D,GAAI,GACA,GAA0B,MAC5B,GAA0B,EACtB,EAAwB,gBAAiB,iBAG/C,GAAM,GAAO,CAAC,EAAc,IAAmB,CAC7C,GAAM,CAAC,EAAK,EAAK,EAAG,GAAS,EAIvB,EACF,GAAqB,EAAQ,EAAI,EAAE,OAAQ,EAAG,GAC9C,EACA,GAgBJ,GAdI,CAAC,GAAc,CAAC,EAClB,GAAO,GAAc,EAAc,EAAK,GAAO,IAC/C,GAAO,GAAc,EAAK,EAAc,GAAM,KACrC,CAAC,GAAc,EACxB,GAAO,GAAc,EAAc,EAAK,GAAO,IAC/C,GAAO,GAAc,EAAc,EAAK,GAAM,KACrC,GAAc,CAAC,EACxB,GAAO,GAAc,EAAK,EAAc,GAAO,IAC/C,GAAO,GAAc,EAAK,EAAc,GAAO,KAE/C,GAAO,GAAc,EAAK,EAAc,GAAM,IAC9C,GAAO,GAAc,EAAc,EAAK,GAAM,KAG5C,GAAQ,KAAM,CAChB,GAAM,GAAU,GAAqB,EAAO,GAC5C,MAAO,CAAC,EAAM,GAAM,OAEpB,OAAO,CAAC,EAAM,KAIZ,EAA6B,CACjC,EAAG,EACH,EAAG,EACH,KAAM,EACN,uBAAwB,GAEpB,EACF,CAAC,WAAA,EAAY,WAAA,EAAY,WAAA,EAAY,eAAA,GAIzC,MAAI,IAAQ,KAEN,GAAW,CAAC,EAAe,EAAe,IAAsB,CAC9D,GAAM,GAEF,EAAO,UACH,GAAc,EACd,GAER,MAAA,GAAK,CAAC,EAAK,EAAK,IAET,CAAC,MAAO,EAAQ,EAAK,GAAW,SAAU,KAEvC,EAAK,GAEI,GACrB,CAAC,EAAe,EAAe,EAAe,IAAsB,CAClE,GAAM,GAEF,EAAO,UACH,GAAc,EACd,GAER,MAAA,GAAK,CAAC,EAAK,EAAK,EAAK,IAEd,CAAC,MAAO,EAAQ,EAAK,GAAW,SAAU,KAG/B,EAAK,EAAK,GAI/B,GAAM,IAAS,EAAG,CAAC,aAAA,KC7L5B,YAAwB,EAAoB,CAC1C,MAAO,IAAa,EAAc,IAAM,KAEnC,GAAM,IAAgB,EAAG,CAAC,eAAA,KCHjC,YAAqB,EAAoB,CACvC,MAAO,IAAa,EAAc,GAAK,IAGlC,GAAM,IAAa,EAAG,CAAC,YAAA,KCI9B,YACI,EAAkB,EAAqB,EAAmB,EAAS,GACnE,EAAW,EAAC,CACd,GAAI,GAAQ,EACN,EAAmB,GACzB,KAAO,EAAQ,GAAe,EAAO,MACnC,EAAO,KAAK,GAAM,EAAQ,EAAO,IACjC,GAAS,EAGX,GAAI,EACF,KAAO,EAAQ,EAAO,MAAM,CAC1B,GAAM,GAAU,EAAQ,EAAe,EAAO,KACxC,EAAM,GAAO,CACjB,GAAM,EAAQ,EAAO,EAAc,GAAS,GAAK,CAAC,GAAS,KAE7D,EAAO,KAAK,GACZ,GAAS,EAIb,MAAI,GAAO,SAAW,EACb,GAAS,GAAI,CAAC,EAAG,IAGnB,EAAQ,GAAO,GAAS,CAAC,EAAO,OAAQ,IAE1C,GAAM,IAAQ,EAAG,CAAC,OAAA,KCxBzB,YACI,EAAkB,EAAqB,EACvC,EACA,EAAyC,GAAU,CACjD,GAAa,MACf,GAAY,GAAoB,IAElC,GAAM,GAAe,GAAM,EAAQ,EAAa,GAC1C,EAAiB,EAAI,EAAc,EAAS,IAC5C,EAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAa,MAAM,GAAI,IACzC,EAAO,KACH,GAAK,GAAM,EAAgB,CAAC,EAAG,GAAI,CAAC,EAAG,IAAe,IAE5D,MAAO,IAAO,GAET,GAAM,IAAO,EAAG,CAAC,MAAA,KCTxB,YACI,EACA,EACA,EACA,EACA,EAA+B,WAC/B,EAAqB,EAAC,CAExB,GAAM,GAAS,EAAgB,EAAO,QAAS,iBACzC,EAAS,EAAgB,EAAO,QAAS,gBAAiB,WAC1D,EAAU,EAAgB,EAAQ,SAAU,gBAAiB,SAE7D,EAAW,EAAO,MAAM,GAEzB,EACD,EAAO,OAAS,EAChB,IAAM,6DACc,EAAO,SAC1B,EACD,EAAO,OAAS,GAAK,EAAO,MAAM,KAAO,EACzC,IAAM,oDAAoD,sBACrC,EAAO,UAC3B,EACD,EAAQ,OAAS,GAAK,EAAQ,MAAM,KAAO,EAC3C,IAAM,qDAAqD,oBACtC,EAAO,UAC3B,EACD,EAAS,SAAW,EACpB,IAAM,wEACQ,EAAS,WACtB,EACD,EAAS,IAAM,GAAK,EAAS,IAAM,EACnC,IAAM,2CAA2C,KAChD,EACD,IAAW,YAAc,IAAW,UACpC,IAAM,+CAA+C,KAEzD,GAAM,GACoB,CAAC,MAAO,EAAQ,MAAO,EAAQ,OAAQ,GAC3D,EAA4B,CAAC,OAAA,EAAQ,mBAAA,EAAoB,SAAA,GAI/D,MAHY,GAAO,UACf,GAAe,EACf,GAIC,GAAM,IAAgB,EAAG,CAAC,eAAA,KChEjC,YAAwB,EAA0B,CAChD,GAAM,GAAS,EAAgB,EAAO,QAAS,gBAAiB,WAE3D,EACD,EAAO,OAAS,EAChB,IAAM,6DACc,EAAO,SAE/B,GAAM,GAA8B,CAAC,MAAO,GAG5C,MADI,GAAO,UAAU,GAAe,EAAgC,IAI/D,GAAM,IAAgB,EAAG,CAAC,eAAA,KCHjC,YACI,EAA4B,EAC5B,EAA6C,EAC7C,EAAkC,GAAG,CACvC,GAAM,GAAS,EAAgB,EAAO,QAAS,mBAAoB,WAE9D,EACD,EAAO,OAAS,EAChB,IAAM,gEACc,EAAO,SAE/B,GAAM,GAAiC,CAAC,MAAO,GACzC,EAA+B,CAAC,QAAA,EAAS,UAAA,EAAW,OAAA,GAI1D,MAHY,GAAO,UACf,GAAkB,EAClB,GAIC,GAAM,IAAmB,EAAG,CAAC,kBAAA,KC3CpC,YACI,EAAiB,EAAkB,EACnC,EAAsB,EAAwB,EAAqB,CAMjE,GAAgB,MAClB,GAAe,IAEb,GAAkB,MACpB,GAAiB,OAAO,mBAEtB,GAAgB,MAClB,GAAe,GAGjB,GAAM,GAAW,EAAM,MAAM,GAC7B,MAAA,GAAgB,KAAK,IAAI,EAAe,GAEnC,EACD,GAAK,GAAgB,GAAgB,EACrC,IAAM,4CAA4C,MACjD,EACD,EAAM,OAAS,EACf,IAAM,+CAA+C,EAAM,SAC1D,EACD,EAAM,MAAM,KAAO,EACnB,IACI,oDAAoD,EAAM,MAAM,MACnE,EAAO,EAAO,OAAS,EAAG,IAAM,8BAChC,EACD,EAAO,MAAM,KAAO,EACpB,IAAM,sDAAsD,cAC7C,EAAO,MAAM,MAC3B,EACD,GAAK,GAAgB,GAAgB,EACrC,IAAM,4CAA4C,MAC/C,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,aAAA,GCfvD,YACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBAAiB,CAC3C,GAAM,GAAS,EAAgB,EAAO,QAAS,qBACzC,EAAU,EAAgB,EAAQ,SAAU,qBAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,GAClD,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eAExB,GAAM,GAAQ,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,GAC5C,MAAO,GAAO,UACV,GAAqB,CAAC,MAAO,EAAQ,OAAQ,GAAU,GAGtD,GAAM,IAAoB,EAAG,CAAC,mBAAA,KChC/B,YACF,EAAU,EAAY,EAAmC,CAC3D,GAAM,GAAQ,GAAa,EAAK,EAAS,GACnC,EAAiB,EAAQ,EAAI,CAAE,GAAQ,GAAK,EAClD,EAAI,OAAO,EAAgB,EAAG,GAkB1B,YACF,EAAU,EAAW,EAAmC,CAC1D,MAAO,IAAc,EAAK,EAAQ,GAAc,IAUlD,YAA8B,EAAM,EAAI,CACtC,MAAO,GAAI,EAAI,EAAI,EAAI,EAAI,GAAK,EAGlC,YACI,EAAU,EAAW,EAAkC,CACzD,GAAI,GAAO,EACP,EAAQ,EAAI,OACZ,EAAS,EACT,EAAQ,GACZ,KAAO,EAAO,GAAO,CACnB,EAAS,EAAS,GAAQ,IAAU,GACpC,GAAM,GAAgB,EAAW,EAAQ,EAAI,IACzC,EAAgB,EAClB,EAAO,EAAS,EAEhB,GAAQ,EAGR,EAAQ,CAAC,GAIb,MAAO,GAAQ,EAAO,CAAC,EAAO,ECpD1B,YACF,EAAmB,EAAoB,EACvC,EAAsB,EAAsB,CAC9C,MAAO,IACH,EAAO,EAAQ,EAAe,EAAc,EAC5C,GAGA,YACF,EAAmB,EAAoB,EACvC,EAAsB,EACtB,EAA2B,CAC7B,MAAO,IACH,EAAO,EAAQ,EAAe,EAAc,EAC5C,EAAsB,GACtB,EAA6C,IAI7C,YACF,EAAmB,EAAoB,EACvC,EAAsB,EACtB,EAAoB,CACtB,MAAO,IACH,EAAO,EAAQ,EAAe,EAAc,EAAgB,EAC5D,IAGN,YACI,EAAmB,EAAoB,EACvC,EAAsB,EAAwB,EAC9C,EAAqB,GAAO,EAAqB,GACjD,EAAqB,GAAK,CAG5B,GAAM,GAAa,GAEnB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IAC7B,EAAO,GAAK,GACd,EAAW,KAAK,CAAC,MAAO,EAAO,GAAI,SAAU,EAAG,mBAAoB,IAIxE,EAAW,KAAK,IAIhB,GAAM,GAAQ,EAAe,EAAK,IAAO,EAAgB,EAEnD,EAA4B,GAC5B,EAA2B,GAEjC,KAAO,EAAgB,OAAS,GAAiB,EAAW,OAAS,GAAG,CACtE,GAAM,GAAY,EAAW,MACvB,CAAC,MAAO,EAAe,SAAA,EAAU,mBAAA,GAAsB,EAE7D,GAAI,EAAgB,EAClB,MASF,GAAI,GAAkB,GACtB,OAAS,GAAI,EAAgB,OAAS,EAAG,GAAK,EAAoB,EAAE,EAAG,CACrE,GAAM,GAAM,GAAsB,EAAO,EAAU,EAAgB,IAEnE,GAAI,GAAO,EAAc,CACvB,EAAkB,GAClB,MAMF,GAHA,EAAU,MACN,EAAU,MAAQ,GAAe,EAAc,EAAO,GAEtD,EAAU,OAAS,EACrB,MAWJ,EAAU,mBAAqB,EAAgB,OAE1C,GAGC,GAAU,QAAU,EACtB,GAAgB,KAAK,GACrB,EAAe,KAAK,EAAU,QACrB,EAAU,MAAQ,GAG3B,GAAa,EAAY,EAAW,KAM1C,GAAM,GAAe,EAAgB,OAC/B,EAAa,EAAgB,EAE/B,GAAsB,EAAa,GACrC,GAAgB,KAAK,GAAG,GAAI,OAAM,GAAY,KAAK,IACnD,EAAe,KAAK,GAAG,GAAI,OAAM,GAAY,KAAK,KAGpD,GAAM,GAAkC,CAAC,gBAAA,GAEzC,MAAI,IACF,GAAO,eAAoB,GAGzB,GACF,GAAO,aAAkB,GAGpB,EAGT,YAA+B,EAAmB,EAAW,EAAS,CACpE,GAAM,GAAS,EAAM,SAAS,EAAI,EAAG,EAAI,EAAI,GACvC,EAAS,EAAM,SAAS,EAAI,EAAG,EAAI,EAAI,GACvC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAS,GAAQ,GAAU,GAAQ,GACnC,EAAS,GAAQ,GAAU,GAAQ,GACzC,GAAI,GAAS,GAAK,GAAS,EACzB,MAAO,GAET,GAAM,GAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAmB,EAAkB,GACnE,KAAK,IAAI,EAAmB,EAAkB,GAClD,MAAO,GAAoB,GAAQ,EAAQ,GAO7C,YAAwB,EAAsB,EAAe,EAAW,CACtE,GAAM,GAAS,KAAK,IAAI,EAAQ,EAAM,GACtC,MAAO,IAAO,EAAe,EAAS,EAGxC,YAA6B,EAAe,EAAa,CAKvD,MAAQ,GAAG,MAAQ,EAAG,OAChB,EAAG,QAAU,EAAG,OAAW,EAAG,SAAW,EAAG,SC/JpD,kBACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBAAiB,CAC3C,GAAM,GAAS,EAAgB,EAAO,QAAS,0BACzC,EAAU,EAAgB,EAAQ,SAAU,0BAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,GAClD,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eAExB,GAAM,GAAiB,KAAM,SAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,SAC3D,EAAY,EAAe,GAC3B,EAAa,EAAe,GAK5B,CAAC,gBAAA,GAAmB,GACtB,EAAW,EAAY,EAAe,EAAc,GACxD,MAAI,KAAW,GACb,EAAO,UAEL,IAAY,GACd,EAAQ,UAGH,GAAS,EAAiB,SAG5B,GAAM,IAAyB,GCnBtC,YACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAe,EAAG,CACpB,GAAM,GAAS,EAAgB,EAAO,QAAS,qBACzC,EAAU,EAAgB,EAAQ,SAAU,qBAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,GACJ,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eACxB,EAAe,EAAO,aAEtB,GAAM,GAAoC,CAAC,MAAO,EAAQ,OAAQ,GAC5D,EACF,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,aAAA,GAG5C,EAAS,EAAO,UACH,GAAqB,EACrB,GAEnB,MAAO,CAAC,gBAAiB,EAAO,GAAI,eAAgB,EAAO,IAGtD,GAAM,IAA6B,EAAG,CAAC,4BAAA,KChC9C,kBACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAe,EAAG,CACpB,GAAM,GAAS,EAAgB,EAAO,QAAS,0BACzC,EAAU,EAAgB,EAAQ,SAAU,0BAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,GACJ,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eACxB,EAAe,EAAO,aAEtB,GAAM,GAAiB,KAAM,SAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,SAC3D,EAAY,EAAe,GAC3B,EAAa,EAAe,GAK5B,CAAC,gBAAA,EAAiB,eAAA,GAAkB,GACtC,EAAW,EAAY,EAAe,EAAc,EACpD,GAEJ,MAAI,KAAW,GACb,EAAO,UAEL,IAAY,GACd,EAAQ,UAGH,CACL,gBAAiB,GAAS,EAAiB,SAC3C,eAAgB,GAAS,IAItB,GAAM,IAAkC,GC1C/C,YACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAqB,GAAK,CAC5B,GAAM,GAAS,EAAgB,EAAO,QAAS,qBACzC,EAAU,EAAgB,EAAQ,SAAU,qBAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,MACE,EAAiB,EAAO,cACxB,EAAgB,EAAO,aACvB,EAAkB,EAAO,eAEzB,EAAoC,CAAC,MAAO,EAAQ,OAAQ,GAC5D,EAAkC,CACtC,cAAe,EACf,aAAc,EACd,eAAgB,EAChB,mBAAA,GAII,EAAS,EAAO,UACH,GAAqB,EACrB,GAEnB,MAAO,CAAC,gBAAiB,EAAO,GAAI,aAAc,EAAO,IAGpD,GAAM,IAA0B,EAAG,CAAC,yBAAA,KClC3C,kBACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAqB,GAAK,CAC5B,GAAM,GAAS,EAAgB,EAAO,QAAS,0BACzC,EAAU,EAAgB,EAAQ,SAAU,0BAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,MACE,EAAiB,EAAO,cACxB,EAAgB,EAAO,aACvB,EAAkB,EAAO,eAEzB,CAAC,EAAW,GACd,KAAM,SAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,SAKxC,CAAC,gBAAA,EAAiB,aAAA,GAAgB,GACpC,EAAW,EAAY,EAAgB,EAAe,EACtD,GAEJ,MAAI,KAAW,GACb,EAAO,UAEL,IAAY,GACd,EAAQ,UAGH,CACL,gBAAiB,GAAS,EAAiB,SAC3C,aAAc,GAAO,EAAc,UAIhC,GAAM,IAA+B,GCxC5C,YACI,EAAsB,EAAwB,EAAe,GAC7D,EAAmB,GAAK,CAC1B,GAAM,GAAU,EAAgB,EAAQ,SAAU,kBAE7C,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,gEACM,EAAQ,SACnB,EACD,EAAK,SAAW,EAChB,IAAM,6DACC,MACN,EACD,IAAqB,IAAS,IAAiB,GAC/C,IAAM,qFAGV,GAAI,GAAc,EACd,EAAe,GACf,EAAQ,OAAS,GACnB,GAAe,GACf,EAAc,EACV,EAAS,CAAC,EAAG,EAAQ,MAAM,GAAI,EAAQ,MAAM,GAAI,EAAQ,MAAM,MAGrE,GAAM,GAAK,EAEL,EAA+B,CAAC,OAAQ,GACxC,EAA6B,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAG9D,EAAM,EAAO,UACH,GAAgB,EAChB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAiB,EAAG,CAAC,gBAAA,KCzClC,YACI,EAAsB,EAAwB,EAAe,GAC7D,EAAmB,GAAK,CAC1B,GAAM,GAAU,EAAgB,EAAQ,SAAU,yBAE7C,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,uEACM,EAAQ,SACnB,EACD,EAAK,SAAW,EAChB,IACI,oEACG,MACN,EACD,EAAQ,QAAU,WAAa,EAAQ,QAAU,QACjD,IAAM,oDACL,EACD,IAAqB,IAAS,IAAiB,GAC/C,IAAM,4FAEV,GAAI,GAAc,EACd,EAAe,GACf,EAAQ,OAAS,GACnB,GAAe,GACf,EAAc,EACV,EAAS,CAAC,EAAG,EAAQ,MAAM,GAAI,EAAQ,MAAM,GAAI,EAAQ,MAAM,MAErE,GAAM,GAAK,EAEL,EAAsC,CAAC,OAAQ,GAC/C,EAC2B,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAG5D,EAAM,EAAO,UACH,GAAuB,EACvB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAwB,EAAG,CAAC,uBAAA,KCnCzC,YACI,EAA4B,EAC5B,EAAsC,UACtC,EAAkD,WAAY,EAAY,EAC1E,EAA8B,CAChC,GAAM,GAAS,EAAgB,EAAO,QAAS,YAAa,WACtD,EACF,EAAgB,EAAY,aAAc,YAAa,WAEtD,EACD,EAAO,OAAS,EAChB,IAAM,yDACc,EAAO,SAE1B,EACD,EAAY,OAAS,GAChB,GAAY,MAAM,KAAO,EAAO,MAAM,IACtC,EAAY,MAAM,KAAO,IAC1B,EAAY,MAAM,KAAO,EAC7B,IAAM,oEAEL,EACD,GAAe,MAAQ,EAAY,SAAW,EAC9C,IACI,4EACW,MAEnB,GAAM,GAA0B,CAAC,MAAO,EAAQ,WAAY,GACtD,EACe,CAAC,cAAA,EAAe,SAAA,EAAU,UAAA,EAAW,YAAA,GAE1D,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KCnB7B,YACI,EAAiB,EAAkB,EAAgB,CACrD,EACI,EAAW,GAAM,EACjB,IAAM,gDAAgD,MAC1D,EACI,EAAW,GAAM,EACjB,IAAM,gDAAgD,MAE1D,GAAM,GAAK,EAAgB,EAAG,IAAK,YAEnC,EACI,EAAG,MAAQ,EACX,IAAM,4CAA4C,EAAG,SAEzD,GAAM,GAAQ,EAAG,MACX,CAAC,EAAG,GAAK,EAAG,MAAM,MAAM,IAE9B,GAAI,CAAE,IAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,mDACwB,OAEvD,GAAI,CAAE,IAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,sDAC2B,OAGtD,EAAW,GACb,GAAW,GAET,EAAW,GACb,GAAW,GAGb,GAAM,GAAI,EAAQ,GAAM,EAAG,EAAG,EAAG,SAAU,CAAC,GAAI,IAC1C,EAAI,GAAM,EAAG,EAAG,EAAG,SACnB,EAAK,GAAI,EAAG,GAEZ,EAAS,GACX,GAAU,EAAI,GAAO,CAAC,EAAU,UAChC,GAAa,EAAI,GAAO,CAAC,EAAU,WAEjC,EAAO,GAAM,CAAC,EAAG,GAAI,EAAG,OAE9B,MAAO,GACI,GAAM,GAAQ,EAAQ,EAAI,CAAC,GAAI,EAAG,KACvB,IAAI,GAAO,GAAM,EAAQ,EAAK,KACzC,GAGN,GAAM,IAAW,EAAG,CAAC,UAAA,KClE5B,YAAsB,EAAuB,CAC3C,GAAI,GACJ,GAAI,MAAM,QAAQ,GAAK,CACrB,EAAkB,GAClB,EACI,GAAM,MAAQ,EAAG,OAAS,EAC1B,IAAM,qEAEV,GAAM,GAAM,EAAG,GAAG,MAAM,GACxB,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,EAAE,EAC/B,EACI,EAAG,GAAG,MAAM,KAAO,EACnB,IACI,iEACK,EAAkB,GAAG,MAAM,UAAU,UAGpD,GAAkB,GAClB,EAAK,GAAM,EAAI,EAAG,MAAM,GAAI,GAAG,IAAI,GAAK,GAAQ,EAAG,CAAC,KAGtD,EACI,EAAG,QAAU,EAAG,GAAG,MAAM,GACzB,IAAM,oCACK,EAAkB,yCACC,EAAkB,GAAG,MAAM,QAE7D,GAAM,GAAiB,GACjB,EAAO,EACb,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,EAAE,EAC/B,EAAG,KAAK,EAAO,KAAK,IAAK,CACvB,GAAI,GAAI,EAAK,GACb,GAAI,EAAI,EACN,OAAS,GAAI,EAAG,EAAI,EAAG,EAAE,EAAG,CAC1B,GAAM,GAAO,EAAI,GAAI,EAAI,EAAG,GAAI,IAAK,EAAG,IACxC,EAAI,GAAI,EAAG,GAGf,MAAO,IAAI,EAAG,GAAK,EAAG,iBAI1B,MAAI,GACK,GAAM,EAAI,GAEV,EAIJ,GAAM,IAAc,EAAG,CAAC,aAAA,KCzB/B,YAAa,EAAW,EAAe,GAAK,CAM1C,GALA,EACI,EAAE,MAAQ,EACV,IAAM,gEACF,EAAE,QAEN,EAAE,OAAS,EACb,MAAO,IAAK,EAAe,GACtB,CAKL,GAAM,GAAgB,EAAE,MAAM,MAAM,EAAG,EAAE,MAAM,OAAS,GAC7B,OAAO,CAAC,EAAO,IAAS,EAAQ,GACrD,EAAO,GACT,EACI,EACA,CACE,EAAe,EAAE,MAAM,EAAE,MAAM,OAAS,GACxC,EAAE,MAAM,EAAE,MAAM,OAAS,KAE/B,GACE,EAAmB,GACnB,EAAmB,GACzB,EAAK,QAAQ,GAAM,CACjB,GAAM,CAAC,EAAK,GAAO,GAAK,EAAiB,GACzC,EAAK,KAAK,GACV,EAAK,KAAK,KAEZ,GAAM,GAAI,EAAQ,GAAM,EAAM,GAAI,EAAE,OAC9B,EAAI,EAAQ,GAAM,EAAM,GAAI,EAAE,OACpC,MAAO,CAAC,EAAG,IAIf,YAAc,EAAa,EAAe,GAAK,CAC7C,MAAO,GAAO,KAAK,IAAK,CACtB,EACI,EAAE,MAAM,SAAW,EACnB,IAAM,0CACF,EAAE,MAAM,mBAEhB,GAAM,GAAI,EAAE,MAAM,GACZ,EAAI,EAAE,MAAM,GAEd,EAAI,GAAI,GACR,EAAI,GAAM,GAER,EAAQ,GAAS,CAAC,CAAC,IAAK,CAAC,EAAG,IAC9B,EAAc,GAAM,GAElB,EAAQ,GAAK,EAAI,EAAI,EAC3B,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAAG,CAG9B,GAAM,GAAQ,EACR,EAAQ,EACR,EAAQ,EACd,CAAC,EAAG,EAAG,GAAK,EAAO,KAAK,IAAqC,CAE3D,GAAM,GAAS,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,IAClC,EAAQ,GAAK,GACb,EAAM,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAG3B,EAAI,GAAM,GAAQ,EAAK,GAAI,GAAS,CAAC,CAAC,MAAO,GAAS,CAAC,CAAC,MAExD,EAAK,GAAI,EAAK,EAAI,EAAG,IACrB,EAAO,GAAI,EAAQ,GACrB,EAAK,MAAM,KAAO,EACpB,EAAI,GAAM,GAEV,EAAI,GACA,CACE,EACA,GAAM,EAAM,CAAC,EAAG,GAAI,CAAC,EAAK,MAAM,GAAK,EAAG,EAAK,MAAM,MAGrD,GAEN,GAAM,GAAM,GAAI,GAAI,GAAO,EAAG,GAAK,IAG7B,EAAW,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,IACpC,EAAsB,EAAI,EAAK,GAC/B,EAAe,GAAU,GAC/B,GAAI,IAAM,EACR,EAAI,GAAI,EAAU,GAAO,EAAW,GAAO,EAAI,SAC1C,CACL,GAAM,GACF,GAAI,EAAU,GAAO,EAAW,GAAO,EAAI,KAC/C,EAAI,GAAO,CAAC,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,GAAY,GAEpD,GAAM,GAAuB,GAAU,GACjC,EAAW,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,EAAE,MAAM,GAAK,IACnD,GAAI,IAAM,EACR,EAAI,GAAI,EAAU,GAAO,GAAO,EAAU,GAAI,QACzC,CACL,GAAM,GACF,GAAI,EAAU,GAAO,GAAO,EAAU,GAAI,IAC9C,EAAI,GAAO,CAAC,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,GAAY,GAEpD,MAAO,CAAC,EAAG,EAAG,KAEhB,GAAQ,CAAC,EAAO,EAAO,IAGzB,MAAI,CAAC,GAAgB,EAAI,GACvB,GAAI,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IACzB,EAAI,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,KAGpB,CAAC,EAAG,KAIR,GAAM,IAAK,EAAG,CAAC,IAAA,KCvLV,GAAZ,AAAA,UAAY,EAAS,CACnB,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,IAAA,GAAA,MACA,EAAA,EAAA,uBAAA,GAAA,2BAJU,IAAA,IAAS,KCyBrB,YACI,EAAsB,EACtB,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,uBAC9C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,wBAGjD,GAAM,GAAgB,GAAY,KAAQ,EAAU,EAAI,EAAS,GAEjE,GAAI,IAAc,GAAU,KAC1B,MAAO,GAET,GAAI,IAAc,GAAU,IAC1B,MAAO,IAAI,GAEb,GAAI,IAAc,GAAU,KAAM,CAChC,GAAI,GAAY,KACd,MAAO,IAAK,GACP,CACL,GAAM,GAAkB,EAAQ,KAAO,EAAS,KAC1C,EAAS,GAAI,GAAI,GAAe,GAAI,IAC1C,MAAO,GAAkB,EAAI,GAAI,EAAQ,GAAO,IACnB,GAGjC,GAAI,IAAc,GAAU,uBAAwB,CAClD,GAAI,GAAY,KACd,MAAO,IAAI,GAAI,GAAe,GAAO,EAAQ,OACxC,CACL,GAAM,GAAqB,EAAI,EAAU,GAAK,EAAQ,QAEhD,EACF,GAAK,GAAI,GAAS,EAAoB,GAAO,KAAM,WACvD,MAAO,IAAI,GAAI,GAAe,IAIlC,KAAM,OAAM,sBAAsB,KAE7B,GAAM,IAAsB,EAAG,CAAC,qBAAA,KCxCvC,YACI,EAAsB,EACtB,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,sBAC5C,EACF,EAAgB,EAAa,cAAe,sBAC5C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,uBAEjD,GACI,EAAQ,MAAO,EAAa,MAAO,iCAEvC,GAAM,GAAS,GAAI,GAAI,EAAS,IAChC,MAAO,IAAoB,EAAQ,EAAU,GAGxC,GAAM,IAAqB,EAAG,CAAC,oBAAA,KChBtC,YACI,EAAsB,EAA2B,EACjD,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,kBAC5C,EACF,EAAgB,EAAa,cAAe,kBAC5C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,mBAEjD,GACI,EAAQ,MAAO,EAAa,MAAO,6BAEvC,GAAM,GAAM,GAAO,GACb,EAAS,GAAI,EAAK,GAAI,EAAI,EAAS,GAAe,EAAM,KAC9D,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAiB,EAAG,CAAC,gBAAA,KCnBlC,YACI,EAAsB,EACtB,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAI,GAAU,EAAgB,EAAQ,SAAU,aAC1C,EAAe,EAAgB,EAAa,cAAe,aAC7D,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,cAEjD,GAAkB,EAAQ,MAAO,EAAa,MAAO,wBAErD,GAAM,GAAM,GAAO,GAEnB,EAAU,GAAI,EAAI,GAAO,GAAI,GAAU,GACvC,GAAM,GAAS,GAAK,GAAI,EAAK,EAAI,EAAS,KAC1C,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAY,EAAG,CAAC,WAAA,KCb7B,YACI,EAAsB,EACtB,EAA6B,EAAQ,EACrC,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,aAC5C,EAAe,EAAgB,EAAa,cAAe,aAC7D,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,cAEjD,GAAkB,EAAQ,MAAO,EAAa,MAAO,wBAErD,GAAM,GAAc,GAAO,GACrB,EAAQ,GAAI,GAAI,EAAc,IAC9B,EAAY,GAAQ,EAAO,GAC3B,EAAS,GAAI,EAAO,GAEpB,EACF,GAAI,EAAI,GAAO,IAAM,GAAO,IAAa,EAAI,EAAa,IAC9D,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAY,EAAG,CAAC,WAAA,KCtB7B,YACI,EAAsB,EACtB,EAA6B,EAAU,KACvC,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,WAC5C,EAAe,EAAgB,EAAa,cAAe,WAC7D,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,YAEjD,GAAkB,EAAQ,MAAO,EAAa,MAAO,sBAErD,GAAM,GAAM,GAAO,GACb,EAAgB,GAAO,GAEvB,EAAK,GAAI,EAAI,EAAS,GAAI,GAAI,EAAc,MAC5C,EACF,EAAI,GAAI,EAAK,GAAU,GAAI,GAAI,GAAI,EAAK,GAAe,KACrD,EAAS,GAAI,EAAI,GACvB,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAU,EAAG,CAAC,SAAA,KC3B3B,YACI,EAAsB,EACtB,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,oBAC5C,EACF,EAAgB,EAAa,cAAe,oBAC5C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,qBAEjD,GACI,EAAQ,MAAO,EAAa,MAAO,+BAEvC,GAAM,GAAS,GAAkB,EAAS,GAC1C,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAmB,EAAG,CAAC,kBAAA,KCxBpC,YACI,EAAsB,EAAoB,CAC5C,GAAM,GACF,EAAgB,EAAQ,SAAU,iCAChC,EACF,EAAgB,EAAQ,SAAU,iCACtC,GACI,EAAQ,MAAO,EAAQ,MAAO,4CAsBlC,GAAM,GAAY,GAAK,GACjB,EAAgB,EAAI,EAAS,GAC7B,EAAgB,GAAM,GAAI,GAAI,GAAI,MAExC,MAAO,IAAI,GAAI,EAAW,GAAgB,GAwB5C,YACI,EAAgC,EAChC,EAA6B,EAAiB,EAC9C,EAAY,GAAU,uBAAsB,CAC9C,GAAI,GAAoB,EACpB,EAAkB,mBAAoB,uBACpC,EAAU,EAAgB,EAAQ,SAAU,uBAC9C,EAAmB,KAOvB,GANI,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,wBAEjD,GACI,EAAkB,MAAO,EAAQ,MAAO,kCAExC,EAAiB,EAAG,CACtB,GAAM,GAAuB,GAAO,GAC9B,EAAM,GAAO,GACb,EAAO,GAAO,IAEpB,EACI,GAAI,EAAI,EAAmB,GAAI,EAAK,IAChC,EAAI,EAAM,IAEpB,GAAM,GAAS,GAA+B,EAAmB,GAEjE,MAAO,IAAoB,EAAQ,EAAU,GAGxC,GAAM,IAAsB,EAAG,CAAC,qBAAA,KCzDvC,YACI,EAAW,EAAW,EAAM,GAAE,CAKhC,GAJI,IAAQ,IACV,GAAM,EAAO,KAAO,GAGlB,IAAQ,EAAO,KAAO,EACxB,KAAM,OACF,mGACuC,EAAO,oBAC/B,KA6BrB,MAzBI,IAAW,CAAC,EAAgB,EAAgB,IAAsB,CAKhE,GAAM,GAAM,GAAU,EAAQ,CAAC,GADd,IAEX,EAAY,GAAI,GAAK,EAAQ,WAAY,GAC/C,EAAK,CAAC,EAAQ,IAEd,GAAM,GAAa,GAAI,EAAI,EAAW,IAatC,MAAO,CAAC,MAZS,GAAI,EAAY,CAAC,IAYnB,SAVE,CAAC,EAAO,IAAmB,CAC1C,GAAM,CAAC,EAAQ,GAAa,EACtB,EAAU,GAAqB,EAAG,MAAO,CAAC,IAChD,MAAO,CACL,EAAI,EAAQ,EAAI,GACZ,GAAI,GAAK,EAAQ,WAAY,GAAI,KACrC,EAAI,EAAQ,EAAI,GACZ,GAAI,GAAI,GAAY,GAAK,EAAQ,kBAM/B,EAAQ,GAsB1B,YACI,EAA4B,EAC5B,EAA6B,EAAiB,EAC9C,EAAY,GAAU,uBAAsB,CAC9C,GAAI,GACA,EAAgB,EAAc,eAAgB,uBAC5C,EAAU,EAAgB,EAAQ,SAAU,uBAC9C,EAAmB,KASvB,GAPI,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,wBAGjD,GACI,EAAc,MAAO,EAAQ,MAAO,kCAEpC,EAAiB,EAAG,CACtB,GAAM,GAAuB,GAAO,GAC9B,EAAM,GAAO,GACb,EAAa,GAAO,EAAc,MAAM,IAE9C,EACI,GAAI,EAAI,EAAe,GAAI,EAAK,IAC5B,GAAI,EAAsB,IAGpC,GAAM,GAAS,GAA+B,EAAe,GAE7D,MAAO,IAAoB,EAAQ,EAAU,GAGxC,GAAM,IAAsB,EAAG,CAAC,qBAAA,KC6DjC,GAAW,CACf,IAAA,GACA,KAAA,GACA,KAAA,GACA,MAAA,IASI,GAAS,CACb,cAAA,GACA,WAAA,GACA,MAAA,GACA,KAAA,IAgBI,GAAQ,CACZ,cAAA,GACA,sBAAA,GACA,eAAA,GACA,iBAAA,GACA,cAAA,GACA,kBAAA,GACA,uBAAA,GACA,2BAAA,GACA,gCAAA,GACA,wBAAA,GACA,6BAAA,GACA,UAAA,IAOI,GAAS,CACb,SAAA,GACA,YAAA,GACA,GAAA,IAaI,GAAS,CACb,mBAAA,GACA,oBAAA,GACA,eAAA,GACA,UAAA,GACA,UAAA,GACA,QAAA,GACA,iBAAA,GACA,oBAAA,GACA,oBAAA,IC5PI,GAAA,aAAkC,GAAY,CAiBlD,SAAS,EAAiB,EAAa,GAAO,EAAoB,CAEhE,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,KAAK,iBAAiB,EAAG,GAEhD,GAAI,GAAW,KAAM,CACnB,GAAM,GACF,EAAQ,IAAI,GAAM,EAAC,KAAM,EAAE,KAAM,OAAQ,EAAM,EAAE,SACrD,KAAK,eAAe,OAEpB,MAAK,eAAe,GAMtB,MAFA,IAAQ,GAEJ,EACK,EAEP,GAAM,UACC,SAOP,aAAU,CACZ,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,KAAK,YAGJ,qBAAmB,CAC3B,KAAK,YAAc,KAAK,WAAa,EAgBvC,iBAAiB,EAAiB,EAAoB,CAEpD,MAAO,IAAc,EAAG,GAgB1B,SAAO,CACD,KAAK,aAAe,MACtB,GAAQ,KAAK,kBAIX,iBAAc,CAClB,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,CACL,KAAM,OAEN,OAAQ,GAAO,KAAK,YAAa,eAI/B,aAAU,CACd,KAAM,IAAI,OAAM,gEAGZ,YAAW,EAA2B,CAC1C,KAAM,IAAI,OACN,4DACG,KAAK,uBAUE,mBAAkB,EAA2B,CAE3D,MAAA,MAAK,YAAe,MAAM,GAAa,GAAG,OAAO,QAAQ,GAClD,EAAa,MAAM,KAI9B,OAAO,eAAe,GAAW,OAAO,YAAa,CACnD,MAAQ,GACC,EAAS,UAAY,MAAQ,EAAS,kBAAoB,MAC7D,EAAS,gBAAkB,OC3I7B,GAAA,IAAA,aAAiC,GAAS,CAM9C,YACc,EAAgC,EAChC,EAAkB,KAAI,CAClC,QAFY,KAAA,aAAA,EAAgC,KAAA,IAAA,EAChC,KAAA,QAAA,EALN,KAAA,iBAAwC,GACxC,KAAA,mBAA0C,GAO5C,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAIlC,eAAe,EAAiD,CACxC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,iBAAiB,IAAM,MAC9B,MAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,eACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,cACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAInD,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAkB,KAAK,iBAAiB,GAAG,SAC3C,EAAoB,KAAK,mBAAmB,GAAG,SAErD,EAAK,IAAK,CACR,GAAM,GACF,GAAI,EAAI,EAAiB,KAAK,KAC1B,EAAI,GAAO,GAAW,EAAI,KAAK,MAEjC,EACF,EAAI,GAAI,GAAK,GAAI,EAAmB,KAAK,UACjC,GAAK,GAAI,EAAiB,KAAK,WACnC,GAEF,EACF,GAAI,EAAI,EAAmB,KAAK,KAC5B,EAAI,GAAO,GAAU,EAAI,KAAK,MAEtC,EAAgB,OAAO,GACvB,EAAkB,OAAO,GAEzB,GAAM,GAAW,GAAI,EAAI,EAAS,CAAC,KAAK,cAAe,GACvD,EAAM,OAAO,OAGjB,KAAK,sBAGP,SAAO,CACD,KAAK,oBAAsB,MAC7B,IAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,WACzC,GAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,iBAIzC,aAAU,CAEd,GAAM,GACF,CAAC,GAAG,KAAK,iBAAkB,GAAG,KAAK,oBACvC,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,EAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GAAgB,EAAa,OAAS,EACtC,EAAY,GAClB,KAAK,iBACD,EAAa,MAAM,EAAG,GAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,MAEnD,KAAK,mBACD,EAAa,MAAM,EAAe,EAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,MAI7C,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,IAAO,KAAK,IACZ,QAAW,KAAK,eAKb,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,EAAO,aAAiB,EAAO,IAAQ,EAAO,WAjHxD,GAAA,UAAY,WAoHrB,GAAc,ICtHR,GAAA,IAAA,aAAgC,GAAS,CAM7C,YACc,EAA8B,EAA0B,GAAG,CACvE,QADY,KAAA,aAAA,EAA8B,KAAA,wBAAA,EAHpC,KAAA,iBAAwC,GAOhD,eAAe,EAAiD,CACxC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACzC,GAAI,KAAK,iBAAiB,IAAM,KAAM,CACpC,GAAM,GAAY,GAClB,KAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,gBACjB,SAAU,EACN,IAAM,GAAK,EAAM,MAAO,KAAK,yBAClB,SAAS,KAI5B,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAkB,KAAK,iBAAiB,GAAG,SAEjD,EAAK,IAAK,CACR,GAAM,GAAqB,GAAI,EAAiB,GAAO,IACvD,EAAgB,OAAO,GAEvB,GAAM,GAAW,GACb,EAAI,GAAI,EACA,GAAK,GAAI,EAAoB,EAAO,QAAQ,aAChD,CAAC,KAAK,cACV,GACJ,EAAM,OAAO,OAGjB,KAAK,sBAGP,SAAO,CACD,KAAK,kBAAoB,MAC3B,GAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,gBAIvC,aAAU,CAEd,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,iBAAiB,IAC9D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GAAY,GAClB,KAAK,iBAAmB,EAAa,IACjC,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,MAG/D,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,wBAA2B,KAAK,+BAK7B,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,EAAO,aAAiB,EAAO,2BA/EzC,GAAA,UAAY,UAkFrB,GAAc,ICjFR,GAAA,IAAA,aAA6B,GAAS,CAS1C,YACc,EAAgC,EAChC,EAAyB,EAAkB,KAAI,CAC3D,QAFY,KAAA,aAAA,EAAgC,KAAA,MAAA,EAChC,KAAA,MAAA,EAAyB,KAAA,QAAA,EAL/B,KAAA,uBAA8C,GAC9C,KAAA,wBAA+C,GAMrD,EAAK,IAAK,CAER,KAAK,SAAW,GAAO,GAAO,WAC9B,KAAK,SAAW,GAAO,GAAO,aAG5B,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAIlC,eAAe,EAAiD,CAC9D,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,GAChB,EAAK,IAAK,CACR,GAAM,GAAmB,GAAI,EAAG,KAAK,UAC/B,EAAmB,GAAI,EAAG,KAAK,UAErC,EAAS,QAAQ,CAAC,EAAM,IAAK,CAC3B,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,MACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,wBAAwB,IAAM,MACrC,MAAK,wBAAwB,GAAK,CAChC,aAAc,GAAG,MACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAInD,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAc,KAAK,uBAAuB,GAAG,SAC7C,EAAe,KAAK,wBAAwB,GAAG,SAE/C,EACF,GAAI,EAAI,EAAa,KAAK,OAAQ,EAAI,EAAU,EAAI,KAAK,QACvD,EACF,GAAI,EAAI,EAAc,KAAK,OACvB,EAAI,GAAO,GAAW,EAAI,KAAK,QAEjC,EAA2B,GAAI,EAAgB,GAC/C,EACF,GAAI,EAAiB,GAEzB,EAAY,OAAO,GACnB,EAAa,OAAO,GAEpB,GAAM,GACF,GAAI,EAAI,GAAI,EACA,GAAI,GAAK,GAA4B,KAAK,UAC9C,CAAC,KAAK,cACV,GACR,EAAM,OAAO,KAGf,KAAK,SAAS,OAAO,EAAI,KAAK,SAAU,KAAK,QAC7C,KAAK,SAAS,OAAO,EAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,SAAO,CACL,KAAK,SAAS,UACd,KAAK,SAAS,UAEV,KAAK,wBAA0B,MACjC,GAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,yBAA2B,MAClC,GAAQ,KAAK,wBAAwB,IAAI,GAAK,EAAE,gBAI9C,aAAU,CAEd,GAAM,GACF,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,yBAC7C,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,EAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,EAAK,IAAK,CACR,KAAK,SAAS,OAAO,GAAI,KAAK,MAAO,KAAK,YAAc,IACxD,KAAK,SAAS,OAAO,GAAI,KAAK,MAAO,KAAK,YAAc,MAG1D,GAAM,GAAgB,EAAa,OAAS,EACtC,EAAY,GAClB,KAAK,uBACD,EAAa,MAAM,EAAG,GAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,MAEnD,KAAK,wBACD,EAAa,MAAM,EAAe,EAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,MAI7C,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,eAKb,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,MAAU,EAAO,MAChD,EAAO,WA5IN,GAAA,UAAY,OA+IrB,GAAc,IClJR,GAAA,IAAA,aAA+B,GAAS,CAS5C,YACc,EAAgC,EAChC,EAAyB,EAAkB,KAC3C,EAAQ,EAAG,CACvB,QAHY,KAAA,aAAA,EAAgC,KAAA,MAAA,EAChC,KAAA,MAAA,EAAyB,KAAA,QAAA,EACzB,KAAA,MAAA,EANN,KAAA,uBAA8C,GAC9C,KAAA,2BAAkD,GAQxD,EAAK,IAAK,CACR,KAAK,UAAY,GAAO,GAAG,WAC3B,KAAK,SAAW,GAAO,GAAO,aAG5B,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAIlC,eAAe,EAAiD,CAC9D,GAAM,GAAgB,MAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,GAEhB,EAAK,IAAK,CACR,GAAM,GAAmB,GAAI,EAAG,KAAK,UAC/B,EACF,GAAI,CAAC,KAAK,aAAc,GAAI,EAAI,KAAK,UAAW,KAAK,OAAQ,IAEjE,EAAc,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,MACjB,SAAU,GAAU,GAAO,SAAS,KAGpC,KAAK,2BAA2B,IAAM,MACxC,MAAK,2BAA2B,GAAK,CACnC,aAAc,GAAG,MACjB,SAAU,GAAU,GAAO,SAAS,KAIxC,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAc,KAAK,uBAAuB,GAAG,SAC7C,EAAkB,KAAK,2BAA2B,GAAG,SAErD,EACF,GAAI,EAAI,EAAa,KAAK,OAAQ,EAAI,EAAU,EAAI,KAAK,QAEvD,EAAM,EAAI,EAAiB,KAAK,OAChC,EAAM,GAAI,GAEV,EAAqB,GAAQ,EAAK,GAExC,EAAY,OAAO,GACnB,EAAgB,OAAO,GAEvB,GAAM,GACF,GAAI,EAAI,GAAI,EAAI,GACR,GAAI,EAAgB,GAAI,EAAoB,KAAK,WACrD,GAER,EAAM,OAAO,KAGf,KAAK,UAAU,OAAO,GAAI,KAAK,UAAW,IAC1C,KAAK,SAAS,OAAO,EAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,SAAO,CACL,KAAK,SAAS,UACd,KAAK,UAAU,UAEX,KAAK,wBAA0B,MACjC,GAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,4BAA8B,MACrC,GAAQ,KAAK,2BAA2B,IAAI,GAAK,EAAE,gBAIjD,aAAU,CACd,KAAM,IAAI,OAAM,wDAGZ,YAAW,EAA2B,CAC1C,KAAM,IAAI,OAAM,mDAGlB,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,QAChB,MAAS,KAAK,aAKX,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,MAAU,EAAO,MAChD,EAAO,QAAY,EAAO,SAvHzB,GAAA,UAAY,SA0HrB,GAAc,IChIR,GAAA,IAAA,aAA4B,GAAS,CAKzC,YAAsB,EAAoB,CACxC,QADoB,KAAA,aAAA,EAEpB,KAAK,gBAAgB,GAGvB,eAAe,EAA+C,CAC3C,AAAA,OAAM,QAAQ,GAC3B,EAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,IACP,QAAQ,CAAC,EAAM,IAAK,CAC3B,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAEF,GAAM,GAAQ,EAAO,oBAAoB,GACzC,EAAK,IAAK,CACR,GAAM,GAAW,GAAI,EAAI,KAAK,EAAG,GAAW,GAC5C,EAAM,OAAO,OAGjB,KAAK,sBAMP,gBAAgB,EAAoB,CAClC,KAAK,aAAe,EAChB,KAAK,GAAK,MACZ,KAAK,EAAE,UAET,KAAK,EAAI,GAAK,GAAO,CAAC,IAGxB,SAAO,CACL,KAAK,EAAE,eAGH,aAAU,CACd,MAAO,CAAC,KAAM,MAAK,uBAGf,YAAW,EAA2B,CAE1C,GADA,EAAe,KAAM,MAAK,kBAAkB,GACxC,EAAa,SAAW,EAC1B,KAAM,IAAI,OAAM,iDAIpB,WAAS,CACP,MAAO,CAAC,aAAgB,KAAK,oBAIxB,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,EAAO,gBA7DjB,GAAA,UAAY,MAgErB,GAAc,IChER,GAAA,IAAA,aAAiC,GAAY,CAMjD,YACc,EAA8B,EAChC,EAAc,GAAK,CAC7B,MAAM,GAFM,KAAA,aAAA,EAA8B,KAAA,SAAA,EAChC,KAAA,YAAA,EAJJ,KAAA,cAAqC,GAM3C,KAAK,EAAI,GAAO,KAAK,UAGvB,eAAe,EAAiD,CACxC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACzC,GAAI,KAAK,cAAc,IAAM,KAAM,CACjC,GAAM,GAAY,GAClB,KAAK,cAAc,GAAK,CACtB,aAAc,GAAG,aACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,KAInD,GAAM,GAAe,KAAK,cAAc,GAAG,SACrC,EAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GAClB,GAAY,MAIhB,EAAK,IAAK,CACR,GAAI,GACE,EAAkB,GAAI,EAAI,KAAK,EAAG,GAAe,GACnD,KAAK,YACP,EAAW,GACP,EAAI,KAAK,EAAG,GAAI,EAAU,EAAI,EAAiB,KAAK,KAAM,GAE9D,EAAW,GAAI,EAAI,KAAK,EAAG,GAAkB,GAE/C,EAAa,OAAO,GACpB,EAAM,OAAO,OAGjB,KAAK,sBAGP,SAAO,CACL,KAAK,EAAE,UACH,KAAK,eAAiB,MACxB,GAAQ,KAAK,cAAc,IAAI,GAAK,EAAE,WAS1C,YAAY,EAAgB,CAC1B,KAAK,SAAW,OAGZ,aAAU,CAEd,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,cAAc,IAC3D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GAAY,GAClB,KAAK,cAAgB,EAAa,IAC9B,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,MAG/D,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,SAAY,KAAK,SACjB,YAAe,KAAK,mBAKjB,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,SAAa,EAAO,eA3FlD,GAAA,UAAY,WA8FrB,GAAc,IC/FR,GAAA,IAAA,aAAgC,GAAS,CAS7C,YACc,EAAgC,EAAQ,GACxC,EAAW,EAAe,EAAkB,KACtD,EAAW,GAAK,CAClB,QAOA,GAVY,KAAA,aAAA,EAAgC,KAAA,MAAA,EAChC,KAAA,SAAA,EAA0B,KAAA,QAAA,EANhC,KAAA,uBAA8C,GAC9C,KAAA,mBAA0C,GAC1C,KAAA,qBAA4C,GAQlD,KAAK,SAAW,EAEZ,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAE5B,GAAgB,KAClB,KAAM,IAAI,OAAM,sDAIpB,eAAe,EAA+C,CACtC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,QACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,aACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,qBAAqB,IAAM,MAAQ,KAAK,UAC/C,MAAK,qBAAqB,GAAK,CAC7B,aAAc,GAAG,OACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAInD,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAwB,KAAK,uBAAuB,GAAG,SACvD,EAAqB,KAAK,mBAAmB,GAAG,SACtD,EAAK,IAAK,CACR,GAAM,GACF,GAAI,EAAI,EAAuB,KAAK,OAChC,EAAI,GAAO,GAAW,EAAI,KAAK,QAEvC,GAAI,KAAK,SAAU,CACjB,GAAM,GAAsB,KAAK,qBAAqB,GAAG,SAEnD,EACF,GAAI,EAAI,EAAqB,KAAK,OAC9B,EAAI,EAAU,EAAI,KAAK,QAEzB,EACF,GAAI,EAAI,EAAU,KAAK,cACnB,GACI,GAAI,EACA,GAAI,GAAO,GAAyB,KAAK,YACnD,EACF,GAAI,EAAI,EAAoB,KAAK,UAAW,GAEhD,EAAsB,OAAO,GAC7B,EAAoB,OAAO,GAC3B,EAAmB,OAAO,GAE1B,GAAM,GAAW,GAAI,EAAO,GAC5B,EAAM,OAAO,OACR,CAEL,GAAM,GACF,GAAI,EAAI,EAAuB,KAAK,OAChC,EAAI,GAAO,GAAW,EAAI,KAAK,QAEjC,EACF,GAAI,EAAI,EAAoB,KAAK,UAC7B,GAAI,EAAI,EAAU,KAAK,cACnB,GAAK,GAAI,EAA0B,KAAK,YAEpD,EAAsB,OAAO,GAC7B,EAAmB,OAAO,GAE1B,GAAM,GAAW,GAAI,EAAO,GAC5B,EAAM,OAAO,QAInB,KAAK,sBAGP,SAAO,CACD,KAAK,wBAA0B,MACjC,GAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,sBAAwB,MAAQ,KAAK,UAC5C,GAAQ,KAAK,qBAAqB,IAAI,GAAK,EAAE,WAE3C,KAAK,oBAAsB,MAC7B,GAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,gBAIzC,aAAU,CAEd,GAAM,GACF,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,oBAC7C,MAAI,MAAK,UACP,EAAU,KAAK,GAAG,KAAK,sBAElB,CAAC,KAAM,MAAK,kBAAkB,OACjC,EAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GACF,KAAK,SAAW,EAAa,OAAS,EAAI,EAAa,OAAS,EAC9D,EAAY,GAClB,KAAK,uBACD,EAAa,MAAM,EAAG,GAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,MAEnD,KAAK,mBACD,EAAa,MAAM,EAAe,EAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,MAEvC,KAAK,UACP,MAAK,qBACD,EAAa,MAAM,EAAgB,EAAG,EAAgB,GACjD,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,OAK/C,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,SAAY,KAAK,SACjB,QAAW,KAAK,QAChB,SAAY,KAAK,gBAKd,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,MAAU,EAAO,SAChD,EAAO,QAAY,EAAO,YA5KzB,GAAA,UAAY,UA+KrB,GAAc,ICxLR,GAAA,IAAA,KAA4B,OAsCzB,KAAI,EAAoB,CAC7B,MAAO,IAAI,IAAa,SAkBnB,UAAS,EAAsB,EAAkB,EAAc,GAAK,CAEzE,MAAO,IAAI,IAAkB,EAAc,EAAU,SAuBhD,SACH,EAAsB,EAAQ,GAAI,EAAW,EAAK,EAAkB,KACpE,EAAW,GAAK,CAClB,MAAO,IAAI,IACP,EAAc,EAAO,EAAU,EAAS,SAevC,MACH,EAAe,KAAO,EAAQ,GAAK,EAAQ,KAC3C,EAAkB,KAAI,CACxB,MAAO,IAAI,IAAc,EAAc,EAAO,EAAO,SAehD,UAAS,EAAe,KAAM,EAAM,IAAK,EAAkB,KAAI,CAEpE,MAAO,IAAI,IAAkB,EAAc,EAAK,SAgB3C,QACH,EAAe,KAAO,EAAQ,GAAK,EAAQ,KAAO,EAAkB,KACpE,EAAQ,EAAG,CACb,MAAO,IAAI,IAAgB,EAAc,EAAO,EAAO,EAAS,SAmB3D,SAAQ,EAAsB,EAA0B,GAAG,CAEhE,MAAO,IAAI,IAAiB,EAAc,KC3JjC,GAAQ,CACnB,IAAK,GAAsB,IAC3B,SAAU,GAAsB,SAChC,SAAU,GAAsB,SAChC,QAAS,GAAsB,QAC/B,QAAS,GAAsB,QAC/B,OAAQ,GAAsB,OAC9B,KAAM,GAAsB,MCrBxB,GAA2B,KAC3B,MAAO,wBAA0B,YAC5B,sBACE,MAAO,eAAiB,YAC1B,aAED,GAAgB,OAa1B,aAAkB,CAChB,MAAO,IAAI,SAAc,GAAW,GAAc,IAAM,MCrC1D,GAAA,GAAA,GAAA,GAAA,EAAA,CAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,MAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,2BAAA,IAAA,GAAA,2BAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,yBAAA,IAAA,GAAA,0BAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,+BAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,SAAA,IAAA,GAAA,UAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,eAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,YAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,YAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,IAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,WAAA,IAAA,GAAA,WAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,cAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,KAAA,IAAA,KCmBM,YAAiC,EAAoB,EAAY,CACrE,GAAM,GAAO,EAAO,GAAG,OACvB,EAAO,QAAQ,CAAC,EAAO,IAAK,CACrB,EACD,EAAM,SAAW,EACjB,IACI,kBAAkB,uBAA0B,gDAChB,QAGjC,EACD,GAAQ,GAAK,EAAO,EACpB,IAAM,kBAAkB,kCAAqC,EAAO,MAExE,GAAM,GAAa,EAAO,GAC1B,EAAO,QAAQ,CAAC,EAAO,IAAK,CAC1B,OAAS,GAAI,EAAG,EAAI,EAAM,IACnB,EACA,IAAM,GAAU,EAAM,KAAO,EAAW,GACzC,IAAM,kBAAkB,wBAA2B,OAAO,4CACb,sCACN,QAK3C,YAA0B,EAAoB,EAAY,CAC9D,GAAM,GAAc,EAAO,GAAG,QAC9B,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAY,IAAS,EAAO,GAAG,GAEjC,MAAO,GC3BF,GAAM,IAAwB,GAS/B,YAAmC,EAAc,CACrD,MAAI,IAAU,GACL,EAEF,GAAe,EAAQ,KAAK,MAAM,KAAK,KAAK,KClB/C,YACF,EAAiC,EACjC,EAAkB,CACpB,GAAM,GACF,EAAc,OAAO,IAAW,SAAW,EAAS,EAAO,IACzD,EACF,EAAe,OAAO,IAAW,SAAW,EAAS,EAAO,IAChE,MAAO,CAAC,EAAS,GCAb,YACF,EAAsB,EAAsB,EAC5C,EAAe,GAAI,CACrB,GAAI,GAAqB,GACzB,GAAI,EACF,EAAW,EAAS,OAAO,EAAW,MAAM,IAC5C,EAAS,KAAK,EAAW,GAAK,GAC9B,EAAW,EAAS,OAAO,EAAW,MAAM,QACvC,CACL,EAAW,EAAS,OAAO,EAAW,IACtC,GAAM,GAAgB,EAAW,OACjC,OAAS,GAAI,EAAG,EAAI,EAAe,EAAE,EACnC,EACI,EAAS,OAAO,CAAC,EAAW,EAAI,GAAK,EAAW,GAAI,EAAW,KAErE,EAAW,EAAS,OAAO,EAAW,MAAM,EAAgB,IAE9D,MAAO,GAYH,YACF,EAAsB,EACtB,EAAe,GAAI,CACrB,GAAM,GAAW,GACjB,GAAI,EAAc,CAChB,EAAS,KAAK,GACd,OAAS,GAAI,EAAiB,EAAG,EAAI,EAAc,EAAE,EAC/C,GAAK,EAAI,EACX,GAAS,KAAK,GACd,EAAS,KAAK,EAAK,GAAiB,KAEpC,EAAS,KAAK,OAGb,CACL,GAAM,GAAsB,GACtB,EAAqB,GAC3B,OAAS,GAAI,EAAG,EAAI,EAAc,EAAE,EAC9B,GAAK,EAAiB,EAAI,GAAK,EAAI,GAAM,EAC3C,EAAmB,KAAK,GAExB,EAAoB,KAAK,GAG7B,EAAS,KAAK,GAAG,GACjB,EAAS,KAAK,GACd,EAAS,KAAK,GAAG,GAEnB,MAAO,GAYH,YACF,EAAsB,EAAsB,EAC5C,EAAe,GAAI,CACrB,GAAM,GAAmB,GAErB,EACF,EAAiB,KAAK,EAAW,GAAK,GAEtC,EAAiB,KAAK,EAAW,GAAK,GAGxC,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACnC,GAAK,EAAW,OACd,EACF,EAAiB,KAAK,EAAW,EAAI,GAAK,EAAW,IAErD,EAAiB,KAAK,EAAW,GAAK,EAAW,EAAI,IAGvD,EAAiB,KAAK,EAAW,IAIrC,MAAO,GAOH,YACF,EAAmB,EAAkB,CACvC,GAAM,GAAmB,CAAC,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,EAAiB,KAAK,EAAM,GAAG,IAEjC,MAAO,GAcH,YACF,EAA0B,EAAmB,EAAkB,CACjE,GAAM,GAAY,EAAe,MAAM,EAAG,GAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,EAAU,KAAK,EAAe,EAAI,GAAK,EAAM,GAAG,GAAK,EAAM,GAAG,IAGhE,MAAO,GCtIF,GAAM,IAAkB,mBAClB,GAAa,mBCDb,GAAQ,SACR,GAAS,WACT,GAAS,YACT,GAAS,YACT,GAAS,aACT,GAAS,YCHhB,eAAkB,EAAc,CAC/B,IAAM,QAAQ,YACjB,QAAQ,KAAK,GAAG,GAId,eAAiB,EAAc,CAC9B,IAAM,QAAQ,YACjB,QAAQ,IAAI,GAAG,GCKb,YACF,EAAoB,EAAkB,CACxC,GAAI,EAAK,SAAW,EAAK,OACvB,KAAM,IAAI,OACN,gEACG,EAAK,iBAAiB,EAAK,WAEpC,GAAM,GAAS,GAAI,cAAa,EAAK,OAAS,GAC9C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EACtC,EAAO,GAAK,EAAK,EAAI,GACrB,EAAO,EAAI,GAAK,EAAK,EAAI,GAE3B,MAAO,GAiBH,YAAiC,EAAqB,CAE1D,GAAM,GAAO,GAAI,cAAa,EAAQ,OAAS,GACzC,EAAO,GAAI,cAAa,EAAQ,OAAS,GAC/C,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,GAAK,EACvC,EAAK,EAAI,GAAK,EAAQ,GACtB,EAAK,EAAI,GAAK,EAAQ,EAAI,GAE5B,MAAO,CAAC,KAAA,EAAM,KAAA,GAOV,YAA+B,EAAqB,CAExD,GAAM,GAAM,KAAK,KAAK,EAAQ,OAAS,GACjC,EAAO,GAAI,cAAa,GACxB,EAAO,GAAI,cAAa,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,GAAK,EACvC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,GAClC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,EAAI,GAExC,MAAO,CAAC,KAAA,EAAM,KAAA,GAOV,YAA8B,EAAqB,CAEvD,GAAM,GAAM,KAAK,MAAM,EAAQ,OAAS,GAClC,EAAO,GAAI,cAAa,GACxB,EAAO,GAAI,cAAa,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,GAAK,EACvC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,GAClC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,EAAI,GAExC,MAAO,CAAC,KAAA,EAAM,KAAA,GAQV,YACF,EAAuB,EAAa,CACtC,GAAM,GAAO,EAAQ,EAAQ,GACvB,EAAO,EAAQ,EAAQ,EAAI,GACjC,MAAO,CAAC,KAAA,EAAM,KAAA,GASV,YACF,EAAkB,EAAc,EAAc,EAAa,CAC7D,EAAK,EAAQ,GAAK,EAClB,EAAK,EAAQ,EAAI,GAAK,EAMlB,YACF,EAAW,EAAgB,CAC7B,GAAM,GAAO,GAAI,cAAa,EAAI,GAC5B,EAAO,GAAI,cAAa,EAAI,GAClC,OAAS,GAAI,EAAG,EAAI,KAAK,KAAK,EAAI,GAAI,IAAK,CACzC,GAAM,GAAK,GAAU,EAAI,IAAM,KAAK,GAAM,GAAI,GAC9C,EAAK,GAAK,KAAK,IAAI,GACnB,EAAK,GAAK,KAAK,IAAI,GAErB,MAAO,CAAC,KAAA,EAAM,KAAA,GAMV,YACF,EAAW,EAAW,EAAgB,CACxC,GAAM,GAAK,GAAU,EAAI,IAAM,KAAK,GAAM,GAAI,GACxC,EAAO,KAAK,IAAI,GAChB,EAAO,KAAK,IAAI,GACtB,MAAO,CAAC,KAAA,EAAM,KAAA,GC9HV,YACF,EAAsB,EACtB,EAAO,EAAC,CACV,GAAI,GAAa,GACjB,GAAI,MAAQ,IAAqB,SAC/B,EACI,EAAE,MAAM,GAAQ,GAAoB,EACpC,IAAM,iDACV,EACI,GAAI,OAAM,GAAiB,KAAK,EAAE,MAAM,GAAQ,OAC/C,CACL,GAAM,GAAY,EAAgB,OAAO,CAAC,EAAO,IAC3C,KAAU,IACZ,IAAS,GAEJ,GACN,GACH,EACI,GAAa,EACb,IAAM,2DACV,GAAM,GAAW,EAAgB,QAAQ,IAGzC,GAAI,IAAa,GAAI,CACnB,GAAM,GAAQ,EAAgB,OAAO,CAAC,EAAG,IAAM,EAAI,EAAI,EAAI,EAAI,GAC/D,EAAgB,GAAY,EAAE,MAAM,GAAQ,EAE9C,EACI,EAAE,MAAM,KAAU,EAAgB,OAAO,CAAC,EAAG,IAAM,EAAI,GACvD,IAAM,+DACV,EAAa,EAGf,MAAO,GC1DT,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,yBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,8BAAA,IAAA,KA6BM,YACF,EAAgB,EAAmB,CACrC,GAAI,GAAO,GACP,EASJ,IAPI,GAAU,GACZ,GAAM,EACN,EAAO,IAEP,EAAM,GAAe,EAAQ,KAAK,MAAM,KAAK,KAAK,KAG7C,CAAC,GACF,EAAM,GAAe,IAAQ,EAC/B,EAAO,GAEP,EAAM,GAAe,EAAQ,EAAM,GAGvC,MAAO,GAGH,YACF,EAAkB,EAAc,EAAmB,CACrD,GAAM,GAAW,GACX,EAAO,EAAO,OACpB,OAAS,GAAM,EAAG,EAAM,EAAM,IACxB,IAAQ,EACV,EAAS,KAAK,EAAO,IAErB,EAAS,KAAK,GAGlB,MAAO,GAWH,YACF,EAAe,EAAqB,EACpC,EAAiB,CACnB,GAAM,GAAc,EAAQ,MAAM,OAC5B,EAAQ,EAAE,MAAM,OAEtB,GAAI,IAAc,GACZ,GAAY,CAAC,GAAe,EAAY,GAC1C,KAAM,IAAI,OAAM,sCAAsC,MAClD,eAAyB,KAQjC,GAJI,EAAY,GACd,IAAa,GAGX,EAAY,EACd,KAAM,IAAI,OAAM,cAAc;MAC5B,OAGJ,GAAI,EAAO,EACT,KAAM,IAAI,OAAM,cACZ,0CAAkD,OAGxD,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,GAAI,EAAE,MAAM,KAAO,EAAQ,MAAM,GAC/B,KAAM,IAAI,OACN,WAAW,OAAO,EAAE,MAAM,uCACtB,OAAO,EAAQ,MAAM,OAGjC,GAAM,GAAU,EAAE,MAAM,GAElB,EAAwB,GAC1B,EAAY,EACZ,EAAY,EACZ,EAAY,EAEhB,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,EAAY,KAAK,EAAE,MAAM,IACzB,GAAa,EAAE,MAAM,GAGvB,OAAS,GAAI,EAAW,EAAI,EAAM,IAChC,EAAY,KAAK,EAAE,MAAM,IACzB,GAAa,EAAE,MAAM,GAGvB,OAAS,GAAI,EAAW,EAAI,EAAa,IACvC,EAAY,KAAK,EAAQ,MAAM,IAGjC,OAAS,GAAI,EAAO,EAAG,EAAI,EAAO,IAChC,EAAY,KAAK,EAAE,MAAM,IACzB,GAAa,EAAE,MAAM,GAGvB,MAAO,CAAC,UAAA,EAAW,UAAA,EAAW,UAAA,EAAW,QAAA,EAAS,YAAA,GVtF9C,YAAiC,EAAkB,CACvD,GAAI,CAEF,MAAO,GAAK,IAAI,GAAO,GAAa,UAC7B,EAD6B,CAEpC,KAAM,IAAI,OACN,4DAA4D,MAI9D,YAAiC,EAAiB,CACtD,MAAO,GAAQ,IAAI,GAAK,GAAa,IW1DvC,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,wBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,UAAA,IAAA,KEmBM,YACF,EAAiC,EAAc,CAC5C,MAAM,QAAQ,IACjB,GAAS,CAAC,IAEZ,EAAO,QAAQ,GAAI,CACb,GAAK,MACP,EAAK,OACD,EAAE,QAAU,YACZ,IAAM,GACF,8DCVd,GAAM,IAAY,GAAa,UAiBzB,GAAA,aAA8B,GAAa,CAU/C,aAAA,CACE,QAVK,KAAA,UAAY,GAGX,KAAA,SAAW,GAQjB,KAAK,KAAO,GAAI,IAAY,KAAM,MAN5B,YAAU,CAChB,MAAO,IAAe,aAQxB,MAAM,EAAoC,EAAiB,EAAe,CAEpE,KAAK,UACP,MAAK,SAAW,GACZ,IAAM,IAAI,YACZ,EAAa,KACT;;;gCAYR,GAAM,GAAS,CAAC,GAAI,KAAK,cAEzB,MAAA,MAAK,KAAK,IAAI,EAAQ,CAAC,OAAA,EAAQ,MAAA,EAAO,SAAU,IAEzC,EAST,eACI,EAAiB,EACjB,EAA4C,CAC9C,GAAI,GACJ,GAAI,IAAU,UAAY,GAAU,MAAQ,EAAO,OAAS,GACxD,EAAK,SAAS,EAAO,IAAK,CAC5B,GAAM,GACD,EAA0B,IAAI,GAAK,EAAK,aAAa,IAE1D,EAAQ,KAAK,MAAM,EAAe,EAAO,OAEzC,GAAQ,KAAK,MAAM,EAAsB,EAAO,GAGlD,MAAO,CAAC,OAAQ,EAAO,MAAA,EAAO,MAAA,GAIhC,SAAS,EAAc,CACrB,MAAI,MAAK,KAAK,IAAI,GACG,KAAK,KAAK,IAAI,GACf,SAEb,EAIT,OAAO,EAAc,CACnB,GAAM,GAAa,KAAK,KAAK,IAAI,GACjC,EAAW,WAIb,OAAO,EAAc,CACnB,GAAI,KAAK,KAAK,IAAI,GAAS,CACzB,GAAM,GAAa,KAAK,KAAK,IAAI,GACjC,EAAW,YAIf,KACI,EAAgB,EAAoC,EACpD,EAAiB,EAAgB,CACnC,KAAK,KAAK,IAAI,EAAQ,CAAC,OAAA,EAAQ,MAAA,EAAO,SAAA,IAGxC,YAAU,CACR,MAAO,MAAK,KAAK,kBAGb,MAAK,EAAc,CACvB,MAAO,MAAK,SAAS,GAEvB,SAAS,EAAc,CACrB,GAAM,CAAC,MAAA,EAAO,mBAAA,GAAsB,KAAK,KAAK,IAAI,GAElD,GAAI,IAAU,YAAa,CACzB,GAAM,GACF,KAAK,SAAS,EAAmB,KAAK,QACpC,EACF,KAAK,SAAS,EAAmB,KAAK,QAC1C,MAAO,GAAa,uBAAuB,EAAY,GAGzD,MAAO,MAAK,KAAK,IAAI,GAAQ,OAG/B,WAA2B,EAAa,CACtC,GAAM,GAAO,KAAK,SAAS,EAAE,QACzB,EAAc,EAClB,GAAI,EAAE,QAAU,SACd,GAAI,CAEF,EAAe,EAAsB,IAAI,GAAK,EAAK,aAAa,UAChE,EADgE,CAEhE,KAAM,IAAI,OAAM,oDAGpB,MAAO,IAAO,EAAE,MAAsB,EAAE,MAAO,GAIjD,WACI,EAAoC,EAAiB,EAAe,CACtE,GAAM,GAAS,KAAK,MAAM,EAAQ,EAAO,GACzC,MAAO,MAAS,qBAAqB,EAAQ,EAAO,EAAO,MAU7D,YAAY,EAAgB,EAAQ,GAAK,CACvC,GAAI,KAAK,KAAK,IAAI,GAAS,CAEzB,GADA,KAAK,KAAK,IAAI,GAAQ,WAClB,CAAC,GAAS,KAAK,KAAK,IAAI,GAAQ,SAAW,EAC7C,MAAO,GAGT,GAAM,CAAC,mBAAA,GAAsB,KAAK,KAAK,IAAI,GAEvC,GAAsB,MACxB,MAAK,YAAY,EAAmB,KAAK,OAAQ,IACjD,KAAK,YAAY,EAAmB,KAAK,OAAQ,KAGnD,KAAK,KAAK,OAAO,GAEnB,MAAO,GAGT,8BAA8B,EAAsB,CAClD,KAAK,YAAY,EAAW,aAGxB,MAAK,EAAa,CACtB,GAAM,GAAQ,EAAK,MACnB,MAAA,KAEO,CAAC,SADS,EAAK,MAAQ,GAIhC,QAAM,CACJ,MAAO,CAEL,WAAY,GACZ,QACI,CAAC,uHAKT,MAAM,EAAiB,CACrB,GAAiB,CAAC,GAAY,SAE9B,GAAM,GAAW,KAAK,SAAS,EAAU,QACzC,MAAO,IAAU,EAAU,MAAO,GAGpC,SAAO,EAEP,gBAAc,CACZ,MAAO,IAIT,SAAO,CACL,MAAO,OAAM,YA/LA,GAAA,WAAa,ECzC9B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,aAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,SAAA,IAAA,GAAA,WAAA,IAAA,GAAA,QAAA,IAAA,GAAA,UAAA,IAAA,GAAA,UAAA,IAAA,GAAA,aAAA,IAAA,GAAA,YAAA,IAAA,GAAA,SAAA,IAAA,GAAA,aAAA,IAAA,GAAA,QAAA,IAAA,GAAA,QAAA,IAAA,GAAA,YAAA,IAAA,GAAA,YAAA,IAAA,GAAA,aAAA,IAAA,GAAA,QAAA,IAAA,GAAA,aAAA,IAAA,GAAA,SAAA,IAAA,GAAA,UAAA,IAAA,GAAA,UAAA,IAAA,GAAA,cAAA,IAAA,GAAA,UAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,QAAA,IAAA,GAAA,SAAA,IAAA,GAAA,SAAA,IAAA,GAAA,cAAA,IAAA,GAAA,WAAA,IAAA,KCsBM,YAAwB,EAAgB,CAC5C,GAAM,GAAe,GAAI,cAAa,EAAK,QAC3C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EACjC,EAAa,GAAK,KAAK,IAAI,EAAK,IAElC,MAAO,GAGF,GAAM,IAAO,GAAsD,CACxE,GAAM,CAAC,EAAA,GAAK,EAAK,OACX,EAAa,EAAK,QAExB,GAAiB,EAAG,OAEpB,GAAI,GAAe,GAAI,cAAa,EAAK,cAAc,EAAE,QACnD,EAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OAC7C,MAAA,GAAe,GAAc,GAEtB,EAAW,WAAW,EAAc,EAAE,MAAO,YAGzC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YAAuC,EAAyB,CAEpE,MAAO,CAAC,EAAkB,EAAkB,EACpC,EAAmB,IAA2C,CACpE,GAAM,GAAW,EAAa,2BAA2B,EAAQ,GAE3D,EAAa,EAAS,OACtB,EAAgB,EAAK,eAAe,GACpC,EAAa,EAAK,cAAc,GAEhC,EACF,EAAK,uBAAuB,EAA0B,GAEpD,EAAQ,EAAO,OACf,EAAQ,EAAO,OAEf,EAAW,EAAK,eAAe,GAC/B,EAAW,EAAK,eAAe,GAE/B,EAAiB,EAAa,iBAAiB,EAAQ,GACvD,EAAiB,EAAa,iBAAiB,EAAQ,GAE7D,GAAI,EAAe,OAAS,EAAe,SAAW,EACpD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAO,GAAK,EAAG,EAAM,EAAI,EAAM,QAAS,EAAM,EAAI,EAAM,aAG1D,QAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAM,EAAK,WAAW,EAAG,EAAY,GAErC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAEtC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAE5C,EAAO,GAAK,EAAG,EAAM,GAAS,EAAM,IAIxC,MAAO,CAAC,EAAQ,IC7Cd,YAAkB,EAAsD,CAE5E,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,KAAA,EAAM,KAAA,GAAQ,EAEf,EAAW,EAAQ,KAAK,IAAI,EAAK,QAAQ,OACzC,EAAW,EAAQ,KAAK,IAAI,EAAK,QAAQ,OAEzC,EAAc,EAAQ,eAAe,EAAK,MAAO,aAEjD,EAAU,EAAQ,KAAK,IAAI,EAAY,QAK7C,MAAA,GAAQ,mBAAqB,CAC3B,KAAM,EAAQ,eAAe,EAAK,MAAO,UAAW,GACpD,KAAM,EAAQ,eAAe,EAAK,MAAO,UAAW,IAG/C,EAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICpBR,YACF,EAAyB,EACzB,EAAkB,UAAS,CAC7B,GAAI,IAAU,YAAa,CACzB,GAAM,GAAO,GAAM,EAAS,EAAO,WAC7B,EAAO,GAAM,EAAS,EAAO,WAEnC,MAAO,IAAQ,CAAC,OAAQ,CAAC,KAAA,EAAM,KAAA,GAAO,QAAA,IAGxC,GAAM,GAAS,EAAK,oBAAoB,EAAK,cAAc,GAAQ,GAEnE,MAAO,GAAQ,eAAe,EAAO,EAAO,GClBxC,YACF,EAAuD,CACzD,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,MAAA,GAAQ,OAAO,EAAE,QAEV,CAAC,OAAQ,EAAE,OAAQ,MAAO,EAAE,MAAO,MAAO,EAAE,OAG9C,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICbR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAO,EAAQ,KAAK,IAAI,EAAM,QAAQ,mBAAmB,KACzD,EAAU,EAAQ,KAAK,IAAI,EAAK,QAAQ,OAK9C,MAAO,GAAQ,eAAe,EAAK,MAAO,EAAK,MAAO,GAGjD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICZR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,GAAS,EAGhB,GAAI,IAAU,YAAa,CACzB,GAAI,EAAE,QAAU,YACd,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IAGhC,GAAM,GAAkB,GAAM,EAAS,EAAE,MAAO,EAAE,OAC5C,EAAS,GAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,aAEpD,EACF,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAQ,KAAM,GAAkB,QAAA,IAE5D,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAIT,GAAI,EAAE,QAAU,YAAa,CAC3B,GAAM,GAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAS,GAAK,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,EAAS,MAAO,CAAC,MAAA,KAE7D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,GAAI,CAAC,EAAK,gBAAgB,EAAE,MAAO,GAAQ,CAGzC,GAAM,GAAS,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACtC,MAAO,CAAC,OAAQ,EAAO,OAAQ,MAAO,EAAO,MAAO,MAAA,GAGtD,GAAI,IAAU,QAAS,CACrB,GAAM,GAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,EAAe,WAAW,KAAK,GACrC,MAAO,GAAQ,eAAe,EAAE,MAAO,QAAS,GAGlD,GAAI,IAAU,OAAQ,CAIpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAO,EAAK,aAAa,CAAC,GAAI,EAAE,OAEhC,CAAC,EAAY,GAAe,GAC9B,CAAC,EAAG,IAAO,IAAM,EAAK,EAAI,GAAG,EAAE,MAAO,GAAI,EAAO,EAAM,QAE3D,MAAO,GAAQ,eAAe,EAAa,OAAQ,GAGrD,KAAM,IAAI,OAAM,iCAAiC,EAAE,YAAY,KAG1D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICxDR,YACF,EAAc,EACd,EAAuC,EAAgB,CACzD,MAAI,IAAe,KACV,CAAC,CAAC,OAAA,EAAQ,QAAA,KAAY,CAC3B,GAAM,CAAC,IAAG,EAAA,GAAK,EACT,EAAa,EAEnB,GAAiB,CAAC,EAAG,GAAI,GAEzB,GAAM,GAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OACtC,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OAEtC,EAAS,GAAS,EAAE,MAEpB,CAAC,EAAY,GACf,EAAW,EAAE,MAAO,EAAE,MAAO,EAAO,EAAO,GAE/C,MAAO,GAAW,eAAe,EAAa,EAAQ,IAInD,CAAC,CAAC,OAAA,EAAQ,QAAA,KAAY,CAC3B,GAAM,CAAC,IAAG,EAAA,GAAK,EACT,EAAa,EAEnB,GAAI,EAAE,QAAU,aAAe,EAAE,QAAU,YAAa,CACtD,GAAM,GAAY,GACd,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAS,EAAY,MAAO,CAAC,MAAO,eAEnD,EAAgB,EAAW,KAAK,IAAI,EAAU,QAE9C,EAAQ,EAAc,mBAAmB,KACzC,EAAQ,EAAc,mBAAmB,KAEzC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAChC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEhC,EAAY,GACd,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAS,EAAY,MAAO,CAAC,MAAO,eAEnD,EAAgB,EAAW,KAAK,IAAI,EAAU,QAE9C,EAAQ,EAAc,mBAAmB,KACzC,EAAQ,EAAc,mBAAmB,KAEzC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAChC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEhC,CAAC,EAAgB,EAAgB,GAAe,EAClD,EAAE,MAAO,EAAE,MAAO,EAAW,EAAW,EAAW,GAEjD,EACF,EAAW,eAAe,EAAa,UAAW,GAEhD,EACF,EAAW,eAAe,EAAa,UAAW,GAEhD,EAAS,GACX,CAAC,OAAQ,CAAC,KAAM,EAAY,KAAM,GAAa,QAAS,IAE5D,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAElC,MACF,CACL,GAAM,GAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OACtC,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OAEtC,EAAS,GAAS,EAAE,MAEpB,CAAC,EAAY,GACf,EAAW,EAAE,MAAO,EAAE,MAAO,EAAO,EAAO,GAE/C,MAAO,GAAW,eAAe,EAAa,EAAQ,KAStD,YAAwC,EAA0B,CAEtE,MAAO,CAAC,EAAkB,EAAkB,EACpC,EAAyB,EACzB,IAA+D,CACrE,GAAM,GAAc,EAAa,2BAA2B,EAAQ,GAC9D,EAAa,EAAK,cAAc,GAChC,EAAa,EAAY,OACzB,EAAgB,EAAK,eAAe,GAEpC,EAAiB,EAAK,uBAAuB,UAAW,GACxD,EAAiB,EAAK,uBAAuB,UAAW,GAExD,EAAiB,EAAa,iBAAiB,EAAQ,GACvD,EAAiB,EAAa,iBAAiB,EAAQ,GAEvD,EAAQ,EAAa,uBAAuB,EAAW,GACvD,EAAQ,EAAa,uBAAuB,EAAW,GAEvD,EAAQ,EAAO,OACf,EAAW,EAAK,eAAe,GAE/B,EAAQ,EAAO,OACf,EAAW,EAAK,eAAe,GAErC,GAAI,EAAe,OAAS,EAAe,SAAW,EACpD,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAO,EAAI,EAAM,OACjB,EAAO,EAAI,EAAM,OAEjB,EACF,EAAG,EAAM,EAAO,GAAI,EAAM,EAAO,EAAI,GAAI,EAAM,EAAO,GACnD,EAAM,EAAO,EAAI,IAExB,EAAe,GAAK,EAAO,KAC3B,EAAe,GAAK,EAAO,SAG7B,QAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAM,EAAK,WAAW,EAAG,EAAY,GAErC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAEtC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAEtC,EACF,EAAG,EAAM,EAAS,GAAI,EAAM,EAAS,EAAI,GAAI,EAAM,EAAS,GACzD,EAAM,EAAS,EAAI,IAE1B,EAAe,GAAK,EAAS,KAC7B,EAAe,GAAK,EAAS,KAGjC,MAAO,CAAC,EAAgB,EAAgB,ICjKrC,GAAM,IAAU,GAA8B,CAAC,EAAG,IAAM,EAAI,GACtD,GACT,GAA+B,CAAC,EAAO,EAAO,EAAO,IAC5C,EAAC,KAAM,EAAQ,EAAO,KAAM,EAAQ,KAGpC,GAAM,GAAiB,GAAK,GAAS,IAErC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICdR,YACF,EAAmB,EAAyB,EAC5C,EAAwB,EAAY,CACtC,GAAM,GAAc,EAAK,cAAc,GACjC,EAAU,EAAK,oBAAoB,EAAM,GAE/C,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,GAAM,GAAQ,EAAM,GACpB,GAAI,EAAQ,EACV,KAAM,IAAI,OAAM,iCAGd,GAAS,GAIT,GAAc,EAChB,EAAQ,IAAU,EAAY,GAE9B,EAAQ,IAAU,GAItB,MAAO,GAGH,YACF,EAAuB,EAA6B,EACpD,EAAe,GAAK,CACtB,GAAM,GAAU,EAAK,MAAM,GACrB,EAAU,EAAK,MAAM,GAErB,EAAS,GAAO,CAAC,EAAS,GAAO,EAAW,OAElD,OAAS,GAAI,EAAG,EAAI,EAAS,IAC3B,OAAS,GAAI,EAAG,EAAI,EAAS,IAAK,CAChC,GAAM,GAAQ,EAAK,IAAI,EAAG,GAC1B,GAAI,EAAQ,EACV,KAAM,IAAI,OAAM,iCAGd,GAAS,GAIT,GACF,EAAO,IAAI,EAAG,EAAG,GAEb,EAAW,KAAO,EACpB,EAAO,IAAI,EAAO,IAAI,EAAG,GAAS,EAAW,IAAI,EAAG,GAAI,EAAG,GAE3D,EAAO,IAAI,EAAO,IAAI,EAAG,GAAS,EAAG,EAAG,IAMhD,MAAO,GCpDH,YAAgC,EAAwB,CAE5D,MAAO,CAAC,EAAQ,EAAO,IAAS,CAC9B,GAAM,GACF,EAAK,uBAAuB,EAA0B,EAAO,QACjE,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAU,GAAK,EAAG,EAAO,GAAI,GAE/B,MAAO,ICAL,YACF,EAAc,EAA0B,EAAgB,CAC1D,MAAO,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CAClC,GAAM,CAAC,EAAA,GAAK,EAEZ,GADA,GAAiB,EAAG,GAChB,EAAE,QAAU,UAAY,IAAU,SACpC,KAAM,IAAI,OAAM,wDAGlB,GAAM,GAAa,EACb,EAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAQ,EAAK,cAAc,EAAE,OAC7B,EAAS,GAAS,EAAE,MACpB,EAAY,EAAK,kBAAkB,EAAQ,GACjD,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAC3B,EAAU,GAAK,EAAG,EAAO,GAAI,GAE/B,MAAO,GAAW,eAAe,EAAE,MAAO,EAAQ,IAahD,YACF,EAAc,EAA4B,EAAgB,CAC5D,MAAO,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CAClC,GAAM,CAAC,EAAA,GAAK,EAEZ,GADA,GAAiB,EAAG,GAChB,EAAE,QAAU,UAAY,IAAU,SACpC,KAAM,IAAI,OAAM,wDAGlB,GAAM,GAAa,EACb,EAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAS,GAAS,EAAE,MACpB,EAAY,EAAU,EAAQ,EAAQ,GAC5C,MAAO,GAAW,eAAe,EAAE,MAAO,EAAQ,ICrD/C,GAAM,IAAW,GAAuB,GAAO,KAAK,KAAK,IACnD,GAAO,GAAwB,GAAM,IAErC,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EAAuD,EACvD,EAAiB,EAAqB,CACxC,GAAM,GAAU,EAAK,kBAAkB,EAAO,EAAK,cAAc,IAEjE,GAAI,GAAgB,IAAU,SAAU,CAEtC,GAAI,GAAS,EACb,EAAO,QAAQ,GAAQ,CACrB,GAAM,GAAO,EAAK,cAAc,EAAM,OAErC,EAAuB,IAAI,EAAM,KAAoB,GACtD,GAAU,QAEP,CACL,GAAI,GAAY,EAEhB,EAAO,QAAQ,GAAQ,CACrB,GAAM,GAAc,IAAU,SAC1B,EAAa,uBAAuB,EAAM,MAC1C,EAAM,KAEN,EAAO,EAEX,OAAS,GAAM,EAAG,EAAM,EAAM,MAAM,GAAI,EAAE,EAAK,CAC7C,GAAM,GAAS,EAAM,EAAS,GAAK,EACnC,OAAS,GAAM,EAAG,EAAM,EAAM,MAAM,GAAI,EAAE,EACxC,EAAQ,EAAS,GAAO,EAAY,KAIxC,GAAa,EAAM,MAAM,KAI7B,MAAO,GChCF,GAAM,IAAU,GAAuB,GAAO,KAAK,IAAI,IACjD,GAAM,GAAwB,GAAK,IAEnC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GAAY,GAAuB,GAAO,KAAK,MAAM,IACrD,GAAQ,GAAwB,GAAO,IAEvC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GAAY,GAAuB,GAAO,KAAK,MAAM,IACrD,GAAQ,GAAwB,GAAO,IAEvC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EAA0B,EAC1B,EAA4B,CAC9B,GAAM,GAAS,GAAO,EAAoB,EAAK,OAC/C,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,EAAE,EAAG,CAGpC,GAAM,GAFS,EAAO,WAAW,GAEI,QAC/B,EAAW,EAAY,GACvB,EAAa,EAAY,GACzB,EAAe,EAAW,WAAW,CAAC,EAAU,IACtD,EAAY,GAAK,EAAW,OAAO,GAEnC,GAAM,GAAgB,EAAK,WAAW,GACtC,EAAO,OAAO,GAAK,EAAK,OAAO,GAGjC,MAAO,GCdF,GAAM,IACT,GAA6B,CAAC,EAAW,IAAe,EAAI,EAAK,EAAI,GAC5D,GACT,GAAiB,GAAS,GAAa,KAAwB,QAEtD,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICRD,GACT,GAA6B,CAAC,EAAW,IAAe,EAAI,EAAK,EAAI,GAC5D,GACT,GAAiB,GAAM,GAAU,KAAwB,QAEhD,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICXR,YACF,EAAe,EAAc,EAAW,CAC1C,GAAM,GAAQ,GAAO,GAAU,GAAM,GAE/B,EAAS,EAAK,oBAAoB,EAAK,WAC7C,EAAO,GAAK,EACZ,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAO,EAAI,GAAK,EAG9B,MAAO,GCPF,GAAM,IAAU,GAAuB,GAAO,KAAK,IAAI,IACjD,GAAM,GAAwB,GAAK,IAEnC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EAAmB,EAAoB,EACvC,EAAe,CACjB,GAAM,GAAO,EAAK,uBACd,EAA0B,EAAK,cAAc,IAEjD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,GAGV,EAAK,GAAK,EAEZ,MAAO,GCdF,GAAM,IAAc,GACtB,CAAC,EAAQ,IAAW,KAAK,IAAI,EAAQ,IAC7B,GAAU,GAAiB,GAAS,IAEpC,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICPD,GAAc,GACtB,CAAC,EAAQ,IAAW,KAAK,IAAI,EAAQ,IAC7B,GAAU,GAAiB,GAAS,IAEpC,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICRD,GACT,GAA8B,CAAC,EAAQ,IAAW,EAAS,GAClD,GACT,GAA+B,CAAC,EAAO,EAAO,EAAO,IAC5C,EACL,KAAM,EAAQ,EAAQ,EAAQ,EAC9B,KAAM,EAAQ,EAAQ,EAAQ,KAIzB,GACT,GAAiB,GAAU,GAAc,IAEhC,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICdR,YAAkB,EAAmB,EAAkB,EAAgB,CAE3E,GAAM,GACF,EAAK,kBAAkB,GAAuB,GAClD,MAAO,IAAa,GAAI,EAAQ,EAAU,EAAO,GAG7C,YAAc,EAAoD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,GAAiB,EAAG,OAEpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,CAAC,EAAK,GAAY,GAAQ,EAAO,EAAE,MAAO,EAAE,OAElD,MAAO,GAAQ,eAAe,EAAU,EAAE,MAAO,GAG5C,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICxBD,GACT,GAA8B,CAAC,EAAG,IAAO,IAAM,EAAK,EAAI,GAC/C,GACT,GAAiB,GAAU,GAAc,KAAsB,QAEtD,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICVR,YACF,EAAmB,EAAkB,EAAiB,EACtD,EAAkB,CACpB,GAAM,GAAQ,EAAO,OACf,EAAQ,EAAK,cAAc,GAC3B,EAAW,EAAK,eAAe,GAC/B,EAAa,EAAK,eAAe,GAEjC,EAAS,EAAK,uBAChB,EAA0B,EAAK,cAAc,IAEjD,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAAG,CAC9B,GAAM,GAAM,EAAK,WAAW,EAAG,EAAO,GAGhC,EAAmB,GAAI,OAAM,EAAI,QACvC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAI,EAAK,IAGvB,GAAM,GAAW,EAAK,WAAW,EAAQ,EAAO,GAChD,EAAO,GAAY,EAAM,GAE3B,MAAO,GCnBH,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,GAAW,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,aAEpB,GAAM,GAAQ,EAAE,MAAM,OAEhB,EAAqB,GAAI,OAAM,GACrC,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAS,GAAK,EAAE,MAAM,EAAK,IAG7B,GAAM,GAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,EAAS,GAAc,EAAQ,EAAE,MAAO,EAAE,MAAO,EAAM,GAG7D,MAAO,CAAC,OADO,EAAQ,MAAM,EAAQ,EAAU,EAAE,OACjC,MAAO,EAAU,MAAO,EAAE,OAGrC,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC7BR,YACF,EAAkB,EAAkB,EACpC,EAAuB,CAEzB,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAQ,GAC7C,EAAW,GAAW,EAAQ,SAC9B,EAAU,EAAK,oBACD,EAAK,cAAc,GAAW,GAC5C,EAAa,EAAK,cAAc,GAEtC,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,EAAE,EAAG,CACvC,GAAM,GAAS,EAAI,EACf,EAAO,EACX,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,GAAQ,EAAM,EAAS,GAEzB,EAAQ,GAAK,EAGf,MAAO,CAAC,QAAA,EAAS,SAAA,EAAU,SAAA,GAGvB,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,QAEpB,GAAM,GAAQ,EAAE,MAAM,OAChB,EAAO,EAAK,eAAe,EAAM,EAAE,OAEnC,EAAc,EAAa,mBAAmB,EAAM,GACtD,EAAgB,EAChB,EAAY,EACV,EAA0B,GAC5B,GAAe,MACjB,GAAY,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KAC3D,EAAwB,KAAK,GAC7B,EAAgB,EAAa,iBAAiB,EAAc,OAAQ,IAGtE,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAU,QAAQ,OAC3C,CAAC,QAAA,EAAS,SAAA,EAAU,SAAA,GACtB,GAAS,EAAU,MAAO,EAAU,MAAO,EAAO,GAElD,EAAc,EAClB,MAAI,IACF,GAAc,EAAa,qBAAqB,EAAU,IAG5D,EAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAAQ,eAAe,EAAa,EAAU,GAGhD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICnER,YACF,EAAe,EAAc,EAC7B,EAAwB,CAC1B,GAAM,GAAgB,IAAU,EAC1B,EAA8B,EAAQ,GAAQ,EAAO,EACrD,EAA8B,EAAO,GAAS,EAAO,EAE3D,GAAI,GAAiB,GACjB,EACF,MAAO,GAAK,oBAAoB,EAAG,GAGrC,GAAM,GAAc,KAAK,IAAI,KAAK,KAAM,GAAO,GAAS,IAClD,EAAS,EAAK,oBAAoB,EAAa,GAEjD,EAAO,GAAS,IAAS,GAG3B,GAAO,IAGT,EAAO,GAAK,EACZ,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAO,EAAI,GAAK,EAE9B,MAAO,GCtBF,GAAM,IAAY,GAAuB,GAAO,EAAI,KAAK,KAAK,IACxD,GAAQ,GAAwB,GAAO,IAEvC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICNR,YACF,EAAqB,EAAiB,EAAgB,EACtD,EAAe,CACjB,GAAM,GAAc,GAAW,iBAAiB,EAAO,EAAO,GACxD,EAAS,EAAK,cAAc,GAC5B,EAAW,EAAK,eAAe,GAErC,GAAI,EAAa,CACf,GAAM,GAAa,GAAW,kBAAkB,EAAO,GAEvD,MAAI,KAAU,SACJ,EAAsB,MAAM,EAAY,EAAa,GAGvD,EAAoB,SAAS,EAAY,EAAa,GAGhE,GAAM,GAAc,IAAU,SAC1B,EAAa,uBAAuB,GACpC,EAEE,EAAQ,GAAO,EAAO,EAAO,GAC7B,EAAS,GAAO,EAAM,GAC5B,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,EAAE,EAAG,CACpC,GAAM,GAAS,EAAO,WAAW,GAC3B,EAAQ,EAAO,IAAI,CAAC,EAAa,IAAM,EAAM,EAAM,IACzD,EAAO,IAAI,EAAM,IAAI,GAAG,GAAQ,GAAG,GAGrC,MAAI,KAAU,SACL,EAAa,uBAAuB,EAAO,QAE7C,EAAO,OAGV,YACF,EAAuE,CAEzE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,EAAO,KAAA,GAAQ,EAEtB,GAAiB,EAAG,SAEpB,GAAM,CAAC,EAAQ,GAAS,GAAW,iBAAiB,EAAG,EAAO,GAC9D,GAAW,kBAAkB,EAAG,EAAQ,GAExC,GAAM,GAAO,EAAQ,KAAK,IAAI,EAAE,QAAQ,OAClC,EAAU,GAAU,EAAM,EAAQ,EAAO,EAAE,MAAO,EAAE,OAC1D,MAAO,GAAQ,eAAe,EAAO,EAAE,MAAO,GAGzC,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICvDD,GAAwB,GAA8B,CAAC,EAAG,IAAK,CAC1E,GAAM,GAAO,EAAI,EACjB,MAAO,GAAO,IAEH,GACT,GAAiB,GAAmB,IAE3B,GAAwC,CACnD,WAAY,GACZ,YAAa,MACb,WAAY,ICbR,YACF,EAAoB,EAAuB,EAC3C,EAAe,CACjB,GAAM,GAAS,GAAO,EAAU,EAAK,OAErC,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACpC,GAAM,GAAM,EAAO,WAAW,GAExB,EAAmB,GAAI,OAAM,EAAI,QACvC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAI,GAAK,EAAQ,GAAK,EAAM,GAE1C,EAAO,IAAI,EAAK,IAAI,GAAG,GAAS,GAAG,GAGrC,MAAO,GCZF,GAAM,IACT,GAA8B,CAAC,EAAQ,IAAW,EAAS,GAClD,GACT,GAA+B,CAAC,EAAO,EAAO,EAAO,IAC5C,EAAC,KAAM,EAAQ,EAAO,KAAM,EAAQ,KAEpC,GAAM,GAAiB,GAAK,GAAS,IAErC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EACA,EAAc,CAChB,GAAM,GAAqB,GAAI,OAAM,EAAK,MAC1C,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAS,GAAK,EAAK,MAAM,GAAK,EAAK,GAErC,GAAM,GAAS,GAAO,EAAU,EAAK,OACrC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAO,OAAQ,EAAE,EAAG,CAC7C,GAAM,GAAS,EAAO,WAAW,GAE3B,EAAwB,GAAI,OAAM,EAAK,MAC7C,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,IACtC,EAAY,GAAK,EAAO,GAAK,EAAK,MAAM,GAG1C,GAAM,GAAgB,EAAK,WAAW,GAEtC,EAAO,OAAO,GAAK,EAAK,OAAO,GAEjC,MAAO,GCvBH,YACF,EAAe,EAAkB,EAAyB,EAC1D,EAAe,CAGjB,GAAM,GAAU,EAAO,EAAO,OAAS,GACjC,CAAC,EAAO,GAAQ,CAAC,EAAE,OAAS,EAAS,GACrC,EAAc,EAAK,uBAAuB,EAAQ,EAAQ,GAC1D,EAAiB,EAAK,uBAAuB,QAAS,EAAQ,GAEpE,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAS,EAAI,EACb,EAAO,EAAE,SAAS,EAAQ,EAAS,GACnC,EAAmD,GACzD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAU,KAAK,CAAC,MAAO,EAAK,GAAI,MAAO,IAEzC,EAAU,KAAK,CAAC,EAAG,IAAM,EAAE,MAAQ,EAAE,OAErC,GAAM,GAAY,EAAI,EAChB,EAAW,EAAY,SAAS,EAAW,EAAY,GACvD,EAAc,EAAe,SAAS,EAAW,EAAY,GACnE,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAS,GAAK,EAAU,GAAG,MAC3B,EAAY,GAAK,EAAU,GAAG,MAKlC,GAAM,GAAc,EAAO,QAC3B,MAAA,GAAY,EAAY,OAAS,GAAK,EAE/B,CACL,GAAO,EAA4B,EAAQ,GAC3C,GAAO,EAA4B,QAAS,ICpC1C,YACF,EAAuB,EAAc,EAAiB,EAAe,CAMvE,GAAM,GAAQ,EAAK,eAAe,EAAM,GAAO,GAyDzC,EAAW,CAAC,EAAG,EAAM,GAAI,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAO,IACzB,EAAS,IAAM,EAAM,GAEvB,EAAS,GAAK,EAAM,GACpB,OAAS,GAAI,EAAQ,EAAG,EAAI,EAAM,OAAQ,IACxC,EAAS,IAAM,EAAM,GAKvB,GAAM,GAA0C,GAG1C,EAAU,GAAI,YAAW,EAAM,IAE/B,EAAc,GAAI,IAAa,EAAU,EAAO,GAGhD,EAA0B,GAC1B,EAAa,EAAS,KAAO,GAAK,EAAS,KAAO,EACxD,OAAS,GAAI,EAAG,EAAI,EAAM,GAAQ,IAAK,CAErC,GAAI,GACJ,GAAI,EAEF,EAAU,EAAO,GAAG,eACf,CACL,GAAM,GAAa,GACnB,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,EAAW,KAAK,EAAY,IAAI,EAAG,EAAG,IAG1C,EAAU,EAAW,KAAK,KAI5B,GAAI,EAAe,KAAa,OAC9B,EAAQ,GAAK,EAAe,OACvB,CACL,GAAM,GAAc,OAAO,KAAK,GAAgB,OAChD,EAAe,GAAW,EAC1B,EAAQ,GAAK,EACb,EAAc,KAAK,IAOvB,GAAM,GAAiB,EAAS,QAChC,EAAe,GAAK,OAAO,KAAK,GAAgB,OAChD,GAAM,GAAe,GAAI,IAAa,EAAgB,GACtD,EAAc,QAAQ,CAAC,EAAoB,IAAK,CAC9C,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,EAAa,IAAI,EAAY,IAAI,EAAG,EAAoB,GAAI,EAAG,EAAG,KAOxE,GAAM,GAAc,EAAM,QAC1B,MAAA,GAAY,GAAS,EAAe,GAE7B,CACL,aAAc,EAAa,OAC3B,YAAA,EACA,QAAA,GCtJJ,GAAM,IAAU,QC2BhB,GAAgB,MAAO,IAAM,GAAI,IAAkB,GCT5C,GAAM,IACT,GAAgB,GAAM,GAAO,GAAM,EAAI,EAAM,KAAK,IAAI,GAAM,GAEnD,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,GAAS,EAEhB,GAAiB,CAAC,GAAI,aAEtB,GAAM,GAAQ,EAAK,cAAc,EAAE,OAC7B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAU,EAAK,uBAAuB,UAAW,GAEvD,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAQ,GAAK,EAAM,GAAK,EAAI,EAAQ,EAAM,GAAK,EAAM,GAGvD,MAAO,GAAQ,eAAe,EAAE,MAAO,UAAW,GAG7C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICxBR,GAAY,GACd,CAAC,EAAgB,IAAmB,EAAS,EAAI,EAAS,EAAS,GAEjE,YAAgB,EAAoD,CAExE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,EAAG,MAAA,GAAS,EAEnB,GAAiB,CAAC,EAAG,GAAQ,SAE7B,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAEvC,CAAC,EAAY,GACf,GAAU,EAAE,MAAO,EAAM,MAAO,EAAO,EAAO,EAAE,OAEpD,MAAO,GAAQ,eAAe,EAAa,EAAE,MAAO,GAG/C,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICxBD,GAAO,GAAgB,GAAO,GAAO,KAAK,IAAI,EAAG,IAEjD,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GACT,GAAgB,GAAQ,GAAO,KAAK,IAAI,KAAK,IAAI,EAAG,GAAK,IAEhD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICAR,YACF,EAAyB,EAAe,EACxC,EAAqC,EAAuB,CAC9D,GAAI,IAAe,SACjB,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACzB,GAAI,IAAe,OACxB,MAAO,IAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACrB,GAAI,IAAe,MACxB,MAAO,IAAI,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACpB,GAAI,IAAe,QACxB,MAAO,IAAM,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACtB,GAAI,IAAe,QACxB,MAAO,IAAM,CAAC,OAAQ,CAAC,EAAA,EAAG,MAAO,GAAyB,QAAA,IACrD,GAAI,IAAe,YACxB,MAAO,IAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAEzD,KAAM,IAAI,OACN,cAAc,mDCvBd,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,GAAS,EAEV,EAAQ,EAAK,cAAc,EAAE,OAC7B,EAAS,EAAK,uBAAuB,EAAO,GAC5C,EAAS,EAAK,cAAc,GAElC,EAAK,OACD,IAAU,EACV,IAAM,kBAAkB,UAAe,iCACzB,EAAE,cAAc,kFAGlC,EAAQ,OAAO,EAAE,QAEjB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAEjC,GAAI,EAAM,oBAAsB,KAAM,CACpC,GAAM,GAAO,EAAM,mBAAmB,KAChC,EAAO,EAAM,mBAAmB,KAEtC,EAAK,MAAQ,EACb,EAAK,MAAQ,EAGf,MAAO,CAAC,OAAQ,EAAE,OAAQ,MAAO,EAAQ,MAAO,EAAE,OAG7C,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAG,EAAA,GAAK,EACT,CAAC,WAAA,EAAY,WAAA,GAAc,EAEjC,GAAiB,CAAC,EAAG,GAAI,UAEzB,GAAM,GAAQ,EAAE,MAAM,OAChB,EAAQ,EAAE,MAAM,OAEhB,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAChE,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAEhE,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAChE,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAEhE,EAAa,EAAE,MAAM,MAAM,EAAG,IAC9B,EAAa,EAAE,MAAM,MAAM,EAAG,IAE9B,EAAY,EAAK,cAAc,GAC/B,EAAY,EAAK,cAAc,GAE/B,EACF,IAAc,GAAa,IAAc,GAAK,IAAc,EAEhE,EAAK,OACD,GAAS,GAAK,GAAS,GAAK,EAC5B,IAAM,uJAEsB,WAAoB,OAIpD,GAAM,GADF,GAAY,EAAY,EAAE,MAAM,MAAM,EAAG,IAAM,EAAE,MAAM,MAAM,EAAG,KACjC,OAAO,CAAC,EAAa,IAExD,EAAK,OACD,IAAgB,EAChB,IAAM,kCAAkC,WACjC,6BAAuC,EAAE,aACzC,EAAE,wBAAwB,oBACV,iBAE3B,GAAM,GAAW,EAAa,CAAC,EAAW,EAAa,GACzB,CAAC,EAAW,EAAa,GACjD,EAAW,EAAa,CAAC,EAAW,EAAa,GACzB,CAAC,EAAW,EAAa,GAGjD,EAAM,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KACvD,EAAM,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAEvD,EAAY,EAAa,EAAI,MAAM,GAAK,EAAI,MAAM,GAClD,EAAU,EAAa,EAAI,MAAM,GAAK,EAAI,MAAM,GAChD,EAAW,EAAa,EAAI,MAAM,GAAK,EAAI,MAAM,GACjD,EAAW,KAAK,IAAI,EAAW,GAE/B,EAAY,EAAQ,KAAK,IAAI,EAAI,QAAQ,OACzC,EAAY,EAAQ,KAAK,IAAI,EAAI,QAAQ,OAEzC,EAAa,EAAK,eAAe,EAAI,OACrC,EAAa,EAAK,eAAe,EAAI,OAErC,CAAC,EAAQ,EAAY,IAAc,EACrC,CAAC,EAAW,GAAI,EAAG,EAAW,IAC9B,CAAC,EAAW,GAAI,EAAW,GAAI,GAC7B,CAAC,EAAY,GAAY,IAAU,EACrC,CAAC,EAAG,EAAW,GAAI,EAAW,IAC9B,CAAC,EAAW,GAAI,EAAG,EAAW,IAE5B,GAAO,EAAU,EACjB,EAAS,GAAO,CAAC,EAAU,EAAS,GAAW,EAAI,OAEnD,GAAU,EAAO,OACjB,GAAY,EAAQ,UAE1B,OAAS,IAAK,EAAG,GAAK,EAAU,KAC9B,OAAS,IAAK,EAAG,GAAK,EAAS,IAAM,GACnC,OAAS,IAAK,EAAG,GAAK,EAAU,IAAM,GACpC,OAAS,IAAK,EAAG,GAAK,EAAW,IAAM,GAAW,CAEhD,GAAM,IAAS,KAAK,IAAI,GAAK,GAAW,GAClC,GAAS,KAAK,IAAI,GAAK,GAAW,GAClC,GAAS,KAAK,IAAI,GAAK,GAAW,GAExC,OAAS,IAAI,GAAI,GAAI,GAAQ,KAC3B,OAAS,IAAI,GAAI,GAAI,GAAQ,KAAK,CAChC,GAAI,IAAM,EAEV,OAAS,IAAI,GAAI,GAAI,GAAQ,KAAK,CAChC,GAAM,IAAe,KAAK,IAAI,GAAI,EAAY,GAAK,EAC7C,GAAe,KAAK,IAAI,GAAI,EAAY,GAAK,GAC7C,GACF,EAAU,GAAe,GAAI,EAAa,GAAI,IAC5C,GACF,EAAU,GAAI,EAAa,GAAI,GAAa,IAChD,IAAO,GAAO,GAEhB,GAAQ,GAAK,GAAQ,IAAI,EAAW,MAAO,IAQvD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAG/B,EAAQ,eACX,EAAU,EAAO,MAAO,EAAO,QAG9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,ICvHR,YAAuB,EAI5B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAG,EAAA,EAAG,KAAA,EAAM,uBAAA,GAA0B,EACvC,CAAC,WAAA,EAAY,WAAA,EAAY,WAAA,EAAY,eAAA,GAAkB,EAEzD,EACA,EACA,EAEE,EAA8B,GAIpC,EADI,GAAY,CAAC,OAAQ,CAAC,EAAG,EAAA,GAAI,MAAO,CAAC,WAAA,EAAY,WAAA,GAAa,QAAA,IAG9D,GACF,GAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAS,EAAG,GAAO,QAAA,IAC7C,EAAc,KAAK,GACnB,EAAU,GAER,GACF,GAAgB,GACZ,EAAS,EAAS,EAAY,EAAwB,GAC1D,EAAc,KAAK,GACnB,EAAU,GAGZ,OAAW,KAAK,GACd,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,IC7CD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICJR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,EAAU,EAEhB,GAAiB,EAAQ,QAEzB,GAAM,GACF,EAAQ,IAAI,GAAK,EAAQ,KAAK,IAAI,EAAE,QAAQ,QAC1C,EAAS,GAAO,EAAQ,GAAG,MAAO,EAAQ,GAAG,OAC7C,EAAU,EAAO,OACvB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAM,GAAW,EAAK,GACtB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAClC,EAAQ,IAAM,EAAS,GAI3B,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAK,eAAe,EAAM,EAAE,OACzC,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACL,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAE,MAAM,SAG5D,EAAa,2BAA2B,MAAO,EAAM,EAAG,MAAM,QAC9D,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAC/C,EAAa,EAAK,cAAc,GAChC,EAAO,EAAK,oBAAoB,EAAK,cAAc,GAAW,EAAG,OAEjE,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GAC7B,EAAM,GAAO,EAEf,EAAK,GAAK,EAGR,GAAgB,MAClB,EAAQ,8BAA8B,GAGxC,GAAM,GAAS,EAAQ,eAAe,EAAU,EAAG,MAAO,GAE1D,GAAI,EAAU,CACZ,GAAM,GAAgB,EAAa,qBAAqB,EAAU,GAC5D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICzDR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAK,eAAe,EAAM,EAAE,OACzC,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACL,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAE,MAAM,SAG5D,EAAa,2BAA2B,MAAO,EAAM,EAAG,MAAM,QAC9D,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAC/C,EAAa,EAAK,cAAc,GAChC,EAAO,EAAK,oBAAoB,EAAK,cAAc,GAAW,EAAG,OAEjE,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAS,EAAM,GACnB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GAC7B,EAAS,GAAU,EAErB,EAAK,GAAK,EAGR,GAAgB,MAClB,EAAQ,8BAA8B,GAGxC,GAAM,GAAS,EAAQ,eAAe,EAAU,EAAG,MAAO,GAE1D,GAAI,EAAU,CACZ,GAAM,GAAgB,EAAa,qBAAqB,EAAU,GAC5D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IC1DR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,UAEpB,GAAI,GAAO,EAAK,eAAe,EAAM,EAAE,OACjC,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACH,EAA0B,GAC5B,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAwB,KAAK,GAC7B,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAG,MAAM,SAG7D,EAAO,CAAC,EAAK,IACb,EAAa,2BAA2B,SAAU,EAAM,EAAG,MAAM,QACjE,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAE/C,EAAU,EAAK,cAAc,GAC7B,EAAO,EAAK,oBAAoB,EAAS,SACzC,EAAa,EAAK,cAAc,GAEhC,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GACZ,EAAW,EACf,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,EACN,EAAW,GAGf,EAAK,GAAK,EAGZ,MAAA,GAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAAQ,eAAe,EAAU,QAAS,GAG5C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICpDR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,UAEpB,GAAI,GAAO,EAAK,eAAe,EAAM,EAAE,OACjC,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACH,EAA0B,GAC5B,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAwB,KAAK,GAC7B,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAG,MAAM,SAG7D,EAAO,CAAC,EAAK,IACb,EAAa,2BAA2B,SAAU,EAAM,EAAG,MAAM,QACjE,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAE/C,EAAU,EAAK,cAAc,GAC7B,EAAO,EAAK,oBAAoB,EAAS,SACzC,EAAa,EAAK,cAAc,GAEhC,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GACZ,EAAW,EACf,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,EACN,EAAW,GAGf,EAAK,GAAK,EAGZ,MAAA,GAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAAQ,eAAe,EAAU,QAAS,GAG5C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICtDD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAY,GACrB,CAAC,EAAQ,IAAW,KAAK,MAAM,EAAQ,IAE9B,GAAQ,GAAiB,GAAO,IAEhC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICRD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICPR,YACF,EAAqB,EAAkB,EAAiB,EACxD,EACA,EAAqB,CACvB,GAAM,GAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAE3B,EACD,IAAa,MAAQ,OAAO,kBACP,OAAO,kBAE3B,EAAS,GAAO,EAAS,SAAU,GACnC,EAAa,EAAO,OAEpB,EACF,EAAS,SAAS,GAAK,EAAS,SAAS,GAAK,EAAS,SAAS,GAC9D,EAAmB,EAAS,SAAS,GAAK,EAAS,SAAS,GAC5D,EAAmB,EAAS,SAAS,GAE3C,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EAAG,CAC3C,GAAM,GAAoB,EAAI,EACxB,EAAmB,EAAI,EAAQ,GACrC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAK,EAAG,EAAK,EAAS,UAAW,EAAE,EAAI,CAC9C,GAAM,GAAW,EAAK,EAAe,EAC/B,EAAQ,KAAK,IAAI,EAAG,GACpB,EACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GAClD,EAAkB,EAAoB,EAAK,EACjD,OAAS,GAAK,EAAG,EAAK,EAAS,SAAU,EAAE,EAAI,CAC7C,GAAM,GAAW,EAAK,EAAc,EAC9B,EAAQ,KAAK,IAAI,EAAG,GACpB,EACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAClD,EAAc,EACd,GAAW,EACX,EAAQ,EACZ,OAAS,IAAK,EAAO,GAAK,EAAO,IAAM,EAAgB,CACrD,GAAM,IAAW,EAAmB,GAAK,EAAQ,GACjD,OAAS,GAAK,EAAO,EAAK,EAAO,GAAM,EAAe,CACpD,GAAM,IAAW,GAAW,EAAK,EAAQ,GACnC,GAAQ,EAAQ,GAAW,GAC5B,IAAa,OAAS,GAAQ,EACjC,EAAc,GACL,IAAa,OACtB,KAAY,GACZ,KAGJ,GAAI,MAAM,GACR,MAGJ,GAAM,IAAe,EAAkB,EAAK,EAAmB,EAC/D,EAAW,IACP,IAAa,MAAQ,GAAW,EAAQ,IAKpD,MAAO,GAGH,YACF,EAAqB,EAAkB,EACvC,EAAmC,EAAmB,GACtD,EAAsB,GAAK,CAC7B,GAAM,GAAe,GAAO,EAAS,SAAU,SACzC,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAE3B,EAAO,GAAO,EAAQ,EAAO,GACnC,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EACxC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAK,EAAG,EAAK,EAAS,UAAW,EAAE,EAAI,CAC9C,GAAM,GAAW,EAAK,EAAe,EACjC,EAAQ,EACZ,KAAO,EAAQ,GACb,GAAS,EAGX,GAAM,GACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GACxD,OAAS,GAAK,EAAG,EAAK,EAAS,SAAU,EAAE,EAAI,CAC7C,GAAM,GAAW,EAAK,EAAc,EAChC,EAAQ,EACZ,KAAO,EAAQ,GACb,GAAS,EAEX,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAClD,EAAW,OAAO,kBAClB,EAAc,GAElB,OAAS,GAAK,EAAO,EAAK,EAAO,GAAM,EAAgB,CACrD,GAAM,GAAK,EAAK,EAChB,OAAS,GAAK,EAAO,EAAK,EAAO,GAAM,EAAe,CACpD,GAAM,GAAK,EAAK,EACV,EAAQ,EAAK,IAAI,EAAG,EAAI,EAAI,GAC9B,EAAQ,GACV,GAAW,EACP,EACF,EAAc,EACR,IAAI,EAAS,SAAW,GAAM,EAAS,QAAU,GAC3C,EAAS,WACb,EACH,GAAK,EAAS,QAAU,GAAM,EAAS,WAAa,EAEzD,EAAc,EAAK,EAAuB,IAKlD,EAAa,IAAI,EAAa,EAAG,EAAI,EAAI,IAKjD,MAAO,GAGH,YACF,EAAqB,EAAkB,EAAiB,EACxD,EACA,EAAqB,CACvB,GAAM,GAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAS,QAAQ,MAC5B,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAE3B,EACD,IAAa,MAAQ,OAAO,kBACP,OAAO,kBAE3B,EAAS,GAAO,EAAS,SAAU,GACnC,EAAa,EAAO,OAEpB,EAAqB,EAAS,SAAS,GAAK,EAAS,SAAS,GAChE,EAAS,SAAS,GAAK,EAAS,SAAS,GACvC,EACF,EAAS,SAAS,GAAK,EAAS,SAAS,GAAK,EAAS,SAAS,GAC9D,EAAmB,EAAS,SAAS,GAAK,EAAS,SAAS,GAC5D,EAAmB,EAAS,SAAS,GAE3C,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAAO,CACvD,GAAM,GAAoB,EAAQ,EAC5B,EAAmB,EAAQ,EAAQ,GACzC,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAS,EAAG,EAAS,EAAS,SAAU,EAAE,EAAQ,CACzD,GAAM,GAAe,EAAS,EAAc,EACxC,EAAY,EAChB,KAAO,EAAY,GACjB,GAAa,EAEf,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAChD,EACF,EAAoB,EAAS,EACjC,OAAS,IAAO,EAAG,GAAO,EAAS,UAAW,EAAE,GAAM,CACpD,GAAM,GAAa,GAAO,EAAe,EACrC,GAAU,EACd,KAAO,GAAU,GACf,IAAW,EAEb,GAAM,IACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GAClD,GAAkB,EAAoB,GAAO,EACnD,OAAS,GAAO,EAAG,EAAO,EAAS,SAAU,EAAE,EAAM,CACnD,GAAM,IAAa,EAAO,EAAc,EACpC,GAAU,GACd,KAAO,GAAU,GACf,IAAW,EAEb,GAAM,IACF,KAAK,IAAI,EAAS,QAAS,EAAuB,IAEhD,GAAkB,GAAkB,EAAO,EAC7C,GAAc,EACd,GAAW,EACX,GAAQ,EACZ,OAAS,IAAS,EAAW,GAAS,EACjC,IAAU,EAAe,CAC5B,GAAM,IAAe,EAAmB,GAAS,EAAQ,GACzD,OAAS,IAAO,GAAS,GAAO,GAAS,IAAQ,EAAgB,CAC/D,GAAM,IAAa,GAAe,GAAO,EAAQ,GACjD,OAAS,IAAO,GAAS,GAAO,GAC3B,IAAQ,EAAe,CAC1B,GAAM,IAAa,GAAa,GAAO,EAAQ,GACzC,GAAQ,EAAQ,GAAa,GAOnC,GANK,IAAa,OAAS,GAAQ,GACjC,GAAc,GACL,IAAa,OACtB,KAAY,GACZ,MAEE,MAAM,IACR,MAGJ,GAAI,MAAM,IACR,MAGJ,GAAI,MAAM,IACR,MAGJ,GAAM,IAAe,GAAkB,EACvC,EAAW,IACP,IAAa,MAAQ,GAAW,GAAQ,MAOtD,MAAO,GAGH,YACF,EACA,EAAiC,CACnC,GAAM,GAAe,GAAO,EAAS,SAAU,SACzC,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAS,QAAQ,MAC5B,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAEjC,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAChD,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAS,EAAG,EAAS,EAAS,SAAU,EAAE,EAAQ,CACzD,GAAM,GAAe,EAAS,EAAc,EACxC,EAAY,EAChB,KAAO,EAAY,GACjB,GAAa,EAEf,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GACtD,OAAS,GAAO,EAAG,EAAO,EAAS,UAAW,EAAE,EAAM,CACpD,GAAM,GAAa,EAAO,EAAe,EACrC,EAAU,EACd,KAAO,EAAU,GACf,GAAW,EAEb,GAAM,GACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GACxD,OAAS,GAAO,EAAG,EAAO,EAAS,SAAU,EAAE,EAAM,CACnD,GAAM,GAAa,EAAO,EAAc,EACpC,EAAU,EACd,KAAO,EAAU,GACf,GAAW,EAEb,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAGlD,EAAW,OAAO,kBAClB,EAAc,GAElB,OAAS,GAAS,EAAW,EAAS,EACjC,GAAU,EAAe,CAC5B,GAAM,GAAS,EAAS,EACxB,OAAS,GAAO,EAAS,EAAO,EAAS,GAAQ,EAAgB,CAC/D,GAAM,IAAO,EAAO,EACpB,OAAS,GAAO,EAAS,EAAO,EAC3B,GAAQ,EAAe,CAC1B,GAAM,IAAO,EAAO,EACd,GAAQ,EAAK,IAAI,EAAO,EAAQ,EAAM,EAAM,GAC9C,IAAS,GACX,GAAW,GACX,EACI,EAAS,EAAwB,EACjC,GAAO,EAAwB,MAM3C,EAAa,IAAI,EAAa,EAAO,EAAQ,EAAM,EAAM,KAOnE,MAAO,GCrTH,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACZ,GAAiB,EAAG,WACpB,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAC9C,EAAY,EAElB,EAAK,OACD,EAAa,+BAA+B,EAAS,GACrD,IAAM,wEACa,oBAA0B,MAEjD,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAW,EAAK,GAChB,EAEJ,GAAI,EAAS,cAAgB,GAAK,EAAS,eAAiB,GACxD,EAAK,YAAY,EAAS,QAAS,EAAS,UAC9C,EAAM,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,QACxB,CACL,GAAM,GAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAK,eAAe,EAAE,OAChC,EAAS,GAAK,EAAS,EAAE,MAAO,EAAE,MAAO,EAAS,EAAU,OAClE,EAAM,EAAQ,eACV,EAAS,SAAU,EAAE,MAAO,EAAO,QAEzC,MAAO,GAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICpCR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAAc,EAEhE,GAAiB,EAAG,aAEpB,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAAmD,EAAY,EACjE,EAAmB,EAAK,EAAiB,GAEvC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAS,GACX,EAAS,EAAE,MAAO,EAAE,MAAO,EAAK,eAAe,EAAE,OAAQ,EAAU,OAEvE,MAAO,GAAQ,eAAe,EAAO,MAAO,UAAW,EAAO,QAGzD,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC1BR,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,GAAS,EACd,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAEpD,GAAiB,CAAC,EAAI,GAAQ,iBAE9B,GAAM,GAAW,EAAa,kBAC1B,EAAM,MAAmD,EACzD,EAAS,EAAmB,EAAK,GAE/B,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAuB,EAAI,EAAS,QAAQ,MACvD,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EAAK,GAAO,EAAM,MAAO,WAEzB,EAAgB,EAAK,GAAc,EAAe,GAElD,EAAQ,EAAQ,WAAW,GAEjC,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAChD,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAU,EAAG,EAAU,EAAS,QAAS,EAAE,EAClD,OAAS,GAAQ,EAAG,EAAQ,EAAS,SAAU,EAAE,EAC/C,OAAS,GAAQ,EAAG,EAAQ,EAAS,QAAS,EAAE,EAAO,CAErD,GAAM,IAAgB,EAAU,EAC1B,EAAc,EAAQ,EACtB,GAAc,EAAQ,EACxB,GAAU,EACd,OAAS,IAAS,EAAG,GAAS,EACzB,IAAU,EAAe,CAC5B,GAAM,GAAW,IAAgB,IAAU,EAC3C,GAAI,CAAA,GAAU,GAAK,GAAW,EAAS,UACnC,KAAK,MAAM,KAAa,GAG5B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAgB,CAC3B,GAAM,IAAS,GAAc,IAAQ,EACrC,GAAI,CAAA,IAAQ,GAAK,IAAS,EAAS,WAC/B,KAAK,MAAM,MAAW,IAG1B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAe,CAC1B,GAAM,IAAS,IAAc,IAAQ,EACrC,AAAI,GAAQ,GAAK,IAAS,EAAS,UAC/B,KAAK,MAAM,MAAW,IAM1B,KADI,EAAM,IAAI,EAAO,EAAS,GAAO,GAAO,MAKlD,EAAG,IACC,GAAU,EAAe,EAAO,EAAS,EAAO,EAAO,GAOrE,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,ICzFR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,GAAS,EACd,EAAI,EACV,GAAiB,CAAC,EAAI,GAAQ,eAC9B,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,GAAO,EAE7B,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAmB,GACjB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EACF,GAAgB,EAAE,MAA2C,WAE3D,EAAgB,EAAK,GAAe,GAEpC,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACrC,EAAQ,GACV,EAAG,MAA2C,UAAW,GAE7D,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EACxC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAM,EAAG,EAAM,EAAS,SAAU,EAAE,EAC3C,OAAS,GAAM,EAAG,EAAM,EAAS,QAAS,EAAE,EAAK,CAE/C,GAAM,GAAY,EAAM,EAClB,EAAY,EAAM,EACpB,EAAU,EACd,OAAS,GAAK,EAAG,EAAK,EAAuB,GAAM,EAAgB,CACjE,GAAM,GAAO,GAAY,GAAM,EAC/B,GAAI,CAAA,GAAM,GAAK,GAAO,EAAS,WAC3B,KAAK,MAAM,KAAS,GAGxB,OAAS,IAAK,EAAG,GAAK,EAAsB,IAAM,EAAe,CAC/D,GAAM,GAAO,GAAY,IAAM,EAC/B,AAAI,EAAM,GAAK,GAAO,EAAS,UAC3B,KAAK,MAAM,KAAS,GAKxB,IADc,EAAM,IAAI,EAAG,EAAK,EAAK,KAIzC,EAAG,IAAI,EAAU,EAAe,EAAG,EAAK,EAAK,GAKrD,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,ICpER,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,KAAA,EAAM,SAAA,GAAY,EAE3C,EAAK,OACD,EAAK,MAAM,SAAW,EAAS,MAAM,OACrC,IAAM,gFAEV,EAAK,OACD,GAAU,MAAQ,EAAK,MAAM,SAAW,EAAO,MAAM,OACrD,IAAM,8EAEV,EAAK,OACD,GAAS,MAAQ,EAAK,MAAM,SAAW,EAAM,MAAM,OACnD,IAAM,6EAGV,GAAiB,CAAC,EAAG,EAAM,EAAU,EAAO,GAAS,aAErD,GAAI,CAAC,gBAAA,GAAmB,EACpB,GAAmB,MACrB,GAAkB,MAGpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAK,QAAQ,OACtC,EAAU,EAAQ,KAAK,IAAI,EAAS,QAAQ,OAC5C,EAAQ,EAAQ,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC/B,GAAI,cAAa,CAAC,IAClC,EAAU,EACZ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAChC,GAAI,cAAa,CAAC,IAChB,EAAU,GAAI,cAAa,EAAM,QAEjC,EAAgB,EAAQ,OACxB,EAAc,EAAM,OACpB,EAAgB,EAAQ,OACxB,EAAc,EAAM,OAEtB,EAAO,EACP,EAAK,EACL,EAAK,EACL,EAAK,EACT,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAClC,EAAQ,GAAK,EAAQ,KAChB,GAAM,GAAK,EAAM,MAAS,EAAM,KAC7B,KAAK,KAAK,EAAQ,KAAQ,GAC9B,GAAQ,GACV,GAAO,GAEL,GAAM,GACR,GAAK,GAEH,GAAM,GACR,GAAK,GAEH,GAAM,GACR,GAAK,GAGT,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,GAG3C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICnER,YAAyB,EAI9B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,MAAA,GAAS,EAE5B,GAAiB,CAAC,GAAI,kBAEtB,GAAM,GAAO,EAAW,OAAO,CAAC,EAAG,IAAM,EAAI,GAEvC,EAAW,EAAa,YAAY,EAAE,MAAO,EAAY,GACzD,EAAW,EAAa,YAAY,EAAS,OAAQ,EAAW,QAChE,EACF,EAAa,oBAAoB,EAAE,MAAO,EAAY,GACpD,EACF,EAAa,oBAAoB,EAAO,EAAW,QACjD,EACF,EAAa,aAAa,EAAkB,EAAO,EAAW,QAE5D,EAAY,GAAQ,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAC1D,EACF,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAY,QAAA,EAAS,MAAO,CAAC,KAAM,KACxD,EAAsB,GACxB,CAAC,OAAQ,CAAC,EAAG,GAAc,QAAA,EAAS,MAAO,CAAC,MAAO,KACjD,EAAS,GAAM,CACnB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,EAAkB,KAAM,KAGzC,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAAqC,CAChD,WAAY,GACZ,YAAa,MACb,WAAY,IC9CR,YAAmB,EAIxB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,QAAA,GAAW,EACf,CAAC,KAAA,GAAQ,EAET,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAc,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAE/C,EACF,GAAa,EAAO,EAAa,EAAQ,MAAO,EAAQ,MAAO,GAEnE,MAAO,GAAQ,eAAe,CAAC,GAAO,EAAQ,MAAO,GAGhD,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICtBD,GAAO,GAAgB,GAAa,CAAC,EAAI,IAAS,CAC7D,GAAM,GAAY,EAClB,MAAI,GAAK,EAAU,aACV,EAAU,aAEZ,EAAK,EAAU,aAAe,EAAU,aAAe,IAGnD,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICXD,GACR,GAA6D,CAC5D,GAAM,CAAC,EAAA,GAAK,EAAK,OACX,EAAa,EAAK,QAClB,EAAe,GAAI,cAAa,EAAK,cAAc,EAAE,QACrD,EAAc,EAAW,KAAK,IAAI,EAAE,QACpC,EAAO,EAAY,mBAAmB,KACtC,EAAO,EAAY,mBAAmB,KACtC,EAAW,EAAW,KAAK,IAAI,EAAK,QAAQ,OAC5C,EAAW,EAAW,KAAK,IAAI,EAAK,QAAQ,OAClD,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACxC,GAAM,GAAO,EAAS,GAChB,EAAO,EAAS,GACtB,EAAa,GAAK,KAAK,MAAM,EAAM,GAGrC,MAAO,GAAW,WAAW,EAAc,EAAE,MAAO,YAG7C,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAO,EAAQ,KAAK,IAAI,EAAM,QAAQ,mBAAmB,KACzD,EAAU,EAAQ,KAAK,IAAI,EAAK,QAAQ,OAK9C,MAAO,GAAQ,eAAe,EAAK,MAAO,EAAK,MAAO,GAGjD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICVR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,KAAA,GAAQ,EAET,EAAQ,EAAK,eAAe,EAAM,EAAO,GAAG,OAAO,GACrD,EAAW,EAAa,gBAAgB,EAAO,IAAI,GAAK,EAAE,OAAQ,GAEtE,GAAI,EAAK,cAAc,KAAc,EACnC,MAAO,GAAQ,eAAe,EAAU,EAAO,GAAG,MAAO,IAI3D,GAAM,GAAU,EAAO,OAAO,GAAK,EAAK,cAAc,EAAE,OAAS,GACjE,GAAI,EAAQ,SAAW,EACrB,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAG,EAAQ,IAAK,QAAA,IAG5C,GAAM,GAAS,EAAQ,IAAI,GAAK,EAAE,OAGlC,GAFA,EAAa,uBAAuB,EAAQ,GAExC,EAAQ,GAAG,QAAU,YAAa,CACpC,GAAM,GAAQ,EAAQ,IAAK,GAAM,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,KACrD,EAAQ,EAAQ,IAAK,GAAM,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,KAErD,EAAe,GAAO,CAAC,OAAQ,EAAO,QAAA,EAAS,MAAO,CAAC,KAAM,KAC7D,EAAe,GAAO,CAAC,OAAQ,EAAO,QAAA,EAAS,MAAO,CAAC,KAAM,KAE7D,EACF,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAc,KAAM,GAAe,QAAA,IAE/D,MAAA,GAAM,QAAQ,GAAK,EAAQ,8BAA8B,IACzD,EAAM,QAAQ,GAAK,EAAQ,8BAA8B,IACzD,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAUT,GAAM,GAAW,EAAQ,IAAI,GAAI,CAC/B,GAAM,GAAY,EAAK,cAAc,EAAE,MAAM,MAAM,IAEnD,MAAO,IAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,MADnC,CAAC,GAAI,QAIf,EAAkB,EAAS,IAAI,GAC5B,EAAC,KAAM,EAAQ,KAAK,IAAI,EAAE,QAAQ,OAAQ,MAAO,EAAE,SAI5D,EACI,EAAa,gBAAgB,EAAS,IAAI,GAAK,EAAE,OAAQ,GAC7D,GAAM,GAAe,EAAS,GAAG,MAAM,KAAO,EACxC,EACF,GAAW,EAAiB,EAAU,EAAO,GAAG,MAAO,GAErD,EACF,EAAa,gBAAgB,EAAQ,IAAI,GAAK,EAAE,OAAQ,GAEtD,EACF,EAAQ,eAAe,EAAe,EAAO,GAAG,MAAO,GAE3D,MAAA,GAAS,QAAQ,GAAK,EAAQ,8BAA8B,IAErD,EAGF,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICpFR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,GAAmB,EAE/D,GAAiB,CAAC,EAAG,GAAS,UAE9B,GAAM,GAAc,EAAa,wBAAwB,GACnD,EAAW,EAAa,kBAC1B,EAAE,MACF,EAAO,MAA2C,EAAS,EAAW,EACtE,EAAiB,GAAuB,GAEtC,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAU,EAAS,QAAQ,KAC3B,EAAS,EAAS,QAAQ,IAC1B,EAAiB,EAAS,aAAe,eAEzC,EAAI,GAAI,IAAa,EAAS,SAAU,EAAE,OAE1C,EAAW,EAAK,eAAe,EAAE,OACjC,EAAgB,EAAK,eAAe,EAAO,OAE3C,EAAe,EAAS,GACxB,EAAa,EAAiB,EAAS,GAAK,EAAS,GACrD,EAAa,EAAiB,EAAS,GAAK,EAC5C,EAAiB,EAAiB,EAAI,EAAS,GAC/C,EAAe,EAAE,QAAQ,GACzB,EAAa,EAAiB,EAAE,QAAQ,GAAK,EAAE,QAAQ,GACvD,EAAa,EAAiB,EAAE,QAAQ,GAAK,EAC7C,EAAiB,EAAiB,EAAI,EAAE,QAAQ,GAEhD,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OACxC,EAAQ,EAAE,OAEhB,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GAAG,CAC3C,GAAM,GAAW,GAAI,EACf,GAAW,GAAI,EACrB,OAAS,IAAK,EAAG,GAAK,EAAS,UAAW,EAAE,GAAI,CAC9C,GAAM,IAAW,GAAW,GAAK,EAC3B,EAAW,GAAK,EAAS,aAAe,EAC9C,OAAS,IAAK,EAAG,GAAK,EAAc,EAAE,GAAI,CACxC,GAAM,IAAK,EAAW,GAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,SAC3B,SAEF,GAAM,IAAW,GAAK,EAAc,GAC9B,GAAW,EAAW,GAAK,EACjC,OAAS,IAAK,EAAG,GAAK,EAAS,SAAU,EAAE,GAAI,CAC7C,GAAM,IAAW,GAAW,GAAK,EAC3B,GAAW,GAAK,EAAS,YAAc,EAC7C,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAK,GAAW,GAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,GAAW,GAAK,EAAc,GACzC,GAAW,GAAW,GAAK,EAC7B,GAAW,GACf,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAO,EAAM,GAAW,GAAK,GACnC,OAAS,IAAK,EAAG,GAAK,EAAS,YAAa,EAAE,GAC5C,EAAM,GAAW,GAAK,IAClB,GAAO,EAAM,GAAW,IAE9B,IAAY,EAAS,iBAQjC,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,GAG3C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICrFR,YAA+B,EAIpC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,GAAA,GAAM,EACV,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,EAAiB,YAAA,GAAe,EAEjE,GAAiB,CAAC,EAAG,GAAK,wBAE1B,GAAM,GAAc,EAAa,wBAAwB,GACnD,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAa,EAC1D,EAAmB,EAAK,EAAiB,GACzC,GAEE,CAAC,aAAA,EAAc,YAAA,EAAa,aAAA,EAAc,YAAA,GAAe,EACzD,EAAiB,EAAS,aAAe,eACzC,EAAK,GAAI,IAAa,EAAS,YAAa,WAE5C,EAAU,EAAS,QAAQ,KAC3B,EAAS,EAAS,QAAQ,IAC1B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAErC,EAAO,GAAI,IAAa,EAAE,MAAO,EAAE,MAAO,GAC1C,EAAQ,GAAI,IAAa,EAAG,MAAO,EAAG,MAAO,GAEnD,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAS,GAAM,IAC9C,EAAQ,KAAK,IACf,EAAS,UAAY,GAAS,SAAW,EAAS,GAAM,GAE5D,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAU,GAAM,IAC/C,EAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,EAAU,GAAM,GAE3D,OAAS,GAAK,EAAG,EAAK,EAAS,WAAY,EAAE,EAC3C,OAAS,GAAK,EAAG,EAAK,EAAS,YAAa,EAAE,EAAI,CAChD,GAAI,GAAU,EACd,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GACxC,OAAS,GAAK,EAAO,EAAK,EAAO,EAAE,EAAI,CACrC,GAAM,IAAK,EAAK,EAAK,EAAe,EACpC,OAAS,IAAK,EAAO,GAAK,EAAO,EAAE,GAAI,CACrC,GAAM,IAAK,EAAK,GAAK,EAAc,EAC/B,EACF,GAAY,EAAK,IAAI,GAAG,GAAI,GAAI,GAC3B,EAAM,IAAI,GAAG,EAAI,GAAI,GAE1B,GAAY,EAAK,IAAI,GAAG,EAAI,GAAI,IAC3B,EAAM,IAAI,GAAG,EAAI,EAAI,KAKlC,EAAG,IAAI,EAAS,EAAI,EAAI,EAAI,KAMpC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA2C,CACtD,WAAY,GACZ,YAAa,MACb,WAAY,ICrER,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,OAAA,GAAU,EACf,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,GAAmB,EAEhE,GAAiB,CAAC,EAAI,GAAS,uBAE/B,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,EAAY,EAAK,eAAe,EAAG,OAErC,EAAc,EAAa,wBAAwB,GACjD,EAAW,EAAa,kBAC1B,EAAY,EAAO,MAA2C,EAC9D,EAAmB,EAAK,EAAiB,GAAO,GAE9C,EAAK,GAAI,IAAa,EAAS,QAAS,WACxC,EAAW,EAAG,OACd,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,EAAY,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC5C,CAAC,EAAO,EAAO,GAAS,EACxB,CACJ,UAAA,EACA,aAAA,EACA,YAAA,EACA,WAAA,EACA,SAAA,EACA,QAAA,EACA,YAAA,EACA,UAAA,EACA,SAAA,EACA,aAAA,EACA,YAAA,GACE,EACJ,EAAc,EAAS,WACvB,GAAM,GAAS,EAAe,EAAI,EAAS,QAAQ,IAC7C,GAAU,EAAc,EAAI,EAAS,QAAQ,KAE7C,EAAiB,IAAgB,eACjC,GAAe,EAAG,QAAQ,GAC1B,GAAa,EAAiB,EAAG,QAAQ,GAAK,EAAG,QAAQ,GACzD,GAAa,EAAiB,EAAG,QAAQ,GAAK,EAC9C,EAAiB,EAAiB,EAAI,EAAG,QAAQ,GACjD,GAAe,EAAU,GACzB,GAAa,EAAiB,EAAU,GAAK,EAAU,GACvD,GAAa,EAAiB,EAAU,GAAK,EAC7C,GAAiB,EAAiB,EAAI,EAAU,GAEtD,OAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAC/B,OAAS,IAAK,EAAG,GAAK,EAAY,EAAE,GAClC,OAAS,IAAK,EAAG,GAAK,EAAU,EAAE,GAAI,CACpC,GAAM,IAAW,GAAK,EAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,IACzC,GACF,KAAK,IAAI,EAAY,GAAe,IAAY,GAEpD,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,IACzC,GACF,KAAK,IAAI,EAAW,GAAc,IAAY,GAE9C,GAAU,EACd,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,EAAe,GAE/B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,EAAc,GACxB,GACF,GAAe,GAAI,GAAa,GAAK,GAAa,GAChD,GAAY,EAAS,GAAe,EAAI,IAC1C,EAAS,GAAc,EAAI,IAAM,EAAQ,GAE7C,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,EAAS,GAAW,GAAiB,IAC7C,GAAS,EAAU,GAAY,IACrC,IAAW,GAAQ,KAIzB,GAAM,IAAW,GAAe,GAAI,GAAa,GAC7C,GAAa,GAAK,EAAiB,GACvC,EAAS,IAAY,IAM7B,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,ICjGR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAElC,GAAiB,CAAC,EAAG,GAAS,UAE9B,GAAM,GAAW,EAAa,kBAC1B,EAAE,MACF,EAAO,MAAmD,EAC1D,EAAW,GAET,CACJ,YAAA,EACA,aAAA,EACA,YAAA,EACA,cAAA,EACA,eAAA,EACA,cAAA,EACA,QAAA,GACE,EACE,EAAW,EAAQ,MACnB,EAAU,EAAQ,KAClB,EAAS,EAAQ,IACjB,EAAI,GAAI,IAAa,EAAS,SAAU,EAAE,OAE1C,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OACxC,EAAQ,EAAE,OAEV,EAAW,EAAK,eAAe,EAAE,OACjC,EAAgB,EAAK,eAAe,EAAO,OAEjD,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EAAG,CAC3C,GAAM,GAAW,EAAI,EAAS,GACxB,EAAW,EAAI,EAAE,QAAQ,GAC/B,OAAS,GAAK,EAAG,EAAK,EAAS,SAAU,EAAE,EAAI,CAC7C,GAAM,GAAW,EAAW,EAAK,EAAE,QAAQ,GACrC,EAAW,EAAK,EAAS,YAAc,EAC7C,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,GAAK,EAAW,EAAK,EAC3B,GAAI,EAAK,GAAK,GAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,EAAK,EAAc,GAC9B,EAAW,EAAW,EAAK,EAAS,GAE1C,OAAS,IAAK,EAAG,GAAK,EAAS,UAAW,EAAE,GAAI,CAC9C,GAAM,IAAW,EAAW,GAAK,EAAE,QAAQ,GACrC,GAAW,GAAK,EAAS,aAAe,EAC9C,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,IAAK,GAAW,EAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,SAC3B,SAEF,GAAM,IAAW,GAAW,EAAK,EAAc,GACzC,GAAW,EAAW,GAAK,EAAS,GAC1C,OAAS,IAAK,EAAG,GAAK,EAAS,SAAU,EAAE,GAAI,CAC7C,GAAM,IAAW,GAAW,GAAK,EAAS,YACpC,GAAW,GAAK,EAAS,YAAc,EAC7C,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAK,GAAW,GAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,GAAW,GAAK,EAAc,GACzC,GAAW,GAAW,GAAK,EAAS,WACtC,GAAW,GACf,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAO,EAAM,GAAW,IAC9B,OAAS,IAAK,EAAG,GAAK,EAAS,YAAa,EAAE,GAC5C,EAAM,GAAW,KAAO,GAAO,EAAM,GAAW,IAElD,IAAY,EAAS,mBAUrC,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,EAAE,QAG7C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IC3FR,YAAiC,EAItC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,GAAA,GAAM,EACV,CAAC,QAAA,EAAS,IAAA,EAAK,YAAA,GAAe,EAEpC,GAAiB,CAAC,EAAG,GAAK,0BAE1B,GAAM,GAAW,EAAK,eAAe,EAAE,OACjC,EAAY,EAAK,eAAe,EAAG,OAEnC,EAAW,EAAa,kBAC1B,EAAE,MAAmD,EAAa,EAClE,EAAmB,GAEjB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YAEvB,EAAK,GAAI,IAAa,EAAS,YAAa,WAC5C,EAAW,EAAG,OACd,CAAC,EAAM,EAAM,EAAM,GAAQ,EAAG,QAC9B,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,CAAC,EAAM,EAAM,EAAM,GAAQ,EAC3B,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,CAAC,EAAK,EAAK,EAAK,GAAO,EAEvB,GAAW,EAAS,QAAQ,MAC5B,EAAU,EAAS,QAAQ,KAC3B,GAAS,EAAS,QAAQ,IAEhC,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,IAAW,IAAM,IAChD,EAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,GAAW,IAAM,GACtD,GAAW,GAAK,EAEtB,OAAS,IAAK,EAAG,GAAK,EAAc,EAAE,GAAI,CACxC,GAAM,IAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,IAAS,IAAM,IAC9C,GAAQ,KAAK,IACf,EAAS,UAAY,GAAS,SAAW,GAAS,IAAM,GACtD,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAU,IAAM,IAC/C,GAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,EAAU,IAAM,GACrD,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,EAAG,GAAK,EAAS,YAAa,EAAE,GAAI,CAChD,GAAI,IAAU,EACd,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GAAG,CAC3C,GAAM,IAAW,GAAI,EACf,GAAW,GAAI,EAErB,OAAS,IAAK,GAAO,GAAK,EAAO,EAAE,GAAI,CAErC,GAAM,IADK,IAAK,GAAK,EAAc,IACb,EAAM,GACtB,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CAErC,GAAM,IADK,IAAK,GAAK,EAAe,IACd,EAAM,GACtB,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CAErC,GAAM,IADK,IAAK,GAAK,EAAc,GACb,EAAM,GACtB,GAAW,GAAK,EAAO,GAE7B,IAAW,EAAQ,GAAW,IAAM,EAAS,GAAW,OAKhE,EAAS,GAAW,IAAM,OAOpC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA6C,CACxD,WAAY,GACZ,YAAa,MACb,WAAY,ICjGR,YAAgC,EAIrC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,OAAA,GAAU,EACf,CAAC,IAAA,EAAK,QAAA,EAAS,WAAA,GAAc,EAEnC,GAAiB,CAAC,GAAK,yBAEvB,GAAM,GAAY,EAAK,eAAe,EAAG,OACnC,EAAgB,EAAK,eAAe,EAAO,OAE3C,EAAW,EAAa,kBAC1B,EAAY,EAAO,MACnB,EAAS,EAAmB,GAE1B,EAAK,GAAI,IAAa,EAAS,QAAS,WACxC,EAAW,EAAG,OACd,CAAC,EAAM,EAAM,EAAM,GAAQ,EAAG,QAC9B,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,CAAC,EAAM,EAAM,EAAM,GAAQ,EAC3B,EAAY,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC5C,CAAC,EAAO,EAAO,EAAO,GAAS,EAC/B,CACJ,UAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,WAAA,EACA,QAAA,EACA,SAAA,GACA,QAAA,EACA,YAAA,GACA,SAAA,GACA,UAAA,GACA,SAAA,EACA,YAAA,GACA,aAAA,GACA,YAAA,IACE,EACE,GAAW,EAAc,EAAI,EAAS,QAAQ,MAC9C,GAAS,EAAe,EAAI,EAAS,QAAQ,IAC7C,GAAU,EAAc,EAAI,EAAS,QAAQ,KAEnD,OAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAC/B,OAAS,IAAK,EAAG,GAAK,EAAY,EAAE,GAElC,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,GAAW,GAAc,IAAY,IAGlD,OAAS,IAAK,EAAG,GAAK,GAAU,EAAE,GAAI,CACpC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,GAAY,GAAe,IAAY,IAEpD,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,EAAW,GAAc,IAAY,IAE9C,GAAU,EACd,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAc,GAE9B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAe,GAE/B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAc,GACxB,GAAW,EAAO,GAAI,EAAO,GAAK,EAAO,GAAK,EAAO,GACrD,GAAY,EAAS,GAAc,EAAI,IACzC,EAAS,GAAe,EAAI,IAC5B,EAAS,GAAc,EAAI,IAAM,EAAQ,GAE7C,OAAS,IAAK,EAAG,GAAK,GAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,EAAS,GAAW,IAC5B,GAAS,EAAU,GAAY,IACrC,IAAW,GAAQ,MAK3B,EAAS,EAAO,GAAI,EAAO,GAAK,EAAO,GAAK,EAAO,GAAK,IACpD,KAOd,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA4C,CACvD,WAAY,GACZ,YAAa,MACb,WAAY,ICzGD,GAAM,GAAgB,GAAM,GAAO,KAAK,IAAI,IAE5C,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLR,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,MAAA,EAAO,OAAA,GAAU,EACzB,CAAC,SAAA,EAAU,OAAA,EAAQ,mBAAA,GAAsB,EAEzC,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MACtD,EAAW,EAAM,MAAM,GAEvB,CAAC,EAAY,GAAa,EAC1B,EACF,GAAO,CAAC,EAAU,EAAY,EAAW,GAAc,WAErD,EAAU,EAAQ,KAAK,IAAI,EAAM,QAAQ,OACzC,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC7C,EAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAE3C,EACF,EAAK,eAAe,EAAM,OACxB,EAAY,EAAK,eACnB,EAAO,OAKX,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAW,EAAI,EACf,EAAK,EAAQ,GACb,EAAK,EAAQ,EAAW,GACxB,EAAK,EAAQ,EAAW,GACxB,EAAK,EAAQ,EAAW,GAExB,EAAe,EAAW,GAChC,GAAI,GAAQ,EACV,SAGF,GAAM,GACD,EAAa,EAAM,GAAK,GAAO,GAAc,GAAM,GAAa,GAAK,EACpE,EACD,EAAY,EAAM,GAAK,GAAO,GAAa,GAAM,GAAY,GAAK,EAEvE,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAM,GAAgB,EAAa,EAC/B,EAAM,GAAc,GAAK,EAAK,EAC9B,GAAO,GAAK,GAAO,GAAc,GAErC,GAAI,EAAO,GAAK,EAAO,EAAc,EAAG,CACtC,OAAS,IAAI,EAAG,GAAI,EAAW,KAC7B,OAAS,GAAI,EAAG,EAAI,EAAa,IAAK,CACpC,GAAM,IACF,EAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,IAAO,EAGzB,SAGF,GAAI,IAAW,WAAY,CACzB,GAAM,IAAS,KAAK,MAAM,GACpB,EAAY,KAAK,KAAK,GACtB,GAAQ,EAAO,GAErB,OAAS,IAAI,EAAG,GAAI,EAAW,KAAK,CAClC,GAAM,IAAQ,EAAY,EACtB,EAAM,GAAa,GAAK,GAAI,EAC5B,GAAO,GAAK,GAAO,GAAa,GAEpC,GAAI,GAAO,GAAK,GAAO,EAAa,EAAG,CACrC,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAM,IACF,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,IAAO,EAEvB,SAGF,GAAM,GAAU,KAAK,MAAM,IACrB,GAAW,KAAK,KAAK,IACrB,GAAQ,GAAO,EAErB,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAI,IAAM,GAAI,EAAU,EAAS,GAAK,GAAS,EAAS,GACpD,EAAO,EAAS,GACd,GAAU,EAAU,IAE1B,GAAM,GAAI,GAAW,EAAS,GAAK,GAAS,EAAS,GACjD,EAAO,EAAS,GACpB,GAAM,IAAW,EAAU,IAE3B,GAAM,GAAI,EAAU,EAAS,GAAK,EAAY,EAAS,GACnD,EAAO,EAAS,GACpB,GAAM,IAAa,EAAU,IAE7B,GAAM,GAAI,GAAW,EAAS,GAAK,EAAY,EAAS,GACpD,EAAO,EAAS,GACpB,GAAM,IAAc,EAAU,IAExB,GAAM,GAAW,IAAW,IAAW,GACvC,GAAS,GAAc,IAAc,IAAc,GAEzD,GAAM,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC9D,EAAO,OAAO,IAAO,GAAQ,IAAS,IAAO,SAIjD,QAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAAG,CAClC,GAAM,GAAQ,EAAY,EACtB,EAAM,GAAa,GAAK,GAAI,EAC5B,GAAO,GAAK,GAAO,GAAa,GAEpC,GAAI,EAAO,GAAK,EAAO,EAAa,EAAG,CACrC,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAM,GACF,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,GAAO,EAEvB,SAGF,GAAM,IAAW,KAAK,MAAM,GACtB,GAAW,KAAK,MAAM,GAC5B,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAM,GAAQ,GAAI,GAAW,EAAS,GAAK,GAAW,EAAS,GAC3D,EAAO,EAAS,GACd,GACF,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,IAAU,EAAU,MAO5C,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,IC7IR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,UAAA,EAAW,QAAA,GAAW,EAEnC,GAAiB,EAAG,UAEpB,GAAM,GAAc,EAAa,mBAAmB,CAAC,GAAO,EAAE,MAAM,QAChE,EAAK,EACL,GAAe,MACjB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,MAEtD,GAAM,GAAe,EAAa,iBAAiB,EAAG,EAAE,MAAM,QAAQ,GAEtE,GAAI,IAAiB,EAAG,MAAM,OAAS,EACrC,KAAM,IAAI,OACN,oDACQ,EAAG,MAAM,OAAS,kBAAkB,KAGlD,GAAM,GAAc,GAAW,EAAG,MAAO,SACnC,EAAO,EAAK,oBACD,EAAK,cAAc,EAAG,OAAQ,GAEzC,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACpC,EAAW,EAAG,MAAM,EAAG,MAAM,OAAS,GACtC,EAAgB,EAClB,CAAC,EAAW,IAAc,EAAI,EAAW,EAAI,EAC7C,CAAC,EAAW,IAAc,EAAI,EAClC,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EACrC,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAM,EAAc,EAAG,GAC7B,GAAI,IAAM,EACR,EAAK,GAAO,EAAY,EAAI,EAAM,OAC7B,CACL,GAAM,GAAU,EAAc,EAAG,EAAI,GACrC,EAAK,GAAO,EAAY,EAAM,GAAW,EAAK,GACtB,EAAM,GAAO,EAAK,IAKhD,GAAM,GAAS,EAAQ,eAAe,EAAG,MAAO,EAAa,GAE7D,GAAI,GAAe,KAAM,CACvB,GAAM,GAAqB,EAAa,uBAAuB,GACzD,EAA0B,GAC5B,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,KAAM,KAEjD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IChER,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,QAAA,GAAW,EACf,CAAC,KAAA,EAAM,aAAA,GAAgB,EAE7B,GAAI,EAAE,MAAM,SAAW,EAAG,CACxB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAc,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAE/C,EACF,GAAa,EAAO,EAAa,EAAQ,MAAO,EAAQ,MAAO,GAEnE,MAAO,GAAQ,eAAe,CAAC,GAAO,EAAQ,MAAO,WAC5C,EAAE,MAAM,SAAW,EAAG,CAC/B,GAAM,GAAO,EAAQ,WAAW,GAC1B,EAAa,EAAQ,WAAW,GAEhC,EAAS,GAAmB,EAAM,EAAY,EAAM,GAE1D,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAQ,MAAO,EAAO,QAGpE,KAAM,IAAI,OACN,qEACG,EAAE,MAAM,WAGV,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,ICnCR,YAAuB,EAI5B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,UAAA,EAAW,WAAA,GAAc,EAEhC,EAAK,OACD,IAAe,OACf,IAAM,+DACF,KACR,EAAK,OACD,EAAY,EACZ,IAAM,sDAAsD,KAEhE,GAAM,GAAY,EAAE,MAAM,GACpB,EAAc,EAAE,MAAM,GACtB,EAAa,EAAE,MAAM,GACrB,EAAa,EAAE,MAAM,GAErB,EAAe,EAAc,EAC7B,EAAc,EAAa,EAC3B,EAAc,EAAc,GAAY,GAExC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EACF,GAAI,cAAa,EAAY,EAAe,EAAc,GAE1D,EAAY,EAChB,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAI,EAAG,EAAI,EAAc,EAAE,EAAG,CACrC,GAAM,GAAM,KAAK,MAAM,EAAI,GACrB,EAAW,EAAI,EACrB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,GAAM,KAAK,MAAM,EAAI,GACrB,EAAW,EAAI,EACf,EAAW,GAAU,EAAY,GAAW,EAClD,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CAEpC,GAAM,GADM,EAAI,EAEN,EAAc,GAAM,EAAc,GAAM,EAAc,IAChE,EAAO,KAAe,EAAQ,KAMtC,MAAO,GAAQ,eACX,CAAC,EAAW,EAAc,EAAa,GAAc,EAAE,MAAO,GAG7D,GAAM,IAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,ICvDR,YAAgC,EAIrC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,EAAW,gBAAA,GAAmB,EAEnD,GAAiB,CAAC,EAAG,GAAS,yBAE9B,GAAM,GAAW,EAAK,eAAe,EAAE,OACjC,EAAgB,EAAK,eAAe,EAAO,OAE7C,EAAa,EACb,GAAc,MAChB,GAAa,CAAC,EAAG,IAGnB,EAAK,OACD,EAAa,+BAA+B,EAAS,GACrD,IAAM,gFACgB,oBAA0B,MAEpD,GAAM,GAAW,EAAa,kBAC1B,EAAE,MACF,EAAO,MAA2C,EAAS,EAC3D,EAAK,EAAiB,IAEpB,CAAC,aAAA,EAAc,YAAA,EAAa,eAAA,EAAgB,cAAA,EAAe,QAAA,GAC7D,EACE,EAAU,EAAQ,KAClB,EAAS,EAAQ,IACjB,EAAQ,EAAS,YAAc,EAAS,WACxC,EAAI,GAAI,IAAa,EAAS,SAAU,EAAE,OAC1C,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OACxC,EAAQ,EAAE,OAEhB,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EAAG,CAC3C,GAAM,GAAW,EAAI,EAAS,GACxB,EAAW,EAAI,EAAE,QAAQ,GAC/B,OAAS,GAAK,EAAG,EAAK,EAAS,UAAW,EAAE,EAAI,CAC9C,GAAM,GAAW,EAAW,EAAK,EAAE,QAAQ,GACrC,EAAW,EAAK,EAAS,aAAe,EAC9C,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,GAAK,EAAW,EAAK,EAC3B,GAAI,EAAK,GAAK,GAAM,EAAS,SAC3B,SAEF,GAAM,IAAW,EAAK,EAAc,GAC9B,EAAW,EAAW,EAAK,EAAS,GAC1C,OAAS,IAAK,EAAG,GAAK,EAAS,SAAU,EAAE,GAAI,CAC7C,GAAM,IAAW,EAAW,GAAK,EAAE,QAAQ,GACrC,GAAW,GAAK,EAAS,YAAc,EAC7C,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,IAAK,GAAW,EAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,GAAW,EAAK,EAAc,GACzC,GAAW,EAAW,GAAK,EAAS,WACtC,GAAW,GACX,GAAW,GACf,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAO,EAAM,GAAW,IAC9B,OAAS,IAAI,EAAG,GAAI,EAAO,EAAE,GAC3B,EAAM,GAAW,KAAM,GAAO,EAAM,GAAW,IAEjD,IAAY,EACZ,IAAY,OAQxB,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,EAAE,QAG7C,GAAM,IAA4C,CACvD,WAAY,GACZ,YAAa,MACb,WAAY,ICpFR,YAA8C,EAInD,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,GAAA,GAAM,EACV,CAAC,QAAA,EAAS,UAAA,EAAW,IAAA,EAAK,gBAAA,EAAiB,YAAA,GAAe,EAEhE,GAAiB,CAAC,EAAG,GAAK,uCAE1B,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAa,EAC1D,EAAW,EAAK,EAAiB,IAE/B,CAAC,aAAA,EAAc,YAAA,EAAa,aAAA,EAAc,YAAA,GAAe,EAEzD,EAAK,GAAI,IAAa,EAAS,YAAa,WAE5C,EAAU,EAAS,QAAQ,KAC3B,EAAS,EAAS,QAAQ,IAC1B,EAAQ,EAAS,YAAc,EAAS,WAExC,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAO,GAAI,IAAa,EAAE,MAAO,EAAE,MAAO,GAC1C,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACrC,EAAQ,GAAI,IAAa,EAAG,MAAO,EAAG,MAAO,GACnD,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAS,GAAM,IAC9C,EAAQ,KAAK,IACf,EAAS,UAAY,GAAS,SAAW,EAAS,GAAM,GAE5D,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAU,GAAM,IAC/C,EAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,EAAU,GAAM,GAE3D,OAAS,GAAK,EAAG,EAAK,EAAS,YAAa,EAAE,EAAI,CAChD,GAAM,GAAK,KAAK,MAAM,EAAK,GACrB,EAAK,EAAK,EAEZ,EAAU,EACd,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GACxC,OAAS,GAAK,EAAO,EAAK,EAAO,EAAE,EAAI,CACrC,GAAM,IAAK,EAAK,EAAK,EAAe,EACpC,OAAS,IAAK,EAAO,GAAK,EAAO,EAAE,GAAI,CACrC,GAAM,IAAK,EAAK,GAAK,EAAc,EACnC,GAAY,EAAK,IAAI,GAAG,GAAI,GAAI,GAC3B,EAAM,IAAI,GAAG,EAAI,GAAI,IAIhC,EAAG,IAAI,EAAS,EAAI,EAAI,EAAI,KAKlC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA0D,CACrE,WAAY,GACZ,YAAa,MACb,WAAY,IC/DR,YAA6C,EAIlD,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,OAAA,GAAU,EACf,CAAC,QAAA,EAAS,UAAA,EAAW,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAAc,EAE/D,GAAiB,CAAC,EAAI,GAAS,sCAE/B,GAAM,GAAY,EAAK,eAAe,EAAG,OACnC,EAAgB,EAAK,eAAe,EAAO,OAE3C,EAAW,EAAa,kBAC1B,EAAY,EAAO,MAA2C,EAC9D,EAAW,EAAK,EAAiB,IAE/B,EAAK,GAAI,IAAa,EAAS,QAAS,WACxC,EAAW,EAAG,OACd,CAAC,EAAM,EAAM,GAAQ,EAAG,QACxB,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,CAAC,EAAM,EAAM,GAAQ,EACrB,EAAY,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC5C,CAAC,EAAO,EAAO,GAAS,EACxB,CACJ,UAAA,EACA,aAAA,EACA,YAAA,EACA,WAAA,EACA,SAAA,EACA,QAAA,EACA,YAAA,EACA,UAAA,GACA,SAAA,EACA,aAAA,GACA,YAAA,IACE,EACE,GAAS,EAAe,EAAI,EAAS,QAAQ,IAC7C,EAAU,EAAc,EAAI,EAAS,QAAQ,KAC7C,GAAQ,EAAc,EAE5B,OAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAC/B,OAAS,IAAK,EAAG,GAAK,EAAY,EAAE,GAClC,OAAS,IAAK,EAAG,GAAK,EAAU,EAAE,GAAI,CACpC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,GAAY,GAAe,IAAY,IAEpD,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,EAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,EAAW,GAAc,IAAY,IAE9C,GAAU,EACd,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAe,GAE/B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAc,GACxB,GAAW,EAAO,GAAI,EAAO,GAAK,EAAO,GACzC,GAAY,EAAS,GAAe,EAAI,IAC1C,EAAS,GAAc,EAAI,IAAM,EAAQ,GAE7C,OAAS,IAAK,EAAG,GAAK,GAAO,EAAE,GAAI,CACjC,GAAM,IAAK,GAAK,GAAQ,GAClB,GAAQ,EAAS,GAAW,IAC5B,GAAS,EAAU,GAAY,IACrC,IAAW,GAAQ,KAIzB,EAAS,EAAO,GAAI,EAAO,GAAK,EAAO,GAAK,IAAM,IAM1D,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAyD,CACpE,WAAY,GACZ,YAAa,MACb,WAAY,ICvFR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEN,EAAQ,EAAK,cAAc,EAAE,OAE7B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAS,GAAO,CAAC,EAAO,GAAQ,EAAE,OAClC,EAAO,EAAO,OACpB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAK,EAAI,EAAQ,GAAK,EAAM,GAG9B,GAAM,GAAW,CAAC,GAAG,EAAE,MAAO,GAAG,EAAE,OAEnC,MAAO,GAAQ,eAAe,EAAU,EAAO,MAAO,EAAO,QAGxD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBD,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,KAAU,CACvC,GAAM,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAC5B,EAAa,EAEb,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OACtC,EAAQ,EAAE,MAAM,OAEhB,EAAa,EAAW,KAAK,IAAI,EAAO,QAAQ,OAChD,EAAa,EAAO,MAAM,OAE1B,CACJ,UAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,EACA,cAAA,EACA,SAAA,GAEE,EAAa,sBACT,EAAE,MACF,EAAO,MAAmC,EAAS,EACnD,OAAyB,GAE3B,EAAU,EAAK,cAAc,GAC7B,EAAU,EAAS,OACnB,EAAa,EAAK,kBAAkB,EAAE,MAAO,GAMnD,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EAAM,CAC3C,GAAM,GAAO,EAAO,EAAe,EAAQ,IAC3C,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EAAM,CAC1C,GAAM,IAAO,EAAO,EAAc,EAAQ,KAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAI,IAAS,OAAO,iBACpB,OAAS,IAAI,EAAG,GAAI,EAAc,EAAE,GAAG,CACrC,GAAM,GAAM,EAAO,GAAI,EACvB,GAAI,GAAO,GAAK,EAAM,EACpB,OAAS,IAAI,EAAG,GAAI,EAAa,EAAE,GAAG,CACpC,GAAM,IAAM,GAAO,GAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EAAS,CAC7B,GAAM,IAAS,EAAK,WAChB,CAAC,EAAG,EAAK,GAAK,GAAI,EAAO,EAAK,eAAe,EAAE,QAC7C,GAAc,EAAK,WACrB,CAAC,GAAG,GAAG,GAAI,EACX,EAAK,eAAe,EAAO,QACzB,GAAM,EAAM,IAAU,EAAW,IACnC,GAAM,IACR,IAAS,MAMnB,GAAM,IAAc,EAAK,WACrB,CAAC,EAAG,EAAM,EAAM,GAAI,EAAS,EAAK,eAAe,IACrD,EAAW,IAAe,KASlC,MAAO,CAAC,OAHO,EAAW,MACtB,EAAK,aAAa,EAAY,EAAE,OAAQ,EAAU,EAAE,OAExC,MAAO,EAAU,MAAO,EAAE,SC/EjC,GAA+C,CAC1D,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,KAAU,CACvC,GAAM,CAAC,EAAA,EAAG,OAAA,EAAQ,GAAA,GACd,EACE,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAC5B,EAAa,EAEb,EACF,EAAK,cACD,EAAE,MAAO,EAAW,KAAK,IAAI,EAAE,QAAQ,QAGzC,EAAU,EAAK,cACD,EAAO,MACP,EAAW,KAAK,IAAI,EAAO,QAAQ,QAGjD,CACJ,UAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,EACA,cAAA,EACA,SAAA,GAEE,EAAa,sBACT,EAAE,MACF,EAAO,MAAmC,EAAS,EACnD,OAAyB,GAEjC,EAAK,OACD,EAAG,OAAS,EAAS,OACrB,IAAM,YAAY,4CACuB,EAAS,mBAC3C,EAAG,QAEd,GAAM,GACF,EAAK,cACD,EAAU,EAAW,KAAK,IAAI,EAAG,QAAQ,QAK3C,EAAY,EAAK,0BACD,EAAO,MAAO,EAAO,OAO3C,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EAAM,CAC3C,GAAM,GAAO,EAAO,EAAe,EAAQ,IAC3C,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EAAM,CAC1C,GAAM,GAAO,EAAO,EAAc,EAAQ,KAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAI,IAAS,OAAO,iBAChB,EAAO,EACP,GAAO,EACX,OAAS,IAAI,EAAG,GAAI,EAAc,EAAE,GAAG,CACrC,GAAM,IAAM,EAAO,GAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EACpB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,IAAM,EAAO,EAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EAAS,CAC7B,GAAM,IAAM,EAAG,GAAG,IAAK,IAAK,GAAK,EAAQ,IAAG,GAAG,GAC3C,GAAM,IACR,IAAS,GACT,EAAO,GACP,GAAO,KAMjB,EAAU,GAAM,IAAM,IAAM,EAAI,GAAG,GAAM,GAAM,KASvD,MAAO,CAAC,OAHO,EAAW,MACtB,EAAK,aAAa,EAAW,EAAE,OAAQ,EAAO,MAAO,EAAO,OAEhD,MAAO,EAAO,MAAO,MAAO,EAAO,SC/F1C,GAA8C,CACzD,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,KAAU,CACvC,GAAM,CAAC,EAAA,EAAG,OAAA,EAAQ,GAAA,GACd,EACE,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAC5B,EAAa,EAEb,EACF,EAAK,cACD,EAAE,MAAO,EAAW,KAAK,IAAI,EAAE,QAAQ,QAGzC,EAAU,EAAK,cACD,EAAO,MACP,EAAW,KAAK,IAAI,EAAO,QAAQ,QAGjD,CACJ,UAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,EACA,cAAA,EACA,SAAA,GAEE,EAAa,sBACT,EAAE,MACF,EAAO,MAAmC,EAAS,EACnD,OAAyB,GAEjC,EAAK,OACD,EAAG,OAAS,EAAS,OACrB,IAAM,YAAY,4CACuB,EAAS,mBAC3C,EAAG,QAEd,GAAM,GACF,EAAK,cACD,EAAU,EAAW,KAAK,IAAI,EAAG,QAAQ,QAK3C,EACF,EAAK,0BAA0B,EAAE,MAAO,EAAE,OAO9C,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EAAM,CAC3C,GAAM,GAAO,EAAO,EAAe,EAAQ,IAC3C,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EAAM,CAC1C,GAAM,GAAO,EAAO,EAAc,EAAQ,KAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAI,IAAS,OAAO,iBAChB,EAAU,EAAO,EAAK,EAAI,EAC1B,GAAU,EAAO,EAAK,EAAI,EAC9B,OAAS,IAAI,EAAG,GAAI,EAAc,EAAE,GAAG,CACrC,GAAM,IAAM,EAAO,GAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EACpB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,IAAM,EAAO,EAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EAAS,CAC7B,GAAM,IAAM,EAAG,GAAG,IAAK,IAAK,GAAK,EAAQ,IAAG,GAAG,GAC3C,GAAM,IACR,IAAS,GACT,EAAS,GACT,GAAS,MAMnB,EAAU,GAAG,GAAQ,IAAQ,IAAM,EAAI,GAAG,GAAM,GAAM,KAS9D,MAAO,CAAC,OAHO,EAAW,MACtB,EAAK,aAAa,EAAW,EAAE,OAAQ,EAAE,MAAO,EAAE,OAEtC,MAAO,EAAE,MAAO,MAAO,EAAE,SC/FvC,YAAkB,EAAsD,CAE5E,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,GAAA,EAAI,EAAA,GAAK,EAEhB,GAAiB,CAAC,EAAI,GAAI,WAE1B,GAAM,GAAe,GAAI,cAAa,EAAK,cAAc,EAAE,QACrD,EAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC7C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAI,EAAO,GACb,GAAK,EACP,EAAa,GAAK,EAAS,GAE3B,EAAa,GAAK,EAAS,GAAM,GAAI,GAIzC,MAAO,GAAQ,eAAe,EAAE,MAAO,UAAW,GAG7C,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICzBD,GACT,GAA6B,CAAC,EAAW,IAAe,IAAM,EAAK,EAAI,GAC9D,GACT,GAAiB,GAAO,GAAW,KAAwB,QAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,GAAI,EAAa,MACjB,GAAK,EAAa,OAClB,GAAK,EAAa,OAClB,GAAK,EAAa,OAClB,GAAK,EAAa,OAClB,GAAK,EAAa,OAEX,GAAM,GACf,GACC,GAAM,CACL,GAAM,GAAO,KAAK,KAAK,GACjB,EAAI,KAAK,IAAI,GACb,EAAI,EAAO,GAAM,GAAI,GAC3B,MAAO,GACF,GACK,OAAK,EAAI,IAAM,EAAK,IAAM,EAAI,IAAM,EAAI,IAAM,EAC/C,KAAK,IAAI,CAAC,EAAI,MAIhB,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YAAqB,EAI1B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,GAAS,EACV,CAAC,IAAA,GAAO,EAER,EAAY,EAAM,MAAM,OACxB,EAAW,EAAM,MAAM,QACzB,EAAO,EACX,MAAI,GAAM,GAER,GAAK,OACD,CAAE,GAAY,IAAM,EACpB,IAAM,iCAAiC,CAAG,GAAY,OAClD,MACR,EAAO,EAAY,EAAM,GAE3B,EAAS,OAAO,EAAM,EAAG,GAElB,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAQ,QAAA,EAAS,MAAO,CAAC,MAAO,KAGvD,GAAM,IAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,IC5BD,GACT,GAA6B,CAAC,EAAW,IAAc,EAAI,GAClD,GAAM,GAAiB,GAAS,IAEhC,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICKR,YACF,EAAmB,EACnB,EAA0B,CAC5B,GAAM,GAAa,EAAM,MACnB,EAAQ,EAAW,GACnB,EAAW,EAAW,GAEtB,EAAY,EAAW,KAAK,IAAI,EAAM,QAEtC,EAAS,EAAU,mBAAmB,KACtC,EAAS,EAAU,mBAAmB,KAGtC,EAAc,CAAC,EAAO,GACtB,EAAa,EAAK,cAAc,GAChC,EAAa,EAAK,uBAAuB,UAAW,GACpD,EAAa,EAAK,uBAAuB,UAAW,GAE1D,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAE9B,GAAM,GAAI,GAAM,CACd,OAAQ,CAAC,EAAG,GACZ,QAAS,EACT,MAAO,CAAC,MAAO,CAAC,EAAG,GAAI,KAAM,CAAC,EAAG,MAE7B,EAAI,GAAM,CACd,OAAQ,CAAC,EAAG,GACZ,QAAS,EACT,MAAO,CAAC,MAAO,CAAC,EAAG,GAAI,KAAM,CAAC,EAAG,MAG7B,EAAQ,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAS,IAGtD,CAAC,KAAA,EAAM,KAAA,GAAQ,GAAQ,EAAO,EAAS,GACvC,EAAM,EAAa,uBAAuB,EAAM,GAEtD,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAI,EAAa,oBAAoB,EAAK,GAChD,EAAW,EAAI,EAAW,GAAK,EAAE,KACjC,EAAW,EAAI,EAAW,GAAK,EAAE,KAGnC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAG3C,GAAM,GACF,EAAW,eAAe,EAAa,UAAW,GAChD,EACF,EAAW,eAAe,EAAa,UAAW,GAEhD,EAAS,GACX,CAAC,OAAQ,CAAC,KAAM,EAAW,KAAM,GAAY,QAAS,IAE1D,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAElC,EAGH,YACF,EAAmB,EACnB,EAA0B,CAC5B,GAAM,GAAY,EAAK,cAAc,EAAM,OAErC,EAAY,EAAW,KAAK,IAAI,EAAM,QAEtC,EACF,EAAW,KAAK,IAAI,EAAU,mBAAmB,KAAK,QAAQ,OAG5D,EACF,EAAW,KAAK,IAAI,EAAU,mBAAmB,KAAK,QAAQ,OAGlE,GAAI,GAAc,GAAY,CAC5B,GAAM,GACF,GAAU,EAAU,EAAU,EAAW,EAAS,GAEhD,EAAc,CAAC,EAAM,MAAM,GAAI,EAAM,MAAM,IAEjD,GAAI,EAAS,CACX,GAAM,GACF,EAAW,eAAe,EAAa,UAAW,EAAO,MACvD,EACF,EAAW,eAAe,EAAa,UAAW,EAAO,MAEvD,EAAuB,EAAW,eACpC,GAAI,UACJ,EAAK,kBAAkB,EAA8B,YACnD,EACF,GAAS,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAS,IAExC,EACF,GAAc,WACV,CAAC,OAAQ,CAAC,EAAG,EAAU,EAAG,GAAW,QAAS,IAEhD,EACF,GAAc,WACV,CAAC,OAAQ,CAAC,EAAG,EAAU,EAAG,GAAe,QAAS,IAGpD,EACF,EAAW,KAAK,IAAI,EAAY,QAAQ,OACtC,EACF,EAAW,KAAK,IAAI,EAAY,QAAQ,OAE5C,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAElC,CAAC,KAAM,EAAa,KAAM,GAGnC,MAAO,OACF,CACL,GAAM,GAAO,EAAa,uBAAuB,EAAU,GAErD,EACF,GAAyB,EAAM,EAAW,GAE9C,MAAO,GAAa,uBAAuB,IAI/C,YAAuB,EAAY,CACjC,MAAQ,GAAO,EAAO,IAAO,EAI/B,YACI,EAAwB,EAAwB,EAChD,EACA,EAA0B,CAC5B,GAAI,IAAS,EACX,MAAO,CAAC,KAAM,EAAU,KAAM,GAGhC,GAAM,GAAO,EAAa,uBAAuB,EAAU,GAErD,EAAO,EAAO,EAEd,EAAc,EAAa,qBAAqB,GAEhD,EAAe,EAAY,KAC3B,EAAe,EAAY,KAE3B,EAAY,CAAC,EAAa,QAE1B,EACF,EAAW,eAAe,EAAW,UAAW,GAC9C,EACF,EAAW,eAAe,EAAW,UAAW,GAE9C,EAAiB,GACnB,CAAC,OAAQ,CAAC,KAAM,EAAc,KAAM,GAAe,QAAS,IAE1D,EAAa,EAAa,oBAAoB,GAE9C,EAAc,EAAW,KACzB,EAAc,EAAW,KAEzB,EAAW,CAAC,EAAY,QAExB,EACF,EAAW,eAAe,EAAU,UAAW,GAC7C,EACF,EAAW,eAAe,EAAU,UAAW,GAE7C,EAAgB,GAClB,CAAC,OAAQ,CAAC,KAAM,EAAa,KAAM,GAAc,QAAS,IAGxD,EACF,GAAU,EAAc,EAAc,EAAM,EAAS,GAEnD,EAAgB,EAAa,KAC7B,EAAgB,EAAa,KAE7B,EAAa,CAAC,EAAc,QAE5B,EACF,EAAW,eAAe,EAAY,UAAW,GAC/C,EACF,EAAW,eAAe,EAAY,UAAW,GAE/C,EAAkB,GAAQ,CAC9B,OAAQ,CAAC,KAAM,EAAe,KAAM,GACpC,QAAS,IAGL,EACF,GAAU,EAAa,EAAa,EAAM,EAAS,GAEjD,EAAe,EAAY,KAC3B,EAAe,EAAY,KAE3B,EAAY,CAAC,EAAa,QAE1B,EACF,EAAW,eAAe,EAAW,UAAW,GAC9C,EACF,EAAW,eAAe,EAAW,UAAW,GAE9C,GAAiB,GACnB,CAAC,OAAQ,CAAC,KAAM,EAAc,KAAM,GAAe,QAAS,IAE1D,EAAI,EAAa,UAAU,EAAM,GACjC,GAAS,CAAC,EAAE,KAAK,QAEjB,GAAY,EAAW,eAAe,GAAQ,UAAW,EAAE,MAC3D,GAAY,EAAW,eAAe,GAAQ,UAAW,EAAE,MAE3D,EAAc,GAChB,CAAC,OAAQ,CAAC,KAAM,GAAW,KAAM,IAAY,QAAS,IAEpD,GACF,GACI,CAAC,OAAQ,CAAC,EAAG,EAAa,EAAG,IAAiB,QAAS,IAGzD,GAAU,GAAI,CACF,OAAQ,CAAC,EAAG,EAAiB,EAAG,IAChC,QAAS,IAErB,GAAU,GAAI,CACF,OAAQ,CAAC,EAAG,EAAiB,EAAG,IAChC,QAAS,IAGrB,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IACvD,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IAEvD,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IACvD,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IAEvD,GAAQ,GAAO,CACnB,OAAQ,CAAC,GAAuB,IAChC,QAAS,EACT,MAAO,CAAC,KAAM,KAEV,GAAQ,GAAO,CACnB,OAAQ,CAAC,GAAuB,IAChC,QAAS,EACT,MAAO,CAAC,KAAM,KAGV,GAAY,EAAW,KAAK,IAAI,GAAM,QAAQ,OAC9C,GAAY,EAAW,KAAK,IAAI,GAAM,QAAQ,OAEpD,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IAElC,CAAC,KAAM,GAAW,KAAM,IAIjC,YACI,EAAkB,EAAc,EAAgB,CAClD,GAAM,GAAM,GAAI,cAAa,EAAO,GAEpC,OAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAI,GAAO,EACP,EAAO,EACX,OAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAM,GAAI,EAAa,SAAS,EAAI,EAAG,EAAM,GACvC,EAAO,EAAa,oBAAoB,EAAsB,GACpE,GAAQ,EAAK,KAAO,EAAE,KAAO,EAAK,KAAO,EAAE,KAC3C,GAAQ,EAAK,KAAO,EAAE,KAAO,EAAK,KAAO,EAAE,KAEzC,GACF,IAAQ,EACR,GAAQ,GAEV,EAAa,mBAAmB,EAAK,EAAM,EAAM,GAEnD,MAAO,GC1TH,YAAc,EAAkD,CAEpE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAY,EAAK,cAAc,EAAM,OAGrC,EAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACtD,EAAQ,EAAY,EAEpB,EAAU,GAAQ,CACtB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,CAAC,EAAO,MAGnB,EAAS,GAAS,EAAS,GAAO,GAElC,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,EAAM,SAEhE,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCR,YAAe,EAAiD,CAEpE,GAAM,CAAC,QAAA,EAAS,MAAA,GAAS,EACnB,CAAC,MAAA,EAAO,MAAA,EAAO,MAAA,GAAS,EAExB,EAAS,GAAS,EAAK,WAAW,GAClC,EAAS,EAAK,kBAAkB,EAAQ,EAAK,cAAc,IACjE,MAAA,IAAW,EAAQ,EAAO,GAEnB,EAAQ,eAAe,EAAO,EAAQ,GAGxC,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IAGd,YACI,EAAoB,EAAsB,EAAe,CAExD,EAAoB,KAAK,GCpBvB,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CACvC,GAAM,CAAC,MAAA,GAAS,EACV,EAAa,EAEb,EAAS,EAAK,uBAChB,EAAM,MAA0B,EAAK,cAAc,EAAM,QACvD,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MAEtD,EAAY,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEpD,OAAS,GAAW,EAAG,EAAW,EAAO,IAAY,CACnD,GAAM,GAAc,EAAW,EAAa,EAAc,EAE1D,OAAS,GAAM,EAAG,EAAM,EAAa,IAAO,CAC1C,GAAM,GAAY,EAAO,GAAa,GAEtC,OAAS,GAAM,EAAG,EAAM,EAAY,IAAO,CACzC,GAAM,GAAY,EAAM,EAExB,OAAS,GAAU,EAAG,EAAU,EAAa,IAAW,CAGtD,GAAM,GAFS,CAAC,EAAO,EAAK,EAAK,GAEhB,GAEX,EAAS,KAAK,MAAM,EAAa,GACjC,EAAS,EAAc,EAAY,EAAY,EAEjD,EAAc,EAAU,GAE5B,GAAI,GAAU,GAAK,EAAS,EAAY,CAEtC,GAAM,GAAmB,EAAS,EAC5B,EACF,EAAc,EAAY,EAAmB,EACjD,EAAc,EAAU,GAE1B,EAAO,GAAU,KAOzB,MAAO,CAAC,OADO,EAAW,MAAM,EAAQ,EAAM,MAAO,EAAM,OAC3C,MAAO,EAAM,MAAO,MAAO,EAAM,SC9CxC,GACT,GAA6B,CAAC,EAAW,IAAc,KAAK,MAAM,EAAI,IAC7D,GACT,GAAiB,GAAU,GAAc,KAAwB,SAExD,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICNR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,EAAQ,KAAA,EAAM,uBAAA,GAA0B,EAC5C,CACJ,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GACE,EAEA,EAAS,GAAO,CAClB,OAAQ,CAAC,EAAA,EAAG,OAAA,GACZ,QAAA,EACA,MAAO,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,KAG/C,GAAI,EAAM,CACR,GAAM,GAAY,EAClB,EAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAQ,EAAG,GAAO,QAAA,IAC5C,EAAQ,8BAA8B,GAGxC,GAAI,EAAY,CACd,GAAM,GAAY,EAClB,EAAS,GACL,EAAS,EAAQ,EAAY,EAAwB,GACzD,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,IC1CR,YAA+B,EAIpC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,EAAQ,KAAA,EAAM,uBAAA,GAA0B,EAC5C,CACJ,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GACE,EAEA,EAAS,GAAsB,CACjC,OAAQ,CAAC,EAAA,EAAG,OAAA,GACZ,QAAA,EACA,MAAO,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,KAG/C,GAAI,EAAM,CACR,GAAM,GAAY,EAClB,EAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAQ,EAAG,GAAO,QAAA,IAC5C,EAAQ,8BAA8B,GAExC,GAAI,EAAY,CACd,GAAM,GAAY,EAClB,EAAS,GACL,EAAS,EAAQ,EAAY,EAAwB,GACzD,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAA2C,CACtD,WAAY,GACZ,YAAa,MACb,WAAY,IC5CR,YACF,EAAuD,CACzD,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,OAAA,EAAQ,QAAA,GAAW,EAEpB,EAAa,EAAK,cAAc,EAAO,OAEvC,EAAe,EAAQ,MACvB,EAAY,EAAa,EAAa,OAAS,GAE/C,CAAC,EAAa,EAAW,EAAW,GACtC,EAAa,mBAAmB,EAAQ,GAC5C,GAAI,IAAc,EAChB,MAAO,GAAQ,eAAe,EAAa,EAAO,MAAO,IAG3D,GAAM,GAAS,GAAO,CAAC,EAAW,GAAY,EAAO,OAC/C,EAAc,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAC/C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAEnD,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAQ,GACV,EAAe,EACnB,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAM,EAAY,EAAI,EAAY,GACxC,GAAgB,EAAM,EAAQ,GAC9B,EAAM,KAAK,GAEb,GAAI,EAAe,GAAK,GAAgB,EAAa,EACnD,KAAM,IAAI,OACN,oBAAoB,yBAA6B,EAAO,SAG9D,OAAS,GAAI,EAAG,EAAI,EAAW,IAC7B,EAAO,OAAO,EAAI,EAAY,GAC1B,EAAW,EAAe,EAAY,GAI9C,MAAO,GAAQ,eAAe,EAAa,EAAO,MAAO,EAAO,QAG3D,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IC1CR,YAAmB,EAIxB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,QAAA,GAAW,EACf,CAAC,KAAA,EAAM,UAAA,GAAa,EAE1B,GAAiB,CAAC,EAAG,GAAU,YAE/B,GAAI,GAAa,EAEb,GAAa,MACf,GAAa,GAGf,GAAM,GAAc,EAAK,cAAc,EAAQ,OAEzC,EAAa,EAAK,eAAe,EAAM,EAAE,OAAO,GAChD,EAAY,EAAa,aAAa,yBACxC,EAAG,EAAS,EAAY,GAEtB,EAAW,GAAQ,CACvB,OAAQ,CAAC,EAAA,GACT,QAAA,EACA,MAAO,CACL,MAAO,CACL,EAAU,UAAW,EAAU,UAAW,EAAU,QACpD,EAAU,cAKV,EAAe,GAAQ,CAC3B,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,CAAC,EAAU,UAAW,EAAc,EAAU,cAGzD,EAAqB,CACzB,EAAU,UAAW,EAAU,UAAW,EAAc,EAAU,UAClE,EAAU,WAGN,EAAa,EAAQ,WAAW,GAChC,EAAO,EAAQ,WAAW,GAC1B,EAAS,GAAa,EAAM,EAAY,GAE9C,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAAQ,eACX,EAAU,YAAa,EAAO,MAAO,EAAO,QAG3C,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IC7DD,GACT,GAA6B,CAAC,EAAW,IAAe,GAAK,EAAK,EAAI,GAC7D,GAAe,GACxB,GAAc,GAAkB,KAAwB,QAE/C,GAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,ICPR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAY,EAAK,cAAc,EAAM,OAGrC,EAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACtD,EAAQ,EAAY,EAEpB,EAAU,GAAQ,CACtB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,CAAC,EAAO,MAGnB,EAAS,GAAS,EAAS,GAAM,GAEjC,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,EAAM,SAEhE,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCD,GACT,GAAgB,GAAW,GAAO,OAAO,SAAS,GAAM,EAAI,EAAG,QAEtD,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GACT,GAAgB,GAAQ,GAAO,KAAK,IAAI,KAAQ,SAAW,EAAI,EAAG,QAEzD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GACT,GAAgB,GAAQ,GAAO,OAAO,MAAM,GAAM,EAAI,EAAG,QAEhD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GACT,GAA6B,CAAC,EAAW,IAAe,GAAK,EAAK,EAAI,GAC7D,GACT,GAAiB,GAAW,GAAe,KAAwB,QAE1D,GAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICRR,YAAmB,EAAqD,CAE5E,GAAM,CAAC,QAAA,EAAS,MAAA,GAAS,EACnB,CAAC,MAAA,EAAO,KAAA,EAAM,IAAA,GAAO,EAErB,EAAU,GAAa,EAAO,EAAM,GAE1C,MAAO,GAAQ,eAAe,CAAC,EAAQ,QAAS,UAAW,GAGtD,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICdD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICJD,GACT,GAA6B,CAAC,EAAW,IAAc,GAAK,GACnD,GAAa,GACtB,GAAY,GAAgB,KAAwB,QAE3C,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICTD,GACT,GAAgB,GAAa,GAAO,EAAK,EAAI,EAAG,QAEvC,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GACT,GAA6B,CAAC,EAAW,IAAc,GAAK,GACnD,GACT,GAAiB,GAAW,GAAe,KAAwB,QAE1D,GAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICRR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,YAAA,EAAa,KAAA,EAAM,MAAA,EAAO,KAAA,GAAQ,EAEzC,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAE,MAAM,GACnB,EAAO,EAAW,EAClB,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAO,EAAK,cAAc,EAAE,OAC5B,EAAS,GAAI,cAAa,GAEhC,WAA2B,EAAc,CACvC,GAAM,GAAiB,EAAS,EAC5B,EACA,EAAS,EAAiB,KAAK,IAAI,EAAG,EAAiB,GACrD,EACF,EAAS,EAAiB,KAAK,IAAI,EAAiB,EAAa,GAEjE,EAAM,EACV,KAAO,GAAkB,EAAc,IAAkB,CACvD,GAAM,GAAI,EAAQ,GAClB,GAAO,EAAI,EAEb,MAAO,GAGT,OAAS,GAAS,EAAG,EAAS,EAAM,IAAU,CAC5C,GAAM,GAAM,EAAkB,GACxB,EAAM,EAAQ,GAAU,KAAK,IAAI,EAAO,EAAQ,EAAK,CAAC,GAC5D,EAAO,GAAU,EAGnB,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,GAG3C,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IC1CR,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,EAAA,EAAG,GAAA,GAAM,EACb,CAAC,YAAA,EAAa,KAAA,EAAM,MAAA,EAAO,KAAA,GAAQ,EAEzC,GAAiB,EAAI,WAErB,GAAM,GAAS,EAAK,cAAc,EAAG,OAE/B,EAAW,EAAG,MAAM,GACpB,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAS,GAAI,cAAa,GAC1B,EAAO,EAEb,OAAS,GAAS,EAAG,EAAS,EAAM,IAAU,CAC5C,GAAM,GAAiB,EAAS,EAC1B,EACD,EAAS,EAAkB,KAAK,IAAI,EAAG,EAAiB,GACvD,EAAY,EAAS,EACvB,KAAK,IAAI,EAAU,EAAiB,EAAc,GAElD,EAAO,EACX,OAAS,GAAI,EAAY,EAAI,EAAU,IACrC,GAAQ,KAAK,IAAI,EAAQ,GAAI,GAE/B,EAAO,EAAQ,EAAO,EAEtB,OAAS,GAAI,EAAY,EAAI,EAAU,IAAK,CAC1C,GAAI,GAAM,GAAK,EAAQ,EAAO,EAAQ,GAAK,EAAQ,GAAU,EACzD,IAAW,GACb,IAAO,KAAK,IAAI,EAAM,CAAC,IAEzB,GAAO,EAAS,GAChB,EAAO,IAAM,GAIjB,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAE,MAAO,GAG5C,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,IC3CR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,iBAAA,EAAkB,SAAA,GAAY,EAC/B,EAAa,EACf,EAAS,EAAE,MACT,EAAQ,EAAO,OAEf,EAAW,EAAK,eAAe,EAAkB,GACnD,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,GACvD,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OAC1C,GAAI,GAAgB,KAAM,CACxB,GAAM,GAAqB,GAAI,OAAM,GACrC,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAS,GAAK,EAAO,EAAa,IAGpC,EAAQ,GAAc,EAAO,EAAQ,EAAE,MAAO,EAAc,GAC5D,EAAO,EAAa,iBAAiB,EAAK,OAAQ,GAElD,EAAS,EAGX,GAAiB,EAAG,OACpB,EAAa,2BAA2B,MAAO,EAAM,GACrD,GAAM,CAAC,EAAa,GAChB,EAAa,0BAA0B,EAAQ,GAE7C,EAAa,EAAK,cAAc,GAEhC,EAAS,GAAQ,EAAO,EAAY,EAAa,EAAE,OACnD,EAAS,EAAW,MAAM,EAAQ,EAAa,EAAE,OAEnD,EAAW,EACf,MAAI,IAGF,GADiB,EAAa,qBAAqB,EAAa,IAI3D,CAAC,OAAA,EAAQ,MAAO,EAAU,MAAO,EAAE,OAGrC,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICrDR,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACZ,GAAiB,EAAG,WACpB,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAC9C,EAAY,EAElB,EAAK,OACD,EAAa,+BAA+B,EAAS,GACrD,IAAM,wEACa,oBAA0B,MAEjD,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAW,EAAK,GAChB,EAEJ,GAAI,EAAS,cAAgB,GAAK,EAAS,eAAiB,GACxD,EAAK,YAAY,EAAS,QAAS,EAAS,UAC9C,EAAM,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,QACxB,CACL,GAAM,GAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAK,eAAe,EAAE,OAChC,EAAS,GAAK,EAAS,EAAE,MAAO,EAAE,MAAO,EAAS,EAAU,OAClE,EAAM,EAAQ,eACV,EAAS,SAAU,EAAE,MAAO,EAAO,QAEzC,MAAO,GAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICpCR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAAc,EAEhE,GAAiB,EAAG,aAEpB,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAAmD,EAAY,EACjE,EAAmB,EAAK,EAAiB,GAEvC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAS,GACX,EAAS,EAAE,MAAO,EAAE,MAAO,EAAK,eAAe,EAAE,OAAQ,EAAU,OAEvE,MAAO,GAAQ,eAAe,EAAO,MAAO,UAAW,EAAO,QAGzD,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICzBR,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,GAAS,EACd,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAEpD,GAAiB,CAAC,EAAI,GAAQ,iBAE9B,GAAM,GAAW,EAAa,kBAC1B,EAAM,MAAmD,EACzD,EAAS,EAAmB,EAAK,GAE/B,EAAW,EAAQ,WAAW,GAC9B,EAAY,GAAmB,EAAU,GACzC,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAuB,EAAI,EAAS,QAAQ,MACvD,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EAAK,GAAO,EAAM,MAAO,WAEzB,EAAQ,EAAQ,WAAW,GAEjC,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAChD,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAU,EAAG,EAAU,EAAS,QAAS,EAAE,EAClD,OAAS,GAAQ,EAAG,EAAQ,EAAS,SAAU,EAAE,EAC/C,OAAS,GAAQ,EAAG,EAAQ,EAAS,QAAS,EAAE,EAAO,CAErD,GAAM,GAAgB,EAAU,EAC1B,EAAc,EAAQ,EACtB,GAAc,EAAQ,EACxB,EAAU,EACd,OAAS,IAAS,EAAG,GAAS,EACzB,IAAU,EAAe,CAC5B,GAAM,IAAW,GAAgB,IAAU,EAC3C,GAAI,CAAA,IAAU,GAAK,IAAW,EAAS,UACnC,KAAK,MAAM,MAAa,IAG5B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAgB,CAC3B,GAAM,GAAS,GAAc,IAAQ,EACrC,GAAI,CAAA,GAAQ,GAAK,GAAS,EAAS,WAC/B,KAAK,MAAM,KAAW,GAG1B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAe,CAC1B,GAAM,IAAS,IAAc,IAAQ,EACrC,GAAI,GAAQ,GAAK,IAAS,EAAS,UAC/B,KAAK,MAAM,MAAW,GACxB,SAGF,GAAM,IAAS,EAAuB,EAC9B,EACJ,EACC,EAAU,IAAI,EAAO,GAAS,EAAO,GAAO,GAE3C,GACF,GAAS,EAAwB,EACjC,GAAO,EAAuB,GAE5B,GAAO,KAAW,GAAS,EAAI,EACrC,AAAI,KAAS,GAMb,IADI,EAAM,IAAI,EAAO,GAAS,EAAO,GAAO,GACzB,MAIzB,EAAG,IAAI,EAAS,EAAO,EAAS,EAAO,EAAO,GAOxD,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,ICnGR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,EAAO,OAAA,GAAU,EACtB,EAAI,EACV,GAAiB,CAAC,EAAO,GAAS,eAClC,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAE9C,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAmB,EAAK,GACtB,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAY,GACd,EAAS,SAAU,EAAE,MACrB,GAAiB,EAAS,EAAE,MAAO,EAAE,MAAO,GAAU,QACpD,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EACF,GAAgB,EAAE,MAA2C,WAE3D,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACrC,EAAQ,GACV,EAAG,MAA2C,UAAW,GAE7D,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EACxC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAM,EAAG,EAAM,EAAS,SAAU,EAAE,EAC3C,OAAS,GAAM,EAAG,EAAM,EAAS,QAAS,EAAE,EAAK,CAE/C,GAAM,GAAY,EAAM,EAClB,EAAY,EAAM,EACpB,EAAU,EACd,OAAS,GAAK,EAAG,EAAK,EAAuB,GAAM,EAAgB,CACjE,GAAM,IAAO,GAAY,GAAM,EAC/B,GAAI,CAAA,IAAM,GAAK,IAAO,EAAS,WAC3B,KAAK,MAAM,MAAS,IAGxB,OAAS,GAAK,EAAG,EAAK,EAAsB,GAAM,EAAe,CAC/D,GAAM,IAAO,GAAY,GAAM,EAC/B,GAAI,GAAM,GAAK,IAAO,EAAS,UAC3B,KAAK,MAAM,MAAS,GACtB,SAEF,GAAM,IAAS,EAAwB,EAAuB,EACzD,EAAU,IAAI,EAAG,GAAK,GAAK,GAC1B,GAAS,EAAK,EAAuB,EAErC,EAAO,KAAW,GAAS,EAAI,EACrC,AAAI,IAAS,GAKb,IADc,EAAM,IAAI,EAAG,GAAK,GAAK,GAClB,IAGvB,EAAG,IAAI,EAAS,EAAG,EAAK,EAAK,GAKrC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,IChFR,YACF,EAAqB,EAAkB,EACvC,EAA8B,EAAiC,CACjE,GAAM,GAAU,EAAK,eAAe,GAC9B,EAAW,GAAK,EAAS,EAAQ,EAAO,EAAS,EAAU,OAC3D,EAAe,GACjB,EAAS,EAAQ,EAAO,EAAU,GAAM,GAE5C,MAAO,CAAC,EAAS,OAAQ,EAAa,QCHjC,GAAM,IAAwC,CACnD,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CACvC,GAAM,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,oBAAA,GAC7B,EACE,EAAa,EACnB,GAAiB,EAAG,qBAEpB,GAAM,GAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,CAAC,EAAG,GAAI,GACN,CAAC,EAAQ,GAAW,GACtB,EAAQ,EAAE,MAAO,EAAE,MAAO,EAAqB,GAE7C,EACF,EAAW,MAAM,EAAwB,EAAS,SAAU,EAAE,OAC5D,EACF,EAAW,MAAM,EAAuB,EAAS,SAAU,EAAE,OACjE,MAAO,CACL,CAAC,OAAQ,EAAc,MAAO,EAAS,SAAU,MAAO,EAAE,OAC1D,CAAC,OAAQ,EAAe,MAAO,EAAS,SAAU,MAAO,YCpBzD,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAI,GACA,EAAE,QAAU,OACd,EAAK,GAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,WAEhD,EAAK,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IAG9B,GAAM,GAAQ,EAAG,MAAM,OACjB,EAAO,EAAK,eAAe,EAAM,EAAG,OACpC,EAAc,EAAa,mBAAmB,EAAM,GAEtD,EAAgB,EAChB,EAAY,EACZ,GAAe,MACjB,GACI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KACvD,EAAgB,EAAa,iBAAiB,EAAc,OAAQ,IAGtE,EAAa,2BACT,MAAO,EAAe,EAAU,MAAM,QAE1C,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAU,MAAO,GACtD,EAAc,EAAa,WAAW,EAAU,MAAO,SACzD,EAAS,GAAM,EAAS,EAAU,GAChC,EAAa,EAAK,cAAc,GAChC,EAAO,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAEvC,EAAQ,EAAQ,KAAK,IAAI,EAAU,QAAQ,OACjD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EACV,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,GAAO,EAAM,EAAS,GAExB,EAAK,GAAK,EAGZ,GAAI,EAAU,CACZ,GAAM,GAAW,EAAa,qBAAqB,EAAO,MAAO,GAC3D,EAAY,EAClB,EAAS,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAC/D,EAAQ,8BAA8B,GAGxC,MAAA,GAAQ,8BAA8B,GAElC,GAAe,MACjB,EAAQ,8BAA8B,GAGjC,EAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICtER,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEnB,EAAO,EAAK,eAAe,EAAM,EAAE,OAEnC,EADS,EAAa,0BAA0B,EAAE,MAAO,GACpC,GACrB,EAAa,EAAK,cAAc,GAChC,EAAY,GACZ,EACF,EAAQ,eAAe,GAAI,UAAW,GAAI,cAAa,CAAC,KAC5D,EAAU,KAAK,GAEf,GAAM,GAAK,GAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,aACtD,EAAU,KAAK,GAEf,GAAM,GACF,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAI,EAAG,GAAmB,QAAA,IAC/C,EAAU,KAAK,GAEf,GAAM,GAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAM,QAAA,EAAS,MAAO,CAAC,KAAA,EAAM,SAAA,KAE7D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IAEtD,EAGF,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAK,eAAe,EAAM,EAAE,OACzC,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACL,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAE,MAAM,SAG5D,EAAa,2BAA2B,MAAO,EAAM,EAAG,MAAM,QAC9D,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAC/C,EAAa,EAAK,cAAc,GAChC,EAAO,EAAK,oBAAoB,EAAK,cAAc,GAAW,EAAG,OAEjE,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,GAGV,EAAK,GAAK,EAGR,GAAgB,MAClB,EAAQ,8BAA8B,GAGxC,GAAM,GAAS,EAAQ,eAAe,EAAU,EAAG,MAAO,GAE1D,GAAI,EAAU,CACZ,GAAM,GAAgB,EAAa,qBAAqB,EAAU,GAC5D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IC7DR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,SAAA,EAAU,KAAA,GAAQ,EAEzB,GAAiB,EAAG,aAEpB,GAAM,GAAW,EAAS,IACtB,CAAC,EAAG,IAAM,EAAE,GAAqB,EAAE,MAAM,GAAK,EAAE,IAE9C,EAAQ,EAAS,IAAI,GAAK,EAAE,IAC5B,EAAM,EAAS,IAAI,CAAC,EAAG,IAAM,EAAE,GAAK,EAAE,MAAM,IAC5C,EAAS,IAAS,UAAY,EAAI,EAElC,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAE,MAAM,OAChB,EAAW,EAAK,eAAe,EAAE,OAEjC,EAAa,EAAK,cAAc,GAChC,EAAa,EAAS,OACtB,EAAgB,EAAK,eAAe,GACpC,EACF,EAAK,uBAAuB,EAAE,MAA0B,GAE5D,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAI,GAAS,EAAK,WAAW,EAAG,EAAY,GAC5C,OAAS,GAAI,EAAG,EAAI,EAAY,IAC1B,EAAO,GAAK,EAAM,GACpB,EAAO,GAAK,EAAM,GAAK,EAAI,EAAO,GAAK,EAC9B,EAAO,IAAM,EAAI,IAC1B,GAAO,GAAM,GAAI,GAAK,GAAK,EAAI,EAAO,GAAK,GAG/C,EAAS,EAAO,IAAI,CAAC,EAAG,IAAM,EAAI,EAAM,IAExC,GAAM,GAAU,EAAK,WAAW,EAAQ,EAAO,GAE/C,EAAQ,GAAK,EAAM,GAKrB,MAAO,CAAC,OAFM,EAAQ,MAAM,EAAS,EAAU,EAAE,OAE1B,MAAO,EAAU,MAAO,EAAE,OAG5C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICpDD,GAAU,GAA8B,CAAC,EAAQ,IAAU,CACtE,GAAM,GAAM,EAAS,EACrB,MAAK,GAAS,GAAK,EAAS,GAAO,GAAU,GAAK,GAAU,EACnD,EAEC,GAAM,GAAU,IAIf,GAAM,GAAiB,GAAK,IAE5B,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IClBd,GAA4B,GAAA,MCUtB,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,IAAA,GAAO,EAER,EAAa,EAAO,MAAM,OAE5B,EAAO,EAIX,GAHI,IAAS,IACX,GAAO,EAAa,GAElB,IAAS,EAAa,EACxB,KAAM,OACF,4EACmB,iBAA0B,KAGnD,GAAM,GAAO,EAAK,eAAe,CAAC,GAAO,EAAO,OAC1C,EAAW,GAAI,CACnB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,iBAAkB,EAAM,SAAU,MAEtC,EAAgB,EAAa,qBAAqB,EAAS,MAAO,GAElE,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,EAAS,MAAO,CAAC,MAAO,KACtD,EACF,GAAI,CAAC,OAAQ,CAAC,EAAW,EAAG,GAAmB,QAAA,IAC7C,EAAI,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,IACzB,EACF,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,EAAM,SAAU,MAC1D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAEpD,EAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAG,EAAG,GAAc,QAAA,IAEpD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,IDxDR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,WAAA,EAAY,KAAA,EAAM,WAAA,GAAc,EAEvC,GAAiB,EAAQ,eAEzB,GAAM,GAAgB,EAClB,EACA,GAAQ,CAAC,OAAQ,CAAC,OAAA,GAAS,QAAA,EAAS,MAAO,CAAC,IAAK,MAE/C,EAAY,EAAc,MAAM,GAChC,EAAY,EAAc,MAAM,GAChC,EAAW,EAAQ,KAAK,IAAI,EAAc,QAAQ,OAClD,EAAW,CAAC,EAAW,GACvB,EACF,EAAK,oBAAoB,EAAK,cAAc,GAAW,SAE3D,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAAG,CAClC,GAAM,GAAS,EAAI,EAGb,EAAM,GAAI,cAAa,EAAY,GACzC,EAAI,GAAK,EAAS,GAClB,OAAS,GAAQ,EAAG,EAAQ,EAAI,OAAQ,EAAE,EACxC,EAAI,GAAS,EAAI,EAAQ,GAAK,EAAS,EAAS,GAGlD,GAAM,GAAoB,GAAA,KAAK,EAAK,YAC9B,EAAY,EAAI,EACtB,OAAS,GAAW,EAAG,EAAW,EAAY,EAAE,EAAU,CACxD,GAAM,GAAI,IAGV,EAAQ,EAAY,GAAY,EAAI,OAEpC,OAAS,GAAQ,EAAG,EAAQ,EAAI,OAAQ,IACtC,GAAI,EAAI,EAAI,GAAQ,CAClB,EAAQ,EAAY,GAAY,EAChC,QAMR,MAAK,IACH,EAAQ,8BAA8B,GAGjC,EAAQ,eAAe,EAAU,QAAS,GAG5C,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,IEjER,GAA0B,GAAa,wBAKvC,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,OAAA,GAAU,EAClB,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,GAAkB,EAEtD,GAAiB,EAAO,qBAExB,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAE7C,CAAC,gBAAA,GAAmB,GACtB,EAAW,EAAY,EAAe,EAAc,GAExD,MAAO,GAAQ,eACX,CAAC,EAAgB,QAAS,QAAS,GAAI,YAAW,IAGjD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,IC7BR,GAA0B,GAAa,wBAIvC,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,OAAA,GAAU,EAClB,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,mBAAA,GAChD,EAEJ,GAAiB,EAAO,2BAExB,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAE7C,CAAC,gBAAA,EAAiB,aAAA,GAAgB,GACpC,EAAW,EAAY,EAAe,EAAc,EACpD,GAEJ,MAAO,CACL,EAAQ,eACJ,CAAC,EAAgB,QAAS,QAAS,GAAI,YAAW,IACtD,EAAQ,eAAe,GAAI,QAAS,GAAI,YAAW,CAAC,MAGjD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,IChCR,GAA0B,GAAa,wBAIvC,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,OAAA,GAAU,EAClB,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,aAAA,GAAgB,EAEpE,GAAiB,EAAO,8BAExB,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAE7C,EAAmB,EACnB,EAAkB,EAClB,EAAoB,EACpB,EAAkB,EAElB,CAAC,gBAAA,EAAiB,eAAA,GAAkB,GACtC,EAAW,EAAY,EAAkB,EACzC,EAAmB,GAEvB,MAAO,CACL,EAAQ,eACJ,CAAC,EAAgB,QAAS,QAAS,GAAI,YAAW,IACtD,EAAQ,eACJ,CAAC,EAAe,QAAS,UAAW,GAAI,cAAa,KAItD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,ICnCR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,QAAA,GAAW,EACZ,CAAC,MAAA,EAAO,QAAA,EAAS,SAAA,GAAY,EAEnC,GAAiB,EAAS,UAE1B,GAAM,GAAc,EAAK,cAAc,EAAQ,OAEzC,EAAM,GAAI,cAAa,EAAc,GAC3C,EAAI,KAAK,GACT,GAAM,GAAa,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAEpD,OAAS,GAAQ,EAAG,EAAQ,EAAa,EAAE,EACrC,EAAW,IAAU,GAAK,EAAW,GAAS,GAChD,GAAI,EAAQ,EAAQ,EAAW,IAAU,GAI7C,MAAO,GAAQ,eAAe,CAAC,GAAG,EAAQ,MAAO,GAAQ,QAAS,GAG7D,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICvBR,YACF,EAAwD,CAC1D,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,GAAI,EAAE,QAAU,SACd,KAAM,IAAI,OAAM,iDACX,GAAI,EAAE,QAAU,YAAa,CAClC,GAAM,GAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IACtC,EAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IAEtC,EAAS,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAA,IAEpD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,MAEP,OAAO,IAAK,CAAC,QAAA,EAAS,MAAO,CAAC,MAAO,EAAE,MAAO,MAAO,EAAG,MAAO,EAAE,SAI9D,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC7BR,YACF,EAAuD,CACzD,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,GAAI,EAAE,QAAU,SACd,KAAM,IAAI,OAAM,gDACX,GAAI,EAAE,QAAU,YAAa,CAClC,GAAM,GAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAS,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IACrC,EAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IAEtC,EAAS,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAA,IAEpD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,MAEP,OAAO,IAAK,CAAC,QAAA,EAAS,MAAO,CAAC,MAAO,EAAE,MAAO,MAAO,EAAG,MAAO,EAAE,SAI9D,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IChCR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,KAAA,GAAQ,EAEf,GAAI,EAAO,SAAW,EACpB,MAAO,IACH,CAAC,OAAQ,CAAC,MAAO,EAAO,IAAK,QAAA,EAAS,MAAO,CAAC,IAAK,KAGzD,GAAM,GAAQ,EAAO,GAAG,MAClB,EAAQ,EAAO,GAAG,MAExB,EAAO,QAAQ,GAAI,CACjB,EAAK,kBACD,EAAO,EAAE,MACT,yDACJ,EAAK,OACD,IAAU,EAAE,MACZ,IAAM,2DAGZ,GAAM,GAAwC,GACxC,EAAkB,EAAO,IAAI,GAAI,CACrC,GAAM,GACF,GAAW,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,EAAS,MAAO,CAAC,IAAK,KAC1D,MAAA,GAAwB,KAAK,GACtB,IAGH,EAAS,GAAO,CAAC,OAAQ,EAAiB,QAAA,EAAS,MAAO,CAAC,KAAA,KAEjE,MAAA,GAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAGF,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IC3CR,YACF,EAAuE,CAEzE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,SAAA,EAAU,cAAA,GAAiB,EAElC,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAS,IACtB,CAAC,EAAG,IAAM,EAAE,GAAqB,EAAE,MAAM,GAAK,EAAE,IAE9C,EAAQ,EAAS,IAAI,GAAK,EAAE,IAE5B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAK,cAAc,EAAE,OAC7B,EAAQ,EAAE,MAAM,OAChB,EAAW,EAAK,eAAe,EAAE,OAEjC,EAAa,EAAK,cAAc,GAChC,EAAa,EAAS,OACtB,EAAgB,EAAK,eAAe,GACpC,EACF,EAAK,uBAAuB,EAAE,MAA0B,GAExD,IAAkB,GACpB,EAAQ,KAAK,GAGf,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAE9B,GAAM,GADS,EAAK,WAAW,EAAG,EAAO,GAChB,IAAI,CAAC,EAAG,IAAM,EAAI,EAAM,IAC3C,EAAW,EAAK,WAAW,EAAW,EAAY,GAExD,EAAQ,GAAY,EAAM,GAK5B,MAAO,CAAC,OAFM,EAAQ,MAAM,EAAS,EAAU,EAAE,OAE1B,MAAO,EAAU,MAAO,EAAE,OAG5C,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,IC7CD,GACT,GAA6B,CAAC,EAAW,IAAc,KAAK,IAAI,EAAG,IAC1D,GAAM,GAAiB,GAAK,IAE5B,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICPR,YAAgB,EAAkD,CAEtE,GAAM,CAAC,QAAA,EAAS,MAAA,GAAS,EACnB,CAAC,MAAA,EAAO,KAAA,EAAM,MAAA,EAAO,KAAA,GAAQ,EAE7B,EAAS,GAAU,EAAO,EAAM,EAAM,GAC5C,MAAO,GAAQ,eAAe,CAAC,EAAO,QAAS,EAAO,GAGjD,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICbD,GAAa,GAAgB,GAAa,GAAO,EAAI,GAErD,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICJR,YAAyB,EAI9B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAAQ,EAE/C,GAAiB,EAAQ,kBAEzB,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,CAAC,EAAW,GAAY,EAExB,CAAC,EAAO,EAAW,EAAU,GAAe,EAAO,MACnD,EAAU,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC1C,EAAS,GAAI,cACf,EAAK,cAAc,CAAC,EAAO,EAAW,EAAU,KAE9C,EAAuC,CAC1C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAG5C,EAAwC,CAC3C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAE9C,EAAY,EACV,EAAwB,EAAmB,GAAK,EAAoB,GACpE,EAAwB,EAAmB,GAAK,EAAoB,GAC1E,OAAS,GAAI,EAAG,EAAI,EAAO,IACzB,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAI,GACA,EACF,EAAgB,EAAyB,GAAI,IAAO,GAEpD,EAAgB,EAAwB,EAG1C,GAAM,GAAiB,KAAK,IAAI,EAAG,KAAK,MAAM,IACxC,EAAU,EAAgB,EAC1B,EAAgB,KAAK,IAAI,EAAY,EAAG,KAAK,KAAK,IAClD,EACF,EAAI,EAAc,GAAK,EAAiB,EAAc,GACpD,EACF,EAAI,EAAc,GAAK,EAAgB,EAAc,GACzD,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAI,GACA,EACF,EAAgB,EAAyB,GAAI,IAAO,GAEpD,EAAgB,EAAwB,EAE1C,GAAM,GAAiB,KAAK,IAAI,EAAG,KAAK,MAAM,IACxC,EAAU,EAAgB,EAC1B,GAAgB,KAAK,IAAI,EAAW,EAAG,KAAK,KAAK,IACjD,EAAgB,EAAe,EAAiB,EAAc,GAC9D,GAAgB,EAAe,EAAiB,EAAc,GAC9D,GAAiB,EAAe,GAAgB,EAAc,GAC9D,GAAiB,EAAe,GAAgB,EAAc,GACpE,OAAS,GAAI,EAAG,EAAI,EAAa,IAAK,CAIpC,GAAM,IAAU,EAAQ,EAAgB,GAClC,GAAa,EAAQ,GAAgB,GACrC,GAAW,EAAQ,GAAiB,GACpC,GAAc,EAAQ,GAAiB,GAEvC,GAAM,GAAW,IAAW,IAAW,EACvC,GAAS,GAAc,IAAc,IAAc,EACnD,GAAW,GAAO,IAAS,IAAO,EAExC,EAAO,KAAe,KAM9B,MAAO,GAAQ,eACX,CAAC,EAAO,EAAW,EAAU,GAAc,UAAW,GAGrD,GAAM,IAAqC,CAChD,WAAY,GACZ,YAAa,MACb,WAAY,ICvFR,YAA6B,EAIlC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,EAAQ,GAAA,GAAM,EACf,CAAC,aAAA,GAAgB,EAEvB,GAAiB,CAAC,EAAI,GAAS,sBAE/B,GAAM,GAAgB,EAAK,eAAe,EAAO,OAE3C,CAAC,EAAO,EAAS,EAAQ,GAAS,EAAO,MACzC,CAAC,CAAE,EAAS,GAAU,EAAG,MAEzB,EAAS,GAAI,cAAa,EAAQ,EAAU,EAAS,GAOrD,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAc,EAAe,GAAK,EAAe,GACjD,EAAa,EAAe,GAAK,EAAe,GAKhD,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACzC,EAAS,EACb,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAU,EAAI,EAAc,GAClC,OAAS,GAAI,EAAG,EAAI,EAAS,IAAK,CAChC,GAAM,GAAM,EAAI,EACV,EAAc,KAAK,MAAM,GACzB,EAAiB,KAAK,IAAI,KAAK,KAAK,GAAM,EAAU,GAEpD,EAAe,EAAU,EAAc,EAAc,GACrD,EAAkB,EAAU,EAAiB,EAAc,GAE3D,EAAU,EAAM,EAChB,EAAiB,EAAM,EAC7B,OAAS,GAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,GAAM,GAAM,EAAI,EACV,EAAe,KAAK,MAAM,GAC1B,GAAgB,KAAK,IAAI,KAAK,KAAK,GAAM,EAAS,GAClD,EAAU,EAAM,EAChB,GAAiB,EAAM,EAEvB,GAAkB,EAAe,EAAe,EAAc,GAC9D,GACF,EAAe,GAAgB,EAAc,GAC3C,EACF,EAAkB,EAAe,EAAc,GAC7C,GACF,EAAkB,GAAgB,EAAc,GAE9C,GACF,EAAiB,GACf,GAA6B,EAAiB,EAC9C,GAA6B,EAAU,GACvC,GAAsB,EAAU,EACtC,OAAS,IAAI,EAAG,GAAI,EAAO,KAAK,CAC9B,GAAM,IAAQ,EAAS,KACvB,EAAO,GAAkB,KACrB,GAAQ,GACZ,EAAO,GAAmB,KAAM,GAAQ,GACxC,EAAO,EAAqB,KAAM,GAAQ,GAC1C,EAAO,GAAsB,KAAM,GAAQ,MAMnD,MAAO,GAAQ,eACX,CAAC,EAAO,EAAQ,EAAS,GAAQ,UAAW,GAG3C,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC5FR,YAAgC,EAIrC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAAQ,EAE/C,GAAiB,EAAQ,yBAEzB,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,CAAC,EAAW,GAAY,EAExB,CAAC,EAAO,EAAW,EAAU,GAAe,EAAO,MACnD,EAAU,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC1C,EAAS,GAAI,cAAa,EAAQ,EAAY,EAAW,GAEzD,EAAuC,CAC1C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAG5C,EAAwC,CAC3C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAG5C,EAAwB,EAAmB,GAAK,EAAoB,GACpE,EAAwB,EAAmB,GAAK,EAAoB,GAEtE,EAAe,EACnB,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAc,EAAI,EAAc,GACtC,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAgB,EAClB,EAAyB,GAAI,IAC7B,EAAwB,EACxB,EAAmB,KAAK,IACxB,EAAY,EACZ,EAAe,KAAK,MAAM,GAAiB,KAAK,MAAM,IACtD,GACF,GAAmB,KAAK,IAAI,EAAG,IAEjC,GAAM,GAAY,EAAc,EAAmB,EAAc,GACjE,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAgB,EAClB,EAAyB,GAAI,IAC7B,EAAwB,EACxB,EAAmB,KAAK,IACxB,EAAW,EACX,EAAe,KAAK,MAAM,GACX,KAAK,MAAM,IAC1B,GACF,GAAmB,KAAK,IAAI,EAAG,IAEjC,GAAM,GAAY,EAAY,EAAmB,EAAc,GAC/D,OAAS,GAAI,EAAG,EAAI,EAAa,IAAK,CAGpC,GAAM,GAAS,EAAQ,EAAY,GACnC,EAAO,KAAkB,KAMjC,MAAO,GAAQ,eACX,CAAC,EAAO,EAAW,EAAU,GAAc,EAAO,MAAO,GAGxD,GAAM,IAA4C,CACvD,WAAY,GACZ,YAAa,MACb,WAAY,IC1ER,YAAoC,EAIzC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,EAAQ,GAAA,GAAM,EACf,CAAC,aAAA,GAAgB,EAEvB,GAAiB,CAAC,EAAI,GAAS,6BAE/B,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,EAAY,EAAK,eAAe,EAAG,OACnC,CAAC,EAAO,EAAS,EAAQ,GAAS,EAAO,MACzC,CAAC,CAAE,EAAS,GAAU,EAAG,MAEzB,EAAS,GAAI,cAAa,EAAQ,EAAU,EAAS,GACrD,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAKvC,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAc,EAAe,GAAK,EAAe,GACjD,EAAa,EAAe,GAAK,EAAe,GAEhD,EAAiB,EAAI,EACrB,EAAgB,EAAI,EAIpB,EAAa,KAAK,KAAK,GAAkB,EAAK,EAC9C,EAAY,KAAK,KAAK,GAAiB,EAAK,EAGlD,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAc,EAAI,EAAc,GACtC,OAAS,GAAI,EAAG,EAAI,EAAS,IAAK,CAChC,GAAM,GAAY,EAAc,EAAI,EAAc,GAG5C,EAAa,KAAK,MAAM,EAAI,GAC5B,EAAW,KAAK,MAAM,EAAc,EAAY,GACtD,OAAS,GAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,GAAM,GAAY,EAAY,EAAI,EAAc,GAG1C,EAAa,KAAK,MAAM,EAAI,GAC5B,GAAW,KAAK,MAAM,EAAc,EAAW,GAErD,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAI,IAAQ,EAGZ,OAAS,IAAW,EAAG,GAAW,EAAW,KAAY,CACvD,GAAM,IAAM,GAAW,EAEvB,GAAI,GAAM,GAAK,IAAO,EACpB,SAGF,GAAM,GAAY,EAAc,GAAM,EAAU,GAC1C,GAAgB,GAAM,EACtB,GAAmB,KAAK,IAC1B,EAAU,EACV,EAAe,KAAK,MAAM,IACX,KAAK,MAAM,KAC9B,GAAI,IAAM,GAGV,OAAS,IAAW,EAAG,GAAW,EAAU,KAAY,CACtD,GAAM,IAAM,GAAW,GAEvB,GAAI,GAAM,GAAK,IAAO,EACpB,SAGF,GAAM,IAAY,EAAY,GAAM,EAAU,GACxC,GAAgB,GAAM,EACtB,GAAmB,KAAK,IAC1B,EAAS,EACT,EAAe,KAAK,MAAM,IACX,KAAK,MAAM,KAE1B,IAAM,IACR,KAAS,EAAS,GAAY,KAIpC,EAAO,EAAY,GAAK,MAMhC,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,GAGrD,GAAM,IAAgD,CAC3D,WAAY,GACZ,YAAa,MACb,WAAY,IC7GR,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,WAEpB,GAAM,GAAQ,EAAE,MAAM,OAEhB,EAAQ,EAAK,eAAe,EAAM,EAAE,OAC1C,GAAI,IAAU,EACZ,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IAGhC,GAAM,GAAS,GAAI,IAAa,EAAE,MAAO,EAAE,OACrC,EAAO,EAAQ,WAAW,GAEhC,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACpC,GAAM,GAAS,EAAO,WAAW,GAC3B,EAAQ,EAAO,QACrB,EAAM,QAAQ,GAAK,EAAM,GAAK,EAAE,MAAM,GAAK,EAAI,EAAM,IACrD,EAAO,IAAI,EAAK,IAAI,GAAG,GAAQ,GAAG,GAGpC,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,IClCD,GAAuC,CAClD,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CACvC,GAAM,CAAC,MAAA,GAAS,EACV,CAAC,QAAA,EAAS,UAAA,EAAW,OAAA,GAAU,EAC/B,EAAa,EAEb,EAAS,EAAK,uBAChB,EAAM,MAA0B,EAAK,cAAc,EAAM,QACvD,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MAEtD,CAAC,EAAS,GACZ,EAAa,eAAe,EAAQ,EAAa,GAC/C,EAAmB,IAEnB,EAAY,KAAK,IAAI,GACrB,EAAY,KAAK,IAAI,GACrB,EAAY,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEpD,OAAS,GAAW,EAAG,EAAW,EAAO,IAAY,CACnD,GAAM,GAAc,EAAW,EAAa,EAAc,EAE1D,OAAS,GAAM,EAAG,EAAM,EAAa,IAAO,CAC1C,GAAM,GAAY,EAAO,GAAa,GAEtC,OAAS,GAAM,EAAG,EAAM,EAAY,IAAO,CACzC,GAAM,GAAY,EAAM,EAExB,OAAS,GAAU,EAAG,EAAU,EAAa,IAAW,CACtD,GAAM,GAAS,CAAC,EAAO,EAAK,EAAK,GAE3B,EAAI,EAAO,GACX,EAAI,EAAO,GAGb,EAAU,GAAI,GAAW,EAAa,GAAI,GAAW,EACrD,EAAU,GAAI,GAAW,EAAa,GAAI,GAAW,EACzD,EAAS,KAAK,MAAM,EAAS,GAC7B,EAAS,KAAK,MAAM,EAAS,GAE7B,GAAI,GAAc,EAUlB,GATI,MAAO,IAAc,UACnB,KAAY,EACd,EAAc,EAEd,EAAc,EAAU,IAKxB,GAAU,GAAK,EAAS,GAAc,GAAU,GAChD,EAAS,EAAa,CAExB,GAAM,GAAmB,EAAU,GAAa,GAC1C,GAAmB,EAAS,EAC5B,EACF,EAAc,EAAmB,GAAmB,EACxD,EAAc,EAAU,GAG1B,GAAM,GAAS,EAAc,EAAY,EAAY,EACrD,EAAO,GAAU,KAOzB,MAAO,CAAC,OADO,EAAW,MAAM,EAAQ,EAAM,MAAO,EAAM,OAC3C,MAAO,EAAM,MAAO,MAAO,EAAM,SCtExC,GAAQ,GAAgB,GAAQ,GAAM,CAEjD,GAAM,GAAO,KAAK,MAAM,GACxB,MAAI,GAAK,EAAO,GACP,KAAK,MAAM,GACT,EAAK,EAAO,GACd,KAAK,KAAK,GAEb,EAAO,GAAQ,EACV,EAEA,EAAO,IAKP,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YACF,EAA0B,EAA0B,EACpD,EAAoB,EAAmB,EACvC,EAAmB,EAAmB,EACtC,EAAuB,CACzB,GAAM,GAAe,CAAC,EAAa,EAAW,GAExC,EAAc,EAAQ,OACtB,EAAc,EAAQ,OAE5B,GAAI,IAAe,EACjB,MAAO,IAAO,EAAsB,EAAQ,OAG9C,GAAM,GAAS,GAAO,EAAc,EAAQ,OAC3C,EAAO,OAAsB,KAAK,GAEnC,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAM,GAAQ,GACV,EAAe,EACnB,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAM,EAAY,EAAI,EAAY,GACxC,EAAM,KAAK,GACX,GAAgB,EAAM,EAAQ,GAGhC,GAAI,EAAe,GAAK,GAAgB,EAAa,EACnD,KAAM,IAAI,OAAM,oBAAoB,yBAA6B,KAGnE,OAAS,GAAI,EAAG,EAAI,EAAW,IACzB,EACF,EAAO,OAAO,EAAe,EAAY,IACrC,EAAY,EAAI,EAAY,GAEhC,EAAO,OAAO,EAAe,EAAY,GAAK,EAAQ,OAAS,EAC3D,EAAY,GACZ,EAAY,EAAI,EAAY,GAKtC,MAAO,GCtCH,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,QAAA,EAAS,QAAA,GAAW,EACrB,CAAC,MAAA,GAAS,EAEV,CAAC,UAAA,EAAW,WAAA,EAAY,UAAA,EAAW,QAAA,EAAS,WAAA,GAC9C,EAAa,gBAAgB,EAAS,EAAS,GAC7C,EAAiB,GAEjB,EAAa,EAAQ,WAAW,GAChC,EAAa,EAAQ,WAAW,GAEhC,EAAS,GACX,EAAY,EAAY,EAAO,EAAY,EAAW,EACtD,EAAW,EAAS,EAAsB,GAE9C,MAAO,GAAQ,eAAe,EAAO,EAAO,MAAO,EAAO,QAGrD,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC1BR,YAAiB,EAAqD,CAE1E,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,UAAA,EAAW,EAAA,EAAG,EAAA,GAAK,EAE1B,GAAiB,CAAC,EAAW,EAAG,GAAI,UACpC,GAAM,GAAgB,EAAU,MAAM,OAEhC,EAAS,EAAQ,KAAK,IAAI,EAAU,QAAQ,OAC5C,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAc,GAAW,EAAE,MAAO,EAAE,OACpC,EACF,EAAK,oBAAoB,EAAK,cAAc,EAAE,OAAQ,GAEtD,EAAQ,EACN,EACF,IAAkB,GAAK,EAAgB,GAAK,EAAE,MAAM,SAAW,EAC/D,EACA,EAAK,cAAc,EAAE,MAAM,MAAM,IAErC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,OAAS,GAAI,EAAG,EAAI,EAAQ,IACtB,EAAO,KAAO,EAChB,EAAU,KAAW,EAAQ,GAE7B,EAAU,KAAW,EAAQ,GAKnC,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAa,GAG/C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICtCR,GAAa,EAAa,gBAC1B,GAAQ,EAAa,WAEd,GAAO,GAAgB,GAAO,GACrC,GAAM,EACD,GAAQ,EAER,GAAc,MAAK,IAAI,GAAM,IAI3B,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICdD,GACT,GAAgB,GAAU,GAAO,EAAK,GAAI,KAAK,IAAI,CAAC,KAE3C,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GAAO,GAAgB,GAAO,GACrC,EAAK,EACA,GACE,EAAK,EACP,EAEA,GAIE,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICbD,GAAM,GAAgB,GAAM,GAAO,KAAK,IAAI,IAE5C,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICAR,GAAU,sBACV,GAAY,KAAK,IAAI,IAAW,EAEzB,GAAW,GAAgB,GAAW,GAAM,CAGvD,GAAM,GAAW,EAAK,CAAC,GAIjB,EAAW,EAAK,GAEhB,EAAO,KAAK,IAAI,GAClB,EAEJ,MAAI,GACF,EAAS,EACA,EACT,EAAS,EAET,EAAS,KAAK,IAAI,EAAM,GAEnB,IAGI,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IC5BR,YAAyB,EAI9B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,SAAA,GAAY,EAE/B,GAAiB,CAAC,GAAI,kBAEtB,GAAM,GAAO,EAAK,cAAc,GAE1B,EAA4C,CAAC,CAAC,EAAG,IACvD,EAAiB,KAAK,GAAI,GAE1B,OAAS,GAAI,EAAI,EAAW,OAAQ,EAAI,EAAE,MAAM,OAAQ,EAAE,EACxD,EAAiB,KAAK,CAAC,EAAG,IAG5B,GAAM,GAAU,GAAY,WAAW,CACrC,OAAQ,CAAC,EAAA,GACT,QAAA,EACA,MAAO,CAAC,SAAU,EAAkB,cAAe,KAG/C,EACF,EAAa,YAAY,EAAQ,MAAO,EAAY,EAAM,IAExD,EAAoC,EAAa,YACnD,EAAoB,OAAQ,EAAW,OAAQ,IAE7C,EACF,EAAa,oBAAoB,EAAQ,MAAO,EAAY,EAAM,IAIhE,EACF,GAAQ,CAAC,OAHwB,CAAC,EAAG,GAGL,QAAA,EAAS,MAFV,CAAC,MAAO,KAOrC,EACF,GAAU,CAAC,OAJ0B,CAAC,EAAG,GAIL,QAAA,EAAS,MAF5B,CAAC,KAAM,KAMtB,EAAS,GACX,CAAC,OAHsC,CAAC,EAAG,GAGb,QAAA,EAAS,MAFF,CAAC,MAAO,KAIjD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAAqC,CAChD,WAAY,GACZ,YAAa,MACb,WAAY,ICjER,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,cAAA,EAAe,aAAA,EAAc,aAAA,GAAgB,EAC9C,CAAC,YAAA,GAAe,EAEhB,CAAC,UAAA,EAAW,WAAA,EAAY,UAAA,EAAW,QAAA,EAAS,WAAA,GAC9C,EAAa,gBAAgB,EAAc,EAAe,GACxD,EAAiB,GAEjB,EAAa,EAAQ,WAAW,GAChC,EAAa,EAAQ,WAAW,GAChC,EACF,EAAQ,KAAK,IAAI,EAAa,QAAQ,OAAO,GAE3C,EAAS,GACX,EAAY,EAAY,EAAa,EAAY,EAAW,EAC5D,EAAW,EAAS,EAAe,GAEvC,MAAO,GAAQ,eAAe,EAAa,EAAO,MAAO,EAAO,QAG3D,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,IC3BR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,gBAAA,EAAiB,KAAA,GAAQ,EAE1B,EAAQ,EAAK,eAAe,EAAM,EAAE,OAAO,GAC3C,EAAa,EAAa,iBAAiB,EAAG,EAAiB,GAE/D,EAAQ,GAAI,OAAM,EAAE,MAAM,QAAQ,KAAK,GACvC,EAAO,EAAE,MAAM,QACrB,MAAO,GAAW,IAAI,GAAI,CACxB,GAAM,GAAY,CAAC,GAAG,GACtB,EAAU,GAAS,EACnB,GAAM,GACF,GAAM,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAA,EAAO,KAAM,KACtD,MAAA,GAAM,IAAU,EACT,IAIJ,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IC3BD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICJD,GAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,KAAY,CAChC,GAAM,CAAC,EAAA,GAAK,EACN,EAAa,EACnB,GAAiB,EAAG,UAEpB,GAAM,GAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAY,GAAI,cAAa,EAAO,QAC1C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAQ,EAAO,GACrB,EAAU,GAAK,EAAQ,EAGzB,MAAO,CAAC,OADO,EAAW,MAAM,EAAW,EAAE,MAAO,EAAE,OACtC,MAAO,EAAE,MAAO,MAAO,EAAE,SChBhC,GAAO,GAAgB,GAAM,CAAC,EAAI,IAAS,CACtD,GAAM,GAAY,EAClB,MAAI,OAAM,GACD,IAEA,EAAK,EAAI,EAAI,EAAU,QAIrB,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICRR,YAAuB,EAI5B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CACJ,MAAA,EACA,IAAA,EACA,QAAA,EACA,UAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,GACE,EAEJ,GAAiB,EAAG,gBAEpB,GAAM,CAAC,WAAA,EAAY,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,SAAA,EAAU,SAAA,GACjD,GAAW,UACP,EAAE,MAAO,EAAO,EAAK,EAAS,EAAW,EAAS,EAClD,EAAa,GAEf,EAAK,GAAQ,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAErD,EACJ,GAAI,EAAY,CACd,GAAM,GACF,GAAM,CAAC,OAAQ,CAAC,EAAG,GAAK,QAAA,EAAS,MAAO,CAAC,MAAO,EAAQ,KAAA,KAC5D,EAAS,GAAQ,CAAC,OAAQ,CAAC,GAAY,QAAA,EAAS,MAAO,CAAC,MAAO,KAE/D,EAAQ,8BAA8B,WAC7B,EAAS,KAAK,GAAQ,IAAS,GACxC,EAAS,EAAQ,eAAe,EAAU,EAAE,MAAO,QAC9C,CACL,GAAM,GAAO,EAAQ,WAAW,GAC1B,EAAS,GAAiB,EAAU,EAAM,EAAU,GAE1D,EAAS,EAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAGrE,GAAM,GACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,IC3DD,GAAM,GAAgB,GAAM,GAAO,KAAK,IAAI,IAE5C,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICHR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,QACpB,GAAM,GAAS,GAAS,EAAQ,WAAW,GAAI,GAE/C,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IChBR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,EAAA,EAAG,OAAA,GAAU,EAEpB,GAAiB,EAAG,QAEpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,CAAC,EAAa,GAChB,GAAS,EAAO,EAAE,MAAO,EAAE,MAA0B,EAAG,GAE5D,MAAO,CACL,EAAQ,eACJ,EAAY,MAAO,EAAY,MAAO,EAAY,QACtD,EAAQ,eACJ,EAAe,MAAO,EAAe,MAAO,EAAe,SAI5D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IC1BR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,GAAW,EAC3B,CAAC,MAAA,EAAO,WAAA,GAAc,EACtB,CAAC,cAAA,EAAe,SAAA,EAAU,UAAA,EAAW,YAAA,GAAe,EAEpD,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MACtD,CAAC,EAAW,GACd,GAAe,KAAO,EAAc,CAAC,EAAa,GAChD,EAAW,CAAC,EAAO,EAAW,EAAU,GAExC,EAAU,EAAK,eAAe,EAAM,OACpC,EAAc,EAAQ,GACtB,EAAY,EAAQ,GACpB,EAAY,EAAQ,GAEpB,EAAU,EAAK,uBACjB,EAAM,MAA0B,EAAK,cAAc,IAEvD,EAAQ,KAAK,GAEb,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EACF,EAAQ,KAAK,IAAI,EAAW,QAAQ,OAIxC,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAAG,CAC9B,GAAM,GAAY,EAAW,MAAM,KAAO,EACtC,EACA,EAAc,SAAS,EAAI,EAAG,EAAI,EAAI,GAE1C,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EACrC,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EACpC,OAAS,GAAU,EAAG,EAAU,EAAa,EAAE,EAAS,CACtD,GAAI,GAEE,EAAa,EAAU,GAAK,EAAO,EAAU,GAAK,EAAO,EAE/D,GAAI,IAAe,EAGjB,SAGF,GAAM,GACD,GAAU,GAAK,EAAO,EAAU,GAAK,EAAO,EAAU,IACvD,EACE,EACD,GAAU,GAAK,EAAO,EAAU,GAAK,EAAO,EAAU,IACvD,EAEE,EAAI,GAAS,EAAK,EAAY,GAC9B,GAAI,GAAS,EAAK,EAAa,GAErC,OAAQ,OACD,UACH,EAAM,GACF,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAG,GAAG,EAAG,EAAS,GACjC,UACG,WACH,EAAM,GACF,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAG,GAAG,EAAG,EAAS,GACjC,cAEA,KAAM,IAAI,OACN,+DACuB,KAG/B,GAAM,GACF,EAAI,EAAc,EAAO,EAAY,EAAO,EAAY,EAE5D,EAAQ,GAAO,EAKrB,MAAO,GAAQ,eAAe,EAAU,EAAM,MAAO,GAIvD,MAAO,CAAC,OADO,EAAQ,MAAM,EAAS,EAAU,EAAM,OACtC,MAAO,EAAM,MAAO,MAAO,EAAM,OAG5C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IAGd,YACI,EAAkB,EAClB,EAA2C,CAC7C,OAAQ,OACD,UACH,MAAO,IAAgB,EAAU,OAC9B,OACH,MAAO,IAAa,EAAU,OAC3B,UACH,MAAO,IAAgB,EAAU,OAC9B,mBAEH,MAAO,IAAiB,EAAU,IAIxC,YAAyB,EAAkB,EAAW,CAEpD,GAAI,GAAU,EACd,GAAI,EAAU,EACZ,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAM,EAAI,EACZ,EAAU,GACZ,GAAU,EAAM,KAAK,MAAM,CAAC,EAAU,GAAO,GAE/C,EAAU,EAAU,CAAC,EAAM,EAAU,EAAM,CAAC,EAAU,UAE/C,EAAU,EAAM,EACzB,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAM,EAAI,EAChB,GAAW,EAAM,KAAK,MAAM,EAAU,GAClC,GAAW,GACb,GAAU,EAAM,EAAU,GAMhC,MAAO,GAAK,MAAM,EAAG,EAAS,EAAM,GAGtC,YAAsB,EAAkB,EAAW,CAEjD,GAAI,GAAU,EACd,GAAI,EAAU,EACZ,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAK,EAAM,EACjB,GAAW,EAAO,MAAK,MAAM,CAAC,EAAU,GAAM,WAEvC,EAAU,EAAM,EACzB,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAK,EAAM,EACjB,GAAW,EAAM,KAAK,MAAM,EAAU,GAK1C,MAAO,GAAK,MAAM,EAAG,EAAS,EAAM,GAGtC,YAA0B,EAAkB,EAAW,CACrD,MAAO,GAGT,YAAyB,EAAkB,EAAW,CACpD,MAAO,GAAK,MAAM,EAAG,EAAU,EAAM,GAGvC,YACI,EAAuB,EAAqB,EAC5C,EAAqB,EAAmB,EAAmB,EAC3D,EAAW,EAAW,EAAiB,EAAiB,CAC1D,GAAM,GAAM,EAAQ,EAAc,EAAI,EAAY,EAAI,EAAY,EAClE,MAAI,IAAK,GAAK,EAAI,GAAe,GAAK,GAAK,EAAI,EACtC,EAAU,GAEV,EAIX,YACI,EAAuB,EAAqB,EAC5C,EAAqB,EAAmB,EAAmB,EAC3D,EAAW,EAAW,EAAiB,EAAiB,CAC1D,GAAM,GAAK,KAAK,MAAM,GAChB,EAAK,KAAK,MAAM,GAEtB,MAAO,IACH,EAAW,EAAa,EAAY,EAAa,EAAW,EAC5D,EAAO,EAAI,EAAI,EAAS,GAG9B,YACI,EAAuB,EAAqB,EAC5C,EAAqB,EAAmB,EAAmB,EAC3D,EAAW,EAAW,EAAiB,EAAiB,CAC1D,GAAM,GAAS,KAAK,MAAM,GACpB,EAAS,KAAK,MAAM,GACpB,EAAQ,EAAS,EACjB,EAAQ,EAAS,EAGjB,EACD,GAAQ,GACL,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAQ,EAAQ,EAAS,GAClD,GAAI,GACD,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAQ,EAAO,EAAS,GAGhD,EACD,GAAQ,GACL,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAO,EAAQ,EAAS,GACjD,GAAI,GACD,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAO,EAAO,EAAS,GAGrD,MAAQ,GAAQ,GAAK,EAAe,GAAI,GAAU,ECjO9C,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,GAAW,EAC3B,CAAC,KAAA,GAAQ,EACT,CAAC,EAAA,GAAK,EACZ,GAAiB,EAAG,UAEpB,GAAM,GAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,CAAC,aAAA,EAAc,YAAA,EAAa,QAAA,GAC9B,GAAW,EAAQ,EAAM,EAAE,MAAO,EAAE,OACxC,MAAO,CACL,EAAQ,eAAe,EAAa,EAAE,MAAO,GAC7C,EAAQ,eAAe,CAAC,EAAQ,QAAS,QAAS,IAI/C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICrBR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,GAAS,EACZ,CAAC,KAAA,GAAQ,EAET,EAAO,GACT,IAAQ,EAAM,MAAM,QAGtB,GAAM,GAAY,EAAM,MAAM,OAExB,EAAM,EAAM,MAAM,GAClB,EAAqB,GAAI,OAAM,EAAY,GAC7C,EAAW,EACf,OAAS,GAAI,EAAG,EAAI,EAAW,IACzB,IAAM,GACR,GAAS,KAAc,EAAM,MAAM,IAIvC,GAAM,GAAQ,GAAI,OAAM,GAAW,KAAK,GAClC,EAAO,EAAM,MAAM,QACzB,EAAK,GAAQ,EACb,GAAM,GAAM,GAAI,OAAM,GACtB,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,EAAM,GAAQ,EACd,GAAM,GAAU,GAAM,CAAC,OAAQ,CAAC,EAAG,GAAQ,QAAA,EAAS,MAAO,CAAC,MAAA,EAAO,KAAA,KACnE,EAAI,GAAK,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAU,QAAA,EAAS,MAAO,CAAC,MAAO,KAChE,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IClCR,YAA6B,EAIlC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,WAAA,GAAc,EAClB,CAAC,YAAA,GAAe,EAEtB,GAAiB,EAAG,sBAEpB,GAAM,GAAQ,EAAE,MAAM,OAChB,EAAiB,EAAW,MAAM,OAClC,EAAM,GACN,EAA8B,GAI9B,EAAW,EAAQ,EACrB,EAAc,EAElB,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAAG,CACjC,GAAM,GAAW,GACb,CAAC,OAAQ,CAAC,MAAO,GAAc,QAAA,EAAS,MAAO,CAAC,IAAK,EAAI,KAC7D,EAAc,EACd,EAAc,KAAK,GAGrB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,GAAc,EAAK,kBAAkB,EAAoB,SACzD,EAAY,EAAQ,eAAe,GAAI,QAAS,GAChD,EACF,GAAM,CAAC,OAAQ,CAAC,EAAG,EAAW,EAAG,GAAc,QAAA,IAC7C,EACF,GAAK,CAAC,OAAQ,CAAC,KAAU,QAAA,EAAS,MAAO,CAAC,MAAO,aAC/C,EACF,GAAS,CAAC,OAAQ,CAAC,EAAG,EAAY,EAAG,GAAI,QAAA,IACvC,EACF,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAM,QAAA,EAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,EAAI,KAAK,GACT,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC4FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GE/UjB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,8BAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,yBAAA,IAAA,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CAAC,KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IC6DR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GExTjB,GAAY,IAAZ,AAAA,UAAY,EAAQ,CAClB,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,UAAA,GAAA,cALU,IAAA,IAAQ,KASpB,GAAY,IAAZ,AAAA,UAAY,EAAiB,CAC3B,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAA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,EAAc,EAAiB,IAAuB,CAC/D,GAAM,GAA2B,EAC3B,CAAC,KAAA,GAAQ,EACf,MAAO,CAAC,MAAO,IAAM,GAAM,EAAI,MCItB,GAA2C,CACtD,WAAY,GACZ,aAAc,CAAC,cACf,SAAU,CAAC,EAAY,IAAmB,CACxC,GAAM,CAAC,GAAc,EAKrB,MAAO,CAAC,EAHK,IACJ,GAAoB,EAAI,MAMrC,YAA+C,EAAM,EAAiB,CAIpE,GAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GACvB,EAAa,GAAa,EAAS,GAAO,EAAG,UAC3C,EAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCpOnB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,WAAA,IAAA,GAAA,OAAA,IAAA,GAAA,SAAA,IAAA,KCaA,GAAI,IAKE,aAAiB,CACrB,MAAI,KAAY,MACd,IAAW,KAAU,WAEhB,GAcH,aAAyB,CAC7B,MAAO,eCdH,GAAA,IAAA,aAA8B,MAAK,CACvC,YAAY,EAAgB,CAC1B,MAAM,GAEN,OAAO,eAAe,KAAM,GAAe,aAOzC,GAAA,aAA4B,MAAK,CACrC,YAAY,EAAgB,CAC1B,MAAM,GAEN,OAAO,eAAe,KAAM,GAAa,aAOvC,EAAA,aAA0B,MAAK,CACnC,YAAY,EAAgB,CAC1B,MAAM,GAEN,OAAO,eAAe,KAAM,EAAW,aAOrC,GAAA,aAAmC,MAAK,CAC5C,YAAY,EAAgB,CAC1B,MAAM,GAEN,OAAO,eAAe,KAAM,GAAoB,aAO9C,GAAA,aAA8B,MAAK,CACvC,YAAY,EAAgB,CAC1B,MAAM,GAEN,OAAO,eAAe,KAAM,GAAe,aChDzC,YAAuB,EAAY,EAAiB,CACxD,GAAI,MAAM,QAAQ,GAAQ,CAExB,GAAI,GAAkB,GACtB,OAAS,GAAI,EAAG,EAAI,EAAW,IAC7B,EAAW,EAAS,OAAO,GAE7B,MAAO,OACF,CACL,GAAM,GAAW,GAAI,OAAM,GAC3B,MAAA,GAAS,KAAK,GACP,GAIL,YAAiB,EAAc,EAAgB,CACnD,GAAI,CAAC,EACH,KAAM,IAAI,IAAe,GAOvB,YAAmB,EAAY,EAAW,CAC9C,GAAI,GAAU,EACd,OAAW,KAAQ,GACb,IAAS,GACX,IAGJ,MAAO,GAQH,YAA8B,EAAO,CACzC,MAAI,GAAG,SAAW,EACT,EAAG,GAEL,EAYH,YAAiB,EAAM,CAC3B,MAAI,OAAM,QAAQ,GACT,EAEF,CAAC,GA0BJ,YAAsB,EAAY,CAEtC,GAAM,GADe,EAAK,QAAQ,uBAAwB,SAEzC,QAAQ,kBAAmB,SAAS,cAKrD,MAAI,GAAS,KAAO,IACX,EAEF,UAAY,EAGf,YAAsB,EAAkB,CAM5C,MAJI,GAAW,QAAU,GAIrB,EAAW,QAAQ,OAAS,GACvB,EAEF,EAAW,QAAQ,cAAe,CAAC,EAAG,IAAO,EAAG,eAIzD,GAAI,IAAyB,GAEvB,YAA+B,EAAoC,CAEvE,GAAI,GAAa,KACf,MAAO,MAET,GAAM,GAAsC,GAC5C,MAAA,GAAK,UAAe,EAAS,eAC7B,EAAK,OAAY,EAAS,YACnB,EAcT,YAAuC,EAAqC,CAE1E,GAAI,CAAA,IAAU,MAAQ,MAAO,IAAW,UAEjC,GAAI,MAAM,QAAQ,GACvB,EAAO,QAAQ,GAAc,GAA8B,QACtD,CACL,GAAM,GAAS,OAAO,KAAK,GAC3B,OAAW,KAAS,GAAQ,CAC1B,GAAM,GAAQ,EAAO,GACjB,GAAS,MAAQ,MAAO,IAAU,UAChC,EAAC,MAAM,QAAQ,IAAU,EAAM,OAAY,WAC3C,MAAO,GAAM,OAAa,SAC5B,EAAO,GAAS,EAAM,MAEtB,GAA8B,MAoBlC,YACF,EACA,EAAgB,GAChB,EAAgB,GAChB,EAAsB,SAAU,EAAiB,GAAK,CAExD,GAAI,MAAO,IAAe,SAAU,CAClC,GAAM,GAAe,EACjB,EACJ,GAAI,IAAgB,GAClB,EAAK,EAAc,WACV,IAAgB,IACzB,EAAK,GAAuB,WAE5B,EAAK,EAAc,GACf,GAAM,KACR,KAAM,IAAI,GACN,WAAW,MAAwB;SAEzB;gBAGO,qGAMzB,MAAO,OACF,CAEL,GAAM,GAAS,EACf,GAAI,EAAO,WAAgB,MAAQ,EAAO,QAAa,KACrD,KAAM,IAAI,GACN,GAAG,8BACA,KAAK,UAAU;qCAGxB,GAAM,GAAY,EAAO,UACrB,EAAK,EAQT,GAPI,IAAa,GACf,CAAC,EAAK,GAAc,EAAc,GACzB,IAAa,IACtB,CAAC,EAAK,GAAc,GAAuB,UAClC,IAAa,IACtB,EAAC,EAAK,GAAc,EAAc,IAEhC,GAAO,KACT,KAAM,IAAI,GACN,WAAW,MAAwB;SAEzB;gBAGO,qGAKvB,GAAI,GAAc,KAAM,CAOtB,GAAM,GAAwB,GAC9B,OAAW,KAAO,QAAO,KAAK,IAC5B,EAAsB,GAAO,GAAuB,GAEtD,OAAW,KAAO,QAAO,KAAK,GAC5B,EAAsB,GAAO,EAAc,GAG7C,GAAM,GAAe,EAAO,OAC5B,EAAa,cAAmB,EAEhC,GAAM,GAAmB,OAAA,OAAA,GAAO,IAChC,OAAW,KAAO,QAAO,KAAK,GAC5B,GAAuB,GAAO,EAAc,GAE9C,GAA8B,EAAO,QACrC,GAAM,GACF,EAAW,EAAK,EAAO,OAAW,EAAe,GACrD,MAAA,IAAsB,OAAA,OAAA,GAAO,GAEtB,MACF,CAIL,GAAM,GAAmB,OAAA,OAAA,GAAO,IAChC,OAAW,KAAO,QAAO,KAAK,GAC5B,GAAuB,GAAO,EAAc,GAK9C,GAAM,GAAY,GAAI,GAAI,EAAO,QACjC,MAAA,IAAsB,OAAA,OAAA,GAAO,GACtB,IAUP,YAAwB,EAAW,EAAS,CAChD,MAAQ,GAAI,EAAK,GAAO,EAAI,EAAK,EAAI,EAQjC,YAA+B,EAAW,EAAS,CACvD,MAAO,GAAK,GAAc,EAAG,GA2CzB,YAAoB,EAAO,CAC/B,GAAI,GAAM,KACR,MAAO,GAET,GAAM,GAAW,GAEjB,OAAW,KAAK,GACV,EAAI,QAAQ,KAAO,IACrB,EAAI,KAAK,GAGb,MAAO,GASH,YAAwB,EAAO,CACnC,GAAI,GAAO,KACT,KAAM,IAAI,GAAW,yBAAyB,KAAK,UAAU,MAE/D,OAAW,KAAO,GAChB,GAAI,EAAI,eAAe,GACrB,MAAO,GAGX,MAAO,GAUH,YACF,EAAkB,EAAe,EAAa,CAChD,GAAI,GAAS,MAGT,EAAO,QAAQ,GAAS,EAC1B,KAAM,IAAI,GAAW,GAAG,oBAAwB,wBAC5C,wBAmBF,YACF,EAAQ,EAAsB,EAAY,EAC1C,EAAY,SAAQ,CACtB,MAAA,IAAO,GAAa,GACpB,GAAO,GAAa,GAEhB,MAAM,QAAQ,IAAM,EAAE,QAAU,GAAa,EAAE,QAAU,GACzD,EAAE,MAAM,GAAK,MAAO,KAAM,GAW1B,YAAgC,EAAwB,EAAY,CACpE,MAAM,QAAQ,GAChB,GAAK,OACD,EAAM,OAAS,EAAG,IAAM,GAAG,qCAC/B,EAAM,QACF,CAAC,EAAG,IAAM,GAAsB,EAAG,WAAW,EAAI,QAAQ,OAE9D,EAAK,OACD,OAAO,UAAU,IAAU,EAAQ,EACnC,IAAM,YAAY,uCACX,GAAuB,OAehC,YAAiC,EAAU,CAC/C,MAAI,KAAU,KACL,OACE,MAAM,QAAQ,GAChB,IAAM,EAAM,IAAI,GAAK,GAAuB,IAAI,KAAK,KAAO,IAC1D,MAAO,IAAU,SACnB,IAAI,KAEJ,GAAG,IAaR,YACF,EAA8B,EAAc,CAC9C,GAAI,GAAW,EAAK,MAChB,EAUJ,MATW,IAAI,IAAmB,CAChC,GAAM,GAAM,EAAK,MACjB,MAAI,GAAM,EAAW,GAGrB,GAAW,EACX,EAAa,EAAE,GAAG,IACX,GAWL,YAAqC,EAAsB,CAE/D,MAAI,KAAmB,OACd,OAEL,IAAmB,SACd,SAEL,IAAmB,MACd,MAEF,KCnfT,YAAqB,EAAW,EAAY,CAC1C,MAAO,GAAK,IAAU,GAAS,GAAQ,EAAI,EAAG,GAAI,EAAM,MAYpD,GAAA,IAAA,aAAmC,IAAc,YAAY,CAGjE,WAAS,CACP,MAAO,KA0BL,GAAA,aAAuB,GAAU,CAQrC,YAAY,EAAiB,CAC3B,QAJe,KAAA,gBAAkB,EAClB,KAAA,YAAc,EAI7B,KAAK,SACD,EAAK,UAAY,KAAO,EAAK,SAAW,KAAK,gBACjD,KAAK,KAAO,EAAK,MAAQ,KAAO,EAAK,KAAO,KAAK,YAGnD,MAAM,EAAS,CACb,MAAO,GAAK,IAAK,CACf,GAAM,GAAQ,GAAY,EAAG,KAAK,MAC5B,EAAc,GAAY,EAAO,EAAG,KAAK,UAC/C,MAAW,GAAI,EAAO,GAAI,EAAa,GAAI,KAAW,OAI1D,WAAS,CACP,MAAO,CAAC,SAAU,KAAK,SAAU,KAAM,KAAK,QAtB9B,GAAA,UAAY,UAyB9B,GAAc,cAAc,IAoBtB,GAAA,IAAA,aAAwB,GAAU,CAKtC,YAAY,EAAkB,CAC5B,QAFe,KAAA,YAAc,EAG7B,KAAK,KAAO,EAAK,MAAQ,KAAO,EAAK,KAAO,KAAK,YAGnD,MAAM,EAAS,CACb,MAAO,GACH,IAAU,GAAI,EAAO,GAAI,KAAW,GAAY,EAAG,KAAK,SAG9D,WAAS,CACP,MAAO,CAAC,KAAM,KAAK,QAdL,GAAA,UAAY,WAiB9B,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAsB,GAAU,CAIpC,MAAM,EAAS,CACb,MAAW,IAAK,KAHF,GAAA,UAAY,SAM9B,GAAc,cAAc,IAoCtB,GAAA,IAAA,aAA0B,GAAU,CAYxC,YAAY,EAAoB,CAC9B,QANe,KAAA,gBAAkB,EAClB,KAAA,gBAAkB,EAClB,KAAA,YAAc,EACd,KAAA,YAAc,EAI7B,KAAK,SACD,EAAK,UAAY,KAAO,EAAK,SAAW,KAAK,gBACjD,KAAK,SACD,EAAK,UAAY,KAAO,EAAK,SAAW,KAAK,gBACjD,KAAK,KAAO,EAAK,MAAQ,KAAO,EAAK,KAAO,KAAK,YACjD,KAAK,KAAO,EAAK,MAAQ,KAAO,EAAK,KAAO,KAAK,YAGnD,MAAM,EAAS,CACb,MAAO,GAAK,IAAK,CACf,GAAM,GAAQ,GAAY,EAAG,KAAK,MAC5B,EAAc,GACZ,EACA,KAAK,KAAU,GAAY,EAAO,KAAK,SAAU,KAAK,WACtD,EAAI,EAAM,KAAK,KAAM,IAC7B,MAAW,GAAI,EAAO,GAAI,EAAa,GAAI,KAAW,OAI1D,WAAS,CACP,MAAO,CACL,SAAU,KAAK,SACf,SAAU,KAAK,SACf,KAAM,KAAK,KACX,KAAM,KAAK,QApCC,GAAA,UAAY,aAwC9B,GAAc,cAAc,IAQrB,GAAM,IACwC,CAC/C,QAAW,UACX,WAAc,aACd,OAAU,SACV,SAAY,YAGZ,YAA8B,EAAsB,CAExD,MAAO,IAAqB,GAGxB,YACF,EACA,EAA0C,GAAE,CAC9C,MAAO,IACH,EAAQ,GAAc,iBAAiB,SAAS,aAChD,EAAe,cAGf,YAAwB,EACmC,CAC/D,GAAI,GAAc,KAChB,MAAO,MAET,GAAI,MAAO,IAAe,SAAU,CAIlC,GAAM,GAAS,CAAC,UAHE,IAAc,IAC5B,GAA0C,GAC1C,EACuB,OAAQ,IACnC,MAAO,IAAsB,OACxB,OAAI,aAAsB,IACxB,EAEA,GAAsB,GJ3O3B,YAAkB,EAAiB,CACvC,MAAO,IAAI,IAAQ,GAQf,YAAmB,EAAkB,CACzC,MAAO,IAAI,IAAS,GAQhB,aAAgB,CACpB,MAAO,IAAI,IAIP,YAAqB,EAAsB,CAC/C,MAAO,IAAI,IAAW,GKjDxB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,SAAA,IAAA,GAAA,aAAA,IAAA,GAAA,cAAA,IAAA,GAAA,SAAA,IAAA,GAAA,UAAA,IAAA,GAAA,SAAA,IAAA,GAAA,YAAA,IAAA,GAAA,aAAA,IAAA,GAAA,KAAA,IAAA,GAAA,WAAA,IAAA,GAAA,aAAA,IAAA,GAAA,cAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,MAAA,IAAA,KCqBO,GAAM,IAA2B,CAAC,gBAAiB,gBAG7C,GAAoC,CAAC,UAAW,YAMhD,GAA4B,CAAC,QAAS,OAAQ,UAI9C,GAAyB,CAAC,MAAO,OAIjC,GAAkC,CAAC,MAAO,MAAO,SAAU,OCnBlE,GAA+B,GAAI,KAEnC,YAA0B,EAAc,CAC5C,GAA0B,GAA0B,aAAc,GAG9D,YAAmC,EAAc,CACrD,GACI,GAAmC,sBAAuB,GAG1D,YAA2B,EAAc,CAC7C,GAA0B,GAA2B,cAAe,GAGhE,YAAwB,EAAc,CAC1C,GAA0B,GAAwB,WAAY,GAGhE,GAAM,IAA4B,GAC5B,GAAoB,IAKpB,YAAuB,EAAc,EAAW,CACpD,GAAgB,KAAK,GACrB,GAAI,CACF,GAAM,GAAS,IACf,MAAA,IAAgB,MACT,QACA,EADA,CAEP,KAAA,IAAgB,MACV,GAOV,aAA+B,CAC7B,MAAI,IAAgB,SAAW,EACtB,GAEA,GAAgB,KAAK,IAAqB,GAS/C,YAA8B,EAAkB,CACpD,GAAI,CAAC,GAAkB,GACrB,KAAM,IAAI,OAAM,6BAAgC,EAAa,KAE/D,MAAO,MAA2B,EAa9B,YAA8B,EAAkB,CACpD,GAAI,CAAC,GAAkB,GACrB,KAAM,IAAI,OAAM,6BAAgC,EAAa,KAE1D,GAAQ,IAAI,IACf,GAAQ,IAAI,EAAY,GAE1B,GAAM,GAAQ,GAAQ,IAAI,GAG1B,GAFA,GAAQ,IAAI,EAAY,GAAQ,IAAI,GAAc,GAE9C,EAAQ,EAAG,CACb,GAAM,GAAS,GAAG,KAAc,IAGhC,MAAA,IAAQ,IAAI,EAAQ,GACb,MAEP,OAAO,GAIX,GAAM,IAAkB,GAAI,QAAO,mCAO7B,YAA4B,EAAY,CAC5C,MAAO,CAAC,CAAC,EAAK,MAAM,ICxFhB,YAAoB,EAAS,CACjC,MAAO,KAAM,SAAS,EAAE,WAAY,IAUhC,YACF,EAA4B,EAAgB,EAAY,CACtD,GAAS,MACX,GAAQ,GAEN,GAAO,MACT,GAAM,EAAM,QAGd,GAAI,GAAO,EACX,OAAS,GAAI,EAAO,EAAI,EAAK,EAAE,EAC7B,GAAQ,EAAM,GAEhB,MAAO,GAQT,YAAmB,EAA4B,CAC7C,MAAA,GAAQ,MAAM,QAAQ,GAAS,GAAI,cAAa,GAAS,EAClD,GAAS,GAQZ,YAAc,EAA4B,CAC9C,MAAW,IAAI,GAAU,IAAQ,WAAW,GAQxC,YAAc,EAA4B,CAC9C,MAAW,IAAI,GAAU,IAAQ,WAAW,GAsDxC,YAAgB,EAAe,EAAW,CAC9C,GAAI,EAAM,EACR,KAAM,IAAI,GAAW,QAAQ,eAAiB,oBAEhD,GAAM,GAAgB,GACtB,OAAS,GAAI,EAAO,EAAI,EAAK,EAAE,EAC7B,EAAI,KAAK,GAEX,MAAO,GCxEH,YAAe,EAAW,EAAmB,CACjD,MAAO,GAAE,OAAO,GASZ,YAAqB,EAAW,EAAO,GAAE,CAC7C,GAAM,GAAW,EAAE,MAAM,QACzB,MAAI,GAAO,GACT,GAAO,EAAS,OAAS,EAAO,GAElC,EAAS,OAAO,EAAM,EAAG,GAClB,EAAE,QAAQ,GAcb,YAAiB,EAAW,EAAS,CACzC,MAAO,GAAK,IAAK,CACf,GAAI,EAAE,MAAM,SAAW,EACrB,KAAM,IAAI,GACN,yDACQ,EAAE,MAAM,kBAEtB,GAAM,GAAI,GAAW,EAAG,GACxB,MAAO,IAAK,EAAG,CAAC,EAAG,EAAG,MASpB,YAAkB,EAAS,CAC/B,GAAM,GAAW,CAAY,GAAU,EAAE,QACzC,MAAO,GAAE,QAAQ,GAWb,aAAuB,EAAS,CACpC,GAAI,EAAE,MAAQ,EACZ,KAAM,IAAI,GACN,wDAAwD,EAAE,SAEhE,GAAM,GAAW,CAAC,EAAE,MAAM,GAAe,GAAU,EAAE,MAAO,IAC5D,MAAO,GAAE,QAAQ,GAWb,YACF,EAAe,EAAe,EAAY,CAC5C,MAAO,GAAK,IAAK,CACf,OAAQ,EAAM,UACP,GACH,MAAW,IAAQ,EAAmB,EAAO,OAC1C,GACH,MAAW,IACP,EAAmB,CAAC,EAAO,GAAI,CAAC,EAAM,EAAM,MAAM,SACnD,GACH,MAAW,IACP,EAAmB,CAAC,EAAO,EAAG,GAC9B,CAAC,EAAM,EAAM,MAAM,GAAI,EAAM,MAAM,SACpC,GACH,MAAW,IACP,EAAmB,CAAC,EAAO,EAAG,EAAG,GACjC,CAAC,EAAM,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,EAAM,MAAM,SACpD,GACH,MAAW,IAAM,EAAmB,CAAC,EAAO,EAAG,EAAG,EAAG,GAAI,CACvD,EAAM,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,EAAM,MAAM,SAEjE,GACH,MAAW,IAAM,EAAO,CAAC,EAAO,EAAG,EAAG,EAAG,EAAG,GAAI,CAC9C,EAAM,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,EAAM,MAAM,GAClE,EAAM,MAAM,aAGd,KAAM,IAAI,GACN,8DACG,EAAM,WAaf,YACF,EAAe,EAAe,EAAY,CAC5C,MAAO,GAAK,IAAK,CACf,OAAQ,EAAM,UACP,GACH,MAAW,IAAQ,EAAmB,EAAO,OAC1C,GACH,MAAW,IACP,EAAmB,CAAC,EAAG,GAAQ,CAAC,EAAM,MAAM,GAAI,QACjD,GACH,MAAW,IACP,EAAmB,CAAC,EAAG,EAAG,GAC1B,CAAC,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,QAClC,GACH,MAAW,IACP,EAAmB,CAAC,EAAG,EAAG,EAAG,GAC7B,CAAC,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,YAErD,KAAM,IAAI,GACN,6DACG,EAAM,WAcf,YACF,EAAe,EAAe,EAAc,EAAY,CAC1D,MAAO,GAAK,IAAK,CACf,OAAQ,EAAM,UACP,GACH,MAAW,IAAQ,EAAmB,EAAO,OAC1C,GACH,OAAQ,OACD,GACH,MAAO,IAAoB,EAAO,EAAO,OACtC,GACH,MAAO,IAAmB,EAAO,EAAO,WAExC,KAAM,IAAI,GACN,iDACG,SAER,GACH,OAAQ,OACD,GACH,MAAO,IAAoB,EAAO,EAAO,OACtC,GACH,MAAW,IACP,EAAmB,CAAC,EAAG,EAAO,GAC9B,CAAC,EAAM,MAAM,GAAI,EAAM,EAAM,MAAM,SACpC,GACH,MAAO,IAAmB,EAAO,EAAO,WAExC,KAAM,IAAI,GACN,iDACG,SAER,GACH,OAAQ,OACD,GACH,MAAO,IAAoB,EAAO,EAAO,OACtC,GACH,MAAW,IACP,EAAmB,CAAC,EAAG,EAAO,EAAG,GACjC,CAAC,EAAM,MAAM,GAAI,EAAM,EAAM,MAAM,GAAI,EAAM,MAAM,SACpD,GACH,MAAW,IACP,EAAmB,CAAC,EAAG,EAAG,EAAO,GACjC,CAAC,EAAM,MAAM,GAAI,EAAM,MAAM,GAAI,EAAM,EAAM,MAAM,SACpD,GACH,MAAO,IAAmB,EAAO,EAAO,WAExC,KAAM,IAAI,GACN,iDACG,aAGX,KAAM,IAAI,GACN,6DACG,EAAM,WAWf,YAAsB,EAAmB,EAAO,GAAE,CACtD,GAAI,GACJ,MAAI,GAAO,GACT,GAAO,EAAQ,GAAG,KACd,IAAS,EACX,EAAO,EAEP,EAAO,GAGP,IAAS,EAAQ,GAAG,MAGtB,GAAO,IAGE,GAAO,EAAS,GAUvB,YAA+B,EAAW,EAAS,CACvD,OAAQ,EAAE,UACH,GACH,MAAW,IAAS,CAAC,EAAe,QACjC,GACH,MAAW,IAAS,CAAC,EAAe,GAAgB,OACjD,GACH,MAAW,IAAS,CAAC,EAAe,GAAgB,OACjD,GACH,MAAW,IAAS,CAAC,EAAe,GAAgB,WAEpD,KAAM,IAAI,GACN,+DACgB,EAAE,SAWtB,YAAe,EAAW,EAAkB,CAIhD,GAHK,MAAM,QAAQ,IACjB,GAAI,CAAC,IAEH,EAAE,OAAS,EAAE,OACf,KAAM,IAAI,GACN,0BAA0B,EAAE,+DACY,EAAE,SAEhD,MAAW,IAAK,EAAG,GAef,YACF,EAAc,EAAO,EAAK,EAAS,EAAK,EACxC,EAAa,CACf,MAAW,IAAa,EAAO,EAAM,EAAQ,EAAO,GAqBhD,YACF,EAAW,EAAW,EACtB,EAAa,CACf,GAAK,EAAE,KAAO,GAAO,EAAE,KAAO,EAC5B,KAAM,IAAI,IACN,8DACsB,EAAE,uBAAuB,EAAE,SAEvD,GAAI,EAAE,MAAQ,EAAG,CACf,GAAM,GAAW,EAAE,MAAM,MAAM,IAAI,GAC7B,EAAiB,EAAE,MAAM,MAAM,IAAI,GACzC,GAAI,IAAa,EACf,KAAM,IAAI,IACN,gGAEI,EAAE,wBACQ,EAAE,SAIxB,GAAK,EAAE,OAAS,GAAO,EAAE,OAAS,EAAI,CACpC,GAAM,GAAa,GACb,EAAa,GAInB,MAAW,IAAM,OAAO,CACtB,EAAA,EACA,EAAG,EACH,WAAA,EACA,WAAA,EACA,KAAM,EAAO,GAAY,EAAE,KAAM,EAAM,MAAqB,KAC5D,WAAA,QAEG,CAEL,GAAM,GAAa,EAAE,MAAM,QACrB,EAAW,EAAW,MAC5B,EAAI,EAAE,QAAQ,CAAC,GAAI,IAInB,GAAM,GAAS,EAAE,MAAM,QACjB,EAAW,EAAO,MAClB,EAAiB,EAAO,MACxB,EAAa,CAAC,GAAG,EAAQ,GAGzB,EAAO,MAAM,KAAK,CAAC,OAAQ,EAAE,MAAO,CAAC,EAAG,IACxC,IAAM,EACD,EAAE,KAAO,EACP,GAAK,EAAE,KAAO,EAChB,EAAI,EAEN,GAET,EAAI,EAAE,UAAU,GAAM,QAAQ,CAAC,EAAgB,KAG/C,GAAM,GAAc,CAAC,GAAG,EAAY,GAAG,GACjC,EAAa,GACb,EAAa,GACnB,MAAW,IACN,OAAO,CACN,EAAA,EACA,EAAA,EACA,WAAA,EACA,WAAA,EACA,KAAM,EAAO,GAAY,EAAE,KAAM,EAAM,MAAqB,KAC5D,WAAA,IAED,QAAQ,IAwDX,YACF,EAAmB,EAA4B,EAAa,CAC9D,MAAO,GAAK,IACN,OAAM,QAAQ,GAChB,EAAU,GAAS,EAAS,SAE5B,EAAU,EAAQ,QAET,GAAO,EAAW,EAAS,KASpC,YAAiB,EAAS,CAC9B,MAAW,GAAI,EAAG,GA+BpB,YAAqB,EAAe,EAAc,EAAkB,CAClE,GAAM,GAAY,EAAK,MAEvB,GAAI,EAAK,OAAS,GAAK,EAAK,OAAS,EACnC,KAAM,IAAI,GACN,+BAA+B,EAAK,gCACR,KAGlC,GAAI,IAAU,EAAG,CACf,GAAI,IAAe,gBACjB,MAAI,GAAU,SAAW,EAChB,EAAK,QAAQ,CAAC,EAAG,EAAU,GAAI,EAAG,EAAG,IAErC,EAAK,QACR,CAAC,EAAG,EAAU,GAAI,EAAU,GAAI,EAAU,GAAI,EAAU,KAEzD,GAAI,IAAe,eACxB,MAAI,GAAU,SAAW,EAChB,EAAK,QAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,EAAU,KAEpC,EAAK,QAAQ,CAAC,GAAG,OAAO,YAG1B,IAAU,EAAG,CACtB,GAAI,IAAe,gBACjB,MAAI,GAAU,SAAW,EAChB,EAAK,QAAQ,CAAC,EAAG,EAAU,GAAI,EAAG,IAElC,EAAK,QAAQ,CAAC,EAAG,EAAU,GAAI,EAAU,GAAI,EAAU,KAE3D,GAAI,IAAe,eACxB,MAAI,GAAU,SAAW,EAChB,EAAK,QAAQ,CAAC,EAAG,EAAG,EAAG,EAAU,KAEjC,EAAK,QAAQ,CAAC,GAAG,OAAO,YAG1B,IAAU,EAAG,CACtB,GAAI,IAAe,gBACjB,MAAI,GAAU,SAAW,EAChB,EAAK,QAAQ,CAAC,EAAG,EAAU,GAAI,IAE/B,EAAK,QAAQ,CAAC,EAAG,EAAU,GAAI,EAAU,KAE7C,GAAI,IAAe,eACxB,MAAI,GAAU,SAAW,EAChB,EAAK,QAAQ,CAAC,EAAG,EAAG,EAAU,KAE9B,EAAK,QAAQ,CAAC,GAAG,OAAO,YAG1B,EAAQ,EACjB,MAAO,GAET,KAAM,IAAI,GAAW,sCAAsC,EAAK,QAa5D,YACF,EAAW,EAAc,EAAuB,CAClD,MAAO,GAAK,IACN,IAAc,MAChB,GAAa,MAEf,GAAgB,GAET,EAAE,IAAI,GAAY,EAAE,KAAM,EAAM,MAUrC,aAAc,EAAW,EAAQ,EAAC,CAEtC,GAAI,IAAU,EACZ,KAAM,IAAI,IACN,0CAA0C,8BAGhD,MAAW,IAAI,GAWX,aAAmB,EAAS,CAChC,MAAO,GAAK,IAAU,GAAI,EAAO,GAAI,GAAG,IAAI,KAaxC,YACF,EAAW,EAAe,EAAuB,EAAa,CAChE,MAAO,GAAK,IAAU,GAAQ,EAAG,EAAO,EAAY,IAYhD,aAAsB,EAAS,CACnC,MAAO,GAAK,IAAK,CACf,GAAM,GAAQ,GAAI,GAAQ,EAAI,GAAI,IAClC,MAAW,IAAY,EAAG,EAAG,KAiB3B,YAA0B,EAAY,EAAc,EAAW,GAAK,CACxE,MAAO,GAAW,IAAM,IC7rBnB,GAAM,KAAwB,CAAC,QAAS,SAAU,UAO5C,IACT,CAAC,SAAU,UAAW,mBCJpB,aAAuB,EAAc,CACzC,GAA0B,IAAuB,UAAW,GAGxD,aAA4B,EAAc,CAC9C,GAA0B,IAA2B,eAAgB,GASjE,GAAA,IAAA,aAAoC,IAAc,YAAY,CAC3D,6BAA2B,CAChC,MAAO,GAUT,WAAS,CACP,MAAO,KAIL,GAAA,aAAqB,GAAW,CAIpC,MAAM,EAAc,EAAgB,CAClC,MAAO,IAAM,EAAO,KAHf,GAAA,UAAY,QAMrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAoB,GAAW,CAInC,MAAM,EAAc,EAAgB,CAClC,MAAO,IAAK,EAAO,KAHd,GAAA,UAAY,OAMrB,GAAc,cAAc,IAOtB,GAAA,IAAA,aAAwB,GAAW,CAIvC,YAAY,EAAkB,CAC5B,QACA,GAAI,MAAO,IAAS,SAClB,KAAM,IAAI,GACN,oDAAoD,KAE1D,GAAI,EAAK,QAAU,OACjB,KAAM,IAAI,GAAW,sCAAsC,KAE7D,KAAK,MAAQ,EAAK,MAGpB,MAAM,EAAc,EAAgB,CAClC,MAAO,GAAK,IAAM,EAAI,GAAO,KAAK,OAAQ,GAAK,EAAO,KAGxD,WAAS,CACP,MAAO,CACL,MAAO,KAAK,SApBT,GAAA,UAAY,WAwBrB,GAAc,cAAc,IAWtB,GAAA,IAAA,aAA6B,GAAW,CAS5C,YAAY,EAAuB,CACjC,QAPO,KAAA,eAAiB,KACjB,KAAA,eAAiB,IAOxB,KAAK,OAAS,EAAK,QAAU,KAAK,eAClC,KAAK,OAAS,EAAK,QAAU,KAAK,eAClC,KAAK,KAAO,EAAK,KAGnB,MAAM,EAAc,EAAgB,CAClC,MAAO,IAAc,EAAO,KAAK,OAAQ,KAAK,OAAQ,GAGxD,WAAS,CACP,MAAO,CAAC,OAAQ,KAAK,OAAQ,OAAQ,KAAK,OAAQ,KAAM,KAAK,QAnBxD,GAAA,UAAY,gBAsBrB,GAAc,cAAc,IAWtB,GAAA,IAAA,aAA4B,GAAW,CAS3C,YAAY,EAAsB,CAChC,QAPO,KAAA,aAAe,EACf,KAAA,eAAiB,IAOxB,KAAK,KAAO,EAAK,MAAQ,KAAK,aAC9B,KAAK,OAAS,EAAK,QAAU,KAAK,eAClC,KAAK,KAAO,EAAK,KAGnB,MAAM,EAAc,EAAgB,CAElC,GADA,EAAQ,GAAS,UACb,IAAU,WAAa,IAAU,QACnC,KAAM,IAAI,IACN,uCAAuC,MAG7C,MAAS,IAAa,EAAO,KAAK,KAAM,KAAK,OAAQ,EAAO,KAAK,MAGnE,WAAS,CACP,MAAO,CAAC,KAAM,KAAK,KAAM,OAAQ,KAAK,OAAQ,KAAM,KAAK,QAzBpD,GAAA,UAAY,eA4BrB,GAAc,cAAc,IAWtB,GAAA,IAAA,aAA+B,GAAW,CAU9C,YAAY,EAAyB,CACnC,QAPO,KAAA,aAAe,EACf,KAAA,eAAiB,IAOxB,KAAK,KAAO,EAAK,MAAQ,KAAK,aAC9B,KAAK,OAAS,EAAK,QAAU,KAAK,eAClC,KAAK,KAAO,EAAK,KAGnB,MAAM,EAAc,EAAgB,CAElC,GADA,EAAQ,GAAS,UACb,IAAU,WAAa,IAAU,QACnC,KAAM,IAAI,IACN,0CAA0C,MAEhD,MAAO,IAAgB,EAAO,KAAK,KAAM,KAAK,OAAQ,EAAO,KAAK,MAGpE,WAAS,CACP,MAAO,CAAC,KAAM,KAAK,KAAM,OAAQ,KAAK,OAAQ,KAAM,KAAK,QAzBpD,GAAA,UAAY,kBA4BrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAAwB,GAAW,CAIvC,YAAY,EAAkB,CAC5B,QACA,KAAK,KAAO,EAAK,MAAQ,KAAO,EAAK,KAAO,EAG9C,MAAM,EAAc,EAAgB,CAClC,MAAO,GAAK,IAAK,CACf,GAAI,EAAM,SAAW,GAAK,EAAM,KAAO,EAAM,GAC3C,KAAM,IAAI,GACN,wEAGJ,MAAO,GAAI,KAAK,KAAM,GAAI,EAAM,OAKtC,WAAS,CACP,MAAO,CAAC,KAAM,KAAK,QApBd,GAAA,UAAY,WAuBrB,GAAc,cAAc,IAU5B,aACI,EAAc,EAAyB,eAAc,CACvD,GAAI,GACA,EAEJ,GADA,GAAgB,GACZ,EAAM,SAAW,EACnB,EAAQ,EAAM,GACd,EAAS,EAAM,WACN,CAAC,EAAG,EAAG,GAAG,QAAQ,EAAM,UAAY,IAC7C,GAAI,IAAe,gBAAiB,CAClC,GAAM,GAAqB,GAAU,EAAO,GAC5C,EAAQ,EAAM,GAAK,EACnB,EAAS,EAAM,GAAK,UACX,IAAe,eAAgB,CACxC,GAAM,GAAqB,GAAU,EAAO,EAAG,EAAM,OAAS,GAC9D,EAAQ,EAAM,EAAM,OAAS,GAAK,EAClC,EAAS,EAAM,EAAM,OAAS,GAAK,OAEhC,CACL,GAAM,GAAY,GAAU,GAC5B,EAAQ,KAAK,KAAK,GAClB,EAAS,KAAK,KAAK,GAGrB,MAAO,CAAC,EAAO,GAiBX,GAAA,IAAA,aAA+B,GAAW,CAY9C,YAAY,EAAyB,CACnC,QACA,GAAI,EAAK,MAAQ,EACf,KAAM,IAAI,GACN,wCAAwC,EAAK,SAEnD,KAAK,MAAQ,EAAK,OAAS,KAAO,EAAM,EAAK,MAC7C,KAAK,KAAO,EAAK,MAAQ,KAAO,QAAU,EAAK,KAC/C,IAAa,KAAK,MAClB,KAAK,aACD,EAAK,cAAgB,KAAO,SAAW,EAAK,aAChD,IAAkB,KAAK,cACvB,KAAK,KAAO,EAAK,KAGnB,MAAM,EAAc,EAAgB,CAClC,GAAM,GAAO,IAAY,GACnB,EAAQ,EAAK,GACb,EAAS,EAAK,GAChB,EAAQ,KAAK,MASjB,GARI,KAAK,OAAS,QAChB,GAAS,KAAK,IAAI,EAAG,GACZ,KAAK,OAAS,SACvB,GAAS,KAAK,IAAI,EAAG,GAErB,GAAS,KAAK,IAAI,EAAI,GAAQ,GAAU,GAGtC,KAAK,eAAiB,SAAU,CAClC,GAAM,GAAS,KAAK,KAAK,GAEzB,GADA,EAAQ,GAAS,UACb,IAAU,WAAa,IAAU,QACnC,KAAM,IAAI,IACN,GAAG,KAAK,yCAAyC,MAEvD,MAAO,IAAgB,EAAO,EAAG,EAAQ,EAAO,KAAK,UAChD,CACL,GAAM,GAAQ,KAAK,KAAK,EAAI,GAC5B,MAAO,IAAc,EAAO,CAAC,EAAO,EAAO,IAI/C,WAAS,CACP,MAAO,CACL,MAAO,KAAK,MACZ,KAAM,KAAK,KACX,aAAc,KAAK,aACnB,KAAM,KAAK,QAzDR,GAAA,UAAY,kBA6DrB,GAAc,cAAc,IAOtB,GAAA,IAAA,aAA6B,GAAe,CAWhD,YAAY,EAA8B,CACxC,MAAM,CACJ,MAAO,EACP,KAAM,SACN,aAAc,UACd,KAAM,GAAQ,KAAO,KAAO,EAAK,OAIrC,cAAY,CAIV,MAAO,IAAgB,YAtBlB,GAAA,UAAY,gBAyBrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAA4B,GAAe,CAW/C,YAAY,EAA8B,CACxC,MAAM,CACJ,MAAO,EACP,KAAM,SACN,aAAc,SACd,KAAM,GAAQ,KAAO,KAAO,EAAK,OAIrC,cAAY,CAIV,MAAO,IAAgB,YAtBlB,GAAA,UAAY,eAyBrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAwB,GAAe,CAI3C,YAAY,EAA8B,CACxC,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,SACd,KAAM,GAAQ,KAAO,KAAO,EAAK,OAIrC,cAAY,CAIV,MAAO,IAAgB,YAflB,GAAA,UAAY,WAkBrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAyB,GAAe,CAI5C,YAAY,EAA8B,CACxC,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,UACd,KAAM,GAAQ,KAAO,KAAO,EAAK,OAIrC,cAAY,CAIV,MAAO,IAAgB,YAflB,GAAA,UAAY,YAkBrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAA2B,GAAe,CAI9C,YAAY,EAA8B,CACxC,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,SACd,KAAM,GAAQ,KAAO,KAAO,EAAK,OAIrC,cAAY,CAIV,MAAO,IAAgB,YAflB,GAAA,UAAY,cAkBrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAA4B,GAAe,CAI/C,YAAY,EAA8B,CACxC,MAAM,CACJ,MAAO,EACP,KAAM,QACN,aAAc,UACd,KAAM,GAAQ,KAAO,KAAO,EAAK,OAIrC,cAAY,CAIV,MAAO,IAAgB,YAflB,GAAA,UAAY,cAkBrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAA0B,GAAW,CAOzC,YAAY,EAAqB,CAC/B,QAIA,GATO,KAAA,aAAe,EAMtB,KAAK,KAAO,EAAK,MAAQ,KAAO,KAAK,aAAe,EAAK,KACzD,KAAK,KAAO,EAAK,KAEb,KAAK,MAAQ,KACf,KAAM,IAAI,IACN,kEAIR,MAAM,EAAc,EAAgB,CAClC,MAAO,GAAK,IAAK,CACf,GAAI,EAAM,OAAS,EACjB,KAAM,IAAI,IAAoB,8BAE5B,EAAM,GAAK,EAAM,GAAK,KACxB,QAAQ,KACJ,2EACc,EAAM,GAAK,EAAM,sCAKrC,GAAM,GACF,EAAM,GAAK,EAAM,GAAK,CAAC,EAAM,GAAI,EAAM,IAAM,EAC3C,EAAM,GAAa,EAAiB,EAAG,EAAG,WAC5C,EAAI,GAAO,YAAY,GAC3B,MAAI,GAAM,GAAK,EAAM,IACnB,GAAI,EAAE,aAED,EAAI,KAAK,KAAM,KAI1B,WAAS,CACP,MAAO,CACL,KAAM,KAAK,KACX,KAAM,KAAK,QA3CR,GAAA,UAAY,aA+CrB,GAAc,cAAc,IAUrB,GAAM,IACyC,CAChD,SAAY,WACZ,aAAgB,eAChB,cAAiB,gBACjB,SAAY,WACZ,UAAa,YACb,SAAY,WACZ,YAAe,cACf,aAAgB,eAChB,KAAQ,OACR,WAAc,aACd,aAAgB,eAChB,cAAiB,gBACjB,gBAAmB,kBACnB,gBAAmB,kBACnB,MAAS,SAGf,YACI,EACA,EAA0C,GAAE,CAC9C,MAAO,IACH,EAAQ,GAAc,iBAAiB,SAAS,aAChD,EAAe,eAGf,YAA+B,EAAwB,CAE3D,MAAO,IAAqB,GAGxB,YAAyB,EACwB,CACrD,GAAI,MAAO,IAAe,SAAU,CAClC,GAAM,GAAY,IAAc,IAC5B,GAA2C,GAC3C,EAIJ,GAAI,IAAc,eAChB,MAAO,IAAI,IACN,GAAI,IAAc,gBACvB,MAAO,IAAI,IACN,GAAI,IAAc,WACvB,MAAO,IAAI,IACN,GAAI,IAAc,YACvB,MAAO,IAAI,IACN,GAAI,IAAc,cACvB,MAAO,IAAI,IACN,GAAI,IAAc,eACvB,MAAO,IAAI,IACN,CACL,GAAM,GAAmC,GACzC,MAAA,GAAO,UAAe,EACtB,EAAO,OAAY,GACZ,GAAuB,QAE3B,OAAI,aAAsB,IACxB,EAEA,GAAuB,GNvnB5B,aAAe,CACnB,MAAO,IAAI,IAQP,aAAc,CAClB,MAAO,IAAI,IAQP,YAAmB,EAAkB,CACzC,MAAO,IAAI,IAAS,GAYhB,YAAwB,EAAuB,CACnD,MAAO,IAAI,IAAc,GASrB,YAAuB,EAAsB,CACjD,MAAO,IAAI,IAAa,GAapB,YAA0B,EAAyB,CACvD,MAAO,IAAI,IAAgB,GASvB,YAAmB,EAAkB,CACzC,MAAO,IAAI,IAAS,GAgBhB,YAA0B,EAA2B,CACzD,MAAO,IAAI,IAAgB,GAgBvB,YAAwB,EAA6B,CACzD,MAAO,IAAI,IAAc,GAgBrB,YAAuB,EAA6B,CACxD,MAAO,IAAI,IAAa,GAepB,YAAmB,EAA6B,CACpD,MAAO,IAAI,IAAS,GAehB,YAAoB,EAA6B,CACrD,MAAO,IAAI,IAAU,GAgBjB,YAAsB,EAA6B,CACvD,MAAO,IAAI,IAAY,GAYnB,YAAuB,EAA6B,CACxD,MAAO,IAAI,IAAa,GAWpB,YAAqB,EAAoB,CAC7C,MAAO,IAAI,IAAW,GOhNxB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,MAAA,IAAA,GAAA,IAAA,IAAA,GAAA,QAAA,IAAA,GAAA,WAAA,IAAA,IAAA,IAAA,IAAA,IAAA,aAAA,IAAA,IAAA,QAAA,IAAA,IAAA,iBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,UAAA,IAAA,IAAA,UAAA,IAAA,IAAA,UAAA,IAAA,IAAA,aAAA,IAAA,IAAA,aAAA,IAAA,IAAA,aAAA,IAAA,IAAA,mBAAA,IAAA,IAAA,cAAA,IAAA,IAAA,YAAA,IAAA,IAAA,OAAA,IAAA,IAAA,OAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,OAAA,IAAA,IAAA,WAAA,IAAA,IAAA,eAAA,IAAA,IAAA,WAAA,IAAA,IAAA,MAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,IAAA,IAAA,IAAA,QAAA,IAAA,IAAA,IAAA,IAAA,IAAA,UAAA,IAAA,IAAA,QAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,cAAA,IAAA,IAAA,uBAAA,IAAA,IAAA,uBAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,mBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,IAAA,IAAA,IAAA,QAAA,IAAA,IAAA,MAAA,IAAA,GAAA,WAAA,IAAA,IAAA,mBAAA,IAAA,IAAA,UAAA,IAAA,IAAA,KAAA,IAAA,IAAA,SAAA,IAAA,IAAA,QAAA,IAAA,IAAA,UAAA,IAAA,IAAA,UAAA,IAAA,IAAA,aAAA,IAAA,GAAA,aAAA,IAAA,GAAA,aAAA,IAAA,IAAA,QAAA,IAAA,IAAA,QAAA,IAAA,IAAA,SAAA,IAAA,IAAA,QAAA,IAAA,IAAA,MAAA,IAAA,IAAA,KAAA,IAAA,IAAA,aAAA,IAAA,IAAA,QAAA,IAAA,IAAA,IAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,UAAA,IAAA,IAAA,cAAA,IAAA,IAAA,QAAA,IAAA,IAAA,iBAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,aAAA,IAAA,IAAA,cAAA,IAAA,MCmBA,GAAI,KAAsB,EAEpB,aAA+B,CACnC,MAAO,OAGT,GAAM,IAA2C,GAO3C,YAAiB,EAAS,GAAE,CAChC,MAAM,KAAU,KACd,IAAa,GAAU,GAEzB,GAAa,IAAW,EACjB,EAAS,GAAa,GAAQ,WCjBjC,YAA0B,EAAgB,CAC9C,MAAO,OAAM,QAAQ,IAAM,MAAM,QAAQ,EAAE,IASvC,YAA6B,EAAgB,CACjD,MAAI,GAAE,SAAW,EACR,GAEJ,MAAM,QAAQ,EAAE,IAGd,EAFE,CAAC,GAWN,YAA8B,EAAmB,CACrD,GAAI,GACJ,GAAI,MAAM,QAAQ,GAAK,CACrB,GAAI,EAAG,SAAW,EAChB,KAAM,IAAI,GAAW,uCAAuC,EAAG,UAEjE,EAAI,EAAG,OAEP,GAAI,EAEN,MAAO,GAaH,YAA6B,EAAqB,CACtD,GAAI,MAAM,QAAQ,IAAW,MAAM,QAAQ,EAAO,IAAK,CACrD,GAAI,EAAO,SAAW,EACpB,MAAA,GAAS,EACF,EAAO,GAEd,KAAM,IAAI,GAAW,iCAAiC,EAAO,cAG/D,OAAO,GC3DL,YAA+B,EAAwB,CAC3D,GAAI,GAAQ,EACZ,OAAW,KAAU,GACf,EAAO,MAAM,SAAW,EAC1B,GAAS,EAET,GAAS,EAAO,MAAM,OAAO,CAAC,EAAG,IAAM,EAAI,GAG/C,MAAO,GCRT,GAAM,IAA+B,WAQ/B,GAAA,KAAoB,CA6BxB,YACI,EAAa,EAAkB,UAC/B,EAAO,GAA8B,EAAY,GACjD,EAAyB,KAAI,CAC/B,KAAK,MAAQ,GAAS,KAAO,UAAY,EACzC,KAAK,MAAQ,EAAI,MACjB,KAAK,GAAK,KAEV,EAAO,GAAQ,KAAO,GAA+B,EACrD,KAAK,aAAe,GAAoB,GACxC,KAAK,KAAO,GAAoB,KAAK,cAErC,KAAK,WAAa,EAClB,KAAK,WAAa,EAElB,KAAK,IAAU,GAAS,EAAK,KAAK,WAAY,KAAK,KAAM,KAAK,OAUhE,MAAI,CACF,MAAA,MAAK,oBACE,KAAK,IAUd,MAAM,EAAc,CAElB,MAAA,MAAK,oBACL,IAAiB,KAAK,IAAK,GAEvB,KAAK,IAAI,KAAO,EAAO,IACzB,MAAK,IAAI,OAAO,GACZ,KAAK,YAAc,MACrB,KAAK,IAAI,OAAO,KAAK,WAAW,MAAM,KAAK,OAGxC,KAMT,SAAO,CACL,KAAK,oBACL,KAAK,IAAI,UAGD,mBAAiB,CACzB,GAAI,KAAK,IAAI,WACX,KAAM,IAAI,OAAM,kBAAkB,KAAK,gCAIvC,YAAS,CACX,MAAO,MAAK,cAGV,WAAU,EAAkB,CAC9B,KAAK,WAAa,EAClB,KAAK,IAAI,UAAY,IAIzB,aAA0B,EAAa,EAAW,CAChD,GAAI,EAAE,MAAM,aAAe,EAAE,MAAM,WACjC,KAAM,IAAI,OACN,mBAAqB,KAAK,UAAU,EAAE,OAAS,QAC/C,KAAK,UAAU,EAAE,QA0LnB,YAAwB,EAAmB,CAC/C,MAAO,GAAG,IAAI,GAAK,EAAE,QAWjB,YACF,EAAkD,CACpD,EAAmB,QAAQ,GAAmB,CACZ,EAAiB,GACxC,MAAM,EAAiB,MCzR9B,GAAA,IAAA,KAAgB,CAcpB,YAAY,EAAmB,CAC7B,KAAK,MAAQ,EAAK,MAClB,KAAK,MAAQ,EAAK,MAKd,EAAK,OAAS,KAChB,KAAK,KAAO,EAAK,MAAM,OAEvB,KAAK,KAAO,EAAK,KAEnB,KAAK,QAAU,EAAK,QACpB,KAAK,QAAU,EAAK,QACpB,KAAK,KAAO,EAAK,MAAQ,KAYvB,GAAA,KAAqB,CAmCzB,YACa,EAA0B,EAC5B,EAA6B,EAC3B,EAAkB,EAClB,EAA0B,CAH1B,KAAA,MAAA,EAA0B,KAAA,MAAA,EAC5B,KAAA,YAAA,EAA6B,KAAA,OAAA,EAC3B,KAAA,SAAA,EACA,KAAA,kBAAA,EACX,KAAK,GAAK,KACN,GAAQ,MACV,MAAK,aAAe,GAAoB,GACxC,KAAK,KAAO,GAAoB,KAAK,eAEvC,KAAK,KAAO,EAAM,SA6DlB,IAAc,EAsBZ,GAAA,KAAW,CAwCf,YACI,EAEO,EAAiB,CAAjB,KAAA,SAAA,EACT,KAAK,GAAK,MAQV,KAAK,cAAgB,EAAK,cAU1B,KAAK,cAAgB,EAAK,cAE1B,KAAK,YAAc,EAAK,YAExB,KAAK,cAAgB,EAAK,cAQ1B,KAAK,aAAe,EAAK,aAEzB,KAAK,cAAgB,EAAK,cAM1B,KAAK,WAAa,EAAK,WAEvB,KAAK,YAAc,EAAK,YAKxB,KAAK,YAAc,EAAK,YAExB,KAAK,aAAe,EAAK,aAGzB,OAAW,KAAS,GAAK,cACnB,GAAS,MACX,EAAM,cAAc,KAAK,MAG7B,EAAK,cAAc,aAAa,KAAK,MAGvC,WAAS,CACP,GAAM,GAAyB,GAC/B,OAAW,KAAS,MAAK,cACnB,GAAS,KACX,EAAa,KAAK,EAAM,MAExB,EAAa,KAAK,MAGtB,MAAO,CACL,cAAe,KAAK,cAAgB,KAAK,cAAc,KAAO,KAC9D,cAAe,EACf,YAAa,KAAK,YAClB,cAAe,KAAK,iBAqDtB,IAAe,EAWb,GAAA,aAA8B,IAAc,YAAY,CAmD5D,YAAY,EAAkB,GAAE,CAC9B,QAtBM,KAAA,UAAsB,KAEtB,KAAA,kBAA8B,GAQ5B,KAAA,UAAY,GAapB,KAAK,GAAK,MAEV,KAAK,oBAAsB,KAE3B,KAAK,UAAY,KACjB,KAAK,gBAAkB,GAGvB,KAAK,kBAAoB,GACzB,KAAK,qBAAuB,GAC5B,KAAK,QAAU,GACf,KAAK,SAAW,GAChB,KAAK,OAAS,GAMd,KAAK,aAAe,GACpB,KAAK,cAAgB,GAErB,GAAI,GAAO,EAAK,KAChB,GAAI,CAAC,EAAM,CACT,GAAM,GAAS,KAAK,eACpB,EAAqB,GAAY,GAAU,IAAM,GAAO,GAM1D,GAJA,KAAK,KAAO,EAEZ,KAAK,WAAa,EAAK,WAAa,KAAO,GAAO,EAAK,UAEnD,EAAK,YAAc,MAAQ,EAAK,iBAAmB,KAAM,CAK3D,GAAI,GACJ,GAAI,EAAK,iBAAmB,KAC1B,EAAkB,EAAK,wBACd,EAAK,YAAc,KAAM,CAClC,GAAI,GAAoB,KACpB,EAAK,WAAa,MACpB,GAAY,EAAK,WAEnB,EAAkB,CAAC,GAAW,OAAO,EAAK,YAE5C,KAAK,gBAAkB,EAGvB,GAAI,GAAQ,EAAK,MACb,GAAS,MACX,GAAQ,EAAK,YAEX,GAAS,MACX,GAAQ,WAEV,KAAK,MAAQ,EAGX,EAAK,SAAW,KAClB,KAAK,eAAiB,EAAK,QAE3B,KAAK,eAAiB,KAKxB,KAAK,UAAY,KAEjB,KAAK,0BAA4B,SAYlB,SAAQ,EAAc,EAAiB,CACtD,MAAO,GAAM,KAAO,OAAS,EAAU,WAUjC,eAAe,EAAmB,EAAgB,CACxD,GAAI,KAAK,aAAa,SAAW,EAC/B,KAAM,IAAI,IACN,2DAC2B,MAEjC,GAAI,KAAK,aAAa,QAAU,EAC9B,KAAM,IAAI,GACN,gBAAgB,aAAoB,6BACV,KAAK,aAAa,yBAElD,MAAO,MAAK,aAAa,GAY3B,WAAW,EAAiB,CAC1B,MAAqB,IACjB,KAAK,eAAe,EAAW,SAAS,cAY9C,YAAY,EAAiB,CAC3B,MAAqB,IACjB,KAAK,eAAe,EAAW,UAAU,kBAgB3C,QAAK,CACP,GAAI,KAAK,aAAa,OAAS,EAC7B,KAAM,IAAI,IACN,SAAS,KAAK,6HAKb,GAAI,KAAK,aAAa,SAAW,EACtC,KAAM,IAAI,IACN,SAAS,KAAK,8CAGpB,MAAqB,IACjB,KAAK,eAAe,EAAG,SAAS,iBAclC,SAAM,CACR,GAAI,KAAK,aAAa,SAAW,EAC/B,KAAM,IAAI,IACN,SAAS,KAAK,8BAGpB,GAAI,KAAK,aAAa,OAAS,EAC7B,KAAM,IAAI,IACN,SAAS,KAAK,+HAMpB,MAAqB,IACjB,KAAK,eAAe,EAAG,UAAU,kBAGnC,SAAM,CACR,MAAO,MAAK,QAQd,iBAAe,CAKb,MAAO,MAAK,OAAO,IAAI,GAAU,QAG/B,UAAO,CACT,MAAO,MAAK,YAGV,QAAK,CACP,MAAO,MAAK,UAGV,OAAM,EAAc,CACtB,KAAK,OAAS,KAGZ,YAAS,CACX,MAAO,MAAK,cAGV,WAAU,EAAkB,CAC9B,KAAK,kBAAkB,QAAQ,GAAK,EAAE,UAAY,GAClD,KAAK,WAAa,KAGhB,mBAAgB,CAClB,MAAI,MAAK,WACA,KAAK,kBAAkB,OAAO,GAAK,EAAE,WAErC,MAIP,kBAAiB,EAAwB,CAC3C,KAAK,kBAAoB,KAGvB,sBAAmB,CACrB,MAAI,MAAK,UACA,KAAK,kBAAkB,OAAO,GAAK,CAAC,EAAE,WACxC,OAAO,KAAK,sBAEV,KAAK,kBAAkB,OAAO,KAAK,yBAI1C,qBAAoB,EAAwB,CAC9C,KAAK,qBAAuB,KAO1B,UAAO,CACT,MAAO,MAAK,iBAAiB,OAAO,KAAK,wBAGvC,WAAQ,CACV,MAAO,MAAK,UAUd,aAAW,CACT,GAAI,CAAC,KAAK,SACR,KAAM,IAAI,OACN,wEAiBE,yBAAyB,EACgB,CAEjD,GADA,EAAuB,GAAO,GAC1B,KAAK,WAAa,MAAQ,KAAK,UAAU,SAAW,EACtD,OAEF,GAAM,GAA0B,GAAO,KAAK,WAC5C,GAAI,EAAO,SAAW,EAAU,OAC9B,KAAM,IAAI,GACN,SAAS,KAAK,gBAAgB,EAAU,kCACrB,EAAO,yCACP,KAEzB,OAAS,GAAa,EAAG,EAAa,EAAO,OAAQ,IAAc,CACjE,GAAM,GAAI,EAAO,GACX,EAAkB,EAAU,GAClC,GAAI,GAAQ,KACV,SAIF,GAAM,GAAO,EAAE,KACf,GAAI,EAAK,MAAQ,MACX,IAAS,EAAK,KAChB,KAAM,IAAI,GACN,SAAS,gCAAyC,KAAK,uBACtC,EAAK,oBAAoB,KAGlD,GAAI,EAAK,SAAW,MACd,EAAO,EAAK,QACd,KAAM,IAAI,GACN,SAAS,gCAAyC,KAAK,2BAChC,EAAK,uBAAuB,KAG3D,GAAI,EAAK,SAAW,MACd,EAAO,EAAK,QACd,KAAM,IAAI,GACN,SAAS,gCAAyC,KAAK,2BAChC,EAAK,uBAAuB,MAK3D,GAAI,EAAK,OAAS,MACZ,EAAE,QAAU,EAAK,MACnB,KAAM,IAAI,GACN,SAAS,gCAAyC,KAAK,yBACnC,EAAK,sBAAsB,EAAE,UAKzD,GAAI,EAAK,KAAM,CACb,GAAM,GAAS,EAAE,MACjB,OAAW,KAAO,GAAK,KAAM,CAC3B,GAAM,GAAO,OAAO,GACd,EAAQ,EAAK,KAAK,GAIlB,EACF,GAAQ,EAAI,EAAO,GAAQ,EAAO,EAAO,OAAS,GACtD,GAAI,GAAS,MAAQ,CAAC,EAAO,MAAM,QAAQ,KAAkB,GAC3D,KAAM,IAAI,GACN,SAAS,gCACN,KAAK,uBAAuB,kCACjB,mBAAuB,OAM/C,GAAI,EAAK,OAAS,KAChB,OAAS,GAAI,EAAG,EAAI,EAAK,MAAM,OAAQ,EAAE,EAAG,CAC1C,GAAM,GAAU,EAAK,MAAM,GACrB,EAAM,EAAE,MAAM,GACpB,GAAI,GAAW,MAAQ,GAAO,MACxB,IAAY,EACd,KAAM,IAAI,GACN,SAAS,gCACN,KAAK,wBAAwB,EAAK,sBACtB,EAAE,YAgBjC,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAGC,eAAe,EAAyB,EAAc,CAC1D,KAAK,WAAa,MACpB,KAAK,UAAU,EAAQ,GAS3B,YAAY,EAAkB,CAC5B,KAAK,UAAY,EAOnB,eAAa,CACX,KAAK,UAAY,KAwEnB,MACI,EACA,EAAe,CACjB,EAAS,GAAU,GAEnB,KAAK,oBAGL,GAAM,GAA2B,GAAO,GAEpC,EAAiB,GACrB,OAAW,KAAS,GAClB,GAAI,CAAE,aAAiB,KAAiB,CACtC,EAAiB,GACjB,MAGJ,GAAI,GAAkB,GACtB,OAAW,KAAS,GAClB,GAAI,YAAiB,IAAgB,CACnC,EAAkB,GAClB,MAIJ,GAAI,IAAmB,EACrB,KAAM,IAAI,GACN,mEAKN,MAAO,IAAU,KAAK,KAAM,IAAK,CAE/B,GAAI,CAAC,KAAK,MAAO,CAKf,KAAK,yBAAyB,GAG9B,GAAM,GAAuB,GAC7B,OAAW,KAAuB,IAAO,GACvC,EAAY,KAAK,EAAM,OAEzB,KAAK,MAAoB,GAAiB,IAC1C,KAAK,MAAQ,GAGT,KAAK,gBACP,KAAK,WAAW,KAAK,gBAGnB,KAAK,YAAc,MAAQ,GAI7B,MAAK,UAAY,GAcrB,GANA,KAAK,yBAAyB,GAM1B,EAAiB,CACnB,GAAI,GAAS,KAAK,KAAK,EAA6B,GAK9C,EAAqC,GAAO,GAC5C,EAA2B,GAGjC,OAAS,KAAK,GACR,EAAW,QAAQ,KAAO,IAC5B,GAAI,EAAE,SAER,EAAe,KAAK,GAItB,GAFA,EAAuB,GAAiB,GAEpC,KAAK,qBAAuB,KAC9B,KAAM,IAAI,IACN,qFAKN,MAAO,OACF,CACL,GAAM,GAAa,IAAkB,GAC/B,EAAc,KAAK,mBAAmB,GACxC,EACE,EAAc,IAAiB,GAgCrC,GA/BA,KAAK,6BACD,MAAM,QAAQ,GAAU,EAAW,GACX,GAExB,GAAe,MAAQ,EAAY,OAAS,GAC5C,MAAM,QAAQ,EAAY,IAE5B,EAAU,EACI,IACG,CAAC,EAAO,IAAU,GAAI,IAClB,EAAa,EAAO,KACN,GAAO,GAAS,EAAQ,KAAK,KAC3C,IAErB,EAAS,GAAI,IACT,EAAa,EAAsB,KACrB,GAAO,GAAS,EAAQ,KAAK,MAUjD,KAAK,eACD,EAA6C,EAAQ,KAAM,KAC3D,EAAY,EAAa,GAC7B,KAAK,YAED,KAAK,qBAAuB,KAC9B,KAAM,IAAI,IACN,qFAIN,MAAO,MAYH,6BAA6B,EAAiB,CACtD,GAAI,KAAK,iBAAmB,KAErB,GAAI,EAAW,SAAW,KAAK,gBAAgB,OACpD,QAAQ,KACJ,iDACG,KAAK,UAAU,mDACE,KAAK,UAAU,KAAK,kCACxB,KAAK,YACpB,CACL,GAAI,GAAc,GAClB,KAAK,gBAAgB,QAAQ,CAAC,EAAW,IAAK,CACxC,GAAa,MAAQ,EAAW,IAAM,MACtC,EAAW,KAAO,GACpB,GAAc,MAGd,GACF,QAAQ,KACJ,kCACI,KAAK,UAAU,+CACe,KAAK,SACpC,KAAK,UAAU,KAAK,wBAiB7B,cAAW,CACb,GAAI,KAAK,cAAgB,MAAQ,KAAK,aAAa,SAAW,EAC5D,KAAM,IAAI,IACN,aAAa,KAAK,oEAGxB,GAAM,GAA4B,GAClC,OAAW,KAAQ,MAAK,aAAc,CACpC,GAAM,GAAc,KAAK,UAAU,EAAK,cACpC,EAAgB,QAAQ,KAAiB,IAC3C,EAAgB,KAAK,GAGzB,GAAI,EAAgB,SAAW,EAAG,CAChC,GAAM,GAAe,KAAK,aAAa,GAAG,aAC1C,MAAI,OAAM,QAAQ,IAAiB,MAAM,QAAQ,EAAa,KAC1D,EAAa,SAAW,EAClB,EAAyB,GAE1B,MAIT,MAAM,IAAI,IACN,aAAa,KAAK,kIAiB1B,aAAW,CACT,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,IACN,sCAAsC,KAAK,2FAIjD,MAAsB,IAAqB,KAAK,SAclD,MAAM,EAAyB,CAC7B,KAAK,MAAQ,GAWf,WAAW,EAAgB,GAAK,CAC9B,MAAO,IAAc,EAAgB,KAAK,iBAAmB,KAAK,SAepE,WAAW,EAAiB,CAC1B,EAAK,IAAK,CACR,GAAM,GAAS,KAAK,QACpB,GAAI,EAAO,SAAW,EAAQ,OAK5B,KAAM,IAAI,GACN,4CAA4C,KAAK,sCACjB,EAAQ,uCACT,EAAO,qCACjB,QAE3B,GAAI,EAAO,SAAW,EACpB,OAEF,GAAM,GAAoD,GACpD,EAAc,GAAc,GAClC,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EAAG,CAC3C,GAAM,GAAK,EAAY,GACjB,EAAI,EAAO,GACX,EAAI,EAAQ,GAClB,GAAI,CAAC,EAAK,YAAY,EAAG,MAAO,EAAE,OAChC,KAAM,IAAI,GACN,sBAAsB,EAAG,mDACoB,EAAE,SAErD,EAAkB,KAAK,CAAC,EAAG,IAE7B,GAAc,KAmBR,UACN,EAAc,EAAc,EAAkB,EAC9C,EAA2B,EAC3B,EAAuB,CAEzB,GAAI,KAAK,kBAAkB,QAAQ,KAAU,GAC3C,KAAM,IAAI,GACN,yBAAyB,eAAkB,KAAK,QAEtD,KAAK,kBAAkB,KAAK,GAExB,GAAS,MACX,GAAQ,WAGN,KAAK,2BACP,GAAc,GAAe,UAE/B,GAAM,GAAY,EAAY,MAAM,EAAO,GACrC,EACF,GAAI,IAAc,EAAW,EAAO,EAAM,EAAW,GACzD,MAAA,GAAU,UAEN,GAAe,MACjB,KAAK,QAAQ,IAAM,EAAY,MAAM,EAAO,SAE1C,GAAa,MACf,GAAY,IAEV,EACF,KAAK,kBAAkB,KAAK,GAE5B,KAAK,qBAAqB,KAAK,GAE1B,EAaT,6BAA6B,EAAc,CACzC,KAAK,0BAA4B,EAWnC,QAAQ,EAAqC,CACvC,GAAU,MAAQ,MAAM,QAAQ,IAAW,EAAO,SAAW,GAIjE,GAAuB,GAAO,GAC1B,KAAK,UAAY,QAAa,KAAK,UAAY,MACjD,KAAK,OAAO,KAAK,GAAG,IAexB,mBAAmB,EAAyB,CAC1C,MAAO,GAYT,YAAY,EAAyB,EAAsB,CAEzD,GAAI,CAAC,KAAK,gBAAiB,CACzB,GAAI,GAAQ,KACV,GAAI,MAAM,QAAQ,GAChB,EAAK,QAAQ,GAAc,CACzB,GAAI,GAAe,KACjB,KAAM,IAAI,WACN,SAAS,KAAK,qEAKtB,MAAM,IAAI,WACN,SAAS,KAAK,+DAKtB,MAAO,MAIT,MAAO,GAeD,eACJ,EACA,EACA,EAA6B,EAC7B,EAA4B,EAC5B,EAAa,KAAI,CACnB,GAAM,GACY,GAAO,GACzB,EAA8B,GAAO,GACrC,EAA2B,GAAO,GAClC,EAA4B,GAAO,GACnC,EAA0B,GAAmB,GAC7C,EAA2B,GAAmB,GAG9C,GAAM,GAAyB,GACzB,EAAwB,GACxB,EAA0B,GAChC,OAAW,KAAK,GAKd,EAAc,KAAK,EAAE,aACrB,EAAY,KAAK,EAAE,WACnB,EAAc,KAAK,EAAE,aAMvB,GAAI,IACA,CACE,cAAe,KACf,cAAA,EACA,YAAA,EACA,cAAA,EACA,aAAc,EACd,cAAA,EACA,WAAA,EACA,YAAA,EACA,YAAA,EACA,aAAA,GAEF,GAGJ,OAAS,GAAI,EAAG,EAAI,EAAc,OAAQ,IAExC,EAAc,GAAG,YAAc,KAC/B,EAAc,GAAG,UAAY,KAAK,aAAa,OAAS,EACxD,EAAc,GAAG,YAAc,EAyBnC,WAAS,CACP,GAAM,GACyB,CAAC,KAAM,KAAK,KAAM,UAAW,KAAK,WACjE,MAAI,MAAK,iBAAmB,MAC1B,GAAO,gBAAqB,KAAK,iBAE/B,KAAK,OAAS,MAChB,GAAO,MAAW,KAAK,OAElB,EAQC,gBAAc,CACtB,MAAA,MAAK,QAAQ,QAAQ,GAAU,EAAO,WAC/B,KAAK,QAAQ,OAGZ,mBAAiB,CACzB,GAAI,KAAK,YAAc,EACrB,KAAM,IAAI,OAAM,UAAU,KAAK,8BAkCnC,SAAO,CACL,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,OACN,wBAAwB,KAAK,2CAInC,GAAI,KAAK,YAAc,KACrB,KAAM,IAAI,OACN,wBAAwB,KAAK,0CAInC,KAAK,oBAEL,GAAI,GAAuB,EAC3B,MAAI,EAAE,KAAK,WAAc,GACvB,GAAuB,KAAK,kBAGvB,CAAC,qBAAsB,KAAK,UAAW,qBAAA,KAclD,aAA2B,EACQ,CACjC,EACkB,GAAO,GACzB,GAAM,GAAkB,GACxB,OAAW,KAAK,GACd,EAAO,KAAK,EAAE,OAEhB,MAAqB,IAAiB,GAYxC,aAA0B,EACQ,CAChC,MAAO,UAcH,YACF,EAAwB,EACxB,EAAkB,CAKpB,GAJI,IAAS,MAAS,GAAa,MAAQ,EAAY,IACrD,GAAQ,EAAO,YACf,EAAY,EAAO,WAEjB,EAAM,aAAa,SAAW,EAChC,MAAO,CAAC,GACH,CACL,GAAM,GAAO,EAAM,aAAa,GAChC,GAAI,EAAK,cAAc,SAAW,EAChC,MAAO,GAAK,aACP,CACL,GAAM,GAAkC,GACxC,OAAS,GAAI,EAAG,EAAI,EAAK,cAAc,OAAQ,IAAK,CAClD,GAAM,GAAI,EAAK,aAAa,GACtB,EAAQ,EAAK,cAAc,GAC3B,EAAY,EAAK,YAAY,GAC7B,EAAkB,GAAgB,EAAG,EAAO,GAElD,OAAW,KAAK,GACV,EAAc,QAAQ,KAAO,IAC/B,EAAc,KAAK,GAIzB,MAAO,KC3jDP,GAAA,IAAA,aAA0B,GAAK,CAInC,YAAY,EAAoB,CAC9B,MAAM,CACJ,MAAO,EAAK,MACZ,KAAM,EAAK,MAAQ,KAAO,EAAK,KAAO,GAAO,SAAS,aAcxD,GAXI,EAAK,WAAa,MACpB,GAAK,UAAY,MAEf,EAAK,QAAU,MACjB,GAAK,OAAS,IAGhB,KAAK,UAAY,GACjB,KAAK,MAAQ,GACb,KAAK,OAAS,EAAK,OAEf,EAAK,YAAc,MAAQ,EAAK,iBAAmB,KACrD,KAAM,IAAI,GACN,qGAGN,GAAI,GAAkB,EAAK,gBAC3B,GAAI,GAAmB,KAAM,CAC3B,GAAI,EAAK,YAAc,KACrB,KAAM,IAAI,GACN,iFAGJ,EAAkB,CAAC,EAAK,WAAW,OAAO,EAAK,oBAI7C,EAAK,WAAa,KACpB,KAAM,IAAI,GACN,yFAKR,GAAM,GAAQ,EAAK,OAAS,UAE5B,KAAK,gBAAkB,EACvB,KAAK,MAAQ,EAEb,KAAK,UAAY,CAAC,CAAC,MAAO,IAE1B,GAAM,GAAc,GAAI,IACpB,KAAK,MAAO,KAAK,gBAAiB,KAAM,GAAI,GAAI,KAAK,MACzD,EAAY,UAAY,EACxB,EAAY,YAAc,EAK1B,GAAI,IAAK,CACP,cAAe,KACf,cAAe,GACf,YAAa,GACb,cAAe,GACf,aAAc,CAAC,GACf,cAAe,CAAC,GAChB,WAAY,CAAC,MACb,YAAa,CAAC,MACd,YAAa,CAAC,GACd,aAAc,CAAC,KAInB,MACI,EACA,EAAe,CACjB,KAAM,IAAI,GACN,6EACiD,KAAK,QAG5D,SAAO,CAEL,MAAO,CAAC,qBAAsB,KAAK,UAAW,qBAAsB,GAGtE,WAAS,CACP,MAAO,CACL,gBAAiB,KAAK,gBACtB,MAAO,KAAK,MACZ,OAAQ,KAAK,OACb,KAAM,KAAK,QAzFC,GAAA,UAAY,aA6F9B,GAAc,cAAc,IAmCtB,YAAgB,EAAmB,CACvC,GAAI,EAAO,YAAc,MAAQ,EAAO,OAAS,KAC/C,KAAM,IAAI,OACN,gIAKN,GAAI,EAAO,YAAc,MAAQ,EAAO,OAAS,KAE/C,KAAM,IAAI,GACN,oFAGN,GAAI,GAAa,EAAO,WACpB,EAAO,OAAS,MAAQ,GAAc,MACxC,GAAa,CAAC,MAAM,OAAO,EAAO,QAGpC,GAAI,GAAQ,EAAO,MACnB,MAAI,IAAS,MACX,GAAQ,WAGS,GAAI,IAAW,CAChC,gBAAiB,EACjB,KAAM,EAAO,KACb,MAAA,EACA,OAAQ,EAAO,SAGU,aAAa,GAAG,cAC5B,GCpLjB,kBAA2C,EAAoB,CAC7D,GAAI,GAAQ,KACV,OAEF,GAAM,GAA+D,GAC/D,EAAiB,GACjB,EAA6B,GACnC,OAAW,KAAO,GAAM,CACtB,GAAM,GAAQ,EAAK,GACnB,GAAI,MAAO,IAAU,SAAU,CAC7B,GAAM,GAAc,EACpB,EAAS,KAAK,EAAY,QAC1B,EAAK,KAAK,GACV,EAAiB,KAAK,IAG1B,GAAI,EAAS,OAAS,EAAG,CACvB,GAAM,GAAS,KAAM,SAAQ,IAAI,GACjC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAK,EAAK,IAAM,EAAO,GAAG,GAG5B,GAAQ,IAUN,YAA+B,EAAoB,CACvD,GAAI,GAAQ,KAGZ,OAAW,KAAO,GAAM,CACtB,GAAM,GAAQ,EAAK,GACf,MAAO,IAAU,UACnB,EAAM,WC7CZ,GAAY,IAAZ,AAAA,UAAY,EAAqB,CAC/B,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,QAAA,GAAA,YAFU,IAAA,IAAqB,KAM1B,GAAM,KAAyB,IA0BhC,GAAA,KAA4B,CAAlC,aAAA,CAEE,KAAA,eAAkC,KAMlC,UAAU,EAAc,CACtB,KAAK,OAAS,OAGV,cAAa,EAAe,EAAqB,OAEjD,YAAW,EAAe,EAAqB,OAE/C,cAAa,EAAe,EAAqB,OAEjD,YAAW,EAAe,EAAqB,OAE/C,cAAa,EAAqB,OAElC,YAAW,EAAqB,EAStC,SAAS,EAAgB,IAQrB,GAAA,KAAmB,CAgBvB,YAAY,EAA4B,EAAc,GAAE,CAGlD,GAAa,MACf,GAAY,IAEd,KAAK,UAAY,EACjB,KAAK,YAAc,EAGrB,OAAO,EAAsB,CAC3B,KAAK,UAAU,KAAK,GAGtB,UAAU,EAAc,CACtB,OAAW,KAAY,MAAK,UAC1B,EAAS,UAAU,GAIvB,SAAS,EAAgB,CACvB,OAAW,KAAY,MAAK,UAC1B,EAAS,SAAS,QAShB,cAAa,EAAe,EAAqB,CACjD,GAAQ,MACV,GAAO,IAET,OAAW,KAAY,MAAK,UAC1B,KAAM,GAAS,aAAa,EAAO,QASjC,YAAW,EAAe,EAAqB,CAC/C,GAAQ,MACV,GAAO,IAET,OAAW,KAAY,MAAK,UAC1B,KAAM,GAAS,WAAW,EAAO,QAS/B,cAAa,EAAe,EAAqB,CACjD,GAAQ,MACV,GAAO,IAET,OAAW,KAAY,MAAK,UAC1B,KAAM,GAAS,aAAa,EAAO,QASjC,YAAW,EAAe,EAAqB,CAC/C,GAAQ,MACV,GAAO,IAET,OAAW,KAAY,MAAK,UAC1B,KAAM,GAAS,WAAW,EAAO,QAQ/B,cAAa,EAAqB,CAClC,GAAQ,MACV,GAAO,IAET,OAAW,KAAY,MAAK,UAC1B,KAAM,GAAS,aAAa,QAQ1B,YAAW,EAAqB,CAChC,GAAQ,MACV,GAAO,IAET,OAAW,KAAY,MAAK,UAC1B,KAAM,GAAS,WAAW,KAU1B,IAAA,aAA0B,GAAY,CAI1C,aAAA,CACE,aAGI,cAAa,EAAa,CAC9B,KAAK,KAAO,EACZ,KAAK,OAAS,QAGV,YAAW,EAAe,EAAqB,CAC/C,GAAQ,MACV,GAAO,IAET,GAAM,GAAY,EAAK,MAAW,KAAO,EAAI,EAAK,KAClD,KAAK,MAAQ,EACb,OAAW,KAAO,GAAM,CACtB,GAAM,GAAQ,EAAK,GACnB,GAAI,MAAO,IAAU,SACd,KAAK,OAAO,eAAe,IAC9B,MAAK,OAAO,GAAO,GAErB,KAAK,OAAO,GAAO,KAAK,OAAO,GAAiB,EAAQ,MACnD,CACL,GAAI,GACA,IAAO,MAAK,OACd,EAAqB,KAAK,OAAO,GAEjC,KAAK,OAAO,GAAO,EAErB,GAAM,GACF,EAAK,IAAM,GAAK,KAAK,OAAO,GAAO,EAAI,EAAO,KAClD,KAAK,OAAO,GAAO,EACf,GAAsB,MACxB,EAAmB,iBAMrB,YAAW,EAAe,EAAqB,CACnD,GAAI,GAAQ,KACV,OAAW,KAAO,MAAK,OAAO,QACxB,KAAK,OAAO,IAAQ,MAGpB,OAAO,MAAK,OAAO,IAAS,SAC9B,EAAK,GAAO,KAAK,OAAO,GAAiB,KAAK,KAE9C,EAAK,IAAK,CACR,GAAM,GAAc,EAAI,GAAI,EAAG,KAAK,MAAO,KAAK,OAAO,IACvD,EAAK,GAAO,EACX,KAAK,OAAO,GAAgB,UAC7B,GAAK,EAAK,SAahB,GAAA,aAAuB,GAAY,MAIjC,cAAa,EAAqB,CACtC,KAAK,MAAQ,GACb,KAAK,QAAU,QAGX,YAAW,EAAe,EAAqB,CAC/C,GAAQ,MACV,GAAO,IAET,KAAK,MAAM,KAAK,GAChB,OAAW,KAAO,GACZ,KAAK,QAAQ,IAAQ,MACvB,MAAK,QAAQ,GAAO,IAEtB,KAAK,QAAQ,GAAK,KAAK,EAAK,SAO1B,WAAQ,CACZ,GAAM,GAA+D,GAC/D,EAAiB,GACjB,EAAoB,GAC1B,OAAW,KAAO,MAAK,QAAS,CAC9B,GAAM,GAAa,KAAK,QAAQ,GAChC,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACvC,GAAI,MAAO,GAAW,IAAO,SAAU,CACrC,GAAM,GAAc,EAAW,GAC/B,EAAS,KAAK,EAAY,QAC1B,EAAK,KAAK,GACV,EAAQ,KAAK,IAInB,GAAM,GAAS,KAAM,SAAQ,IAAI,GACjC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACX,KAAK,QAAQ,EAAK,IAAI,EAAQ,IACtC,UAChB,KAAK,QAAQ,EAAK,IAAI,EAAQ,IAAM,EAAO,GAAG,KAkB9C,GAAA,aAA8B,GAAY,CAiB9C,YAAY,EAA0B,EAA8B,CAClE,QAKA,GARM,KAAA,aAAe,EAIrB,KAAK,WAAa,GAAc,OAC5B,KAAK,aAAe,QACtB,MAAK,WAAa,KAEhB,KAAK,aAAe,SAAW,EAAK,SAAW,KACjD,KAAM,IAAI,OACN,mHAGF,EAAK,SAAS,KAAK,aAGrB,MAAK,UAA0B,GAC3B,KAAK,UAAU,KAAK,MAAO,KAAK,aAEtC,KAAK,WAAa,EAAK,aACvB,KAAK,SAAW,EAAK,WACrB,KAAK,WAAa,EAAK,aACvB,KAAK,SAAW,EAAK,WACrB,KAAK,WAAa,EAAK,aACvB,KAAK,SAAW,EAAK,WACrB,KAAK,MAAQ,EAAK,aAGd,WAAU,EAAe,EAAe,EAAoB,CAChE,GAAM,GAAgC,GAClC,KAAK,OAAS,MAChB,MAAM,IAAqB,GAC3B,EAAG,KAAK,KAAK,MAAM,EAAO,EAAO,KAEnC,EAAG,KAAK,MACR,KAAM,SAAQ,IAAI,QAGd,cAAa,EAAe,EAAqB,CACrD,KAAK,aAAe,EAChB,KAAK,YAAc,MACrB,MAAM,IAAqB,GAC3B,KAAM,MAAK,WAAW,EAAO,SAI3B,YAAW,EAAe,EAAqB,CACnD,GAAM,GAAgC,GAClC,KAAK,UAAY,MACnB,MAAM,IAAqB,GAC3B,EAAG,KAAK,KAAK,SAAS,EAAO,KAE3B,KAAK,aAAe,SACtB,EAAG,KAAK,MAEV,KAAM,SAAQ,IAAI,QAGd,cAAa,EAAe,EAAqB,CACjD,KAAK,YAAc,MACrB,MAAM,IAAqB,GAC3B,KAAM,MAAK,WAAW,EAAO,SAI3B,YAAW,EAAe,EAAqB,CACnD,GAAM,GAAgC,GAClC,KAAK,UAAY,MACnB,MAAM,IAAqB,GAC3B,EAAG,KAAK,KAAK,SAAS,EAAO,KAE3B,KAAK,aAAe,QACtB,EAAG,KAAK,MACC,EAAK,SAAS,KAAK,aAC5B,EAAG,KAAK,KAAK,UAAU,KAAK,aAAc,EAAO,IAEnD,KAAM,SAAQ,IAAI,QAGd,cAAa,EAAqB,CAClC,KAAK,YAAc,MACrB,MAAM,IAAqB,GAC3B,KAAM,MAAK,WAAW,SAIpB,YAAW,EAAqB,CAChC,KAAK,UAAY,MACnB,MAAM,IAAqB,GAC3B,KAAM,MAAK,SAAS,MAQpB,YACF,EAEA,EAA6B,CAI/B,MAHI,IAAa,MACf,GAAY,IAEV,YAAqB,IAChB,CAAC,GAEN,MAAM,QAAQ,IAAc,EAAU,YAAc,IAC/C,EAIS,GAAO,GACF,IACnB,GAAkB,GAAI,IAAe,EAAgB,IAWrD,GAAA,IAAA,KAAkC,CAOtC,aAAA,QAcO,6BACH,EAAwB,EAA4C,CACtE,EAAK,OACD,GAAkB,GAAK,OAAO,UAAU,GACxC,IAAM,8DACS,KACnB,GAA4B,kBAAkB,GAC1C,GAA4B,aAAa,IAAmB,MAC9D,IAA4B,aAAa,GAAkB,IAE7D,GAA4B,aAAa,GAAgB,KACrD,SAGS,mBAAkB,EAC2B,CAC1D,OAAW,KAAa,IAA4B,aAC7B,GAA4B,aAAa,CAAC,GAClD,QAAQ,GAAO,CAC1B,GAAI,IAAS,EACX,KAAM,IAAI,GAAW,2CASZ,QAAK,CACpB,GAA4B,aAAe,SAWtC,iBAAgB,EAAsB,CAC3C,GAAM,GAA0C,GAChD,OAAW,KAAa,IAA4B,aAAc,CAChE,GAAM,GAAQ,CAAC,EACX,GAAkB,GACpB,EAAa,KAAK,GAAG,GAA4B,aAAa,IAGlE,MAAO,GAAa,IAAI,GAAQ,GAAI,MArEvB,GAAA,aAC6C,GAwExD,YACF,EAA2B,EAAgC,EAC3D,EAAsB,EAAyB,EAC/C,EAAmB,EACnB,EAAyB,CAC3B,GAAM,GAAU,GAAI,IACd,EAAkC,CACtC,GAAI,KAAc,GAAG,GAA4B,gBAAgB,IAE/D,GAAa,MACf,EAAgB,KAAK,GAAG,GAE1B,EAAgB,KAAK,GACrB,GAAM,GAAe,GAAI,IAAa,GAMtC,MAAA,GAAa,UAAU,CACrB,OAAA,EACA,aAAA,EACA,QAAS,EACT,MAAO,EACP,UAAA,EACA,QAAA,EACA,aAAA,EACA,QAAS,IAEJ,CAAC,aAAA,EAAc,QAAA,GCzjBlB,YACF,EACA,EAAgB,GAChB,EAAiB,GAAK,CACxB,MAAO,IACH,EAAQ,GAAc,iBAAiB,SAAS,aAChD,EAAe,QAAS,GCRxB,YAAsB,EAAW,EAAa,CAClD,MAAO,GAAK,IAAK,CACX,EAAE,QAAU,WACd,GAAI,EAAE,OAAO,YAEf,GAAM,GAAgB,GAAM,GAAO,GAAI,EAAM,IACvC,EAAoB,GAAK,EAAU,MAAO,MAC1C,EAAW,GAAS,GAAQ,EAAW,IAC7C,MAAW,IAAI,EAAG,KAIhB,YAA2B,EAAe,EAAa,CAC3D,MAAO,GAAK,IAAU,GAAO,GAAW,GAAI,EAAO,IAAS,KAGxD,YAA4B,EAAe,EAAa,CAC5D,MAAO,GAAK,IAAU,GAAS,GAAQ,GAAI,EAAO,IAAS,KAGvD,YACF,EAAe,EAAa,CAC9B,MAAO,GAAK,IAAK,CACf,GAAM,GAAW,GAAI,EAAO,GACtB,EACE,GAAgB,GAAI,GAAQ,KAAW,OAAO,WAChD,EAAgB,GAAQ,GAAI,EAAM,IACxC,MAAW,GAAI,IAAS,GAAK,EAAW,OAItC,aACF,EAAe,EAAa,CAC9B,MAAO,GAAK,IAAK,CACf,GAAM,GAAkB,GAAY,EAAO,KAAW,OAAO,WACvD,EAAe,GAAQ,GAAI,EAAG,IAE9B,EAAkB,GAAY,EAAO,KAAW,OAAO,WACvD,EAAgB,GAAQ,GAAI,EAAG,IAErC,MAAW,IAAO,GAAW,GAAI,EAAU,IAAa,MAItD,aAAuB,EAAe,EAAa,CACvD,MAAO,GAAK,IAAK,CACf,GAAM,GAAgB,GAAQ,EAAO,GAAI,EAAO,EAAI,EAAO,KAC3D,MAAW,IAAO,GAAO,GAAY,MAInC,aAAgB,EAAe,EAAa,CAChD,MAAO,GAAK,IAAK,CACf,GAAM,GAAgB,GAAQ,EAAO,GAAI,EAAO,EAAI,EAAO,KAC3D,MAAW,IAAK,EAAW,MAIzB,aAA2B,EAAe,EAAa,CAC3D,MAAO,GAAK,IAAK,CACf,GAAM,GAAU,GAAQ,EAAI,EAAO,GAAQ,IACrC,EAAU,GAAQ,EAAQ,GAAI,EAAG,GAAQ,GAAQ,IACvD,MAAW,IAAQ,EAAO,GAAI,EAAO,GAAI,EAAK,OAY5C,aAAkB,EAAe,EAAa,CAClD,MAAO,GAAK,IAAK,CACf,GAAM,GAAO,KAAK,IAAI,GAChB,EAAqB,GAAI,EAAO,GAChC,EAAoB,GAClB,GAAI,EAAoB,GAAa,EAAI,GAAI,KACjD,GACJ,MAAW,IAAK,EAAe,MAI7B,YACF,EAAgB,EAAgB,EAAa,GAAK,CACpD,MAAO,GAAK,IAAK,CACf,GAAI,EACF,EAAa,GAAQ,OAChB,CAEL,GAAM,GAAgB,GAAI,EAAQ,EAAO,MAAM,OAAS,EAAG,IAC3D,EAAa,GAAI,EAAQ,GAE3B,MAAA,GAAa,GAAY,EAAQ,KAAW,EAAI,MACrC,GAAQ,GACX,EAAI,EAAO,UAAe,GAAI,IAAU,EAAO,MAAM,OAAS,MAapE,YACF,EAAgB,EAAgB,EAAa,GAAK,CACpD,MAAO,GAAK,IAAK,CACf,GAAM,GAAiB,GAAQ,GAAQ,IAAS,QAChD,EAAa,GAAY,EAAQ,KAAW,EAAI,MAChD,GAAM,GAAc,EAAO,MACrB,EACE,GAAO,EAAY,EAAY,EAAY,OAAS,IACnD,QAAQ,GACjB,MAAO,IAAwB,EAAc,EAAQ,KAyBnD,aACF,EAAgB,EAAc,CAChC,GAAI,CAAC,EAAK,YAAY,EAAO,MAAO,EAAO,OACzC,KAAM,IAAI,GACN,8DACG,KAAK,UAAU,EAAO,cAAc,KAAK,UAAU,EAAO,UAEnE,MAAO,GAAK,IAAK,CAOf,GAAM,GAAa,EAAO,OACpB,EAAe,EAAO,MAAM,MAClC,MAAO,GAAW,IAAI,EAAO,IAAI,IAAS,IAAI,EAAa,MAAM,WAI/D,YAA6B,EAAe,EAAa,CAC7D,MAAO,GAAK,IAAK,CACf,GAAI,GACJ,MAAA,GAAQ,GAAY,EAAO,KAAW,EAAI,MAC1C,EAAQ,GAAQ,GAAI,EAAO,GAAI,EAAG,KACvB,GAAK,IAA8B,EAAO,GAAI,MAIvD,aACF,EAAe,EAAa,CAC9B,MAAO,GAAK,IAAK,CACf,GAAM,GAAkB,GAAY,EAAO,KAAW,GAChD,EAAkB,GAAY,EAAO,KAAW,GACtD,MAAW,IACH,EAAI,EAAW,GAAQ,GAAI,EAAa,KAAgB,MAI9D,aAAkB,EAAe,EAAa,CAClD,MAAO,GAAK,IAAK,CACf,GAAM,GAAc,GAAQ,GAAI,KAAW,IAC3C,MAAW,IAAS,GAAI,EAAW,EAAI,EAAO,IAAW,MAIvD,YAA0B,EAAe,EAAa,CAC1D,MAAO,GAAK,IAAK,CACf,GAAM,GAAiB,GAAY,EAAO,IACpC,EAAiB,GAAY,EAAO,IACpC,EAAgB,EAAI,EAAgB,GAC1C,MAAW,IAAQ,GAAI,EAAW,OAkB/B,GAAM,IAAsD,CACjE,iBAAA,GACA,kBAAA,GACA,4BAAA,GACA,4BAAA,IACA,aAAA,IACA,MAAA,IACA,iBAAA,IACA,QAAA,IACA,wBAAA,GACA,8BAAA,GACA,mBAAA,GACA,0BAAA,IACA,QAAA,IACA,gBAAA,IAKI,YAAc,EAAqC,CACvD,GAAI,MAAO,IAAmB,SAAU,CACtC,GAAI,IAAkB,IACpB,MAAO,IAAU,GAEnB,GAAI,GAAS,gBAAgB,IAC7B,KAAI,GAAe,cAAc,SAAS,wBACxC,GAAS,gBAAgB,yFAIrB,GAAI,GAAW,OAErB,OAAO,GCpPL,YAAyB,EAAe,EAAa,CACzD,MAAO,GAAK,IAAK,CACf,GAAM,GAAgB,EAAI,GAAQ,GAAS,IACrC,EAAqB,GAAS,GAAQ,EAAO,GAAY,EAAM,OACrE,MAAW,IAAS,GAAM,EAAO,GAAmB,MAIlD,YAA8B,EAAe,EAAa,CAC9D,MAAO,GACH,IAAQ,GACA,GAAU,GAAO,EAAO,IAAS,GAAO,EAAO,KAAM,YAGnE,YAAuB,EAAe,EAAa,CACjD,MAAO,GAAK,IACC,GAAW,EAAM,MAAM,GAAI,EAAM,MAAM,IAAI,MAAM,KAAK,YAIrE,aAAwB,EAAe,EAAa,CAClD,MAAO,GAAK,IACC,GAAW,EAAM,MAAM,GAAI,EAAM,MAAM,IAAI,MAAM,KAAK,YAIrE,aAAwB,EAAe,EAAa,CAClD,MAAO,GAAK,IACC,GAAW,EAAM,MAAM,GAAI,EAAM,MAAM,IAAI,MAAM,KAAK,YAI/D,YAAoB,EAAe,EAAa,CACpD,MAAO,GAAK,IAAK,CACf,GAAM,GAAK,GAAc,EAAO,GAC1B,EAAK,IAAe,EAAO,GAE3B,EAAc,EAAG,IAAI,GAE3B,MAAW,IAAU,GAAQ,EAAa,GAAI,EAAG,IAAI,GAAc,GAC9D,KAAK,aAIR,aAAiB,EAAe,EAAa,CACjD,MAAO,GAAK,IAAK,CACf,GAAM,GAAK,GAAc,EAAO,GAC1B,EAAK,IAAe,EAAO,GAE3B,EAAc,EAAG,IAAI,GAE3B,MAAW,IAAU,GAAQ,EAAa,GAAI,EAAG,IAAI,GAAc,GAC9D,KAAK,aAIR,YAA6B,EAAe,EAAa,CAC7D,MAAO,IAAuB,EAAO,GAGjC,YACF,EAAe,EAAa,CAC9B,MAAI,GAAM,OAAS,EAAM,MACvB,GAAQ,EAAM,QAAQ,CAAC,EAAM,KAAO,KAEtC,EAAQ,EAAM,OAAO,IACjB,EAAM,QAAU,EAAM,OACxB,GAAQ,EAAM,OAAO,EAAM,QAElB,GAAM,EAAO,GAAO,OAAO,WAajC,GAAM,KAAM,GACN,IAAM,GACN,IAAM,GACN,IAAM,GACN,IAAO,GACP,IAAO,GACP,GAA0B,GAC1B,IAAS,GACT,GAAgC,GAIhC,GAAuD,CAClE,eAAA,GACA,oBAAA,GACA,UAAA,GACA,wBAAA,GACA,8BAAA,GACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,IAAA,IACA,KAAA,IACA,KAAA,IACA,OAAA,KAGI,aAAc,EAAiC,CACnD,GAAI,MAAO,IAAe,UAAY,IAAc,IAClD,MAAO,IAAW,GACb,GAAI,MAAO,IAAe,UAAY,GAAc,KACzD,MAAO,GAEP,KAAM,IAAI,GAAW,kBAAkB,KAqBrC,YAA8B,EAAyB,CAE3D,GADK,GAAO,IAAO,KAAM,0BAA0B,KAC/C,MAAO,IAAO,SAChB,MAAO,GACF,CACL,GAAI,GACJ,OAAW,KAAO,QAAO,KAAK,IAC5B,GAAI,GAAU,KAAS,EAAI,CACzB,EAAS,EACT,MAGJ,GAAI,IAAW,OACb,MAAO,GAET,OAAW,KAAO,QAAO,KAAK,IAC5B,GAAI,GAAW,KAAS,EAAI,CAC1B,EAAS,EACT,MAGJ,MAAI,KAAW,OACN,EAED,EAAgB,MCjKtB,aAAuB,EAAkB,CAC7C,GAAM,GAA2D,CAC/D,QAAW,IAAM,GAAM,QAAQ,KAC/B,SAAY,IAAM,GAAM,SAAS,EAAG,IAAM,MAC1C,KAAQ,IAAM,GAAM,KAAK,KAAO,GAAK,KAAO,MAC5C,OAAU,IAAM,GAAM,OAAO,KAAO,GAAK,KAAO,KAAW,GAC3D,QAAW,IAAM,GAAM,QAAQ,KAAO,GAAK,EAAG,MAC9C,IAAO,IAAM,GAAM,IAAI,MASzB,GAPA,EAAa,QAAa,EAAa,QACvC,EAAa,SAAc,EAAa,SACxC,EAAa,KAAU,EAAa,KACpC,EAAa,OAAY,EAAa,OACtC,EAAa,QAAa,EAAa,QACvC,EAAa,IAAS,EAAa,IAE/B,IAAc,GAChB,MAAO,GAAa,KAEtB,KAAM,IAAI,GAAW,qBAAqB,KC5BrC,GAAM,IAA8C,EAAI,KAAO,KAchE,YACF,EAAyB,EAAmB,EAAY,GAAK,CAC/D,GAAI,GAAuB,MACvB,MAAO,IAAwB,UAC/B,OAAO,eAAe,KAAyB,OAAO,WACtD,CAAC,GAAiB,GACpB,KAAM,IAAI,OACN,sEAGN,GAAI,EAAW,CACb,GAAM,GAAM,KAAK,UAAU,GACvB,EAAI,OAAS,IACf,QAAQ,KACJ,mCAAmC,mCACnB,EAAI,qJAGjB,QAgBP,YAA2B,EAAM,CACrC,GAAI,IAAM,KAER,MAAO,GACF,GAAI,MAAO,IAAM,SACtB,GAAI,OAAO,eAAe,KAAO,OAAO,UAAW,CAEjD,GAAM,GAAO,OAAO,KAAK,GACzB,OAAW,KAAO,GAKhB,GAJI,MAAO,IAAQ,UAIf,CAAC,GAAiB,EAAE,IACtB,MAAO,GAGX,MAAO,WAGH,MAAM,QAAQ,GAAI,CAEpB,OAAW,KAAQ,GACjB,GAAI,CAAC,GAAiB,GACpB,MAAO,GAGX,MAAO,OAKP,OAAO,OAGN,CAEL,GAAM,GAAQ,MAAO,GACrB,MAAO,KAAU,UAAY,IAAU,UAAY,IAAU,WCxE3D,aACF,EAAkB,EAAqB,EAEvC,EACI,QAAQ,IAAG,CACjB,GAAM,GAAiB,IAAsB,GAGvC,EAAsB,CAAC,eAAgB,eAAgB,WACzD,EACF,GAAa,GAAc,GAC3B,EAAY,GAAa,CAAC,IAAM,IAAM,IAEtC,GAAa,GAAc,GAC3B,EAAY,GAAa,CAAC,IAAM,IAAM,IAAM,IAI1C,EAAU,EAAU,OAAS,IAAM,GAErC,GAAY,EAAU,IAAI,GAAK,KAAK,MAAM,EAAa,KAGzD,GAAI,GACJ,GAAI,CAAC,EAAgB,CACnB,EAAU,KAAK,mBACf,EAAgB,GAChB,OAAW,KAAS,GAAM,aACxB,EAAc,KAAK,GAAG,EAAM,aAAa,IAI7C,EAAQ,IAAI,OAAO,IACnB,GAAS,EAAW,EAAW,GAC/B,EAAQ,IAAI,OAAO,IAEnB,GAAM,GAAS,EAAM,OACrB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAC/B,EACF,IAAkB,EAAO,GAAI,EAAW,GAExC,IACI,EAAO,GAAI,EAAW,EAAe,GAE3C,EAAS,KAAM,EAAO,OAAS,EAAI,IAAM,KAAK,OAAO,IAItD,EAAc,mCAEf,GAAM,GAAiB,IAAqB,GACtC,EAAoB,GAAqB,EAAM,qBAErD,EAAQ,iBAAiB,EAAiB,KAC1C,EAAQ,qBAAqB,KAC7B,EAAQ,yBAAyB,KACjC,EAAQ,IAAI,OAAO,IAGrB,aAA8B,EAAgB,CAC5C,GAAI,GAEJ,MAAK,GAAc,2BAA6B,KAC9C,EACI,GAAsB,EAAc,2BAExC,EAAiB,GAAqB,EAAM,kBAGvC,EAGT,aAA+B,EAAgB,CAC7C,GAAI,GAAiB,GACf,EAAyB,GACzB,EAAgB,GACtB,OAAW,KAAS,GAAM,aACxB,EAAa,KAAK,EAAM,aAAa,IAEvC,OAAW,KAAc,GAAc,CACrC,GAAI,EAAW,OAAS,GACpB,EAAW,SAAW,GAAK,EAAW,GAAG,cAAc,OAAS,EAAG,CACrE,EAAiB,GACjB,MAEF,EAAM,KAAK,GAAG,GAEhB,GAAI,EAEF,OAAW,KAAS,GAAM,OAAQ,CAChC,GAAI,GAAO,GACX,OAAW,KAAQ,GAAM,aACvB,GAAI,EAAM,QAAQ,KAAU,GAC1B,GAAI,EAAM,CACR,EAAiB,GACjB,UAEA,GAAO,GAIb,GAAI,CAAC,EACH,MAIN,MAAO,GAGT,YACI,EAAkB,EAElB,EAA6D,QAAQ,IAAG,CAC1E,GAAI,GAAO,GACX,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAC/B,EAAI,GACN,GAAO,EAAK,MAAM,EAAG,EAAK,OAAS,GAAK,KAE1C,GAAQ,EAAO,GACf,EAAO,EAAK,MAAM,EAAG,EAAU,IAC/B,GAAQ,IAAI,OAAO,EAAU,GAAK,EAAK,QAEzC,EAAQ,GAQV,aACI,EAAc,EAEd,EAA0D,CAC5D,GAAI,GACJ,GAAI,CACF,EAAc,KAAK,UAAU,EAAM,mBAC5B,EAD4B,CAEnC,EAAc,WAGhB,GAAM,GAAO,EAAM,KACb,EAAY,EAAM,eAClB,EACF,CAAC,GAAG,MAAS,KAAc,EAAa,EAAM,cAAc,YAChE,GAAS,EAAQ,EAAW,GAM9B,aACI,EAAc,EAAqB,EAEnC,EAA0D,CAC5D,GAAI,GACJ,GAAI,CACF,EAAc,KAAK,UAAU,EAAM,mBAC5B,EAD4B,CAEnC,EAAc,WAGhB,GAAM,GAAwB,GAC9B,OAAW,KAAQ,GAAM,aACvB,GAAI,CAAA,IAAiB,MAAQ,EAAc,OAAS,GAChD,EAAc,QAAQ,KAAU,IAGpC,OAAS,GAAI,EAAG,EAAI,EAAK,cAAc,OAAQ,EAAE,EAAG,CAClD,GAAM,GAAe,EAAK,cAAc,GAAG,KACrC,EAAoB,EAAK,YAAY,GACrC,EAAqB,EAAK,cAAc,GAC9C,EAAY,KACR,GAAG,KAAgB,MAAsB,MAGjD,GAAM,GAAO,EAAM,KACb,EAAY,EAAM,eAClB,EAAkB,EAAY,SAAW,EAAI,GAAK,EAAY,GAC9D,EAAmB,CACvB,GAAG,MAAS,KAAc,EAAa,EAAM,cAAc,WAC3D,GAGF,GAAS,EAAQ,EAAW,GAC5B,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,EAAE,EACxC,GAAS,CAAC,GAAI,GAAI,GAAI,EAAY,IAAK,EAAW,GCzLtD,YACI,EAAa,EAAe,EAAQ,CACtC,MAAQ,KAAQ,gBAAkB,IAAQ,gBAClC,IAAQ,gBACZ,IAAU,GAAK,MAAO,IAAU,SAShC,YACF,EAA6B,EAAY,CAC3C,GAAI,IAAmB,KACrB,MAAO,MACF,GAAI,MAAO,IAAmB,SACnC,MAAqB,IAAY,GAC5B,GACF,MAAO,IAAmB,UAC1B,MAAO,IAAmB,UAC7B,MAAO,GACF,GAAI,YAA0B,OAAO,CAC1C,GAAM,GAAU,GACV,EAAc,EAAe,OACnC,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,GAAO,EAAe,GACxB,GAA6B,EAAK,EAAG,GACvC,EAAQ,KAAK,GAEb,EAAQ,KAAK,GAAoB,EAAM,IAG3C,MAAO,OACF,CACL,GAAM,GAAmC,GACzC,OAAW,KAAe,QAAO,KAAK,GAAiB,CACrD,GAAM,GAAgB,EAAe,GACrC,GAAI,IAAgB,QAAU,MAAO,IAAkB,SAIrD,EAAO,GAAe,MACjB,CACL,GAAM,GAAsB,GAAY,GACxC,EAAO,GAAS,GAAoB,EAAe,IAGvD,MAAO,IAUL,YACF,EAAyC,EAAY,CACvD,GAAI,GAAa,KACf,MAAO,MACF,GAAI,MAAO,IAAa,SAC7B,MAAqB,IAAY,GAC5B,GACF,MAAO,IAAa,UAAc,MAAO,IAAa,UACzD,MAAO,GACF,GAAI,YAAoB,OAAO,CACpC,GAAM,GAAU,GACV,EAAc,EAAS,OAC7B,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,GAAO,EAAS,GAClB,GAA6B,EAAK,EAAG,GACvC,EAAQ,KAAK,GAEb,EAAQ,KAAK,GAAoB,EAAM,IAG3C,MAAO,OACF,CACL,GAAM,GAAmC,GACzC,OAAW,KAAS,QAAO,KAAK,GAAW,CACzC,GAAM,GAAU,EAAS,GACnB,EAAsB,GAAY,GACnC,AAAA,KAAU,QAAU,IAAU,cAC/B,MAAO,IAAY,SAIrB,EAAO,GAAS,EAEhB,EAAO,GAAS,GAAoB,EAAS,GAGjD,MAAO,IC1HX,GAAM,IAAU,QCuBhB,aAAiC,EAAqB,EAAW,CAE/D,GAAI,EAAI,OAAS,MAAQ,EAAI,QAAU,EAAI,MAEzC,MAAO,GAET,GAAI,CAEF,MAAO,IAAK,EAAK,EAAI,aACd,EADc,CAGrB,KAAM,IAAI,GACN,0BAA0B,EAAI,mDACf,EAAI,UAAU,EAAI,YAgBnC,GAAA,IAAA,KAAe,CAUnB,YAAY,EAAuB,CACjC,GAVM,KAAA,SAAmC,GACnC,KAAA,QAAkC,GAClC,KAAA,QAAoC,GAQtC,YAAiB,IACnB,OAAW,KAAM,GAAM,SACrB,KAAK,SAAS,GAAM,EAAM,SAAS,GAC/B,IAAM,GAAM,SACd,MAAK,QAAQ,GAAM,EAAM,QAAQ,QAGhC,CACL,GAAI,GAAS,KACX,OAEF,OAAW,KAAQ,GACjB,KAAK,IAAI,EAAK,IAAK,EAAK,QAe9B,IAAI,EAAqB,EAAe,EAAa,CACnD,GAAI,KAAK,SAAS,EAAI,KAAO,KAC3B,KAAK,SAAS,EAAI,IAAM,IAAwB,EAAK,GACrD,KAAK,QAAQ,EAAI,MAAQ,EAAI,GACzB,GAAQ,MACV,MAAK,QAAQ,EAAI,IAAM,OAGzB,MAAM,IAAI,GAAW,uBAAuB,EAAI,YAAY,EAAI,MAElE,MAAO,MAQT,QAAQ,EAAU,CAChB,KAAK,IAAI,EAAK,IAAK,EAAK,OAO1B,OAAO,EAAmB,CACxB,MAAO,MAAK,SAAS,EAAI,KAAO,KAMlC,OAAK,CACH,MAAO,QAAO,KAAK,KAAK,SAU1B,SAAS,EAA0B,CACjC,GAAI,YAAe,IAAgB,CACjC,GAAI,KAAK,SAAS,EAAI,KAAO,KAC3B,KAAM,IAAI,GAAW,oBAAoB,EAAI,QAE7C,MAAO,MAAK,SAAS,EAAI,QAEtB,CACL,GAAM,GAAK,KAAK,QAAQ,GACxB,GAAI,GAAM,KACR,KAAM,IAAI,GAAW,yCAAyC,KAEhE,MAAO,MAAK,SAAS,IAWzB,QAAQ,EAA0B,CAChC,GAAI,YAAe,IAAgB,CACjC,GAAI,KAAK,SAAS,EAAI,KAAO,KAC3B,KAAM,IAAI,GAAW,oBAAoB,EAAI,QAE7C,MAAO,MAAK,QAAQ,EAAI,QAErB,CACL,GAAM,GAAK,KAAK,QAAQ,GACxB,GAAI,GAAM,KACR,KAAM,IAAI,GAAW,yCAAyC,KAEhE,MAAO,MAAK,QAAQ,IAKxB,cAAY,CACN,KAAK,SAAW,MAClB,GAAQ,KAAK,WAOb,GAA+D,GAG/D,GAC4D,GA2C5D,YACF,EAA0C,EAC1C,EAAiB,EAAsB,CAEzC,GAAM,GAAoB,GAAU,KAAO,GAAQ,EAAO,SAEpD,EAAe,MAAM,QAAQ,GAC7B,EACF,EAAe,EAA8B,CAAC,GAE5C,EAAc,EAAW,IAAI,GAAK,EAAE,MACpC,EAAyB,GACzB,EAAY,EAAS,QAC3B,OAAW,KAAc,GACnB,EAAU,QAAQ,KAAgB,GACpC,EAAa,KAAK,EAAS,SAAS,IAEpC,EAAa,KAAK,MAIlB,GAAS,MAEX,GAAM,cAAgB,UACtB,EAAM,cAAgB,UAIxB,GAAM,GACF,EAAY,KAAK,KAAO,IAAM,EAAS,QAAQ,KAAK,KACpD,EACA,EACJ,GAAI,GAAa,IAAoB,KAAM,CAGzC,GAAM,GAAM,IAAqC,EAAY,GAC7D,EAAS,EAAI,OACb,EAAkB,EAAI,gBAGtB,GAAa,GAAmB,EAChC,GAAsB,GAAmB,EAE3C,EAAS,GAAa,GACtB,EAAkB,GACb,GACH,OAAO,OAAO,EAAiB,GAAsB,IAGvD,GAAM,GAAmB,GAAI,IAAS,GAGtC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAI,GAAS,KAAM,CAEjB,GAAM,GAAa,KAAS,WACxB,EAAa,EAAM,eACrB,GAAM,cAAgB,GAEpB,EAAa,EAAM,eACrB,GAAM,cAAgB,GAI1B,GAAM,GAAW,EAAO,GAClB,EAAW,EAAS,YAC1B,GAAI,YAAoB,IACtB,SAEF,GAAM,GAAwB,GACxB,EAAuB,GACvB,EAA6B,GAE/B,EAAa,GACjB,OAAW,KAAS,GAAS,OAAQ,CACnC,GAAM,GAAQ,EAAiB,SAAS,GAClC,EAAO,EAAiB,QAAQ,GACtC,EAAY,KAAK,GACjB,EAAW,KAAK,GACZ,GAAQ,MACV,GAAa,IAEV,GACH,GAAgB,EAAM,QAClB,EAAgB,EAAM,QAAU,GAAK,CAAC,EAAS,OAAO,IACtD,EAAY,QAAQ,EAAM,QAAU,IAAM,CAAC,EAAM,YACjD,EAAM,YAAY,WAAa,IACjC,EAAiB,KAAK,IAKxB,GACF,GAAS,GAAU,GACnB,EAAO,KAAU,EAAW,IAE9B,GAAM,GACF,GAAO,EAAS,MAAM,EAAa,IACnC,EAA8B,KAC9B,EAAS,iBACX,GAAa,EAAS,YAAY,EAAa,IAEjD,GAAM,GAAe,IAAe,GAC9B,EACF,MAAM,QAAQ,GAAgB,EAAe,CAAC,GAClD,OAAS,GAAI,EAAG,EAAI,EAAsB,OAAQ,EAAE,EAAG,CAChD,EAAiB,OAAO,EAAsB,KACjD,EAAiB,IACb,EAAsB,GAAI,EAAc,GACxC,MAAM,QAAQ,GAAc,EAAW,GAAK,GAElD,GAAM,GAAQ,EAAY,QAAQ,EAAsB,GAAG,MACvD,IAAU,IACZ,GAAa,GAAS,EAAc,IAInC,GAEH,GAAQ,GAQZ,MAAA,GAAiB,eAEV,EAAe,EAAe,EAAa,GAsBpD,aACI,EAA2B,EAAkB,CAE/C,EAAK,OACD,GAAW,MAAQ,EAAQ,OAAS,EACpC,IAAM,yCAEV,GAAI,GAAgC,GAChC,EAAkC,GACtC,GAAI,EAAQ,SAAW,EAAG,CAExB,GAAM,GACF,GAAgD,EAAQ,GAAI,GAChE,EAAc,EAAI,OAClB,EAAoB,EAAI,iBACnB,CACL,GAAM,GAAU,GAAI,KACpB,OAAW,KAAS,GAAS,CAC3B,GAAM,CAAC,OAAA,EAAQ,aAAA,GACX,GAAgD,EAAO,GAG3D,OAAW,KAAkB,GACtB,EAAQ,IAAI,EAAe,OAC9B,GAAY,KAAK,GACjB,EAAQ,IAAI,EAAe,OAK/B,OAAW,KAAQ,GACb,EAAkB,IAAS,MAC7B,GAAkB,GAAQ,GAAI,MAEhC,EAAa,GAAM,QACf,GAAa,EAAkB,GAAM,IAAI,KAInD,MAAO,CACL,OAAQ,EACR,gBAAiB,IAAoB,IAIzC,aAA6B,EAA0B,CACrD,GAAM,GAAmC,GACzC,OAAW,KAAQ,GACjB,EAAgB,GAAQ,EAAa,GAAM,KAE7C,MAAO,GAcH,YACF,EAAuB,EAAkB,CAE3C,GAAM,GAAU,GAAI,KACd,EAA2B,GAC3B,EAA6B,GAKnC,OAAW,KAAO,GAAS,QACzB,EAAQ,IAAI,GAGd,GAAM,GAA0B,GAC1B,EAAkB,GAKxB,IAFA,EAAM,KAAK,GAEJ,EAAM,OAAS,GAAG,CACvB,GAAM,GAAM,EAAM,EAAM,OAAS,GACjC,GAAI,EAAQ,IAAI,EAAI,MAAO,CACzB,EAAM,MACN,SAEF,GAAM,GAAc,EAAM,EAAM,OAAS,KAAO,EAAM,OAAS,EAC/D,GAAI,EAAI,OAAO,SAAW,GAAK,EAE7B,EAAM,MACN,EAAO,KAAK,GACZ,EAAQ,IAAI,EAAI,MACZ,GACF,EAAM,UAEH,CAGL,EAAM,KAAK,EAAM,OAAS,GAC1B,OAAW,KAAS,GAAI,OAGlB,EAAa,EAAM,OAAS,MAC9B,GAAa,EAAM,MAAQ,GAAI,MAEjC,EAAa,EAAM,MAAM,IAAI,EAAI,MAE7B,CAAA,EAAQ,IAAI,EAAM,OAGtB,EAAM,KAAK,IAIjB,MAAO,CAAC,OAAA,EAAQ,aAAA,GASlB,aAAwB,EAAqB,CAE3C,GAAI,GACJ,GAAI,EAAM,YAAY,aAAa,SAAW,EAC5C,EAAe,EAAM,YAAY,WAC5B,CACL,GAAI,GAAoB,KACxB,OAAS,GAAI,EAAG,EAAI,EAAM,YAAY,aAAa,OAAQ,EAAE,EAC3D,OAAW,KAAgB,GAAM,YAAY,aAAa,GAChD,cACR,GAAI,EAAa,KAAO,EAAM,GAAI,CAChC,EAAY,EACZ,MAIN,EAAe,EAAM,YAAY,YAAY,GAE/C,MAAO,GCpeH,GAAA,IAAA,aAAkC,GAAK,CAoC3C,YAAY,EAAmB,CAE7B,MAAM,IAEN,GAtBF,KAAA,eAAiB,GAAI,KAqBnB,KAAK,KAAO,EAAK,KACb,KAAK,MAAQ,KAAM,CACrB,GAAM,GAAS,KAAK,eAAe,cACnC,KAAK,KAAO,GAAO,GAqBrB,GAlBA,KAAK,gBAAkB,GACvB,KAAK,WAAa,GAKd,MAAM,QAAQ,EAAK,QACrB,KAAK,OAAS,EAAK,OAAO,QAE1B,KAAK,OAAS,CAAC,EAAK,QAElB,MAAM,QAAQ,EAAK,SACrB,KAAK,QAAU,EAAK,QAAQ,QAE5B,KAAK,QAAU,CAAC,EAAK,SAIL,GAAO,KAAK,QAAQ,SAAW,KAAK,OAAO,OAC3D,KAAM,IAAI,GACN,mGAEG,KAAK,OAAO,IAAI,GAAK,EAAE,SAId,GAAO,KAAK,SAAS,SAAW,KAAK,QAAQ,QAC7D,QAAQ,KACJ,qGAEG,KAAK,QAAQ,IAAI,GAAK,EAAE,SAOjC,KAAK,YAAc,GACnB,KAAK,uBAAyB,GAC9B,KAAK,yBAA2B,GAKhC,KAAK,aAAe,GACpB,KAAK,wBAA0B,GAC/B,KAAK,0BAA4B,GAKjC,KAAK,OAAS,GAMd,KAAK,sBAAwB,GAe7B,OAAW,KAAK,MAAK,QAAS,CAC5B,GAAM,GAAQ,EAAE,YACV,EAAY,EAAE,UACd,EAAc,EAAE,YACtB,KAAK,aAAa,KAAK,GACvB,KAAK,wBAAwB,KAAK,GAClC,KAAK,0BAA0B,KAAK,GAMtC,OAAW,KAAK,MAAK,OAAQ,CAC3B,GAAM,GAAQ,EAAE,YACV,EAAY,EAAE,UACd,EAAc,EAAE,YAKR,GAAO,IAAc,EAAG,4BACxB,GAAO,IAAgB,EAAG,8BACxC,KAAK,YAAY,KAAK,GACtB,KAAK,uBAAuB,KAAK,GACjC,KAAK,yBAAyB,KAAK,GAIrC,KAAK,WAAa,GAClB,KAAK,YAAc,GACnB,KAAK,gBAAkB,GACvB,KAAK,eAAiB,GACtB,KAAK,gBAAkB,GACvB,OAAS,GAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAAK,CAChD,GAAM,GAAQ,KAAK,YAAY,GAE/B,GAAI,CAAE,aAAiB,KACrB,KAAM,IAAI,WACN,8EACoB,EAAK,iBAChB,0CACU,EAAM,mBAE/B,KAAK,WAAW,KAAK,EAAM,MAC3B,KAAK,gBAAgB,KAAK,EAAM,iBAEhC,KAAK,eAAe,KAAK,EAAM,MAEjC,OAAW,KAAS,MAAK,aACvB,KAAK,YAAY,KAAK,EAAM,MAG9B,KAAK,oBAAsB,KAAK,OAAO,IAAI,GAAK,EAAE,OAClD,KAAK,qBAAuB,KAAK,QAAQ,IAAI,GAAK,EAAE,OAOpD,GAAM,GAA0C,GAE1C,EAAyC,GACzC,EAA4C,GAE5C,EAA6C,GAC7C,EAA4C,GAC5C,EAAiC,GAoBjC,EACF,CAAC,EAAwB,EAAuB,EAC/C,EAAe,EAAoB,IAAwB,CACtD,AAAA,IAAS,MAAQ,GAAa,MAAQ,GAAe,OACvD,GAAQ,EAAO,YACf,EAAY,EAAO,UACnB,EAAc,EAAO,aAEvB,GAAM,GAAO,EAAM,aAAa,GAGhC,GAAI,EAAgB,QAAQ,KAAU,GACpC,KAAM,IAAI,IACN,cAAc,EAAO,kBAAkB,EAAM,6BAKnD,GAAI,EAAc,QAAQ,KAAU,GAClC,OAIF,KAAK,eAAe,IAAI,GAAU,QAAQ,EAAO,IAG3C,EAAM,KAAM,IAChB,GAAa,EAAM,IAAM,OAAO,KAAK,GAAc,QAGjD,EAAgB,QAAQ,KAAU,IACpC,EAAgB,KAAK,GAIvB,GAAM,GAAmB,EAAK,cAAc,OAC5C,OAAS,GAAI,EAAG,EAAI,EAAkB,IAAK,CACzC,GAAM,GAAI,EAAK,aAAa,GACtB,EAAQ,EAAK,cAAc,GAC3B,EAAY,EAAK,YAAY,GAC7B,EAAc,EAAK,cAAc,GACvC,EACI,EAAG,EAAe,EAAiB,EAAO,EAC1C,GAGN,IADA,EAAc,KAAK,GACZ,EAAgB,QAAQ,IAAS,GACtC,EAAgB,OAAO,EAAgB,QAAQ,GAAO,GAExD,EAAuB,KAAK,IAG5B,EAAwB,GACxB,EAA0B,GAChC,OAAW,KAAK,MAAK,QACnB,EAAgB,EAAG,EAAe,GAGpC,GAAM,GACF,EAAuB,QAAQ,UACnC,OAAW,KAAQ,GAAgC,CACjD,EAAa,EAAK,IAAM,EAElB,EAAK,KAAM,IACf,GAAY,EAAK,IAAM,GAEzB,GAAI,GAAQ,EAAY,EAAK,IAGvB,EACD,EAAa,EAAK,cAAc,KAAO,KACnC,EACA,EAAa,EAAK,cAAc,IAOzC,EAAQ,KAAK,IAAI,EAAO,GACxB,EAAa,EAAK,cAAc,IAAM,EACtC,EAAe,EAAK,cAAc,IAAM,EAAK,cAC7C,EAAY,EAAK,IAAM,EAGvB,OAAS,GAAI,EAAG,EAAI,EAAK,cAAc,OAAQ,IAAK,CAClD,GAAM,GAAe,EAAK,cAAc,GAClC,EAAY,EAAK,YAAY,GAC7B,EAAc,EAAa,aAAa,GACxC,EACD,EAAY,EAAY,KAAO,KAAO,EACA,EAAY,EAAY,IACnE,EAAY,EAAY,IAAM,KAAK,IAAI,EAAQ,EAAG,GAClD,EAAa,EAAY,IAAM,GAKnC,GAAM,GAA0C,GAChD,OAAW,KAAU,GAAa,CAChC,GAAM,GAAQ,EAAY,GACpB,IAAS,IACb,GAAa,GAAS,IAExB,EAAa,GAAO,KAAK,EAAa,IAIxC,GAAM,GAA4C,GAClD,OAAW,KAAW,GAAc,CAClC,GAAM,GAAQ,EAAa,GACrB,IAAS,IACb,GAAc,GAAS,IAEzB,EAAc,GAAO,KAAK,EAAe,IAI3C,GAAI,GAAY,OAAO,KAAK,GACP,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,IAGxC,KAAK,OAAS,GACd,OAAW,KAAS,GAAW,CAC7B,GAAM,GAAiB,EAAc,GAGrC,EAAe,KAAK,CAAC,EAAG,IAAK,CAC3B,GAAM,GAAS,EAAa,EAAE,IACxB,EAAS,EAAa,EAAE,IAC9B,MAAI,GAAS,EACJ,GAEL,EAAS,EACJ,EAEF,IAET,OAAW,KAAS,GACd,YAAiB,KACnB,KAAK,sBAAsB,KAAK,GAElC,KAAK,OAAO,KAAK,GAGrB,KAAK,cAAgB,EAGrB,EAAY,OAAO,KAAK,GACP,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,IAKpC,GAAM,GAAoB,KAAK,OAAO,QAGhC,EAAoC,GAC1C,OAAW,KAAS,GAClB,OAAW,KAAQ,GAAa,GAAQ,CACtC,GAAM,GAAQ,EAAK,cACnB,GAAI,GAAS,KAAM,CACjB,OAAW,KAAK,GAAK,aACnB,GAAI,EAAkB,QAAQ,KAAO,GACnC,KAAM,IAAI,IACN,sDAAsD,eACxC,EAAM,qEAEV,KAGlB,OAAW,KAAK,GAAK,cACnB,EAAkB,KAAK,GAEzB,EAAwB,KAAK,EAAM,OAMzC,KAAK,aAAe,EAIpB,GAAM,GAAW,KAAK,OAAO,IAAI,GAAK,EAAE,MACxC,OAAW,KAAQ,GAAU,CAC3B,GAAM,GAAiB,EAAS,OAAO,GAAK,IAAM,GAAM,OACxD,GAAI,IAAmB,EACrB,KAAM,IAAI,IACN,aAAa,cAAiB,wEAE9B,KAAK,UAAU,IAQvB,KAAK,cAAgB,GAErB,KAAK,aAAe,GAKpB,GAAI,IAAK,CACP,cAAe,KACf,cAAe,GACf,YAAa,GACb,cAAe,GACf,aAAc,KAAK,OACnB,cAAe,KAAK,QACpB,WAAY,KAAK,OAAO,IAAI,GAAK,MACjC,YAAa,KAAK,QAAQ,IAAI,GAAK,MACnC,YAAa,KAAK,OAAO,IAAI,GAAK,EAAE,OACpC,aAAc,KAAK,QAAQ,IAAI,GAAK,EAAE,SAExC,KAAK,MAAQ,GACb,KAAK,UAAY,EAGT,mBAAiB,CACzB,GAAI,KAAK,YAAc,EACrB,KAAM,IAAI,OAAM,cAAc,KAAK,8BA8BvC,SAAO,CACL,KAAK,oBACL,GAAM,GACc,CAAC,qBAAsB,KAAM,qBAAsB,GACvE,GAAI,EAAE,KAAK,WAAc,EAAG,CAC1B,OAAW,KAAS,MAAK,OACvB,EAAO,sBAAwB,EAAM,UAAU,qBAKjD,OAAW,KAAa,MAAK,sBAC3B,EAAO,sBAAwB,EAAU,UAAU,qBAGvD,MAAA,GAAO,qBAAuB,KAAK,UAC5B,KAGL,YAAS,CACX,MAAO,MAAK,cAGV,WAAU,EAAkB,CAC9B,KAAK,OAAO,QAAQ,GAAQ,CAExB,EAAc,kBACX,QAAQ,GAAK,EAAE,UAAY,KAElC,KAAK,WAAa,KAGhB,mBAAgB,CAIlB,GAAI,KAAK,kBAAkB,OAAS,EAClC,KAAM,IAAI,GACN,wNAMN,GAAI,CAAC,KAAK,UACR,MAAO,GAET,GAAI,GAA2B,GAC/B,OAAW,KAAS,MAAK,OACvB,EAAU,EAAQ,OAAO,EAAM,kBAEjC,MAAO,MAGL,sBAAmB,CACrB,GAAM,GAA2B,GACjC,OAAW,KAAS,MAAK,OACvB,EAAQ,KAAK,GAAG,EAAM,qBAExB,GAAI,CAAC,KAAK,UAAW,CACnB,GAAM,GAAoC,GAC1C,OAAW,KAAS,MAAK,OACvB,EAAiB,KAAK,GAAG,EAAM,kBAEjC,MAAO,GAAiB,OAAO,GAEjC,MAAO,MAGL,UAAO,CACT,MAAO,MAAK,iBAAiB,OAAO,KAAK,qBAkB3C,YAAY,EAAyB,EAAS,GAAI,CAChD,GAAM,GAAgD,GAClD,EAAoB,EACxB,OAAW,KAAS,MAAK,OACvB,OAAW,KAAU,GAAM,QAAS,CAClC,GAAI,EAAa,EAAO,eAAiB,KACvC,KAAM,IAAI,GAAW,0BAA0B,EAAO,gBAExD,EAAa,EAAO,cAAgB,EACpC,IAIJ,GAAM,GAAoD,GAC1D,OAAW,KAAQ,GAAS,CAI1B,GAAI,GAAgB,EACpB,GAAI,EAAa,IAAS,KAAM,CAC9B,GAAM,GAAS,EAAK,MAAM,KAG1B,EADI,EAAO,MAAM,EAAG,IAAI,OAAO,CAAC,EAAO,EAAO,OAAS,KACtB,KAAK,KAExC,GAAI,EAAa,IAAkB,KACjC,EAAkB,KAAK,CAAC,EAAa,GAAgB,EAAQ,aACpD,EACT,KAAM,IAAI,GACN,gDAAgD,KAEtD,MAAO,GAAa,GAGtB,GAAI,EAAQ,CAEV,GAAM,GAAuB,GAC7B,OAAW,KAAQ,GACjB,EAAW,KAAK,GAElB,GAAI,EAAW,OAAS,EACtB,KAAM,IAAI,GACN,GAAG,EAAW,aACV,0BACD,KAIX,GAAc,GAON,eAAa,CACrB,GAAM,GAAY,KAAK,YACjB,EAAwC,GAC9C,MAAA,GAAY,UAAe,KAAK,eAChC,EAAY,OAAY,EACxB,EAAY,aAAkB,eAAe,KAG7C,EAAY,QAAa,gBAClB,EAeT,OAAO,EAAc,EAAe,GAAI,CACtC,GAAM,GAAc,GAAoB,KAAK,iBAC7C,MAAO,GAAe,KAAK,UAAU,GAAe,EAgBtD,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,EAAuB,GAAO,GAC9B,GAAM,GAAW,GAAI,IACrB,OAAS,GAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,EAAS,IAAI,KAAK,OAAO,GAAI,EAAO,IAEtC,MAAO,IAAQ,KAAK,QAAS,EAAU,KAa3C,YAAY,EAAyB,EAAsB,CAEzD,MAAO,GAAK,IAAK,CACf,EAAuB,GAAO,GAC9B,GAAI,GACJ,MAAI,IAAQ,KACV,EAAsB,GAAa,KAAM,EAAO,QAEhD,EAAsB,GAAO,GAGxB,KAAK,iBAAiB,EAAQ,GAAO,KAahD,mBAAmB,EAAyB,CAC1C,GAAM,GAA0B,GAAmB,GACnD,GAAI,EAAY,SAAW,KAAK,YAAY,OAC1C,KAAM,IAAI,GACN,+BAA+B,gBAClB,KAAK,YAAY,yBAIpC,GAAM,GAAoD,GAC1D,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,IAAK,CAC3C,GAAM,GAAQ,KAAK,YAAY,GACzB,EAAa,EAAY,GAGzB,EAAW,EAAM,KAAO,OAC9B,EAAqB,GAAY,EAGnC,GAAM,GAAY,OAAO,KAAK,KAAK,cACZ,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,IAE1C,GAAI,EAAU,OAAS,EACrB,OAAW,KAAS,GAAW,CAC7B,GAAM,GAAQ,KAAK,aAAa,GAChC,OAAW,KAAQ,GAAO,CAExB,GAAM,GAAQ,EAAK,cACnB,GAAI,KAAK,YAAY,IAAI,GAAK,EAAE,IAAI,QAAQ,EAAM,MAAQ,GAExD,SAGF,GAAM,GAAuB,GAC7B,OAAS,GAAI,EAAG,EAAI,EAAK,cAAc,OAAQ,IAAK,CAClD,GAAM,GAAe,EAAK,cAAc,GAClC,EAAY,EAAK,YAAY,GAC7B,EAAc,EAAK,cAAc,GACjC,EAAW,GAAG,EAAa,QAAQ,KAAa,IAChD,EAAa,EAAqB,GACxC,EAAY,KAAK,GAGnB,GAAM,GAAc,EAAM,mBACR,GAAiB,IAE7B,EAA2B,GAAmB,GAC9C,EAAY,EAAM,aAAa,QAAQ,GAC7C,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,IAAK,CAC5C,GAAM,GAAW,GAAG,EAAM,QAAQ,KAAa,IAC/C,EAAqB,GAAY,EAAa,KAOtD,GAAM,GAAwB,GACxB,EAA4B,GAClC,OAAS,GAAI,EAAG,EAAI,KAAK,aAAa,OAAQ,IAAK,CACjD,GAAM,GAAQ,KAAK,aAAa,GAC1B,EAAY,KAAK,wBAAwB,GACzC,EAAc,KAAK,0BAA0B,GAC7C,EAAW,GAAG,EAAM,QAAQ,KAAa,IAC/C,EAAgB,KAAK,GAGvB,OAAS,GAAI,EAAG,EAAI,EAAgB,OAAQ,IAAK,CAC/C,GAAM,GAAM,EAAgB,GACd,GAAO,IAAO,IAC5B,EAAa,KAAK,EAAqB,IAIzC,MAAqB,IAAiB,GAa9B,iBAAiB,EAAkB,EAAgB,CAEvD,GAAS,MACX,GAAsB,GAAa,KAAM,EAAO,SAQlD,GAAM,GAAoD,GAC1D,OAAS,GAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EAAG,CAC3C,GAAM,GAAI,KAAK,OAAO,GAChB,EAAI,EAAO,GACX,EAAO,EAAM,GACnB,EAAU,EAAE,IAAM,CAAC,EAAG,GAGxB,GAAM,GAAY,OAAO,KAAK,KAAK,cACZ,IAAI,GAAK,SAAS,EAAG,KACrB,KAAmB,IAC1C,OAAW,KAAS,GAAW,CAC7B,GAAM,GAAQ,KAAK,aAAa,GAChC,OAAW,KAAQ,GAAO,CAExB,GAAM,GAAQ,EAAK,cACb,EAAwB,EAAK,aAC7B,EAAyB,EAAK,cAK9B,EAAe,GAAI,OACzB,OAAW,KAAK,GACV,EAAE,KAAM,IACV,EAAa,KAAK,EAAU,EAAE,KAGlC,GAAI,EAAa,SAAW,EAAsB,OAAQ,CAExD,GAAI,GAAiB,GACjB,EACA,EACA,EACA,EAKJ,GAHI,EAAK,UAAY,MACnB,GAAS,EAAK,UAEZ,EAAa,SAAW,EAAG,CAC7B,GAAM,CAAC,EAAgB,GAAgB,EAAa,GAChD,EAAO,MAAW,MACpB,GAAO,KAAU,GAEnB,EACkB,GAAO,EAAM,KAAK,EAAgB,IACpD,EAA4B,GACxB,EAAM,YAAY,EAAgB,IACtC,EAAkB,CAAC,GACnB,EAAgB,CAAC,OAEjB,GAAkB,EAAa,IAAI,GAAK,EAAE,IAC1C,EAAgB,EAAa,IAAI,GAAK,EAAE,IACpC,EAAO,MAAW,MACpB,GAAO,KAAU,GAEnB,EACkB,GAAO,EAAM,KAAK,EAAiB,IACrD,EAA4B,GACxB,EAAM,YAAY,EAAiB,IAGzC,GAAI,EAAM,oBACR,KAAM,IAAI,IACN,yHAMN,OAAS,GAAI,EAAG,EAAI,EAAuB,OAAQ,EAAE,EAAG,CACtD,GAAM,GAAI,EAAuB,GAC3B,EAAI,EAAc,GAClB,EAAO,EAAY,GACzB,EAAU,EAAE,IAAM,CAAC,EAAG,MAM9B,GAAM,GAA0B,GAC1B,EAAwB,GACxB,EAAwB,GAC9B,OAAW,KAAK,MAAK,QAAS,CACd,GACV,EAAE,KAAM,GAAW,4BAA4B,EAAE,UAAU,EAAE,MACjE,GAAM,CAAC,EAAQ,GAAQ,EAAU,EAAE,IACnC,EAAa,KAAK,EAAO,OACzB,EAAc,KAAK,GACnB,EAAY,KAAK,GAInB,MAAO,CAAC,EAAe,EAAa,GAW9B,uBAAuB,EAAe,CAC5C,GAAM,GAAiD,GACnD,EACJ,OAAW,KAAS,MAAK,OAAQ,CAC/B,EAAY,YAAiB,IAAY,EAAI,EAC7C,OAAS,GAAoB,EACxB,EAAoB,EAAM,aAAa,OAAQ,IAAqB,CACvE,GAAM,GAAU,GAAU,QAAQ,EAAO,GACrC,KAAK,eAAe,IAAI,IAE1B,GAAkB,GAAW,EAC7B,GAAa,IAInB,MAAO,GAsBT,SAAS,EAAe,EAAc,CACpC,GAAI,GAAS,KAAM,CACjB,GAAI,KAAK,OAAO,QAAU,EACxB,KAAM,IAAI,GACN,wCAAwC,yBACjC,KAAK,OAAO,oBAEvB,MAAO,MAAK,OAAO,WAGjB,GAAQ,KACV,KAAM,IAAI,GAAW,8CAIzB,OAAW,KAAS,MAAK,OACvB,GAAI,EAAM,OAAS,EACjB,MAAO,GAGX,KAAM,IAAI,GAAW,kBAAkB,KAQzC,iBAAe,CAKb,MAAO,GAAK,IAAK,CACf,GAAM,GAAmB,GACzB,OAAW,KAAS,MAAK,OACvB,OAAS,GAAY,EAAG,EAAY,EAAM,aAAa,OAClD,EAAE,EAAW,CAChB,GAAM,GAAU,GAAU,QAAQ,EAAO,GACrC,KAAK,eAAe,IAAI,IAC1B,EAAO,KAAK,GAAG,EAAM,mBAK3B,MAAO,KAIX,WAAS,CACP,GAAM,GAAmC,CAAC,KAAM,KAAK,MAK/C,EACF,KAAK,uBAAuB,KAAK,QAG/B,EAAe,GACrB,OAAW,KAAS,MAAK,OAAQ,CAC/B,GAAM,GAAiB,EAAM,eACvB,EAAc,EAAM,YACpB,EAAuB,GAC7B,OAAS,GAAoB,EACxB,EAAoB,EAAM,aAAa,OAAQ,IAAqB,CACvE,GAAM,GAAO,EAAM,aAAa,GAC1B,EAAU,GAAU,QAAQ,EAAO,GACrC,EAAS,GACb,GAAI,KAAK,eAAe,IAAI,GAAU,CAGpC,GAAI,EAAK,SACP,GAAI,CACF,KAAK,UAAU,EAAK,UACpB,EAAS,EAAK,eACP,EADO,CAEd,QAAQ,KACJ,SAAS,EAAM,uDAEZ,EAAK,mHAGZ,EAAS,GAGb,GAAI,EAAK,cAAc,OAAS,EAAG,CACjC,GAAM,GAAW,GACjB,OAAS,GAAI,EAAG,EAAI,EAAK,cAAc,OAAQ,IAAK,CAClD,GAAM,GAAe,EAAK,cAAc,GAClC,EAAY,EAAK,YAAY,GAC7B,EAAc,EAAK,cAAc,GACjC,EAAU,GAAU,QAAQ,EAAc,GAC5C,EAAe,EAAkB,GACjC,GAAgB,MAClB,GAAe,GAEjB,EAAS,KACL,CAAC,EAAa,KAAM,EAAc,EAAa,IAErD,EAAqB,KAAK,KAIhC,GAAM,GAAiC,GACvC,EAAK,KAAU,EAAM,KACrB,EAAK,UAAe,EACpB,EAAK,OAAY,EACjB,EAAK,aAAkB,EACvB,EAAa,KAAK,GAEpB,EAAO,OAAY,EAEnB,GAAM,GAAc,GACpB,OAAS,GAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAAK,CAChD,GAAM,GAAQ,KAAK,YAAY,GACzB,EAAY,KAAK,uBAAuB,GAExC,EAAU,GAAU,QAAQ,EAAO,GACzC,GAAI,CAAC,KAAK,eAAe,IAAI,GAC3B,SAEF,GAAI,GAAe,EAAkB,GACjC,GAAiB,MACnB,GAAe,GAEjB,GAAM,GAAc,KAAK,yBAAyB,GAClD,EAAY,KAAK,CAAC,EAAM,KAAM,EAAc,IAE9C,EAAO,YAAiB,EAExB,GAAM,GAAe,GACrB,OAAS,GAAI,EAAG,EAAI,KAAK,aAAa,OAAQ,IAAK,CACjD,GAAM,GAAQ,KAAK,aAAa,GAC1B,EAAY,KAAK,wBAAwB,GAEzC,EAAU,GAAU,QAAQ,EAAO,GACzC,GAAI,CAAC,KAAK,eAAe,IAAI,GAC3B,SAEF,GAAI,GAAe,EAAkB,GACjC,GAAiB,MACnB,GAAe,GAEjB,GAAM,GAAc,KAAK,0BAA0B,GACnD,EAAa,KAAK,CAAC,EAAM,KAAM,EAAc,IAE/C,MAAA,GAAO,aAAkB,EAClB,QAgBF,YACH,EACA,EACA,EAAgB,GAChB,EAAiB,GAAK,CAGxB,GAAM,GAA8C,GAO9C,EAAkE,GACxE,WACI,EAAc,EAAkC,CAC5C,EAAM,OAAQ,GAGlB,EAAiB,EAAM,MAAM,KAAK,GAFlC,EAAiB,EAAM,MAAQ,CAAC,GAMpC,WAAqB,EAAc,EAAkC,CACnE,GAAM,GAAiC,GACnC,EACJ,OAAW,KAAa,GAAU,CAChC,GAAM,GAAmB,EAAU,GAC7B,EAAmB,EAAU,GAC7B,EAAqB,EAAU,GAKrC,GAHA,EAAS,EAAU,IAAM,KACrB,GACA,EAAU,GACV,CAAE,KAAoB,IAAgB,CACxC,EAAmB,EAAO,GAC1B,OAEF,GAAM,GAAe,EAAc,GACnC,GAAI,EAAa,aAAa,QAAU,EAAkB,CACxD,EAAmB,EAAO,GAC1B,OAEF,GAAM,GAAc,EAAa,aAAa,GAC9C,EAAa,KAAK,EAAY,cAAc,IAK1C,EAAa,OAAS,GACxB,EAAM,MACY,GAAiB,GAC/B,GAUR,WAAsB,EAAwC,CAC5D,GAAM,GAAY,EAAU,KAEtB,EACF,GACI,EACA,EAAO,eAAoB,KACvB,EAAO,cACP,IACZ,EAAM,6BAA6B,GACnC,EAAc,GAAa,EAGvB,EAAU,aACG,QAAQ,GAAW,CAClC,GAAI,CAAE,aAAoB,QACxB,KAAM,IAAI,GACN,yDACI,KAMV,EAAmB,EAAO,KAK9B,GAAM,GAAO,EAAO,KACd,EAAmB,EAAO,OAChC,OAAW,KAAa,GACtB,EAAa,GAOf,KAAO,CAAe,GAAc,IAClC,OAAW,KAAa,GAAkB,CACxC,GAAM,GAAQ,EAAc,EAAU,MACtC,GAAI,EAAM,OAAQ,GAAkB,CAClC,GAAM,GAAkC,EAAiB,EAAM,MAC/D,MAAO,GAAiB,EAAM,MAC9B,OAAW,KAAY,GACrB,EAAY,EAAO,IAM3B,GAAM,GAAiC,GACjC,EAAkC,GAClC,EACF,EAAO,YACX,OAAW,KAAa,GAAuB,CAC7C,GAAM,GAAY,EAAU,GACtB,EAAY,EAAU,GACtB,EAAc,EAAU,GAChB,GAAO,IAAa,IAElC,GAAM,GADQ,EAAc,GACK,aAAa,GAAW,cACzD,EAAa,KAAK,EAAmB,IAEvC,GAAM,GACF,EAAO,aACX,OAAW,KAAa,GAAwB,CAC9C,GAAM,GAAY,EAAU,GACtB,EAAY,EAAU,GACtB,EAAc,EAAU,GAChB,GAAO,IAAa,IAElC,GAAM,GADQ,EAAc,GACK,aAAa,GAAW,cACzD,EAAc,KAAK,EAAmB,IAExC,MAAO,IAAI,GAAI,CAAC,OAAQ,EAAc,QAAS,EAAe,KAAA,OAS5D,WAAQ,CAGV,GAAI,KAAK,UACP,KAAM,IAAI,GACN,wLAIN,OAAW,KAAS,MAAK,OACvB,GAAI,EAAM,SACR,MAAO,GAGX,MAAO,GAST,aAAW,CACT,EAAK,IAAK,CACR,KAAK,OAAO,QAAQ,GAAQ,CAEtB,EAAM,UACR,EAAM,oBCjwChB,aACI,EAAmD,EACnD,EAAwC,CAC1C,GAAM,GAAa,EAAY,OAC/B,GAAI,GAAW,MAAS,MAAM,QAAQ,IAAY,EAAQ,SAAW,EACnE,MAAO,GAAY,IAAI,GAAQ,MAEjC,GAAI,IAAe,EACjB,MAAI,OAAM,QAAQ,IAAY,EAAQ,SAAW,EACxC,EACE,MAAO,IAAY,UAAY,EAAY,IAAM,GACnD,CAAE,EAA2B,EAAY,KAEzC,CAAC,GAGZ,GAAI,MAAM,QAAQ,GAAU,CAC1B,GAAI,EAAQ,SAAW,EACrB,KAAM,IAAI,OACN,YAAY,oBAA6B,EAAQ,wCAChB,4EAGvC,MAAO,WAEL,MAAO,IAAY,UAAY,OAAO,KAAK,GAAS,OAAS,GAC7D,MAAQ,GAA2B,OAAO,KAAK,GAAS,KACpD,SAAU,CAChB,GAAM,GAAwB,GAC9B,MAAA,GAAY,QAAQ,GAAa,CAC3B,IAAc,GAChB,EAAO,KAAM,EAA2B,IAExC,EAAO,KAAK,QAGT,MAEP,MAAM,IAAI,OACN,2BAA2B,kBACrB,kCACH,gCAAyC,oBAChC,qBAA8B,KAAK,UAAU,MAiB3D,YACF,EACA,EAAqB,CACvB,MAAO,KACH,EAAa,EAAa,eA4BhC,kBACI,EAAW,EAAuB,EAClC,EAA6B,CAC/B,GAAI,GAAgB,MAAQ,GAAoB,KAG9C,KAAM,IAAI,OAAM,+CAGlB,GAAI,GAAe,KAAM,CAEvB,GAAM,GAAqB,EAAK,IAAK,CACnC,GAAI,EAAE,MAAM,SAAW,EAErB,MAAO,GAAE,QACJ,GAAI,EAAE,MAAM,SAAW,EAC5B,GAAI,EAAE,MAAM,GAAK,EAAG,CAElB,GAAM,GAAO,EACb,MAAO,GAAE,OAAO,OACX,CAAA,GAAI,EAAE,MAAM,KAAO,EAExB,MAAO,GAAE,QAAQ,CAAC,EAAE,MAAM,KAE1B,KAAM,IAAI,OACN,+CAA+C,EAAE,MAAM,8EAK7D,MAAM,IAAI,OACN,yCAAyC,EAAE,gFAK7C,EAAgB,MAAM,KAAK,KAAM,GAAS,QAChD,GAAQ,GACR,GAAM,GAA8B,GACpC,MAAA,GAAc,QAAQ,GAAa,CACjC,GAAI,EAAY,IAAe,KAC7B,KAAM,IAAI,OACN,wEACa,+CAGjB,EAAkB,KAAK,EAAY,MAIhC,GAAS,EAAmB,eAEnC,OAAO,MAWL,aAA8B,EAAgB,EAAqB,CACvE,MAAO,GAAI,EAAQ,GCHrB,GAAM,KAAgC,GAgBtC,YAII,EAAY,EAAe,CAC7B,GAAI,GACA,EAEE,EAAiB,EACvB,EAAK,EAAe,GACpB,EAAK,EAAe,GAChB,EAAK,OACL,GAAM,MAAQ,GAAM,KACpB,IAAM,mPAIC,KAEX,GAAM,GACF,GAA0B,QAAS,EAAM,WAAY,GACnD,EACF,GAA0B,SAAU,EAAM,YAAa,GAErD,EAAoB,EAAY,GAAG,MAAM,GAE3C,EAAK,OACL,EAAY,SAAW,EAAM,OAAO,OACpC,IAAM,mBAAmB,EAAM,OAAO,2CACtB,EAAY,yCACrB,KAAK,UAAU,EAAM,gBAE5B,EAAK,OACL,EAAY,SAAW,EAAM,QAAQ,OACrC,IACI,mBAAmB,EAAM,QAAQ,4CACrB,EAAY,2CACrB,KAAK,UAAU,EAAM,iBAEhC,OAAS,GAAS,EAAG,EAAS,EAAY,OAAQ,IAC5C,EAAK,OACL,EAAY,GAAQ,MAAM,KAAO,EACjC,IAAM,8BACC,EAAM,WAAW,UACd,EAAY,GAAQ,MAAM,iBACnB,oBAA4B,EAAM,WAAW,OAGpE,OAAS,GAAS,EAAG,EAAS,EAAY,OAAQ,IAC5C,EAAK,OACL,EAAY,GAAQ,MAAM,KAAO,EACjC,IAAM,+BACC,EAAM,YAAY,UACf,EAAY,GAAQ,MAAM,iBACnB,oBAA4B,EAAM,WAAW,OAGpE,MAAO,CAAC,GAAI,EAAa,GAAI,GAG/B,YACI,EAAuB,EAAiB,EAA0B,CACpE,GAAI,YAAsB,IACxB,MAAO,CAAC,GACH,GAAI,MAAM,QAAQ,GACvB,MAAI,GAAK,OACL,EAAO,SAAW,EAAM,OACxB,IAAM,wBAAwB,EAAO,gCACjC,EAAM,uBAAuB,UAAsB,MACpD,EACF,CACL,GAAM,GAAuB,GAE7B,OAAW,KAAQ,GAAO,CACxB,GAAI,EAAO,IAAS,KAClB,KAAM,IAAI,GACN,gEACG,UAAsB,OAE/B,EAAO,KAAK,EAAO,IAErB,MAAO,IAIX,aACI,EAIiC,CAEnC,GAAI,EAAK,SAAW,EAClB,KAAM,IAAI,IACN,0DAEN,MAAO,CAAC,GAAI,EAAK,GAAI,GAAI,EAAK,IAGhC,mBAII,EAAY,EACZ,EAA4B,CAC9B,GAAM,GAAqB,EAAK,iBAAmB,KAyBnD,GAxBI,EAAK,OACL,EAAM,WAAa,KACnB,IAAM,kGAGN,EAAK,OACL,GAAQ,KACR,IAAM,iGAEN,EAAK,OACL,EAAK,QAAU,MAAQ,EAAK,OAAS,GAAK,OAAO,UAAU,EAAK,QAChE,IAAM,iFACkB,EAAK,UAC7B,EAAK,OACL,CAAC,GACI,EAAK,gBAAkB,GAAK,OAAO,UAAU,EAAK,iBACvD,IAAM,uGACwC,EAAK,mBACnD,EAAK,OAEJ,EAAa,iBAAsB,KACpC,IAAM,qFAGN,EAAM,WACR,KAAM,IAAI,OACN,gEAEN,EAAM,WAAa,GAEnB,GAAI,CACF,GAAM,GAAe,EAAK,gBAAkB,KACxC,EACA,EACJ,GAAI,EACF,GAAI,GAAgB,EAAK,gBACnB,EAAK,OACL,EAAK,mBAAqB,MACrB,EAAK,kBAAoB,GACzB,OAAO,UAAU,EAAK,mBAC3B,IAAM,iJAGS,EAAK,yBACnB,CACL,GAAM,GAAiB,IACnB,EAAK,gBAMT,EAAQ,EAAe,GACvB,EAAQ,EAAe,GAI3B,GAAM,GAAgB,EAAM,oBACtB,EAAY,EAAM,yBAEpB,EACA,EACF,EACI,EAAU,QAAQ,OAAO,EAAU,IAAI,GAAK,OAAS,IAEzD,EAAkB,EAAU,QAG9B,GAAM,GAAY,GAAqB,EAAK,UAAW,EAAK,YACtD,EAAU,EAAK,SAAW,KAAO,EAAI,EAAK,QAC1C,CAAC,aAAA,EAAc,QAAA,GAAW,GAC5B,EAAW,EAAS,EAAK,OAAQ,KAAM,KACvC,IAAiB,EAAS,GAC1B,KACA,EAAc,GAClB,EAAa,SAAS,GACtB,EAAM,QAAU,EAEhB,KAAM,GAAa,eACnB,EAAM,cAAgB,GACtB,GAAI,GAAQ,EAAK,cAAgB,KAAO,EAAI,EAAK,aAE7C,EAAe,KAAM,GAAQ,WACjC,KAAO,EAAQ,EAAK,QAAQ,CAC1B,GAAM,GAA4B,GAClC,KAAM,GAAa,aAAa,GAChC,GAAI,GAAY,EACZ,EAAa,EAIjB,IAHK,GACH,GAAe,KAAM,GAAQ,YAExB,EAAqB,EAAY,EAAK,gBAAkB,IAAM,CACnE,GAAM,GAAc,KAAM,GAAa,OAIvC,GAAI,GAAsB,EAAY,KAAM,CAC1C,QAAQ,KACJ,uCACG,EAAK,oEAEL,2IAIA,EAAK,gBAAkB,EAAK,0FAGnC,MAGF,GAAI,EAAY,OAAS,KAAM,CAC7B,GAAM,CAAC,GAAA,EAAI,GAAA,GACP,GAA8B,EAAO,EAAY,OAC/C,EAA4B,GAClC,EAAU,MAAW,EACrB,EAAU,KAAU,EAAG,GAAG,MAAM,GAEhC,KAAM,GAAa,aAAa,EAAY,GAE5C,GAAM,GAA8B,GACpC,GAAI,EAAK,aAAe,KAAM,CAC5B,GAAM,GACF,GAAwB,EAAK,YAAa,EAAM,aACpD,OAAS,GAAI,EAAG,EAAI,EAAqB,OAAQ,EAAE,EACjD,EAAc,KAAK,KAAM,IACrB,EAAG,GAAI,KAAM,EAAqB,KAK1C,GAAM,GAAM,EAAG,OAAO,GAAI,OAAO,GAC3B,EAAO,EAAc,GACvB,GAAQ,GACZ,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EAAG,CACzC,GAAM,GAAQ,EAAU,GAClB,EAAM,EAAK,GACjB,EAAU,GAAS,EACf,GAAK,GAGX,KAAM,GAAa,WAAW,EAAY,GAC1C,GAAqB,GAErB,IACA,IAGF,GAAI,EAAqB,GAAa,EAAK,gBAClB,EAAY,KAAM,CAEzC,GAAI,EAAc,CAChB,GAAI,GACA,GAAgB,EAAK,gBACvB,EAAU,GAAO,KAAM,GAAM,gBACzB,EAAK,eAAgB,CAAC,QAAS,EAAK,qBAExC,EAAU,GAAO,EAAM,SAAS,EAAO,EAAO,CAC5C,UAAW,EAAK,qBAAuB,KACnC,IACA,EAAK,oBACT,QAAS,KAGb,OAAS,GAAI,EAAG,EAAI,EAAM,aAAa,OAAQ,EAAE,EAC/C,EAAU,OAAO,EAAM,aAAa,MAAQ,EAAQ,GAQxD,MAGF,GAAI,EAAM,cACR,MAKJ,GAFA,KAAM,GAAa,WAAW,EAAO,GACrC,IACI,EAAM,cACR,MAGJ,MAAA,MAAM,GAAa,aACnB,KAAM,GAAM,QAAQ,WACb,EAAM,eAAA,CAEb,EAAM,WAAa,IAKvB,aACI,EAAqB,EAA4B,CAEnD,GAAI,GAAwB,KAC5B,MAAI,GAAK,iBAAmB,KAC1B,EAAgB,EAAK,gBACZ,OAAO,SAAS,EAAQ,OACjC,GAAgB,EAAQ,MAEnB,EAKT,YACI,EAIU,CACZ,MAAQ,OAAQ,GAAuB,UAAa,WAKtD,aAAiC,EACe,CAC9C,MAAQ,OAAQ,GAA6B,MAAS,WAGxD,mBAII,EAAY,EACZ,EAA8B,CAChC,EAAO,GAAQ,GACf,GAAM,GAAa,EAAK,SAAW,KAC7B,EAAI,EAAM,aACZ,EAAqB,GACzB,GAAI,EAAK,QAAU,EACjB,KAAM,IAAI,IAAoB,wCAG5B,EAAK,OACL,CAAC,GAAe,EAAK,QAAU,GAAK,OAAO,UAAU,EAAK,SAC1D,IAAM,wEACU,KAAK,UAAU,EAAK,YACxC,GAAM,GAAe,IAAqB,GACtC,EACA,KAAO,GAAuB,WAE9B,EAAc,EACd,EAAQ,EAEZ,KAAO,EAAa,EAAQ,EAAK,QAAU,IAAM,CAC/C,GAAM,GAAc,KAAM,GAAa,OAmCvC,GAlCA,EAAW,EAAK,IAAK,CACnB,GAAI,EAAY,MAAO,CAGrB,GAAM,CAAC,GAAA,EAAI,GAAA,GACP,GAA8B,EAAO,EAAY,OAC/C,EAAU,EAAG,OAAO,GACpB,EAAgB,EAAK,IAAM,EAAE,IAGnC,GAFI,GAAQ,GAER,IAAU,EACZ,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EACtC,EAAK,KAAK,GAAO,IAIrB,GAAM,GAAY,EAAQ,GAAG,MAAM,GACnC,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EAAG,CACzC,GAAM,GAAW,EAAU,GACrB,EAAY,EAAK,GACvB,EAAK,GACG,EAAK,IAAU,GAAI,EAAK,GAAQ,EAAI,EAAW,KACnD,EAAQ,GACN,GAAQ,GAGZ,GAAQ,GACZ,GAAe,EAEf,EAAE,EAEJ,MAAO,KAGL,EAAY,KAAM,CAChB,GACF,QAAQ,KACJ,gLAG0B,EAAK,2FAIrC,OAIJ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAY,EAAK,GACvB,EAAK,GAAS,GAAI,EAAK,GAAI,GACvB,GAAQ,GAGd,MAAO,IAAiB,GCpcpB,YAAyB,EAAiB,CAC1C,EAAK,OACL,EAAY,GAAK,OAAO,UAAU,GAClC,IAAM,2DACF,KAgBJ,YACF,EAAyB,EAAe,EAAY,CACtD,MAAI,IAAU,KACL,CAAC,MACC,MAAM,QAAQ,GAChB,EAAO,IAAI,GAAS,GAAoB,EAAO,EAAO,EAAO,IAE7D,GAAoB,EAAQ,EAAO,EAAO,GAiB/C,YACF,EAAyB,EAAiB,CAC5C,MAAW,GAAK,IACV,GAAU,KACL,KACE,MAAM,QAAQ,GAChB,EAAO,IACV,GAAU,GAAqB,EAAO,IAInC,GACH,EAAQ,EAAQ,QAAU,QAAU,EAAU,EAAQ,UAa1D,YACF,EAAc,EAAiB,CACjC,GAAM,GAAkC,GACpC,EAAa,EACb,EAAmB,KACvB,KAAO,EAAa,GAClB,EAAW,EAAa,EACpB,GAAY,GACd,GAAW,GAEb,EAAO,KAAK,CAAC,EAAY,IACzB,EAAa,EAEf,MAAO,GA8BT,mBAGI,EAAY,EAAiC,EAC7C,EAAsB,EAAoB,EAAiB,EAC3D,EAA4B,EAC5B,EAAmB,EAA0B,EAC7C,EAAuB,EACvB,EAAwB,CACtB,GAAa,MACf,GAAY,IAEV,GAAU,MACZ,GAAS,GAEP,GAAW,MACb,GAAU,IAER,GAAgB,MAClB,GAAe,GAIjB,GAAI,GAAe,GAKnB,GAJI,GAAQ,MAAQ,GAAU,MAC5B,GAAe,IAGb,GAAmB,MACrB,GAAe,GACX,GAAiB,MACnB,KAAM,IAAI,GACN,oGAKR,GAAM,GACF,EAAM,gBAAgB,EAAK,EAAW,EAAe,mBACrD,EACA,GAAmB,MACrB,GAAa,GAAM,EAAG,IAGpB,GAAW,MACb,GAAU,GAGZ,GAAM,CAAC,aAAA,EAAc,QAAA,GAAW,GAC5B,EAAW,EAAS,EAAQ,EAAc,EAAiB,EAC3D,EAAW,EAAc,GAC7B,EAAa,SAAS,GACtB,EAAM,QAAU,EAChB,KAAM,GAAa,eACnB,EAAM,cAAgB,GAItB,OAAS,GAAQ,EAAc,EAAQ,EAAQ,EAAE,EAAO,CACtD,KAAM,GAAa,aAAa,GAChC,GAAM,GAA4B,GAClC,GAAI,GAAiB,KACnB,KAAM,IAAI,IACN,8CACC,CACL,GAAI,IAAY,QACd,KAAM,IAAI,IAAoB,0CACrB,GACT,EAAK,QAAQ,GAIf,GAAM,GAAoB,GAAS,GAE7B,EAAU,GAAY,EAAiB,GAC7C,OAAS,GAAa,EAAG,EAAa,EAAQ,OAAQ,EAAE,EAAY,CAClE,GAAM,GAA4B,GA0ClC,GAzCA,KAAM,GAAa,aAAa,EAAY,GAExC,EAAK,IAAK,CACZ,GAAM,GAAa,EAAQ,GAAY,GACjC,EAAW,EAAQ,GAAY,GAC/B,EAAW,GACI,EAAmB,EACnB,EAAW,GAChC,EAAU,MAAW,EACrB,EAAU,KAAU,EAAW,EAI/B,GAAM,GAAW,GAAqB,EAAK,GACrC,EAAO,EAAE,GACf,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EAAG,CACzC,GAAM,GAAQ,EAAU,GAClB,EAAM,EAAK,GACjB,EAAU,GAAS,EACf,GAAK,GAIX,GAAI,IAAe,EAAQ,OAAS,GAC9B,EAAc,CAChB,GAAM,GAAU,EAAM,SAAS,EAAM,EAAQ,GAE7C,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EAAG,CACzC,GAAM,GAAQ,EAAU,GAClB,GAAM,EAAQ,GAChB,GAAK,IAET,EAAU,OAAS,GAAS,OAMpC,KAAM,GAAa,WAAW,EAAY,GAC1C,GAAqB,GAEjB,EAAM,cACR,MAKJ,EAAkB,UAIpB,GADA,KAAM,GAAa,WAAW,EAAO,GACjC,EAAM,cACR,MAGJ,MAAA,MAAM,GAAa,aAEnB,KAAM,GAAM,QAAQ,WACb,EAAM,QAGf,mBAGI,EAAY,EACZ,EACA,EAAqB,GAAE,CACzB,GAAI,EAAM,WACR,KAAM,IAAI,OACN,gEAEN,EAAM,WAAa,GACnB,GAAI,GACA,EACA,EACA,EACA,EACA,EACA,EACJ,GAAI,CACF,GAAM,GAAY,EAAK,WAAa,KAAO,GAAK,EAAK,UACrD,GAAe,GAIf,GAAM,GAAiB,GACjB,EACF,KAAM,GAAM,oBACR,EAAG,EAAG,EAAK,aAAc,EAAK,YAAa,EAC3C,GACR,EAAS,EAAiB,GAC1B,EAAU,EAAiB,GAC3B,EAAgB,EAAiB,GAGjC,GAAI,GAAe,GACf,EACJ,GAAI,EAAK,gBAAkB,MAAQ,EAAK,eAAe,OAAS,EAAG,CAEjE,GADA,EAAe,GACX,EAAK,eAAe,SAAW,EAEjC,EAAY,EAAK,eAAe,GAChC,EAAY,EAAK,eAAe,OAC3B,MAAI,GAAK,eAAe,SAAW,EAClC,GAAI,IACN,iEAEE,GAAI,GACN,0GAEG,EAAK,8BAGd,GAAM,GAAiB,GACjB,EACF,KAAM,GAAM,oBACR,EAAW,EAAW,KACtB,KACA,EAAgB,GACxB,EAAO,EAAgB,GACvB,EAAO,EAAgB,GACvB,EAAS,EAAK,OAAO,WAGnB,EAAK,iBAAmB,MAAQ,EAAK,gBAAkB,GACvD,EAAK,gBAAkB,EAAG,CAC5B,EAAe,GAEf,GAAM,GACF,KAAK,MAAM,EAAO,GAAG,MAAM,GAAM,GAAI,EAAK,kBACxC,EAAoB,EAAO,GAAG,MAAM,GAC1C,EAAO,GAAY,EAAQ,EAAS,GACpC,EAAS,GAAY,EAAQ,EAAG,GAChC,EAAO,GAAY,EAAS,EAAS,GACrC,EAAU,GAAY,EAAS,EAAG,GAGlC,EAAS,EAAK,OAAO,OAGZ,GAAK,iBAAmB,MACjC,GAAe,IAIjB,GAAM,GAAM,EAAO,OAAO,GAAS,OAAO,GAE1C,EAAM,mCAcN,GAAM,GAAgB,EAAM,oBACtB,EAAY,EAAM,yBAEpB,EACA,EACA,EACF,GAAM,mBACN,EAAc,EAAM,aACpB,EACI,EAAU,QAAQ,OAAO,EAAU,IAAI,GAAK,OAAS,KAEzD,GAAc,KACd,EAAS,GACT,EAAkB,EAAU,SAG9B,GAAM,GAAY,GAAqB,EAAK,UAAW,EAAK,YAK5D,MAJY,MAAM,KACd,EAAO,EAAe,EAAK,EAAW,EAAW,EAAK,OACtD,EAAK,QAAS,EAAW,EAAa,EAAQ,EAAK,QACnD,EAAiB,EAAK,aAAc,KAAM,aAAA,CAG9C,EAAM,WAAa,GAEnB,GAAkB,EAAQ,GAC1B,GAAkB,EAAS,GAC3B,GAAkB,EAAkB,GACpC,GAAkB,EAAkB,GAChC,GAAiB,MACf,GAAQ,IAYZ,YAAqC,EAAwB,CACjE,GAAM,GAAiB,GACnB,YAAmB,KACrB,GAAU,CAAC,IAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,EAAE,EAAG,CACvC,GAAM,GAAS,EAAQ,GACvB,GAAI,EAAO,OAAS,EAClB,EAAK,KAAK,GAAW,EAAQ,QACxB,CAAA,GAAI,EAAO,OAAS,EACzB,KAAM,IAAI,OACN,yEAGJ,EAAK,KAAK,IAGd,MAAO,GAeH,YACF,EACA,EAAyD,CAC3D,GAAI,GAAW,KACb,OAEF,GAAM,GAAyB,GAC/B,GAAI,YAAsB,IACxB,EAAa,KAAK,EAAW,YACpB,MAAM,QAAQ,GACvB,EAAW,QAAQ,GAAK,EAAa,KAAK,EAAE,aACnC,GAAc,KAEvB,OAAW,KAAQ,GAAY,CAC7B,GAAM,GAAY,EAAW,GAC7B,EAAa,KAAK,EAAU,IAIhC,GAAM,GAA6B,GACnC,GAAI,YAAmB,IACjB,EAAa,QAAQ,EAAQ,MAAQ,IACvC,EAAiB,KAAK,WAEf,MAAM,QAAQ,GACvB,EAAQ,QAAQ,GAAI,CACd,EAAa,QAAQ,EAAE,MAAQ,IACjC,EAAiB,KAAK,aAGjB,GAAW,KAEpB,OAAW,KAAQ,GAAS,CAC1B,GAAM,GAAS,EAAQ,GACnB,EAAa,QAAQ,EAAO,MAAQ,IACtC,EAAiB,KAAK,GAK5B,EAAiB,QAAQ,GAAI,CACtB,EAAE,YACL,EAAE,YCtkBF,aAAuB,EAC+B,CAC1D,MAAO,aAAa,IAMhB,YAAsB,EAC6B,CACvD,MAAO,OAAM,QAAQ,GAMjB,YAAqB,EAC6B,CACtD,MAAO,CAAC,IAAa,IAAM,CAAC,GAAY,GAcpC,YACF,EAAqD,EACrD,EAAkB,EAAiB,GAAM,EAAkB,GAAE,CAC/D,GAAI,GAAS,MAAQ,EAAM,SAAW,EAAG,CAGvC,GAAI,GAAQ,KAAM,CAChB,GAAI,GAAoB,GACxB,GAAI,GAAY,IAAU,EAAkB,OAAS,EACnD,EAAoB,WACX,GAAW,IACpB,OAAW,KAAO,GAChB,GAAI,EAAK,eAAe,GAAM,CAC5B,EAAoB,GACpB,WAKJ,GAAoB,GAEtB,GAAI,EACF,KAAM,IAAI,GACN,6BAA6B,+BAClB,KAGnB,MAAO,GAET,GAAI,GAAQ,KACV,MAAO,GAAM,IAAI,GAAQ,MAG3B,GAAI,GACJ,GAAI,GAAW,GAAO,CACpB,EAAO,EACP,EAAS,GACT,OAAW,KAAQ,GAAO,CACxB,GAAI,EAAK,IAAS,KAChB,KAAM,IAAI,GACN,yBAAyB,kCACtB,KAET,EAAO,KAAK,EAAK,aAEV,GAAY,GAAO,CAE5B,GADA,EAAO,EACH,EAAK,SAAW,EAAM,OACxB,KAAM,IAAI,GACN,6BAA6B,kHAEM,EAAM,sEACO,KAEtD,EAAS,MACJ,CAEL,GADA,EAAO,EACH,EAAM,OAAS,EACjB,KAAM,IAAI,GACN,aAAa,aAA2B,EAAM,4EAE1C,EAAK,SAEf,EAAS,CAAC,GAMZ,GAHA,EAAS,GAA2B,GAGhC,GAAU,KACZ,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,GAAI,EAAO,IAAM,KACf,SAEF,GAAM,GAAQ,EAAO,GACrB,GAAI,EAAM,MAAM,SAAW,EAAO,GAAG,OACnC,KAAM,IAAI,GACN,uBAAuB,eAA6B,EAAM,cAC/C,EAAO,GAAG,iDACZ,EAAM,SAErB,OAAS,GAAI,EAAG,EAAI,EAAO,GAAG,OAAQ,EAAE,EAAG,CACzC,GAAI,IAAM,GAAK,CAAC,EAEd,SAEF,GAAM,GAAM,EAAM,MAAM,GAClB,EAAS,EAAO,GAAG,GACzB,GAAI,GAAU,MAAQ,GAAU,GAAK,IAAQ,EAC3C,KAAM,IAAI,GACN,uBAAuB,eAA6B,EAAM,qBACxC,EAAO,kCACrB,EAAM,YAKtB,MAAO,GAUH,aACF,EAAkB,EAAmB,EAAkB,CACzD,GAAM,GAAO,GAAO,EAAO,IAAI,GAAS,EAAM,MAAM,KACpD,EAAK,OACL,GAAM,GAAO,GAAO,EAAQ,IAAI,GAAU,EAAO,MAAM,KAGvD,GAFA,EAAK,OAED,EAAK,OAAS,EAChB,KAAM,IAAI,GACN,mFAEG,KAAK,UAAU,EAAO,IAAI,GAAS,EAAM,WAElD,GAAI,EAAK,OAAS,EAChB,KAAM,IAAI,GACN,oFAEG,KAAK,UAAU,EAAQ,IAAI,GAAU,EAAO,WAErD,GAAI,EAAK,OAAS,GAAK,EAAK,OAAS,GAAK,CAAC,EAAK,YAAY,EAAM,GAChE,KAAM,IAAI,GACN,iFACkB,EAAK,0BAA0B,EAAK,wBAc9D,aACI,EAAmB,EAA2B,EAAqB,CAErE,GAAM,GAAY,CACT,GAAyB,GACzB,IAET,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,EAAE,EAAG,CACvC,GAAM,GAAI,EAAQ,GACZ,EAAO,EAAQ,GACf,EAAQ,EAAa,GAC3B,GAAI,GAAQ,KAGZ,CAAA,GAAI,IAAgB,IACd,EAAE,MAAM,EAAE,MAAM,OAAS,KAAO,EAClC,KAAM,IAAI,GACN,2CAA2C,EAAE,iKAOrD,GAAI,EAAU,QAAQ,KAAU,GAAI,CAClC,GAAM,GAAe,EAAE,MAAM,MAAM,GAC7B,EAAc,EAAM,MAAM,GAChC,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,EAAE,EAAG,CAC5C,GAAM,GAAY,EAAa,GACzB,EAAS,EAAY,GAC3B,GAAI,GAAU,MAAQ,IAAc,EAClC,KAAM,IAAI,GACN,8BAA8B,EAAE,2CACb,iGAkCjC,YACI,EAAuB,EAAiB,EACxC,EAAiB,GAAM,EAAkB,GAAE,CAC7C,GAAI,GACJ,GAAI,MAAM,QAAQ,GAAO,CACvB,GAAI,EAAK,SAAW,EAAM,OACxB,KAAM,IAAI,GACN,6BAA6B,sHAEU,EAAM,qCACzB,EAAK,sBAE/B,EAAS,MACJ,CACL,GAAI,EAAM,OAAS,EACjB,KAAM,IAAI,GACN,qBAAqB,EAAM,UAAU,oEAElC,KAAK,UAAU,EAAK,WAE7B,EAAS,CAAC,GAGZ,GAAI,GAAU,KACZ,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,GAAI,EAAO,IAAM,KACf,SAEF,GAAM,GAAQ,EAAO,GACrB,GAAI,EAAM,MAAM,SAAW,EAAO,GAAG,OACnC,KAAM,IAAI,GACN,uBAAuB,eAA6B,EAAM,cAC/C,EAAO,GAAG,iDACZ,KAAK,UAAU,EAAM,UAEpC,OAAS,GAAI,EAAG,EAAI,EAAO,GAAG,OAAQ,EAAE,EAAG,CACzC,GAAI,IAAM,GAAK,CAAC,EACd,SAEF,GAAM,GAAM,EAAM,MAAM,GAClB,EAAS,EAAO,GAAG,GACzB,GAAI,GAAU,MACR,IAAW,EACb,KAAM,IAAI,GACN,uBAAuB,eACpB,EAAM,oBAAoB,KAAK,UAAU,EAAO,gCAC3B,KAAK,UAAU,EAAM,aAqBvD,aACF,EAEA,EAAqB,CACvB,GAAI,GAAW,MAAQ,MAAM,QAAQ,IAAY,EAAQ,SAAW,EAClE,MAAO,GAAY,IAAI,GAAQ,IAGjC,GAAI,GAEJ,GAAI,MAAO,IAAY,UAAY,MAAO,IAAY,WACpD,EAAiB,CAAC,WACT,MAAM,QAAQ,IAAY,MAAO,IAAY,SACtD,EAAiB,MAGjB,MAAM,IAAI,WACN,kGACsC,KAG5C,GAAI,MAAM,QAAQ,GAEhB,MAAO,GAAY,IACf,GAAQ,GACP,CAEL,GAAM,GAAqD,GAC3D,OAAW,KAAQ,GAAa,CAC9B,GAAI,GACA,EAAe,eAAe,GAAQ,EAAe,GAAQ,GAC5D,MAAM,QAAQ,IACjB,GAAgB,CAAC,IAEnB,EAAc,KAAK,GAErB,MAAO,IA6DX,GAAM,KAA2B,eAc3B,GAAA,aAA2B,GAAS,CA4CxC,YAAY,EAAmB,CAC7B,MAAM,GACN,KAAK,WAAa,GAsCpB,QACI,EAAqB,EACrB,EAEoD,QAAQ,IAAG,CACjE,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,GACN,gLAIN,IAAa,KAAM,EAAY,EAAW,GAa5C,QAAQ,EAAsB,CAM5B,GALI,EAAK,MAAQ,MACf,GAAK,KAAO,IAEd,KAAK,KAAO,EAAK,KAEb,MAAO,GAAK,WAAc,SAC5B,KAAK,WAAwB,IAAa,EAAK,WAC/C,KAAK,iBAAmB,OACnB,CACL,GAAI,CAAE,GAAK,oBAAqB,KAC9B,KAAM,IAAI,GACN,+DAEN,KAAK,WAAa,EAAK,UACvB,KAAK,iBAAmB,GAO1B,GAAI,GAAkC,GACtC,GAAI,CAAC,MAAM,QAAQ,EAAK,OAAS,MAAO,GAAK,MAAS,UAClD,MAAO,GAAK,MAAS,WAAY,CACnC,EAAK,KAAO,EAAK,KACjB,OAAW,KAAQ,GAAK,KACtB,GAAI,KAAK,YAAY,QAAQ,KAAU,GACrC,KAAM,IAAI,GACN,sCAAsC,yCACD,KAAK,eAGlD,OAAW,KAAQ,MAAK,YAClB,EAAK,KAAK,IAAS,MACrB,QAAQ,KACJ,WAAW,6HAEQ,qBAEzB,EAAc,KAAY,GAAI,EAAK,KAAK,aAEjC,MAAM,QAAQ,EAAK,MAAO,CACnC,GAAI,EAAK,KAAK,SAAW,KAAK,QAAQ,OACpC,KAAM,IAAI,GACN,2FAC+B,KAAK,QAAQ,yCACrB,EAAK,SAGlC,EADkB,EAAK,KACG,IAAI,GAAY,GAAI,QACzC,CACL,GAAM,GAAsB,GAAI,EAAK,MACrC,KAAK,QAAQ,QAAQ,GAAI,CACvB,EAAc,KAAK,KAIvB,KAAK,cAAgB,EAErB,KAAK,gBAAkB,GACvB,KAAK,iBAAmB,GACxB,KAAK,YAAc,GACnB,OAAS,GAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,EAAE,EAAG,CAE5C,GAAM,GAAQ,KAAK,qBAAqB,GAClC,EAAO,KAAK,YAAY,GAC9B,KAAK,gBAAgB,KAAK,GAC1B,KAAK,iBAAiB,KAAK,GAC3B,KAAK,YAAY,KAAK,KAAK,cAAc,IAK3C,GAAM,GAA8B,GAGpC,KAAK,QAAU,EAAK,QAEpB,KAAK,aAAe,CAAC,QACrB,KAAK,eAAiB,GAMtB,GAAU,OAAQ,IAAK,CACrB,OAAS,GAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,EAAE,EAAG,CAC5C,GAAI,EAAkB,QAAQ,KAAO,GACnC,SAIF,GAAM,GAAe,KAAK,cAAc,GACpC,KAAK,QAAQ,OAAS,GACxB,MAAK,eAAe,KAAK,CAAC,EAAc,IACxC,KAAK,aAAa,KAAK,KAAK,YAAY,GAAK,aAQnD,GAAM,GAAgB,IAAe,EAAK,QAAS,KAAK,aAMlD,EACF,CAAC,EAAqB,EACrB,IAAgC,CAC3B,KAAK,YAAY,OAAS,GAC5B,GAAa,KAAK,YAAY,GAAe,IAAM,GAErD,KAAK,aAAa,KAAK,GACvB,KAAK,eAAe,KAAK,CAAC,EAAc,KAG9C,GAAU,SAAU,IAAK,CACvB,OAAS,GAAI,EAAG,EAAI,KAAK,QAAQ,OAAQ,EAAE,EAAG,CAC5C,GAAI,EAAkB,QAAQ,KAAO,GACnC,SAEF,GAAM,GAAgB,EAAc,GAId,AAAC,IAAyC,CAC9D,GAAM,GAAmB,GACrB,EACA,EACA,EAGJ,OAAW,KAAU,GAAS,CAC5B,GAAI,MAAO,IAAW,UAClB,CAAC,WAAY,MAAO,eAAgB,MAAM,QAAQ,KAC9C,GAAI,CACV,GAAM,GAAc,KAAK,qBAAqB,GAE1C,EAAY,EAAY,OAAS,KAAO,GACxC,KAAK,cAAc,KAAc,GAE/B,CAAC,WAAY,OAAO,QAAQ,KAAY,GAC1C,EAAgB,GACP,CAAC,eAAgB,MAAM,QAAQ,KAAY,IACpD,GAAgB,IAGhB,KAAK,cAAc,KACZ,GAGL,CAAC,WAAY,OAAO,QAAQ,KAAY,GAC1C,EAAgB,GACP,CAAC,eAAgB,MAAM,QAAQ,KAAY,IACpD,GAAgB,IAId,CAAC,WAAY,OAAO,QAAQ,KAAY,GAC1C,EAAgB,GACP,CAAC,eAAgB,MAAM,QAAQ,KAAY,IACpD,GAAgB,IAGpB,GAAI,GACA,CAAC,WAAY,OAAO,QAAQ,KAAY,GAC1C,EAAS,MACA,CAAC,eAAgB,MAAM,QAAQ,KAAY,IACpD,GAAS,MAGX,EAAmB,EACnB,EAAa,EAAmB,MAIhC,GAFyB,IAAI,GAG7B,EACI,EAA2B,GAAoB,GAIrD,GAAI,GACJ,GAAU,EAAY,IAAK,CACzB,EAAe,IAEjB,EAAa,EAAG,EAAY,MAIlB,MAOlB,KAAK,0BAA4B,KAAK,iBAY9B,kCAAgC,CACpC,KAAK,2BAA6B,MAGlC,KAAK,iBAAiB,SACtB,KAAK,0BAA0B,QACjC,QAAQ,KACJ,qJAqCR,SACI,EAAoB,EACpB,EAA0B,GAAE,CAC9B,GAAM,GAAY,EAAK,WAAa,KAAO,GAAK,EAAK,UACrD,GAAe,GAIf,GAAM,GAAiB,GACjB,EACF,KAAK,sBAAsB,EAAG,EAAG,EAAgB,GACrD,GAAI,CAGF,GAAM,GAAM,EAAiB,GAAG,OAAO,EAAiB,IACxD,KAAK,mBACL,GAAM,GAAI,KAAK,aACT,EACF,KAAK,SAAS,EAAG,EAAK,EAAW,EAAK,QAAS,EAAK,OACxD,MAAO,IAAiB,UAAA,CAExB,GAAkB,EAAiB,GAAI,GACvC,GAAkB,EAAiB,GAAI,SA0BrC,iBAAgB,EAAsB,EAA+B,CAEzE,MAAA,MAAK,mBACE,IAAgB,KAAM,EAAS,GAahC,gBACJ,EAAsB,EAAoB,EAC1C,EAAY,QAAO,CACrB,GAAI,GACJ,GAAI,GAAS,MAEX,GADA,EAAa,KACT,GAAa,KACf,KAAM,IAAI,GACN,MAAM,iEACa,aAEhB,GAAO,KACZ,MAAM,QAAQ,GAChB,EAAa,EAAI,GAAG,MAAM,GAE1B,EAAa,EAAI,MAAM,OAGzB,MAAM,IAAI,GACN,yDACG,yBAET,MAAO,GAUT,QAAQ,EAAwC,EAAwB,CAEtE,GAAI,MAAM,QAAQ,IAAY,EAAQ,SAAW,EAC/C,KAAM,IAAI,GACN,sDAGN,GAAM,GAAiB,MAAM,QAAQ,GAC/B,EACD,EAAiB,EAAsB,CAAC,GACvC,EAAwB,KAAK,wBAAwB,GAGrD,EAAW,GAAI,IAIrB,GAHI,YAAkB,KACpB,GAAS,CAAC,IAER,MAAM,QAAQ,GAAS,CACzB,GAAI,EAAO,SAAW,KAAK,OAAO,OAChC,KAAM,IAAI,GACN,kCAAkC,EAAO,8DAErC,KAAK,OAAO,YAEtB,OAAS,GAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,EAAS,IAAI,KAAK,OAAO,GAAI,EAAO,QAGtC,QAAW,KAAS,MAAK,OAAQ,CAC/B,GAAM,GAAc,EAAO,EAAM,MACjC,GAAI,GAAe,KACjB,KAAM,IAAI,GACN,8CAA8C,EAAM,QAE1D,EAAS,IAAI,EAAO,GAKxB,GAAM,GAAiB,GAAQ,EAAuB,GACtD,MAAO,GAAiB,EAAiB,EAAe,GAMlD,wBAAwB,EAA6B,CAE3D,GAAM,GACF,GAAa,KAAM,EAAoB,QACvC,EAAmB,EAAoB,OAC3C,OAAW,KAAS,MAAK,OAAQ,CAC/B,GAAM,GACF,MAAM,QAAQ,EAAM,QAAU,EAAM,OAAS,CAAC,EAAM,QAClD,EAAmB,EAAa,IAAI,GAAU,EAAO,MAC3D,OAAS,GAAI,EAAG,EAAI,EAAoB,OAAQ,EAAE,EAAG,CACnD,GAAM,GAAQ,EAAiB,QAAQ,EAAoB,IAK3D,GAJI,IAAU,IACZ,GAAsB,GAAK,EAAa,GACxC,KAEE,IAAqB,EACvB,MAGJ,GAAI,IAAqB,EACvB,MAIJ,GAAI,EAAmB,EAAG,CACxB,GAAM,GAA2B,GACjC,KAAA,GAAsB,QAAQ,CAAC,EAAQ,IAAK,CACtC,GAAU,MACZ,EAAe,KAAK,EAAoB,MAGtC,GAAI,GACN,mDACG,KAAK,UAAU,MAExB,MAAO,GAgBD,YAAY,EAAsB,EAAY,GAAI,EAAU,GAAK,CAEvE,MAAW,GAAK,IAAK,CACnB,GAAM,GAAa,KAAK,gBAAgB,GACxC,GAAI,EACF,KAAM,IAAI,IACN,iDAQN,GAAM,GAAU,GAAY,EAAY,GAClC,EAA0B,KAAK,QAAQ,IAAI,GAAU,IAG3D,OAAS,GAAa,EAAG,EAAa,EAAQ,OAAQ,EAAE,EAChC,EAAK,IAAK,CAC9B,GAAM,GAAa,EAAQ,GAAY,GACjC,EAAW,EAAQ,GAAY,GAG/B,EAAW,GAAY,EAAK,EAAY,GAGxC,EAAQ,GACd,GAAI,MAAM,QAAQ,GAChB,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,EAAE,EACrC,EAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,EAAS,SAGnD,GAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,IAE1C,GAAM,GAAW,GAAI,IAAS,GAC9B,MAAO,IAAQ,KAAK,QAAS,KAErB,QAAQ,CAAC,EAAU,IAAM,EAAY,GAAG,KAAK,IAEzD,MAAO,IACH,EAAY,IAAI,GAAe,GAAO,EAAS,OA+BvD,QAAQ,EAAoB,EAAyB,GAAE,CACrD,GAAM,GAAkB,GAA2B,GACnD,GACI,EAAiB,KAAK,WAAY,KAAK,gBAAiB,IAC5D,GAAI,CAKF,GAAM,GAAY,EAAK,WAAa,KAAO,GAAK,EAAK,UACrD,MAAA,IAAe,GACR,KAAK,YAAY,EAAiB,UAAA,CAEzC,GAAkB,EAAiB,IAmBvC,eAAe,EAAkB,CAC/B,GAAe,EAAG,KAAK,WAAY,KAAK,gBAAiB,IAGzD,GAAM,GAAa,OAAM,QAAQ,GAAK,EAAE,GAAK,GAAG,MAAM,GACtD,MAAO,MAAK,YAAY,EAAG,GAGnB,sBACN,EACA,EAAkD,EAAiB,GACnE,EAAkB,CAEpB,GAAI,KAAK,YAAc,KACrB,KAAM,IAAI,IACN,gGAGN,GAAM,GAAwB,GAC9B,OAAS,GAAI,EAAG,EAAI,KAAK,iBAAiB,OAAQ,EAAE,EAAG,CACrD,GAAM,GAAc,KAAK,iBAAiB,GAC3B,KAAK,YAAY,KACV,GACpB,EAAa,KACT,EAAY,MAAM,EAAG,EAAY,OAAS,GAAG,OAAO,CAAC,KAGzD,EAAa,KAAK,GAWtB,GARA,EAAI,GACA,EAAG,KAAK,eAAgB,KAAK,gBAAiB,GAAO,SACzD,EAAI,GACA,EAAG,KAAK,gBAAiB,EAAc,GAAO,UAElD,IAAkB,EAAG,EAAG,MAExB,IAAgC,EAAG,KAAK,YAAa,KAAK,kBACtD,KAAK,UAAY,GAAa,MAAQ,EAAY,GAChD,EAAE,GAAG,MAAM,GAAK,GAAc,EAChC,KAAM,IAAI,GACN,mHAEG,aAAqB,EAAE,GAAG,MAAM,iBAG3C,MAAO,CAAC,EAAG,QAGG,qBACZ,EACA,EACA,EACA,EACA,EAAiB,GACjB,EAAkB,CACpB,GAAM,CAAC,EAAY,GACf,KAAK,sBAAsB,EAAG,EAAG,EAAgB,GAErD,GAAI,GAAgB,KAClB,KAAM,IAAI,OAAM,uCAGlB,GAAI,GAAkC,KACtC,GAAI,GAAe,KAAM,CACvB,GAAM,GACF,GAAwB,EAAa,KAAK,aAC9C,EAAwB,GACxB,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,EAAE,EACzC,EAAsB,KAClB,KAAM,IAAmB,EAAW,GAAI,KAAM,EAAa,KAKnE,MAAO,CAAC,EAAY,EAAY,GAc1B,SACJ,EAAiC,EAAe,EAChD,EAAU,EAAG,EAAc,CAC7B,MAAW,GAAK,IAAK,CACnB,GAAM,GAAa,KAAK,gBAAgB,EAAK,EAAW,EAAO,SACzD,EAAiB,GACvB,GAAI,EAAU,EACZ,KAAM,IAAI,IAAoB,wCAGhC,GAAI,GAAS,KACX,KAAM,IAAI,IACN,mDACC,CACL,GAAM,GAAU,GAAY,EAAY,GAClC,EAAa,GAAS,GAAM,EAAG,IACrC,OAAS,GAAa,EAAG,EAAa,EAAQ,OAAQ,EAAE,EAAY,CAClE,GAAM,GAAa,EAAQ,GAAY,GACjC,EAAW,EAAQ,GAAY,GAC/B,EACA,GACE,EAAY,EAAY,EAAW,GAGrC,EAAW,GAAqB,EAAK,GACrC,EAAY,EAAE,GACpB,GAAI,IAAe,EACjB,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EACtC,EAAK,KAAK,GAAO,IAGrB,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EAAG,CACzC,GAAM,GAAW,EAAU,GAC3B,EAAK,GACG,GAAI,EAAK,GAAQ,EAAI,EAAW,EAAY,KAGxD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EACjC,EAAK,GAAS,GAAI,EAAK,GAAI,GAG/B,MAAO,KAID,wBAAsB,CAC9B,GAAM,GAAY,KAAK,aAGjB,EAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,EAAE,EAAG,CACzC,GAAM,GAAQ,EAAU,GACpB,EAAW,EACX,GAAM,EAAW,GAAS,GAE5B,IAAY,IADK,GAAM,EAAU,MAAM,EAAG,GAAI,MAGhD,EAAiB,KAAK,GAExB,MAAO,GAaC,mBAAiB,CACzB,MAAQ,IAAkB,CACxB,GAAM,GAAuB,GAEvB,EAAS,EAAK,MAAM,EAAG,KAAK,OAAO,QACnC,EAAU,EAAK,MACjB,KAAK,OAAO,OAAQ,KAAK,OAAO,OAAS,KAAK,QAAQ,QACpD,EAAgB,EAAK,MACvB,KAAK,OAAO,OAAS,KAAK,QAAQ,OAClC,KAAK,OAAO,OAAS,KAAK,QAAQ,OAAS,GAEzC,EAA0B,GAK1B,EAAoB,IAAK,CAC7B,GAAM,GAAQ,GACd,OAAS,GAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,EAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,EAAO,KAEjD,GAAM,GAAW,GAAI,IAAS,GACxB,EACF,GAAQ,KAAK,QAAS,EAAU,CAAC,SAAY,KAI7C,EACJ,OAAS,GAAI,EAAG,EAAI,KAAK,cAAc,OAAQ,EAAE,EAAG,CAElD,GAAI,GADiB,KAAK,cAAc,GAChB,EAAQ,GAAI,EAAQ,IACxC,EAAc,IAAM,MACtB,GAAO,IAAoB,EAAM,EAAc,KAIjD,GAAM,GAAuB,GAAK,GAElC,EAAW,KAAK,GACZ,IAAM,EACR,EAAY,EAEZ,EAAgB,GAAI,EAAW,GAOnC,OAAS,GAAI,EAAG,EAAI,KAAK,eAAe,OAAQ,EAAE,EAAG,CACnD,GAAI,GAEJ,GAAI,KAAK,QAAQ,OAAS,GAAK,EAAI,KAAK,QAAQ,OAC9C,EAAiB,EAAW,OACvB,CACL,GAAM,GAAS,KAAK,eAAe,GAAG,GAChC,EAAc,KAAK,eAAe,GAAG,GAC3C,EACQ,GAAK,EAAO,EAAQ,GAAc,EAAQ,KAGhD,GAAK,GAET,EAAc,KAAK,GAGrB,MAAA,GAAgB,GAAK,GAGrB,KAAK,kBAAkB,QAAQ,GAAkB,CAC/C,EAAgB,GAAI,EAAW,KAG1B,GAGH,EAAY,KAAK,0BAA0B,IAC7C,GAAS,EAAM,QACb,EAAa,GAInB,MAAO,CAFH,KAAK,WAAW,SAAS,EAAmB,EAAY,IAEpC,OAAO,IAS3B,kBAAgB,CACtB,KAAK,aAAgB,GACR,EAAK,IAAK,CACnB,GAAM,GAAuB,GACzB,EACE,EAAS,EAAK,MAAM,EAAG,KAAK,OAAO,QACnC,EAAU,EAAK,MACjB,KAAK,OAAO,OAAQ,KAAK,OAAO,OAAS,KAAK,QAAQ,QACpD,EAAQ,GACd,OAAS,GAAI,EAAG,EAAI,KAAK,OAAO,OAAQ,EAAE,EACxC,EAAM,KAAK,CAAC,IAAK,KAAK,OAAO,GAAI,MAAO,EAAO,KAEjD,GAAM,GAAW,GAAI,IAAS,GACxB,EAAU,GAAQ,KAAK,QAAS,GAEtC,OAAS,GAAI,EAAG,EAAI,KAAK,cAAc,OAAQ,EAAE,EAAG,CAClD,GAAM,GAAe,KAAK,cAAc,GAGlC,EAAmB,GAAK,EAAa,EAAQ,GAAI,EAAQ,KAC3D,IAAM,EACR,EAAY,EAEZ,EAAgB,GAAI,EAAW,GAEjC,EAAW,KAAK,GAGlB,OAAS,GAAI,EAAG,EAAI,KAAK,eAAe,OAAQ,EAAE,EAAG,CACnD,GAAM,GAAS,KAAK,eAAe,GAAG,GAChC,EAAc,KAAK,eAAe,GAAG,GAErC,EACE,GAAK,EAAO,EAAQ,GAAc,EAAQ,KAClD,EAAW,KAAK,GAElB,MAAO,UAuCP,KACF,EACA,EACA,EAAqB,GAAE,CACzB,MAAO,KAAW,KAAM,EAAG,EAAG,QA0B1B,YAAc,EAAqB,EAA4B,CAEnE,MAAO,KAAW,KAAM,EAAS,QA0B7B,cACF,EACA,EAC6B,CAG/B,GAAM,GAAiB,KAAM,MAAK,oBAAoB,EAAG,GACnD,EAAS,EAAe,GACxB,EAAU,EAAe,GAEzB,EADgB,KAAK,oBACE,EAAO,OAAO,IACrC,EAAuB,GAC7B,OAAW,KAAQ,GAAQ,CACzB,GAAM,GAAI,KAAM,GAAK,OACrB,EAAW,KAAK,EAAE,IAEpB,MAAI,IAAQ,GACL,GAAiB,GAYhB,gBAAgB,EAAsB,CAC9C,GAAM,GAA8B,GAE9B,EAAgB,GAAU,MAAQ,EAAO,cACzC,EAAU,EAAgB,KAAK,iBAAmB,KAAK,QACvD,EAAe,KAAK,WAAW,GACrC,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,EAAE,EAChC,GAAiB,CAAC,EAAQ,GAAG,WAIjC,EAAa,KACT,CAAC,KAAM,EAAQ,GAAG,aAAc,OAAQ,EAAa,KAE3D,MAAO,MAiCL,cAAa,EAAa,CAC5B,KAAK,cAAgB,KAGnB,eAAY,CACd,MAAO,MAAK,iBAGV,YAAS,CACX,MAAO,MAAK,cAGV,WAAU,EAAoB,CAC5B,KAAK,aAAe,GACtB,MAAK,WAAa,EAClB,KAAK,iBAAmB,IAI5B,SAAO,CACL,GAAM,GAAS,MAAM,UACrB,GAAI,EAAO,uBAAyB,GAAK,KAAK,WAAa,MACvD,KAAK,iBAAkB,CACzB,GAAM,GAAuC,KAAS,WACtD,KAAK,WAAW,UAChB,EAAO,sBACH,EAAuC,KAAS,WAEtD,MAAO,GAGD,oBAAkB,CAExB,GAAI,GAEJ,GAAI,MAAO,MAAK,MAAS,SACvB,EAAY,GAAY,KAAK,cACpB,MAAM,QAAQ,KAAK,MAAO,CACnC,OAAW,KAAQ,MAAK,KACtB,GAAI,MAAO,IAAS,SAClB,KAAM,IAAI,OAAM,sDAGpB,EAAa,KAAK,KAAkB,IAAI,GAAQ,GAAY,QAEvD,CACL,GAAM,GAAc,OAAO,KAAK,KAAK,MACrC,EAAY,GACZ,GAAM,GACF,KAAK,KACT,OAAW,KAAc,GACvB,GAAI,MAAO,GAAO,IAAgB,SAChC,EAAU,GACN,GAAY,EAAO,QAEvB,MAAM,IAAI,OAAM,sDAItB,MAAO,GAGD,sBAAoB,CAE1B,GAAI,MAAO,MAAK,SAAY,UACxB,MAAO,MAAK,SAAY,WAC1B,MAAO,CAAC,GAAoB,GAAoB,KAAK,WAChD,GAAI,MAAM,QAAQ,KAAK,SAC5B,MAAO,MAAK,QAAQ,IAChB,GAAU,GAAoB,GAAoB,KACjD,CACL,GAAM,GAAyD,GAC/D,OAAW,KAAO,MAAK,QACrB,EAAmB,GACf,GAAoB,GAAoB,KAAK,QAAQ,KAE3D,MAAO,IAID,mBAAiB,CACzB,MAAO,CACL,KAAM,KAAK,qBACX,QAAS,KAAK,uBACd,iBAAkB,CAChB,WAAY,KAAK,UAAU,eAC3B,OAAQ,KAAK,UAAU,cAQ7B,mBAAmB,EAA8B,CAC/C,GAAI,EAAe,kBAAoB,KACrC,KAAM,IAAI,OAAM,gDAElB,GAAI,EAAe,cAAgB,KACjC,KAAM,IAAI,OAAM,8CAElB,GAAI,EAAe,oBAAsB,KACvC,KAAM,IAAI,OAAM,oDAGlB,GAAM,GAAW,GAAoB,EAAe,kBAE9C,EAAY,GAAY,GAE1B,EACJ,GAAI,MAAO,GAAe,MAAS,SACjC,EAAO,GAAY,EAAe,cACzB,MAAM,QAAQ,EAAe,MACtC,EAAO,EAAe,KAAK,IAAI,GAAa,GAAY,YAC/C,EAAe,MAAQ,KAAM,CACtC,EAAO,GACP,OAAW,KAAO,GAAe,KAC/B,EAAK,GAAO,GAAY,EAAe,KAAK,IAIhD,GAAI,GACJ,GAAI,MAAM,QAAQ,EAAe,SAC/B,EAAU,EAAe,QAAQ,IAAI,GAAU,GAAY,YAClD,EAAe,SAAW,KAAM,CACzC,EAAU,GACV,OAAW,KAAO,GAAe,QAC/B,EAAQ,GAAO,GAAY,EAAe,QAAQ,IAItD,KAAK,QAAQ,CAAC,KAAA,EAAM,QAAA,EAAS,UAAA,SAoFzB,MAAK,EAAmC,EAAsB,CAElE,GAAI,MAAO,IAAiB,SAAU,CACpC,GAAM,GAAW,GAAG,gBAAgB,GACpC,GAAI,EAAS,SAAW,EACtB,KAAM,IAAI,GACN,0CAA0C,MACzC,GAAI,EAAS,OAAS,EAC3B,KAAM,IAAI,GACN,wBAAwB,EAAS,kCACzB,MAEd,EAAe,EAAS,GAE1B,GAAI,EAAa,MAAQ,KACvB,KAAM,IAAI,GACN,gHAIN,GAAM,GACF,KAAM,IAAG,cAAc,KAAK,gBAAgB,IAE1C,EAAe,GACf,EAAgB,KAEhB,EAAoC,CACxC,cAFkB,KAAK,OAAO,EAAW,GAGzC,OAAQ,IACR,YAAa,8BAA8B,KAC3C,YAAa,MAIf,GADyB,IAAU,KAAO,GAAQ,EAAO,mBACjC,KAAK,WAAa,KAAM,CAC9C,EAAe,eAAiB,KAAK,oBACrC,GAAM,GAAa,YACb,CAAC,KAAM,EAAqB,MAAO,GACrC,KAAM,IAAG,cAAc,KAAM,MAAK,UAAU,aAAc,GAC9D,EAAmB,MAAM,KAAK,GAAG,GACjC,EAAmB,KAAO,GAAG,wBACzB,CAAC,EAAmB,KAAM,IAGhC,GAAI,KAAK,qBAAuB,KAAM,CAEpC,GAAM,GAAY,GAClB,GAAyB,KAAK,oBAAqB,KAAK,KAAM,GAC9D,EAAe,oBAAsB,KAAK,oBAG5C,MAAA,GAAe,WAAa,EAAmB,KAC/C,EAAe,YAAc,EAAmB,MACzC,EAAa,KAAK,GAW3B,uBAAuB,EAAuB,CAC5C,GAAyB,EAAqB,KAAK,MACnD,KAAK,oBAAsB,EAc7B,wBAAsB,CACpB,MAAO,MAAK,sBAv4CP,GAAA,UAAY,QA04CrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAA0B,GAAW,GAClC,GAAA,UAAY,aAErB,GAAc,cAAc,IChzD5B,mBACI,EACA,EAAwC,CACpC,iBAAmB,IACvB,GAAwB,CAAC,cAAe,IAE1C,EAAwB,EAExB,GAAI,GAAgB,EAAsB,cACtC,EAAc,cAAmB,MAMnC,GAAgB,EAAc,cAEhC,GAAM,GACF,GAAoB,GAClB,EAAQ,GAAY,EAAU,GAEpC,GAAI,EAAsB,iBAAmB,KAAM,CAIjD,GAAM,GAAe,KAAM,IAAG,YAC1B,EAAsB,gBAAiB,EAAsB,WAC7D,EAAM,QAAQ,IAAI,GAAU,EAAO,eAGjC,EAAqC,GAC3C,OAAW,KAAU,GAAM,QACzB,EAAmB,EAAO,cACtB,EAAa,EAAO,cAG1B,EAAM,YAAY,GAElB,GAAQ,GAEV,MAAO,GAqIT,mBACI,EACA,EAAwB,CAI1B,GAHI,GAAW,MACb,GAAU,IAER,MAAO,IAAoB,SAAU,CACvC,GAAM,GAAW,GAAG,gBAAgB,EAAiB,GACrD,GAAI,EAAS,SAAW,EAKtB,EAAS,KAAK,GAAG,mBAAmB,EAAiB,YAC5C,EAAS,OAAS,EAC3B,KAAM,IAAI,GACN,wBAAwB,EAAS,kCACzB,MAEd,EAAkB,EAAS,GAE7B,MAAO,KAA6B,EAAiB,OAAW,GAalE,mBACI,EAAuB,EACvB,EAAwB,CAI1B,GAHI,GAAW,MACb,GAAU,IAER,EAAQ,MAAQ,KAClB,KAAM,IAAI,GACN,iHAGN,GAAM,GAAY,KAAM,GAAQ,OAC5B,EAAgB,EAAU,cAC1B,EAAc,cAAmB,MACnC,GAAgB,EAAc,cAGhC,GAAM,GAAS,EAAQ,QAAU,KAAO,GAAO,EAAQ,OAMjD,EACF,EAAU,YAAc,MAAQ,EAAU,aAAe,MAAQ,EAC/D,EACF,GACI,GAAoB,GACpB,EAAe,GAEjB,EAAiB,EAAU,eASjC,GARI,GAAkB,MACpB,EAAM,mBAAmB,GAEvB,EAAU,qBAAuB,MACnC,EAAM,uBAAuB,EAAU,qBAIrC,EAAU,YAAc,KAAM,CAEhC,GAAI,EAAU,aAAe,KAC3B,KAAM,IAAI,GACN,kHAIN,GAAM,CAAC,aAAA,EAAc,iBAAA,GAAoB,IACrC,EAAU,WAAY,EAAU,aACpC,EAAM,YAAY,EAAc,GAE5B,EAAM,WAAa,MAAQ,EAAiB,OAAS,GACvD,KAAM,GAAM,UAAU,WAAW,GAInC,GAAQ,GACR,GAAQ,EAAiB,IAAI,GAAK,EAAE,SAEtC,MAAO,GAGT,aACI,EAAqB,EAAgC,CAEvD,GAAM,GAAc,GAAG,cAAc,EAAQ,GACvC,EAA+B,GAC/B,EAAkC,GACxC,MAAA,GAAM,QAAQ,GAAO,CACf,EAAK,QAAU,YACjB,EAAiB,KAAK,CAAC,KAAM,EAAK,KAAM,OAAQ,EAAY,EAAK,QAEjE,EAAa,EAAK,MAAQ,EAAY,EAAK,QAGxC,CAAC,aAAA,EAAc,iBAAA,GAwClB,GAAA,IAAA,aAA0B,GAAW,CAIzC,YAAY,EAAqB,CAC/B,MAAM,CAAC,OAAQ,GAAI,QAAS,KAU5B,GATA,EAAO,GAAQ,GAEf,KAAK,UAAY,GACjB,KAAK,MAAQ,GAGb,KAAK,KAAQ,EAAK,MAAQ,KAAQ,EAAK,KAAO,GAAO,eAGjD,EAAK,QAAU,KACjB,OAAW,KAAS,GAAK,OACvB,KAAK,IAAI,GAOP,WAAW,EAAY,CAE7B,GADc,EAAM,aAAa,GAAG,cAAc,GAAG,MAC3C,KAAK,GAAK,EAAI,GACtB,KAAM,IAAI,GACN,kDACG,EAAM,0BACN,EAAM,aAAa,GAAG,aAAa,GAAG,UAyBjD,IAAI,EAAY,CACd,GAAM,GACF,YAAiB,KAAc,YAAiB,IAChD,EACJ,GAAI,EAAsB,CAExB,GADA,EAAa,EACT,EAAW,QAAQ,SAAW,EAChC,KAAM,IAAI,GACN,yHAKN,GAAI,EAAW,OAAO,SAAW,EAC/B,KAAM,IAAI,GACN,uHAOR,GAAI,KAAK,QAAQ,SAAW,EAAG,CAE7B,GAAI,EAAM,aAAa,SAAW,EAAG,CAEnC,GAAI,EAAM,iBAAmB,KAC3B,KAAM,IAAI,GACN,iGAIN,GAAM,GAAI,GAAM,CACd,WAAY,EAAM,gBAClB,MAAO,EAAM,MACb,KAAM,EAAM,KAAO,WAIrB,EAAM,MAAM,GAGd,GAAI,EACF,KAAK,QAAU,EAAW,QAC1B,KAAK,OAAS,EAAW,WACpB,CACL,GAAI,EAAM,aAAa,SAAW,EAChC,KAAM,IAAI,GACN,gHAEI,EAAM,kBACG,EAAM,aAAa,4CAItC,GAAI,EAAM,aAAa,GAAG,cAAc,SAAW,EACjD,KAAM,IAAI,GACN,yHAKN,KAAK,WAAW,GAChB,KAAK,QAAU,CAAC,EAAM,aAAa,GAAG,cAAc,IACpD,KAAK,OAAS,GAAgB,KAAK,QAAQ,IAG7C,KAAK,aAAe,GAKpB,GAAI,IAAK,CACP,cAAe,KACf,cAAe,GACf,YAAa,GACb,cAAe,GACf,aAAc,KAAK,OACnB,cAAe,KAAK,QAEpB,WAA0B,GAAa,KAAM,KAAK,OAAO,QACzD,YAAa,CAAC,MACd,YAAa,KAAK,OAAO,IAAI,GAAK,EAAE,OACpC,aAAc,KAAK,QAAQ,GAAG,YAE3B,CACL,GAAM,GAAe,EAAM,MAAM,KAAK,QAAQ,IAC9C,GAAI,MAAM,QAAQ,GAChB,KAAM,IAAI,WACN,yHAKN,KAAK,WAAW,GAChB,KAAK,QAAU,CAAC,GAEhB,KAAK,aAAa,GAAG,cAAgB,KAAK,QAC1C,KAAK,aAAa,GAAG,aAAe,CAAC,KAAK,QAAQ,GAAG,OAGvD,KAAK,OAAO,KAAK,GACjB,KAAK,MAAQ,GAQf,KAAG,CACD,GAAI,KAAK,OAAO,SAAW,EACzB,KAAM,IAAI,WAAU,qCAItB,GADA,KAAK,OAAO,MACR,KAAK,OAAO,SAAW,EACzB,KAAK,QAAU,GACf,KAAK,aAAe,GACpB,KAAK,cAAgB,OAChB,CACL,GAAM,GAAiB,KAAK,OAAO,OAAS,EAC5C,KAAK,OAAO,GAAgB,cAAgB,GAC5C,KAAK,QAAU,CAAC,KAAK,OAAO,GAAgB,QAE5C,KAAK,aAAa,GAAG,cAAgB,KAAK,QAC1C,KAAK,aAAa,GAAG,aAAe,CAAC,KAAK,QAAQ,GAAG,QAIzD,KAAK,EAAyB,EAAc,CAC1C,MAAI,MAAK,OAAS,MAChB,KAAK,QAEA,KAAK,MAAM,KAAK,EAAQ,GAGjC,MAAM,EAA0B,CAK9B,GAFA,GAAmB,GAEf,KAAK,OAAO,SAAW,GAAK,KAAK,QAAQ,SAAW,EACtD,KAAM,IAAI,WACN,4EAIN,KAAK,MAAQ,GAAI,IAAY,CAC3B,OAAQ,KAAK,OACb,QAAS,KAAK,QAAQ,GACtB,KAAM,KAAK,KAAO,WAEpB,KAAK,MAAM,UAAY,KAAK,UAG5B,KAAK,gBAAkB,KAAK,MAAM,gBAElC,KAAK,YAAc,KAAK,MAAM,YAC9B,KAAK,uBAAyB,KAAK,MAAM,uBACzC,KAAK,yBAA2B,KAAK,MAAM,yBAC3C,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,wBAA0B,KAAK,MAAM,wBAC1C,KAAK,0BAA4B,KAAK,MAAM,0BAC5C,KAAK,aAAe,KAAK,MAAM,aAC/B,KAAK,eAAiB,KAAK,MAAM,eACjC,KAAK,YAAc,KAAK,MAAM,YAC9B,KAAK,WAAa,KAAK,MAAM,WAG7B,KAAK,MAAQ,GAGf,aAAW,CACT,MAAK,MAAK,OACR,KAAK,QAEA,MAAM,cAiCf,QACI,EAAqB,EACrB,EAEoD,QAAQ,IAAG,CAC5D,KAAK,OACR,KAAK,QAEP,MAAM,QAAQ,EAAY,EAAW,GASvC,WAAW,EAAiB,CACtB,KAAK,OAAS,MAChB,KAAK,QAEP,KAAK,MAAM,WAAW,GAmCxB,SACI,EAAoB,EACpB,EAA0B,GAAE,CAC9B,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,IACN,qDAEN,MAAO,MAAK,MAAM,SAAS,EAAG,EAAG,QAyB7B,iBAAgB,EAAsB,EAA8B,CAExE,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,IACN,qDAEN,MAAO,MAAK,MAAM,gBAAgB,EAAS,GA8B7C,QAAQ,EAAoB,EAAyB,GAAE,CACrD,MAAI,MAAK,OAAS,MAChB,KAAK,QAEA,KAAK,MAAM,QAAQ,EAAG,GAU/B,eAAe,EAAS,CACtB,MAAI,MAAK,OAAS,MAChB,KAAK,QAEA,KAAK,MAAM,eAAe,GAQnC,QAAQ,EAAsB,CAC5B,KAAK,QACL,KAAK,MAAM,QAAQ,GACnB,KAAK,WAAa,KAAK,MAAM,UAE7B,KAAK,iBAAoB,KAAK,MAAc,iBAC5C,KAAK,KAAO,KAAK,MAAM,KACvB,KAAK,QAAU,KAAK,MAAM,QAG1B,KAAK,eAAiB,KAAK,MAAM,eACjC,KAAK,aAAe,KAAK,MAAM,gBAI7B,YAAS,CACX,MAAO,MAAK,OAAS,KAAO,OAAY,KAAK,MAAM,aAGjD,WAAU,EAAoB,CAChC,KAAK,MAAM,UAAY,OAkCnB,KACF,EACA,EACA,EAAqB,GAAE,CACzB,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,IACN,qDAGN,MAAO,MAAK,MAAM,IAAI,EAAG,EAAG,QAwFxB,YAAc,EAAqB,EAA4B,CAEnE,GAAI,CAAC,KAAK,MACR,KAAM,IAAI,IACN,qDAGN,MAAO,MAAK,MAAM,WAAW,EAAS,QA0BlC,cACF,EACA,EAC6B,CAC/B,MAAO,MAAK,MAAM,aAAa,EAAG,SAK7B,YACH,EACA,EACA,EAAgB,GAChB,EAAiB,GAAK,CACxB,GAAI,GACA,EAA6C,GACjD,GAAI,YAAkB,OAAO,CAC3B,GAAM,EAAO,GAAG,WAAa,MACzB,EAAO,GAAG,YAAiB,QAC7B,KAAM,IAAI,GAAW,kDAEvB,EAAc,MAEd,GAAK,OACD,EAAO,QAAa,KACpB,IACI,uHAER,EAAc,EAAO,OACrB,MAAO,GAAO,OACd,EAAmB,EAGrB,GAAM,GAAQ,GAAI,GAAI,GACtB,GAAI,CAAE,aAAiB,KACrB,KAAM,IAAI,IACN,yDAAyD,KAE/D,OAAW,KAAQ,GAAa,CAE9B,GAAM,GAAQ,GACI,EAF8B,OAG9B,GACd,GACF,EAAM,6BAA6B,IAErC,EAAM,IAAI,GAEZ,MAAO,MA+BL,cAAa,EAAa,CAG5B,GAAI,KAAK,OAAS,KAChB,KAAM,IAAI,GACN,qFAGN,KAAK,MAAM,aAAe,KAGxB,eAAY,CACd,GAAI,KAAK,OAAS,KAChB,KAAM,IAAI,GACN,qFAGN,MAAO,MAAK,MAAM,aAMpB,WAAS,CAKP,GAAM,GAAqC,GAC3C,OAAW,KAAS,MAAK,OAAQ,CAC/B,GAAM,GAAiC,GACvC,EAAK,UAAe,EAAM,eAC1B,EAAK,OAAY,EAAM,YACvB,EAAO,KAAK,GAEd,MAAO,CAAC,KAAM,KAAK,KAAM,OAAA,KAvsBpB,GAAA,UAAY,aA0sBrB,GAAc,cAAc,ICtgCtB,aAAgB,EAAmB,CACvC,MAAO,IAAI,IAAY,GA+DnB,aAAqB,EAAuB,CAChD,MAAO,IAAI,IAAW,GA8FlB,aACF,EACA,EAAwB,CAC1B,MAAI,IAAW,MACb,GAAU,IAEL,IAAwB,EAAiB,GA0B5C,YAAgB,EAAmB,CACvC,MAAO,IAAM,GAGT,aACF,EACA,EAA4C,CAC9C,GAA4B,4BACxB,EAAgB,GCpPhB,GAAA,IAAA,aAAmC,IAAc,YAAY,CAEjE,WAAS,CACP,MAAO,KAQL,GAAA,aAAmB,GAAU,CAUjC,MAAM,EAAW,EAAQ,EAAC,CACxB,MAAS,KAAI,EAAG,KATF,GAAA,UAAY,MAY9B,GAAc,cAAc,IAStB,GAAA,IAAA,aAAoB,GAAU,CAGlC,MAAM,EAAS,CACb,MAAW,IAAK,KAFF,GAAA,UAAY,OAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAoB,GAAU,CAGlC,MAAM,EAAS,CACb,MAAW,IAAK,KAFF,GAAA,UAAY,OAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAqB,GAAU,CAGnC,MAAM,EAAS,CACb,MAAO,GAAK,IAAU,GAAQ,EAAS,GAAK,OAF9B,GAAA,UAAY,QAK9B,GAAc,cAAc,IAGtB,GAAA,IAAA,aAAsB,GAAU,CAGpC,MAAM,EAAS,CACb,MAAO,KAFO,GAAA,UAAY,SAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAuB,GAAU,CAGrC,MAAM,EAAS,CACb,MAAW,IAAQ,KAFL,GAAA,UAAY,UAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAA2B,GAAU,CAGzC,MAAM,EAAS,CACb,MAAS,KAAY,KAFP,GAAA,UAAY,cAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAwB,GAAU,CAGtC,MAAM,EAAS,CACb,MAAW,IAAS,KAFN,GAAA,UAAY,WAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAwB,GAAU,CAGtC,MAAM,EAAS,CACb,MAAS,KAAS,KAFJ,GAAA,UAAY,WAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAoB,GAAU,CAGlC,MAAM,EAAS,CACb,MAAW,IAAK,KAFF,GAAA,UAAY,OAK9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAuB,GAAU,CAerC,MAAM,EAAW,EAAgB,GAAG,CAClC,MAAW,IAAQ,EAAG,KAdR,GAAA,UAAY,UAiB9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAA0B,GAAU,CAgBxC,MAAM,EAAW,EAAgB,GAAG,CAClC,MAAW,IAAW,EAAG,KAfX,GAAA,UAAY,aAkB9B,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAqB,GAAU,CAUnC,MAAM,EAAW,EAAQ,EAAC,CACxB,MAAO,GAAK,IAAU,GAAQ,EAAE,IAAI,IAAQ,IAAI,MATlC,GAAA,UAAY,QAY9B,GAAc,cAAc,IAEtB,YAA8B,EAAsB,CACxD,MAAO,GAAW,eAGd,YACH,EACA,EAA0C,GAAE,CAC7C,MAAO,IACH,EAAQ,GAAc,iBAAiB,SAAS,aAChD,EAAe,cAGf,YAAwB,EACmC,CAC/D,GAAI,GAAc,KAAM,CACtB,GAAM,GAAmC,GACzC,MAAA,GAAO,UAAe,SACtB,EAAO,OAAY,GACZ,GAAsB,GAE/B,GAAI,MAAO,IAAe,SAAU,CAClC,GAAM,GAAmC,GACzC,MAAA,GAAO,UAAe,EACtB,EAAO,OAAY,GACZ,GAAsB,OACxB,OAAI,aAAsB,IACxB,EAEA,GAAsB,GChPjC,YAA0B,EAAgC,CACxD,GAAI,GAAQ,MAAQ,MAAO,IAAS,SAClC,KAAM,IAAI,OACN,yFACyB,KAO3B,GAAA,IAAA,aAAoC,IAAc,YAAY,GAqB9D,GAAA,aAAoB,GAAW,CAQnC,YAAY,EAAe,CACzB,QAEA,GAAiB,GAEjB,KAAK,GAAK,GAAQ,MAAQ,EAAK,IAAM,KAAO,IAAO,EAAK,GACxD,KAAK,GAAK,GAAQ,MAAQ,EAAK,IAAM,KAAO,IAAO,EAAK,GACxD,KAAK,MAAQ,KAAK,KAAO,EACzB,KAAK,MAAQ,KAAK,KAAO,EAO3B,MAAM,EAAS,CACb,MAAO,GAAK,IAAK,CACf,GAAI,GAAyB,GAAM,CAAC,IACpC,MAAI,MAAK,OACP,GAAiB,GAAI,EAAgB,GAAQ,EAAI,KAAK,GAAI,GAAI,OAE5D,KAAK,OACP,GACI,GAAI,EAAgB,GAAQ,EAAI,KAAK,GAAM,GAAO,OAEjD,EAAe,aAI1B,WAAS,CACP,MAAO,CAAC,GAAM,KAAK,GAAI,GAAM,KAAK,UAI7B,YACH,EACA,EAAgC,CAClC,MAAO,IAAI,GAAI,CAAC,GAAI,EAAO,GAAiB,GAAI,EAAO,OA3ClD,GAAA,UAAY,OA8CrB,GAAc,cAAc,IAEtB,aAAa,EAAa,CAC9B,MAAA,IAAiB,GACV,GAAI,IAAK,CAAC,GAAI,GAAQ,KAAO,EAAK,GAAK,KAAM,GAAI,IAGpD,aAAa,EAAY,CAC7B,MAAA,IAAiB,GACV,GAAI,IAAK,CAAC,GAAI,GAAQ,KAAO,EAAK,GAAK,KAAM,GAAI,IAOnD,GAAM,IACyC,CAChD,KAAQ,QAGR,YAA+B,EAAuB,CAE1D,MAAO,IAAqB,GAGxB,YACF,EACA,EAA0C,GAAE,CAC9C,MAAO,IACH,EAAQ,GAAc,iBAAiB,SAAS,aAChD,EAAe,eAGf,YAAyB,EAEW,CACxC,GAAI,GAAc,KAChB,MAAO,MAET,GAAI,MAAO,IAAe,SAAU,CAIlC,GAAM,GAAS,CAAC,UAHE,IAAc,IAC5B,GAA2C,GAC3C,EACuB,OAAQ,IACnC,MAAO,IAAuB,OACzB,OAAI,aAAsB,IACxB,EAEA,GAAuB,GC/G5B,GAAA,IAAA,aAAoB,GAAK,CAK7B,YAAY,EAAoB,CAC9B,MAAM,GAAQ,KAAO,GAAK,GAC1B,KAAK,gBAAkB,GACnB,GAAQ,MACV,MAAK,SAAW,EAAK,UAIzB,KAAK,EAAyB,EAAc,CAC1C,EAAS,GAAoB,GAC7B,GAAI,GAAS,GAAK,GAClB,MAAI,MAAK,UAAY,MACnB,GAAS,GAAY,EAAQ,EAAG,KAAK,WAEhC,EAGT,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAmC,CAAC,SAAU,KAAK,UACnD,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA5BF,GAAA,UAAY,OA+BrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAAyB,GAAK,CAOlC,YAAY,EAAyB,CACnC,MAAM,GAAQ,KAAO,GAAK,GAHnB,KAAA,cAAgB,GAInB,GAAQ,MACV,GAAO,IAET,KAAK,MAAQ,EAAK,OAAS,KAAO,KAAK,cAAgB,EAAK,MAG9D,KAAK,EAAyB,EAAc,CAC1C,GAAM,GAAI,GAAoB,GAC9B,MAAO,IAAU,EAAG,KAAK,OAG3B,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAmC,CAAC,MAAO,KAAK,OAChD,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA1BF,GAAA,UAAY,YA6BrB,GAAc,cAAc,IA6BtB,GAAA,IAAA,aAAqB,GAAK,CAW9B,YAAY,EAAqB,CAC/B,MAAM,GAAQ,KAAO,GAAK,GAU1B,GAbO,KAAA,0BAAmD,QAItD,GAAQ,MACV,GAAO,IAGT,KAAK,gBAAkB,GACvB,KAAK,iBACD,GAAe,EAAK,kBAAoB,KAAK,2BACjD,KAAK,iBAAmB,GAAe,EAAK,kBAC5C,KAAK,gBAAkB,GAAc,EAAK,iBACtC,EAAK,YAAc,KACrB,KAAK,WAAa,aACT,MAAM,QAAQ,EAAK,YAC5B,KAAK,WAAa,EAAK,mBACd,MAAO,GAAK,YAAe,SACpC,KAAK,WAAa,CAAC,EAAK,gBAExB,MAAM,IAAI,GACN,sEACW,EAAK,cAIxB,MAAM,EAAyB,CAC7B,EAAa,GAAmB,GAChC,GAAM,GAAoB,EAAW,MAAM,GAC3C,GAAI,KAAK,YAAc,KACrB,OAAW,KAAK,MAAK,WACnB,EAAW,EAAI,GAAK,EAGxB,KAAK,MAAQ,KAAK,UACd,QAAS,EAAY,UAAW,KAAK,iBACrC,KAAK,iBAAkB,GAAM,KAAK,iBAEtC,GAAM,GAAiC,GACvC,GAAI,KAAK,YAAc,KACrB,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACvC,EAAK,GAAK,EAAW,GAGzB,KAAK,UAAY,CAAC,GAAI,IAAU,CAC9B,KAAM,EAAW,OACjB,KAAA,KAEF,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAA,GAAS,GAAoB,GACtB,GAAM,EAAQ,KAAK,MAAM,QAGlC,WAAS,CACP,GAAM,GAAmC,CACvC,iBAAkB,GAAqB,KAAK,kBAC5C,iBAAkB,GAAqB,KAAK,kBAC5C,gBAAiB,GAAoB,KAAK,iBAC1C,WAAY,KAAK,YAEb,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAxEF,GAAA,UAAY,QA2ErB,GAAc,cAAc,IAStB,GAAA,IAAA,aAAmB,GAAK,CAO5B,YAAY,EAAmB,CAC7B,MAAM,GAAQ,KAAO,GAAK,GAK1B,GARO,KAAA,cAAgB,EAInB,GAAQ,MACV,GAAO,IAGL,EAAK,OAAS,MAAQ,EAAK,QAAU,KAAK,cAC5C,KAAM,IAAI,IACN,4BAA4B,EAAK,iDAIvC,KAAK,MAAQ,EAAK,OAAS,KAAO,KAAK,cAAgB,EAAK,MAG9D,KAAK,EAAyB,EAAc,CAC1C,GAAM,GAAI,GAAoB,GAC9B,MAAO,IAAI,GAGb,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAmC,CAAC,MAAO,KAAK,OAChD,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAjCF,GAAA,UAAY,MAoCrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAA+B,GAAK,CAOxC,YAAY,EAA+B,CACzC,MAAM,GAAQ,KAAO,GAAK,GAHnB,KAAA,cAAgB,EAInB,GAAQ,MACV,GAAO,IAGT,KAAK,MAAQ,EAAK,OAAS,KAAO,KAAK,cAAgB,EAAK,MAG9D,KAAK,EAAyB,EAAc,CAC1C,GAAM,GAAI,GAAoB,GAC9B,MAAO,GAAE,IAAI,GAAK,EAAE,QAAQ,KAAK,OAAQ,YAG3C,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAmC,CAAC,MAAO,KAAK,OAChD,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA3BF,GAAA,UAAY,kBA8BrB,GAAc,cAAc,IAUtB,GAAA,IAAA,aAAuB,GAAK,CAOhC,YAAY,EAAuB,CACjC,MAAM,GAAQ,KAAO,GAAK,GAHnB,KAAA,aAAe,EAIlB,GAAQ,MACV,GAAO,IAET,KAAK,QAAU,GAAI,MAAoB,MACvC,KAAK,KAAO,EAAK,MAAQ,KAAO,KAAK,aAAe,EAAK,KAG3D,KAAK,EAAyB,EAAc,CAC1C,GAAM,GAAI,GAAoB,GAC9B,MAAO,MAAK,QAAQ,EAAG,KAAK,MAG9B,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAmC,CAAC,KAAM,KAAK,MAC/C,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA3BF,GAAA,UAAY,UA8BrB,GAAc,cAAc,ICjUtB,YACF,EAAwB,EAAW,EAAY,CACjD,GAAI,MAAO,IAAU,SACnB,MAAO,IAAa,EAAO,GAE3B,GAAI,EAAM,SAAW,EACnB,KAAM,IAAI,GACN,OAAO,6CAAgD,yBACzC,EAAM,oBAE1B,OAAS,GAAI,EAAG,EAAI,EAAG,EAAE,EAAG,CAC1B,GAAM,GAAc,EAAM,GAC1B,GAAI,CAAC,GAAU,GACb,KAAM,IAAI,GACN,OAAO,6CAAgD,yBAC/B,KAAK,UAAU,qCAChB,KAG/B,MAAO,GAYL,YACF,EAAqB,EAAoB,EACzC,EAAgB,EAAW,EAAC,CAC9B,GAAI,GAAe,KACjB,MAAO,GAET,GAAM,GAAoB,EAAc,GAAa,GAAM,GAAW,GAClE,EACJ,MAAI,KAAY,OACd,EAAe,EAEf,EAAe,EAAc,EAAoB,EAE5C,KAAK,MAAO,GAAe,EAAS,GAAK,GAG5C,YACF,EAAiB,EAAoB,EACrC,EAAoB,CACtB,GAAI,GAAW,KACb,MAAO,MAGT,GAAI,IAAY,QACd,EAAU,EAAU,EAAa,GAAI,CAAC,EAAa,EAAY,YACtD,IAAY,OACrB,EAAU,EAAU,MAEpB,MAAM,IAAI,GAAW,2BAA2B,MAElD,MAAO,GC7CH,YACF,EAAW,EAAsB,CAEnC,MAAO,GAAK,IACV,IAAgB,GACZ,IAAe,gBACN,GAAU,EAAG,CAAC,EAAG,EAAG,EAAG,IAE3B,IAUP,YACF,EAAW,EAAsB,CACnC,MAAO,GAAK,IACV,IAAgB,GACZ,IAAe,gBACN,GAAU,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,IAE9B,IAqBP,aACF,EAAW,EAAgB,EAAc,EAAU,EAAG,EAAU,QAChE,EAAyB,EAAe,EAAC,CAC3C,MAAO,GAAK,IAAK,CAMf,GALI,GAAc,MAChB,GAAa,MAEf,GAAgB,GAEZ,EAAE,MAAM,SAAW,EACrB,KAAM,IAAI,GACN,+DACG,EAAE,MAAM,mBAEjB,GAAI,EAAO,MAAM,SAAW,EAC1B,KAAM,IAAI,GACN,iEACG,EAAO,MAAM,kBAEtB,GAAI,GAAQ,MAAQ,EAAK,MAAM,SAAW,EACxC,KAAM,IAAI,GACN,+DACG,EAAO,MAAM,kBAMtB,GAHI,IAAe,iBACjB,GAAQ,GAAU,EAAG,CAAC,EAAG,EAAG,KAE1B,IAAY,SACd,KAAM,IAAI,IACN,iFAGN,GAAI,GAAgB,GAChB,EAA0B,EAAoB,EAC9C,IAAY,OAAS,OAAS,QAAS,MAAO,GAClD,MAAI,IAAQ,MACV,GAAM,GAAQ,EAAG,IAEZ,IAmDL,YACF,EAAW,EAAgB,EAAc,EAAU,CAAC,EAAG,GACvD,EAAU,QAAS,EAAyB,EAC5C,EAA+B,KAAI,CACrC,MAAO,GAAK,IAAK,CAKf,GAJI,GAAc,MAChB,GAAa,MAEf,GAAgB,GACZ,EAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,KAAM,IAAI,GACN,6EACgB,EAAE,SAExB,GAAI,EAAO,OAAS,GAAK,EAAO,OAAS,EACvC,KAAM,IAAI,GACN,8EACgB,EAAE,SAExB,GAAI,GAAI,GAAsB,EAAG,GACjC,GAAI,IAAY,SACd,KAAM,IAAI,IACN,iFAGN,MAAA,GAAQ,GAAM,OAAO,CACnB,EAAG,EACH,OAAQ,EACR,QAAS,EACT,IAAK,IAAY,OAAS,OAAS,QACnC,UAAW,EACX,WAAY,OACZ,KAAA,EACA,WAAA,IAEE,IAAe,iBACjB,GAAQ,GAAU,EAAG,CAAC,EAAG,EAAG,EAAG,KAE1B,IA6BL,aACF,EAAW,EAAgB,EAAc,EAAU,CAAC,EAAG,EAAG,GAC1D,EAAU,QAAS,EACnB,EAAuC,CACzC,MAAO,GAAK,IAAK,CAKf,GAJI,GAAc,MAChB,GAAa,MAEf,GAAgB,GACZ,EAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,KAAM,IAAI,GACN,mEACG,EAAE,SAEX,GAAI,EAAO,OAAS,GAAK,EAAO,OAAS,EACvC,KAAM,IAAI,GACN,oEACG,EAAE,SAEX,GAAI,GAAI,GAAsB,EAAG,GACjC,GAAI,IAAY,SACd,KAAM,IAAI,IACN,iFAGN,MAAA,GAAQ,GACJ,EACA,EAAmC,EACnC,IAAY,OAAS,OAAS,QAAS,QAAS,GAChD,GAAQ,MACV,GAAM,GAAQ,EAAG,IAEf,IAAe,iBACjB,GAAQ,GAAU,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAE7B,IAmHL,GAAA,IAAA,aAAiC,GAAK,CAwB1C,YAAY,EAAc,EAAuB,CAC/C,MAAM,GAIN,GAVQ,KAAA,KAAsB,KAEvB,KAAA,2BAAoD,eACpD,KAAA,yBAAkD,QAIzD,GAAS,WAAW,GACpB,KAAK,KAAO,EACE,GAAsB,KAAK,KAAM,QAC3C,KAAK,OAAS,GAAK,KAAK,OAAS,GAAK,KAAK,OAAS,EACtD,KAAM,IAAI,IACN,qDACI,KAAK,iCAqBf,GAlBA,KAAK,WAAa,GAAe,EAAK,WAAY,EAAM,cACxD,KAAK,QAAU,GACX,EAAK,SAAW,KAAO,EAAI,EAAK,QAAS,EAAM,WACnD,KAAK,QAAU,EAAK,SAAW,KAAO,QAAU,EAAK,QACrD,GAAiB,KAAK,SACtB,KAAK,WACD,EAAK,YAAc,KAAO,eAAiB,EAAK,WACpD,GAAgB,KAAK,YACrB,KAAK,WAAa,GAAc,EAAK,YACrC,KAAK,QAAU,EAAK,SAAW,KAAO,GAAO,EAAK,QAClD,KAAK,gBACD,GAAe,EAAK,iBAAmB,KAAK,0BAChD,KAAK,eAAiB,GAAc,EAAK,gBACzC,KAAK,gBAAkB,GAAe,EAAK,iBAC3C,KAAK,oBAAsB,GAAe,EAAK,qBAC/C,KAAK,aAAe,GAChB,EAAK,cAAgB,KAAO,EAAI,EAAK,aAAc,EACnD,gBACA,KAAK,OAAS,GACb,MAAM,QAAQ,KAAK,eAAiB,KAAK,aAAa,SAAW,EACpE,KAAM,IAAI,GACN,iGAEG,KAAK,UAAU,KAAK,iBACtB,GAAI,KAAK,OAAS,GACvB,GAAI,MAAO,MAAK,cAAiB,SAC/B,KAAK,aAAe,CAAC,KAAK,aAAc,KAAK,sBACpC,KAAK,aAAa,SAAW,EACtC,KAAM,IAAI,GACN,0FAC6B,KAAK,UAAU,KAAK,yBAE9C,KAAK,OAAS,GACvB,GAAI,MAAO,MAAK,cAAiB,SAC/B,KAAK,aACD,CAAC,KAAK,aAAc,KAAK,aAAc,KAAK,sBACvC,KAAK,aAAa,SAAW,EACtC,KAAM,IAAI,GACN,4FAC6B,KAAK,UAAU,KAAK,wBAK1C,YAAW,EAAuB,CAIjD,GAFc,GACV,cAAgB,GAAM,2CACtB,MAAO,GAAK,YAAe,UAC3B,CAAe,GACX,EAAK,WAAY,SAAU,EAAG,GACpC,KAAM,IAAI,GACN,oGAEI,KAAK,UAAU,EAAK,gBAIhC,WAAS,CACP,GAAM,GAAmC,CACvC,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,QAAS,KAAK,QACd,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,WAAY,GAAoB,KAAK,YACrC,QAAS,KAAK,QACd,gBAAiB,GAAqB,KAAK,iBAC3C,gBAAiB,GAAqB,KAAK,iBAC3C,oBAAqB,GAAqB,KAAK,qBAC/C,eAAgB,GAAoB,KAAK,iBAErC,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAQL,GAAA,aAA6B,GAAQ,CAczC,YAAY,EAAc,EAAmB,CAC3C,MAAM,EAAM,GAZJ,KAAA,OAAwB,KAahC,GAAK,WAAW,GAChB,KAAK,QAAU,EAAK,QACN,GAAsB,KAAK,QAAS,WAClD,KAAK,kBAAoB,GACrB,EAAK,mBAAqB,KAAK,4BACnC,KAAK,iBAAmB,GAAc,EAAK,kBAC3C,KAAK,kBAAoB,GAAe,EAAK,mBAG/C,MAAM,EAAyB,CAC7B,EAAa,GAAmB,GAChC,GAAM,GACF,KAAK,aAAe,gBAAkB,EAAI,EAAW,OAAS,EAClE,GAAI,EAAW,IAAgB,KAC7B,KAAM,IAAI,GACN,+DACS,EAAW,MAE1B,GAAM,GAAW,EAAW,GAEtB,EAAc,KAAK,WAAW,OAAO,CAAC,EAAU,KAAK,UAE3D,KAAK,OAAS,KAAK,UACf,SAAU,EAAa,KAAM,KAAK,kBAClC,KAAK,kBAAmB,GAAM,KAAK,kBACnC,KAAK,SACP,MAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,SAAU,KAAM,KAAK,gBACnC,KAAK,gBAAiB,GAAM,KAAK,iBAGvC,KAAK,UAAY,CAAC,CAAC,KAAM,KAAK,KAAO,EAAG,KAAM,EAAE,GAAc,KAC9D,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,EAAS,GAAoB,GAC7B,GAAI,GACE,EAAY,KAAK,MAAQ,KAAO,KAAO,KAAK,KAAK,OACjD,EAAoC,GACtC,KAAK,WAAW,gBAEpB,GAAI,GAAuB,MAAQ,KAAK,OAAS,EAC/C,EAAU,GACN,EAAQ,KAAK,OAAO,OAAQ,EAAW,KAAK,QAAS,KAAK,QAC1D,KAAK,WAAY,KAAK,aACtB,OACC,CACL,GAAI,KAAK,OAAS,EAChB,EAAU,IACN,EAAQ,KAAK,OAAO,OAAQ,EAAW,KAAK,QAAQ,GACpD,KAAK,QAAS,KAAK,WAAY,KAAK,aAAa,YAC5C,KAAK,OAAS,EAEvB,EAAU,GACN,EAAQ,KAAK,OAAO,OAAQ,EAAW,KAAK,QAAS,KAAK,QAC1D,KAAK,WAAY,KAAK,sBACjB,KAAK,OAAS,EACvB,EAAU,IACN,EAAQ,KAAK,OAAO,OAAQ,EAAW,KAAK,QAAS,KAAK,QAC1D,KAAK,WAAY,KAAK,kBAE1B,MAAM,IAAI,IACN,yDAGF,KAAK,YAAc,MACrB,GAAU,KAAK,WAAW,MAAM,IAIpC,MAAO,KAIX,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAM,GAAqB,GACrB,EAAS,KAAK,aAAe,eAC/B,EAAW,MAAM,EAAG,EAAW,OAAS,GACxC,EAAW,MAAM,GACrB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,GAAM,GAAS,GACX,EAAM,GAAI,KAAK,WAAW,GAAI,KAAK,QAAS,KAAK,QAAQ,GACzD,MAAO,MAAK,cAAiB,SAAW,KAAK,aACL,KAAK,aAAa,IAC9D,EAAS,KAAK,GAGhB,GAAI,GAAc,CAAC,EAAW,IAC9B,MAAI,MAAK,aAAe,eACtB,GAAc,EAAY,OAAO,GACjC,EAAY,KAAK,KAAK,UAEtB,GAAY,KAAK,KAAK,SACtB,EAAc,EAAY,OAAO,IAE5B,EAGT,WAAS,CACP,GAAM,GAAS,CACb,QAAS,KAAK,QACd,kBAAmB,GAAqB,KAAK,mBAC7C,kBAAmB,GAAqB,KAAK,mBAC7C,iBAAkB,GAAoB,KAAK,mBAEvC,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,QAGQ,YAAW,EAAmB,CAE7C,GAAI,CAAE,YAAa,KAAS,MAAO,GAAK,SAAY,UAChD,EAAK,QAAU,EACjB,KAAM,IAAI,GACN,0EACW,KAAK,UAAU,EAAK,cAKnC,GAAA,aAAsB,GAAI,CAG9B,YAAY,EAAmB,CAC7B,MAAM,EAAG,GACT,GAAO,WAAW,GAGpB,WAAS,CACP,GAAM,GAAS,MAAM,YACrB,MAAA,OAAO,GAAO,KACP,QAGQ,YAAW,EAAmB,CAE7C,GAAK,MAAO,GAAK,YAAe,UAC5B,CAAe,GACX,EAAK,WAAY,SAAU,EAAG,GACpC,KAAM,IAAI,GACN,8FAC+B,KAAK,UAAU,EAAK,kBAnBpD,GAAA,UAAY,SAuBrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAsB,GAAI,CAG9B,YAAY,EAAmB,CAC7B,MAAM,EAAG,GACT,GAAO,WAAW,GAGpB,WAAS,CACP,GAAM,GAAS,MAAM,YACrB,MAAA,OAAO,GAAO,KACP,QAGQ,YAAW,EAAmB,CAE7C,GAAI,MAAO,GAAK,YAAe,UACzB,CAAE,OAAM,QAAQ,EAAK,aAClB,GAAK,WAAW,SAAW,GAAK,EAAK,WAAW,SAAW,IAChE,KAAM,IAAI,GACN,2FAEI,KAAK,UAAU,EAAK,kBApB3B,GAAA,UAAY,SAyBrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAA+B,GAAM,CAKzC,YAAY,EAAmB,CAC7B,MAAM,GAGN,GAFA,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAEnC,KAAK,UAAY,QAAU,KAAK,UAAY,QAC9C,KAAM,IAAI,GACN,uGAC0C,KAAK,WAIvD,MAAM,EAAyB,CAG7B,GAFA,EAAa,GAAmB,GAE5B,EAAW,SAAW,EACxB,KAAM,IAAI,GACN,mDACA,KAAK,UAAU,IAGrB,GAAM,GACF,KAAK,aAAe,gBAAkB,EAAI,EAAW,OAAS,EAClE,GAAI,EAAW,IAAgB,KAC7B,KAAM,IAAI,GACN,wEAGN,GAAM,GAAW,EAAW,GACtB,EAAc,KAAK,WAAW,OAAO,CAAC,KAAK,QAAS,IAE1D,KAAK,OAAS,KAAK,UACf,SAAU,EAAa,UAAW,KAAK,kBACvC,KAAK,kBAAmB,GAAM,KAAK,kBACnC,KAAK,SACP,MAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,SAAU,UAAW,KAAK,gBACxC,KAAK,gBAAiB,GAAM,KAAK,iBAIvC,KAAK,UACD,CAAC,GAAI,IAAU,CAAC,KAAM,EAAG,KAAM,EAAE,GAAc,MACnD,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAW,GAAK,IAAK,CACnB,GAAI,GAAQ,GAAoB,GAChC,GAAI,EAAM,MAAM,SAAW,EACzB,KAAM,IAAI,GACN,2FAC6B,EAAM,MAAM,UAG/C,GAAM,GAAa,EAAM,MACnB,EAAY,EAAW,GAEzB,EACA,EACA,KAAK,aAAe,gBACtB,GAAQ,EACR,EAAQ,GAER,GAAQ,EACR,EAAQ,GAGV,GAAM,GAAS,EAAW,GACpB,EAAQ,EAAW,GACnB,EAAU,KAAK,WAAW,GAC1B,EAAU,KAAK,WAAW,GAC1B,EAAU,KAAK,QAAQ,GACvB,EAAU,KAAK,QAAQ,GAGvB,EAAY,GAAa,EAAQ,EAAS,EAAS,KAAK,SACxD,EAAW,GAAa,EAAO,EAAS,EAAS,KAAK,SAMtD,EACF,CAAC,EAAW,EAAW,EAAU,KAAK,SAEtC,KAAK,aAAe,gBACtB,GAAY,GAAU,EAAO,CAAC,EAAG,EAAG,EAAG,KAEzC,GAAI,GAAc,GACd,EAAmB,KAAK,OAAO,OAAoB,EACnD,KAAK,QAA6B,KAAK,SAC3C,MAAI,MAAK,aAAe,gBACtB,GAAc,GAAU,EAAS,CAAC,EAAG,EAAG,EAAG,KAGzC,KAAK,MAAQ,MACf,GACM,GAAQ,EAAS,KAAK,KAAK,OAAQ,KAAK,aAE5C,KAAK,YAAc,MACrB,GAAU,KAAK,WAAW,MAAM,IAE3B,IAIX,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAM,GAAc,EAAW,QAE3B,EACA,EACA,EACA,KAAK,aAAe,gBACtB,GAAc,EACd,EAAa,EACb,EAAY,GAEZ,GAAc,EACd,EAAa,EACb,EAAY,GAGd,GAAM,GAAU,KAAK,WAAW,GAC1B,EAAU,KAAK,WAAW,GAC1B,EAAU,KAAK,QAAQ,GACvB,EAAU,KAAK,QAAQ,GAE7B,MAAA,GAAY,GAAe,KAAK,QAChC,EAAY,GACR,GAAa,EAAY,GAAa,EAAS,EAAS,KAAK,SACjE,EAAY,GACR,GAAa,EAAY,GAAY,EAAS,EAAS,KAAK,SACzD,EAGT,WAAS,CACP,GAAM,GAAS,MAAM,YACrB,MAAA,OAAO,GAAO,aACP,IA9IF,GAAA,UAAY,kBAiJrB,GAAc,cAAc,IA0CtB,GAAA,IAAA,aAA6B,GAAI,CAqBrC,YAAY,EAAc,EAA+B,CACvD,MAAM,EAAM,GAEZ,GAXO,KAAA,8BACL,gBACK,KAAA,8BACL,gBAEM,KAAA,gBAAiC,KACjC,KAAA,gBAAiC,KAKrC,EAAO,SAAW,KACpB,KAAM,IAAI,GACN,uFAGN,GAAI,EAAO,mBAAqB,MAAQ,EAAO,mBAAqB,MAChE,EAAO,kBAAoB,KAC7B,KAAM,IAAI,GACN,sPAKN,GAAI,EAAO,SAAW,MAAQ,EAAO,UAAY,QAC7C,EAAO,UAAY,QACrB,KAAM,IAAI,GACN,gBAAgB,KAAK,uEACe,KAAK,UAAU,EAAO,YAGhE,KAAK,gBACD,EAAO,iBAAmB,KAAO,EAAI,EAAO,gBAChD,KAAK,qBAAuB,GACxB,EAAO,sBAAwB,KAAK,+BACxC,KAAK,qBAAuB,GAAe,EAAO,sBAClD,KAAK,oBAAsB,GAAc,EAAO,qBAChD,KAAK,qBAAuB,GACxB,EAAO,sBAAwB,KAAK,+BACxC,KAAK,qBAAuB,GAAe,EAAO,sBAClD,KAAK,oBAAsB,GAAc,EAAO,qBAGlD,MAAM,EAAyB,CAE7B,GADA,EAAa,GAAmB,GAC5B,EAAW,OAAS,KAAK,KAAO,EAClC,KAAM,IAAI,GACN,0BAA0B,KAAK,0BAC5B,KAAK,KAAO,gCACZ,KAAK,UAAU,MAExB,GAAM,GACF,KAAK,aAAe,gBAAkB,EAAI,EAAW,OAAS,EAClE,GAAI,EAAW,IAAgB,MAAQ,EAAW,GAAe,EAC/D,KAAM,IAAI,GACN,oEACa,KAAK,UAAU,EAAW,OAG7C,GAAM,GAAW,EAAW,GACtB,EACF,KAAK,WAAW,OAAO,CAAC,EAAU,KAAK,kBACrC,EAAuB,GAC7B,OAAS,GAAI,EAAG,EAAI,KAAK,KAAM,EAAE,EAC/B,EAAqB,KAAK,GAE5B,EAAqB,KAAK,EAAW,KAAK,gBAAiB,KAAK,SAEhE,GAAM,GAAY,GAClB,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,EAAsB,UAC1C,KAAK,qBAAsB,KAAK,qBAAsB,EACtD,KAAK,qBACT,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,EAAsB,UAC1C,KAAK,qBAAsB,KAAK,qBAAsB,EACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,SAAU,UAAW,KAAK,gBACxC,KAAK,gBAAiB,EAAW,KAAK,gBAE1C,KAAK,KAAO,KAGd,KAAK,UACD,CAAC,GAAI,IAAU,CAAC,KAAM,KAAK,KAAO,EAAG,KAAM,EAAE,GAAc,MAC/D,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,EAAS,GAAoB,GAE7B,GAAI,GACJ,GAAI,KAAK,OAAS,EAChB,KAAM,IAAI,IACN,oDACC,MAAI,MAAK,OAAS,GACnB,MAAK,aAAe,iBACtB,GAAa,GAAU,EAAQ,CAAC,EAAG,EAAG,EAAG,KAG3C,EAAa,GACT,EAAoB,KAAK,gBAAgB,OACzC,KAAK,gBAAgB,OACrB,KAAK,QAA6B,KAAK,QACvC,KAAK,aAAkC,SAGzC,KAAK,SACP,GAAW,GAAQ,EAAQ,KAAK,KAAK,OAAQ,KAAK,aAEhD,KAAK,YAAc,MACrB,GAAS,KAAK,WAAW,MAAM,IAG7B,KAAK,aAAe,iBACtB,GAAa,GAAU,EAAQ,CAAC,EAAG,EAAG,EAAG,KAEpC,IAIX,WAAS,CACP,GAAM,GAAS,MAAM,YACrB,MAAA,OAAO,GAAO,KACd,MAAO,GAAO,kBACd,MAAO,GAAO,kBACd,MAAO,GAAO,iBACd,EAAO,qBACH,GAAqB,KAAK,sBAC9B,EAAO,qBACH,GAAqB,KAAK,sBAC9B,EAAO,qBACH,GAAqB,KAAK,sBAC9B,EAAO,qBACH,GAAqB,KAAK,sBAC9B,EAAO,oBACH,GAAoB,KAAK,qBAC7B,EAAO,oBACH,GAAoB,KAAK,qBACtB,IAzJF,GAAA,UAAY,gBA6Jf,GAAA,IAAA,aAA+B,GAAa,CAGhD,YAAY,EAA6B,CACvC,MAAM,EAAG,KAFJ,GAAA,UAAY,kBAKrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAsB,GAAI,CAG9B,YAAY,EAAmB,CAC7B,MAAM,EAAG,GACT,GAAO,WAAW,GAClB,KAAK,UAAY,CAAC,CAAC,KAAM,IAG3B,WAAS,CACP,GAAM,GAAS,MAAM,YACrB,MAAA,OAAO,GAAO,KACd,MAAO,GAAO,WACP,QAGQ,YAAW,EAAmB,CAE7C,GAAI,MAAO,GAAK,YAAe,UAC3B,CAAe,GACX,EAAK,WAAY,SAAU,EAAG,GACpC,KAAM,IAAI,GACN,yFAC0B,KAAK,UAAU,EAAK,kBArB/C,GAAA,UAAY,SAyBrB,GAAc,cAAc,IAgCtB,GAAA,IAAA,aAA0B,GAAK,CAMnC,YAAY,EAAyB,CACnC,MAAM,GACF,MAAO,GAAK,UAAa,SAC3B,KAAK,SACD,CAAC,CAAC,EAAK,SAAU,EAAK,UAAW,CAAC,EAAK,SAAU,EAAK,WACjD,MAAO,GAAK,SAAS,IAAO,SACrC,KAAK,SAAW,CACd,CAAC,EAAK,SAAS,GAAI,EAAK,SAAS,IACjC,CAAC,EAAK,SAAS,GAAc,EAAK,SAAS,KAG7C,KAAK,SAAW,EAAK,SAEvB,KAAK,WACD,EAAK,aAAe,OAAY,eAAiB,EAAK,WAC1D,KAAK,UAAY,CAAC,CAAC,KAAM,IAG3B,mBAAmB,EAAiB,CAClC,MAAI,MAAK,aAAe,gBACf,CACL,EAAW,GAAI,EAAW,GAC1B,EAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GACvD,EAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,IAGlD,CACL,EAAW,GACX,EAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GACvD,EAAW,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,EAAW,IAK5E,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CAGf,GAFA,EAAS,GAAoB,GAEzB,KAAK,aAAe,eAAgB,CACtC,GAAM,GAAY,GACd,EAAQ,KAAK,SAAS,GAAG,GACzB,EAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,GACjE,MAAS,IACL,EAAS,KAAK,SAAS,GAAG,GAC1B,EAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,OAC5D,CACL,GAAM,GAAY,GACd,EAAQ,KAAK,SAAS,GAAG,GACzB,EAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,GACjE,MAAS,IACL,EAAS,KAAK,SAAS,GAAG,GAC1B,EAAO,MAAM,GAAK,KAAK,SAAS,GAAG,GAAK,KAAK,SAAS,GAAG,GAAI,MAKvE,WAAS,CACP,GAAM,GAAS,CAAC,SAAU,KAAK,SAAU,WAAY,KAAK,YACpD,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAhEF,GAAA,UAAY,aAmErB,GAAc,cAAc,IA6BtB,GAAA,IAAA,aAA4B,GAAK,CAQrC,YAAY,EAA2B,CACrC,MAAM,GANW,KAAA,aAAe,CAAC,EAAG,GAOpC,KAAK,UAAY,CAAC,CAAC,KAAM,IACzB,KAAK,KAAO,EAAK,MAAQ,KAAO,KAAK,aAAe,EAAK,KACzD,KAAK,WACD,EAAK,YAAc,KAAO,eAAiB,EAAK,WACpD,GAAgB,KAAK,YACrB,KAAK,cACD,EAAK,eAAiB,KAAO,UAAY,EAAK,cAClD,GAAyB,KAAK,eAGhC,mBAAmB,EAAiB,CAClC,GAAI,KAAK,aAAe,gBAAiB,CACvC,GAAM,GACF,EAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,EAAW,GACvD,EAAQ,EAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,EAAW,GACvE,MAAO,CAAC,EAAW,GAAI,EAAW,GAAI,EAAQ,OACzC,CACL,GAAM,GACF,EAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,EAAW,GACvD,EAAQ,EAAW,IAAM,KAAO,KAAO,KAAK,KAAK,GAAK,EAAW,GACvE,MAAO,CAAC,EAAW,GAAI,EAAQ,EAAO,EAAW,KAIrD,KAAK,EAAyB,EAAc,CAC1C,MAAW,GAAK,IAAK,CACnB,GAAI,GAAQ,GAAoB,GAC1B,EAAa,EAAM,MAEzB,GAAI,KAAK,aAAe,gBAAiB,CACvC,EAAY,GAAU,EAAO,CAAC,EAAG,EAAG,EAAG,IACvC,GAAM,GAAS,KAAK,KAAK,GAAK,EAAW,GACnC,EAAQ,KAAK,KAAK,GAAK,EAAW,GAElC,EAAU,KAAK,gBAAkB,UACnC,EAAM,sBAAsB,CAAC,EAAQ,IACrC,EAAM,eAAe,CAAC,EAAQ,IAClC,MAAW,IAAU,EAAS,CAAC,EAAG,EAAG,EAAG,QACnC,CACL,GAAM,GAAS,KAAK,KAAK,GAAK,EAAW,GACnC,EAAQ,KAAK,KAAK,GAAK,EAAW,GACxC,MAAO,MAAK,gBAAkB,UAC1B,EAAM,sBAAsB,CAAC,EAAQ,IACrC,EAAM,eAAe,CAAC,EAAQ,OAKxC,WAAS,CACP,GAAM,GAAS,CAAC,KAAM,KAAK,KAAM,WAAY,KAAK,YAC5C,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA5DF,GAAA,UAAY,eA+DrB,GAAc,cAAc,ICxtCtB,aACF,EAAW,EAAyB,EAA4B,CAAC,EAAG,GACpE,EAAU,QAAS,EACnB,EAA+B,CACjC,MAAO,GAAK,IAAK,CACX,GAAc,MAChB,GAAa,MAEf,GAAgB,GAChB,GAAI,GAAI,GAAsB,EAAG,GACjC,GAAI,EAAE,OAAS,EACb,KAAM,IAAI,GACN,mEACG,EAAE,UAEX,GAAI,EAAgB,OAAS,EAC3B,KAAM,IAAI,GACN,yDACG,EAAgB,UAEzB,MAAA,GAAQ,GACJ,EAAe,EAA6B,EAC5C,IAAY,OAAS,OAAS,QAAS,OAAQ,GAC/C,IAAe,iBACjB,GAAQ,GAAU,EAAG,CAAC,EAAG,EAAG,EAAG,KAE1B,IAsCL,GAAA,IAAA,aAA+B,GAAQ,CAU3C,YAAY,EAA8B,CACxC,MAAM,EAAG,GAHH,KAAA,gBAAiC,KAIvC,KAAK,gBACD,EAAK,iBAAmB,KAAO,EAAI,EAAK,gBAC5C,KAAK,qBAAuB,GACxB,EAAK,sBAAwB,KAAK,4BACtC,KAAK,oBAAsB,GAAc,EAAK,qBAC9C,KAAK,qBAAuB,GAAe,EAAK,sBAGlD,MAAM,EAAyB,CAE7B,GADA,EAAa,GAAmB,GAC5B,EAAW,OAAS,EACtB,KAAM,IAAI,GACN,uEACyB,KAAK,UAAU,OAE9C,GAAM,GAAc,KAAK,aAAe,gBAAkB,EAAI,EAC9D,GAAI,EAAW,IAAgB,MAAQ,EAAW,GAAe,EAC/D,KAAM,IAAI,GACN,yFAC2B,EAAW,QAE5C,GAAM,GAAW,EAAW,GACtB,EAA8B,CAClC,KAAK,WAAW,GAAI,KAAK,WAAW,GAAI,EAAU,KAAK,iBAGzD,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,EAAsB,KAC1C,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,EAAW,KAAK,iBAAkB,KAAM,KAAK,gBACtD,KAAK,gBAAiB,GAAM,KAAK,gBAErC,KAAK,KAAO,KAEd,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,EAAS,GAAoB,GAC7B,GAAI,GAAU,IACV,EAAQ,KAAK,gBAAgB,OAAQ,KAAK,QAC1C,KAAK,QAAS,KAAK,WAAY,MAEnC,MAAI,MAAK,SACP,GAAY,GAAQ,EAAS,KAAK,KAAK,OAAQ,KAAK,aAElD,KAAK,YAAc,MACrB,GAAU,KAAK,WAAW,MAAM,IAE3B,IAIX,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAM,GACF,KAAK,aAAe,gBAAkB,EAAW,GAAK,EAAW,GAC/D,EACF,KAAK,aAAe,gBAAkB,EAAW,GAAK,EAAW,GAC/D,EAAa,KAAK,aAAe,gBACnC,EAAW,GAAK,KAAK,gBACrB,EAAW,GAAK,KAAK,gBACnB,EAAU,GACZ,EAAM,KAAK,WAAW,GAAI,KAAK,QAAS,KAAK,QAAQ,IACnD,EAAU,GACZ,EAAM,KAAK,WAAW,GAAI,KAAK,QAAS,KAAK,QAAQ,IACzD,MAAI,MAAK,aAAe,gBACf,CAAC,EAAW,GAAI,EAAY,EAAS,GAGrC,CAAC,EAAW,GAAI,EAAS,EAAS,GAI7C,WAAS,CACP,GAAM,GAAS,MAAM,YACrB,MAAA,GAAO,gBAAqB,KAAK,gBACjC,EAAO,qBACH,GAAqB,KAAK,sBAC9B,EAAO,qBACH,GAAqB,KAAK,sBAC9B,EAAO,oBACH,GAAoB,KAAK,sBACtB,IAjGF,GAAA,UAAY,kBAoGrB,GAAc,cAAc,ICzJtB,YACF,EACA,EACA,EACA,EAAqB,CAKvB,GAAI,MAAM,QAAQ,GAAS,CACzB,GAAI,GAAgB,MAAQ,GAAa,KACvC,KAAM,IAAI,GACN,iFAGF,GAAgB,MAClB,GAAY,EAAO,MAAM,EAAO,OAAS,EAAc,EAAO,QAC9D,EAAS,EAAO,MAAM,EAAG,EAAO,OAAS,IAEvC,EAAO,OAAS,GAClB,GAAe,EAAO,MAAM,EAAG,EAAO,SAExC,EAAS,EAAO,GAGlB,WAAsB,EACgB,CACpC,MAAI,IAAK,MAAQ,MAAM,QAAQ,GACtB,EAEA,CAAC,GAIZ,MAAA,GAAe,EAAa,GAC5B,EAAY,EAAa,GAElB,CAAC,OAAA,EAAQ,aAAA,EAAc,UAAA,GA8C1B,YACF,EAA+B,EAAgB,EAC/C,EAAc,GAAO,EAAe,EAAsB,EAAS,GACnE,EAAqB,GAAK,CAC5B,MAAW,GAAK,IAAK,CACnB,GAAM,GAAO,EAAO,MAAM,OAC1B,GAAI,EAAO,EACT,KAAM,IAAI,GAAW,uCAAuC,OAK9D,GAAM,GAAO,CAAC,EAAG,GAAG,OAAkB,GAAM,EAAG,IAG/C,GAFA,EAAa,GAAU,EAAQ,GAE3B,GAAa,KACf,KAAM,IAAI,IACN,kFAKF,GACF,QAAQ,KACJ,qGAIF,GAAQ,MACV,GAAO,EAAK,OAAO,QAAQ,OAAO,WAC9B,EAAK,OAAS,EAAO,GACvB,GAAW,GAAW,EAAM,KAE9B,EAAW,GAAU,EAAM,IAGzB,GACF,GAAa,GAAQ,EAAQ,GACzB,GAAQ,MACV,GAAW,GAAQ,EAAM,KAc7B,GAAM,GAA2B,GAC7B,EACA,EAAS,EACP,EAAY,EAAO,MAAM,GACzB,EAAoB,GAAQ,GAC9B,EACA,GAAQ,MACV,GAAmB,GAAQ,IAG7B,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAAG,CAClC,GAAM,GAAe,EAAc,GAC7B,EAAkB,EAAK,IAAM,EAAa,EAAc,IAE9D,GAAI,GAAQ,KACV,EAAa,EAAY,GACzB,EAAS,EAAY,OAChB,CACL,GAAM,GAAoB,EAAK,IAAK,CAClC,GAAM,GAAW,EAAa,GACxB,EAAkB,GAAS,GAAU,IAAI,GAEzC,EACF,EAAY,GAAG,IAAI,GAAU,IAAI,EAAO,GAAG,IAAI,IAC7C,EAAY,EAAO,IAAI,CAAC,EAAO,IAC5B,EAAY,GAAG,GAAG,IAAI,GAAU,IAAI,EAAM,IAAI,KAEvD,MAAO,CAAC,OAAA,EAAQ,UAAA,KAElB,EAAa,EAAc,OAC3B,EAAS,EAAc,UAGrB,GACF,EAAe,KAAK,GAGxB,GAAI,GACJ,MAAI,IAEF,GAAc,GAAM,EADP,IAGR,CAAC,EAAY,EAAS,KAyG3B,GAAA,IAAA,aAAmB,GAAK,CAqB5B,YAAY,EAAkB,CAC5B,MAAM,GACN,GAAI,GACJ,GAAI,EAAK,MAAQ,KACf,KAAM,IAAI,GACN,wDAMN,GALW,MAAM,QAAQ,EAAK,MAC5B,EAAO,GAAI,IAAgB,CAAC,MAAO,EAAK,OAExC,EAAO,EAAK,KAEV,EAAK,WAAa,KACpB,KAAM,IAAI,GACN,qGAGN,KAAK,KAAO,EACZ,KAAK,gBACD,EAAK,iBAAmB,KAAO,GAAQ,EAAK,gBAChD,KAAK,YAAc,EAAK,aAAe,KAAO,GAAQ,EAAK,YAC3D,KAAK,YAAc,EAAK,aAAe,KAAO,GAAQ,EAAK,YAC3D,KAAK,UAAY,EAAK,UAAY,KAAO,GAAQ,EAAK,SACtD,KAAK,OAAS,EAAK,QAAU,KAAO,GAAQ,EAAK,OAEjD,KAAK,gBAAkB,GACvB,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KACvC,KAAK,UAAY,KACjB,KAAK,QAAU,KAEf,KAAK,aAAe,KAIpB,KAAK,WAAa,GAKpB,WAAS,CACP,GAAI,KAAK,SAAW,KAAM,CACxB,GAAM,GACF,MAAM,QAAQ,KAAK,KAAK,WAAa,KAAK,KAAK,UAAU,OAAS,EACtE,MAAkB,IAAM,EAAG,GAAW,IAAI,GAAK,UAE/C,OAAO,MAAK,QAMhB,UAAU,EAAgB,CACxB,KAAK,QAAU,EAGjB,mBAAmB,EAAyB,CACtC,GAAgB,IAClB,GAAc,EAAuB,IAEvC,EAAa,EAGb,GAAI,GAAY,KAAK,KAAK,UACrB,MAAM,QAAQ,IACjB,GAAY,CAAC,IAEf,GAAM,GAAY,EAAU,GACxB,EAOJ,GANI,KAAK,gBACP,EAAc,CAAC,EAAW,GAAI,EAAW,GAAI,GAE7C,EAAc,CAAC,EAAW,GAAI,GAG5B,KAAK,YAAa,CACpB,GAAM,GAAsB,GAC5B,OAAW,KAAO,GAChB,EAAW,KAAK,CAAC,EAAW,GAAI,IAElC,MAAO,CAAC,GAAa,OAAO,OAE5B,OAAO,GAIX,YAAY,EAAyB,EAAsB,CAEzD,MAAW,GAAK,IAAK,CACf,MAAM,QAAQ,IAChB,GAAO,EAAK,IAEd,GAAM,GAAa,KAAK,gBAAkB,EAAO,KAEjD,GAAI,KAAK,YAAa,CACpB,GAAM,GAAY,KAAK,OAAO,IAAI,GAAK,MACvC,MAAO,CAAC,GAAY,OAAO,OAE3B,OAAO,QAWT,SAAM,CACR,GAAI,KAAK,SAAW,KAAM,CACxB,GAAM,GACF,MAAM,QAAQ,KAAK,KAAK,WAAa,KAAK,KAAK,UAAU,OAAS,EAChE,EAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,EAAO,KAAK,MAEd,MAAO,OAEP,OAAO,MAAK,WAIZ,QAAO,EAAW,CACpB,KAAK,QAAU,EAGV,MAAM,EAAyB,CAGpC,GAAM,GAAyB,KAC/B,GAAI,KAAK,cAAgB,KACvB,KAAM,IAAI,IACN,oDAGF,GAAgB,IAClB,GAAc,EAAuB,IAEvC,EAAa,EAEb,GAAM,GAAoB,KAAK,SAAW,EAAW,GAAK,KACpD,EAAW,EAAW,MAAM,GAClC,KAAK,UAAU,GAAK,GAAI,IAAU,CAAC,MAAO,CAAC,EAAW,KAAM,GAAG,KAI/D,GAAM,GAAiB,CAAC,EAAW,IAAI,OAAO,EAAW,MAAM,IAC/D,GAAI,GAAiB,KACnB,KAAM,IAAI,IACN,oDAEJ,KAAK,KAAK,MAAM,GAIlB,GAAI,GAOJ,GANI,MAAM,QAAQ,KAAK,KAAK,WAC1B,EAAY,KAAK,KAAK,UAEtB,EAAY,CAAC,KAAK,KAAK,WAGrB,KAAK,WAAa,MACpB,GAAI,CAAC,EAAK,YACF,KAAK,UAAU,IAAI,GAAQ,EAAK,MAAM,EAAK,MAAM,OAAS,IAC1D,GACN,KAAM,IAAI,GACN,6FACsC,KAAK,wCACd,KAAK,KAAK,iBAG7C,MAAK,UACD,EAAU,IAAI,GAAO,GAAI,IAAU,CAAC,MAAO,CAAC,KAAM,MAEpD,KAAK,UACP,KAAK,cAqBT,YAAY,EAA0B,EAAW,GAAK,CACpD,EAAK,IAAK,CACR,GAAI,CAAC,KAAK,SACR,KAAM,IAAI,IACN,mEAEN,GAAM,GAAY,KAAK,UAAU,GAAG,MAAM,GAC1C,GAAI,GAAa,KACf,KAAM,IAAI,GACN,yUAQN,GAAI,KAAK,SAAW,KACd,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QACD,KAAK,KAAK,UAAU,IAAI,GAAW,GAAM,CAAC,EAAW,KAEzD,KAAK,QAAU,CAAK,GAAM,CAAC,EAAW,KAAK,KAAK,qBAEzC,GAAU,KAEf,GAAQ,KAAK,SAEb,KAAK,YAAc,MACjB,IAAQ,KAAK,YACjB,KAAK,WAAa,IAGhB,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QACD,KAAK,KAAK,UAAU,IAAI,GAAW,GAAM,CAAC,EAAW,KAEzD,KAAK,QAAQ,GAAS,GAAM,CAAC,EAAW,KAAK,KAAK,gBAE/C,CAIL,GAHK,MAAM,QAAQ,IACjB,GAAS,CAAC,IAER,EAAO,SAAW,KAAK,QAAQ,OACjC,KAAM,IAAI,GACN,SAAS,KAAK,gBAAgB,KAAK,QAAQ,oCACxB,EAAO,0CACb,KAGf,IAAa,GAKf,KAAK,WAAW,KAAK,KAAK,QAAQ,SAE9B,GAAQ,KAAK,SAGnB,OAAS,GAAQ,EAAG,EAAQ,KAAK,QAAQ,OAAQ,EAAE,EAAO,CACxD,GAAM,GAAQ,EAAO,GACf,EAAM,MAAM,QAAQ,KAAK,KAAK,WAChC,KAAK,KAAK,UAAU,GACpB,KAAK,KAAK,UACR,EAAgB,CAAC,EAAW,GAClC,GAAI,CAAC,EAAK,YAAY,EAAM,MAAO,GACjC,KAAM,IAAI,GACN,SAAS,gCAAoC,KAAK,wBAChC,qBACd,EAAM,SAEhB,KAAK,QAAQ,GAAS,GAG1B,KAAK,QAAU,KAAK,QAAQ,IAAI,GAAa,GAAK,EAAM,YAI5D,MACI,EACA,EAAe,CAEjB,GAAI,GACA,GAAU,KAAO,KAAO,EAAO,aAC/B,EACA,GAAU,KAAO,KAAO,EAAO,UAC/B,GAAU,MACZ,GAAS,IAGX,GAAM,GACF,GAAgB,EAAQ,EAAc,EAAW,KAAK,cAC1D,EAAS,EAAa,OACtB,EAAe,EAAa,aAC5B,EAAY,EAAa,UAMzB,GAAI,GAAiD,GACjD,EAA+B,GACnC,GAAI,GAAgB,KAAM,CACxB,EAAO,aAAkB,EACzB,EAAmB,EAAiB,OAAO,GAC3C,KAAK,UAAY,GACjB,OAAW,KAAS,GAClB,KAAK,UAAU,KAAK,GAAI,IAAU,CAAC,MAAO,EAAM,SAKlD,EAAkB,EAAgB,OAAO,KAAK,WAUhD,GARI,GAAa,MACf,GAAO,UAAe,EACtB,EAAmB,EAAiB,OAAO,GAE3C,KAAK,aAAe,EAAU,QAGf,EAAiB,YAAc,IAClC,CAEZ,GAAM,GACF,CAAC,GAAQ,OAAO,GACd,EAAgB,KAAK,UAAU,OAAO,GAEtC,EAAoB,KAAK,UAC/B,KAAK,UAAY,EACjB,GAAM,GAAS,MAAM,MAAM,EAAW,GACtC,MAAA,MAAK,UAAY,EACV,MAEP,OAAO,OAAM,MAAM,EAAQ,GAK/B,KAAK,EAAyB,EAAc,CAI1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAO,GAAU,KAAO,KAAO,EAAO,KACtC,EAAW,GAAU,KAAO,KAAO,EAAO,SAC5C,EACA,GAAU,KAAO,KAAO,EAAO,aAEnC,EAAS,GAAoB,GACzB,GAAgB,MACd,MAAK,SACP,EAAe,KAAK,QAEpB,EAAe,KAAK,gBAAgB,IAIxC,GAAM,GACF,MAAM,QAAQ,KAAK,KAAK,WAAa,KAAK,KAAK,UAAU,OAAS,EACtE,GAAI,EAAa,SAAW,EAC1B,KAAM,IAAI,GACN,iBAAiB,6BACd,EAAa,4BAElB,KAAK,QACP,QAAQ,KACJ,oEAGN,GAAM,GAAyB,CAAC,SAAA,GAc1B,EACF,GAZS,CAAC,EAAgB,IAAoB,CAGhD,GAAM,GACF,KAAK,KAAK,KAAK,CAAC,GAAQ,OAAO,GAAS,GAE5C,MAAO,CAAC,EAAQ,GAAI,EAAQ,MAAM,KAMtB,EAAQ,EAAc,KAAK,YAAa,EAAM,KACpD,KAAK,OAAQ,KAAK,iBACpB,EAAa,EAAW,GACxB,EAAU,EAAW,GACrB,EAAS,EAAW,GAEtB,KAAK,UACP,KAAK,YAAY,EAAQ,GAG3B,GAAM,GAAS,KAAK,gBAAkB,EAAU,EAIhD,MAAI,MAAK,YACA,CAAC,GAAQ,OAAO,GAEhB,IAKb,gBAAgB,EAAc,CAC5B,MAAO,GAAK,IAAK,CAGf,GAAI,GAAmB,GAAM,EAAO,OAKpC,MAHA,GAAmB,GAAI,EAAc,CAAC,EAAG,IACzC,EAAiB,GAAW,GAExB,MAAM,QAAQ,KAAK,KAAK,WACnB,KAAK,KAAK,UAAU,IACvB,GAAO,EAAM,EAAM,GAAK,EAAc,CAAC,EAAG,IAAQ,GAE/C,KAAK,KAAK,UAAY,EACzB,CAAG,GAAK,EAAc,CAAC,EAAG,KAAK,KAAK,aACpC,CAAC,QAKP,mBAAgB,CAClB,MAAK,MAAK,UAIH,KAAK,KAAK,iBAHR,MAMP,sBAAmB,CAErB,MAAK,MAAK,UAGH,KAAK,KAAK,oBAFR,KAAK,KAAK,QAKrB,6BAA6B,EAAc,CACzC,MAAM,6BAA6B,GAC/B,KAAK,MAAQ,MACf,KAAK,KAAK,6BAA6B,GAI3C,WAAS,CACP,GAAM,GAAa,MAAM,YAEnB,EAAmC,CACvC,gBAAiB,KAAK,gBACtB,YAAa,KAAK,YAClB,YAAa,KAAK,YAClB,SAAU,KAAK,SACf,OAAQ,KAAK,QAGX,KAAK,cAAgB,MACvB,GAAO,aAAkB,KAAK,cAGhC,GAAM,GAAa,KAAK,KAAK,YAE7B,MAAI,MAAK,iBAAmB,GAAI,WAC9B,GAAO,KAAU,CACf,UAAa,KAAK,KAAK,eACvB,OAAU,IAKd,OAAA,OAAA,GAAW,EAAe,EAAe,SAIpC,YACH,EACA,EACA,EAAgB,GAA8B,CAChD,GAAM,GAAa,EAAO,KACpB,EAAO,GAAY,EAAY,GACrC,MAAO,IAAI,GAAI,OAAO,OAAO,EAAQ,CAAC,KAAA,OArfjC,GAAA,UAAY,MAwfrB,GAAc,cAAc,IAUtB,GAAA,IAAA,aAAgC,GAAK,GA0FrC,GAAA,aAA6B,GAAO,CAiCxC,YAAY,EAA4B,CACtC,MAAM,GANC,KAAA,mBAAqB,OACrB,KAAA,2BAA6B,eAC7B,KAAA,8BAAgC,aAChC,KAAA,yBAAkD,QAIzD,KAAK,MAAQ,EAAK,MAClB,GAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,GACd,EAAK,YAAc,KAAO,KAAK,mBAAqB,EAAK,YAC7D,KAAK,QAAU,EAAK,SAAW,KAAO,GAAO,EAAK,QAElD,KAAK,kBAAoB,GACrB,EAAK,mBAAqB,KAAK,4BACnC,KAAK,qBAAuB,GACxB,EAAK,sBAAwB,KAAK,+BAEtC,KAAK,gBACD,GAAe,EAAK,iBAAmB,KAAK,0BAEhD,KAAK,kBAAoB,GAAe,EAAK,mBAC7C,KAAK,qBAAuB,GAAe,EAAK,sBAChD,KAAK,gBAAkB,GAAe,EAAK,iBAE3C,KAAK,iBAAmB,GAAc,EAAK,kBAC3C,KAAK,oBAAsB,GAAc,EAAK,qBAC9C,KAAK,eAAiB,GAAc,EAAK,gBAEzC,KAAK,QAAqB,GACtB,CAAC,EAAc,GAAI,CAAC,EAAG,EAAK,SAAW,KAAO,EAAI,EAAK,YAC3D,KAAK,iBAA8B,GAAI,CACrC,EACW,GACP,CAAC,EAAG,EAAK,kBAAoB,KAAO,EAAI,EAAK,qBAEnD,KAAK,UAAY,KAAK,MACtB,KAAK,YAAc,KACnB,KAAK,qBAAuB,KAG9B,MAAM,EAAyB,CAC7B,EAAa,GAAmB,GAEhC,KAAK,OAAS,KAAK,UACf,SAAU,CAAC,EAAW,EAAW,OAAS,GAAI,KAAK,OAAQ,KAC3D,KAAK,kBAAmB,KAAK,kBAAmB,GAChD,KAAK,kBACT,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,CAAC,KAAK,MAAO,KAAK,OAAQ,KAC9C,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,OAAQ,KAAM,KAAK,gBACjC,KAAK,gBAAiB,GAAM,KAAK,gBAErC,KAAK,KAAO,KAEd,KAAK,MAAQ,GASf,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CAEf,GADA,EAAS,EACL,EAAO,SAAW,EACpB,KAAM,IAAI,GACN,8CAA8C,EAAO,WAE3D,GAAI,GAAa,EAAO,GACxB,EAAS,EAAO,GAChB,GAAM,GAAW,EAAO,UAAe,KAAO,GAAQ,EAAO,SAEzD,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,QACX,SAAA,KAGnB,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,iBACX,SAAA,KAGhC,GAAI,GACE,EAAiB,KAAK,YACtB,EAAoB,KAAK,qBAC3B,GAAU,KACZ,EAAM,GAAQ,EAAI,EAAQ,GAAS,KAAK,OAAO,QAE/C,EAAM,GAAI,EAAQ,KAAK,OAAO,QAE5B,KAAK,MAAQ,MACf,GAAM,GAAQ,EAAG,KAAK,KAAK,SAEzB,GAAa,MACf,GAAiB,EAAI,EAAY,IAEnC,GAAI,GAAa,GAAI,EAAK,GAAI,EAAY,KAAK,gBAAgB,SAC/D,MAAI,MAAK,YAAc,MACrB,GAAS,KAAK,WAAW,MAAM,IAI1B,CAAC,EAAQ,KAIpB,WAAS,CACP,GAAM,GAAa,MAAM,YAEnB,EAAmC,CACvC,MAAO,KAAK,MACZ,WAAY,GAAoB,KAAK,YACrC,QAAS,KAAK,QACd,kBAAmB,GAAqB,KAAK,mBAC7C,qBAAsB,GAAqB,KAAK,sBAChD,gBAAiB,GAAqB,KAAK,iBAC3C,kBAAmB,GAAqB,KAAK,mBAC7C,qBAAsB,GAAqB,KAAK,sBAChD,gBAAiB,GAAqB,KAAK,iBAC3C,oBAAqB,GAAqB,KAAK,qBAC/C,iBAAkB,GAAoB,KAAK,kBAC3C,oBAAqB,GAAoB,KAAK,qBAC9C,eAAgB,GAAoB,KAAK,gBACzC,QAAS,KAAK,QACd,iBAAkB,KAAK,kBAGzB,MAAA,QAAA,OAAA,GAAW,EAAe,KArKrB,GAAA,UAAY,gBAwKrB,GAAc,cAAc,IA2FtB,GAAA,IAAA,aAAyB,GAAG,CAGhC,YAAY,EAAwB,CAClC,EAAK,KAAO,GAAI,IAAc,GAC9B,MAAM,GAIR,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACX,KAAK,KAAK,aAAe,MACvB,IAAQ,KAAK,KAAK,aACtB,KAAK,KAAK,YAAc,MAEtB,KAAK,KAAK,sBAAwB,MAChC,IAAQ,KAAK,KAAK,sBACtB,KAAK,KAAK,qBAAuB,MAEnC,GAAM,GAAO,GAAU,KAAO,KAAO,EAAO,KACtC,EAAW,GAAU,KAAO,KAAO,EAAO,SAC1C,EACF,GAAU,KAAO,KAAO,EAAO,aACnC,MAAO,OAAM,KAAK,EAAQ,CAAC,KAAA,EAAM,SAAA,EAAU,aAAA,YAKxC,YACH,EACA,EAAgC,CAClC,MAAO,IAAI,GAAI,KA7BV,GAAA,UAAY,YAgCrB,GAAc,cAAc,IAqCtB,GAAA,IAAA,aAAuB,GAAO,CAqClC,YAAY,EAAsB,CAChC,MAAM,GACN,GAbO,KAAA,mBAAqB,OACrB,KAAA,6BAAqD,cAErD,KAAA,2BAA6B,eAC7B,KAAA,8BAAgC,aAChC,KAAA,yBAAkD,QAQrD,EAAK,WACP,KAAM,IAAI,GACN,+DAEN,KAAK,MAAQ,EAAK,MAClB,GAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,GACd,EAAK,aAAe,OAAY,KAAK,mBACL,EAAK,YACzC,KAAK,oBAAsB,GACvB,EAAK,sBAAwB,OACzB,KAAK,6BACL,EAAK,qBACb,KAAK,QAAU,EAAK,SAAW,KAAO,GAAO,EAAK,QAElD,KAAK,kBAAoB,GACrB,EAAK,mBAAqB,KAAK,4BACnC,KAAK,qBAAuB,GACxB,EAAK,sBAAwB,KAAK,+BAEtC,KAAK,gBACD,GAAe,EAAK,iBAAmB,KAAK,0BAEhD,KAAK,kBAAoB,GAAe,EAAK,mBAC7C,KAAK,qBAAuB,GAAe,EAAK,sBAChD,KAAK,gBAAkB,GAAe,EAAK,iBAE3C,KAAK,iBAAmB,GAAc,EAAK,kBAC3C,KAAK,oBAAsB,GAAc,EAAK,qBAC9C,KAAK,eAAiB,GAAc,EAAK,gBAEzC,KAAK,QAAqB,GACtB,CAAC,EAAc,GAAI,CAAC,EAAG,EAAK,SAAW,KAAO,EAAI,EAAK,YAC3D,KAAK,iBAA8B,GAAI,CACrC,EACW,GACP,CAAC,EAAG,EAAK,kBAAoB,KAAO,EAAI,EAAK,qBAEnD,KAAK,eAAiB,EAAK,eAC3B,KAAK,UAAY,KAAK,MACtB,KAAK,YAAc,KACnB,KAAK,qBAAuB,KAGvB,MAAM,EAAyB,CACpC,EAAa,GAAmB,GAChC,GAAM,GAAW,EAAW,EAAW,OAAS,GAChD,KAAK,OAAS,KAAK,UACf,SAAU,CAAC,EAAU,KAAK,MAAQ,GAAI,KAAM,KAAK,kBACjD,KAAK,kBAAmB,GAAM,KAAK,kBACvC,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,CAAC,KAAK,MAAO,KAAK,MAAQ,GAAI,KAClD,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACL,KAAK,QACP,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,MAAQ,GAAI,KAAM,KAAK,gBACrC,KAAK,gBAAiB,GAAM,KAAK,gBAErC,KAAK,KAAO,KAId,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CAEf,GADA,EAAS,EACL,EAAO,SAAW,EACpB,KAAM,IAAI,GACN,uDACG,EAAO,WAGhB,GAAM,GAAW,EAAO,UAAe,KAAO,GAAQ,EAAO,SACzD,EAAW,EAAO,GACtB,EAAS,EAAO,GAKZ,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,QACX,SAAA,EACA,MAAO,KAG1B,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,iBACX,SAAA,EACA,MAAO,KAGvC,GAAM,GAAS,KAAK,YACd,EAAY,KAAK,qBACnB,EACA,EACA,EAEA,EAAI,KAAK,SAAW,KAAK,QAAU,GACrC,GAAa,EAAI,EAAQ,EAAO,KAElC,GAAI,GAAY,GAAI,EAAQ,KAAK,OAAO,QACpC,KAAK,SACP,GAAY,GAAQ,EAAS,KAAK,KAAK,SAErC,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACvD,GAAe,EAAI,EAAU,EAAU,KAGzC,GAAM,GAAuB,KAAK,gBAAgB,OAC5C,CAAC,EAAK,GAAW,GACnB,EAAsB,CAAC,EAAI,KAAK,MAAO,KAAK,OAC5C,EAAqB,KAAO,GAC1B,EAAgB,GAAI,EAAU,GAE9B,CAAC,EAAI,EAAI,GAAU,GAAM,EAAS,EAAG,EAAQ,KAAO,GACpD,CAAC,EAAY,GACX,GAAM,EAAa,EAAG,EAAY,KAAO,GACjD,EAAI,KAAK,oBAAoB,MAAU,GAAI,EAAI,IAC/C,EAAI,KAAK,oBAAoB,MAAU,GAAI,EAAI,IAE/C,GAAM,GAAe,GAAQ,EAAI,EAAG,GAAW,GAC/C,EAAK,KAAK,WAAW,MAAU,GAAI,EAAI,IAEvC,GAAM,GACE,GAAQ,EAAI,EAAG,GAAe,EAAQ,GAAI,EAAO,GAAI,IAAK,IAElE,MAAO,CAAC,EAAG,KAIf,WAAS,CACP,GAAM,GAAa,MAAM,YAEnB,EAAmC,CACvC,MAAO,KAAK,MACZ,WAAY,GAAoB,KAAK,YACrC,oBAAqB,GAAoB,KAAK,qBAC9C,QAAS,KAAK,QACd,kBAAmB,GAAqB,KAAK,mBAC7C,qBAAsB,GAAqB,KAAK,sBAChD,gBAAiB,GAAqB,KAAK,iBAC3C,kBAAmB,GAAqB,KAAK,mBAC7C,qBAAsB,GAAqB,KAAK,sBAChD,gBAAiB,GAAqB,KAAK,iBAC3C,oBAAqB,GAAqB,KAAK,qBAC/C,iBAAkB,GAAoB,KAAK,kBAC3C,oBAAqB,GAAoB,KAAK,qBAC9C,eAAgB,GAAoB,KAAK,gBACzC,QAAS,KAAK,QACd,iBAAkB,KAAK,iBACvB,eAAgB,KAAK,eACrB,WAAY,IAGd,MAAA,QAAA,OAAA,GAAW,EAAe,KAvMrB,GAAA,UAAY,UA0MrB,GAAc,cAAc,IA8BtB,GAAA,IAAA,aAAmB,GAAG,CAG1B,YAAY,EAAkB,CACxB,EAAK,iBAAmB,GAC1B,QAAQ,KACJ,kHAGN,EAAK,KAAO,GAAI,IAAQ,GACxB,MAAM,GAIR,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACX,KAAK,KAAK,aAAe,MACvB,IAAQ,KAAK,KAAK,aACtB,KAAK,KAAK,YAAc,MAEtB,KAAK,KAAK,sBAAwB,MAChC,IAAQ,KAAK,KAAK,sBACtB,KAAK,KAAK,qBAAuB,MAEnC,GAAM,GAAO,GAAU,KAAO,KAAO,EAAO,KACtC,EAAW,GAAU,KAAO,KAAO,EAAO,SAC1C,EACF,GAAU,KAAO,KAAO,EAAO,aACnC,MAAO,OAAM,KAAK,EAAQ,CAAC,KAAA,EAAM,SAAA,EAAU,aAAA,YAKxC,YACH,EACA,EAAgC,CAClC,MAAI,GAAO,gBAAqB,GAC9B,GAAO,eAAoB,GAEtB,GAAI,GAAI,KArCV,GAAA,UAAY,MAwCrB,GAAc,cAAc,IAuCtB,GAAA,IAAA,aAAwB,GAAO,CAsCnC,YAAY,EAAuB,CACjC,MAAM,GAZC,KAAA,mBAAqB,OACrB,KAAA,6BAA+B,cAC/B,KAAA,2BAA6B,eAC7B,KAAA,8BAAgC,aAEhC,KAAA,yBAA2B,QASlC,KAAK,MAAQ,EAAK,MAClB,GAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,GACd,EAAK,aAAe,OAAY,KAAK,mBACL,EAAK,YACzC,KAAK,oBAAsB,GACvB,EAAK,sBAAwB,OACzB,KAAK,6BACL,EAAK,qBACb,KAAK,QAAU,EAAK,SAAW,KAAO,GAAO,EAAK,QAElD,KAAK,kBAAoB,GACrB,EAAK,mBAAqB,KAAK,4BACnC,KAAK,qBAAuB,GACxB,EAAK,sBAAwB,KAAK,+BAEtC,KAAK,gBACD,GAAe,EAAK,iBAAmB,KAAK,0BAChD,KAAK,eAAiB,EAAK,eAE3B,KAAK,kBAAoB,GAAe,EAAK,mBAC7C,KAAK,qBAAuB,GAAe,EAAK,sBAChD,KAAK,gBAAkB,GAAe,EAAK,iBAE3C,KAAK,iBAAmB,GAAc,EAAK,kBAC3C,KAAK,oBAAsB,GAAc,EAAK,qBAC9C,KAAK,eAAiB,GAAc,EAAK,gBAEzC,KAAK,QAAqB,GACtB,CAAC,EAAc,GAAI,CAAC,EAAG,EAAK,SAAW,KAAO,EAAI,EAAK,YAC3D,KAAK,iBAA8B,GAAI,CACrC,EACW,GACP,CAAC,EAAG,EAAK,kBAAoB,KAAO,EAAI,EAAK,qBAEnD,KAAK,eAAiB,EAAK,eAC3B,KAAK,UAAY,CAAC,KAAK,MAAO,KAAK,OACnC,KAAK,YAAc,KACnB,KAAK,qBAAuB,KAGvB,MAAM,EAAyB,CAAA,GAAA,GACpC,EAAa,GAAmB,GAChC,GAAM,GAAW,EAAW,EAAW,OAAS,GAChD,KAAK,OAAS,KAAK,UACf,SAAU,CAAC,EAAU,KAAK,MAAQ,GAAI,KAAM,KAAK,kBACjD,KAAK,kBAAmB,GAAM,KAAK,kBACvC,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,CAAC,KAAK,MAAO,KAAK,MAAQ,GAAI,KAClD,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBACT,GAAI,GACJ,GAAI,KAAK,QAAS,CAChB,GAAI,KAAK,eAAgB,CACvB,GAAM,GAAmB,KAAK,gBACxB,EAAgB,KAAK,MAC3B,EAAkB,GAAI,GAAC,aAAyB,GAAW,CAIzD,MAAM,EAAc,EAAgB,CAElC,GAAM,GAAK,EAAiB,MAAM,CAAC,IAC7B,EAAM,GAAI,MAAQ,MAAM,CAAC,IACzB,EAAS,EAAiB,MAAM,CAAC,EAAgB,IACvD,MAAS,IACH,GAAqB,EAAI,GAAK,KAR/B,EAAA,UAAY,aAAA,OAYrB,GAAkB,KAAK,gBAEzB,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,MAAQ,GAAI,KAAM,EAAiB,KAAK,gBACtD,GAAM,KAAK,oBAEf,MAAK,KAAO,KAId,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAW,EAAO,UAAe,KAAO,GAAQ,EAAO,SAE7D,GADA,EAAS,EACL,EAAO,SAAW,EACpB,KAAM,IAAI,GACN,wDACG,EAAO,WAEhB,GAAI,GAAW,EAAO,GAChB,EAAW,EAAO,GACxB,EAAS,EAAO,GACZ,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,QACX,SAAA,EACA,MAAO,KAG1B,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,iBACX,SAAA,EACA,MAAO,KAGvC,GAAM,GAAS,KAAK,YACd,EACF,KAAK,qBAKL,EACA,EACA,EACA,EACA,EAAI,KAAK,SAAW,KAAK,QAAU,GACrC,GAAa,EAAI,EAAQ,EAAO,KAElC,GAAI,GAAM,GAAI,EAAQ,KAAK,OAAO,QAC9B,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACvD,GAAe,EAAI,EAAU,EAAU,KAEzC,EAAQ,GAAI,EAAK,GAAI,EAAU,KAAK,gBAAgB,SAChD,KAAK,SACP,GAAM,GAAQ,EAAG,KAAK,KAAK,SAG7B,GAAM,CAAC,EAAI,EAAI,EAAI,GAAU,GAAM,EAAG,EAAG,EAAE,KAAO,GAElD,EAAI,KAAK,oBAAoB,MAAM,GACnC,EAAI,KAAK,oBAAoB,MAAM,GACnC,EAAQ,GAAQ,EAAI,EAAG,GAAe,EAAI,EAAG,KAAK,WAAW,MAAM,KACnE,EAAI,KAAK,oBAAoB,MAAM,GAEnC,GAAM,GAAQ,EAAI,EAAG,KAAK,WAAW,MAAM,IAE3C,MAAO,CAAC,EAAG,EAAG,KAIlB,WAAS,CACP,GAAM,GAAa,MAAM,YAEnB,EAAmC,CACvC,MAAO,KAAK,MACZ,WAAY,GAAoB,KAAK,YACrC,oBAAqB,GAAoB,KAAK,qBAC9C,QAAS,KAAK,QACd,kBAAmB,GAAqB,KAAK,mBAC7C,qBAAsB,GAAqB,KAAK,sBAChD,gBAAiB,GAAqB,KAAK,iBAC3C,eAAgB,KAAK,eACrB,kBAAmB,GAAqB,KAAK,mBAC7C,qBAAsB,GAAqB,KAAK,sBAChD,gBAAiB,GAAqB,KAAK,iBAC3C,oBAAqB,GAAqB,KAAK,qBAC/C,iBAAkB,GAAoB,KAAK,kBAC3C,oBAAqB,GAAoB,KAAK,qBAC9C,eAAgB,GAAoB,KAAK,gBACzC,QAAS,KAAK,QACd,iBAAkB,KAAK,iBACvB,eAAgB,KAAK,gBAGvB,MAAA,QAAA,OAAA,GAAW,EAAe,KAnNrB,GAAA,UAAY,WAsNrB,GAAc,cAAc,IAqCtB,GAAA,IAAA,aAAoB,GAAG,CAG3B,YAAY,EAAmB,CACzB,EAAK,iBAAmB,GAC1B,QAAQ,KACJ,kHAGN,EAAK,KAAO,GAAI,IAAS,GACzB,MAAM,GAIR,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACX,KAAK,KAAK,aAAe,MACvB,IAAQ,KAAK,KAAK,aACtB,KAAK,KAAK,YAAc,MAEtB,KAAK,KAAK,sBAAwB,MAChC,IAAQ,KAAK,KAAK,sBACtB,KAAK,KAAK,qBAAuB,MAEnC,GAAM,GAAO,GAAU,KAAO,KAAO,EAAO,KACtC,EAAW,GAAU,KAAO,KAAO,EAAO,SAC1C,EACF,GAAU,KAAO,KAAO,EAAO,aACnC,MAAO,OAAM,KAAK,EAAQ,CAAC,KAAA,EAAM,SAAA,EAAU,aAAA,YAKxC,YACH,EACA,EAAgC,CAClC,MAAI,GAAO,gBAAqB,GAC9B,GAAO,eAAoB,GAEtB,GAAI,GAAI,KArCV,GAAA,UAAY,OAwCrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAA+B,GAAO,CAK1C,YAAY,EAAyB,CACnC,MAAM,GACN,KAAK,MAAQ,EAAK,SAGhB,YAAS,CAKX,GAAM,GAAsB,GAC5B,OAAW,KAAQ,MAAK,MAAM,QAAQ,UAChC,MAAM,QAAQ,EAAK,WACrB,EAAU,KAAK,GAAG,EAAK,WAEvB,EAAU,KAAK,EAAK,WAGxB,MAAO,GAGT,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,EAAS,EACT,GAAI,GAAS,EAAO,MAAM,GAGpB,EAA2B,GACjC,OAAW,KAAQ,MAAK,MAAM,QAAQ,UAChC,MAAM,QAAQ,EAAK,WACrB,EAAa,KAAK,EAAO,OAAO,EAAG,EAAK,UAAU,SAElD,EAAa,KAAK,EAAO,OAAO,EAAG,IAGvC,EAAa,UAGb,GAAM,GAA8B,GAChC,EACJ,OAAS,GAAI,EAAG,EAAI,KAAK,MAAM,OAAQ,EAAE,EAAG,CAC1C,GAAM,GAAO,KAAK,MAAM,GACxB,EAAS,EAAa,GAElB,IAAM,EACR,EAAa,CAAC,EAAO,IAAI,OAAO,GAEhC,EAAa,CAAC,EAAW,IAAI,OAAO,GAEtC,EAAa,EAAK,KAAK,EAAY,GACnC,EAAgB,KAAK,EAAW,MAAM,IAIxC,EAAS,GACT,OAAW,KAAc,GAAgB,QAAQ,UAC/C,EAAO,KAAK,GAAG,GAEjB,MAAO,CAAC,EAAW,IAAI,OAAO,KAI3B,MAAM,EAAyB,CAChC,GAAgB,IAGlB,GAAc,EAAuB,IAEvC,EAAa,EACb,GAAI,GACJ,KAAK,MAAM,QAAQ,CAAC,EAAM,IAAK,CAC7B,GAAU,WAAW,IAAK,IAAK,CAG7B,EAAK,MAAM,GACP,MAAM,QAAQ,EAAK,WACrB,EAAY,EAAK,UAAU,GAE3B,EAAY,EAAK,UAEnB,EAAa,CAAC,EAAW,GAAI,OAGjC,KAAK,MAAQ,GAGf,WAAS,CACP,GAAM,GAAa,MAAM,YAEnB,EAAiB,GACd,EACL,UAAa,EAAK,eAClB,OAAU,EAAK,cAMb,EAAS,CAAC,MAFI,KAAK,MAAM,IAAI,IAInC,MAAA,QAAA,OAAA,GAAW,EAAe,SAIrB,YACH,EACA,EACA,EAAgB,GAA8B,CAChD,GAAM,GAAmB,GACzB,OAAW,KAAe,GAAO,MAC/B,EAAM,KAAK,GAAY,EAAY,IAErC,MAAO,IAAI,GAAI,CAAC,MAAA,OAGd,mBAAgB,CAClB,GAAI,CAAC,KAAK,UACR,MAAO,GAET,GAAM,GAA2B,GACjC,OAAW,KAAQ,MAAK,MACtB,EAAQ,KAAK,GAAG,EAAK,kBAEvB,MAAO,MAGL,sBAAmB,CACrB,GAAM,GAA2B,GACjC,OAAW,KAAQ,MAAK,MACtB,EAAQ,KAAK,GAAG,EAAK,qBAEvB,GAAI,CAAC,KAAK,UAAW,CACnB,GAAM,GAAoC,GAC1C,OAAW,KAAQ,MAAK,MACtB,EAAiB,KAAK,GAAG,EAAK,kBAEhC,MAAO,GAAiB,OAAO,GAEjC,MAAO,GAQT,YAAU,CACR,GAAM,GAA2B,GACjC,OAAW,KAAQ,MAAK,MACtB,EAAQ,KAAK,GAAG,EAAK,SAEvB,MAAO,IAAc,GASvB,WAAW,EAAiB,CAC1B,GAAM,GAAyC,GAC/C,OAAW,KAAQ,MAAK,MAAO,CAC7B,GAAM,GAAY,EAAK,QAAQ,OACzB,EAAe,EAAQ,OAAO,GACpC,OAAS,GAAI,EAAG,EAAI,EAAK,QAAQ,OAAQ,EAAE,EACzC,EAAO,KAAK,CAAC,EAAK,QAAQ,GAAI,EAAa,KAG/C,GAAc,KA5KT,GAAA,UAAY,kBAiLrB,GAAc,cAAc,IAEtB,YAA8B,EAKnC,CACC,GAAM,CAAC,KAAA,EAAM,KAAA,EAAM,SAAA,EAAW,GAAO,MAAA,EAAQ,GAAK,EAE5C,EAAgB,IAAQ,GAAQ,IAAQ,GAExC,EAAa,IAAQ,GAAa,EAAe,EAAM,GAG7D,MAAI,CAAC,GAAS,GAAS,EACV,GAAK,IAAa,SAGjB,MAAM,GAAO,KAAK,QAAW,IAAI,GAElC,IAAI,GAAS,GAAK,EAAE,UCjjEnC,GAAA,KAAA,SAAA,EAAA,EAAA,CAAA,GAAA,GAAA,GAAA,OAAA,KAAA,GAAA,OAAA,UAAA,eAAA,KAAA,EAAA,IAAA,EAAA,QAAA,GAAA,GAAA,GAAA,GAAA,EAAA,IAAA,GAAA,GAAA,MAAA,MAAA,QAAA,uBAAA,WAAA,OAAA,GAAA,EAAA,EAAA,OAAA,sBAAA,GAAA,EAAA,EAAA,OAAA,IAAA,EAAA,QAAA,EAAA,IAAA,GAAA,OAAA,UAAA,qBAAA,KAAA,EAAA,EAAA,KAAA,GAAA,EAAA,IAAA,EAAA,EAAA,KAAA,MAAA,IAkHA,GAAA,aAAwB,GAAG,CAMzB,YAAY,EAAwB,CAClC,GAAI,EAAK,OACP,KAAM,IAAI,IACN,sDAGN,GAAI,MAAM,QAAQ,EAAK,MACrB,KAAM,IAAI,IACN,kEAGN,MAAM,GAEN,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAGzC,KAAK,EAAyB,EAAc,CAC1C,MAAW,GAAK,IAAK,CAanB,GAZI,KAAK,KAAK,aAAe,MACvB,IAAQ,KAAK,KAAK,aAEtB,KAAK,KAAK,YAAc,MAGtB,KAAK,KAAK,sBAAwB,MAChC,IAAQ,KAAK,KAAK,sBAEtB,KAAK,KAAK,qBAAuB,MAG/B,GAAU,EAAO,UACnB,KAAM,IAAI,GAAW,6CAGvB,GAAM,GAAO,GAAU,KAAO,KAAO,EAAO,KAEtC,EAAW,GAAU,KAAO,KAAO,EAAO,SAE1C,EACF,GAAU,KAAO,KAAO,EAAO,aAEnC,MAAO,OAAM,KAAK,EAAQ,CAAC,KAAA,EAAM,SAAA,EAAU,aAAA,MAI/C,mBAAmB,EAAiB,CAClC,GAAI,GAAkB,KAAK,yBAAyB,GAEpD,MAAK,MAAK,iBACR,GAAW,CAAC,EAAS,GAAI,GAAG,EAAS,MAAM,KAGzC,KAAK,aACP,GACI,CAAC,EAAU,GAAG,MAAM,GAAG,KAAK,CAAC,EAAW,GAAI,GAAG,EAAS,MAAM,QAG7D,EAGT,gBAAgB,EAAkB,CAChC,MAAW,GAAK,IAAK,CACnB,GAAM,CAAC,UAAA,GAAa,KAAK,KAEnB,EAAa,EAAO,MAEpB,EAAc,KAAK,yBAAyB,GAE5C,EAAa,CAAC,EAAY,GAAI,GAAG,EAAY,MAAM,IAEnD,EAAmB,GAAM,GAE/B,MAAI,OAAM,QAAQ,GACT,MAAM,EAAU,QAAQ,KAAK,GAG/B,CAAC,KAIZ,YAAY,EAA0B,EAAW,GAAK,CAChD,EAAK,IAAK,CACZ,GAAI,CAAC,KAAK,SACR,KAAM,IAAI,IACN,mEAGN,GAAM,GAAa,KAAK,UAAU,GAAG,MAE/B,EAAc,KAAK,yBAAyB,GAE5C,EAAa,CAAC,EAAY,GAAI,GAAG,EAAY,MAAM,IAIzD,GAFkB,EAAW,IAEZ,KACf,KAAM,IAAI,GACN,yUASN,GAAI,KAAK,aAAe,KAClB,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QAAU,KAAK,KAAK,UAAU,IAAI,IAAU,GAAM,IAEvD,KAAK,QAAU,CAAK,GAAM,YAEnB,GAAU,KAEf,GAAQ,KAAK,SAGb,KAAK,YAAc,MACjB,IAAQ,KAAK,YACjB,KAAK,WAAa,IAGhB,MAAM,QAAQ,KAAK,KAAK,WAC1B,KAAK,QAAU,KAAK,KAAK,UAAU,IAAI,IAAU,GAAM,IAEvD,KAAK,QAAQ,GAAS,GAAM,OAEzB,CAKL,GAJK,MAAM,QAAQ,IACjB,GAAS,CAAC,IAGR,EAAO,SAAW,KAAK,QAAQ,OACjC,KAAM,IAAI,GACN,SAAS,KAAK,gBAAgB,KAAK,QAAQ,oCACxB,EAAO,0CACb,KAGf,EAKF,KAAK,WAAW,KAAK,KAAK,QAAQ,SAE9B,GAAQ,KAAK,SAGnB,OAAS,GAAQ,EAAG,EAAQ,KAAK,QAAQ,OAAQ,EAAE,EAAO,CACxD,GAAM,GAAQ,EAAO,GAEf,EAAgB,EAEtB,GAAI,CAAC,EAAK,YAAY,EAAM,MAAO,GACjC,KAAM,IAAI,GACN,SAAS,gCAAoC,KAAK,wBAChC,qBACd,EAAM,SAGhB,KAAK,QAAQ,GAAS,GAI1B,KAAK,QAAU,KAAK,QAAQ,IAAI,GAAa,GAAK,EAAM,YAIlD,yBAAyB,EAAiB,CAClD,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,WAAA,EAAY,QAAA,EAAS,QAAA,EAAS,aAAA,GACtD,KAAK,KAEH,EAAkB,IAAe,gBAEjC,EAAI,EAAW,EAAkB,EAAI,GACrC,EAAI,EAAW,EAAkB,EAAI,GAErC,EAAO,GACT,EAAG,EAAW,GAAI,EAAS,EAAQ,GAAI,EAAa,IAClD,EAAO,GACT,EAAG,EAAW,GAAI,EAAS,EAAQ,GAAI,EAAa,IAOxD,MALwB,CACtB,GAAG,EAAW,MAAM,EAAG,GACvB,GAAI,EAAkB,CAAC,EAAS,EAAM,GAAQ,CAAC,EAAM,EAAM,MA7LxD,GAAA,UAAY,YAuMf,GAAA,IAAA,aAA8B,GAAQ,CAW1C,YAAY,EAAwB,CAClC,GAAM,CACJ,QAAA,EACA,WAAA,EACA,QAAA,EACA,QAAA,EACA,WAAA,EACA,aAAA,GACE,EAEJ,MAAK,OAAA,OAAA,GAAK,EAAI,CAAE,MAAO,KAEvB,KAAK,QAAU,EACf,GAAsB,KAAK,QAAS,WAEpC,KAAK,WAAa,GAAe,EAAY,EAAG,cAChD,KAAK,WAAW,QAAQ,GAAQ,GAAsB,EAAM,eAE5D,KAAK,QAAU,GAAe,GAAW,EAAG,EAAG,WAC/C,KAAK,QAAQ,QAAQ,GAAU,GAAsB,EAAQ,YAE7D,KAAK,QAAU,GAAW,QAC1B,GAAiB,KAAK,SAEtB,KAAK,WAAa,GAAc,eAChC,GAAgB,KAAK,YAErB,KAAK,aAAe,GAAe,GAAgB,EAAG,EAAG,gBACzD,KAAK,aAAa,QACd,GAAQ,GAAsB,EAAM,iBAGnC,MAAM,EAAyB,CAAA,GAAA,GACpC,EAAa,GAAmB,GAEhC,GAAM,GACF,KAAK,aAAe,gBAAkB,EAAI,EAAW,OAAS,EAElE,GAAI,EAAW,IAAgB,KAC7B,KAAM,IAAI,GACN,+DACS,EAAW,MAG1B,GAAM,GAAW,EAAW,GAEtB,EAAe,EAEf,EACF,KAAK,WAAW,OAAO,CAAC,EAAU,KAAK,QAAU,IAErD,KAAK,OAAS,KAAK,UACf,SAAU,EAAa,KAAM,KAAK,kBAClC,KAAK,kBAAmB,GAAM,KAAK,kBAEvC,GAAM,GACF,KAAK,WAAW,OAAO,CAAC,KAAK,QAAS,KAAK,QAAU,IAOzD,GALA,KAAK,gBAAkB,KAAK,UACxB,mBAAoB,EAAsB,KAC1C,KAAK,qBAAsB,KAAK,qBAAsB,GACtD,KAAK,qBAEL,KAAK,QAAS,CAChB,GAAI,GAEJ,GAAI,KAAK,eAAgB,CACvB,GAAM,GAAO,KAAK,gBAEZ,EAAU,KAAK,QAErB,EAAkB,GAAI,GAAC,aAAyB,GAAW,CAIzD,MAAM,EAAc,EAAgB,CAClC,GAAM,GAAQ,EAAK,MAAM,CAAC,IACpB,EAAY,GAAK,CAAC,IAClB,EAAY,EAAK,MAAM,CAAC,EAAU,IACxC,MAAS,IAAY,CAAC,EAAO,EAAO,MAN/B,EAAA,UAAY,aAAA,OAUrB,GAAkB,KAAK,gBAGzB,KAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,QAAU,GAAe,KAAM,EAC7C,KAAK,gBAAiB,GAAM,KAAK,gBAGvC,KAAK,MAAQ,GAGf,KAAK,EAAsB,EAAc,CACvC,MAAW,GAAK,IAAK,CACnB,GAAI,EAAO,SAAW,EACpB,KAAM,IAAI,GACN,8DACG,EAAO,WAGhB,GAAM,GAAW,EAAO,UAAe,GAEjC,EAAI,EAAO,GACX,EAAW,EAAO,GAClB,EAAW,EAAO,GAElB,EAAe,EAIjB,EAAI,KAAK,SAAW,KAAK,QAAU,GAAK,KAAK,aAAe,MAC9D,MAAK,YAAc,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,QACX,SAAA,EACA,MAAO,KAI9B,GAAM,GAAc,KAAK,YAEnB,EACF,CAAC,EAAe,GAAoB,KAC9B,CAAC,IAAQ,CAAC,GAAK,IACV,EAGE,EAAI,GAAK,IAAQ,GAG9B,EAAK,EAAa,EAAG,EAAa,GAClC,EAAK,EAAa,EAAG,EAAa,GAClC,EAAK,EAAa,EAAG,EAAa,GAClC,EAAK,EAAa,EAAG,EAAa,GAElC,EAAI,KAAK,kBAAoB,KAAK,iBAAmB,GACrD,KAAK,sBAAwB,MAC/B,MAAK,qBAAuB,GAAoB,CAClB,KAAM,IAAU,GAAS,GACzB,KAAM,KAAK,iBACX,SAAA,EACA,MAAO,KAIvC,GAAM,GAAiB,KAAK,qBAExB,EAAK,EAAa,EAAU,EAAgB,GAC5C,EAAK,EAAa,EAAU,EAAgB,GAC5C,EAAK,EAAa,EAAU,EAAgB,GAC5C,EAAK,EAAa,EAAU,EAAgB,GAE1C,EAAoB,EAEpB,CAAC,EAAS,EAAS,EAAS,GAC1B,GAAM,KAAK,OAAO,OAAQ,EAAc,GAE1C,CAAC,EAAO,EAAO,EAAO,GAAuB,KAAK,QAChD,GAAM,KAAK,KAAK,OAAQ,GAC5B,CAAC,KAAM,KAAM,KAAM,MAEvB,EAAK,KAAK,UAAU,EAAI,EAAS,EAAO,KAAK,SAC7C,EAAK,KAAK,UAAU,EAAI,EAAS,EAAO,KAAK,SAC7C,EAAK,KAAK,UAAU,EAAI,EAAS,EAAO,KAAK,SAC7C,EAAK,KAAK,UAAU,EAAI,EAAS,EAAO,KAAK,SAE7C,GAAM,CAAC,EAAY,EAAY,EAAY,GACnC,GACA,KAAK,gBAAgB,OAAQ,EAAc,GAEnD,EAAK,KAAK,cAAc,EAAI,GAC5B,EAAK,KAAK,cAAc,EAAI,GAC5B,EAAK,KAAK,cAAc,EAAI,GAC5B,EAAK,KAAK,cAAc,EAAI,GAE5B,GAAM,GAAI,KAAK,oBAAoB,MAAU,GAAI,EAAI,IAC/C,EAAI,KAAK,oBAAoB,MAAU,GAAI,EAAI,IAC/C,EAAQ,GACN,EAAI,EAAG,GACP,EAAI,EAAG,KAAK,WAAW,MAAU,GAAI,EAAI,MAC3C,GAAQ,EACV,KAAK,oBAAoB,MAAU,GAAI,EAAI,IAC3C,KAAK,WAAW,MAAM,IAE1B,MAAO,CAAC,GAAG,GAAG,KAIlB,WAAS,CACP,GAAM,GAAA,MAAA,YAAA,CAAC,MAAS,GAAC,EAAE,EAAA,IAAA,EAAA,CAAA,UAEb,EAAuC,CAC3C,QAAS,KAAK,QACd,WAAY,KAAK,WACjB,QAAS,KAAK,QACd,WAAY,KAAK,WACjB,aAAc,KAAK,aACnB,QAAS,KAAK,SAGhB,MAAA,QAAA,OAAA,GAAW,EAAe,GAG5B,UAAU,EAAW,EAAW,EAAY,EAAqB,CAC/D,GAAM,GAAU,GACZ,EAAmB,EAAmB,KAAK,QAC1C,GAAW,QACZ,KAAK,aAAe,gBAAkB,OAAS,OAC/C,KAAK,cAET,MAAI,GACO,GAAQ,EAAK,EAAG,KAAK,YAGzB,EAGT,cAAc,EAAW,EAAS,CAGhC,MAAW,IACP,EAAmB,EAHP,EAGmC,OAC/C,KAAK,aAAe,gBAAkB,OAAS,UAzO9C,GAAA,UAAY,iBA6OjB,GAAc,cAAc,IAK1B,GAAA,IAAA,aAA0B,GAAS,CAIvC,YAAY,EAAoB,CAC9B,GAAM,GAAO,GAAI,IAAe,GAEhC,MAAM,OAAA,OAAA,GAAI,EAAI,CAAE,KAAA,WAIX,YACH,EACA,EAAoC,CACtC,MAAO,IAAI,GAAI,KAZV,GAAA,UAAY,aAgBjB,GAAc,cAAc,IC/gB1B,GAAA,IAAA,aAAuB,GAAK,CAOhC,YAAY,EAAsB,CAChC,MAAM,GACN,KAAK,KAAO,KAAK,IAAI,KAAK,IAAI,EAAK,KAAM,GAAI,GAE7C,KAAK,WAAa,EAAK,WACvB,KAAK,KAAO,EAAK,KACjB,KAAK,gBAAkB,GAGf,cAAc,EAAa,CACnC,GAAI,KAAK,YAAc,KACrB,MAAO,MAAK,WAEd,GAAM,GAAa,EAAM,MACnB,EAAoB,GAC1B,OAAS,GAAI,EAAG,EAAI,KAAK,WAAW,OAAQ,EAAE,EAC5C,EAAW,KACP,KAAK,WAAW,IAAM,KAAO,EAAW,GAAK,KAAK,WAAW,IAEnE,MAAO,GAGT,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAC5B,GAAM,GAAQ,GAAoB,GAClC,GAAI,EAAI,KAAK,MAAQ,KAAK,KAAO,EAAG,CAClC,GAAM,GACF,EAAO,UAAe,KAAO,GAAQ,EAAO,SAC1C,EAAa,KAAK,cAAc,GAItC,MAHiB,IACb,IAAQ,GAAQ,EAAO,KAAK,KAAM,EAAY,KAAK,MACnD,IAAM,EAAO,GAGnB,MAAO,KAIX,WAAS,CACP,GAAM,GAAS,CACb,KAAM,KAAK,KACX,WAAY,KAAK,WACjB,KAAM,KAAK,MAEP,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,EAGT,SAAO,CACL,MAAO,OAAM,YAxDR,GAAA,UAAY,UA2DrB,GAAc,cAAc,IA4DtB,GAAA,IAAA,aAAgC,GAAO,CAI3C,YAAY,EAAiC,CAC3C,MAAM,GACN,KAAK,UAAY,CAAC,CAAC,KAAM,IAGjB,cAAc,EAAa,CACnC,GAAM,GAAa,EAAM,MACzB,MAAO,CAAC,EAAW,GAAI,EAAG,EAAW,MAThC,GAAA,UAAY,mBAYrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAqB,GAAK,CAmB9B,YAAY,EAAoB,CAC9B,MAAM,GACN,GAhBM,KAAA,WAA2B,KAC3B,KAAA,QAAU,GAGV,KAAA,OAAwB,KACxB,KAAA,KAAsB,KAErB,KAAA,2BAAoD,eACpD,KAAA,yBAAkD,QAQrD,EAAK,iBAAmB,MAAQ,EAAK,YAAc,MACnD,EAAK,UAAY,KAAM,CAGzB,GAAI,GAAoB,KACpB,EAAK,WAAa,MACpB,GAAY,EAAK,WAEnB,KAAK,gBAAkB,CAAC,EAAW,EAAK,UAG1C,KAAK,MAAQ,EAAK,MAClB,GAAsB,KAAK,MAAO,SAClC,KAAK,WAAa,GAAc,EAAK,YACjC,EAAK,SAAW,MAClB,MAAK,QAAU,EAAK,SAEtB,KAAK,kBAAoB,GACrB,EAAK,mBAAqB,KAAK,4BACnC,KAAK,gBACD,GAAe,EAAK,iBAAmB,KAAK,0BAChD,KAAK,iBAAmB,GAAc,EAAK,kBAC3C,KAAK,eAAiB,GAAc,EAAK,gBACzC,KAAK,kBAAoB,GAAe,EAAK,mBAC7C,KAAK,gBAAkB,GAAe,EAAK,iBAC3C,KAAK,oBAAsB,GAAe,EAAK,qBAC/C,KAAK,gBAAkB,GAEvB,KAAK,UAAY,CAAC,CAAC,QAAS,IAGvB,MAAM,EAAyB,CACpC,EAAa,GAAmB,GAChC,GAAM,GAAe,EAAW,EAAW,OAAS,GAChD,KAAK,QAAU,MACjB,MAAK,OAAS,KAAK,UACf,SAAU,CAAC,EAAc,KAAK,OAAQ,KAAM,KAAK,kBACjD,KAAK,kBAAmB,GAAM,KAAK,kBACnC,KAAK,SACP,MAAK,KAAO,KAAK,UACb,OAAQ,CAAC,KAAK,OAAQ,KAAM,KAAK,gBACjC,KAAK,gBAAiB,GAAM,KAAK,kBAIzC,KAAK,UAAY,CAAC,CAAC,QAAS,EAAG,KAAM,EAAE,IAAK,KAC5C,KAAK,MAAQ,GAGf,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAM,GAAc,EAAW,QAC/B,MAAA,GAAY,EAAY,OAAS,GAAK,KAAK,MACpC,EAGT,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAE5B,GAAM,GAAQ,GAAoB,GAC5B,EACF,GAA2B,KAAK,WAAW,gBAC3C,EAEJ,MAAI,IAAuB,KACzB,EAAW,GACP,EAAO,KAAK,OAAO,OAAQ,EAC3B,KAAK,KAAO,KAAK,KAAK,OAAS,MAEnC,GAAW,GAAI,EAAO,KAAK,OAAO,QAC9B,KAAK,MAAQ,MACf,GAAW,GAAQ,EAAQ,KAAK,KAAK,SAEnC,KAAK,YAAc,MACrB,GAAS,KAAK,WAAW,MAAM,KAI5B,IAIX,WAAS,CACP,GAAM,GAAmC,CACvC,MAAO,KAAK,MACZ,WAAY,GAAoB,KAAK,YACrC,QAAS,KAAK,QACd,kBAAmB,GAAqB,KAAK,mBAC7C,gBAAiB,GAAqB,KAAK,iBAC3C,kBAAmB,GAAqB,KAAK,mBAC7C,gBAAiB,GAAqB,KAAK,iBAC3C,oBAAqB,GAAqB,KAAK,qBAC/C,iBAAkB,GAAoB,KAAK,kBAC3C,eAAgB,GAAoB,KAAK,iBAErC,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IArHF,GAAA,UAAY,QAwHrB,GAAc,cAAc,IAOtB,GAAA,IAAA,aAAuB,GAAK,CAKhC,YAAY,EAAuB,CACjC,EAAO,GAAQ,GACf,MAAM,GACN,KAAK,UAAY,CAAC,CAAC,QAAS,IAC5B,KAAK,WAAa,EAAK,WAGzB,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,OAAW,KAAO,GAAW,MAAM,GACjC,GAAI,GAAO,KACT,KAAM,IAAI,GACN,iEACQ,EAAW,MAAM,qHAKjC,MAAO,CAAC,EAAW,GAAI,GAAU,EAAY,IAG/C,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAE5B,GAAI,GAAQ,GAAoB,GAChC,GAAI,KAAK,aAAe,iBAAmB,EAAM,KAAO,EAAG,CACzD,GAAM,GAAwB,CAAC,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAM,KAAM,EAAE,EAChC,EAAY,KAAK,GAEnB,EAAY,KAAK,GACjB,EAAQ,EAAM,UAAU,GAG1B,MAAS,KAAa,KAI1B,WAAS,CACP,GAAM,GAAmC,GACrC,KAAK,YAAc,MACrB,GAAO,WAAgB,KAAK,YAE9B,GAAM,GAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA/CF,GAAA,UAAY,UAkDrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAA0B,GAAK,CAKnC,YAAY,EAAyB,CACnC,MAAM,GACN,KAAK,gBAAkB,GACvB,KAAK,WAAa,GAAc,EAAK,YAGvC,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAC5B,GAAM,GAAQ,GAAoB,GAClC,MAAO,MAAK,WAAW,MAAM,KAIjC,WAAS,CACP,GAAM,GAAS,CAAC,WAAY,GAAoB,KAAK,aAC/C,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IArBF,GAAA,UAAY,aAwBrB,GAAc,cAAc,IActB,GAAA,IAAA,aAA4B,GAAK,CAKrC,YAAY,EAA2B,CACrC,MAAM,GACN,KAAK,EAAI,EAAK,EACd,KAAK,UAAY,CAAC,CAAC,KAAM,IAG3B,mBAAmB,EAAiB,CAClC,MAAO,CAAC,EAAW,GAAI,KAAK,EAAG,EAAW,IAG5C,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IACV,GAAS,GAAoB,GACpB,GAAO,EAAQ,KAAK,KAIjC,WAAS,CACP,GAAM,GAAS,CACb,EAAG,KAAK,GAEJ,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA1BF,GAAA,UAAY,eA6BrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAuB,GAAK,CAKhC,YAAY,EAAsB,CAChC,MAAM,GACN,KAAK,YAAc,EAAK,YAGxB,OAAS,GAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,EAAE,EACzC,KAAK,UAAU,KAAK,YAAY,KAClC,MAAK,YAAY,GAAK,MAKpB,UAAU,EAAW,CAC3B,MAAO,GAAM,GAAK,GAAO,KAiBnB,oBAAoB,EAAmB,EAAkB,CAC/D,GAAM,GAAW,6CACX,EAAa,EAAY,QAC3B,EAAQ,EACR,EAAU,KACd,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EAAG,CAC1C,GAAM,GAAM,EAAW,GACvB,GAAI,KAAK,UAAU,GACjB,GAAI,IAAY,KACd,EAAU,MAEV,MAAM,IAAI,GAAW,gDAGvB,IAAS,EAIb,GAAM,GAAe,GAAU,GAC/B,GAAI,IAAY,KAAM,CACpB,GAAI,IAAU,GAAK,EAAe,GAAU,EAC1C,KAAM,IAAI,GAAW,GAEvB,EAAW,GAAW,EAAe,UAC5B,IAAiB,EAC1B,KAAM,IAAI,GAAW,GAGvB,MAAO,GAGT,mBAAmB,EAAiB,CAClC,GAAI,GAAiB,GACrB,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACvC,GAAI,KAAK,UAAU,EAAW,IAAK,CACjC,EAAiB,GACjB,MAIJ,MAAI,GACK,EAAW,MAAM,EAAG,GAAG,OAAO,KAAK,aAEnC,EAAW,MAAM,EAAG,GAAG,OAC1B,KAAK,oBAAoB,EAAW,MAAM,GAAI,KAAK,cAI3D,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAC5B,GAAM,GAAQ,GAAoB,GAC5B,EAAa,EAAM,MACnB,EAAc,EAAW,MAAM,EAAG,GAAG,OACvC,KAAK,oBAAoB,EAAW,MAAM,GAAI,KAAK,cACvD,MAAO,GAAM,QAAQ,KAIzB,WAAS,CACP,GAAM,GAAS,CACb,YAAa,KAAK,aAEd,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAlGF,GAAA,UAAY,UAqGrB,GAAc,cAAc,IAYtB,GAAA,IAAA,aAAuB,GAAK,CAMhC,YAAY,EAAsB,CAChC,MAAM,GACN,GAAI,EAAK,MAAQ,KACf,KAAM,IAAI,OACN,mFAGN,GAAI,CAAC,MAAM,QAAQ,EAAK,MACtB,KAAM,IAAI,OACN,sEACG,EAAK,iBAId,GAAM,GAAwB,GAAM,EAAG,EAAK,KAAK,OAAS,GAC1D,GAAI,CAAC,EAAK,YAAY,EAAK,KAAK,QAAQ,OAAQ,GAC9C,KAAM,IAAI,OACN,+BAAiC,KAAK,UAAU,EAAK,MACrD,8DAGN,KAAK,KAAO,EAAK,KACjB,KAAK,mBAAqB,CAAC,GAAG,OAAO,KAAK,MAC1C,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAAK,KAAK,OAAS,KAG5D,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAM,GAAc,EAAW,QAC/B,MAAA,MAAK,KAAK,QAAQ,CAAC,EAAa,IAAa,CAC3C,EAAY,EAAI,GAAM,EAAqB,KAEtC,EAGT,KAAK,EAAyB,EAAc,CAC1C,MAAO,IAAU,GAAoB,GAAS,KAAK,oBAGrD,WAAS,CACP,GAAM,GAAS,CACb,KAAM,KAAK,MAEP,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAjDF,GAAA,UAAY,UAoDrB,GAAc,cAAc,IAStB,GAAA,IAAA,aAAuB,GAAK,CAKhC,YAAY,EAAkB,CAC5B,MAAM,GAAQ,KAAO,GAAK,GAC1B,KAAK,gBAAkB,GACnB,GAAQ,KACV,KAAK,UAAY,EAAK,WAAa,KAAO,EAAI,EAAK,UAEnD,KAAK,UAAY,EAIrB,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAa,MAAM,YACnB,EAAS,CAAC,UAAW,KAAK,WAChC,MAAA,QAAO,OAAO,EAAQ,GACf,EAGT,YAAY,EAAyB,EAAsB,CACzD,GAAM,GAAQ,GAAoB,GAC5B,EAAO,GACb,MAAO,IAAI,GAAS,EAAO,KAAK,WAAY,GAG9C,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAC5B,GAAM,GAAQ,GAAoB,GAC5B,EAAO,GACP,EAAW,GACX,EAAc,GAAI,GAAS,EAAO,KAAK,WAAY,EAAM,GAE/D,MADe,GAAM,IAAI,EAAY,OAAO,EAAM,YArC/C,GAAA,UAAY,UA0CrB,GAAc,cAAc,ICvlBtB,GAAA,IAAA,aAAyB,GAAK,CAgBlC,YAAY,EAAwB,CAClC,MAAM,GACN,GATM,KAAA,WAA4B,KAE3B,KAAA,+BACL,gBAME,EAAK,iBAAmB,MAAQ,EAAK,YAAc,KAAM,CAK3D,GAAI,GAAoB,KACpB,EAAK,WAAa,MACpB,GAAY,EAAK,WAEf,EAAK,aAAe,KAGtB,KAAK,gBAAkB,CAAC,EAAW,MAInC,KAAK,gBACD,CAAC,GAAW,OAAqB,GAAO,EAAK,cAGrD,KAAK,SAAW,EAAK,SACP,GAAsB,KAAK,SAAU,YACnD,KAAK,UAAY,EAAK,UACR,GAAsB,KAAK,UAAW,aACpD,KAAK,sBAAwB,GACzB,EAAK,uBAAyB,KAAK,gCACvC,KAAK,sBAAwB,GAAe,EAAK,uBACjD,KAAK,oBAAsB,GAAe,EAAK,qBAC/C,KAAK,qBAAuB,GAAc,EAAK,sBAC/C,KAAK,SAAW,EAAK,SACrB,KAAK,gBAAkB,EAAK,SAC5B,KAAK,YAAc,EAAK,YAGnB,MAAM,EAAyB,CACpC,KAAK,WAAa,KAAK,UACnB,aAAc,CAAC,KAAK,SAAU,KAAK,WAAY,KAAK,MACpD,KAAK,sBAAuB,KAAK,sBAAuB,GACxD,KAAK,sBACT,KAAK,MAAQ,GAKL,6BAA6B,EAAiB,EAExD,YAAY,EAAyB,EAAsB,CACzD,MAAO,GAAK,IACL,KAAK,SAGR,GAAS,GAAoB,GACtB,GAAS,EAAQ,GAAU,KAH3B,MAQb,mBAAmB,EAAyB,CAE1C,GADA,EAAa,GAAmB,GAC5B,KAAK,aAAe,KACtB,MAAO,CAAC,GAAG,EAAY,KAAK,WAG9B,GAAM,GAAiC,GAAO,KAAK,aACnD,GAAI,EAAO,SAAW,EAAW,OAAS,EACxC,KAAM,IAAI,GACN,oBAAoB,KAAK,mDACA,KACxB,CACL,GAAI,GAAI,EACR,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAK,EAAO,GACZ,EAAK,EAAW,EAAI,GAC1B,GAAK,GAAM,MAAU,GAAM,MAAU,IAAO,EAC1C,KAAM,IAAI,GACN,oBAAoB,KAAK,mDACA,KACpB,GAAM,MACf,GAAO,GAAK,GAEd,KAGJ,MAAO,CAAC,EAAW,GAAI,GAAG,EAAQ,KAAK,WAGzC,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAE5B,GAAI,GAAQ,GAAoB,GAChC,MAAI,GAAM,QAAU,SAClB,GAAU,GAAK,EAAO,UAEP,GAAO,KAAK,WAAW,OAAQ,EAAM,QACxC,QACV,GAAmB,KAAK,mBAAmB,EAAM,WAIzD,WAAS,CACP,GAAM,GAAS,CACb,SAAU,KAAK,SACf,UAAW,KAAK,UAChB,sBAAuB,GAAqB,KAAK,uBACjD,sBAAuB,GAAqB,KAAK,uBACjD,oBAAqB,GAAqB,KAAK,qBAC/C,qBAAsB,GAAoB,KAAK,sBAC/C,SAAU,KAAK,SACf,YAAa,KAAK,aAEd,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAjIF,GAAA,UAAY,YAoIrB,GAAc,cAAc,IClLtB,GAAA,IAAA,aAA8B,GAAK,CAGvC,YAAY,EAAgB,CAC1B,MAAM,GAAQ,IACd,KAAK,gBAAkB,GAOf,cAAc,EAAgB,CACtC,KAAM,IAAI,IAaJ,gCAAgC,EAAe,EAAa,CAClE,GAAI,GAAU,MAAQ,GAAU,KAC9B,MAAO,MACF,GAAI,EAAO,OAAS,EAAO,OAChC,MAAO,MAAK,gCAAgC,EAAQ,GAC/C,GAAI,EAAO,SAAW,EAC3B,MAAO,GAET,GAAM,GAAqB,EAAO,MAAM,EAAG,EAAO,OAAS,EAAO,QAClE,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAI,EAAO,EAAO,OAAS,EAAO,OAAS,GAC3C,EAAI,EAAO,GACjB,GAAI,GAAK,MAAQ,GAAK,MAAQ,EAAI,GAAK,EAAI,EACzC,EAAY,KAAK,cACR,IAAM,EACf,EAAY,KAAK,WACR,IAAM,EACf,EAAY,KAAK,OACZ,CACL,GAAI,IAAM,EACR,KAAM,IAAI,GACN,wDACA,KAAK,UAAU,GAAU,IAAM,KAAK,UAAU,IAEpD,EAAY,KAAK,IAGrB,MAAO,GAGT,MAAM,EAAyB,CAO7B,GALI,MAAM,QAAQ,IAAe,CAAC,MAAM,QAAQ,EAAW,KAEzD,GAAa,CAAC,GAAmB,KAEnC,EAAa,EACT,EAAW,OAAS,EACtB,KAAM,IAAI,GACN,wEACQ,EAAW,oBAKzB,GAAI,GAAuB,GAC3B,OAAW,KAAS,GACd,GAAS,MAAQ,EAAM,KAAO,MAChC,EAAW,KAAK,EAAM,IAI1B,GADA,EAA2B,GAAO,GAC9B,EAAW,OAAS,EACtB,KAAM,IAAI,GACN,8EAC4B,KAAK,UAAU,OAGjD,GAAI,GACA,EAAW,IAAM,KAAO,KAAO,EAAW,GAAG,MAAM,GACvD,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EAAG,CAC1C,GAAM,GAAQ,EAAW,IAAM,KAAO,KAAO,EAAW,GAAG,MAAM,GACjE,EAAc,KAAK,gCAAgC,EAAa,GAIlE,GAAM,GAAW,EAAW,IAAI,GAAS,EAAM,QAC3C,EAAW,QAAQ,QAAU,IACf,GAAO,GAAU,SAAW,EAC5C,KAAK,gBAAkB,GAEvB,KAAK,gBAAkB,GAI3B,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CAEf,GADA,EAAS,EACL,KAAK,gBAAiB,CACxB,GAAM,GAA2B,GAC3B,EAAY,EAAO,IAAI,GAAS,EAAM,MAC5C,GAAI,EAAU,QAAQ,QAAU,GAAI,CAGlC,GAAM,GAAoB,GAAI,GAC9B,OAAS,KAAK,GAAQ,CACpB,GAAM,GAAQ,EAAE,KAChB,OAAS,GAAI,EAAG,EAAI,EAAU,EAAO,EAAE,EACrC,EAAM,GAAW,EAAG,GAEtB,EAAe,KAAK,GAEtB,MAAO,MAAK,cAAc,OACrB,CAGL,GAAI,GAAa,GACjB,OAAW,KAAK,GAAQ,CACtB,GAAM,GAAQ,EAAE,KAChB,GAAI,GAAS,KAAM,CACjB,GAAM,GAAS,EAAE,MACX,EAAY,EAAO,GACnB,EAAW,EAAO,MAAM,GAAG,OAAO,CAAC,IACrC,EAAc,EAAE,QAChB,CAAC,GAAW,OAAiB,GAAU,EAAO,MAAM,MACxD,EAAkB,GAAU,EAAa,CAAC,EAAG,IAC7C,EAAc,EAAY,QAAQ,GAClC,EAAe,KAAK,GACpB,EAAa,WACJ,EAAQ,EAAG,CACpB,GAAM,GAAiB,GAAM,EAAG,GAAO,OAAO,CAAC,IAC/C,EAAe,KAAS,GAAU,EAAG,IACrC,EAAa,OAGb,GAAe,KAAK,GAGxB,GAAI,GAAI,KAAK,cAAc,GACrB,EAAQ,EAAE,KAChB,GAAI,GAGF,GAAI,GAAS,KAAM,CACjB,GAAM,GAAS,EAAE,MACX,EAAQ,EAAO,OACf,EAAY,EAAO,EAAQ,GAC3B,EACF,CAAC,GAAW,OAAO,EAAO,MAAM,EAAG,EAAO,OAAS,IACvD,EAAQ,GAAU,EAAE,QAAQ,CAAC,GAAI,IAAa,CAAC,EAAG,IACzC,QAAQ,WACR,EAAQ,EAAG,CACpB,GAAM,GAAO,CAAC,EAAQ,GAAG,OAAiB,GAAM,EAAG,EAAQ,IAC3D,EAAQ,GAAU,EAAG,IAGzB,MAAO,QAGT,OAAO,MAAK,cAAc,KAKhC,mBAAmB,EAAyB,CAC1C,EAAa,EACb,GAAI,GACA,EAAW,IAAM,KACnB,EAAc,KAEd,EAAc,EAAW,GAAG,MAAM,GAEpC,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EAAG,CAC1C,GAAM,GAAQ,EAAW,IAAM,KAAO,KAAO,EAAW,GAAG,MAAM,GACjE,EAAc,KAAK,gCAAgC,EAAa,GAGlE,GAAI,GAAuB,GAC3B,OAAW,KAAS,GACd,GAAS,MAAQ,EAAM,KAAO,MAChC,EAAW,KAAK,EAAM,IAG1B,MAAA,GAA2B,GAAO,GAC9B,EAAW,SAAW,EACxB,EAAc,EAAW,OAAO,GAEhC,EAAc,CAAC,MAAM,OAAO,GAEvB,EAGT,YAAY,EAAyB,EAAsB,CACzD,MAAW,GAAK,IAAK,CACnB,GAAI,GAAQ,KACV,MAAO,MAET,GAAI,CAAC,MAAM,QAAQ,GACjB,KAAM,IAAI,GAAW,6BAEvB,GAAI,CAAC,MAAM,QAAQ,GACjB,KAAM,IAAI,GAAW,+BAEvB,GAAI,EAAK,SAAW,EAAO,OACzB,KAAM,IAAI,GACN,mGAEI,EAAO,aAAa,EAAK,WAEnC,GAAI,EAAK,MAAM,GAAK,GAAK,MACvB,MAAO,MAET,EAAO,EAAK,IAAI,GAAK,GAAK,KAAO,EAAQ,GAAW,EAAG,IACvD,GAAI,GAAS,EAAK,GAClB,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,EAAa,GAAW,EAAQ,EAAK,IAEvC,MAAO,OAKP,GAAA,aAAmB,GAAK,CAG5B,YAAY,EAAgB,CAC1B,MAAM,GAGE,cAAc,EAAgB,CACtC,MAAO,GAAK,IAAK,CACf,GAAI,GAAS,EAAO,GAAG,QACvB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAa,GAAI,EAAQ,EAAO,IAElC,MAAO,OAXJ,GAAA,UAAY,MAerB,GAAc,cAAc,IA0DtB,GAAA,IAAA,aAAwB,GAAK,CAGjC,YAAY,EAAgB,CAC1B,MAAM,GAGE,cAAc,EAAgB,CACtC,MAAO,GAAK,IAAK,CACf,GAAI,GAAS,EAAO,GAAG,QACvB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAa,EAAI,EAAQ,EAAO,IAElC,MAAO,OAXJ,GAAA,UAAY,WAerB,GAAc,cAAc,IA0DtB,GAAA,IAAA,aAAuB,GAAK,CAGhC,YAAY,EAAgB,CAC1B,MAAM,GAGE,cAAc,EAAgB,CACtC,MAAO,GAAK,IAAK,CACf,GAAI,GAAS,EAAO,GAAG,QACvB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAa,GAAI,EAAQ,EAAO,IAElC,MAAW,GAAI,EAAI,EAAO,OAAQ,OAX/B,GAAA,UAAY,UAerB,GAAc,cAAc,IA2DtB,GAAA,IAAA,aAAuB,GAAK,CAGhC,YAAY,EAAgB,CAC1B,MAAM,GAGE,cAAc,EAAgB,CACtC,MAAO,GAAK,IAAK,CACf,GAAI,GAAS,EAAO,GACpB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAa,GAAQ,EAAQ,EAAO,IAEtC,MAAO,OAXJ,GAAA,UAAY,UAerB,GAAc,cAAc,IA0DtB,GAAA,IAAA,aAAuB,GAAK,CAGhC,YAAY,EAAgB,CAC1B,MAAM,GAGE,cAAc,EAAgB,CACtC,MAAO,GAAK,IAAK,CACf,GAAI,GAAS,EAAO,GACpB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAa,GAAQ,EAAQ,EAAO,IAEtC,MAAO,OAXJ,GAAA,UAAY,UAerB,GAAc,cAAc,IAiEtB,GAAA,IAAA,aAA2B,GAAK,CAMpC,YAAY,EAA2B,CACrC,MAAM,GAJC,KAAA,aAAe,GAKlB,GAAQ,MACV,GAAO,IAET,KAAK,KAAO,EAAK,MAAQ,KAAO,KAAK,aAAe,EAAK,KACzD,KAAK,gBAAkB,GACvB,KAAK,gBAAkB,GAGzB,MAAM,EAAyB,CAE7B,GAAI,CAAE,OAAM,QAAQ,IAAe,MAAM,QAAQ,EAAW,MACxD,EAAW,SAAW,EACxB,KAAM,IAAI,GACN,yEAGN,EAAa,EAEb,GAAI,GAAe,GACnB,OAAW,KAAS,GAClB,GAAI,GAAS,KAAM,CACjB,EAAe,GACf,MAGJ,GAAI,EACF,OAGF,GAAM,GAAoB,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EAAG,CAC1C,GAAM,GAAyB,EAAW,GAAG,QAC7C,EAAuB,OAAO,KAAK,KAAM,GACzC,GAAI,GAAS,GACb,OAAW,KAAS,GAClB,GAAI,EAAK,YAAY,EAAO,GAAyB,CACnD,EAAS,GACT,MAGC,GACH,EAAS,KAAK,GAGlB,GAAI,EAAS,OAAS,EACpB,KAAM,IAAI,GACN,4GAEA,KAAK,UAAU,IAIb,cAAc,EAAgB,CACtC,MAAO,GAAK,IACD,GAAY,EAAQ,KAAK,OAItC,mBAAmB,EAAyB,CAC1C,GAAI,CAAE,OAAM,QAAQ,IAAe,MAAM,QAAQ,EAAW,KAC1D,KAAM,IAAI,GACN,+DAEN,GAAM,GAAc,EACd,EAAc,EAAY,GAAG,QAC7B,EAAO,KAAK,KAAO,EAAI,EAAY,OAAS,KAAK,KAAO,KAAK,KAGnE,OAAW,KAAS,GAAY,MAAM,GAAI,CACxC,GAAI,EAAY,IAAS,MAAQ,EAAM,IAAS,KAAM,CACpD,EAAY,GAAQ,KACpB,MAEF,EAAY,IAAS,EAAM,GAE7B,MAAO,GAGT,YAAY,EAAyB,EAAsB,CACzD,GAAI,GAAQ,KACV,MAAO,MAET,GAAI,CAAC,MAAM,QAAQ,GACjB,KAAM,IAAI,GAAW,6CAEvB,GAAI,CAAC,MAAM,QAAQ,GACjB,KAAM,IAAI,GAAW,+CAEvB,GAAI,EAAK,SAAW,EAAO,OACzB,KAAM,IAAI,GACN,mCAAmC,EAAK,qCACX,EAAO,WAE1C,MAAW,GAAK,IAAK,CACnB,GAAI,GAAe,GAOnB,GANA,EAAK,QAAQ,GAAI,CACf,GAAI,GAAK,KAAM,CACb,EAAe,GACf,UAGA,EACF,MAAO,MAET,GAAM,GAAwB,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAC/B,EAAK,IAAM,KAEb,EAAY,KAAS,GAAS,EAAO,IAAI,OAAO,SACvC,EAAK,GAAG,KAAO,EAAO,GAAG,KAElC,EAAY,KAAS,GAAW,EAAK,GAAI,KAEzC,EAAY,KAAK,EAAK,IAG1B,GAAM,GAAwB,GAAO,EAAa,KAAK,MACvD,MAAW,IAAI,EAAmB,GAAI,MAI1C,WAAS,CACP,GAAM,GAAmC,CACvC,KAAQ,KAAK,MAET,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IArIF,GAAA,UAAY,cAwIrB,GAAc,cAAc,IAuF5B,YAAuB,EAAc,EAAW,CAC9C,KAAO,EAAO,GACZ,GAAQ,EAEV,MAAO,GAGT,aAAkB,EAAW,EAAW,EAA6B,CACnE,GAAI,EAAE,MAAM,OAAS,GAAK,EAAE,MAAM,OAAS,EACzC,KAAM,IAAI,IACN,oEAeN,GAbI,EAAK,OACL,EAAE,MAAM,QAAU,EAClB,IAAM,uDACS,EAAE,MAAM,UACvB,EAAK,OACL,EAAE,MAAM,QAAU,EAClB,IAAM,uDACS,EAAE,MAAM,UAEvB,MAAO,IAAS,UAClB,GAAO,CAAC,EAAM,IAGZ,EAAE,QAAU,aAAe,EAAE,QAAU,YACzC,KAAM,IAAI,IACN,+DAGN,GAAM,GAAQ,EAAE,MAAM,OAChB,EAAQ,EAAE,MAAM,OAClB,GAAQ,MAEV,GAAO,CAAC,EAAQ,EAAG,EAAQ,IAE7B,GAAM,GAAY,EAElB,MAAW,GAAK,IAAK,CACnB,GAAI,GACJ,GAAI,EAAQ,EAAO,CACjB,EAAO,EAAQ,EACf,GAAM,GAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAM,EAAE,EAC1B,EAAU,KAAK,GAEjB,EAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,YACpB,EAAQ,EAAO,CACxB,EAAO,EAAQ,EACf,GAAM,GAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAM,EAAE,EAC1B,EAAU,KAAK,GAEjB,EAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,QAE7B,GAAO,EAGT,GAAI,GACJ,GAAI,EAAE,MAAM,SAAW,GAAK,EAAE,MAAM,SAAW,EACzC,EAAU,KAAO,EAAU,GAC7B,EAAM,EAAE,IAAI,GAAG,IAAI,EAAU,IAE7B,EAAM,EAAE,UAAU,CAAC,EAAG,IAAI,IAAI,GAAG,IAAI,EAAU,QAE5C,CACL,GAAM,GAAO,EAAU,KAAO,EAAE,MAAM,OAAS,EACzC,EAAO,EAAU,KAAO,EAAE,MAAM,OAAS,EAC/C,EAAM,EAAE,OAAO,EAAG,EAAM,GAG1B,GAAI,EAAO,EAAG,CACZ,GAAI,GACA,EAAQ,EACV,EAAM,EAAQ,EAAQ,EAEtB,EAAM,EAAQ,EAEhB,GAAM,GAAwB,GAC9B,OAAS,GAAI,EAAK,EAAI,EAAM,EAAM,EAAE,EAClC,EAAY,KAAK,GAEnB,EAAM,EAAI,QAAQ,GAEpB,MAAI,GAAI,MAAM,SAAW,GACvB,GAAM,EAAI,WAAW,IAEhB,IAIL,GAAA,IAAA,aAAmB,GAAK,CAO5B,YAAY,EAAkB,CAC5B,MAAM,GACN,KAAK,KAAO,EAAK,KACjB,KAAK,UAAY,EAAK,WAAa,KAAO,GAAQ,EAAK,UACvD,KAAK,gBAAkB,GACvB,KAAK,gBAAkB,GAGzB,MAAM,EAAyB,CACzB,EAAK,OACL,MAAM,QAAQ,IAAe,EAAW,SAAW,GAC/C,MAAM,QAAQ,EAAW,KAAO,MAAM,QAAQ,EAAW,IAC7D,IAAM,iEACV,GAAM,GAAS,EAAW,GACpB,EAAS,EAAW,GAC1B,GAAI,EAAO,OAAS,GAAK,EAAO,OAAS,EACvC,KAAM,IAAI,IACN,gEAGN,GAAM,GAAO,KAAK,cAAc,EAAQ,GACxC,GAAI,EAAO,EAAK,MAAQ,EAAO,EAAK,IAClC,KAAM,IAAI,GACN,8BACG,EAAO,EAAK,WAAW,EAAO,EAAK,OAIpC,cAAc,EAAgB,CACtC,GAAI,EAAO,SAAW,EACpB,KAAM,IAAI,GACN,oEACgB,EAAO,oBAG7B,GAAI,GAAK,EAAO,GACZ,EAAK,EAAO,GACZ,EACJ,MAAK,OAAM,QAAQ,KAAK,MAMtB,EAAO,KAAK,KAAK,IACN,CAAC,EAAM,IAAM,GACT,EAAM,EAAO,GAAG,MAAM,SAPrC,EAAO,CACL,GAAc,KAAK,KAAM,EAAG,MAAM,QAClC,GAAc,KAAK,KAAM,EAAG,MAAM,SAOlC,KAAK,WACP,GAAK,GAAY,EAAI,EAAK,IAC1B,EAAK,GAAY,EAAI,EAAK,KAErB,IAAS,EAAI,EAAI,GAGlB,cAAc,EAAe,EAAa,CAChD,GAAI,GACJ,MAAK,OAAM,QAAQ,KAAK,MAQtB,EAAO,KAAK,KANZ,EAAO,CACL,GAAc,KAAK,KAAM,EAAO,QAChC,GAAc,KAAK,KAAM,EAAO,SAM7B,EAGT,mBAAmB,EAAyB,CACtC,EAAK,OACL,MAAM,QAAQ,IAAe,EAAW,SAAW,GAC/C,MAAM,QAAQ,EAAW,KAAO,MAAM,QAAQ,EAAW,IAC7D,IAAM,iEACV,GAAM,GAAU,EAAW,GAAa,QAClC,EAAU,EAAW,GAAa,QACxC,GAAI,EAAO,OAAS,GAAK,EAAO,OAAS,EACvC,KAAM,IAAI,IACN,gEAGN,GAAM,GAAO,KAAK,cAAc,EAAQ,GACxC,EAAO,OAAO,EAAK,GAAI,GACvB,EAAO,OAAO,EAAK,GAAI,GACvB,EAAO,OAAO,EAAG,GACjB,GAAM,GAAc,EAAO,OAAO,GAClC,MAAI,GAAY,SAAW,GACzB,EAAY,KAAK,GAEZ,EAGT,YAAY,EAAyB,EAAsB,CACzD,MAAO,MAGT,WAAS,CACP,GAAM,GAAmC,CACvC,KAAQ,KAAK,KACb,UAAa,KAAK,WAEd,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IA7GF,GAAA,UAAY,MAgHrB,GAAc,cAAc,ICrhCtB,GAAA,IAAA,aAA6B,GAAK,CAKtC,YAAY,EAAuB,CACjC,MAAM,GACN,KAAK,gBAAkB,GACvB,KAAK,OAAS,EAAK,OAGrB,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAa,MAAM,YACnB,EAAS,CAAC,OAAQ,KAAK,QAC7B,MAAA,QAAO,OAAO,EAAQ,GACf,EAGT,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAC5B,GAAM,GAAQ,GAAoB,GAKlC,MADM,IAHS,IACT,GAAa,EAAM,MAAO,EAAG,KAAK,QAAQ,IAAI,GAEzB,IAAM,EAAO,EAAO,UAAe,QA3B3D,GAAA,UAAY,gBAgCrB,GAAc,cAAc,IAOtB,GAAA,IAAA,aAA+B,GAAK,CAKxC,YAAY,EAAyB,CACnC,MAAM,GACN,KAAK,gBAAkB,GACvB,KAAK,KAAO,EAAK,KAGnB,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAa,MAAM,YACnB,EAAS,CAAC,KAAM,KAAK,MAC3B,MAAA,QAAO,OAAO,EAAQ,GACf,EAGT,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAC5B,GAAM,GAAQ,GAAoB,GAClC,MAAI,MAAK,KAAO,GAAK,KAAK,KAAO,EAKtB,GAJM,IAAK,CAClB,GAAM,GAAS,KAAK,KAAK,KAAK,KAAQ,GAAI,KAAK,OAC/C,MAAO,GAAM,IAAM,GAAa,EAAM,MAAO,EAAG,KAEpB,IAAM,EAAO,EAAO,UAAe,IAE5D,MA/BJ,GAAA,UAAY,kBAmCrB,GAAc,cAAc,IAyCtB,GAAA,IAAA,aAA4B,GAAK,CAMrC,YAAY,EAAsB,CAChC,MAAM,GACN,KAAK,gBAAkB,GACvB,KAAK,KAAO,EAAK,KACjB,KAAK,WAAa,EAAK,WAGzB,eAAe,EAAuB,CACpC,MAAO,MAAK,YAAc,GAAoB,GAAQ,MAGxD,mBAAmB,EAAyB,CAC1C,MAAO,GAGT,WAAS,CACP,GAAM,GAAa,MAAM,YACnB,EAAS,CAAC,KAAM,KAAK,MAC3B,MAAA,QAAO,OAAO,EAAQ,GACf,EAGT,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAI,KAAK,KAAO,GAAK,KAAK,KAAO,EAAG,CAClC,GAAM,GAAa,KAAK,eAAe,GAuBvC,MAAS,IArBa,IAAK,CACzB,GAAM,GAAQ,GAAoB,GAE5B,EAAQ,mBACR,EAAQ,mBAER,EAAS,CAAC,EAAQ,EAEpB,EAAU,GAAa,GAAc,GAAa,KAAK,MAE3D,EAAY,GAAK,EAAS,WAG1B,GAAM,GAAM,IAAI,KAAK,MAAS,GAAI,KAAK,KAAO,GAAU,KAAO,IACzD,EAAI,CAAC,EAAI,EAAS,KAAK,KAK7B,MAFU,GAAM,IAAI,GAAS,IAAI,EAAQ,IAAI,IAAI,IAAI,IAE5C,IAAI,GAAG,IAAI,IAGH,IAAM,GAAoB,GACzC,EAAO,UAAe,IAE5B,MAAO,OAxDJ,GAAA,UAAY,eA4DrB,GAAc,cAAc,ICrKtB,YACF,EAAW,EAAc,EAAkB,EAAe,EAC1D,EAAU,KAAI,CAChB,GAAI,GACJ,GAAI,EAAE,OAAS,EACb,EAAU,GACN,EAAe,EACf,EAAiC,EACjC,EAA8B,WACzB,EAAE,OAAS,EAEpB,EAAU,GACN,EAAe,EACf,EAAiC,EACjC,EAA8B,WACzB,EAAE,OAAS,EACpB,EAAU,GACN,EAAe,EACf,EAAiC,EACjC,EAA8B,OAElC,MAAM,IAAI,IACN,2DAA2D,EAAE,YAGnE,MAAO,GAoBT,aACI,EAAW,EAAe,EAAc,EACxC,EAAU,KAAI,CAChB,MAAO,GAAK,IAAK,CACR,GAAM,GAAsB,GAAQ,EAAG,GACjC,EAAO,EAAgB,KACvB,EAAW,EAAgB,SAGjC,MAAO,CADH,GAAmB,EAAG,EAAM,EAAU,EAAM,EAAO,GACvC,EAAM,KAqBjC,aACI,EAAW,EAAe,EAAc,EACxC,EAAU,KAAI,CAChB,MAAO,GAAK,IAAK,CACR,GAAM,GAAsB,GAAQ,EAAG,GACjC,EAAO,EAAgB,KACvB,EAAW,EAAgB,SAC3B,EAAwB,GAC9B,OAAW,KAAmB,IAAM,EAAG,EAAE,MACnC,EAAc,QAAQ,KAAU,GAClC,EAAY,KAAK,GAEjB,EAAY,KAAK,EAAE,MAAM,IAG7B,GAAM,GAAgB,EAAK,QAAQ,GAC7B,EAAoB,EAAS,QAAQ,GACrC,EACF,GAAS,KAAO,KAAO,EAAM,QAAQ,GACnC,EACF,GAAQ,KAAO,KAAO,EAAK,QAAQ,GAIvC,MAAO,CAHQ,GACX,EAAG,EAAe,EAAmB,EACrC,EAAgB,GACJ,EAAM,KAe3B,aACF,EAAW,EAAe,EAAc,EACxC,EAAU,KAAI,CAChB,MAAI,GAAK,YACD,EAAc,QAAQ,OAAmB,GAAM,EAAG,EAAE,KAAO,IAC1D,IACH,EAAG,EAAO,EAAM,EAAe,GAE5B,IACH,EAAG,EAAO,EAAM,EAAe,GAsFjC,GAAA,IAAA,aAAkC,GAAK,CAqB3C,YAAY,EAAkC,CACxC,GAAQ,MACV,GAAO,IAET,MAAM,GAEN,KAAK,gBAAkB,GACvB,KAAK,KAAO,EAAK,MAAQ,KAAO,GAAK,EAAK,KAC1C,KAAK,SAAW,EAAK,UAAY,KAAO,IAAO,EAAK,SACpD,KAAK,QAAU,EAAK,SAAW,KAAO,KAAO,EAAK,QAClD,KAAK,OAAS,EAAK,QAAU,KAAO,GAAO,EAAK,OAChD,KAAK,MAAQ,EAAK,OAAS,KAAO,GAAO,EAAK,MAC9C,KAAK,gBAAkB,GAAe,EAAK,iBAAmB,SAC9D,KAAK,iBAAmB,GAAe,EAAK,kBAAoB,QAChE,KAAK,sBACD,GAAe,EAAK,uBAAyB,SACjD,KAAK,0BACD,GAAe,EAAK,2BAA6B,QACrD,KAAK,eAAiB,GAAc,EAAK,gBACzC,KAAK,gBAAkB,GAAc,EAAK,iBAC1C,KAAK,gBAAkB,GAAe,EAAK,iBAC3C,KAAK,iBAAmB,GAAe,EAAK,kBAGvC,MAAM,EAAyB,CACpC,EAAa,GAAmB,GAChC,GAAM,GAAO,KAAK,MAAQ,EAAI,KAAK,KAAQ,KAAK,KAAO,EAAW,OAC5D,EAAM,EAAW,GACvB,GAAI,GAAO,KACT,KAAM,IAAI,GACN,QAAQ,gGAEL,KAAK,UAAU,OAExB,KAAK,UACD,CAAC,GAAI,IAAU,CAAC,KAAM,EAAW,OAAQ,KAAM,EAAE,GAAO,MAC5D,GAAM,GAAQ,CAAC,GACX,KAAK,OACP,MAAK,MAAQ,KAAK,UACd,QAAS,EAAO,KAAM,KAAK,iBAAkB,KAAK,iBAClD,GAAM,KAAK,kBAEb,KAAK,QACP,MAAK,KAAO,KAAK,UACb,OAAQ,EAAO,KAAM,KAAK,gBAAiB,KAAK,gBAAiB,GACjE,KAAK,iBAEX,KAAK,WAAa,KAAK,UACnB,cAAe,EAAO,KAAM,KAAK,sBAAuB,KAAM,IAClE,KAAK,eAAiB,KAAK,UACvB,kBAAmB,EAAO,KAAM,KAAK,0BAA2B,KAChE,IACJ,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAW,EAAO,UAAe,KAAO,GAAQ,EAAO,SACvD,EAAQ,GAAoB,GAC5B,EAAa,EAAM,MACnB,EAAO,EAAW,OAClB,EAA2B,GAAM,EAAG,GACpC,EAAO,KAAK,MAAQ,EAAI,KAAK,KAAQ,KAAK,KAAO,EACvD,EAAc,OAAO,EAAM,GAC3B,GAAM,GAA+B,GAAa,EAAG,GACrD,EAAe,GAAQ,EAAW,GAElC,GAAM,GAAsB,EAAc,QAC1C,EAAoB,OACpB,GAAM,GAAoB,CAAC,EAAK,YAC5B,EAAgC,GAAM,EAAG,GAAM,MAAM,EAAG,EAAO,IAE7D,EAAmC,IAAK,CAC5C,GAAI,EAAmB,CACrB,GAAM,GACF,KAAK,WAAW,OAAO,QAAQ,GAC7B,EACF,KAAK,eAAe,OAAO,QAAQ,GACjC,EACF,KAAK,OAAS,KAAK,KAAK,OAAO,QAAQ,GAAkB,KACvD,EACF,KAAK,MAAQ,KAAK,MAAM,OAAO,QAAQ,GAAkB,KAC7D,MAAO,IACH,EAAO,EAAqB,EAC5B,EAAe,EAAgB,KAAK,aAExC,OAAO,IACH,EAAO,KAAK,WAAW,OAAQ,KAAK,eAAe,OACnD,KAAK,MAAQ,KAAO,KAAO,KAAK,KAAK,OACrC,KAAK,OAAS,KAAO,KAAO,KAAK,MAAM,OAAQ,KAAK,UAI5D,GAAI,CAAC,EACH,MAAO,KAGT,GAAM,CAAC,EAAgB,EAAM,GAAY,IACrC,EAAO,KAAK,MAAM,OAAQ,KAAK,KAAK,OAAQ,EAC5C,KAAK,SAEH,EACF,CAAC,EAAyB,EAAe,IAA0B,CAC7D,EAAK,IAAK,CACZ,GAAM,GAAQ,EAAI,EACZ,EAAY,EAAS,OACrB,EAAc,EAAU,IAAI,GAAO,IAAI,GAC7C,EAAS,MAAM,EAAU,IAAI,OAcrC,MAJoC,KAAK,CACvC,EAAgB,KAAK,WAAY,EAAM,KAAK,UAC5C,EAAgB,KAAK,eAAgB,EAAU,KAAK,cAI/C,IAIX,WAAS,CACP,GAAM,GAAmC,CACvC,KAAM,KAAK,KACX,SAAU,KAAK,SACf,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,gBAAiB,GAAqB,KAAK,iBAC3C,iBAAkB,GAAqB,KAAK,kBAC5C,sBAAuB,GAAqB,KAAK,uBACjD,0BACI,GAAqB,KAAK,2BAC9B,gBAAiB,GAAqB,KAAK,iBAC3C,iBAAkB,GAAqB,KAAK,kBAC5C,eAAgB,GAAoB,KAAK,gBACzC,gBAAiB,GAAoB,KAAK,kBAEtC,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IArKF,GAAA,UAAY,qBAwKrB,GAAc,cAAc,IAkDtB,GAAA,IAAA,aAAkC,GAAK,CAgB3C,YAAY,EAAkC,CAO5C,GANI,GAAQ,MACV,GAAO,IAET,MAAM,GAEN,KAAK,KAAO,EAAK,MAAQ,KAAO,GAAK,EAAK,KACtC,MAAO,MAAK,MAAS,UACvB,GAAI,CAAC,OAAO,UAAU,KAAK,MACzB,KAAM,IAAI,OACN,gDAAgD,KAAK,gBAElD,MAAM,QAAQ,KAAK,OAC5B,OAAW,KAAQ,MAAK,KACtB,GAAI,CAAC,OAAO,UAAU,GACpB,KAAM,IAAI,OACN,0DACgB,KAAK,UAAU,KAAK,aAI5C,MAAM,IAAI,OACN,wEACgB,KAAK,UAAU,KAAK,SAG1C,KAAK,QAAU,EAAK,SAAW,KAAO,KAAO,EAAK,QAClD,KAAK,OAAS,EAAK,QAAU,KAAO,GAAO,EAAK,OAChD,KAAK,MAAQ,EAAK,OAAS,KAAO,GAAO,EAAK,MAC9C,KAAK,gBAAkB,GAAe,EAAK,iBAAmB,SAC9D,KAAK,iBAAmB,GAAe,EAAK,kBAAoB,QAChE,KAAK,gBAAkB,GAAe,EAAK,iBAC3C,KAAK,iBAAmB,GAAe,EAAK,kBAE5C,KAAK,gBAAkB,GAGlB,MAAM,EAAyB,CACpC,EAAa,GAAmB,GAChC,GAAM,GAAQ,EAAW,OAGrB,MAAO,MAAK,MAAS,UACvB,MAAK,KAAO,CAAC,KAAK,OAEpB,OAAS,GAAI,EAAG,EAAI,KAAK,KAAK,OAAQ,EAAE,EAClC,KAAK,KAAK,GAAK,GACjB,MAAK,KAAK,IAAM,GAKpB,OAAW,KAAQ,MAAK,KACtB,GAAI,EAAO,GAAK,GAAQ,EACtB,KAAM,IAAI,OAAM,iBAAiB,KAGrC,GAAI,KAAK,KAAK,SAAyB,GAAO,KAAK,MAAM,OACvD,KAAM,IAAI,OAAM,4BAA4B,KAAK,QAGnD,GAAM,GAAa,KAAK,KAAK,IAAI,GAAQ,EAAW,IAE9C,EAAY,GACd,KAAK,MACP,KAAK,MAAQ,KAAK,UACd,QAAS,EAAY,UAAW,KAAK,iBACrC,KAAK,iBAAkB,GAE3B,KAAK,MAAQ,KAEX,KAAK,OACP,KAAK,KAAO,KAAK,UACb,OAAQ,EAAY,UAAW,KAAK,gBACpC,KAAK,gBAAiB,GAE1B,KAAK,KAAO,KAGd,KAAK,MAAQ,GAGf,KAAK,EAAyB,EAAc,CAC1C,GAAM,GAAQ,GAAoB,GAC5B,EAAa,EAAM,MACnB,EAAQ,EAAW,OAEzB,MAAO,GAAK,IAAK,CACf,GAAM,GAAW,GACb,CAAC,KAAA,EAAM,SAAA,GAAY,GAAQ,EAAO,KAAK,KAAM,GAC3C,EAA+B,GAAa,EAAG,GACrD,OAAW,KAAO,MAAK,KACrB,EAAe,GAAO,EAAW,GAGnC,GAAM,GAAa,GACb,GAAK,MAAQ,EAAE,MAAM,SAAW,GAChC,KAAK,OAAS,CAAC,EAAQ,GAClB,EAAE,QAAQ,GAEV,EAIP,EAAQ,EAAU,KAAK,MAAM,QAC7B,EAAS,EAAU,KAAK,KAAK,QAQ3B,EAA0B,GAC1B,EAA8B,GACpC,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EACtB,KAAK,KAAkB,QAAQ,KAAO,GACzC,GAAc,KAAK,EAAW,IAC9B,EAAkB,KAAK,IAEvB,GAAc,KAAK,GACnB,EAAkB,KAAK,EAAW,KAGtC,MAAA,GAAO,EAAK,KAAK,GACjB,EAAW,EAAS,KAAK,GACzB,EAAQ,EAAM,KAAK,GACnB,EAAS,EAAO,KAAK,GAEd,GACH,EAAO,EAAM,EAAU,EAAQ,EAAO,KAAK,WAInD,WAAS,CACP,GAAM,GAAmC,CACvC,KAAM,KAAK,KACX,QAAS,KAAK,QACd,OAAQ,KAAK,OACb,MAAO,KAAK,MACZ,gBAAiB,GAAqB,KAAK,iBAC3C,iBAAkB,GAAqB,KAAK,kBAC5C,gBAAiB,GAAqB,KAAK,iBAC3C,iBAAkB,GAAqB,KAAK,mBAExC,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAjKF,GAAA,UAAY,qBAoKrB,GAAc,cAAc,IC3jBtB,aACF,EAAW,EACX,EAAuB,CACzB,MAAO,GAAK,IAAK,CACf,GAAI,EAAE,OAAS,EACb,KAAM,IAAI,GACN,kEACG,EAAE,kBAMX,GAHI,GAAW,MACb,GAAU,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,KAErB,EAAQ,SAAW,GAAK,EAAQ,GAAG,SAAW,GAC9C,EAAQ,GAAG,SAAW,EACxB,KAAM,IAAI,GACN,+GAON,GAHI,GAAc,MAChB,GAAa,MAEX,IAAe,gBAAkB,IAAe,gBAClD,KAAM,IAAI,GACN,wBAAwB,oEAI9B,GAAI,GACJ,MAAI,KAAe,gBACjB,EAAU,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,EAAQ,GAAI,EAAQ,IAE/C,EAAU,CAAC,CAAC,EAAG,GAAI,EAAQ,GAAI,EAAQ,GAAI,CAAC,EAAG,IAGtC,GAAI,EAAG,KA6BhB,GAAA,IAAA,aAA6B,GAAK,CAMtC,YAAY,EAA6B,CAUvC,GATI,GAAQ,MACV,GAAO,IAET,MAAM,GAEN,KAAK,WACD,EAAK,YAAc,KAAO,KAAoB,EAAK,WAGnD,EAAK,SAAW,KAClB,KAAK,QAAU,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,YACnB,MAAO,GAAK,SAAY,SACjC,KAAK,QACD,CAAC,CAAC,EAAK,QAAS,EAAK,SAAU,CAAC,EAAK,QAAS,EAAK,cAClD,CAEL,GADA,EAAK,QAAU,EAAK,QAChB,EAAK,QAAQ,SAAW,EAC1B,KAAM,IAAI,GACN,+EACqB,EAAK,QAAQ,iBAGxC,GAAI,GACA,EACJ,GAAI,MAAO,GAAK,QAAQ,IAAO,SAC7B,EAAgB,CAAC,EAAK,QAAQ,GAAI,EAAK,QAAQ,IAC/C,EAAe,CAAC,EAAK,QAAQ,GAAc,EAAK,QAAQ,QACnD,CAGL,GAFA,EAAK,QAAU,EAAK,QAEhB,EAAK,QAAQ,GAAG,SAAW,EAC7B,KAAM,IAAI,GACN,sFACyB,EAAK,QAAQ,GAAG,iBAI/C,GAFA,EAAgB,EAAK,QAAQ,GAEzB,EAAK,QAAQ,GAAG,SAAW,EAC7B,KAAM,IAAI,GACN,qFACyB,EAAK,QAAQ,GAAG,iBAE/C,EAAe,EAAK,QAAQ,GAE9B,KAAK,QAAU,CAAC,EAAe,GAEjC,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAGzC,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAEhC,GAAI,GACA,EACJ,MAAI,MAAK,aAAe,gBAClB,GAAW,IAAM,MAAQ,EAAW,IAAM,EAC5C,EAAO,EAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,EAAO,KAEL,EAAW,IAAM,MAAQ,EAAW,IAAM,EAC5C,EAAO,EAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,EAAO,KAEF,CAAC,EAAW,GAAI,EAAW,GAAI,EAAM,IAExC,GAAW,IAAM,MAAQ,EAAW,IAAM,EAC5C,EAAO,EAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,EAAO,KAEL,EAAW,IAAM,MAAQ,EAAW,IAAM,EAC5C,EAAO,EAAW,GAAK,KAAK,QAAQ,GAAG,GAAK,KAAK,QAAQ,GAAG,GAE5D,EAAO,KAEF,CAAC,EAAW,GAAI,EAAM,EAAM,EAAW,KAIlD,KAAK,EAAyB,EAAc,CAC1C,MAAO,GACH,IAAM,IACF,GAAoB,GAAS,KAAK,QAAS,KAAK,aAG1D,WAAS,CACP,GAAM,GAAmC,CACvC,QAAS,KAAK,QACd,WAAY,KAAK,YAEb,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAnGF,GAAA,UAAY,gBAsGrB,GAAc,cAAc,ICnMtB,YACF,EAAW,EAA4B,EACvC,EAAuB,EACvB,EAAmB,CACrB,MAAO,GAAK,IAAK,CACf,GAAgB,GAChB,GAAc,GACd,GAAiB,GACb,GAAW,MACb,GAAU,CAAC,EAAG,IAEZ,GAAW,MACb,GAAU,SAER,GAAc,MAChB,GAAa,MAEX,GAAY,MACd,GAAW,OAKb,EAAI,GAAsB,EAAG,GAC7B,GAAI,GACE,EAAiB,IAAY,OAAU,OAAS,QACtD,MAAI,KAAa,MAEf,EAAQ,GAAQ,EAAe,EAAU,EAAS,GAIlD,EAAQ,GAEJ,EAA0B,EAAU,EAAS,GAE/C,IAAe,iBACjB,GAAQ,GAAU,EAAG,CAAC,EAAG,EAAG,EAAG,KAE1B,IAcL,YACF,EAAa,EACb,EAAoC,EACpC,EAAyB,EAAmB,CAC9C,MAAO,GAAK,IAAK,CACf,GAAgB,GAChB,GAAc,GACd,GAAiB,GACb,GAAW,MACb,GAAU,CAAC,EAAG,EAAG,IAEf,GAAW,MACb,GAAU,SAER,GAAc,MAChB,GAAa,MAEX,GAAY,MACd,GAAW,OAIb,EAAI,GAAsB,EAAa,GACvC,GAAI,GACE,EAAiB,IAAY,OAAU,OAAS,QACtD,MAAI,KAAa,MACf,EAAQ,GAAU,EAAG,EAAU,EAAS,GAExC,EAAQ,GAAU,EAAG,EAAU,EAAS,GAEtC,IAAe,iBACjB,GAAQ,GAAU,EAAG,CAAC,EAAG,EAAG,EAAG,EAAG,KAE7B,IAsBL,GAAA,IAAA,aAAkC,GAAK,CAW3C,YAAY,EAAwB,CAKlC,GAJI,EAAK,UAAY,MACnB,GAAK,SAAW,GAElB,MAAM,GACF,MAAO,GAAK,UAAa,SAC3B,KAAK,SAAW,CAAC,EAAK,kBAEpB,MAAM,QAAQ,EAAK,WAClB,EAAK,SAAsB,SAAW,GACvC,MAAQ,GAAK,SAAsB,IAAO,SAC5C,KAAK,SAAW,EAAK,aAErB,MAAM,IAAI,GACN,qGAEG,KAAK,UAAU,EAAK,aAG7B,GADA,GAAsB,KAAK,SAAU,YACjC,EAAK,SAAW,KAClB,KAAK,QAAU,KAAK,iBAEhB,MAAO,GAAK,SAAY,SAC1B,KAAK,QAAU,CAAC,EAAK,iBAEnB,MAAM,QAAQ,EAAK,UAClB,EAAK,QAAqB,SAAW,GACtC,MAAQ,GAAK,QAAqB,IAAO,SAC3C,KAAK,QAAU,EAAK,YAEpB,MAAM,IAAI,GACN,oGAEG,KAAK,UAAU,EAAK,YAG/B,GAAsB,KAAK,QAAS,WAEpC,KAAK,QAAU,EAAK,SAAW,KAAO,QAAU,EAAK,QACrD,GAAiB,KAAK,SACtB,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAGzC,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAM,GAAS,GACX,EAAW,GAAI,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IAChE,MAAO,CAAC,EAAW,GAAI,EAAQ,EAAW,IAO5C,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,KAAK,eAAe,EAAQ,GAE5B,EAAW,GAAW,GAAoB,GAAS,GACnD,GAAM,GAAS,KAAK,gBAChB,GAAoB,GAAS,CAAC,KAAK,SAAS,GAAI,GAChD,CAAC,KAAK,QAAQ,GAAI,GAAI,KAAK,QAAS,gBAExC,MAAW,IAAQ,EAAQ,CAAC,MAIhC,WAAS,CACP,GAAM,GAAS,CACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,QAAS,KAAK,SAEV,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAIL,GAAA,aAA4B,GAAS,CAGzC,YAAY,EAAwB,CAClC,MAAM,GAGE,gBACN,EAAgB,EAA4B,EAC5C,EAAsB,EAAsB,CAC9C,MAAA,IAAgB,GAChB,GAAiB,GACV,GAAO,EAAQ,EAAU,EAAS,EAAS,EAAY,SAVzD,GAAA,UAAY,eAarB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAgC,GAAS,CAG7C,YAAY,EAAwB,CAClC,MAAM,GAGE,gBACN,EAAgB,EAA4B,EAC5C,EAAsB,EAAsB,CAC9C,MAAA,IAAgB,GAChB,GAAiB,GACV,GAAO,EAAQ,EAAU,EAAS,EAAS,EAAY,SAVzD,GAAA,UAAY,mBAarB,GAAc,cAAc,IA+BtB,GAAA,IAAA,aAAkC,GAAK,CAM3C,YAAY,EAAwB,CAQlC,GAPI,EAAK,UAAY,MACnB,GAAK,SAAW,CAAC,EAAG,IAEtB,MAAM,GACN,KAAK,SAAW,MAAM,QAAQ,EAAK,UAC/B,EAAK,SACL,CAAC,EAAK,SAAU,EAAK,UACrB,EAAK,SAAW,KAClB,KAAK,QAAU,KAAK,iBACX,MAAM,QAAQ,EAAK,SAAU,CACtC,GAAI,EAAK,QAAQ,SAAW,EAC1B,KAAM,IAAI,GACN,wHAEG,EAAK,QAAQ,WAEtB,KAAK,QAAU,EAAK,YAGpB,MAAK,QAAU,CAAC,EAAK,QAAS,EAAK,SAErC,GAAsB,KAAK,SAAU,YACrC,GAAsB,KAAK,QAAS,WACpC,KAAK,QAAU,EAAK,SAAW,KAAO,QAAU,EAAK,QACrD,KAAK,WACD,EAAK,YAAc,KAAO,eAAiB,EAAK,WACpD,GAAgB,KAAK,YACrB,GAAiB,KAAK,SAEtB,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAGzC,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAI,GACA,KAAK,aAAe,gBAAkB,EAAW,GAAK,EAAW,GACjE,EACA,KAAK,aAAe,gBAAkB,EAAW,GAAK,EAAW,GAKrE,MAJA,GACI,GAAiB,EAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACxE,EACI,GAAiB,EAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACpE,KAAK,aAAe,gBACf,CAAC,EAAW,GAAI,EAAW,GAAI,EAAM,GAErC,CAAC,EAAW,GAAI,EAAM,EAAM,EAAW,IAQlD,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IACV,MAAK,eAAe,EAAQ,GACrB,KAAK,gBACR,GAAoB,GAAS,KAAK,SAAU,KAAK,QACjD,KAAK,QAAS,KAAK,cAI3B,WAAS,CACP,GAAM,GAAS,CACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,QAAS,KAAK,QACd,WAAY,KAAK,YAEb,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAIL,GAAA,aAA4B,GAAS,CAGzC,YAAY,EAAwB,CAClC,MAAM,GAGE,gBACN,EAAgB,EAA4B,EAC5C,EAAsB,EAAsB,CAC9C,MAAA,IAAgB,GAChB,GAAiB,GACV,GAAO,EAAQ,EAAU,EAAS,EAAS,EAAY,SAVzD,GAAA,UAAY,eAarB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAgC,GAAS,CAG7C,YAAY,EAAwB,CAClC,MAAM,GAGE,gBACN,EAAgB,EAA4B,EAC5C,EAAsB,EAAsB,CAC9C,MAAA,IAAgB,GAChB,GAAiB,GACV,GAAO,EAAQ,EAAU,EAAS,EAAS,EAAY,SAVzD,GAAA,UAAY,mBAarB,GAAc,cAAc,IA+BtB,GAAA,IAAA,aAAkC,GAAK,CAM3C,YAAY,EAAwB,CAQlC,GAPI,EAAK,UAAY,MACnB,GAAK,SAAW,CAAC,EAAG,EAAG,IAEzB,MAAM,GACN,KAAK,SAAW,MAAM,QAAQ,EAAK,UAC/B,EAAK,SACL,CAAC,EAAK,SAAU,EAAK,SAAU,EAAK,UACpC,EAAK,SAAW,KAClB,KAAK,QAAU,KAAK,iBACX,MAAM,QAAQ,EAAK,SAAU,CACtC,GAAI,EAAK,QAAQ,SAAW,EAC1B,KAAM,IAAI,GACN,wHAEG,EAAK,QAAQ,WAEtB,KAAK,QAAU,EAAK,YAGpB,MAAK,QAAU,CAAC,EAAK,QAAS,EAAK,QAAS,EAAK,SAEnD,GAAsB,KAAK,SAAU,YACrC,GAAsB,KAAK,QAAS,WACpC,KAAK,QAAU,EAAK,SAAW,KAAO,QAAU,EAAK,QACrD,KAAK,WACD,EAAK,YAAc,KAAO,eAAiB,EAAK,WACpD,GAAgB,KAAK,YACrB,GAAiB,KAAK,SAEtB,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAGzC,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAI,GACA,KAAK,aAAe,gBAAkB,EAAW,GAAK,EAAW,GACjE,EACA,KAAK,aAAe,gBAAkB,EAAW,GAAK,EAAW,GACjE,EACA,KAAK,aAAe,gBAAkB,EAAW,GAAK,EAAW,GAOrE,MANA,GAAS,GACL,EAAQ,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACzD,EACI,GAAiB,EAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACxE,EACI,GAAiB,EAAM,KAAK,SAAS,GAAI,KAAK,QAAS,KAAK,QAAQ,IACpE,KAAK,aAAe,gBACf,CAAC,EAAW,GAAI,EAAW,GAAI,EAAQ,EAAM,GAE7C,CAAC,EAAW,GAAI,EAAQ,EAAM,EAAM,EAAW,IAS1D,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IACV,MAAK,eAAe,EAAQ,GACrB,KAAK,gBACR,GAAoB,GAAS,KAAK,SAAU,KAAK,QACjD,KAAK,QAAS,KAAK,cAI3B,WAAS,CACP,GAAM,GAAS,CACb,SAAU,KAAK,SACf,QAAS,KAAK,QACd,QAAS,KAAK,QACd,WAAY,KAAK,YAEb,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAIL,GAAA,aAA4B,GAAS,CAGzC,YAAY,EAAwB,CAClC,MAAM,GAGE,gBACN,EAAgB,EAChB,EAAmC,EACnC,EAAsB,CACxB,MAAA,IAAgB,GAChB,GAAiB,GACV,GACH,EAAoB,EAAU,EAAS,EAAS,EAAY,SAZ3D,GAAA,UAAY,eAerB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAgC,GAAS,CAG7C,YAAY,EAAwB,CAClC,MAAM,GAGE,gBACN,EAAgB,EAChB,EAAmC,EACnC,EAAsB,CACxB,MAAA,IAAgB,GAChB,GAAiB,GACV,GACH,EAAoB,EAAU,EAAS,EAAS,EAAY,SAZ3D,GAAA,UAAY,mBAerB,GAAc,cAAc,IAKtB,GAAA,IAAA,aAAwC,GAAK,CACjD,YAAY,EAAe,CACzB,MAAM,GACN,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAGzC,mBAAmB,EAAiB,CAClC,MAAO,CAAC,EAAW,GAAI,EAAW,IAGpC,KAAK,EAAyB,EAAc,CAC1C,KAAM,IAAI,MAIR,GAAA,aAAsC,GAAe,CAGzD,YAAY,EAAgB,CAC1B,MAAM,GAAQ,IAGhB,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAQ,GAAoB,GAClC,MAAW,IAAK,EAAO,OARpB,GAAA,UAAY,yBAYrB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAkC,GAAe,CAGrD,YAAY,EAAe,CACzB,MAAM,GAAQ,IAGhB,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAQ,GAAoB,GAClC,MAAW,IAAI,EAAO,OARnB,GAAA,UAAY,qBAYrB,GAAc,cAAc,IAiBtB,GAAA,IAAA,aAAwC,GAAK,CAEjD,YAAY,EAA8B,CACxC,MAAM,GACN,KAAK,WACD,EAAK,YAAc,KAAO,eAAiB,EAAK,WACpD,GAAgB,KAAK,YACrB,KAAK,UAAY,CAAC,GAAI,IAAU,CAAC,KAAM,KAGzC,mBAAmB,EAAyB,CAE1C,MADA,GAAa,EACT,KAAK,aAAe,eACf,CAAC,EAAW,GAAI,EAAW,IAE3B,CAAC,EAAW,GAAI,EAAW,IAItC,KAAK,EAAyB,EAAc,CAC1C,KAAM,IAAI,IAGZ,WAAS,CACP,GAAM,GAAS,CAAC,WAAY,KAAK,YAC3B,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,IAIL,GAAA,aAAsC,GAAe,CAIzD,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAQ,GAAoB,GAClC,MAAI,MAAK,aAAe,eACX,GAAK,EAAO,CAAC,EAAG,IAEhB,GAAK,EAAO,CAAC,EAAG,QAR1B,GAAA,UAAY,yBAarB,GAAc,cAAc,IAEtB,GAAA,IAAA,aAAkC,GAAe,CAIrD,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAQ,GAAoB,GAClC,MAAI,MAAK,aAAe,eACX,GAAI,EAAO,CAAC,EAAG,IAEf,GAAI,EAAO,CAAC,EAAG,QARzB,GAAA,UAAY,qBAarB,GAAc,cAAc,IChpBtB,GAAA,IAAA,aAAgC,GAAK,CAGzC,YAAY,EAAsB,CAQhC,MAAM,GACN,KAAK,MAAQ,EAAK,MAGpB,MAAM,EAAyB,CAC7B,KAAK,MAAQ,MAKX,YAAS,CAIX,MAAI,MAAK,OAAS,KACT,KAAK,MAAM,UAEX,MAIP,WAAU,EAAc,CAItB,KAAK,OAAS,MAChB,MAAK,MAAM,UAAY,MAIvB,mBAAgB,CAClB,MAAO,MAAK,MAAM,oBAIhB,sBAAmB,CACrB,MAAO,MAAK,MAAM,uBAIhB,UAAO,CAET,MAAQ,MAAK,MAAc,YAKzB,SAAM,CACR,MAAO,MAAK,MAAM,OAKpB,YAAU,CACR,MAAO,MAAK,MAAM,aAGpB,WAAW,EAAiB,CAC1B,KAAK,MAAM,WAAW,GAGxB,WAAS,CACP,GAAM,GAAmC,CACvC,MAAS,CACP,UAAa,KAAK,MAAM,eACxB,OAAU,KAAK,MAAM,cAGnB,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,EAGT,6BAA6B,EAAc,CACzC,MAAM,6BAA6B,GAC/B,KAAK,OAAS,MAChB,KAAK,MAAM,6BAA6B,SAKrC,YACH,EACA,EACA,EAAgB,GAA8B,CAChD,GAAM,GAAc,EAAO,MACrB,EAAQ,GAAY,EAAa,GACvC,MAAO,GAAO,MACd,GAAM,GAAY,CAAC,MAAA,GACnB,MAAA,QAAO,OAAO,EAAW,GAClB,GAAI,GAAI,KAIb,GAAA,aAA+B,GAAO,CAG1C,YAAY,EAAsB,CAChC,MAAM,GACN,KAAK,gBAAkB,GAGzB,MAAM,EAAyB,CAE7B,GADA,EAAa,GAAmB,GAC5B,EAAW,OAAS,EACtB,KAAM,IAAI,GACN,gFACe,KAAK,UAAU,MAEpC,KAAK,UAAY,CAAC,CAAC,MAAO,IAC1B,GAAM,GAAkB,CAAC,EAAW,IAAI,OAAO,EAAW,MAAM,IAC3D,KAAK,MAAM,OACd,MAAK,MAAM,MAAM,GACjB,KAAK,MAAM,MAAQ,IAErB,MAAM,MAAM,GAGd,mBAAmB,EAAyB,CAC1C,EAAa,GAAmB,GAChC,GAAM,GAAkB,CAAC,EAAW,IAAI,OAAO,EAAW,MAAM,IAC1D,EACF,KAAK,MAAM,mBAAmB,GAC5B,EAAY,EAAW,GAC7B,MAAO,CAAC,EAAiB,GAAI,GAAW,OAAO,EAAiB,MAAM,IAGxE,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAEV,GAAS,GAAoB,GAazB,GAT0B,CAAC,EAAgB,IAMtC,CADQ,GAAoB,KAAK,MAAM,KAAK,EAAQ,IAC3C,IAGJ,EAAQ,GAAI,GAAyB,KAC3C,KAAsB,GACtB,IACa,OAlDlB,GAAA,UAAY,kBA2DrB,GAAc,cAAc,IAEtB,aAAsC,EAAc,CAC1C,GACV,GAAiC,yBAA0B,GAmBjE,GAAM,KAA2D,SAE3D,GAAA,aAA6B,GAAO,CAWxC,YAAY,EAA4B,CACtC,MAAM,GAUN,GAAM,GAAc,EAAK,MAAM,YACzB,EAAqC,GAC3C,EAAS,UAAe,EAAK,MAAM,eACnC,EAAS,OAAY,EACrB,KAAK,aAAe,GAAY,GAChC,EAAY,YACR,EAAY,cAAmB,GACnC,GAAM,GAAqC,GAW3C,GAVA,EAAS,UAAe,EAAK,MAAM,eACnC,EAAS,OAAY,EACrB,KAAK,cAAgB,GAAY,GACjC,KAAK,aAAa,KAAO,WAAa,KAAK,aAAa,KACxD,KAAK,cAAc,KAAO,YAAc,KAAK,cAAc,KAE3D,KAAK,UAAY,EAAK,YAAc,OAChC,IACA,EAAK,UACT,IAA4B,KAAK,WAC7B,EAAK,QACP,KAAM,IAAI,IACN,mEAEN,KAAK,UAAY,EAAK,MAAM,SAC5B,KAAK,gBAAkB,EAAK,MAAM,gBAClC,KAAK,YAAc,EAAK,MAAM,YAC9B,KAAK,gBAAkB,GACvB,KAAK,WAAa,GAClB,KAAK,UAAY,EAAK,MAAM,UAC5B,KAAK,aAAe,QAGlB,YAAS,CACX,MAAO,MAAK,cAGV,WAAU,EAAc,CAI1B,KAAK,WAAa,EACd,KAAK,cAAgB,MACvB,MAAK,aAAa,UAAY,GAE5B,KAAK,eAAiB,MACxB,MAAK,cAAc,UAAY,GAInC,YAAU,CACR,MAAO,MAAK,aAAa,aAAa,OAClC,KAAK,cAAc,cAGzB,WAAW,EAAiB,CAC1B,GAAM,GAAa,EAAQ,OACrB,EAAiB,KAAK,MAAM,EAAa,GAC/C,KAAK,aAAa,WAAW,EAAQ,MAAM,EAAG,IAC9C,KAAK,cAAc,WAAW,EAAQ,MAAM,IAG9C,mBAAmB,EAAyB,CAC1C,GAAI,GACA,KAAK,aAAa,mBAAmB,GACnC,MAAM,QAAQ,IAAgB,MAAM,QAAQ,EAAY,KAC5D,GAAc,CAAC,IAEjB,EAAc,EAEd,GAAI,GACA,EACA,EAiBJ,MAhBI,MAAK,aACP,GAAa,EAAY,MAAM,IAC/B,EAAc,EAAY,GAI5B,EAAc,EACV,KAAK,YAAc,SACrB,GAAY,EAAY,OAAS,IAAM,EACvC,EAAe,CAAC,IACP,KAAK,WAAa,KAC3B,EAAe,CAAC,EAAa,EAAY,SAEzC,EAAe,CAAC,GAGd,KAAK,YACH,KAAK,WAAa,KACb,EAAa,OAAO,GAAY,OAAO,EAAW,SAEpD,CAAC,GAAa,OAAO,GAAY,OAAO,EAAW,SAEvC,GAAiB,GAGxC,MACI,EACA,EAAe,CACjB,GAAI,GACA,GAAU,KAAO,KAAO,EAAO,aAC/B,EACA,GAAU,KAAO,KAAO,EAAO,UAC/B,GAAU,MACZ,GAAS,IAEX,GAAM,GACF,GAAgB,EAAQ,EAAc,EAAW,KAAK,cAU1D,GATA,EAAS,EAAa,OACtB,EAAe,EAAa,aAC5B,EAAY,EAAa,UAErB,MAAM,QAAQ,IAChB,GAAgB,EAAuC,MAAM,GAC7D,EAAU,EAAuC,IAG9C,IAAgB,MAAQ,EAAa,SAAW,IACjD,GAAa,KACf,MAAO,OAAM,MAAM,EAAQ,GAE7B,GAAM,GAAiD,GACjD,EAA+B,GACrC,GAAI,GAAgB,KAAM,CACxB,GAAM,GAAY,EAAa,OAC/B,GAAI,EAAY,EAAI,EAClB,KAAM,IAAI,GACN,iIAIN,EAAO,aAAkB,EACzB,EAAiB,KAAK,GAAG,GACzB,GAAM,GAAc,EACI,IAAI,GAAS,GAAI,IAAU,CAAC,MAAO,EAAM,SACjE,KAAK,aAAa,UAAY,EAAW,MAAM,EAAG,EAAY,GAC9D,KAAK,cAAc,UAAY,EAAW,MAAM,EAAY,GAC5D,EAAgB,KAAK,GAAG,GAE1B,GAAI,GAAa,KACf,KAAM,IAAI,IACN,yEAIN,GAAM,GAAmB,EAAiB,YAAc,IACxD,OAAW,KAAU,GACnB,GAAI,YAAkB,MAAmB,EACvC,KAAM,IAAI,GACN,gHAKR,GAAI,EAAkB,CAEpB,GAAM,GAAY,CAAC,GAAQ,OAAO,GAC5B,EAAgB,KAAK,UAAU,OAAO,GAUtC,EAAoB,KAAK,UAC/B,KAAK,UAAY,EACjB,GAAM,GACF,MAAM,MAAM,EAA0C,GAC1D,MAAA,MAAK,UAAY,EACV,MAEP,OAAO,OAAM,MAAM,EAAQ,GAI/B,KAAK,EAAyB,EAAc,CAC1C,MAAO,GAAK,IAAK,CACf,GAAM,GAAe,EAAO,aAExB,EACA,EACJ,GAAI,GAAgB,KAClB,EAAI,KAAK,aAAa,KAAK,EAAQ,GACnC,EAAO,KAAK,cAAc,KAAK,EAAQ,OAClC,CACL,GAAM,GAAe,EAAa,MAAM,EAAG,EAAa,OAAS,GAC3D,EAAgB,EAAa,MAAM,EAAa,OAAS,GAC/D,EAAI,KAAK,aAAa,KAClB,EAAQ,OAAO,OAAO,EAAQ,CAAC,aAAc,KACjD,EAAO,KAAK,cAAc,KACtB,EAAQ,OAAO,OAAO,EAAQ,CAAC,aAAc,KAGnD,GAAI,GACA,KAAK,aACH,OAAM,QAAQ,IAChB,GAAS,EAAE,MAAM,GAAG,OAAQ,EAAkB,MAAM,KAGtD,EAAK,EAAe,GACpB,EAAQ,EAAkB,IAGxB,KAAK,iBACP,GAAW,GAAQ,EAAgB,IAGrC,GAAI,GAcJ,MAbI,MAAK,YAAc,SACrB,EAAW,GAAY,CAAC,EAAa,IAC5B,KAAK,YAAc,MAC5B,EAAa,GAAI,EAAa,GACrB,KAAK,YAAc,MAC5B,EAAa,EAAI,GAAQ,GAAI,EAAa,IACjC,KAAK,YAAc,MAC5B,EAAa,EAAI,EAAa,GACrB,KAAK,WAAa,MAC3B,GAAS,CAAC,EAAa,IAIrB,KAAK,YACH,KAAK,WAAa,KACZ,EAAoB,OAAO,GAE9B,CAAC,GAAkB,OAAO,GAE5B,IAIX,YAAY,EAAwB,CAClC,KAAK,aAAa,cAClB,KAAK,cAAc,cAGrB,MAAM,EAAyB,CAC7B,GAAU,KAAK,aAAa,KAAM,IAAK,CACrC,KAAK,aAAa,MAAM,KAE1B,GAAU,KAAK,cAAc,KAAM,IAAK,CACtC,KAAK,cAAc,MAAM,KAE3B,KAAK,MAAQ,GAGf,YAAY,EAAyB,EAAsB,CAErD,MAAM,QAAQ,IAChB,GAAO,EAAK,IAEd,GAAI,GAcJ,GAbI,KAAK,gBACH,KAAK,WAAa,KACpB,EAAa,CAAC,EAAM,GAEpB,EAAa,EAGX,KAAK,WAAa,KACpB,EAAa,CAAC,KAAM,MAEpB,EAAa,KAGb,KAAK,YAAa,CAEpB,GAAM,GADS,KAAK,aAAa,OACE,IAAI,GAAS,MAChD,MAAI,OAAM,QAAQ,GACT,EAAW,OAAO,GAAW,OAAO,GAEpC,CAAC,GAAY,OAAO,GAAW,OAAO,OAG/C,OAAO,MAIP,mBAAgB,CAClB,MAAO,MAAK,aAAa,iBAAiB,OACtC,KAAK,cAAc,qBAGrB,sBAAmB,CACrB,MAAO,MAAK,aAAa,oBAAoB,OACzC,KAAK,cAAc,qBAKzB,6BAA6B,EAAc,CACzC,MAAM,6BAA6B,GAC/B,KAAK,cAAgB,MACvB,KAAK,aAAa,6BAA6B,GAE7C,KAAK,eAAiB,MACxB,KAAK,cAAc,6BAA6B,GAIpD,WAAS,CACP,GAAM,GAAmC,CACvC,UAAa,KAAK,WAGd,EAAa,MAAM,YACzB,MAAA,QAAO,OAAO,EAAQ,GACf,QAIF,YACH,EACA,EAAgC,CAClC,GAAM,GACF,GAAY,EAAO,OAGvB,GAFA,MAAO,GAAO,MAEV,EAAO,cAAmB,KAC5B,KAAM,IAAI,IACN,4FAIN,GAAM,GAAkC,EACxC,MAAA,GAAU,MAAW,EACd,GAAI,GAAI,KA7VV,GAAA,UAAY,gBAgWrB,GAAc,cAAc,IxC3gBtB,aAAqB,EAAoB,CAC7C,MAAO,IAAI,IAAW,GA6BlB,aAAc,EAAmB,CACrC,MAAO,IAAI,IAAI,GAoBX,aAAe,EAAoB,CACvC,MAAO,IAAI,IAAK,GAuBZ,aAAoB,EAAyB,CACjD,MAAO,IAAI,IAAU,GAwBjB,aAAgB,EAAqB,CACzC,MAAO,IAAI,IAAM,GAmBb,aAAkB,EAAuB,CAC7C,MAAO,IAAI,IAAQ,GA2Bf,aAA0B,EAA+B,CAC7D,MAAO,IAAI,IAAgB,GAyBvB,aAAiB,EAAmB,CACxC,MAAO,IAAI,IAAO,GAqBd,aAAiB,EAAmB,CACxC,MAAO,IAAI,IAAO,GAsCd,aAA0B,EAAmB,CACjD,MAAO,IAAI,IAAgB,GAqBvB,aAAiB,EAAmB,CACxC,MAAO,IAAI,IAAO,GAgCd,aAA0B,EAA4B,CAC1D,MAAO,IAAI,IAAgB,GAkCvB,aAAqB,EAAyB,CAClD,MAAO,IAAI,IAAW,GA2BlB,aAAuB,EAA2B,CACtD,MAAO,IAAI,IAAa,GAepB,aAA0B,EAA8B,CAC5D,MAAO,IAAI,IAAgB,GAoCvB,aAAqB,EAAyB,CAClD,MAAO,IAAI,IAAW,GAoClB,aAAgB,EAAoB,CACxC,MAAO,IAAI,IAAM,GAab,aAAkB,EAAsB,CAC5C,MAAO,IAAI,IAAQ,GAmCf,aAA2B,EAAiC,CAChE,MAAO,IAAI,IAAiB,GAsBxB,aAAkB,EAAuB,CAC7C,MAAO,IAAI,IAAQ,GAiBf,aAAuB,EAA2B,CACtD,MAAO,IAAI,IAAa,GA0BpB,aAAkB,EAAsB,CAC5C,MAAO,IAAI,IAAQ,GA+Bf,aAAkB,EAAsB,CAC5C,MAAO,IAAI,IAAQ,GAcf,aAAoB,EAAwB,CAChD,MAAO,IAAI,IAAU,GAyBjB,aAAc,EAAgB,CAClC,MAAO,IAAI,IAAI,GAqBX,aAAkB,EAAgB,CACtC,MAAO,IAAI,IAAQ,GAuBf,aAAsB,EAA2B,CACrD,MAAO,IAAI,IAAY,GAqBnB,aAAkB,EAAgB,CACtC,MAAO,IAAI,IAAQ,GAqBf,aAAkB,EAAgB,CACtC,MAAO,IAAI,IAAQ,GAsBf,aAAmB,EAAgB,CACvC,MAAO,IAAI,IAAS,GAyBhB,aAAc,EAAkB,CACpC,MAAO,IAAI,IAAI,GA0BX,aAA6B,EAAkC,CACnE,MAAO,IAAI,IAAmB,GAuB1B,aAA6B,EAAkC,CACnE,MAAO,IAAI,IAAmB,GA2B1B,aAAwB,EAA6B,CACzD,MAAO,IAAI,IAAc,GAgBrB,YAA2B,EAAwB,CACvD,MAAO,IAAI,IAAiB,GAExB,aAAoB,EAAwB,CAChD,MAAO,IAAiB,GAIpB,aAAuB,EAAwB,CACnD,MAAO,IAAiB,GA0BpB,YAA2B,EAAwB,CACvD,MAAO,IAAI,IAAiB,GAExB,aAAoB,EAAwB,CAChD,MAAO,IAAiB,GAIpB,aAAuB,EAAwB,CACnD,MAAO,IAAiB,GAwBpB,YAA2B,EAAwB,CACvD,MAAO,IAAI,IAAiB,GAExB,aAAoB,EAAwB,CAChD,MAAO,IAAiB,GAIpB,aAAuB,EAAwB,CACnD,MAAO,IAAiB,GAYpB,aAAiC,EAAgB,CACrD,MAAO,IAAI,IAAuB,GAiB9B,aAAiC,EAA8B,CACnE,MAAO,IAAI,IAAuB,GAY9B,YAA6B,EAAgB,CACjD,MAAO,IAAI,IAAmB,GAiB1B,YAA6B,EAA8B,CAC/D,MAAO,IAAI,IAAmB,GAY1B,YAAuB,EAAwB,CACnD,MAAO,IAAI,IAAa,GAwBpB,YAAuB,EAAwB,CACnD,MAAO,IAAI,IAAa,GAwBpB,aAAuB,EAAwB,CACnD,MAAO,IAAI,IAAa,GA4BpB,aAAc,EAAkB,CACpC,MAAO,IAAI,IAAI,GAgDX,aAAkB,EAAsB,CAC5C,MAAO,IAAI,IAAQ,GA0Bf,aAAe,EAAmB,CACtC,MAAO,IAAI,IAAK,GAgDZ,aAAmB,EAAuB,CAC9C,MAAO,IAAI,IAAS,GA2BhB,aAAoB,EAAwB,CAChD,MAAO,IAAI,IAAU,GAgDjB,aAAwB,EAA4B,CACxD,MAAO,IAAI,IAAc,GA8BrB,aAAqB,EAAoB,CAC7C,MAAO,IAAI,IAAW,GAoClB,aAAyB,EAAwB,CACrD,MAAO,IAAI,IAAe,GA+DtB,aAAc,EAAkB,CACpC,MAAO,IAAI,IAAI,GAUX,aAA0B,EAAyB,CACvD,MAAO,IAAI,IAAgB,GAMvB,aAAwB,EAA4B,CACxD,MAAO,IAAI,IAAc,GAiDrB,aAA0B,EAAsB,CACpD,MAAO,IAAI,IAAgB,GAItB,GAAM,KAAkB,GAClB,IAAkB,GAClB,IAAY,GACZ,IAAY,GA2BnB,aAAwB,EAAuB,CACnD,MAAO,IAAI,IAAc,GA2BrB,aAA0B,EAAyB,CACvD,MAAO,IAAI,IAAgB,GAkCvB,aAAuB,EAAsB,CACjD,MAAO,IAAI,IAAa,GA0BpB,aAAkB,EAAkB,CACxC,MAAO,IAAI,IAAQ,GyClpDrB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,IAAA,IAAA,IAAA,IAAA,eAAA,IAAA,IAAA,mBAAA,IAAA,IAAA,oBAAA,IAAA,IAAA,wBAAA,IAAA,IAAA,gBAAA,IAAA,IAAA,KAAA,IAAA,IAAA,kBAAA,IAAA,IAAA,4BAAA,IAAA,IAAA,iBAAA,IAAA,IAAA,IAAA,IAAA,IAAA,UAAA,IAAA,IAAA,OAAA,IAAA,IAAA,0BAAA,IAAA,MAgCM,aAAyB,EAAe,EAAa,CACzD,MAAe,IAAe,EAAO,GAoBjC,aAA6B,EAAe,EAAa,CAC7D,MAAe,IAAmB,EAAO,GAsBrC,aACF,EAAe,EAAa,CAC9B,MAAe,IAA0B,EAAO,GAqB5C,aAA8B,EAAe,EAAa,CAC9D,MAAe,IAAoB,EAAO,GActC,aAAkC,EAAe,EAAa,CAClE,MAAe,IAAwB,EAAO,GAsC1C,aAAoB,EAAe,EAAa,CACpD,MAAe,IAAU,EAAO,GAsC5B,aAAiB,EAAe,EAAa,CACjD,MAAe,KAAO,EAAO,GAwBzB,aAA0B,EAAe,EAAa,CAC1D,MAAc,IAAgB,EAAO,GAuBjC,aAA4B,EAAe,EAAa,CAC5D,MAAc,IAAkB,EAAO,GAqBnC,aACF,EAAe,EAAa,CAC9B,MAAc,IAA4B,EAAO,GAG7C,aAAe,EAAe,EAAa,CAC/C,MAAc,IAA4B,EAAO,GAG7C,aAAe,EAAe,EAAa,CAC/C,MAAc,IAA4B,EAAO,GAqB7C,aAA2B,EAAe,EAAa,CAC3D,MAAc,IAAiB,EAAO,GAGlC,aAAc,EAAe,EAAa,CAC9C,MAAc,IAAiB,EAAO,GAGlC,aAAc,EAAe,EAAa,CAC9C,MAAc,IAAiB,EAAO,GC1TxC,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,cAAA,IAAA,MCAA,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,GAAA,IAAA,IAAA,KAAA,IAAA,IAAA,GAAA,IAAA,MAqBM,aAAe,EAAiB,CACpC,MAAO,IAAI,IAAK,GAYZ,aAAa,EAAe,CAChC,MAAoB,KAAG,GAYnB,aAAa,EAAe,CAChC,MAAoB,KAAG,GC9BnB,GAAA,IAAA,aAAiC,GAAY,CAAnD,aAAA,CAAA,MAAA,GAAA,WAEE,KAAA,MAAqB,KAErB,SAAS,EAAgB,CACvB,GAAI,CAAE,aAAiB,KACrB,KAAM,IAAI,OAAM,yDAElB,KAAK,MAAQ,IA8DjB,YAAc,EAAiB,EAAe,CAC5C,MAAO,GAAU,EAGnB,YAAiB,EAAiB,EAAe,CAC/C,MAAO,GAAU,EAOb,GAAA,IAAA,aAA6B,GAAQ,CAczC,YAAY,EAAgC,CAC1C,QAIA,GAHI,GAAQ,MACV,GAAO,IAEL,EAAK,mBACP,KAAM,IAAI,IACN,sEAGN,KAAK,QAAU,EAAK,SAAW,WAC/B,KAAK,SAAW,KAAK,IAAI,EAAK,UAAY,GAC1C,KAAK,SAAW,EAAK,UAAY,EACjC,KAAK,QAAU,EAAK,SAAW,EAC/B,KAAK,KAAO,EAAK,MAAQ,OACzB,KAAK,SAAW,EAAK,SAEjB,CAAC,OAAQ,MAAO,OAAO,QAAQ,KAAK,QAAU,IAChD,SAAQ,KACJ,uBAAuB,KAAK,kDAEhC,KAAK,KAAO,QAGV,KAAK,OAAS,MAChB,KAAK,YAAc,GACV,KAAK,OAAS,MACvB,KAAK,YAAc,GAGf,KAAK,QAAQ,QAAQ,SAAW,GAClC,KAAK,YAAc,GAEnB,KAAK,YAAc,GAInB,KAAK,cAAgB,IACvB,MAAK,UAAY,SAIf,cAAa,EAAW,CAC5B,KAAK,KAAO,EACZ,KAAK,aAAe,EAChB,KAAK,UAAY,KACnB,KAAK,KAAO,KAAK,SAEjB,KAAK,KAAO,KAAK,cAAgB,GAAO,SAAW,eAIjD,YAAW,EAAe,EAAW,CACzC,KAAM,IAAqB,GAC3B,GAAM,GAAU,KAAK,gBAAgB,GACjC,GAAW,MAIX,MAAK,YAAY,EAAU,KAAK,SAAU,KAAK,MACjD,MAAK,KAAO,EACZ,KAAK,KAAO,GAGZ,MAAK,OACD,KAAK,MAAQ,KAAK,UACpB,MAAK,aAAe,EACpB,KAAK,MAAM,aAAe,WAM1B,YAAW,EAAW,CACtB,KAAK,aAAe,GAAK,KAAK,SAChC,QAAQ,IAAI,SAAS,KAAK,iCAItB,gBAAgB,EAAU,CAC5B,GAAQ,MACV,GAAO,IAET,GAAM,GAAe,EAAK,KAAK,SAC/B,MAAI,IAAgB,MAClB,QAAQ,KACJ,4BAA4B,KAAK,oDACP,OAAO,KAAK,MAErC,IA+CL,aAAwB,EAAgC,CAC5D,MAAO,IAAI,IAAc,GAGpB,GAAM,KAAY,CAAC,cAAA,KEhOd,GAAZ,AAAA,UAAY,EAAQ,CAClB,EAAA,EAAA,WAAA,GAAA,aACA,EAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,UAAA,GAAA,YACA,EAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,UAAA,GAAA,YACA,EAAA,EAAA,aAAA,GAAA,eACA,EAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,QAAA,IAAA,UACA,EAAA,EAAA,SAAA,IAAA,WACA,EAAA,EAAA,UAAA,IAAA,YACA,EAAA,EAAA,UAAA,IAAA,YACA,EAAA,EAAA,YAAA,IAAA,cACA,EAAA,EAAA,aAAA,KAAA,eACA,EAAA,EAAA,cAAA,KAAA,gBACA,EAAA,EAAA,aAAA,KAAA,eACA,EAAA,EAAA,aAAA,KAAA,eACA,EAAA,EAAA,aAAA,KAAA,eACA,EAAA,EAAA,YAAA,KAAA,cACA,EAAA,EAAA,cAAA,KAAA,gBACA,EAAA,EAAA,iBAAA,KAAA,mBACA,EAAA,EAAA,aAAA,KAAA,eACA,EAAA,EAAA,YAAA,KAAA,cACA,EAAA,EAAA,aAAA,KAAA,eACA,EAAA,EAAA,cAAA,KAAA,gBACA,EAAA,EAAA,cAAA,KAAA,gBACA,EAAA,EAAA,gBAAA,KAAA,oBA7BU,IAAA,IAAQ,KAyRd,GAAW,IAAjB,AAAA,UAAiB,EAAQ,CAEvB,GAAY,GAAZ,AAAA,UAAY,EAAuB,CAAE,EAAA,EAAA,OAAA,GAAA,SAAc,EAAA,EAAA,GAAA,GAAA,KAAU,EAAA,EAAA,GAAA,GAAA,OAAjD,EAAA,EAAA,yBAAA,GAAA,wBAAuB,OAFpB,IAAA,IAAQ,KCnSzB,GAAM,IAAwC,GA2BxC,aAAqB,EAAc,EAAkB,CACzD,GAAM,GAAqB,CACzB,SAAU,EACV,SAAU,SACV,OAAQ,GACR,MAAO,GACP,eAAgB,GAGlB,GAAW,GAAQ,EAUf,YAA0B,EAAY,CAC1C,MAAO,IAAW,GAUd,aAAuB,EAAY,CACvC,MAAO,IAAW,GCtDd,WACF,EAAmB,EAAY,EAC/B,EAA2B,EAAiC,CAC9D,GAAM,GAAa,EAAK,YAAY,GACpC,GAAI,GAAc,EAAW,kBAAoB,OAAW,CAC1D,GAAM,GAAQ,EAAW,gBACnB,EAAM,EAAW,gBAAkB,EACrC,OACC,EAAW,gBAAkB,OAAY,EAAQ,EACR,EAAW,cACzD,GAAI,EAAW,OAAS,SACtB,MAAO,IACH,EAAK,WAAW,EAAW,iBAAkB,EAAW,EACxD,GAEN,GAAI,EAAW,OAAS,UAGtB,MAFe,GAAK,WAAW,MAAM,EAAO,GAE9B,IACV,GAAQ,GAAU,EAAM,EAAW,EAAS,IAElD,GAAM,GAAS,GACX,EAAK,WAAW,MAAM,GAAO,GAAI,EAAW,EAAS,GACnD,EAAO,EAAO,WACpB,MAAO,GAAW,OAAS,SACvB,EAAK,GACL,EAAK,cAAc,EAAO,MAAO,GAEvC,GAAM,GAAY,EAAK,WAAW,GAClC,MAAO,IAAa,EAAU,MAU1B,YACF,EAAc,EAA6B,EAC3C,EAAiC,CACnC,GAAM,CAAC,EAAU,GAAS,GAAc,GAExC,GAAI,GAAmB,KAAM,CAC3B,GAAM,GAAS,EAAgB,yBAAyB,GACxD,GAAI,GAAU,KACZ,MAAO,GAIX,GAAM,GAAY,EAAQ,kBAAkB,KAAK,GACxC,CAAC,CAAC,EAAW,GAAyB,EAAU,KAGzD,MAAO,KAAc,OACjB,EAAW,GAAyB,EAAU,IAAY,GAC1D,OAQA,aACF,EAAc,EACd,EAAyB,CAC3B,MAAO,GAAW,GAAyB,EAAM,EAAQ,mBASrD,YACF,EAAmB,EAA0B,CAC/C,GAAM,CAAC,EAAU,GAAS,GAAc,GAExC,MAAO,CACL,GAAyB,EAAU,GAAW,EAAQ,kBACtD,GAIJ,YAAkC,EAAc,EAAkB,CAChE,MAAS,GAAY,GAAG,KAAQ,IAAc,EAG1C,YAAwB,EAAY,CACxC,GAAM,GAAQ,EAAK,MAAM,KACzB,MAAI,GAAM,SAAW,EACZ,CAAC,EAAM,GAIT,CADU,EAAM,GACL,OAAO,EAAM,EAAM,OAAS,KAU1C,YACF,EAAY,EACZ,EAAyB,CAC3B,GAAI,GAAM,EAAc,MAAO,EAAM,EAAW,GAChD,GAAI,IAAQ,WAAY,CAEtB,EAAM,EAAc,mBAAoB,EAAM,EAAW,GACzD,GAAM,GAEF,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IACjC,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAgB,GAAG,GAAM,EAAiB,EAAI,GAC9C,EAAgB,GAAG,GAAM,EAAiB,EAAI,EAAI,GAEpD,MAAO,GAET,MAAO,GAYH,YAAsB,EAAc,CACxC,MAAO,GAAO,KAAO,EAAS,GAAM,GCjKtC,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAmBO,GAAM,KAAmB,CAC9B,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,aAE/D,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,oBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,OCjMtB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,cACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,aACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,aACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,WAExC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,MACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CACP,CACE,OAAU,YACV,KAAQ,WACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,IAElB,CACE,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,OCncxB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAAO,GAAM,KAAmB,CAC9B,CACE,SAAY,kBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,WAEjD,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAElD,CACE,SAAY,SACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,aAE/D,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,aAAc,KAAQ,YAAa,KAAQ,UACtD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UAG5D,CACE,SAAY,OACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,SAC5D,CAAC,OAAU,eAAgB,KAAQ,cAAe,KAAQ,QAC1D,CAAC,OAAU,mBAAoB,KAAQ,iBAAkB,KAAQ,QACjE,CACE,OAAU,2BACV,KAAQ,yBACR,KAAQ,QAEV,CAAC,OAAU,oBAAqB,KAAQ,OAAQ,KAAQ,YAG5D,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CAAC,CACR,OAAU,QACV,KAAQ,QACR,KAAQ,QACR,aAAgB,MAGpB,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAGhE,CACE,SAAY,uBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAAU,CACrD,OAAU,wBACV,KAAQ,sBACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,YAG3C,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,YAE3D,CACE,SAAY,cACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,QACxD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UAG5D,CACE,SAAY,KACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,QACxD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UAG5D,CACE,SAAY,iBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,QAC3C,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAG/C,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,OAAQ,KAAQ,YAEjD,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,QAC3C,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAG/C,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,WAE9C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,mBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YACxC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,WAE9C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,uBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,kBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,SAC5D,CAAC,OAAU,eAAgB,KAAQ,cAAe,KAAQ,WAG9D,CACE,SAAY,kBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,SAC7C,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,mBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,SAC5D,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAGhE,CACE,SAAY,oBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAE/C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,WAEnE,CACE,SAAY,qBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,YC5WlE,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAmBO,GAAM,KAAmB,CAC9B,CACE,SAAY,UACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAAa,CAC7D,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,GAChB,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,oBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAC7C,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAAa,CAC7D,OAAU,yBACV,KAAQ,sBACR,KAAQ,QAEV,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,aAAc,KAAQ,YAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,SAAU,KAAQ,SAAU,KAAQ,UAC/C,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,OAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,WACV,KAAQ,WACR,KAAQ,SACR,aAAgB,KAItB,CACE,SAAY,SACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAC7C,CAAC,OAAU,gBAAiB,KAAQ,gBAAiB,KAAQ,QAAS,CACpE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,eACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,IAAK,EAAG,KAAQ,OAAQ,KAAQ,YAE/C,MAAS,CACP,CAAC,OAAU,WAAY,KAAQ,UAAW,KAAQ,UAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,mBACV,KAAQ,gBACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,WACR,aAAgB,CAAC,EAAG,EAAG,EAAG,IAE5B,CACE,OAAU,YACV,KAAQ,WACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,kBACV,KAAQ,iBACR,KAAQ,YAId,CACE,SAAY,sBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,aAE9C,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,IAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,WACR,aAAgB,MAItB,CACE,SAAY,kBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,wBACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,IAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,6BACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,IAAK,EAAG,KAAQ,OAAQ,KAAQ,YAE/C,MAAS,CACP,CAAC,OAAU,WAAY,KAAQ,UAAW,KAAQ,UAClD,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAClE,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,WACR,aAAgB,CAAC,EAAG,EAAG,EAAG,IAE5B,CACE,OAAU,YACV,KAAQ,WACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,oBACV,KAAQ,mBACR,KAAQ,WACR,aAAgB,MAItB,CACE,SAAY,SACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,UAAW,CACtD,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,QAElB,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,cAGzD,CACE,SAAY,aACZ,SAAY,cACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,YACjD,CAAC,OAAU,QAAS,KAAQ,YAAa,KAAQ,YACjD,CAAC,OAAU,UAAW,KAAQ,MAAO,KAAQ,aCzWnD,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,YACtC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,WAExC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,WACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,MAAO,KAAQ,WAEtC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,UACxC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,SAAU,aAAgB,GAClE,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,SAAU,aAAgB,IAErE,MAAS,CACP,CACE,OAAU,OACV,KAAQ,OACR,KAAQ,SACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,WACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,WAEzD,CACE,SAAY,gBACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CACP,CACE,OAAU,SACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,SACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GAAI,CACvE,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,EAChB,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,MAGnE,CACE,SAAY,QACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,IAEjE,MAAS,CAAC,CAAC,OAAU,OAAQ,KAAQ,QAAS,KAAQ,WAExD,CACE,SAAY,kBACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,OACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,SACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAAW,CACpD,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,EAChB,aAAgB,IAElB,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,MAGnE,CACE,SAAY,QACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,YACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,WAErD,CACE,SAAY,cACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,aAAc,KAAQ,WAE7C,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,UAC3C,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,UAC7C,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,SACzC,CAAC,OAAU,eAAgB,KAAQ,eAAgB,KAAQ,YC3KjE,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,YAGjD,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,YAGnD,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,WAEjD,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,cACV,KAAQ,YACR,KAAQ,QACR,aAAgB,IAElB,CACE,OAAU,yBACV,KAAQ,qBACR,KAAQ,UAId,CACE,SAAY,sBACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,iBAAkB,KAAQ,UAC/C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,YAGjD,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,YAAa,KAAQ,WAE5C,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,OChGtB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CAAC,OAAU,SAAU,KAAQ,SAAU,KAAQ,UAE3D,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAGtC,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aCvC3C,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,yBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,WAE1C,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,WAGjD,CACE,SAAY,cACZ,SAAY,QACZ,MAAS,CACP,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,SAC7C,CAAC,OAAU,QAAS,KAAQ,QAAS,KAAQ,WAGjD,CAAC,SAAY,QAAS,SAAY,SAAU,CAC1C,SAAY,WACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,YACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,IAAK,KAAQ,aAEzD,CACE,SAAY,WACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,QACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,SACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,IAAK,KAAQ,aAEzD,CACE,SAAY,QACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAEvC,MAAS,CACP,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,UAAW,CAC1D,OAAU,UACV,KAAQ,SACR,KAAQ,SACR,aAAgB,IAElB,CACE,OAAU,YACV,KAAQ,YACR,KAAQ,SACR,aAAgB,KAItB,CAAC,SAAY,OAAQ,SAAY,QAAS,OAAU,IAAK,CACvD,SAAY,eACZ,SAAY,QACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,0BACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,UACzC,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,aC3F/C,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAAO,GAAM,KAAmB,CAC9B,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,GACV,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UACxD,CACE,OAAU,wBACV,KAAQ,qBACR,KAAQ,QAEV,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,SACpD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,WAG5D,CACE,SAAY,cACZ,SAAY,aACZ,OAAU,GACV,MAAS,CACP,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,UACxD,CACE,OAAU,wBACV,KAAQ,qBACR,KAAQ,QAEV,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,SACpD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,WAG5D,CACE,SAAY,oBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,sBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,kBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,oBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,UAC5C,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CACP,CAAC,OAAU,MAAO,KAAQ,MAAO,KAAQ,QAAS,aAAgB,IAAO,CACvE,OAAU,OACV,KAAQ,OACR,KAAQ,QACR,aAAgB,MAItB,CACE,SAAY,kBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,YAGhD,CACE,SAAY,oBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,aC9HlD,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,iBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,QAAS,CACnE,OAAU,qBACV,KAAQ,mBACR,KAAQ,QAEV,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,wBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CACP,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,QAAS,CACnE,OAAU,qBACV,KAAQ,mBACR,KAAQ,QAEV,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,QACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,aAE3C,MAAS,CACP,CAAC,OAAU,SAAU,KAAQ,SAAU,KAAQ,UAAW,CACxD,OAAU,sBACV,KAAQ,qBACR,KAAQ,aC/DhB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,QACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,UACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,eACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,OACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,aACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,YAAa,KAAQ,UAC1C,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,WACZ,SAAY,UACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,YAAa,KAAQ,UAC1C,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,OC9ItB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAmBO,GAAM,KAAmB,CAC9B,CACE,SAAY,eACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,IAAK,EAAG,KAAQ,OAAQ,KAAQ,YAE/C,MAAS,CACP,CAAC,OAAU,WAAY,KAAQ,UAAW,KAAQ,UAAW,CAC3D,OAAU,YACV,KAAQ,WACR,KAAQ,WACR,aAAgB,IAElB,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,SACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,cACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,gBACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CACE,OAAU,QACV,KAAQ,aACR,KAAQ,OACR,aAAgB,IAElB,CAAC,OAAU,IAAK,KAAQ,QAAS,KAAQ,QAAS,aAAgB,MAGtE,CACE,SAAY,YACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CACR,OAAU,IACV,KAAQ,QACR,KAAQ,QACR,aAAgB,OCtItB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,iBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,WAE3C,MAAS,CACP,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,mBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,WAE3C,MAAS,CACP,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,mBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,UACtC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,WAE3C,MAAS,CACP,CACE,OAAU,UACV,KAAQ,UACR,KAAQ,SACR,aAAgB,MAElB,CACE,OAAU,cACV,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,MACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,eACV,KAAQ,SACR,KAAQ,SACR,aAAgB,GAElB,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GACrE,CACE,OAAU,QACV,KAAQ,QACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,OACV,KAAQ,OACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,UACZ,SAAY,gBACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,aACZ,SAAY,gBACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,gBACZ,SAAY,gBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,YAC5C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CAAC,CACR,OAAU,mBACV,KAAQ,kBACR,KAAQ,OACR,aAAgB,GAChB,aAAgB,OCjJtB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,WACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YAG5C,CACE,SAAY,gBACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,UACrC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,WAE1C,MACI,CAAC,CAAC,OAAU,gBAAiB,KAAQ,eAAgB,KAAQ,UAEnE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,OACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,MACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,SACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,SACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,OACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,aAEvC,MAAS,CAAC,CAAC,OAAU,YAAa,KAAQ,WAAY,KAAQ,UAEhE,CACE,SAAY,SACZ,SAAY,YACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CACP,CAAC,OAAU,YAAa,KAAQ,YAAa,KAAQ,QACrD,CAAC,OAAU,UAAW,KAAQ,UAAW,KAAQ,WC9HvD,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,GAAI,KAAQ,UAAW,KAAQ,WACnD,CAAC,MAAS,GAAI,KAAQ,OAAQ,KAAQ,WAExC,MACI,CAAC,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,KAEtE,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,WAClD,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,WAEvC,MAAS,CAAC,CAAC,OAAU,IAAK,KAAQ,IAAK,KAAQ,SAAU,aAAgB,KAG3E,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,UACxC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,IAEjE,MAAS,CAAC,CACR,OAAU,aACV,KAAQ,YACR,KAAQ,SACR,aAAgB,KAGpB,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,WAE1C,MAAS,CAAC,CACR,OAAU,mBACV,KAAQ,kBACR,KAAQ,OACR,aAAgB,MAGpB,CACE,SAAY,UACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,cAGzC,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,YACtC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,cAGzC,CACE,SAAY,eACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,YACtC,CAAC,MAAS,EAAG,KAAQ,MAAO,KAAQ,YACpC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MAAS,CACP,CACE,OAAU,aACV,KAAQ,YACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,WACV,KAAQ,UACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,gBACV,KAAQ,cACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,gBACV,KAAQ,eACR,KAAQ,SACR,aAAgB,GAElB,CACE,OAAU,mBACV,KAAQ,iBACR,KAAQ,SACR,aAAgB,KAItB,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,IAAO,EAAG,KAAQ,UAAW,KAAQ,YAEpD,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,KAGzE,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,WAEzC,MAAS,CACP,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GAAI,CACvE,OAAU,MACV,KAAQ,MACR,KAAQ,SACR,aAAgB,EAChB,aAAgB,MAItB,CACE,SAAY,OACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,cAGzC,CACE,SAAY,QACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,GAC/D,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,YACV,KAAQ,kBACR,KAAQ,SACR,aAAgB,KAGpB,CACE,SAAY,SACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,kBAAmB,KAAQ,YAChD,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,SAAU,aAAgB,KAGnE,CACE,SAAY,YACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,UACxC,CAAC,MAAS,EAAG,KAAQ,SAAU,KAAQ,UACvC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,cAG1C,CACE,SAAY,WACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YAG5C,CACE,SAAY,gBACZ,SAAY,aACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,gBAAiB,KAAQ,UAC9C,CAAC,MAAS,EAAG,KAAQ,cAAe,KAAQ,YAC5C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,UAC7C,CAAC,MAAS,EAAG,KAAQ,eAAgB,KAAQ,WAE/C,MAAS,CAAC,CACR,OAAU,mBACV,KAAQ,kBACR,KAAQ,OACR,aAAgB,GAChB,aAAgB,OC9NtB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,MACZ,SAAY,WACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CAAC,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,YAE/C,CACE,SAAY,OACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAAW,CAC3C,MAAS,EACT,KAAQ,aACR,KAAQ,SACR,aAAgB,MAItB,CACE,SAAY,QACZ,SAAY,WACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAAW,CAC3C,MAAS,EACT,KAAQ,aACR,KAAQ,SACR,aAAgB,OChDxB,GAAA,GAAA,GAAA,GAAA,CAAA,KAAA,IAAA,MAiBO,GAAM,KAAmB,CAC9B,CACE,SAAY,OACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CACE,OAAU,OACV,KAAQ,SACR,KAAQ,QACR,aAAgB,IAElB,CAAC,OAAU,OAAQ,KAAQ,QAAS,KAAQ,WAGhD,CACE,SAAY,aACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,OAAQ,KAAQ,YAGzC,CACE,SAAY,YACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MAAS,CAAC,CAAC,OAAU,OAAQ,KAAQ,OAAQ,KAAQ,YAEvD,CACE,SAAY,MACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,aAE1C,MAAS,CAAC,CACR,OAAU,iBACV,KAAQ,gBACR,KAAQ,SACR,aAAgB,KAGpB,CACE,SAAY,QACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,UAAW,KAAQ,YAAa,CACnD,MAAS,EACT,KAAQ,gBACR,KAAQ,SACR,aAAgB,KAItB,CACE,SAAY,UACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,cAG1C,CACE,SAAY,UACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CAAC,CACR,OAAU,OACV,iBAAoB,eACpB,KAAQ,OACR,KAAQ,cAGZ,CACE,SAAY,iBACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,aAAc,KAAQ,YAC3C,CAAC,MAAS,EAAG,KAAQ,WAAY,KAAQ,cAG7C,CACE,SAAY,iBACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,aAAc,KAAQ,YAC3C,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,cAG1C,CACE,SAAY,eACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,WAEpC,MAAS,CACP,CAAC,OAAU,aAAc,KAAQ,YAAa,KAAQ,UACtD,CAAC,OAAU,cAAe,KAAQ,aAAc,KAAQ,YAG5D,CACE,SAAY,cACZ,SAAY,iBACZ,OAAU,CACR,CAAC,MAAS,EAAG,KAAQ,IAAK,KAAQ,UAClC,CAAC,MAAS,EAAG,KAAQ,QAAS,KAAQ,aAExC,MAAS,KC/FP,GAAA,KAAsB,WAMR,WAAQ,CACxB,MAAO,MAAK,WAAc,MAAK,UAAY,GAAI,OAIjD,aAAA,CACE,GAAM,GAAM,CACV,GAAY,GAAW,GAAS,GAAa,GAAU,GACvD,GAAY,GAAS,GAAO,GAAO,GAAU,GAAe,GAC5D,GAAW,GAAU,GAAgB,IAEjC,EAA0B,GAAG,OAAO,GAAG,EAAI,IAAI,GAAM,EAAG,OAE9D,KAAK,UAAY,EAAY,OACzB,CAAC,EAAK,IACJ,GAAI,EAAO,UAAY,EAChB,GAET,IAKN,eACI,EACA,EAAsC,GAAE,CAC1C,GAAM,GAAU,EAAM,KAChB,EAAuB,GACvB,EAAkB,GAClB,EAAoB,GACpB,EAAQ,EAAQ,OAA8B,CAAC,EAAK,IACxD,GAAI,EAAK,MAAQ,KAAK,QAAQ,GAC1B,EAAK,GAAG,WAAW,eACrB,EAAa,KAAK,EAAI,EAAK,OAClB,EAAK,KAAO,QACrB,EAAQ,KAAK,EAAI,EAAK,OACb,GAAK,OAAS,MAAQ,EAAK,MAAM,SAAW,IACrD,EAAU,KAAK,EAAI,EAAK,OAEnB,GACN,IAEC,EAAiB,GACf,EAAkB,GACpB,EAA8C,GAC9C,EAA+C,GAC/C,GAAa,MACf,GAAqB,KAAK,oBAAoB,EAAU,QACxD,EAAsB,KAAK,oBAAoB,EAAU,UAE3D,GAAM,GAAW,OAAO,KAAK,GAC7B,EAAS,QAAQ,GAAM,CACrB,GAAM,GAAO,EAAM,GACnB,EAAK,WAAW,QAAQ,GAAO,CAC7B,GAAM,CAAC,GAAc,GAAoB,GACzC,EAAK,OAAO,KAAK,EAAM,IACvB,EAAM,GAAU,SAAS,KAAK,OAM9B,OAAO,KAAK,GAAqB,SAAW,EAC9C,EAAS,QAAQ,GAAM,CACrB,GAAM,GAAO,EAAM,GACf,EAAK,SAAS,SAAW,GAC3B,EAAQ,KAAK,KAIjB,OAAO,KAAK,GAAqB,QAAQ,GAAO,CAC9C,GAAM,CAAC,GAAc,GAAoB,GACnC,EAAO,EAAM,GACf,GAAQ,MACV,GAAK,aAAe,EAAoB,GACxC,EAAQ,KAAK,MAKf,OAAO,KAAK,GAAoB,OAAS,EAC3C,OAAO,KAAK,GAAoB,QAAQ,GAAO,CAC7C,GAAM,CAAC,GAAc,GAAoB,GACnC,EAAO,EAAM,GACf,GACF,GAAK,aAAe,EAAmB,GACvC,EAAO,KAAK,MAIhB,EAAS,EAGX,GAAI,GAAY,GACZ,EAAM,SAAW,MAAQ,EAAM,QAAQ,UAAY,MACrD,GAAY,EAAM,QAAQ,SAAS,OAAO,CAAC,EAAW,IACpD,GAAU,EAAK,UAAU,MAAQ,KAAK,YAAY,GAC3C,GACN,KAGL,GAAM,GACF,CAAC,MAAA,EAAO,OAAA,EAAQ,QAAA,EAAS,QAAA,EAAS,aAAA,EAAc,UAAA,EAAW,UAAA,GAE/D,MAAI,GAAU,OAAS,GACrB,GAAO,UAAY,GAGd,EAGD,oBAAoB,EAA8C,CACxE,MAAO,QAAO,KAAK,GAAW,IACzB,OAAgC,CAAC,EAAM,IACtC,GAAK,EAAQ,GAAM,MAAQ,EACpB,GACN,IAGD,QAAQ,EAAyB,CAGvC,GAAM,GACF,GAAgB,EAAK,KAAO,KAAK,UAAU,EAAK,KAAO,GACvD,EAAK,MAAQ,MACf,GAAK,KAAO,IAGd,GAAM,GAAgB,CACpB,KAAM,EAAK,KACX,GAAI,EAAK,GACT,SAAU,EAAO,SACjB,WACK,GAAK,OACL,IAAI,IAAI,GAAS,EAAM,WAAW,KAAO,EAAM,OAAO,GAAK,GAChE,OAAQ,GACR,SAAU,GACV,YAAa,GACb,WAAY,GACZ,SAAU,EAAK,MAGjB,MAAI,GAAO,QAAU,MACnB,GAAQ,YACJ,EAAO,OAAO,OACV,CAAC,EAAK,IACJ,GAAI,EAAM,MAAQ,CAChB,KAAM,EAAM,KACZ,gBAAiB,EAAM,MACvB,cAAe,EAAM,KAEhB,GAET,KAEN,EAAO,OAAS,MAClB,GAAQ,WACJ,EAAO,MAAM,OAAoC,CAAC,EAAK,IAAS,CAC9D,GAAM,GAAO,EAAM,KACf,EACJ,OAAQ,EAAM,UACP,SACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAE/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,WACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAE/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,SACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAChB,EAAM,cAAgB,GACvB,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,WACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,OACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,SACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,QACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,UACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,QACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,UACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,OACH,EAAQ,GACJ,EAAK,KAAM,EAAM,OAAQ,EAAM,cAC/B,IAAU,QAAa,CAAC,CAAC,EAAM,kBACjC,GAAQ,GACJ,EAAK,KAAM,EAAM,iBACjB,EAAM,eAEZ,UACG,aACA,UACH,cAEA,KAAM,IAAI,OACN,2BAA2B,EAAM,gBAAgB,EAAK,MAE9D,MAAA,GAAI,EAAM,MAAQ,CAAC,MAAA,EAAO,KAAA,GACnB,GACN,KAEF,EAID,YAAY,EAAoC,CACtD,GAAM,GAAU,EAAY,QACtB,EAAuB,GACvB,EAAkB,GACpB,EAA+B,GAC/B,GAAW,MACb,GAAQ,EAAQ,OAA8B,CAAC,EAAK,IAClD,GAAI,EAAK,MAAQ,KAAK,QAAQ,GAC1B,EAAK,KAAO,SACd,EAAQ,KAAK,EAAI,EAAK,OAEjB,GACN,KAEL,GAAM,GAAiB,GACjB,EAAkB,GAExB,EAAY,UAAU,SAAS,QAAQ,GAAM,CAC3C,GAAM,CAAC,GAAc,GAAoB,EAAI,MACvC,EAAa,CACjB,KAAM,EACN,GAAI,cACJ,OAAQ,GACR,WAAY,GACZ,SAAU,QACV,YAAa,GACb,WAAY,CAAC,MAAO,CAAC,MAAO,GAAgB,EAAI,MAAO,KAAM,UAC7D,SAAU,IAEZ,EAAK,aAAe,EAAI,KACxB,EAAO,KAAK,GACZ,EAAM,GAAY,IAGH,OAAO,KAAK,GACpB,QAAQ,GAAM,CACrB,GAAM,GAAO,EAAM,GACnB,EAAK,WAAW,QAAQ,GAAO,CAC7B,GAAM,CAAC,GAAc,GAAoB,GACzC,EAAK,OAAO,KAAK,EAAM,IACvB,EAAM,GAAU,SAAS,KAAK,OAIlC,GAAM,GAAgB,EAAY,IAElC,EAAY,UAAU,UAAU,QAAQ,GAAS,CAC/C,GAAM,CAAC,EAAU,GAAS,GAAoB,EAAc,EAAO,OAC7D,EAAO,EAAM,GACf,GAAQ,MACV,GAAK,cAAgB,EACrB,EAAQ,KAAK,MAIjB,GAAM,GAAY,KAAK,mBAAmB,GAC1C,MAAO,CAAC,MAAA,EAAO,OAAA,EAAQ,QAAA,EAAS,QAAA,EAAS,aAAA,EAAc,UAAA,GAGjD,mBAAmB,EAAoC,CAE7D,MAAO,CACL,WAAY,EAAY,UAAU,KAClC,OAAQ,EAAY,UAAU,SAAS,OACnC,CAAC,EAAK,IACJ,GAAI,EAAI,MAAQ,KAAK,mBAAmB,GACjC,GAET,IACJ,QAAS,EAAY,UAAU,UAAU,OACrC,CAAC,EAAK,IACJ,GAAI,EAAI,MAAQ,KAAK,mBAAmB,EAAK,EAAY,KAClD,GAET,KAIA,mBACJ,EACA,EAAiC,CACnC,GAAI,GAAO,EAAI,KACf,MAAI,IAAW,MACb,GAAO,EAAQ,IAEV,CAAC,KAAA,EAAM,MAAO,EAAI,QAIvB,aAAuB,EAAY,CACvC,GAAM,GAAS,IAAM,OACrB,GAAI,MAAO,GAAO,MAAS,YACzB,MAAO,GAAO,KAAK,GACd,GAAI,MAAO,SAAW,YAC3B,MAAO,IAAI,QAAO,EAAM,UAAU,WAElC,KAAM,IAAI,OACN,oFAKF,YAA2B,EAAc,EAAiB,CAC9D,GAAM,GACF,MAAM,QAAQ,GAAK,OAAO,aAAa,MAAM,KAAM,GAAK,IAAa,GACzE,MAAO,GAAW,EAAQ,EAAM,cAG5B,YACF,EAA+C,EAAc,EAC7D,EAAW,GAAK,CAClB,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,KACJ,GAAiB,EAAM,EAAG,GAE5B,EAGH,YACF,EAA+C,EAC/C,EAAY,CACd,GAAM,GAAQ,EAAM,GACpB,MAAO,GAAQ,EAAM,EAAI,EAGrB,YACF,EAA+C,EAC/C,EAAW,CACb,GAAM,GAAQ,EAAM,IAAS,GACvB,EACF,EAAM,GAAQ,KAAO,EAAM,EAAQ,EAAM,GAAQ,KAAO,EAAM,EAAO,EACzE,MAAQ,OAAO,IAAU,SAAY,EAAQ,SAAS,EAAO,IAGzD,YAA0B,EAAiC,CAK/D,OAJI,MAAQ,IAAW,UAErB,GAAmB,GAAS,IAEtB,OACU,IAAS,SACvB,MAAO,cACO,IAAS,aACT,IAAS,aACT,IAAS,YACT,IAAS,SACvB,MAAO,YACO,IAAS,QACvB,MAAO,WACO,IAAS,UACvB,MAAO,cACO,IAAS,UACvB,MAAO,iBAIP,MAAO,OAIP,YACF,EAA+C,EAC/C,EAAW,CACb,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,EAAM,KACV,EAAM,KAAK,KAEb,EAGH,YACF,EAA+C,EAC/C,EAAa,CACf,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,EAAM,KACV,GAAgB,EAAM,MAExB,EAGH,YACF,EAA+C,EAC/C,EAAe,CACjB,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,EAAM,MAAQ,EAAM,KAAK,KAC7B,EAAM,KAAK,KAAK,IAAI,GAAK,GAAgB,IAE3C,EAGH,YAAgC,EAA8B,CAElE,GAAI,CAAA,EAAM,YAGV,MAAI,GAAM,KAAO,KACR,EAAM,IAAI,IACb,GACK,MAAO,GAAI,MAAS,SAAY,EAAI,KAAO,SAAS,EAAI,KAAM,KAElE,GAGH,YACF,EAA+C,EAC/C,EAAc,CAChB,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,EAAM,MACV,GAAsB,EAAM,OAE9B,EAGH,YACF,EAA+C,EAC/C,EAAa,CACf,GAAM,GAAQ,EAAM,GACpB,MAAI,GACO,IAAM,KAAK,GAAK,EAAM,KAAK,EAAE,OAAS,EAAM,KAAK,EACX,EAAM,KAAK,IAClD,IACH,IAAI,GAAM,MAAO,IAAM,SAAY,EAAI,SAAS,EAAG,KAEnD,EAGH,YACF,EAA+C,EAAc,EAC7D,EAAW,GAAK,CAClB,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,EAAM,MAAQ,EAAM,KAAK,EAC7B,EAAM,KAAK,EAAE,IAAK,GAChB,GAAiB,EAAG,IAGxB,EAGH,YACF,EAA+C,EAC/C,EAAe,CACjB,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,EAAM,MAAQ,EAAM,KAAK,MAC7B,EAAM,KAAK,MAAM,IAAK,GACpB,GAAsB,IAG1B,EAGH,YACF,EAA+C,EAC/C,EAAc,CAChB,GAAM,GAAQ,EAAM,GACpB,MAAI,IAAS,EAAM,MAAQ,EAAM,KAAK,EAC7B,EAAM,KAAK,EAEb,EC3iBH,GAAA,KAAA,KAAoB,CAGxB,YACY,EAAoB,EACpB,EAAyB,CADzB,KAAA,KAAA,EAAoB,KAAA,UAAA,EACpB,KAAA,QAAA,EAJI,KAAA,OAAmB,GACnB,KAAA,MAAoC,GAIlD,KAAK,OAAS,EAAK,WAAW,IAAI,GAAQ,KAAK,SAAS,IACpD,EAAK,UAAY,MACnB,MAAK,MAAQ,OAAO,KAAK,EAAK,UACZ,OAAO,CAAC,EAAmC,IAC1C,GAAM,GAAO,KAAK,QAAQ,GACnB,GACN,KAQhB,SAAS,EAAY,CAC3B,MAAO,IAAU,EAAM,KAAK,UAAW,KAAK,SAOtC,QAAQ,EAAc,EAAwB,CACpD,GAAM,GAAQ,KAAK,KAAK,SAAS,GACjC,GAAI,EAAM,QAAU,KAClB,MAAO,IAAU,EAAM,KAAK,UAAW,KAAK,SAE9C,GAAI,EAAM,GAAK,MAAQ,EAAM,GAAK,KAChC,MAAO,IAAe,KAAK,KAAK,SAAU,EAAM,GAElD,GAAI,EAAM,GAAK,KACb,MAAO,IAAe,KAAK,KAAK,SAAU,EAAM,GAElD,GAAI,EAAM,GAAK,KACb,MAAO,IAAa,KAAK,KAAK,SAAU,EAAM,GAEhD,GAAI,EAAM,OAAS,KACjB,MAAO,IACH,KAAK,KAAK,SAAU,EAAM,GAEhC,GAAI,EAAM,MAAQ,KAChB,MAAO,IAAc,KAAK,KAAK,SAAU,EAAM,GAEjD,GAAI,EAAM,MAAQ,KAAM,CACtB,GAAI,EAAM,KAAK,GAAK,MAAQ,EAAM,KAAK,GAAK,KAC1C,MAAO,IACH,KAAK,KAAK,SAAU,EAAM,GAEhC,GAAI,EAAM,KAAK,GAAK,KAClB,MAAO,IACH,KAAK,KAAK,SAAU,EAAM,GAEhC,GAAI,EAAM,KAAK,OAAS,KACtB,MAAO,IACH,KAAK,KAAK,SAAU,EAAM,GAEhC,GAAI,EAAM,KAAK,GAAK,KAClB,MAAO,IACH,KAAK,KAAK,SAAU,EAAM,GAEhC,GAAI,EAAM,KAAK,MAAQ,KACrB,MAAO,IACH,KAAK,KAAK,SAAU,EAAM,GAIlC,MAAO,KCzEE,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,cACA,YACA,MACH,MAAO,CAAO,GACT,EAAc,IAAK,EAAM,EAAW,GACrC,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,UAAW,EAAM,EAAW,SAE3C,eACA,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SACrC,MACH,MAAO,CAAO,EACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SACrC,cACA,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,WACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,WACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,UACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,UACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,oBACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,aAGxC,KAAM,WAAU,aAAa,EAAK,2BClE/B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,UACA,aACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,UACH,MAAO,CAAO,GACV,EAAc,OAAQ,EAAM,EAAW,GACvC,EAAc,OAAQ,EAAM,EAAW,SACxC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,aACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,UACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,WACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,SACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,cACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,eAAgB,EAAM,EAAW,GAC/C,EAAc,eAAgB,EAAM,EAAW,SAEhD,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SACrC,QACH,MAAO,CAAO,GACV,GAAU,EAAK,WAAW,GAAI,EAAW,SAC1C,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,OAAQ,EAAM,EAAW,SACxC,YACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,QAAS,EAAM,EAAW,SACzC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,QAAS,EAAM,EAAW,aAE5C,KAAM,WAAU,aAAa,EAAK,2BC/ItC,YACF,EAAyB,EACzB,EAAqB,GAAE,CAEzB,GAAI,CAAA,OAAO,IAAW,UAAY,MAAO,IAAW,UAGpD,CAAA,EAAK,OACD,EAAO,SAAW,EAAO,OACzB,IAAM,EAAqB,WAAW,SAAc,gBACxD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IAAK,CACtC,GAAM,GAAO,EAAO,GACd,EAAO,EAAO,GACpB,EAAK,OACD,EAAO,GAAK,EAAO,GAAK,IAAS,EACjC,IACI,EAAqB,WAAW,SAAc,kBAIpD,YAA2B,EAA6B,CAC5D,MAAI,CAAA,OAAO,IAAiB,UAAY,EAAa,KAAK,GAAO,EAAM,IAYnE,YACF,EAAmC,EACnC,EAA6B,CAC/B,GAAI,GAAe,GAAkB,EAAkB,GACjD,EAAsB,CAAC,GAAiB,GAC9C,GAAI,GAAuB,EAAQ,SAAW,EAC5C,KAAM,IAAI,OACN,qFACyC,KAO/C,GALI,GACF,EAAQ,QAAQ,GAAS,CACvB,EAAe,GAAkB,EAAO,MAAO,KAG/C,CAAC,GAAiB,GACpB,KAAM,IAAI,OAAM,mCAAmC,KAErD,MAAO,GAGH,YACF,EAAgC,EAA8B,CAEhE,GAAI,MAAO,IAAkB,SAC3B,MAAO,GAET,GAAI,MAAO,IAAkB,SAC3B,MAAO,GAGT,GAAI,EAAc,SAAW,EAAc,OACzC,KAAM,IAAI,OAAM,oCAAoC,SAChD,KAGN,GAAM,GAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAc,OAAQ,EAAE,EAAG,CAC7C,GAAM,GAAO,EAAc,GACrB,EAAO,EAAc,GAC3B,GAAI,GAAQ,GAAK,GAAQ,GAAK,IAAS,EACrC,KAAM,IAAI,OAAM,oCAAoC,SAChD,KAEN,EAAO,GAAK,GAAQ,EAAI,EAAO,EAEjC,MAAO,GChFH,GAAA,KAAA,KAAkB,CAItB,YACa,EAAuB,EAAyB,EACjD,EAAiC,EAChC,EAA+B,EAAuB,CAFtD,KAAA,KAAA,EAAuB,KAAA,MAAA,EAAyB,KAAA,QAAA,EACjD,KAAA,aAAA,EAAiC,KAAA,uBAAA,EAChC,KAAA,YAAA,EAA+B,KAAA,eAAA,EANpC,KAAA,QAA6B,GAC7B,KAAA,QAAU,GAMhB,KAAK,SAAW,GAAO,GACvB,GAAK,KAAK,aAGR,KAAE,CACJ,MAAO,MAAK,SAAS,MAGnB,SAAM,CACR,MAAO,MAAK,QAMd,cAAc,EAAqB,CACjC,KAAK,QAAQ,QAAQ,GAAS,CACxB,AAAA,IAAW,MAAQ,CAAC,EAAQ,IAAI,EAAO,OAAO,MAChD,EAAO,OAAO,YAGlB,KAAK,QAAU,GACf,KAAK,QAAU,GACf,KAAK,SAAS,UAGhB,MAAI,CACF,MAAO,MAAK,QAAQ,OAOtB,KAAK,EAAa,CAChB,GAAI,KAAK,QACP,KAAM,IAAI,OAAM,eAAe,KAAK,iCAGtC,GAAI,EAAQ,GAAK,GAAS,KAAK,OAC7B,KAAM,IAAI,OAAM,4BAA4B,yBACxC,KAAK,UAGX,GAAM,GAAkB,KAAK,QAAQ,GACrC,GAAI,EAAgB,QAClB,KAAM,IAAI,OACN,eAAe,KAAK,8BAChB,yGAIV,MAAI,MAAK,gBACP,GAAgB,QAAU,IAG5B,EAAgB,KAAO,GAChB,EAAgB,OAMzB,SAAS,EAAiB,CACxB,MAAO,GAAQ,IAAI,GAAS,KAAK,KAAK,IAQxC,MAAM,EAAe,EAAc,CACjC,GAAI,KAAK,QACP,KAAM,IAAI,OAAM,eAAe,KAAK,iCAGtC,GAAI,EAAQ,GAAK,CAAC,KAAK,aAAe,GAAS,KAAK,QAClD,KAAM,IAAI,OAAM,2BACZ,+CAAmD,KAAK,WAG9D,GAAM,GAAI,KAAK,QAAQ,IAAU,GAEjC,GAAI,EAAO,QAAU,KAAK,MACxB,KAAM,IAAI,OAAM,eACZ,KAAK,8CAA8C;uCAEnD,EAAO,mCAAmC,KAAK,UAcrD,GAVI,KAAK,SAAW,GACf,MAAK,cAAgB,MAAQ,KAAK,aAAa,SAAW,IAC7D,MAAK,aAAe,EAAO,OAG7B,GACI,KAAK,aAAc,EAAO,MAC1B,eAAe,KAAK,8CAChB,MAEJ,EAAE,KACJ,KAAM,IAAI,OACN,eAAe,KAAK,8CAChB,wCAGV,GAAI,EAAE,QACJ,KAAM,IAAI,OACN,eAAe,KAAK,8CAChB,2CAGV,EAAE,OAAS,EACX,GAAK,GACL,EAAE,QAAU,GAEZ,KAAK,QAAQ,GAAS,EAMxB,UAAU,EAAmB,EAAiB,CAC5C,GAAI,EAAQ,SAAW,EAAQ,OAC7B,KAAM,IAAI,OACN,eAAe,KAAK,kEAEhB,EAAQ,2CACR,EAAQ,WAGlB,EAAQ,QAAQ,CAAC,EAAG,IAAU,KAAK,MAAM,EAAG,EAAQ,KAWtD,OAAO,EAAoB,EAAgB,CACzC,GAAI,CAAC,CAAC,GAAS,IAAU,KAAK,MAC5B,KAAM,IAAI,OAAM,wBACZ,KAAK,oCAAoC,KAG/C,GAAK,EAMH,EAAU,EAAQ,MAAM,EAAG,KAAK,YANpB,CACZ,EAAU,GACV,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,IAC/B,EAAQ,KAAK,GAMjB,GAAI,EAAQ,SAAW,EACrB,MAAO,IAAO,GAAI,CAAC,GAAG,OAAO,KAAK,eAKpC,GAAM,GAAU,KAAK,SAAS,GAE9B,MAAA,IACI,KAAK,aAAc,EAAQ,GAAG,MAAO,gCAElC,GAAM,EAAS,GAMxB,OAAO,EAAgB,CACrB,GAAI,CAAC,CAAC,GAAS,IAAU,KAAK,MAC5B,KAAM,IAAI,OAAM,wBACZ,KAAK,oCAAoC,KAG/C,GAAI,KAAK,SAAW,EAClB,MAAO,IAAO,GAAI,CAAC,GAAG,OAAO,KAAK,eAGpC,GAAM,GAAU,GAChB,OAAS,GAAI,EAAG,EAAI,KAAK,OAAQ,IAC/B,EAAQ,KAAK,GAGf,GAAM,GAAU,KAAK,SAAS,GAE9B,MAAA,IACI,KAAK,aAAc,EAAQ,GAAG,MAC9B,mDACI,KAAK,wCAAwC,EAAQ,GAAG,UAEzD,GAAO,EAAS,GASzB,QAAQ,EAAmB,EAAc,CACvC,GAAI,EAAO,QAAU,KAAK,MACxB,KAAM,IAAI,OAAM,wBACZ,KAAK,8BAA8B,EAAO,SAGhD,GAAI,EAAQ,SAAW,EAAO,MAAM,GAClC,KAAM,IAAI,OAAM,sDACZ,EAAQ,cAAc,EAAO,MAAM,MAGzC,GAAM,GAAW,KAAK,IAAI,GAAG,GAE7B,GAAI,CAAC,KAAK,aAAe,GAAY,KAAK,QACxC,KAAM,IAAI,OACN,mCAAmC,UAAiB,KAAK,YAG/D,KAAK,UAAU,EAAS,GAAQ,EAAQ,IAS1C,MAAM,EAAkB,EAAc,CACpC,GAAI,EAAO,QAAU,KAAK,MACxB,KAAM,IAAI,OAAM,wBACZ,KAAK,8BAA8B,EAAO,SAEhD,GAAI,GAAc,EACZ,EAAoB,EAAO,IAAI,GACnC,IAAe,EACR,IAGT,GAAI,IAAgB,EAAO,MAAM,GAC/B,KAAM,IAAI,OAAM;;UAEZ,6BAAuC,EAAO,SAGpD,GAAI,CAAC,KAAK,aAAe,EAAO,SAAW,KAAK,QAC9C,KAAM,IAAI,OACN,2DACI,KAAK,eAAe,EAAO,wEAIrC,GAAM,GAAgB,IAAgB,EAAI,EAAI,EAAO,KAAO,EACtD,EAAoB,GAC1B,EAAK,IAAK,CACR,EAAS,EAAQ,EAAQ,CAAC,EAAG,EAAa,IAC1C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAkB,IAAM,EAAK,EAAI,EAAkB,EAAI,GACvD,EAAU,CAAC,EAAG,EAAgB,GAC9B,EAAQ,CAAC,EAAG,EAAO,GAAI,GAC7B,EAAQ,GAAK,EAAQ,GAAM,EAAQ,EAAS,GAAQ,KAAK,cAE3D,MAAO,KAET,GAAM,GAAU,GAChB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAQ,GAAK,EAEf,KAAK,UAAU,EAAS,KCrRtB,GAAA,KAAiB,CAgBrB,YACa,EAA4B,EAC5B,EAAwB,EAAiB,GAAE,CAD3C,KAAA,QAAA,EAA4B,KAAA,aAAA,EAC5B,KAAA,aAAA,EACP,GAAW,MACb,EAAQ,QAAQ,GAAS,CACvB,GAAI,IAAiB,EAAO,MAC1B,KAAM,IAAI,OAAM,mCACZ,wBAAmC,EAAO,SAEhD,GACI,EAAc,EAAO,MAAO,+BAEhC,GAAK,KAGT,KAAK,SAAW,GAAO,GACvB,KAAK,eAAiB,EACtB,GAAK,KAAK,aA7BR,KAAE,CACJ,MAAO,MAAK,SAAS,GAkCvB,MAAI,CACF,MAAO,IAAI,IACP,CAAC,GAAG,KAAK,SAAU,KAAK,aAAc,KAAK,cAMjD,cAAc,EAAqB,CACjC,KAAK,QAAQ,QAAQ,GAAS,CACxB,AAAA,IAAW,MAAQ,CAAC,EAAQ,IAAI,EAAO,MACzC,EAAO,YAGX,KAAK,QAAQ,OAAS,EACtB,KAAK,SAAS,UAKhB,MAAI,CACF,MAAO,MAAK,QAAQ,OAUtB,MAAM,EAAwB,EAAwB,EAAc,GAAE,CAEpE,GAAI,IAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,wBAAmC,KAAK,gBAE9C,GAAI,IAAgB,IAAM,KAAK,QAAQ,SAAW,EAChD,KAAM,IAAI,OAAM,kCACZ,kCACA,KAAK,QAAQ,oBAEnB,GACI,EAAc,KAAK,aAAc,+BACrC,GAAM,GACF,GAAkB,KAAK,aAAc,KAAK,QAAS,GACvD,MAAO,GAAK,IAAK,CACf,GAAM,GACF,KAAK,QAAQ,IAAI,GAAU,EAAQ,EAAQ,IAC/C,MAAO,IAAM,EAAiB,KASlC,QAAQ,EAAwB,EAAsB,CACpD,GAAI,IAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,wBAAmC,KAAK,gBAG9C,GAAI,KAAK,SAAW,EAClB,KAAM,IAAI,OAAM,qCAElB,GAAM,GACF,GAAkB,KAAK,aAAc,KAAK,QAAS,GACjD,EAAS,KAAK,QAAQ,MAE5B,MAAA,IACI,EAAO,MAAO,EAAc,+BAEzB,EAAQ,EAAQ,GAOzB,SAAS,EAAc,CACrB,GAAI,EAAO,QAAU,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,EAAO,4BAA4B,KAAK,gBAM9C,GAHA,GACI,EAAO,MAAO,KAAK,aAAc,+BAEjC,KAAK,iBAAmB,KAAK,OAC/B,KAAM,IAAI,OAAM,4CAElB,GAAK,GACL,KAAK,QAAQ,KAAK,GAOpB,OAAO,EAAY,CACjB,GAAI,EAAO,EACT,KAAM,IAAI,OACN,0DAA0D,KAGhE,GAAI,KAAK,iBAAmB,IAAM,EAAO,KAAK,eAC5C,KAAM,IAAI,OAAM,+BACZ,8BAAiC,KAAK,mBAE5C,KAAK,QAAQ,OAAS,EASxB,QAAQ,EAAsB,EAAwB,EAAsB,CAE1E,GAAI,IAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,wBAAmC,KAAK,gBAE9C,GAAI,EAAe,GAAK,EAAe,KAAK,QAAQ,OAClD,KAAM,IAAI,OAAM,4BACZ,oBAA+B,KAAK,QAAQ,oBAGlD,GAAI,KAAK,QAAQ,IAAiB,KAChC,KAAM,IAAI,OAAM,oBAAoB,cAGtC,GACI,KAAK,QAAQ,GAAc,MAAO,EAClC,+BACJ,GAAM,GACF,GAAkB,KAAK,aAAc,KAAK,QAAS,GACvD,MAAO,GAAQ,KAAK,QAAQ,GAAe,GAQ7C,QAAQ,EAAsB,EAAc,CAC1C,GAAI,EAAO,QAAU,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,EAAO,4BAA4B,KAAK,gBAG9C,GAAI,EAAe,GACf,KAAK,iBAAmB,IAAM,GAAgB,KAAK,eACrD,KAAM,IAAI,OAAM,yBACZ,wBAAmC,KAAK,4BAG9C,GACI,KAAK,aAAc,EAAO,MAAO,+BACrC,GAAK,GACL,KAAK,QAAQ,GAAgB,EAU/B,OAAO,EAAmB,EAAwB,EAAsB,CAEtE,GAAI,IAAiB,KAAK,aACxB,KAAM,IAAI,OAAM,mCACZ,wBAAmC,KAAK,gBAG9C,GACI,KAAK,aAAc,EAAc,+BAIrC,EAAU,EAAQ,MAAM,EAAG,KAAK,QAChC,GAAM,GACF,GAAkB,KAAK,aAAc,KAAK,QAAS,GACvD,MAAI,GAAQ,SAAW,EACd,GAAO,GAAI,CAAC,GAAG,OAAO,IAGxB,EAAK,IAAK,CACf,GAAM,GACF,EAAQ,IAAI,GAAK,EAAQ,KAAK,QAAQ,GAAI,IAC9C,MAAO,IAAM,EAAS,KAS1B,OAAO,EAAwB,EAAsB,CACnD,GAAI,CAAC,CAAC,GAAgB,IAAiB,KAAK,aAC1C,KAAM,IAAI,OAAM,uBACZ,KAAK,2CAA2C,KAGtD,GACI,KAAK,aAAc,EAAc,+BACrC,GAAM,GACF,GAAkB,KAAK,aAAc,KAAK,QAAS,GAEvD,MAAI,MAAK,SAAW,EACX,GAAO,GAAI,CAAC,GAAG,OAAO,IAExB,EAAK,IAAK,CACf,GAAM,GAAU,KAAK,QAAQ,IAAI,GAAK,EAAQ,EAAG,IACjD,MAAO,IAAO,EAAS,OAUvB,aACF,EAAgB,EAAwB,EAAsB,CAChE,GAAM,GAAQ,EAAO,MACrB,GAAI,EAAO,MAAM,OAAS,EACxB,KAAM,IAAI,OACN,oDAAoD,EAAO,SAEjE,GAAI,EAAO,QAAU,EACnB,KAAM,IAAI,OAAM,mCACZ,EAAO,4BAA4B,KAEzC,GAAM,GAAqB,EAAO,MAAM,MAAM,GAC9C,GACI,EAAoB,EAAc,+BACtC,GAAM,GAAuB,GAAQ,GACrC,MAAO,IAAI,IAAW,EAAY,EAAc,GAS5C,aACF,EAAwB,EAAwB,EAAmB,CACrE,MAAO,IAAI,IAAW,GAAI,EAAc,EAAc,GAUlD,aACF,EAAgB,EAAmB,EACnC,EAAoB,CACtB,GAAI,EAAQ,SAAW,EAAO,MAAM,GAClC,KAAM,IAAI,OAAM,sDACZ,EAAQ,cAAc,EAAO,MAAM,MAGzC,GAAM,GAAW,KAAK,IAAI,GAAG,GAE7B,GAAI,GAAe,MAAQ,IAAgB,IAAM,GAAY,EAC3D,KAAM,IAAI,OACN,mCAAmC,UAAiB,MAG1D,GAAM,GAAO,GAAI,IAAW,GAAI,EAAc,EAAO,MAAO,GACtD,EAAU,GAAQ,EAAQ,GAChC,MAAA,GAAQ,QAAQ,CAAC,EAAO,IAAS,CAC/B,EAAK,QAAQ,EAAO,EAAQ,MAEvB,EAUH,aACF,EAAgB,EAAkB,EAAsB,CAC1D,GAAI,GAAc,EACZ,EAAoB,EAAO,IAAI,GACnC,IAAe,EACR,IAGT,GAAI,IAAgB,EAAO,MAAM,GAC/B,KAAM,IAAI,OAAM;;UAEV,6BAAuC,EAAO,SAGtD,GAAM,GAAuB,EAAO,MAAM,MAAM,GAC1C,EACF,GAAkB,EAAsB,GACtC,EAAgB,IAAgB,EAAI,EAAI,EAAO,KAAO,EACtD,EAAoB,EAAK,IAAK,CAClC,GAAM,GAAU,GAChB,EAAS,EAAQ,EAAQ,CAAC,EAAG,EAAa,IAC1C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAkB,IAAM,EAAK,EAAI,EAAkB,EAAI,GACvD,EAAU,CAAC,EAAG,EAAgB,GAC9B,EAAQ,CAAC,EAAG,EAAO,GAAI,GAC7B,EAAQ,GAAK,EACT,GAAM,EAAQ,EAAS,GAAQ,GAErC,MAAA,GAAO,UACA,IAGH,EAAO,GAAI,IAAW,GAAI,EAAc,EAAO,MAAO,EAAO,QAEnE,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAClC,EAAK,QAAQ,EAAG,EAAQ,IAE1B,MAAO,GC7XF,GAAM,KAAqC,MAC9C,EAAY,EACZ,IAAgD,CAClD,OAAQ,EAAK,QACN,SACA,cAAe,CAClB,GAAM,GACF,EAAc,aAAc,EAAM,EAAW,GAC3C,EACF,EAAc,aAAc,EAAM,EAAW,GAC3C,EAAO,EAAc,OAAQ,EAAM,EAAW,GAC9C,EAAO,EAAc,OAAQ,EAAM,EAAW,GAEpD,MADkB,MAAM,GAAK,QACf,GACL,EAAQ,YAAY,GAAU,qBACjC,EAAM,EAAQ,eAAgB,EAAQ,eAEnC,EAAQ,YAAY,GAAU,qBACjC,EAAM,EAAQ,eAAgB,EAAQ,mBAGzC,YACA,iBAAkB,CACrB,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EAAO,EAAc,OAAQ,EAAM,EAAW,GAG9C,EACD,KAAM,GAAQ,YAAY,GAAU,qBACjC,EAAM,EAAQ,eAAgB,EAAQ,eACxC,EAAS,EAAK,IAAI,GAAU,EAAO,IACrC,EAAY,KAAM,GAAW,GAAG,OAEpC,EAAW,QAAQ,GAAS,CACtB,CAAC,EAAO,MAAQ,EAAO,QAAQ,EAAO,MAAQ,IAChD,EAAO,YAIX,GAAI,GAAmB,EAEvB,KAAO,EAAU,IAAI,CAEnB,GAAM,GAAa,EAEnB,EAAS,KAAM,GAAQ,YAAY,GAAU,qBACzC,EAAQ,EAAQ,eAAgB,EAAQ,eAC5C,GAAM,GAAY,EAAO,IAAI,GAAU,EAAO,IAI9C,EAAW,QAAQ,GAAS,CACtB,CAAC,EAAO,MAAQ,EAAO,QAAQ,EAAO,MAAQ,IAC9C,EAAU,QAAQ,EAAO,MAAQ,IACnC,EAAO,YAKX,GAAM,GACD,KAAM,GAAQ,YAAY,GAAU,qBACjC,EAAQ,EAAQ,eAAgB,EAAQ,eAChD,EAAY,KAAM,GAAW,GAAG,OAEhC,EAAW,QAAQ,GAAS,CACtB,CAAC,EAAO,MAAQ,EAAO,QAAQ,EAAO,MAAQ,IAC9C,EAAU,QAAQ,EAAO,MAAQ,IACnC,EAAO,YAIb,MAAO,OAEJ,WAAY,CACf,GAAM,GAAO,EAAc,OAAQ,EAAM,EAAW,GACpD,MAAO,CAAC,GAAY,QAEjB,SAAU,CACb,GAAM,GAAO,EAAc,OAAQ,EAAM,EAAW,GAChD,EAAO,EAAc,OAAQ,EAAM,EAAW,GAClD,MAAK,GAAK,MACR,GAAO,GAAY,IAGb,MAAM,GAAK,QAAQ,GAAK,CAAC,OAAW,GAAQ,CAAC,EAAM,YAExD,QAAS,CACZ,GAAM,GAAY,EAAK,WAAW,KAC9B,GAAQ,GAAU,EAAM,EAAW,KAAa,QACpD,GAAI,EAAW,CACb,GAAM,GAAO,GAAU,EAAW,EAAW,GAC7C,MAAO,CAAC,GAAY,IAEtB,WAEG,QAAS,CACZ,GAAM,GACF,EAAc,YAAa,EAAM,EAAW,GAC1C,EAAO,EAAc,SAAU,EAAM,EAAW,GACtD,MAAA,GAAQ,WAAW,GACZ,CAAC,GAAY,QAEjB,OAAQ,CACX,GAAM,GAAO,EAAc,SAAU,EAAM,EAAW,GACtD,MAAA,GAAQ,YACD,CAAC,GAAY,QAEjB,gBAAiB,CACpB,GAAM,GAAO,EAAc,SAAU,EAAM,EAAW,GACtD,MAAA,GAAQ,gBACD,CAAC,GAAY,QAEjB,gBAAiB,CACpB,GAAM,GAAO,EAAc,OAAQ,EAAM,EAAW,GAC9C,EACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,cAAe,EAAM,EAAW,GAC5C,EACF,EAAc,iBAAkB,EAAM,EAAW,GAC/C,EACF,EAAc,yBAA0B,EAAM,EAAW,GAEvD,EAAO,EAAc,OAAQ,EAAM,EAAW,GAC9C,EAAc,GAAI,KACpB,EAAM,EAAO,EAAM,EAAc,EAAwB,EACzD,GACJ,MAAA,GAAQ,eAAe,GAChB,CAAC,EAAY,SAAU,GAAO,QAElC,qBAAsB,CACzB,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EAAQ,EAAc,QAAS,EAAM,EAAW,GAChD,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EAAmB,EAAQ,eAAe,EAAG,IACnD,MAAA,GAAiB,MAAM,EAAO,GACvB,CAAC,EAAiB,cAEtB,oBAAqB,CACxB,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EACF,EAAc,QAAS,EAAM,EAAW,GAE5C,MAAO,CADiB,EAAQ,eAAe,EAAO,IAC9B,KAAK,QAE1B,sBAAuB,CAC1B,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,QAAS,EAAM,EAAW,GAE5C,MAAO,CADmB,EAAQ,eAAe,EAAS,IAChC,OAAO,EAAe,QAE7C,uBAAwB,CAC3B,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EAAqB,EAAQ,eAAe,EAAU,IAC5D,MAAA,GAAmB,QAAQ,EAAgB,GACpC,CAAC,EAAmB,cAExB,sBAAuB,CAC1B,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EAAoB,EAAQ,eAAe,EAAS,IACpD,EACF,EAAc,QAAS,EAAM,EAAW,GAC5C,MAAO,CAAC,EAAkB,OAAO,QAE9B,qBAAsB,CACzB,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAmB,EAAQ,eAAe,EAAQ,IACxD,MAAA,GAAiB,MAAM,EAAS,GACzB,CAAC,EAAiB,cAEtB,oBAAqB,CACxB,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EAAkB,EAAQ,eAAe,EAAO,IACtD,MAAO,CAAC,GAAO,EAAgB,OAAQ,cAEpC,qBAAsB,CACzB,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EAAmB,EAAQ,eAAe,EAAQ,IACxD,MAAA,GAAiB,gBACV,CAAC,EAAiB,cAEtB,oBAAqB,CACxB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EAAQ,EAAc,QAAS,EAAM,EAAW,GAChD,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EAAa,EAAQ,cAAc,EAAS,IAClD,MAAA,GAAW,QAAQ,EAAO,GACnB,CAAC,EAAW,cAEhB,oBAAqB,CACxB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,eAAgB,EAAM,EAAW,GAE7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAEnD,MAAO,CADY,EAAQ,cAAc,EAAS,IAC/B,QAAQ,EAAW,EAAc,QAEjD,0BACA,oBAAqB,CACxB,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,cAAe,EAAM,EAAW,GAC5C,EACF,IAAQ,EAAe,EAAgB,EAAc,GACzD,MAAA,GAAQ,cAAc,GACf,CAAC,EAAW,cAEhB,wBACA,kBAAmB,CACtB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAC/C,EAEA,EAAK,KAAO,oBACd,EAAmB,cAEnB,EAAmB,iBAGrB,GAAM,GACF,EAAc,EAAkB,EAAM,EAAW,GAE/C,EAAa,IAAQ,EAAc,EAAc,GACvD,MAAA,GAAQ,cAAc,GACf,CAAC,EAAW,cAEhB,mBAAoB,CACvB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAEnD,MAAO,CADY,EAAQ,cAAc,EAAS,IAC/B,OAAO,EAAe,EAAc,QAEpD,kBAAmB,CACtB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,cAAe,EAAM,EAAW,GAElD,MAAO,CADY,EAAQ,cAAc,EAAS,IAC/B,MAAM,EAAc,EAAc,QAElD,uBAAwB,CAC3B,GAAM,GACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EAAa,IAAW,EAAQ,EAAc,GACpD,MAAA,GAAQ,cAAc,GACf,CAAC,EAAW,cAEhB,mBAAoB,CACvB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EAAa,EAAQ,cAAc,EAAS,IAC5C,EACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,eAAgB,EAAM,EAAW,GACnD,MAAO,CAAC,EAAW,OAAO,EAAa,QAEpC,qBAAsB,CACzB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EAAa,EAAQ,cAAc,EAAS,IAClD,MAAA,GAAW,SAAS,GACb,CAAC,EAAW,cAEhB,oBAAqB,CACxB,GAAM,GACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GAEnD,MAAO,CADY,EAAQ,cAAc,EAAS,IAC/B,QAAQ,EAAc,QAEtC,kBAAmB,CACtB,GAAM,GACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,UAAW,EAAM,EAAW,GAExC,EAAa,IAAM,EAAa,EAAS,GAC/C,MAAA,GAAQ,cAAc,GACf,CAAC,EAAW,kBAGnB,KAAM,WAAU,aAAa,EAAK,2BCtVxC,YACI,EAAY,EAA4B,EAAyB,CACnE,GAAM,CAAC,EAAS,GACX,EAAc,WAAY,EAAM,EAAW,GAE1C,EAAY,IAAY,UACxB,EAAU,IAAmB,QAC7B,EAAc,IAAY,iBAE1B,EACD,EAAc,UAAW,EAAM,EAAW,GAC/C,GAAI,EAAW,CACb,GAAI,GAAW,IAAY,EACzB,KAAM,IAAI,OACN,yGAGN,GAAI,CAAC,GAAW,IAAY,EAC1B,KAAM,IAAI,OACN,oFAIR,GAAI,EACF,KAAM,IAAI,OACN,yEAEN,GAAM,GAAS,EAAc,UAAW,EAAM,EAAW,GACnD,EAAM,GAAW,EAAM,EAAW,GAClC,EACD,EAAc,aAAc,EAAM,EAAW,GACzC,cACH,EACF,EAAc,YAAa,EAAM,EAAW,GAC1C,CAAC,EAAS,GACZ,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,iBAAkB,EAAM,EAAW,GAErD,MAAO,CACL,OAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,QAAA,EACA,SAAA,EACA,eAAA,EACA,eAAA,GAIG,GAAM,KACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,SAAU,CACb,GAAM,GACF,EAAc,SAAU,EAAM,EAAW,GACvC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACD,EAAc,aAAc,EAAM,EAAW,GACzC,cACH,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,SAAU,EAAM,EAAW,GACzC,EAAQ,EAAyB,EACjC,QAED,SAAU,CACb,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,GAAW,EAAM,EAAW,GAClC,EACD,EAAc,aAAc,EAAM,EAAW,GACzC,cACH,EACF,EAAc,YAAa,EAAM,EAAW,GAChD,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAEpC,EAAc,SAAU,EAAM,EAAW,GACzC,CAAC,EAAO,GAAI,EAAO,IAAK,EACxB,EAA+B,CAAC,EAAU,GAAI,EAAU,UAEzD,eAAgB,CACnB,GAAM,CACJ,OAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,QAAA,EACA,SAAA,EACA,eAAA,EACA,eAAA,GACE,GAA4B,EAAM,EAAW,GAEjD,MAAO,CAAO,GAAM,OAAO,CACzB,EAAG,EAAc,IAAK,EAAM,EAAW,GAEvC,OAAQ,EAAc,SAAU,EAAM,EAAW,GAEjD,QAAS,CAAC,EAAO,GAAI,EAAO,IAC5B,IAAK,EACL,WAAY,EACZ,UAAW,CAAC,EAAU,GAAI,EAAU,IACpC,KAAM,EACN,WAAY,EACZ,uBAAwB,EACxB,eAAA,SAIC,6BAA8B,CACjC,GAAM,CACJ,OAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,QAAA,EACA,SAAA,EACA,eAAA,EACA,eAAA,GACE,GAA4B,EAAM,EAAW,GAEjD,MAAO,CAAO,GAAM,gBAAgB,CAClC,EAAG,EAAc,IAAK,EAAM,EAAW,GAEvC,OAAQ,EAAc,SAAU,EAAM,EAAW,GAEjD,QAAS,CAAC,EAAO,GAAI,EAAO,IAC5B,IAAK,EACL,WAAY,EACZ,UAAW,CAAC,EAAU,GAAI,EAAU,IACpC,KAAM,EACN,WAAY,EACZ,uBAAwB,EACxB,eAAA,SAGC,0BACA,kBAAmB,CACtB,GAAM,GAAQ,EACI,cAAe,EAAM,EACrB,GAEZ,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,GAAW,EAAM,EAAW,GACxC,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAEpC,EAAc,SAAU,EAAM,EAAW,GACzC,EAAO,CAAC,EAAO,GAAI,EAAO,IAAK,QAEhC,4BACA,kBAAmB,CACtB,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,GAAW,EAAM,EAAW,GAClC,EACF,EAAc,YAAa,EAAM,EAAW,GAC1C,EACD,EAAc,aAAc,EAAM,EAAW,GACzC,cAET,MAAO,CAAO,GACV,EAAc,QAAS,EAAM,EAAW,GAExC,EAAc,SAAU,EAAM,EAAW,GACzC,CAAC,EAAO,GAAI,EAAO,IAAK,EACxB,EAA+B,CAAC,EAAU,GAAI,EAAU,UAEzD,SAAU,CACb,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACD,EAAc,aAAc,EAAM,EAAW,GACzC,cACH,EACF,EAAc,YAAa,EAAM,EAAW,GAChD,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAEpC,EAAc,SAAU,EAAM,EAAW,GAEzC,CAAC,EAAO,GAAI,EAAO,GAAI,EAAO,IAAK,EACnC,EACA,CAAC,EAAU,GAAI,EAAU,GAAI,EAAU,UAExC,UAAW,CACd,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACF,EAAc,aAAc,EAAM,EAAW,GAEjD,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAEpC,CAAC,EAAW,GAAI,EAAW,IAAK,CAAC,EAAO,GAAI,EAAO,IACnD,QAED,UAAW,CACd,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACF,EAAc,aAAc,EAAM,EAAW,GAEjD,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAEpC,CAAC,EAAW,GAAI,EAAW,IAAK,CAAC,EAAO,GAAI,EAAO,IACnD,QAED,oBAAqB,CACxB,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACF,EAAc,aAAc,EAAM,EAAW,GAC3C,EACF,EAAc,sBAAuB,EAAM,EAAW,GAEpD,CAAC,OAAA,EAAQ,QAAA,GAAiB,GAC5B,EAAc,IAAK,EAAM,EAAW,GACpC,CAAC,EAAW,GAAI,EAAW,IAAK,CAAC,EAAO,GAAI,EAAO,IACnD,EAAyB,GAC7B,MAAO,CAAC,EAAQ,OAEb,YAAa,CAChB,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACF,EAAc,aAAc,EAAM,EAAW,GAEjD,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,CAAC,EAAW,GAAI,EAAW,GAAI,EAAW,IAC1C,CAAC,EAAO,GAAI,EAAO,GAAI,EAAO,IAAK,QAGpC,YAAa,CAChB,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACF,EAAc,aAAc,EAAM,EAAW,GAEjD,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,CAAC,EAAW,GAAI,EAAW,GAAI,EAAW,IAC1C,CAAC,EAAO,GAAI,EAAO,GAAI,EAAO,IAAK,QAGpC,aAAc,CACjB,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EAAM,EAAc,MAAO,EAAM,EAAW,GAC5C,EACF,EAAc,YAAa,EAAM,EAAW,GAG1C,EAAe,EAAQ,GACvB,EAAc,EAAQ,GAGtB,EAAiB,EAAU,GAC3B,EAAgB,EAAU,GAEhC,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAEpC,EAAc,SAAU,EAAM,EAAW,GACzC,CAAC,EAAc,GAAc,EAC7B,CAAC,EAAgB,GAAgB,iBAIrC,KAAM,WAAU,aAAa,EAAK,2BC3R/B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,OAAQ,CACX,GAAM,GACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,QAAS,EAAM,EAAW,GAC5C,MAAO,CAAO,GAAK,EAAO,EAAO,QAE9B,WAAY,CACf,GAAM,GACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EAAM,EAAc,MAAO,EAAM,EAAW,GAClD,MAAO,CAAO,GAAS,EAAO,EAAM,QAEjC,cAAe,CAClB,GAAM,GACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,aAAc,EAAM,EAAW,GAC3C,EACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GAAY,EAAQ,EAAY,QAE3C,SAAU,CACb,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GAAO,EAAS,EAAO,EAAS,QAE3C,OACH,MAAO,CAAO,GACV,EAAc,QAAS,EAAM,EAAW,GACxC,EAAc,QAAS,EAAM,EAAW,SAEzC,WACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,gBACH,MAAO,CAAO,GAEV,EAAc,QAAS,EAAM,EAAW,GACxC,EAAc,SAAU,EAAM,EAAW,GACzC,EAAc,SAAU,EAAM,EAAW,GACzC,EAAc,QAAS,EAAM,EAAW,SAEzC,QAAS,CACZ,GAAM,GACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GACV,EAAO,EAAM,EACb,EAAc,QAAS,EAAM,EAAW,SAGzC,kBAAmB,CACtB,GAAM,GACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GACV,EAAO,EAAM,EACb,EAAc,QAAS,EAAM,EAAW,GAExC,QAED,QACH,MAAO,CAAO,GACV,EAAc,QAAS,EAAM,EAAW,GACxC,EAAc,QAAS,EAAM,EAAW,SAEzC,YACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,aAGxC,KAAM,WAAU,aAAa,EAAK,2BC/F5C,YACI,EAAY,EAA4B,EAAyB,CACnE,GAAM,GAAQ,EAAc,QAAS,EAAM,EAAW,GAChD,EAAS,EAAc,SAAU,EAAM,EAAW,GAClD,EACF,EAAc,gBAAiB,EAAM,EAAW,GAC9C,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,iBAAkB,EAAM,EAAW,GAC/C,EACF,EAAc,eAAgB,EAAM,EAAW,GAEnD,MAAO,CACL,MAAA,EACA,OAAA,EACA,cAAA,EACA,aAAA,EACA,eAAA,EACA,aAAA,GAIG,GAAM,KAAqC,MAC9C,EAAY,EACZ,IAAgD,CAClD,OAAQ,EAAK,QACN,sBAAuB,CAC1B,GAAM,CACJ,MAAA,EACA,OAAA,EACA,cAAA,EACA,aAAA,EACA,eAAA,EACA,aAAA,GACE,GAAU,EAAM,EAAW,GAEzB,EAAS,KAAY,IAAM,gCAC7B,EAAmB,EAAoB,EAAe,EACtD,EAAgB,GAEpB,MAAO,CAAC,EAAO,gBAAiB,EAAO,oBAEpC,sBAAuB,CAC1B,GAAM,CAAC,MAAA,EAAO,OAAA,EAAQ,cAAA,EAAe,aAAA,EAAc,eAAA,GAC/C,GAAU,EAAM,EAAW,GAEzB,EACF,EAAc,qBAAsB,EAAM,EAAW,GAGnD,EAAS,KAAY,IAAM,6BAC7B,EAAmB,EAAoB,EAAe,EACtD,EAAgB,GAEpB,MAAO,CAAC,EAAO,gBAAiB,EAAO,kBAEpC,0BACA,sBAAuB,CAC1B,GAAM,CAAC,MAAA,EAAO,OAAA,EAAQ,cAAA,EAAe,aAAA,EAAc,eAAA,GAC/C,GAAU,EAAM,EAAW,GAE/B,MAAO,CAAC,KAAY,IAAM,uBACtB,EAAmB,EAAoB,EAAe,EACtD,QAED,QAAS,CACZ,GAAM,GAAkB,GACnB,EAAc,YAAa,EAAM,EAAW,GAC7C,QACE,EAAS,CAAC,KAAY,IAAW,IACvC,MAAA,GAAU,UACH,MAEJ,WACH,MAAa,IACT,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,YAGxC,KAAM,WAAU,aAAa,EAAK,2BChF3B,IACT,CAAC,EAAY,EAA4B,IAC1B,CACT,OAAQ,EAAK,QACN,SAAU,CACb,GAAM,GAAI,EAAc,IAAK,EAAM,EAAW,GACxC,EAAI,EAAc,IAAK,EAAM,EAAW,GACxC,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EAAe,GAAK,EAAG,EAAG,GAChC,MAAO,CAAC,EAAO,OAAQ,EAAO,aAE3B,SAAU,CACb,GAAM,GAAI,EAAc,IAAK,EAAM,EAAW,GACxC,EAAe,GAAO,GAC5B,MAAO,CAAC,EAAO,OAAQ,EAAO,aAE3B,WAAY,CACf,GAAM,GAAI,EAAc,IAAK,EAAM,EAAW,GACxC,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EAAe,GAAO,EAAG,GAC/B,MAAO,CAAC,EAAO,OAAQ,EAAO,iBAG9B,KAAM,WAAU,aAAa,EAAK,2BCzBnC,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,QACH,MAAO,GAAU,EAAK,UAEnB,yBACH,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GAC9C,MAAO,CAAC,GAAU,EAAK,KAAM,EAAW,IAAY,OACjD,cACH,MAAO,CAAC,GAAU,EAAK,KAAM,EAAW,QACrC,eACA,mBACA,0BAA2B,CAC9B,GAAM,GAAO,EAAc,IAAK,EAAM,EAAW,GACjD,MAAO,CAAC,GAAY,QAEjB,YACH,MAAQ,GAAc,IAAK,EAAM,EAAW,GACvC,IAAK,GAAc,GAAY,QACjC,WACH,GAAM,GACD,EAAc,IAAK,EAAM,EAAW,GACzC,MAAO,CAAC,GAAY,QACjB,QACH,MAAO,CAAO,GACT,EAAc,IAAK,EAAM,EAAW,GAAoB,MACzD,cACD,SACH,MAAQ,GAAc,IAAK,EAAM,EAAW,GACvC,IAAK,GAAoB,GAAS,EAAE,YACtC,OACH,MAAO,CAAO,GACT,EAAc,IAAK,EAAM,EAAW,GAAoB,KACzD,cACD,OACH,MAAO,CAAO,GACT,EAAc,IAAK,EAAM,EAAW,GAAoB,KACzD,cACD,OACH,MAAO,CAAO,GAAO,QAClB,QACH,GAAM,GAAQ,EAAc,IAAK,EAAM,EAAW,GAC5C,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,YAAa,EAAM,EAAW,GAChD,QAAQ,KACJ,kGAEJ,QAAQ,IAAI,GACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,QAAQ,IAAI,MAAM,UAAU,MAAM,KAAK,EAAK,GAAG,YAC9B,MAAM,EAAG,IAE5B,MAAO,CAAC,WAGR,KAAM,WAAU,aAAa,EAAK,2BClEtC,IAAA,KAAgB,CAgBpB,YAAqB,EAA6B,EAAoB,CAAjD,KAAA,SAAA,EAA6B,KAAA,WAAA,EAChD,KAAK,OAAS,GAAO,GAErB,KAAK,UAAY,GAAI,KAErB,GAAK,KAAK,WAfR,KAAE,CACJ,MAAO,MAAK,OAAO,GAoBrB,eAAa,CACX,KAAK,UAAU,QAAQ,GAAS,EAAM,WACtC,KAAK,UAAU,QACf,KAAK,OAAO,UAMd,MAAI,CACF,MAAO,MAAK,UAAU,KAMxB,YAAU,CACR,MAAa,IAAO,KAAK,OAAQ,cAQ7B,QAAO,EAAc,EAAc,CACvC,KAAK,uBAAuB,EAAM,GAIlC,GAAM,GAAQ,KAAM,GAAK,OAGzB,MAAA,MAAK,UAAU,QAAQ,GAAS,EAAM,WACtC,KAAK,UAAU,QAER,EAAK,IAAK,CACf,GAAM,GAAU,GAAQ,GAElB,EAAa,EAAM,OACnB,EAAe,EAAQ,OAE7B,EAAK,OACD,IAAe,EACf,IAAM,kDACC,8BAAuC,eAGlD,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAM,GAAM,EAAM,GACZ,EAAQ,EAAQ,GAEtB,GAAK,GACL,KAAK,UAAU,IAAI,EAAK,GAG1B,MAAO,MAAK,cAmBV,MAAK,EAAc,EAAoB,CAC3C,KAAK,uBAAuB,EAAM,GAElC,GAAM,GAAQ,KAAM,GAAK,OAEzB,MAAO,GAAK,IAAK,CACf,GAAM,GAAmB,GAEzB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,GAAM,GAAM,EAAM,GAEZ,EAAQ,KAAK,gBAAgB,EAAK,GACxC,EAAO,KAAK,GAGd,MAAO,IAAM,KAKT,gBAAgB,EAAU,EAAoB,CACpD,GAAM,GAAS,KAAK,UAAU,IAAI,GAElC,MAAO,IAAU,KAAO,EAAS,EAG3B,uBAAuB,EAAa,EAAa,CACvD,GAAI,EAAI,QAAU,KAAK,SACrB,KAAM,IAAI,OACN,oBAAoB,KAAK,qBACtB,EAAI,SAGb,GAAI,EAAM,QAAU,KAAK,WACvB,KAAM,IAAI,OACN,sBAAsB,KAAK,uBACxB,EAAM,WCtIN,IAAqC,MAC9C,EAAY,EAA4B,EACxC,IAAuD,CACzD,OAAQ,EAAK,QACN,gBACA,cAAe,CAClB,GAAM,GACF,EAAc,WAAY,EAAM,EAAW,GACzC,EACF,EAAc,aAAc,EAAM,EAAW,GAE3C,EAAY,GAAI,KAAU,EAAU,GAC1C,MAAA,GAAgB,aAAa,EAAK,KAAM,GACjC,CAAC,EAAU,YAEf,wBACA,sBAAuB,CAC1B,GAAM,GAAS,EACI,cAAe,EAAM,EAAW,EAChC,GACb,EAAO,EAAc,OAAQ,EAAM,EAAW,GAC9C,EACF,EAAc,SAAU,EAAM,EAAW,GAI7C,MAAO,CAAC,KAFU,GAAgB,iBAAiB,EAAO,IAElC,OAAO,EAAM,QAElC,sBACA,oBAAqB,CACxB,GAAM,GAAS,EACI,cAAe,EAAM,EAAW,EAChC,GACb,EAAO,EAAc,OAAQ,EAAM,EAAW,GAC9C,EACF,EAAc,eAAgB,EAAM,EAAW,GAGnD,MAAO,CAAC,KADU,GAAgB,iBAAiB,EAAO,IAClC,KAAK,EAAM,QAEhC,sBACA,oBAAqB,CACxB,GAAM,GAAS,EACI,cAAe,EAAM,EAAW,EAChC,GAGnB,MAAO,CADW,EAAgB,iBAAiB,EAAO,IACxC,sBAGlB,KAAM,WAAU,aAAa,EAAK,2BClD3B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,iBAAkB,CACrB,GAAM,GACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,eAAgB,EAAM,EAAW,GAE7C,EACF,EAAc,mBAAoB,EAAM,EAAW,GAEvD,MAAO,CAAO,GAAM,eAChB,EAA+B,CAAC,EAAK,GAAI,EAAK,IAAK,EACnD,QAED,wBAAyB,CAC5B,GAAM,GACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,eAAgB,EAAM,EAAW,GAE7C,EACF,EAAc,mBAAoB,EAAM,EAAW,GAEvD,MAAO,CAAO,GAAM,sBAChB,EAA+B,CAAC,EAAK,GAAI,EAAK,IAAK,EACnD,QAED,gBAAiB,CACpB,GAAM,GACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,WAAY,EAAM,EAAW,GACzC,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,qBAAsB,EAAM,EAAW,GAEzD,MAAO,CAAO,GAAM,cAChB,EAAmB,EAAmB,EACtC,EAA8B,EAC9B,YAGJ,KAAM,WAAU,aAAa,EAAK,2BCtD/B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,WACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,UACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,eACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,YACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,aACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,aACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,YACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,SAErC,aACA,WACH,MAAO,CAAO,GACV,EAAc,YAAa,EAAM,EAAW,GAC5C,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,aAGxC,KAAM,WAAU,aAAa,EAAK,2BCxD/B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,kBACA,oBACA,SACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,aAAc,EAAM,EAAW,GAC7C,EAAc,aAAc,EAAM,EAAW,SAG9C,YACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,OAAQ,EAAM,EAAW,SAExC,eACH,GAAM,CAAC,EAAS,GACX,EAAc,WAAY,EAAM,EAAW,GAE1C,EAAY,IAAY,UACxB,EAAU,IAAmB,QAE7B,EACD,EAAc,UAAW,EAAM,EAAW,GACzC,EACF,EAAc,iBAAkB,EAAM,EAAW,GAGrD,GAAI,EAAW,CACb,GAAI,GAAW,IAAY,EACzB,KAAM,IAAI,OACN,sFAGN,GAAI,CAAC,GAAW,IAAY,EAC1B,KAAM,IAAI,OACN,iEAGR,GAAM,CAAC,EAAS,GACZ,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GAAM,OAAO,CACzB,EAAG,EAAc,IAAK,EAAM,EAAW,GACvC,EAAG,EAAc,IAAK,EAAM,EAAW,GACvC,WAAY,EAAc,aAAc,EAAM,EAAW,GAEzD,WAAY,EAAc,aAAc,EAAM,EAAW,GAEzD,KAAM,EACN,WAAY,EACZ,uBAAwB,EACxB,eAAA,aAIF,KAAM,WAAU,aAAa,EAAK,2BC3D/B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,qBACA,mBACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,OAAQ,EAAM,EAAW,GACvC,EAAc,WAAY,EAAM,EAAW,GAC3C,EAAc,SAAU,EAAM,EAAW,GACzC,EAAc,QAAS,EAAM,EAAW,GACxC,EAAc,UAAW,EAAM,EAAW,SAE3C,mBACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,OAAQ,EAAM,EAAW,GACvC,EAAc,WAAY,EAAM,EAAW,GAC3C,EAAc,SAAU,EAAM,EAAW,GACzC,EAAc,QAAS,EAAM,EAAW,GACxC,EAAc,UAAW,EAAM,EAAW,SAE3C,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAEpC,EAAc,SAAU,EAAM,EAAW,GACzC,EAAc,OAAQ,EAAM,EAAW,GACvC,EAAc,QAAS,EAAM,EAAW,GACxC,EAAc,OAAQ,EAAM,EAAW,SAExC,UACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,aACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,gBACH,MAAO,CAAO,GACV,EAAc,gBAAiB,EAAM,EAAW,GAEhD,EAAc,cAAe,EAAM,EAAW,GAC9C,EAAc,eAAgB,EAAM,EAAW,GAE/C,EAAc,eAAgB,EAAM,EAAW,aAInD,KAAM,WAAU,aAAa,EAAK,2BCnD/B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,MAAO,CACV,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,OAAQ,CACX,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,MAAO,CACV,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,MAAO,CACV,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,MAAO,CACV,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,MAAO,CACV,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,SAAU,CACb,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,QAEzD,SAAU,CACb,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,QAEzD,OAAQ,CACX,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,SAAU,CACb,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,YAAa,EAAM,EAAW,GAC1C,EACF,EAAc,UAAW,EAAM,EAAW,GAC9C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,EAAW,QAEZ,WACH,GAAM,GAAI,EAAc,IAAK,EAAM,EAAW,GACxC,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,OAAQ,EAAM,EAAW,GAE3C,MAAO,CAAO,GAAS,EAAG,EAAS,QAChC,gBAAiB,CACpB,GAAM,GAAI,EAAc,IAAK,EAAM,EAAW,GAExC,EACF,EAAc,UAAW,EAAM,EAAW,GAExC,EACF,EAAc,OAAQ,EAAM,EAAW,GAErC,EACF,EAAc,eAAgB,EAAM,EAAW,GAGnD,MAAO,CAAO,GAAc,EAAG,EAAS,EAAM,YAG9C,KAAM,WAAU,aAAa,EAAK,2BClH/B,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,eACA,SAAU,CACb,GAAM,GAAI,EAAc,IAAK,EAAM,EAAW,GACxC,EACF,EAAc,OAAQ,EAAM,EAAW,GACvC,EACA,EAAc,UAAW,EAAM,EAAW,GAC9C,MAAA,GAAS,EAAO,MAAM,EAAG,GAClB,CAAO,GAAO,EAAQ,QAE1B,SAAU,CACb,GAAM,GAAQ,EAAc,IAAK,EAAM,EAAW,GAC5C,EACF,EAAc,UAAW,EAAM,EAAW,GAC9C,MAAO,CAAO,GAAO,EAAa,GAAK,EAAS,SAAU,QAEvD,WAAY,CACf,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,YAAa,EAAM,EAAW,GAC1C,EAAQ,EAAc,IAAK,EAAM,EAAW,GAC5C,EACF,EAAc,UAAW,EAAM,EAAW,GAC9C,MAAO,CAAO,GACV,EAAa,GAAK,EAAS,SAAU,EAAM,QAE5C,UAAW,CACd,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EAAO,GACb,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC3B,EAAK,IACP,EAAK,KAAK,GAGd,GAAM,GAAQ,EAAc,IAAK,EAAM,EAAW,GAClD,MAAO,CAAO,GAAQ,EAAO,QAE1B,YAAa,CAChB,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EAAQ,EAAc,IAAK,EAAM,EAAW,GAClD,MAAO,CAAO,GAAQ,EAAO,QAE1B,QAAS,CAEZ,GAAM,GAAQ,EAAc,QAAS,EAAM,EAAW,GAEhD,EAAO,EAAc,OAAQ,EAAM,EAAW,GACpD,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,EACxD,QAED,eAAgB,CACnB,GAAM,GACF,EAAc,QAAS,EAAM,EAAW,GACtC,EACF,EAAc,MAAO,EAAM,EAAW,GACpC,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,YAAa,EAAM,EAAW,GAC1C,EACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,cAAe,EAAM,EAAW,GAC5C,EACF,EAAc,iBAAkB,EAAM,EAAW,GAE/C,EAAS,EAAc,IAAK,EAAM,EAAW,GAEnD,MAAO,CAAO,GACV,EAAQ,EAAO,EAAK,EAAS,EAAW,EAAS,EACjD,EAAa,QAEd,OACH,MAAO,GAAK,IAAK,CACf,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,UAAW,EAAM,EAAW,GAGxC,EAAQ,EAAQ,GAAG,MACnB,EAAsB,GAAQ,EAAQ,IAAI,MAC1C,EAAS,EAAQ,IAAI,GAAS,CAClC,GAAM,GAAY,EAAK,YAAY,EAAO,MAAO,GACjD,GAAI,CAAC,GACD,CAAC,EAAK,YACI,GAAQ,GAAQ,MAAO,GACnC,KAAM,IAAI,OAAM,0CAElB,MAAO,GAAY,EAAe,EAAQ,EAAQ,KAEpD,MAAO,CAAO,GAAM,EAAQ,UAG3B,SAAU,CACb,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,SAAU,EAAM,EAAW,GAC7C,MAAa,IAAQ,EAAQ,OAE1B,OAAQ,CACX,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,QAEzD,YACA,SAAU,CACb,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GACrC,EACF,EAAc,kBAAmB,EAAM,EAAW,GAGhD,EAAS,EAAc,IAAK,EAAM,EAAW,GAEnD,MAAa,IAAM,EAAQ,EAAiB,OAEzC,YAAa,CAChB,GAAM,GACF,EAAc,UAAW,EAAM,EAAW,GACxC,EACF,EAAc,SAAU,EAAM,EAAW,GACvC,EACF,EAAc,QAAS,EAAM,EAAW,GAC5C,MAAO,CAAO,GAAU,EAAS,EAAQ,QAEtC,WAAY,CACf,GAAM,GAAI,EAAc,IAAK,EAAM,EAAW,GACxC,EACF,EAAc,UAAW,EAAM,EAAW,GAC9C,MAAO,CAAO,GAAS,EAAG,QAEvB,gBAAiB,CACpB,GAAM,GACF,EAAc,gBAAiB,EAAM,EAAW,GAE9C,EACF,EAAc,cAAe,EAAM,EAAW,GAE5C,EACF,EAAc,eAAgB,EAAM,EAAW,GAC7C,EACF,EAAc,eAAgB,EAAM,EAAW,GACnD,MAAO,CAAO,GACV,EAAS,EAAc,EACvB,EAAa,QAAU,EAAa,MAChC,EACM,GAAK,EAAc,EAAa,iBAG9C,KAAM,WAAU,aAAa,EAAK,2BClK/B,IACT,CAAC,EAAY,EAA4B,IAC1B,CACT,OAAQ,EAAK,QACN,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,SAErC,QACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,aAGxC,KAAM,WAAU,aAAa,EAAK,2BCrBnC,IACT,CAAC,EAAY,EACZ,IAAuC,CACtC,OAAQ,EAAK,QACN,OACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,QAAS,EAAM,EAAW,SAGzC,aAAc,CACjB,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,QAEzD,UAAW,CACd,GAAM,GACF,EAAc,OAAQ,EAAM,EAAW,GAC3C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GAAoB,QAGzD,UACH,MAAO,CAAO,EACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,QAAS,EAAM,EAAW,SAEzC,YACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,UAAW,EAAM,EAAW,GAE1C,EAAc,OAAQ,EAAM,EAAW,SAGxC,YACA,MACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,UAAW,EAAM,EAAW,GAE1C,EAAc,gBAAiB,EAAM,EAAW,SAGjD,iBAAkB,CACrB,GAAM,GACF,EAAc,aAAc,EAAM,EAAW,GAC3C,EACF,EAAc,WAAY,EAAM,EAAW,GAC/C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAY,QAEb,iBAAkB,CACrB,GAAM,GACF,EAAc,aAAc,EAAM,EAAW,GAC3C,EACF,EAAc,QAAS,EAAM,EAAW,GAC5C,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAY,QAEb,eAAgB,CACnB,GAAM,GACF,EAAc,YAAa,EAAM,EAAW,GAC1C,EACD,EAAc,aAAc,EAAM,EAAW,GACrC,cAEb,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAW,QAEZ,cACH,MAAO,CAAO,GACV,EAAc,IAAK,EAAM,EAAW,GACpC,EAAc,QAAS,EAAM,EAAW,aAG5C,KAAM,WAAU,aAAa,EAAK,2BCxDtC,YACF,EAAY,EAA4B,EACxC,EAAiC,CACnC,GAAM,GACD,EAAC,EAAY,EAA4B,IAA6B,CACrE,OAAQ,EAAK,cACN,aACH,MAAW,GACP,IAAiB,IAAU,EAAM,EAAW,QAC7C,aACH,MAAW,GACP,IAAgB,IAAU,EAAM,EAAW,QAC5C,UACH,MAAe,KAAU,EAAM,EAAW,OACvC,cACH,MAAW,GACP,IAAkB,IAAU,EAAM,EAAW,QAC9C,WACH,MAAW,GAAK,IAAe,IAAU,EAAM,EAAW,QACvD,UACH,MAAe,KAAU,EAAM,EAAW,OACvC,aACH,MAAW,GACP,IAAiB,IAAU,EAAM,EAAW,QAC7C,QACH,MAAW,GAAK,IAAY,IAAU,EAAM,EAAW,QACpD,QACH,MAAW,GAAK,IAAY,IAAU,EAAM,EAAW,QACpD,UACH,MAAW,GAAK,IAAc,IAAU,EAAM,EAAW,QACtD,WACH,MAAW,GAAK,IAAe,IAAU,EAAM,EAAW,QACvD,gBACH,MAAW,GACP,IAAoB,IAAU,EAAM,EAAW,QAChD,YACH,MAAW,GACP,IAAgB,IAAU,EAAM,EAAW,QAC5C,aACH,MAAW,GACP,IAAgB,IAAU,EAAM,EAAW,QAC5C,WACH,MAAW,GAAK,IAAe,IAAU,EAAM,EAAW,QACvD,iBACH,MAAW,GACP,IAAqB,IAAU,EAAM,EAAW,QACjD,aACH,MAAiB,KACb,EAAM,EAAW,EAAS,OAC3B,SACH,GAAM,GAAW,GAAgB,EAAK,IACtC,GAAI,GAAY,EAAS,eACvB,MAAO,GAAS,eACZ,GAAI,KAAc,EAAM,EAAW,IAEvC,KAAM,WAAU,aAAa,EAAK,iCAGpC,KAAM,WACF,eAAe,EAAK,4IAI3B,EAAM,EAAW,GACxB,MAAQ,GAAK,UAAU,GACb,EAA8B,KAAM,GAAS,GAAG,OAAO,IAE1D,GAAG,OAAO,GC9Eb,GAAA,IAAA,KAAuB,CAM3B,YACa,EAA6B,GAC7B,EAAiC,GACjC,EAA+B,GAC/B,EAAiD,GAAE,CAHnD,KAAA,UAAA,EACA,KAAA,eAAA,EACA,KAAA,cAAA,EACA,KAAA,YAAA,EATL,KAAA,YAAc,CAAC,GAAI,EAAG,UAAW,GAAI,YAAa,GAClD,KAAA,SAAmC,CAAC,KAAK,aACzC,KAAA,OAAS,EAQf,KAAK,4BAGC,SAAS,EAAY,EAAiB,CAC5C,MAAO,CAAC,GAAA,EAAI,UAAA,EAAW,YAAa,MAQlC,gBAAe,EAAgC,CAC7C,KAAK,WAAa,GACpB,MAAK,SAAW,EAChB,KAAK,gCAIL,iBAAc,CAChB,MAAO,MAAK,YAMV,mBAAgB,CAClB,MAAO,MAAK,mBAAmB,MAO7B,oBAAiB,CACnB,MAAO,MAAK,mBAGN,2BAAyB,CAC/B,GAAM,GAAQ,GACd,OAAS,GAAI,EAAG,EAAI,KAAK,SAAS,OAAS,EAAG,IAAK,CACjD,GAAM,GAAW,KAAK,SAAS,MAAM,EAAG,KAAK,SAAS,OAAS,GAC/D,EAAM,KAAK,KAAK,qBAAqB,IAEvC,EAAM,KAAK,IACX,KAAK,mBAAqB,EAGpB,qBAAqB,EAAgC,CAC3D,MAAO,GACH,EACK,IACG,GAAY,EAAQ,KAAO,GAAK,EAAQ,cAAgB,EACpD,GACA,GAAG,EAAQ,aAAa,EAAQ,eACvC,KAAK,KACV,GAON,WAAW,EAAe,CACpB,KAAK,UACP,MAAK,SACL,KAAK,SAAW,KAAK,SAAS,QAC9B,KAAK,SAAS,KAAK,KAAK,SAAS,KAAK,OAAQ,IAC9C,KAAK,mBAAmB,QAAQ,KAAK,qBAAqB,KAAK,YAQnE,WAAS,CACP,GAAI,KAAK,UAAY,KAAK,SAAS,OAAS,EAC1C,KAAK,SAAW,KAAK,SAAS,QAC9B,KAAK,SAAS,OAAO,IACrB,KAAK,kBAAkB,YAEvB,MAAM,IAAI,OAAM,2CAQpB,eAAa,CACX,GAAI,KAAK,UAAY,KAAK,SAAS,OAAS,EAAG,CAC7C,KAAK,SAAW,KAAK,SAAS,QAC9B,KAAK,SACL,GAAM,GACF,OAAO,OAAO,GAAI,KAAK,SAAS,KAAK,SAAS,OAAS,IAC3D,EAAQ,aAAe,EACvB,EAAQ,GAAK,KAAK,OAClB,KAAK,SAAS,OAAO,GAAI,EAAG,GAC5B,KAAK,mBAAmB,OACpB,EAAG,EAAG,KAAK,qBAAqB,KAAK,eAEzC,MAAM,IAAI,OAAM,yDAIpB,UAAU,EAAY,CACpB,MAAO,MAAK,UAAU,GAGxB,eAAe,EAAwB,CACrC,KAAK,eAAe,EAAY,IAAM,EAGxC,eAAe,EAAU,CACvB,MAAO,MAAK,eAAe,GAG7B,cAAc,EAAsB,CAClC,KAAK,cAAc,EAAW,IAAM,EAGtC,cAAc,EAAU,CACtB,MAAO,MAAK,cAAc,GAG5B,QAAQ,EAAoB,CAC1B,OAAW,KAAO,MAAK,eACrB,KAAK,eAAe,GAAK,cAAc,GAGzC,OAAW,KAAO,MAAK,cACrB,KAAK,cAAc,GAAK,cAAc,KC/ItC,YACF,EAAwB,EAAiB,EACzC,EAAkB,CACpB,GAAM,GAAY,GAAI,KAChB,EAA0B,GAC5B,EAAoB,KACpB,EAAuB,KAIrB,EAAO,GAAI,KACX,EACF,OAAO,KAAK,GAAQ,IAAI,GAAQ,GAAc,GAAM,IAEpD,EAA0B,GAC1B,GAAa,MACf,GAAgB,EAAU,IAAI,GAAQ,GAAc,EAAK,MAAM,KAGjE,GAAM,GAAW,CAAC,GAAG,GACrB,KAAO,EAAS,OAAS,GAAG,CAC1B,GAAM,GAAO,EAAS,MAWtB,GAVI,IAAc,IAAS,IAAe,IAAS,IAAY,KACzD,GAAe,MACjB,GAAc,EACd,EAAa,EAAY,SAAS,IAAI,GAAS,EAAM,MACnC,OAAO,GAAQ,EAAU,IAAI,KAGnD,EAAU,IAAI,EAAK,MAGf,EAAU,EAAK,OAAS,MAIxB,EAAe,QAAQ,EAAK,QAAU,IAItC,EAAc,QAAQ,EAAK,QAAU,GAGzC,CAAA,GAAI,EAAK,OAAO,SAAW,EAAG,CAC5B,EAAc,KAAK,EAAK,MACxB,SAEF,EAAK,OAAO,QAAQ,GAAQ,CAEtB,EAAK,IAAI,EAAM,OAGnB,GAAK,IAAI,EAAM,MACf,EAAS,KAAK,OAGlB,MAAO,CAAC,OAAA,EAAQ,QAAA,EAAS,UAAA,EAAW,cAAA,EAAe,YAAA,EAAa,WAAA,GAO5D,aACF,EAAc,EACd,EAA4B,CAC9B,GAAM,CAAC,UAAA,EAAW,OAAA,GAAU,EACtB,EAAmB,GACnB,EAAa,OAAO,KAAK,GACP,IAAI,GAAQ,GAAc,GAAM,IAChC,IAAI,GAAQ,EAAM,MAAM,IAC1C,EAAY,EAAM,UAExB,EAAW,QAAQ,GAAQ,CACrB,EAAU,IAAI,EAAM,OACtB,EAAS,KAAK,KAGlB,EAAM,QAAQ,QAAQ,GAAS,CACzB,EAAU,IAAI,EAAO,OACvB,EAAS,KAAK,KAGd,GAAa,MACf,EAAU,QAAQ,GAAO,CACnB,EAAU,IAAI,EAAK,OACrB,EAAS,KAAK,KAIpB,GAAM,GAAO,GAAI,KACX,EAAuB,GAC7B,KAAO,EAAS,OAAS,GAAG,CAC1B,GAAM,GAAO,EAAS,MACtB,EAAK,IAAI,EAAK,MACT,EAAU,EAAK,OAClB,EAAa,KAAK,GAEpB,EAAK,SAAS,QAAQ,GAAQ,CACxB,CAAC,EAAK,IAAI,EAAM,OAAS,EAAU,IAAI,EAAM,OAC7C,EAAM,OAAO,MAAM,GAAS,EAAK,IAAI,EAAM,QAC7C,EAAS,KAAK,KAIpB,MAAO,GAGT,GAAM,KAAmB,CACvB,SAAU,QAAS,QAAS,OAAQ,gBAAiB,cACrD,iBAAkB,KAAM,SAEpB,IAAoB,CACxB,sBAAuB,sBAAuB,sBAAuB,SAEjE,IAAiB,CACrB,YAAa,cAAe,oBAAqB,sBACjD,kBAAmB,oBAAqB,kBAAmB,qBAGvD,YAAwB,EAAU,CACtC,MAAO,KAAiB,QAAQ,EAAK,KAAO,EAGxC,aAAyB,EAAU,CACvC,MAAO,KAAkB,QAAQ,EAAK,KAAO,EAGzC,aAAsB,EAAU,CACpC,MAAO,KAAe,QAAQ,EAAK,KAAO,ECtItC,GAAA,IAAA,KAAoB,CA+FxB,YAAoB,EAAsB,EAAsB,CAA5C,KAAA,MAAA,EAAsB,KAAA,OAAA,EA9FlC,KAAA,YAAmC,GAAI,KACvC,KAAA,WAA8B,GAM9B,KAAA,UAAY,IACZ,KAAA,WAAqC,GACrC,KAAA,qBAA0D,GAsFhE,KAAK,SAAW,EAAM,QACtB,KAAK,QAAU,EAAM,OACrB,KAAK,WAAa,EAAM,UACxB,KAAK,WAAa,EAAM,UACxB,KAAK,WAAa,EAAM,UAEpB,EAAM,WAAa,MACrB,OAAO,KAAK,EAAM,WAAW,QAAQ,GAAO,CAC1C,KAAK,qBAAqB,GACtB,GAAI,IAAc,EAAM,UAAU,GAAO,WA5F/C,YAAS,CACX,MAAO,MAAK,OAAS,KAAK,OAAO,UAAY,KAAK,cAGhD,sBAAmB,CACrB,MAAO,MAAK,OAAS,KAAK,OAAO,oBACZ,KAAK,wBAGxB,YAAS,CACX,MAAO,MAAK,OAAS,KAAK,OAAO,UAAY,KAAK,cAGhD,WAAU,EAA0B,CACtC,GAAM,GAAY,OAAO,KAAK,GAAW,IACrC,GAAO,EAAU,GAAK,IAAI,GAAU,EAAO,KAC/C,KAAK,WAAa,GAAG,OAAO,GAAG,GAC/B,KAAK,WAAa,KAOhB,iBAAgB,EAAgC,CAClD,KAAK,iBAAmB,KAGtB,SAAM,CACR,MAAO,MAAK,QAAQ,IAAI,GACf,EACL,KAAM,EAAK,KACX,MAAO,EAAK,WAAW,MACnB,EAAK,WAAW,MAAS,MACzB,OACJ,MAAO,EAAK,WAAW,MACnB,EAAK,WAAW,MAAS,MACzB,aAKN,UAAO,CACT,MAAO,MAAK,SAAS,IAAI,GAChB,EACL,KAAM,EAAK,KACX,MAAO,EAAK,WAAW,MACnB,EAAK,WAAW,MAAS,MACzB,OACJ,MAAO,EAAK,WAAW,MACnB,EAAK,WAAW,MAAS,MACzB,aAKN,aAAU,CACZ,MAAO,MAAK,QAAQ,IAAI,GAAQ,EAAK,cAAgB,EAAK,SAGxD,cAAW,CACb,MAAO,MAAK,SAAS,IAAK,GAAQ,CAChC,GAAM,GAAO,EAAK,cAAgB,EAAK,KACvC,MAAO,GAAK,cAAiB,GAAG,KAAQ,EAAK,gBAAmB,OAIhE,YAAS,CACX,MAAO,QAAO,KAAK,KAAK,YAAY,OAAO,CAAC,EAAK,IAC/C,GAAI,GAAO,KAAK,WAAW,GAAK,UACzB,GACN,IA0BG,kBAAkB,EAAgB,EAAe,CACvD,GAAM,GAAe,EAAO,IAAI,GAAQ,EAAK,MAAM,OAC7C,EAAgB,EAAQ,IAAI,GAAQ,EAAK,MAAM,OACrD,MAAO,GAAa,KAAK,KAAK,WAAa,KACvC,EAAc,KAAK,KAAK,WAOtB,QAAQ,EAAwB,EAAe,CACrD,GAAM,GACF,GAAqB,EAAQ,EAAS,KAAK,UAAW,KAAK,YACzD,CAAC,cAAA,EAAe,YAAA,EAAa,WAAA,GAAc,EACjD,GAAI,GAAe,KACjB,KAAM,IAAI,OACN,qCAAqC,EAAY,oCAC9B,EAAY,8GAEK,MAG1C,GAAI,EAAc,OAAS,EAAG,CAC5B,GAAM,GAAW,EAAQ,IAAI,GAAK,EAAE,MAC9B,EAAU,OAAO,KAAK,GAC5B,KAAM,IAAI,OACN,+BAA+B,gCAC3B,sCAA4C,MAGtD,MAAO,KACH,KAAK,MAAO,KAAK,UAAW,GAYlC,QAAQ,EAAwB,EAAkB,CAChD,EAAS,KAAK,UAAU,GACxB,GAAM,GAAQ,OAAO,KAAK,GAAQ,OAClC,KAAK,YAAY,GACjB,KAAK,uBAAuB,GAC5B,EAAU,KAAK,WAAW,GAC1B,KAAK,aAAa,GAClB,GAAM,GACF,EAAM,IAAI,GAAQ,KAAK,MAAM,MAAM,GAAc,GAAM,KACrD,EAAkB,EAAQ,IAAI,GAAQ,GAAc,GAAM,IAC5D,EAAc,EAAgB,IAAI,GAAQ,KAAK,MAAM,MAAM,IAG3D,EAAY,SAAW,GACzB,GAAc,KAAK,UAGrB,GAAM,GAAiB,KAAK,kBAAkB,EAAY,GAGtD,EAAe,KAAK,YAAY,IAAI,GACpC,GAAgB,MAClB,GAAe,KAAK,QAAQ,EAAQ,GACpC,KAAK,YAAY,IAAI,EAAgB,IAGvC,GAAM,GAAiC,GACjC,EAA+B,GAErC,MAAO,GAAK,IAAK,CACf,GAAM,GAAU,GAAI,IAChB,KAAK,UAAW,EAAgB,EAChC,KAAK,qBACH,EAAU,OAAA,OAAA,GAAwB,KAAK,WAE7C,OAAO,KAAK,GAAQ,QAAQ,GAAO,CACjC,GAAM,CAAC,EAAU,GAAS,GAAc,GAClC,EAAoB,GAC1B,EAAQ,GAAS,EAAO,GACxB,EAAW,GAAY,IAGzB,GAAM,GAAgB,KAAK,mBAAmB,GACxC,EAA2D,GACjE,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,IAAK,CAC5C,GAAM,GAAO,EAAa,GAC1B,GAAI,CAAC,EAAW,EAAK,MAAO,CAC1B,GAAM,GACF,GAAU,EAAM,EAAY,EAAS,KAAK,kBAE9C,GAAI,EAAK,UAAU,GACjB,KAAM,IAAI,OACN,4BAA4B,EAAK,oEAGvC,EAAW,EAAK,MAAQ,EACxB,KAAK,uBACD,EAAK,KAAM,EAAM,EAAY,EAAS,EACtC,EAAiB,IAIzB,MAAI,MAAK,QAAU,MACjB,EAAQ,QAAQ,GAEX,EAAQ,IAAI,GAAQ,GAAU,EAAM,EAAY,MAInD,mBAAmB,EAA0B,CACnD,GAAM,GAAM,GAAG,OAAO,MAClB,GACA,OAAO,KAAK,GACP,IAAI,GAAO,EAAU,IACrB,IAAI,GAAW,EAAQ,IAAI,GAAU,EAAO,MACrD,MAAO,IAAI,KAAI,GAET,uBACJ,EAAkB,EAAY,EAC9B,EAA2B,EAC3B,EACA,EAAwD,CAGtD,EAAK,WAAa,WAAa,EAAY,QAAQ,KAAc,IAIrE,GAAU,GAAU,QAAQ,GAAS,CAC/B,GAAU,MACZ,GAAgC,EAAO,IAClC,GAAgC,EAAO,KAAO,GAC/C,EAAK,SAAS,UAGtB,EAAK,OAAO,QAAQ,GAAQ,CAG1B,GAAI,EAAM,WAAa,UAAW,CAChC,GAAM,GACF,IAA6B,EAAM,KAAM,EAAW,GACpD,GAAW,MACb,EAAQ,QAAQ,GAAS,CACvB,GAAI,GAAU,CAAC,EAAc,IAAI,EAAO,IAAK,CAC3C,GAAM,GAAQ,EAAgC,EAAO,IACjD,IAAU,EACZ,GAAO,UACP,MAAO,GAAgC,EAAO,KACrC,GAAS,MAGlB,EAAgC,EAAO,kBAkB/C,cAAa,EAAwB,EAAkB,CAE3D,MAAO,MAAK,cAAc,EAAQ,QAiBtB,eACV,EAAwB,EAAoB,EAAsB,GAClE,EAAiC,GACjC,EAA+B,GAAE,CAC9B,GACH,GAAS,KAAK,UAAU,GACxB,KAAK,YAAY,GACjB,KAAK,uBAAuB,GAC5B,EAAU,KAAK,WAAW,GAC1B,KAAK,aAAa,IAGpB,GAAM,GAAU,GAAI,IAChB,KAAK,UAAW,EAAgB,EAChC,KAAK,qBAKH,EAAY,KAAM,MAAK,uBACzB,EAAQ,EAAS,EAAS,GACxB,EAAU,EAAQ,IAAI,GAAQ,GAAU,EAAM,EAAW,IAGzD,EAAY,EAAQ,IAAI,GAAK,EAAE,IAC/B,EAAW,OAAO,KAAK,GAAQ,IAAI,GAAQ,EAAO,GAAM,IACxD,EACF,GAAI,KAAY,CAAC,GAAG,EAAW,GAAG,EAAU,GAAG,KAAK,YACxD,MAAA,QAAO,KAAK,GAAW,QAAQ,GAAM,CACf,EAAU,GAClB,QAAQ,GAAS,CACvB,GAAU,CAAC,EAAO,YAAc,CAAC,EAAQ,IAAI,EAAO,KACtD,EAAO,cAKT,KAAK,QAAU,MACjB,EAAQ,QAAQ,GAGX,OAGH,sBACF,EAAkB,EAClB,EAA4B,CAC9B,GAAM,GAAe,EAAO,OAAO,CAAC,EAAK,EAAQ,IAC/C,GAAI,KAAK,OAAO,GAAO,MAAQ,EACxB,GACN,IAEH,MAAO,MAAK,cACR,EAAc,KAAK,YAAa,GAAM,EAAgB,QAa9C,wBACV,EAAwB,EAA2B,EACnD,EAA6B,CAC/B,GAAM,GAAQ,OAAO,KAAK,GACpB,EACF,EAAM,IAAI,GAAQ,KAAK,MAAM,MAAM,GAAc,GAAM,KACrD,EAAkB,EAAY,IAAI,GAAQ,GAAc,GAAM,IAChE,EAAc,EAAgB,IAAI,GAAQ,KAAK,MAAM,MAAM,IAG3D,EAAY,SAAW,GACzB,GAAc,KAAK,UAGrB,GAAM,CAAC,UAAA,EAAW,cAAA,EAAe,YAAA,EAAa,WAAA,GAC1C,GACI,EAAQ,EAAa,KAAK,UAAW,KAAK,YAG5C,EAA4B,CAChC,GAAG,EAAY,GAAG,KAAK,MAAM,QAAS,GAAI,KAAK,YAAc,IAC7D,IAAI,GACG,EAAC,KAAA,EAAM,SAAU,EAAQ,kBAE5B,EAAU,OAAA,OAAA,GAAwB,KAAK,WAC7C,OAAO,KAAK,GAAQ,QAAQ,GAAO,CACjC,GAAM,CAAC,EAAU,GAAS,GAAc,GAClC,EAAoB,GAC1B,EAAQ,GAAS,EAAO,GACxB,EAAW,GAAY,IAEzB,GAAM,GAA2D,GAC3D,EAAgB,KAAK,mBAAmB,GACxC,EAAkC,GACxC,KAAO,EAAM,OAAS,GAAG,CACvB,GAAM,GAAW,KAAK,aAClB,EAAY,EAAO,EAAS,EAAY,EAAO,EAC/C,EAAiB,EAAiC,GACtD,KAAM,SAAQ,IAAI,GAEhB,GAAe,MAAQ,CAAC,GAC1B,QAAQ,KACJ,mIAGN,GAAM,GACF,EACK,OACG,GAAQ,CAAC,GAAc,IACnB,CAAC,GAAU,EAAK,KAAM,EAAY,IACzC,IAAI,GAAQ,EAAK,MAC1B,GAAI,EAAe,OAAS,EAAG,CAC7B,GAAI,GAAiB,GACrB,KAAI,IAAe,MACjB,GACI,wFAC2B,MAE3B,GAAI,OACN,+BAA+B,gCACpB,iDACP,OAAmB,KAE7B,MAAO,GAGD,aACJ,EAAoB,EAA2B,EAC/C,EAA4B,EAC5B,EAA4B,EAC5B,EACA,EAAsB,CACxB,GAAM,GAAqC,GAC3C,KAAO,EAAM,OAAS,GAAG,CACvB,GAAM,GAAO,EAAM,MACnB,EAAQ,eAAiB,EAAK,SAC9B,GAAI,GAAW,GAWf,GAPI,EAAK,KAAK,KAAO,SACjB,EAAc,aAAc,EAAK,KAAM,EAAW,IACpD,EAAC,GAAY,GAAoB,EAAK,KAAK,KAAM,IAK/C,EAAU,EAAK,KAAK,OAAS,KAAM,CACrC,GAAM,GACF,GAAU,EAAK,KAAM,EAAW,EAAS,KAAK,kBAC7C,GACH,EAAC,GAAY,GAAoB,EAAK,KAAK,KAAM,IAEnD,GAAM,GAAiB,EAAQ,eAC3B,EAAK,UAAU,GACjB,EAAS,KAAM,EAA8B,KAAK,GAChD,GAAU,GAAY,EACtB,EAAQ,eAAiB,EACzB,KAAK,uBACD,EAAU,EAAK,KAAM,EAAW,EAAS,EACzC,EAAa,GACjB,KAAK,kBACD,EAAK,KAAM,EAAO,EAAS,EAAW,EAAO,GAC1C,KAGT,GAAU,GAAY,EACtB,KAAK,uBACD,EAAU,EAAK,KAAM,EAAW,EAAS,EACzC,EAAa,GACjB,KAAK,kBACD,EAAK,KAAM,EAAO,EAAS,EAAW,EAAO,QAGnD,MAAK,kBACD,EAAK,KAAM,EAAO,EAAS,EAAW,EAAO,GAGrD,MAAO,GAGD,kBACJ,EAAY,EAA2B,EACvC,EAA4B,EAC5B,EAAsB,CACxB,EAAK,SAAS,QAAS,GAAa,CAClC,GAAM,CAAC,GAAc,GAAoB,EAAU,KAAM,GACrD,EAAM,IAAa,CAAC,EAAU,IAAI,EAAU,OAI5C,GAAU,KAAO,QACf,EAAU,WAAW,KAAK,GACjB,CAAC,CAAC,GAAU,EAAM,EAAW,KAExC,GAAM,GAAY,GAClB,EAAM,KAAK,CAAC,SAAU,EAAQ,eAAgB,KAAM,KAGhD,EAAU,WAAW,MAAM,GAClB,CAAC,CAAC,GAAU,EAAM,EAAW,KAE5C,GAAM,GAAY,GAClB,EAAM,KAAK,CAAC,SAAU,EAAQ,eAAgB,KAAM,QAQ1D,SAAO,CACL,OAAO,KAAK,KAAK,WACZ,QACG,GAAO,KAAK,UAAU,GAAK,QAAQ,GAAU,EAAO,YAGtD,uBAAuB,EAAsB,CACnD,OAAO,KAAK,GAAQ,QAAQ,GAAO,CACjC,GAAM,GAAQ,EAAO,GACf,CAAC,GAAc,GAAc,GAC7B,EAAO,KAAK,MAAM,MAAM,GAC9B,GAAI,EAAK,WAAW,OAAY,EAAK,WAAW,MAAS,MAAO,CAC9D,GAAM,GAAQ,EAAK,WAAW,MAAS,MACjC,EAAQ,EAAM,SAAW,EAAM,MAAM,QACvC,EAAM,MAAM,MACR,CAAC,EAAK,IAAU,EAAM,KAAW,IAAM,EAAM,KAAW,GAChE,EAAK,OACD,EACA,IAAM,sBAAsB,EAAK,mDACG,gBAC5B,EAAM,UAEhB,EAAK,WAAW,OAAY,EAAK,WAAW,MAAS,OACvD,EAAK,OACD,EAAM,QAAU,EAAK,WAAW,MAAS,MACzC,IAAM,sBAAsB,EAAK,kDAE1B,EAAK,WAAW,MAAS,kBAAkB,EAAM,WAK1D,UAAU,EAAsB,CACtC,GAAM,GAAyB,GAC/B,OAAW,KAAa,GACtB,GAAI,KAAK,YAAc,MAAQ,KAAK,WAAW,QAAU,MACrD,KAAK,WAAW,OAAO,IAAc,KAAM,CAC7C,GAAM,GAAS,KAAK,WAAW,OAAO,GACtC,EAAO,EAAO,MAAQ,EAAO,OAE7B,GAAO,GAAa,EAAO,GAG/B,MAAO,GAGD,YAAY,EAAsB,CACxC,GAAM,GAAa,OAAO,KAAK,GAAQ,OAAO,GAAO,CACnD,GAAM,CAAC,GAAY,GAAc,GACjC,MAAO,MAAK,MAAM,MAAM,IAAa,OAEvC,GAAI,EAAW,OAAS,EACtB,KAAM,IAAI,OACN,uDACU,iCAIV,WAAW,EAAiB,CAClC,MAAO,GAAQ,IAAI,GACb,KAAK,YAAc,MAAQ,KAAK,WAAW,SAAW,MACtD,KAAK,WAAW,QAAQ,IAAS,KACpB,KAAK,WAAW,QAAQ,GACzB,KAET,EACN,IAGG,aAAa,EAAiB,CACpC,EAAQ,QAAQ,GAAO,CACrB,GAAM,CAAC,GAAkB,GAAc,GACvC,GAAI,CAAC,KAAK,MAAM,MAAM,GACpB,KAAM,IAAI,OAAM,eAAe,oCC7lBjC,IAAA,KAAsB,CAC1B,YACa,EAAwC,GACxC,EAA6B,GAAE,CAD/B,KAAA,sBAAA,EACA,KAAA,aAAA,EAWb,aAAa,EAAc,EAAoB,CAC7C,KAAK,sBAAsB,GAAQ,EAAU,OAC7C,KAAK,aAAa,EAAU,IAAM,EAQpC,yBAAyB,EAAY,CACnC,MAAO,MAAK,sBAAsB,GAOpC,iBAAiB,EAAU,CACzB,MAAO,MAAK,aAAa,GAM3B,SAAO,CACL,OAAW,KAAO,MAAK,aACrB,KAAK,aAAa,GAAK,gBACvB,MAAO,MAAK,aAAa,GAG3B,OAAW,KAAQ,MAAK,sBACtB,KAAK,sBAAsB,GAAM,UACjC,MAAO,MAAK,sBAAsB,KC3C3B,IAAqB,oBACrB,IAAqB,aAW5B,GAAA,KAAiB,CAmDrB,YACY,EACA,EAA8B,GAAE,CADhC,KAAA,SAAA,EACA,KAAA,YAAA,EAnDJ,KAAA,QAAU,MAoDZ,GAAe,MACjB,MAAK,YAAc,IAErB,KAAK,gBAAkB,GAAI,QA/CzB,eAAY,CACd,MAAO,MAAK,WAGV,aAAU,CACZ,MAAO,MAAK,SAAS,cAGnB,cAAW,CACb,MAAO,MAAK,SAAS,eAGnB,SAAM,CACR,MAAO,MAAK,SAAS,UAGnB,UAAO,CACT,MAAO,MAAK,SAAS,WAGnB,UAAO,CACT,MAAO,MAAK,SAAS,aAGnB,WAAQ,CACV,MAAO,MAAK,UAAU,uBAGpB,iBAAc,CAChB,MAAO,MAAK,UAqBN,eAAa,CACnB,GAAM,GAAO,KAAK,SAClB,GAAK,EAAsB,MAAQ,KAEjC,KAAK,QAAU,UACN,KAAK,YAAY,aAAe,KACzC,KAAK,QAAU,GAAG,mBAAmB,EAAgB,KAAK,iBACrD,CACL,GAAM,GAAW,GAAG,gBAAgB,EAAgB,KAAK,aACzD,GAAI,EAAS,SAAW,EAGtB,EAAS,KAAK,GAAG,mBAAmB,EAAgB,KAAK,sBAChD,EAAS,OAAS,EAC3B,KAAM,IAAI,OACN,wBAAwB,EAAS,kCACzB,CAAC,OAEf,KAAK,QAAU,EAAS,SAQtB,OAAI,CAER,GADA,KAAK,gBACD,KAAK,QAAQ,MAAQ,KACvB,KAAM,IAAI,OACN,iHAGN,GAAM,GAAY,KAAM,MAAK,QAAQ,OAErC,MAAO,MAAK,SAAS,GASvB,SAAS,EAA4B,CACnC,KAAK,UAAY,EACjB,GAAM,GAAQ,KAAK,UAAU,cAEzB,EACA,KAAK,UAAU,qBAAuB,MACtC,KAAK,UAAU,oBAAoB,WAAa,KAClD,EACK,KAAK,UAAU,oBAA4B,UAGhD,EAAY,KAAK,UAAU,UAE7B,KAAK,UAAY,EAEjB,KAAK,QAAU,GAAG,EAAM,SAAS,YAAY,EAAM,SAAS,cAC5D,GAAM,GACF,GAAG,cAAc,KAAK,UAAU,WAAY,KAAK,UAAU,aAQ/D,GAPA,KAAK,SAAW,GAAI,IAChB,GAAgB,SAAS,eAAe,EAAO,KAAK,YACxD,KAAK,SAAS,UAAY,KAAK,6BAA6B,GAG5D,KAAK,SAAS,gBAAkB,KAAK,gBAEjC,EAAU,kBAAoB,MAC7B,EAAU,iBAA0C,MAAQ,KAAM,CACrE,GAAM,GACF,GAAgB,SAAS,eAAe,EAAU,kBACtD,KAAK,YAAc,GAAI,IAAc,GACrC,KAAK,YAAY,UAAY,KAAK,SAAS,UAI3C,KAAK,YAAY,gBAAkB,KAAK,gBACxC,KAAK,YAAY,aAAa,GAAI,IAGpC,MAAO,QA+CH,MAAK,EAAmC,EAAsB,CAElE,GAAI,MAAO,IAAiB,SAAU,CACpC,GAAM,GAAW,GAAG,gBAAgB,GACpC,GAAI,EAAS,SAAW,EACtB,KAAM,IAAI,OACN,0CAA0C,MACzC,GAAI,EAAS,OAAS,EAC3B,KAAM,IAAI,OACN,wBAAwB,EAAS,kCACzB,MAEd,EAAe,EAAS,GAE1B,GAAI,EAAa,MAAQ,KACvB,KAAM,IAAI,OACN,+GAIN,MAAO,GAAa,KAAK,KAAK,WAyChC,QAAQ,EAAwC,EAA2B,CAEzE,MAAO,MAAK,QAAQ,EAAQ,KAAK,aAG3B,gBAAgB,EACc,CACpC,GAAI,CAAE,aAAkB,MAAW,CAAC,MAAM,QAAQ,GAEhD,MAAO,GAGT,GADA,EAAS,MAAM,QAAQ,GAAU,EAAS,CAAC,GACvC,EAAO,SAAW,KAAK,WAAW,OACpC,KAAM,IAAI,OACN,mDACuB,KAAK,WAAW,wCACpB,EAAO,yBAEhC,MAAO,MAAK,WAAW,OAAO,CAAC,EAAK,EAAW,IAC7C,GAAI,GAAc,EAAoB,GAC/B,GACN,IAGG,iBAAiB,EAAwB,CAC/C,MAAA,GAAU,GAAW,KAAK,YAClB,MAAM,QAAQ,GAAuB,EAAZ,CAAC,GAmBpC,QAAQ,EAAwC,EAAyB,CAEvE,EAAS,KAAK,gBAAgB,GAC9B,EAAU,KAAK,iBAAiB,GAChC,GAAM,GAAS,KAAK,SAAS,QAAQ,EAAQ,GAC7C,MAAO,GAAO,OAAS,EAAI,EAAS,EAAO,QAkBvC,cACF,EACA,EAAyB,CAC3B,EAAS,KAAK,gBAAgB,GAC9B,EAAU,KAAK,iBAAiB,GAChC,GAAM,GAAS,KAAM,MAAK,SAAS,aAAa,EAAQ,GACxD,MAAO,GAAO,OAAS,EAAI,EAAS,EAAO,GAGrC,6BAA6B,EAAmB,CACtD,MAAO,QAAO,KAAK,GAAK,OAAO,CAAC,EAAyB,IACvD,GAAO,GAAO,CAAC,EAAI,IACZ,GACN,IAQL,SAAO,CACL,KAAK,SAAS,UAEV,KAAK,aACP,KAAK,YAAY,UAGnB,KAAK,gBAAgB,YAkCzB,kBACI,EACA,EAA0B,GAAE,CAC9B,GAAI,GAAY,KACd,KAAM,IAAI,OACN,0GAGF,GAAW,MACb,GAAU,IAGR,EAAQ,WACL,EAA0B,MAAQ,MAC/B,GAAoB,SAAS,MACjC,GAAY,EAAsB,KAEpC,EAAW,GAAG,IAAW,MAAqB,OAGlD,GAAM,GAAQ,GAAI,IAAW,EAAU,GACvC,MAAA,MAAM,GAAM,OACL,ECrbT,GAAM,KAAU,QEHhB,GAAA,GAAA,GAAA,GAAA,CAAA,WAAA,IAAA,GAAA,QAAA,IAAA,GAAA,eAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,MAAA,IAAA,IAAA,IAAA,IAAA,IAAA,KAAA,IAAA,IAAA,UAAA,IAAA,IAAA,WAAA,IAAA,IAAA,aAAA,IAAA,IAAA,OAAA,IAAA,IAAA,IAAA,IAAA,MCoBA,GAAA,KAA4B,GAAA,MCD5B,IAA4B,GAAA,MC+BtB,aAAkB,EAAY,EAAgC,CAElE,MAAO,IAAgB,EAAO,GAShC,YACI,EAAY,EACZ,EAAsB,GAAI,KAAO,EAAuB,GAAI,KAAK,CAEnE,GAAI,GAAS,KACX,MAAO,MAET,GAAI,EAAY,IAAI,GAClB,KAAM,IAAI,OAAM,0CAElB,GAAI,EAAK,IAAI,GACX,MAAO,GAAK,IAAI,GAElB,GAAM,GAAS,EAAM,GAErB,GAAI,EAAO,SAAW,EAAO,QAAU,KACrC,KAAM,IAAI,OACN,qEAGN,GAAK,EAAO,QAGL,GAAI,GAAW,GAAQ,CAE5B,GAAM,GAA4B,MAAM,QAAQ,GAAS,GAAK,GAC9D,EAAY,IAAI,GAChB,OAAW,KAAK,GAAO,CACrB,GAAM,GAAQ,EAAM,GACd,EAAc,GAAgB,EAAO,EAAO,EAAM,GACxD,EAAe,GAAK,EAEtB,MAAA,GAAY,OAAO,GACZ,MAEP,MAAM,IAAI,OAAM,yCAAyC,SAdzD,OAAA,GAAK,IAAI,EAAO,EAAO,OAChB,EAAO,MA0CZ,aACF,EAAe,EAAsC,GAAS,CAChE,MAAO,IAAgB,EAAQ,GAOjC,YACI,EAAe,EACf,EAAuB,GAAI,KAAK,CAGlC,GAAM,GAAQ,EAAO,GACrB,GAAI,EAAY,IAAI,GAClB,KAAM,IAAI,OAAM,0CAElB,GAAM,GAAS,EAAM,GAErB,GAAI,EAAO,SAAW,EAAO,QAAU,KACrC,KAAM,IAAI,OACN,qEAGN,GAAK,EAAO,QAEL,GAAI,GAAW,GAAQ,CAE5B,GAAM,GAA4B,MAAM,QAAQ,GAAS,GAAK,GAC9D,EAAY,IAAI,GAChB,OAAW,KAAK,GAAO,CACrB,GAAM,GAAW,EAAO,IAAI,GAAK,EAAE,IAC7B,EAAc,GAAgB,EAAU,EAAO,GACrD,EAAe,GAAK,EAEtB,MAAA,GAAY,OAAO,GACZ,MAEP,MAAM,IAAI,OAAM,yCAAyC,SAbzD,OAAO,GAAO,MAkBZ,YAAoB,EAAQ,CAChC,MAAI,KAAM,KACD,KAIL,GAAW,EAAE,IACR,CAAC,MAAO,KAAM,QAAS,IAEvB,CAAC,MAAO,EAAG,QAAS,IAqC/B,kBACI,EAAY,EAAqC,CACnD,GAAM,GAA+B,GAAI,KAGzC,GAAgB,EAAO,EAAO,GAM9B,OAAW,KAAO,OAAM,KAAK,EAAK,QAAS,CACzC,GAAM,GAAQ,EAAK,IAAI,GACvB,GAAO,EAAK,UAAU,GAAQ,CAC5B,GAAM,GAAc,KAAM,GAC1B,EAAK,IAAI,EAAK,IAQlB,MADe,IAAgB,EAAO,EAAO,GAUzC,YAAqB,EAAQ,CACjC,MAAO,IAAO,MAAS,CAAC,YAAY,OAAO,IACtC,OAAM,QAAQ,IACb,MAAO,IAAQ,UAAY,CAAE,aAAkB,MAYjD,aAAuB,EAAQ,CACnC,MAAO,IAAO,MAAQ,IAAY,IAAQ,MAAM,QAAQ,IACnD,MAAO,IAAQ,UAAa,YAAkB,KAC5C,EAAK,aAAa,GAO3B,aAAqB,EAAU,CAC7B,MACI,KAAU,MACT,MAAO,IAAU,UAAY,MAAO,IAAU,WC9P/C,aAAuB,EAAY,CACvC,MAAO,KAAQ,EAAW,KAI5B,aAAuB,EAAS,CAC9B,MAAI,aAAmB,IACb,CAAC,MAAO,EAAK,QAAS,QAAS,IAC9B,GAAW,GACb,CAAC,MAAO,KAAM,QAAS,IAEvB,CAAC,MAAO,EAAM,QAAS,ICX5B,GAAA,IAAA,KAAiB,CAcrB,YAAmB,EAAgB,CACjC,GADiB,KAAA,SAAA,EAVT,KAAA,MAAQ,EACR,KAAA,IAAM,EAUV,GAAY,KACd,KAAM,IAAI,YAAW,mDAEvB,GAAI,EAAW,EACb,KAAM,IAAI,YAAW,6CAEvB,KAAK,KAAO,GAAI,OAAS,GACzB,KAAK,gBAAkB,EAAI,EAMnB,KAAK,EAAa,CAE1B,KAAO,EAAQ,GACb,GAAS,KAAK,gBAEhB,MAAO,GAAQ,KAAK,gBAGZ,IAAI,EAAa,CACzB,GAAI,EAAQ,EACV,KAAM,IAAI,YAAW,uCAEvB,MAAO,MAAK,KAAK,EAAQ,KAAK,UAGtB,IAAI,EAAe,EAAQ,CACnC,GAAI,EAAQ,EACV,KAAM,IAAI,YAAW,uCAEvB,KAAK,KAAK,EAAQ,KAAK,UAAY,EAMrC,QAAM,CACJ,GAAI,GAAS,KAAK,IAAM,KAAK,MAC7B,MAAI,GAAS,GACX,GAAS,KAAK,gBAAkB,GAE3B,EAQT,QAAM,CACJ,MAAO,MAAK,WAAa,KAAK,SAQhC,SAAO,CACL,MAAO,MAAK,WAAa,EAM3B,KAAK,EAAQ,CACX,GAAI,KAAK,SACP,KAAM,IAAI,YAAW,wBAEvB,KAAK,IAAI,KAAK,IAAK,GACnB,KAAK,IAAM,KAAK,KAAK,KAAK,IAAM,GAMlC,QAAQ,EAAW,CACjB,OAAW,KAAS,GAClB,KAAK,KAAK,GAOd,KAAG,CACD,GAAI,KAAK,UACP,KAAM,IAAI,YAAW,yBAEvB,KAAK,IAAM,KAAK,KAAK,KAAK,IAAM,GAChC,GAAM,GAAS,KAAK,IAAI,KAAK,KAC7B,MAAA,MAAK,IAAI,KAAK,IAAK,QACZ,EAMT,QAAQ,EAAQ,CACd,GAAI,KAAK,SACP,KAAM,IAAI,YAAW,wBAEvB,KAAK,MAAQ,KAAK,KAAK,KAAK,MAAQ,GACpC,KAAK,IAAI,KAAK,MAAO,GAMvB,OAAK,CACH,GAAI,KAAK,UACP,KAAM,IAAI,YAAW,yBAEvB,GAAM,GAAS,KAAK,IAAI,KAAK,OAC7B,MAAA,MAAK,IAAI,KAAK,MAAO,QACrB,KAAK,MAAQ,KAAK,KAAK,KAAK,MAAQ,GAC7B,EAYT,cAAc,EAAqB,CACjC,GAAI,KAAK,UACP,KAAM,IAAI,YAAW,yBAEvB,GAAM,GAAQ,KAAK,KAAK,KAAK,MAAQ,GAC/B,EAAS,KAAK,IAAI,GACxB,MAAA,MAAK,IAAI,EAAO,KAAK,OACd,ICzJL,GAAA,aAAoC,GAAa,CAMrD,aAAA,CACE,MAAM,GAAkB,kBAG1B,QAAM,CACJ,MAAO,GAGT,KAAK,EAAQ,CACP,MAAM,UACR,KAAK,SAEP,MAAM,KAAK,GAGb,QAAQ,EAAQ,CACV,MAAM,UACR,KAAK,SAEP,MAAM,QAAQ,GAMR,QAAM,CACZ,GAAM,GAAc,KAAK,SAAW,EAC9B,EAAU,GAAI,OAAS,GACvB,EAAM,KAAK,SAIjB,OAAS,GAAI,EAAG,EAAI,EAAK,IACvB,EAAQ,GAAK,KAAK,IAAI,KAAK,KAAK,KAAK,MAAQ,IAG/C,KAAK,KAAO,EACZ,KAAK,SAAW,EAChB,KAAK,gBAAkB,EAAI,KAAK,SAChC,KAAK,MAAQ,EACb,KAAK,IAAM,IA7CE,GAAA,iBAAmB,GJkB9B,YAA+B,EAAU,CAC7C,MAAO,IAAI,KAAc,GAwBrB,YACF,EACiD,CACnD,MAAO,IAAI,KAAqB,GAe5B,aACF,EACA,EAAwC,CAC1C,MAAO,IAAI,IAAgB,EAAe,GAkDtC,aACF,EACA,EAAgC,GAAgB,KAAI,CACtD,MAAO,IAAI,KAAe,EAAW,GAUjC,GAAA,IAAA,KAA4B,MAwB1B,UAAO,CACX,GAAM,GAAc,GAChB,EAAI,KAAM,MAAK,OACnB,KAAO,CAAC,EAAE,MACR,EAAO,KAAK,EAAE,OACd,EAAI,KAAM,MAAK,OAEjB,MAAO,QAcH,iBAAc,CAClB,GAAM,GAAS,KAAK,SAAS,KACvB,EAAc,GAChB,EAAI,KAAM,GAAO,OACrB,KAAO,CAAC,EAAE,MACR,EAAO,KAAK,EAAE,OACd,EAAI,KAAM,GAAO,OAEnB,MAAO,QAUH,eAAY,CAChB,GAAI,GAAI,KAAM,MAAK,OACnB,KAAO,CAAC,EAAE,MACR,EAAI,KAAM,MAAK,YAWb,cAAa,EAA4B,CAC7C,GAAI,GAAI,KAAM,MAAK,OACf,EAAiB,EAAU,EAAE,OACjC,KAAQ,CAAC,EAAE,MAAS,GAClB,EAAI,KAAM,MAAK,OACf,EAAiB,EAAU,EAAE,OAgBjC,aAAa,EAAkC,CAC7C,MAAO,IAAI,KAA0B,KAAM,GAa7C,OAAO,EAAgC,CACrC,MAAO,IAAI,KAAe,KAAM,GAWlC,IAAO,EAA0B,CAC/B,MAAO,IAAI,KAAY,KAAM,GAW/B,SAAY,EAAmC,CAC7C,MAAO,IAAI,IAAiB,KAAM,GAWpC,eAAkB,EAAmC,CACnD,MAAO,IAAI,IAAiB,KAAM,GAAW,SAW/C,QAAW,EAA4B,CACrC,MAAO,IAAI,KAAgB,KAAM,QAQ7B,cAAa,EAAqB,CACtC,MAAO,MAAK,IAAI,GAAG,oBAUf,eAAc,EAAiC,CACnD,MAAO,MAAK,eAAe,GAAG,aAAa,GAAM,IAAM,IAqBzD,cAAc,EAAmB,EAAiB,GAAI,CACpD,MAAO,IAAI,KAAsB,KAAM,EAAW,GAmCpD,iBACI,EAAmB,EAAiB,GAEpC,EAAsC,GAAS,CAMjD,MAHmB,MAAK,cAAc,EAAW,GAG/B,IAAI,GAAK,IAAQ,EAAG,IAaxC,YACI,EACA,EAAwC,CAC1C,MAAO,IAAI,IACP,GAAkB,CAAC,KAAM,IAAY,GAU3C,KAAK,EAAa,CAChB,MAAI,GAAQ,GAAK,GAAS,KACjB,KAEF,GAAI,KAAa,KAAM,GAShC,KAAK,EAAa,CAChB,MAAI,GAAQ,GAAK,GAAS,KACjB,KAEF,GAAI,KAAa,KAAM,GAYhC,SAAS,EAAkB,CACzB,MAAO,IAAI,IAAiB,KAAM,GAapC,QAAQ,EAAoB,EAAa,CACvC,MAAO,IAAI,KAAgB,KAAM,EAAY,GAO/C,QAAM,CACJ,MAAO,IAAI,KAAe,QAa9B,IAAA,aAA+B,GAAe,CAE5C,YAAsB,EAAU,CAC9B,QADoB,KAAA,MAAA,EADd,KAAA,KAAO,EAKf,SAAO,CACL,MAAO,YAAY,KAAK,MAAM,oBAG1B,OAAI,CACR,GAAI,KAAK,MAAQ,KAAK,MAAM,OAC1B,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,GAAM,GAAO,KAAK,MAAM,KAAK,MAC7B,MAAA,MAAK,OACE,CAAC,MAAO,IAAU,GAAO,KAAM,MAI1C,IAAA,aAAsC,GAAe,CACnD,YACc,EAA2D,CACvE,QADY,KAAA,OAAA,EAId,SAAO,CACL,MAAO,qBAGH,OAAI,CACR,GAAI,CACF,MAAO,MAAK,eACL,EADK,CAGZ,KAAA,GAAE,QACE,mDAAmD,EAAE,UACnD,KAKZ,IAAA,aAAgC,GAAe,CAK7C,YAAsB,EAAyB,CAC7C,QADoB,KAAA,SAAA,EAEpB,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,2BAGpB,OAAI,CAKR,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,aAAU,CACtB,MAAO,MAAK,SAAS,SAIzB,IAAA,aAA8B,GAAe,CAQ3C,YAAsB,EAAqC,EAAgB,CACzE,QADoB,KAAA,SAAA,EAAqC,KAAA,SAAA,EAF3D,KAAA,MAAQ,EAIN,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,yBAGpB,OAAI,CAKR,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,aAAU,CAKtB,KAAO,KAAK,QAAU,KAAK,UAAU,CACnC,GAAM,GAAU,KAAM,MAAK,SAAS,OAEpC,GAAI,EAAQ,KACV,MAAO,GAEN,GAAQ,EAAQ,OAErB,MAAO,MAAK,SAAS,SAIzB,IAAA,aAA8B,GAAe,CAE3C,YAAsB,EAAqC,EAAgB,CACzE,QADoB,KAAA,SAAA,EAAqC,KAAA,SAAA,EAD3D,KAAA,MAAQ,EAKR,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,yBAGpB,OAAI,CACR,MAAI,MAAK,SAAW,KAAK,SAChB,CAAC,MAAO,KAAM,KAAM,IAEtB,KAAK,SAAS,SAOzB,IAAA,aAAuC,GAAiB,CAKtD,YACc,EAAqC,EACrC,EAAuB,GAAI,CACvC,QAFY,KAAA,SAAA,EAAqC,KAAA,UAAA,EACrC,KAAA,qBAAA,EAEZ,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,kCAGpB,OAAI,CAKR,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,aAAU,CACtB,GAAM,GAAa,GACnB,KAAO,EAAM,OAAS,KAAK,WAAW,CACpC,GAAM,GAAO,KAAM,MAAK,SAAS,OACjC,GAAI,EAAK,KACP,MAAI,MAAK,sBAAwB,EAAM,OAAS,EACvC,CAAC,MAAO,EAAO,KAAM,IAEvB,CAAC,MAAO,KAAM,KAAM,IAE7B,EAAM,KAAK,EAAK,OAElB,MAAO,CAAC,MAAO,EAAO,KAAM,MAIhC,IAAA,aAAgC,GAAe,CAK7C,YACc,EACA,EAAgC,CAC5C,QAFY,KAAA,SAAA,EACA,KAAA,UAAA,EAEZ,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,2BAGpB,OAAI,CAKR,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGA,aAAU,CACtB,OAAa,CACX,GAAM,GAAO,KAAM,MAAK,SAAS,OACjC,GAAI,EAAK,MAAQ,KAAK,UAAU,EAAK,OACnC,MAAO,GAEN,GAAQ,EAAK,UAKtB,IAAA,aAAgC,GAAe,CAC7C,YACc,EACA,EAA0B,CACtC,QAFY,KAAA,SAAA,EACA,KAAA,UAAA,EAId,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,wBAGpB,OAAI,CACR,GAAM,GAAO,KAAM,MAAK,SAAS,OACjC,GAAI,EAAK,KACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,GAAM,GAAkB,GAAY,sBAAsB,EAAK,OAOzD,EAAS,KAAK,UAAU,EAAK,OAC7B,EAAmB,GAAY,sBAAsB,GAI3D,OAAW,KAAK,GACN,GAAY,eAAe,EAAG,IACpC,EAAE,UAGN,MAAO,CAAC,MAAO,EAAQ,KAAM,MAIjC,IAAA,aAA2C,GAAe,CAExD,YACc,EACA,EAAkC,CAC9C,QAFY,KAAA,SAAA,EACA,KAAA,QAAA,EAHd,KAAA,MAAQ,EAKN,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,KAGtD,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,iCAOpB,OAAI,CAKR,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAGR,aAAU,CACd,OACE,GAAI,CACF,MAAO,MAAM,MAAK,SAAS,aACpB,EADoB,CAE3B,GAAI,CAAC,KAAK,QAAQ,GAChB,MAAO,CAAC,MAAO,KAAM,KAAM,OAYrC,GAAA,aAAqC,GAAe,CAClD,YACc,EACA,EAAmC,CAC/C,QAFY,KAAA,SAAA,EACA,KAAA,UAAA,EAId,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,6BAGpB,OAAI,CACR,GAAM,GAAO,KAAM,MAAK,SAAS,OACjC,GAAI,EAAK,KACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,GAAM,GAAkB,GAAY,sBAAsB,EAAK,OAOzD,EAAS,KAAM,MAAK,UAAU,EAAK,OACnC,EAAmB,GAAY,sBAAsB,GAI3D,OAAW,KAAK,GACN,GAAY,eAAe,EAAG,IACpC,EAAE,UAGN,MAAO,CAAC,MAAO,EAAQ,KAAM,MAe3B,GAAA,aAA6C,GAAe,CAQhE,aAAA,CACE,QACA,KAAK,YAAc,GAAI,IACvB,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,UAGhD,OAAI,CAKR,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,cAiBR,aAAU,CAId,KAAO,KAAK,YAAY,WAAa,GAEnC,GAAI,CAAC,KAAM,MAAK,OACd,MAAO,CAAC,MAAO,KAAM,KAAM,IAG/B,MAAO,CAAC,MAAO,KAAK,YAAY,QAAS,KAAM,MAGnD,IAAA,aAAoC,GAAoB,CACtD,YACc,EACA,EAA4B,CACxC,QAFY,KAAA,SAAA,EACA,KAAA,UAAA,EAId,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,4BAGpB,OAAI,CACR,GAAM,GAAO,KAAM,MAAK,SAAS,OACjC,GAAI,EAAK,KACP,MAAO,GAET,GAAM,GAAkB,GAAY,sBAAsB,EAAK,OAMzD,EAAc,KAAK,UAAU,EAAK,OAClC,EACC,GAAY,sBAAsB,GACzC,KAAK,YAAY,QAAQ,GAIzB,OAAW,KAAK,GACN,GAAY,eAAe,EAAG,IACpC,EAAE,UAIN,MAAO,KAaL,GAAA,aAAkC,GAAe,CASrD,YACI,EACiB,EAAwC,CAC3D,QADmB,KAAA,iBAAA,EARb,KAAA,SAAuC,KAGvC,KAAA,SAA4B,KAOlC,KAAK,cAAgB,EAGvB,SAAO,CAEL,MAAO,8DAGH,OAAI,CACR,MAAA,MAAK,SAAW,KAAK,cAAc,KAAK,UACjC,KAAK,cAGA,eAAc,EAAoC,CAQ9D,GADA,KAAM,GACF,KAAK,UAAY,KAAM,CACzB,GAAM,GAAiB,KAAM,MAAK,cAAc,OAChD,GAAI,EAAe,KAEjB,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,KAAK,SAAW,EAAe,MAC3B,KAAK,kBAAoB,MAC3B,MAAK,SAAW,KAAK,SAAS,aAAa,KAAK,mBAGpD,GAAM,GAAa,KAAM,MAAK,SAAS,OACvC,MAAI,GAAW,KACb,MAAK,SAAW,KACT,KAAK,cAAc,IAErB,IAIC,GAAZ,AAAA,UAAY,EAAe,CACzB,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,SAAA,GAAA,WACA,EAAA,EAAA,QAAA,GAAA,YAHU,IAAA,IAAe,KAmC3B,GAAA,KAAA,aAAwD,GAAe,CAIrE,YACuB,EACA,EAAgC,GAAgB,KAAI,CACzE,QAFqB,KAAA,UAAA,EACA,KAAA,aAAA,EALf,KAAA,MAAQ,EACR,KAAA,eAA6C,KAQrD,SAAO,CAEL,MAAO,wDAGK,WAAU,EAAsC,CAI5D,KAAM,GAIN,GAAI,GAAe,EACf,EAAgB,EAEpB,WAAiB,EAA4B,CAC3C,MAAI,aAAqB,IAEhB,CACL,MAFa,EAAU,OAET,KAAK,GACjB,KACI,EAAE,MACJ,IAEK,EAAE,QAEX,QAAS,IAGJ,CAAC,MAAO,KAAM,QAAS,IAIlC,GAAM,GAAY,KAAM,IAAmB,KAAK,UAAW,GAE3D,GAAI,IAAiB,EAEnB,MAAO,CAAC,MAAO,KAAM,KAAM,IAE7B,GAAI,EAAgB,EAClB,OAAQ,KAAK,kBACN,IAAgB,KACnB,KAAM,IAAI,OACN,qEACyB,KAAK,cAC/B,IAAgB,SACnB,MAAO,CAAC,MAAO,KAAM,KAAM,QACxB,IAAgB,iBAMzB,MAAA,MAAK,QACE,CAAC,MAAO,EAAQ,KAAM,SAGzB,OAAI,CACR,MAAA,MAAK,eAAiB,KAAK,UAAU,KAAK,gBACnC,KAAK,iBAcV,GAAA,aAAmC,GAAe,CAGtD,YACc,EAAqC,EAAkB,CACnE,QADY,KAAA,SAAA,EAAqC,KAAA,WAAA,EAEjD,KAAK,OAAS,GAAI,IAAuC,GAG3D,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,wBAOhB,QAAM,CACd,KAAO,CAAC,KAAK,OAAO,UAAU,CAC5B,GAAM,GAAI,KAAK,SAAS,OACxB,KAAK,OAAO,KAAK,IAIrB,MAAI,CACF,MAAA,MAAK,SAIE,KAAK,OAAO,UAUjB,IAAA,aAAkC,GAAmB,CAUzD,YACc,EAAqC,EAC/C,EAAa,CACf,MAAM,EAAU,GAFJ,KAAA,SAAA,EAAqC,KAAA,WAAA,EAH3C,KAAA,kBAAoB,GAM1B,KAAK,OAAoB,IAAA,KAAK,GAAW,EAAK,MAAM,YACpD,KAAK,SAAW,QAAQ,QAAQ,CAAC,MAAO,KAAM,KAAM,UAGhD,OAAI,CAKR,MAAA,MAAK,SAAW,KAAK,SAAS,KAAK,IAAM,KAAK,cACvC,KAAK,SAGN,UAAU,EAAW,CAC3B,MAAO,MAAK,MAAM,KAAK,SAAW,GAG1B,aAAW,CACnB,MAAO,MAAK,UAAU,KAAK,OAAO,eAG9B,aAAU,CAKd,IAHK,KAAK,mBACR,KAAK,SAEA,CAAC,KAAK,OAAO,WAAW,CAC7B,GAAM,GAAc,KAAK,cACnB,EAAS,KAAM,MAAK,OAAO,cAAc,GAC/C,GAAI,EAAO,KACT,KAAK,kBAAoB,OAEzB,OAAA,MAAK,SACE,EAGX,MAAO,CAAC,MAAO,KAAM,KAAM,MDtmCzB,GAAA,KAAuB,CAA7B,aAAA,CAWW,KAAA,KAAe,KA+DxB,MAAM,EAAmB,EAAiB,GAAI,CAC5C,GAAM,GAAO,KACV,EAAK,OACJ,EAAY,EAAG,IAAM;QACrB,KACJ,GAAI,GACJ,MAAI,MAAK,OAAS,UAAY,KAAK,MAAQ,KAGzC,EAAO,KAAK,KACH,EAGT,EAAO,KAAK,KAAK,KAAK,KAAO,GAI7B,EAAO,KAAK,MAAM,KAAK,KAAO,GAEzB,GAAsB,SACnB,MAAM,GAAK,YACd,iBAAiB,EAAW,EAAgB,KAChD,GAkBL,YAAY,EAAmB,CAC7B,GAAM,GAAO,KACT,EACJ,MAAI,MAAK,OAAS,UAAY,EAAQ,OAAS,SAG7C,EAAO,SACE,KAAK,MAAQ,MAAQ,EAAQ,MAAQ,KAG9C,EAAO,KAAK,KAAO,EAAQ,KAI3B,EAAO,KAEF,GACH,SACK,MAAM,GAAK,YAAY,YAAY,KAAM,GAAQ,YACtD,GAmBN,OAAO,EAAgC,CACrC,GAAM,GAAO,KACT,EACJ,MAAI,MAAK,OAAS,SAEhB,EAAO,SAIP,EAAO,KAEF,GAAsB,SACnB,MAAM,GAAK,YAAY,OAAO,GAAQ,EAAK,IAAM,EAAU,KAClE,QAmBC,cAAa,EAAqB,CACtC,MAAQ,MAAM,MAAK,YAAY,aAAa,GAkB9C,IAAkC,EAA0B,CAC1D,GAAM,GAAO,KACb,MAAO,IAAsB,SACnB,MAAM,GAAK,YAAY,IAAI,GAAQ,EAAK,IAAM,EAAU,KAC/D,KAAK,MA0BV,SAAuC,EAAmC,CAExE,GAAM,GAAO,KACb,MAAO,IAAsB,SACnB,MAAM,GAAK,YAAY,SAAS,GACvC,KAAK,MAYV,SAAS,EAAkB,CACzB,GAAI,GAAc,KAChB,KAAM,IAAI,YACN,6DAGN,GAAM,GAAO,KACb,MAAO,IACH,SAAa,MAAM,GAAK,YAAY,SAAS,GAAa,KAAK,MAqBrE,OAAO,EAAc,CACnB,GAAM,GAAO,KACT,EACJ,MAAI,MAAK,MAAQ,MAAQ,EAAQ,EAI/B,EAAO,KAAK,KAAO,EACV,IAAU,EAEnB,EAAO,EACE,KAAK,MAAQ,MAAS,KAAU,QAAa,EAAQ,GAG9D,EAAO,SAGP,EAAO,KAEF,GAAsB,SAAW,CACtC,GAAM,GAAmB,GACrB,SAAa,EAAC,MAAO,KAAM,GAAK,WAAY,KAAM,MACtD,MAAO,KAAyB,EAAiB,KAAK,KACrD,GAoBL,KAAK,EAAa,CAChB,GAAM,GAAO,KACT,EACJ,MAAI,MAAK,MAAQ,MAAQ,GAAS,GAAK,KAAK,MAAQ,EAIlD,EAAO,KAAK,KAAO,EAEjB,KAAK,MAAQ,MACZ,MAAK,KAAO,GAAS,IAAU,QAAa,EAAQ,GAGvD,EAAO,EAGP,EAAO,KAEF,GACH,SAAa,MAAM,GAAK,YAAY,KAAK,GAAQ,GA4BvD,QAAQ,EAAoB,EAAe,EAAyB,GAAI,CAEtE,GAAI,GAAc,MAAQ,EAAa,EACrC,KAAI,MAAK,MAAQ,KACT,GAAI,YACN,4DAEE,GAAI,YACN,mNAGmC,KAAK,kBAGhD,GAAM,GAAO,KACP,EAAoB,IAAA,KAAK,GAAW,EAAK,MAAM,YACrD,MAAO,IAAsB,SAAW,CACtC,GAAI,GAAQ,EAAO,QACnB,MAAI,IACF,IAAS,EAAO,SAEV,MAAM,GAAK,YAAY,QAAQ,EAAY,EAAM,aACxD,KAAK,MAoBV,KAAK,EAAa,CAChB,GAAM,GAAO,KACT,EACJ,MAAI,MAAK,MAAQ,MAAQ,KAAK,KAAO,EAGnC,EAAO,EACE,KAAK,MAAQ,MAAQ,KAAK,MAAQ,EAG3C,EAAO,KAAK,KAGZ,EAAO,KAEF,GACH,SAAa,MAAM,GAAK,YAAY,KAAK,GAAQ,QAmBjD,UAAO,CACX,GAAI,KAAK,OAAS,SAChB,KAAM,IAAI,OAAM,kDAElB,MAAQ,MAAM,MAAK,YAAY,eAc3B,iBAAc,CAClB,GAAI,KAAK,OAAS,SAChB,KAAM,IAAI,OAAM,kDAElB,MAAQ,MAAM,MAAK,YAAY,mBA1HjB,GAAA,gBAAkB,IA0I9B,YACF,EACA,EAAe,KAAI,CACrB,MAAO,IAAI,cAAc,GAAU,CAAxB,aAAA,CAAA,MAAA,GAAA,WACT,KAAA,KAAO,OAMD,WAAQ,CACZ,MAAO,OAwBP,aAA8C,EAAU,CAC5D,MAAO,IACH,SAAY,GAAkB,GAAQ,EAAM,QA4C5C,aAA4C,EAA0B,CAG1E,GAAI,CAAC,GAAW,GACd,KAAM,IAAI,OAAM,qDAElB,GAAI,GACJ,GAAI,MAAM,QAAQ,GAChB,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAO,GAAQ,KAAQ,EAAS,GAAkB,KAC5B,KAAK,IAAI,EAAO,EAAS,GAAkB,cAE1D,YAAoB,QAC7B,OAAW,KAAM,GACf,EAAO,GAAQ,KAAQ,EAAS,GAAmB,KAC7B,KAAK,IAAI,EAAO,EAAS,GAAmB,MAGtE,MAAO,IAAyB,SAAW,CACzC,GAAM,GAAU,KAAM,IAAmB,EAAU,GAAI,CACrD,GAAI,YAAa,IACf,MAAO,CAAC,MAAO,EAAE,WAAY,QAAS,IACjC,GAAI,GAAW,GACpB,MAAO,CAAC,MAAO,KAAM,QAAS,IAE9B,KAAM,IAAI,OACN,+EAIR,MAAO,KAAsB,EAAS,GAAgB,WACrD,GAWL,aAAyB,EAAW,CAClC,GAAI,IAAS,KACX,MAAO,MAIT,GAAM,GAAa,EAAK,GAExB,MAAI,KAAa,GAGR,CAAC,MADM,IAAY,GACX,QAAS,IAInB,CAAC,MAAO,KAAM,QAAS,IAOhC,aAAwD,EAAW,CAEjE,GAAI,EAAO,SAAW,EAEpB,KAAM,IAAI,OAAM,wCAGlB,MAAI,GAAO,YAAiB,IAEhB,GAAM,GAGN,GAAO,GMnqBf,GAAA,IAAA,aAA+B,GAAe,CAMlD,YAA+B,EAAiB,CAC9C,QAD6B,KAAA,MAAA,OAIzB,WAAQ,CAUZ,MATsB,MAAM,MAAK,MAAM,YACJ,aACD,MAAM;GAAM,IAAI,GAE5C,GAAK,SAAS,OAChB,GAAO,EAAK,MAAM,EAAG,KAEhB,MCpBP,GAAa,IACb,GAAY,OAAO,OACnB,GAAc,OAAO,SACrB,GAAc,OAAO,SACrB,GAA0B,OAAO,mBACjC,GAA8B,OAAO,gBAerC,GAAA,aAA0B,GAAwB,CAgItD,YAA+B,EAAmB,EAAqB,CACrE,QAD6B,KAAA,MAAA,EA9HvB,KAAA,UAAY,GACZ,KAAA,gBAA4B,KAC5B,KAAA,qBAAuB,GACvB,KAAA,cAA+C,KAC/C,KAAA,sBAAwB,GACxB,KAAA,UAAY,IACZ,KAAA,gBAAkB,GA0HxB,KAAK,KAAO,GAAI,IAAgB,GAC3B,GACH,GAAY,IAEd,KAAK,UAAY,EAAU,YAAc,GACzC,KAAK,gBAAkB,EAAU,YACjC,KAAK,cAAgB,EAAU,cAC/B,KAAK,sBAAwB,EAAU,sBACnC,EAAU,gBACZ,GAAK,OACD,EAAU,WAAa,KACvB,IACI,kEACR,KAAK,gBAAkB,GACvB,KAAK,UAAY,KAEjB,KAAK,UAAY,EAAU,UAAY,EAAU,UAAY,SA9H3D,cAAW,CACf,MAAK,MAAK,sBACR,KAAM,MAAK,iBAEN,KAAK,sBAAwB,OAAO,KAAK,KAAK,eACjB,KAAK,qBAW7B,iBAAc,CAC1B,GAAM,GAAsB,KAAM,MAAK,sBACvC,GAAI,CAAC,KAAK,iBAAmB,CAAC,EAE5B,KAAM,IAAI,OACN,6DACK,KAAK,iBAAmB,GAEjC,EAAK,OACD,EAAoB,SAAW,KAAK,gBAAgB,OACpD,IAAM,uCACF,KAAK,gBAAgB,OAAO,WAC5B,kEACW,EAAoB,OAAO,WAAa,MAExD,KAAK,iBACR,MAAK,gBAAkB,GAGzB,GAAM,GAAkC,KAAK,gBAAgB,OACzD,CAAC,EAAmC,IAClC,GAAS,GAAS,EAAS,GAAQ,GAAM,EAClC,GAET,IACE,EACF,OAAO,KAAK,GAAQ,OAAQ,GAAU,EAAO,GAAQ,GAKzD,GAJA,EAAK,OACD,EAAe,SAAW,EAC1B,IAAM,iCAAmC,EAAe,YAExD,KAAK,eACP,OAAW,KAAO,QAAO,KAAK,KAAK,eAEjC,GADc,KAAK,gBAAgB,QAAQ,KAC7B,GACZ,KAAM,IAAI,OACN,YAAc,EACd,uEACY,KAAK,gBAAgB,WAAa,MAIxD,KAAK,qBAAuB,QAGhB,sBAAmB,CAC/B,GAAI,KAAK,UAAW,CAElB,GAAM,GAAe,KADR,MAAM,MAAK,KAAK,YACG,OAChC,GAAI,EAAa,KACf,KAAM,IAAI,OAAM,sCAElB,GAAM,GAAoB,EAAa,MAEvC,MADgB,MAAK,SAAS,EAAW,QAGzC,OAAO,WA0DL,WAAQ,CACP,KAAK,sBACR,KAAM,MAAK,iBAEb,GAAI,GAAQ,KAAM,MAAK,KAAK,WAC5B,MAAI,MAAK,WAGP,GAAQ,EAAM,KAAK,IAEd,EAAM,IAAI,GAAK,KAAK,gBAAgB,IAG7C,gBAAgB,EAAY,CAC1B,GAAM,GAAS,KAAK,SAAS,GACvB,EAA6C,GAC7C,EAA2C,GAEjD,OAAS,GAAI,EAAG,EAAI,KAAK,gBAAgB,OAAQ,IAAK,CACpD,GAAM,GAAM,KAAK,gBAAgB,GAC3B,EAAS,KAAK,cAAgB,KAAK,cAAc,GAAO,KAC9D,GAAI,CAAA,MAAK,uBAAyB,CAAC,GAG5B,CACL,GAAM,GAAQ,EAAO,GACjB,EAAc,KAClB,GAAI,IAAU,GAGZ,GAAI,GAAU,EAAO,UAAY,OAC/B,EAAc,EAAO,YAChB,CAAA,GAAI,GAAW,GAAO,UAAY,EAAO,SAC9C,KAAM,IAAI,OACN,mBAAmB,4BAA8B,KAErD,EAAc,WAEX,CAEL,GAAM,GAAa,OAAO,GAC1B,GAAI,MAAM,GAGJ,GAAU,EAAO,QAAU,OAC7B,EAAc,KAAK,WAAW,GAG9B,EAAc,UAEP,CAAC,GAAU,CAAC,EAAO,MAG5B,EAAc,MAId,QAAQ,EAAO,WACR,UACH,EAAc,EACd,UACG,QACH,EAAc,KAAK,MAAM,GACzB,UACG,OACH,EAAc,KAAK,WAAW,GAC9B,cAEA,EAAc,GAKrB,GAAU,EAAO,QAAW,EAAO,GAAO,EACd,EAAS,GAAO,GAKjD,MAAI,QAAO,KAAK,GAAQ,SAAW,EAC1B,EAGA,CAAC,GAAI,EAAU,GAAI,GAItB,WAAW,EAAa,CAC9B,MAAI,KAAU,KAAO,EAAM,gBAAkB,OACpC,EAEA,EAKH,SAAS,EAAc,EAAuB,GAAI,CACxD,GAAM,GAAmB,GACrB,EAAa,EACX,EAAa,EAAK,OACpB,EAAe,GAEnB,OAAS,GAAI,EAAG,EAAI,EAAY,IAC9B,OAAQ,OAED,IACH,OAAQ,EAAK,OAAO,QAEb,IACH,EAAa,EAAI,EACjB,EAAe,GACf,UAEG,MAAK,UAIR,GAHA,EAAa,EAAI,EAGb,KAAK,YAAc,KAAO,KAAK,gBACjC,MAEF,EAAO,KAAK,IACZ,EAAe,GACf,cAGA,EAAe,GACf,EAAa,EACb,MAEJ,UAEG,IACH,OAAQ,EAAK,OAAO,QAEb,MAAK,UACR,EAAO,KAAK,EAAK,UAAU,EAAY,IACvC,EAAe,GACf,EAAa,EAAI,EACjB,eAGJ,UAEG,IACH,OAAQ,EAAK,OAAO,QAEb,IACH,EAAe,GACf,eAGJ,UAEG,IACH,OAAQ,EAAK,OAAO,QAEb,MAAK,UACR,EAAO,KAAK,EAAK,UAAU,EAAY,EAAI,IAC3C,EAAe,GACf,EAAa,EAAI,EACjB,UAEG,IACH,EAAe,GACf,cAGA,EAAe,GACf,MAEJ,UACG,IACH,OAAQ,EAAK,OAAO,QAEb,IACH,EAAe,GACf,eAGJ,eAWN,GANI,IAAiB,GACnB,EAAO,KAAK,EAAK,UAAU,EAAY,EAAa,IAEpD,EAAO,KAAK,EAAK,UAAU,IAGzB,GAAwB,EAAO,SAAW,KAAK,gBAAgB,OACjE,KAAM,IAAI,OAAM,wCACZ,KAAK,gBAAgB,qCAAqC,KAEhE,MAAO,KCzWL,GAAA,aAAkC,GAA6B,CAgBnE,YAAuC,EAAkC,CACvE,QADqC,KAAA,iBAAA,EAf/B,KAAA,SAAW,GAiBjB,KAAK,QAAU,EAAiB,SAAW,KAC3C,GAAM,GAAc,KAAK,KAAK,KAAK,SACnC,GAAI,KAAK,QAAU,GAAK,EAAc,GAAK,EAAc,IACrD,CAAC,OAAO,UAAU,GACpB,KAAM,IAAI,OACN,gFAC+B,KAAK,WAc1C,GAXA,KAAK,UAAY,EAAiB,yBAA2B,GAC7D,KAAK,aAAe,EAAiB,aACrC,KAAK,qBACD,EAAiB,sBAAwB,KAAK,QAClD,KAAK,sBAAwB,EAAiB,sBAC9C,KAAK,sBAAwB,EAAiB,uBAAyB,EAEvE,KAAK,mBACD,EAAiB,qBAAuB,GAC5C,KAAK,gBACD,EAAiB,kBAAoB,GACrC,CAAC,KAAK,oBAAsB,CAAC,KAAK,gBACpC,KAAM,IAAI,OACN,wGAKR,SAAO,CACL,MAAO,yBAII,QAAO,EAAqC,GAAE,CACzD,GAAI,IAAM,IAAI,WACZ,KAAM,IAAI,OACN,4DAGN,GAAM,GAAqB,GAAI,IAAmB,GAGlD,MAAA,MAAM,GAAmB,QAElB,OAIH,QAAK,CACT,GAAI,CACF,KAAK,OAAS,KAAM,WAAU,aAAa,aAAa,CACtD,MAAO,KAAK,uBAAyB,KAAO,GACA,KAAK,sBACjD,MAAO,WAEF,EAFE,CAGT,KAAM,IAAI,OACN,iDAAiD,EAAE,WAGzD,GAAI,CAAC,KAAK,OACR,KAAM,IAAI,OAAM,2CAGlB,GAAM,GAED,OAAe,cAAiB,OAAe,mBAGpD,GAFA,KAAK,aAAe,GAAI,GAEpB,CAAC,KAAK,aAGR,KAAK,aAAe,KAAK,aAAa,mBAC7B,KAAK,aAAa,aAAe,KAAK,aAC/C,KAAM,IAAI,OACN,wCACa,KAAK,yBACP,KAAK,aAAa,cAGnC,GAAM,GAAe,KAAK,aAAa,wBAAwB,KAAK,QACpE,KAAK,SAAW,KAAK,aAAa,iBAClC,KAAK,SAAS,QAAU,KAAK,QAAU,EACvC,KAAK,SAAS,sBAAwB,KAAK,sBAC3C,EAAa,QAAQ,KAAK,UAC1B,KAAK,SAAW,GAAI,cAAa,KAAK,SACtC,KAAK,SAAW,GAAI,cAAa,KAAK,cAIlC,OAAI,CACR,GAAI,KAAK,SACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAG7B,GAAI,GACA,EAEE,EAAiB,KAAM,MAAK,eAClC,GAAI,KAAK,mBAAoB,CAC3B,GAAM,GAAW,KAAK,aAAa,EAAe,eAClD,EAAoB,KAAK,4BACrB,EAAU,CAAC,KAAK,UAAW,KAAK,qBAAsB,IAE5D,GAAI,KAAK,gBAAiB,CACxB,GAAM,GAAW,KAAK,aAAa,EAAe,eAClD,EAAiB,KAAK,4BAClB,EAAU,CAAC,KAAK,UAAY,KAAK,QAAS,IAGhD,MAAO,CACL,MAAO,CAAC,YAAe,EAAmB,SAAY,GACtD,KAAM,SAMJ,UAAO,CACX,MAAQ,MAAM,MAAK,QAAQ,WAIf,eAAY,CAExB,GAAM,GAAgC,GAChC,EAAgC,GAClC,EAAgB,EACpB,MAAO,IAAI,SAAQ,GAAU,CAC3B,GAAM,GAAa,YAAY,IAAK,CAC9B,KAAK,oBACP,MAAK,SAAS,sBAAsB,KAAK,UAErC,KAAK,SAAS,KAAO,WACvB,EAAQ,CAAC,cAAA,EAAe,cAAA,IAE1B,EAAc,KAAK,KAAK,SAAS,MAAM,EAAG,KAAK,wBAE7C,KAAK,iBACP,MAAK,SAAS,uBAAuB,KAAK,UAC1C,EAAc,KAAK,KAAK,SAAS,UAI/B,EAAE,IAAkB,KAAK,WAC3B,eAAc,GACd,EAAQ,CAAC,cAAA,EAAe,cAAA,MAEzB,KAAK,QAAU,KAAK,aAAe,OAK1C,MAAI,CACG,KAAK,UACR,MAAK,SAAW,GAChB,KAAK,SAAS,aACd,KAAK,aAAa,QACd,KAAK,QAAU,MAAQ,KAAK,OAAO,YAAY,OAAS,GAC1D,KAAK,OAAO,YAAY,GAAG,QAMjC,SAAO,CACL,KAAM,IAAI,OAAM,mDAIlB,eAAa,CACX,MAAO,MAAK,aAGN,aAAa,EAAqB,CACxC,GAAM,GAAY,EAAM,GAAG,OACrB,EAAW,GAAI,cAAa,EAAM,OAAS,GACjD,MAAA,GAAM,QAAQ,CAAC,EAAM,IAAM,EAAS,IAAI,EAAM,EAAI,IAC3C,EAGD,4BAA4B,EAAwB,EAAe,CAEzE,GAAM,GAAO,GAAI,cAAa,EAAK,cAAc,IAEjD,MAAA,GAAK,IAAI,EAAU,EAAK,OAAS,EAAS,QACnC,GAAO,EAAM,KC7MlB,GAAA,aAA8B,GAAsB,CAQxD,YACuB,EACA,EAA0B,CAC/C,QACA,GAHqB,KAAA,mBAAA,EACA,KAAA,aAAA,EATf,KAAA,SAAW,GAEX,KAAA,OAAS,GASX,KAAK,eAKP,GAJA,KAAK,OAAS,GACd,KAAK,SACD,CAAC,KAAK,aAAa,aAAc,KAAK,aAAa,aACvD,KAAK,WAAa,GAAS,CAAC,GAAI,SAC5B,KAAK,aAAa,WAAY,CAEhC,GAAM,GACF,KAAK,aAAa,YAAc,EAAM,KAAK,mBAAmB,MAC5D,EAAsB,KAAK,aAAa,aAAe,EACzD,KAAK,mBAAmB,OACtB,EAAkB,GAAI,GAAsB,EAC5C,EAAmB,GAAI,GAAuB,EAC9C,EAAe,EAAiB,EAChC,EAAgB,EAAsB,EAC5C,KAAK,QAAU,GACX,CAAC,EAAiB,EAAgB,EAAe,GACjD,CAAC,EAAG,QAER,MAAK,QAAU,GAAS,CAAC,EAAG,EAAG,EAAG,GAAI,CAAC,EAAG,IAKhD,SAAO,CACL,MAAO,qBAII,QACT,EAAuC,EAA6B,GAAE,CACxE,GAAI,IAAM,IAAI,WACZ,KAAM,IAAI,OACN,4DAGN,GAAI,CAAC,EAAoB,CAIvB,GADA,EAAqB,SAAS,cAAc,SACxC,CAAC,EAAa,aAAe,CAAC,EAAa,aAC7C,KAAM,IAAI,OACN,0GAGN,EAAmB,MAAQ,EAAa,YACxC,EAAmB,OAAS,EAAa,aAE3C,GAAM,GAAiB,GAAI,IAAe,EAAoB,GAG9D,MAAA,MAAM,GAAe,QAEd,OAIH,QAAK,CACL,KAAK,aAAa,YACpB,EAAK,OACA,KAAK,aAAa,aAAe,QAC7B,KAAK,aAAa,aAAe,cACtC,IACI,+BAA+B,KAAK,aAAa,sDAI3D,GAAI,CACF,KAAK,OAAS,KAAM,WAAU,aAAa,aAAa,CACtD,MAAO,CACL,SAAU,KAAK,aAAa,SAC5B,WAAY,KAAK,aAAa,WAC1B,KAAK,aAAa,WAClB,OACJ,MAAO,KAAK,mBAAmB,MAC/B,OAAQ,KAAK,mBAAmB,gBAG7B,EAH6B,CAKpC,KAAA,GAAE,QAAU,iDAAiD,EAAE,UACzD,EAGR,GAAI,CAAC,KAAK,OACR,KAAM,IAAI,OAAM,uCAIlB,GAAI,CACF,KAAK,mBAAmB,UAAY,KAAK,aAClC,EADkC,CAEzC,QAAQ,IAAI,GACZ,KAAK,mBAAmB,IAAM,OAAO,IAAI,gBAAgB,KAAK,QAGhE,MAAA,MAAK,mBAAmB,OAExB,KAAK,SAAW,GAET,GAAI,SAAc,GAAU,CAEjC,KAAK,mBAAmB,iBAAmB,IAAK,CAC9C,YAKA,OAAI,CACR,GAAI,KAAK,SACP,MAAO,CAAC,MAAO,KAAM,KAAM,IAG7B,GAAI,GACJ,GAAI,CACF,EAAM,GAAQ,WAAW,KAAK,0BACvB,EADuB,CAE9B,KAAM,IAAI,OACN,4CAA4C,KAAK,UAAU,MAEjE,GAAI,KAAK,OACP,GAAI,CACF,MAAO,CAAC,MAAO,KAAK,mBAAmB,GAAM,KAAM,UAC5C,EAD4C,CAEnD,KAAM,IAAI,OAAM,oCAAoC,EAAE,kBAAA,CAEtD,EAAI,cAGN,OAAO,CAAC,MAAO,EAAK,KAAM,IAItB,cAAY,CAIlB,MAAI,CAAA,CAAA,MAAK,aAAa,aAAe,KAAK,aAAa,cAClD,MAAK,mBAAmB,QAAU,KAAK,aAAa,aACpD,KAAK,mBAAmB,SAAW,KAAK,aAAa,eAO5D,mBAAmB,EAAa,CAC9B,MAAO,GAAK,IAAK,CACf,GAAM,GAA0B,GAAW,GAAK,EAAK,WAAa,GAC9D,EACJ,EAAe,GAAM,cACjB,EAAe,KAAK,QAAS,KAAK,WAAY,KAAK,SACnD,YAEJ,GAAM,GAAQ,EAAa,MAC3B,MAAO,GAAQ,EAAc,EAAM,MAAM,WAMvC,UAAO,CACX,MAAQ,MAAM,MAAK,QAAQ,MAI7B,MAAI,CACa,KAAK,OAAO,YAEpB,QAAQ,GAAS,EAAM,QAE9B,GAAI,CACF,KAAK,mBAAmB,UAAY,WAC7B,EAD6B,CAEpC,QAAQ,IAAI,GACZ,KAAK,mBAAmB,IAAM,KAEhC,KAAK,SAAW,GAIlB,SAAO,CACL,KAAM,IAAI,OAAM,qDCjMd,GAAA,KAA0B,GCP1B,GAAA,aAAuC,GAAoB,CAmB/D,MAAM,EAAiB,CACrB,MAAO,IAAI,KAAc,KAAM,KAenC,IAAA,aAA4B,GAAc,CAGxC,YAAsB,EAAgC,EAAiB,CACrE,QADoB,KAAA,SAAA,EAEpB,KAAK,KAAO,GAAI,KAAkB,EAAU,GAG9C,SAAO,CACL,MAAO,MAAK,KAAK,eAGb,OAAI,CACR,MAAO,MAAK,KAAK,SAIrB,IAAA,aAAgC,GAAyB,CAIvD,YACc,EAA0C,EAAiB,CACvE,QADY,KAAA,SAAA,EAA0C,KAAA,UAAA,EAHxD,KAAA,UAAY,GAOZ,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,uBAAuB,KAAK,mBAGhD,OAAI,CACR,GAAM,GAAc,KAAM,MAAK,SAAS,OACxC,GAAI,EAAY,KACd,MAAI,MAAK,YAAc,GACd,GAKT,MAAK,YAAY,KAAK,KAAK,WAC3B,KAAK,UAAY,GACV,IAET,GAAM,GAAQ,EAAY,MAAM,MAAM,KAAK,WAK3C,EAAM,GAAK,KAAK,UAAY,EAAM,GAClC,OAAW,KAAQ,GAAM,MAAM,EAAG,IAChC,KAAK,YAAY,KAAK,GAExB,MAAA,MAAK,UAAY,EAAM,EAAM,OAAS,GAE/B,KCvFL,IAAA,aAA0C,GAAwB,CAUtE,YAAU,CACR,MAAO,IAAI,KAAa,QAe5B,IAAA,aAA2B,GAAc,CAGvC,YAAsB,EAAkC,CACtD,QADoB,KAAA,SAAA,EAEpB,KAAK,KAAO,GAAI,KAAiB,GAGnC,SAAO,CACL,MAAO,MAAK,KAAK,eAGb,OAAI,CACR,MAAO,MAAK,KAAK,SA0BrB,IAAA,aAA+B,GAAyB,CAMtD,YAA+B,EAAkC,CAC/D,QACA,GAF6B,KAAA,SAAA,EAEzB,IAAM,IAAI,cACZ,KAAK,QAAU,GAAI,aAAY,aAC1B,CAEL,GAAM,CAAC,cAAA,GAAyB,KAChC,KAAK,QAAU,GAAI,GAAc,SAGrC,SAAO,CACL,MAAO,GAAG,KAAK,SAAS,yBAGpB,OAAI,CACR,GAAM,GAAc,KAAM,MAAK,SAAS,OACpC,EACJ,GAAI,EAAY,KACd,MAAO,GAEP,EAAQ,EAAY,MAGtB,GAAI,GACJ,MAAI,KAAM,IAAI,cACZ,EAAO,KAAK,QAAQ,OAAO,EAAO,CAAC,OAAQ,KAE3C,EAAO,KAAK,QAAQ,MAAM,OAAO,KAAK,EAAM,SAE9C,KAAK,YAAY,KAAK,GACf,KCtFL,GAAA,aAAiC,IAAiB,CAItD,YACc,EACA,EAAoC,GAAE,CAClD,QAFY,KAAA,KAAA,EACA,KAAA,QAAA,EAEZ,EAAK,OACA,YAAgB,aACZ,KAAM,IAAI,cACL,YAAgB,OAAQ,YAAgB,MACzC,IACT,IAAM,wEAEV,KAAK,OAAS,EAAQ,QAAU,EAEhC,KAAK,UAAY,EAAQ,WAAa,KAAO,KAG/C,SAAO,CACL,MAAO,cAAc,KAAK,YAGtB,OAAI,CACR,MAAI,MAAK,QAAY,MAAK,eAAgB,YAClB,KAAK,KAAK,WACV,KAAK,KAAK,MACzB,CAAC,MAAO,KAAM,KAAM,IA0CtB,CAAC,MAAQ,KAxCF,IAAI,SAAoB,CAAC,EAAS,IAAU,CACxD,GAAM,GAAM,KAAK,OAAS,KAAK,UAC/B,GAAI,KAAK,eAAgB,YAGvB,EAAQ,GAAI,YAAW,KAAK,KAAK,MAAM,KAAK,OAAQ,SAC/C,CAKL,GAAM,GAAa,GAAI,YACvB,EAAW,OAAU,GAAS,CAC5B,GAAI,GAAsC,EAAW,OAOrD,GAHI,YAAgB,cAClB,GAAO,GAAI,YAAW,IAEpB,CAAE,aAAgB,aACpB,MAAO,GAAO,GAAI,WAAU,sCAE9B,EAAQ,IAEV,EAAW,QAAW,GACb,EAAO,GAAI,OAAM,YAE1B,EAAW,QAAW,GACb,EAAO,GAAI,OAAM,EAAM,OAIhC,GAAM,GAAQ,KAAK,KAAK,MAAM,KAAK,OAAQ,GAG3C,EAAW,kBAAkB,GAE/B,KAAK,OAAS,IAEc,KAAM,MC/ExC,mBACI,EAAkB,EAAoC,GAAE,CAC1D,GAAI,GACA,EACC,MAAO,IAAS,SACnB,EAAY,EAEZ,GAAa,EAAgB,IAC7B,EAAc,IAA0B,IAE1C,GAAM,GAAW,KAAM,GAAK,MAAM,EAAW,GAC7C,GAAI,EAAS,GAAI,CACf,GAAM,GAAa,GAAI,YAAW,KAAM,GAAS,eACjD,MAAO,IAAI,IAAkB,EAAY,OAEzC,MAAM,IAAI,OAAM,EAAS,YAK7B,GAAM,KAA6B,GACpB,EACX,OAAQ,EAAQ,OAChB,QAAS,EAAQ,QACjB,KAAM,EAAQ,KACd,KAAM,EAAQ,KACd,YAAa,EAAQ,YACrB,MAAO,EAAQ,MACf,SAAU,EAAQ,SAClB,SAAU,EAAQ,SAClB,UAAW,EAAQ,YCrCjB,YAAsB,EAAW,CACrC,MAAQ,OAAO,IAAW,UAAa,EAAO,OAAO,EAAG,KAAO,UCO3D,GAAA,IAAA,aAA8B,GAAU,CAS5C,YACc,EACS,EAAoC,GAAE,CAC3D,QAFY,KAAA,MAAA,EACS,KAAA,QAAA,OAIjB,WAAQ,CACZ,GAAI,GAAY,KAAK,QAAU,IAAM,IAAI,WAAY,CAEnD,GAAM,GAAa,cACnB,KAAK,MAAQ,EAAG,aAAc,KAAK,MAAiB,OAAO,IAI7D,MAAO,IAAI,IAAkB,KAAK,MAAsB,KAAK,WCxB3D,GAAA,aAA6B,GAAU,CAQ3C,YACuB,EACA,EAAwC,GAAE,CAC/D,QAFqB,KAAA,IAAA,EACA,KAAA,YAAA,OAQjB,WAAQ,CACZ,MAAI,IAAY,KAAK,KACX,GAAI,IAAe,KAAK,IAAe,KAAK,aAC/C,WAEE,IAAiB,KAAK,IAAK,KAAK,eCsDvC,aACF,EAAqB,EAAuB,GAAE,CAChD,MAAO,IAAI,IAAW,GAAI,IAAc,GAAS,GA2B7C,aACF,EAAsD,CACxD,GAAM,GAAO,GAAqB,GAClC,MAAO,IAAsB,SAAY,GA+DrC,aACF,EAAkD,CACpD,MAAO,IAAsB,SAAW,CACtC,GAAM,GAAM,KAAM,KAClB,MAAO,IAAqB,IAAM,EAAI,UAkC1C,mBACI,EACA,EAA2B,CAC7B,MAAO,IAAe,OAAO,EAAoB,GAqCnD,mBAAiC,EAAmC,CAElE,MAAO,IAAmB,OAAO,GCrRnC,GAAM,KAAU,QC6BH,IAAU,CACrB,KAAoB,GACpB,YAAyB,GACzB,YAAyB,GACzB,cAA6B,GAC7B,iBAAmC,GACnC,mBAAoB,GACpB,qBAAsB,GACtB,oBAAqB,ICrChB,GAAM,IAAS,CACpB,KAAM,UACN,SAAU,GACV,OAAQ,KACR,GAAI,KACJ,MAAO,KACP,OAAQ,KACR,UAAW,CACT,MAAO,GACP,UAAW,GACX,mBAAoB,GACpB,sBAAuB,GACvB,MAAO,GACP,QAAS,GACT,6BAA8B,GAC9B,eAAgB,KAIb,aAAoB,CACzB,GAAI,CAAC,AAAG,GAAY,GAAO,MAAO,CAChC,GAAI,wBAAyB,GAAO,MACpC,GAAI,CAEF,GAAO,OAAU,MAAO,kBAAoB,YAAe,GAAI,iBAAgB,GAAO,MAAO,GAAO,QAAU,SAAS,cAAc,gBAC9H,EAAP,CACA,GAAI,+BAAgC,GACpC,OAEF,GAAI,CAEF,GAAO,GAAK,GAAO,OAAO,WAAW,SAAU,GAAO,iBAC/C,EAAP,CACA,GAAI,oCAAqC,GACzC,OAEF,GAAI,CACF,AAAG,GAAgB,EAAG,GAAO,UACtB,EAAP,CACA,GAAI,oCAAqC,GACzC,OAEF,GAAI,CACF,GAAM,GAAM,GAAO,IAAa,GAAO,IACvC,AAAG,GAAgB,GAAO,KAAM,IAAM,GAAO,IAAiB,GAAM,GAAO,gBACpE,EAAP,CACA,GAAI,wCAAyC,GAC7C,OAEF,GAAI,CAEF,AADgB,AAAG,GAAqB,SAChC,QAAQ,AAAC,GAAiB,CAChC,GAAM,GAAkB,IAAK,EAAc,YAAa,GAAO,MAC/D,AAAG,GAAe,WAEb,EAAP,CACA,GAAI,mDAAoD,GACxD,OAEF,GAAI,CACF,AAAG,GAAI,IAAI,gBAAiB,SAKrB,EAAP,CACA,GAAI,yCAA0C,GAC9C,OAEF,GAAI,sBAAuB,GAAO,OCrEtC,GAAM,IAAgB,EAEtB,aAAyB,EAAW,CAClC,GAAM,GAAO,CAAE,QAAS,CAAC,EAAY,GAAI,EAAY,GAAI,QAAS,CAAC,EAAG,IAChE,EAAmC,GACzC,OAAS,GAAI,EAAG,EAAI,EAAK,QAAQ,OAAQ,IAAK,CAC5C,GAAM,GAAS,EAAK,QAAQ,GACtB,EAAW,KAAK,MAAO,GAAY,EAAS,GAAK,GACjD,EAAW,KAAK,MAAO,GAAY,EAAS,GAAK,GACjD,EAAa,EAAK,QAAQ,GAChC,OAAS,GAAQ,EAAG,EAAQ,EAAU,IAAS,CAC7C,GAAM,GAAU,EAAU,GAAQ,IAClC,OAAS,GAAQ,EAAG,EAAQ,EAAU,IAAS,CAC7C,GAAM,GAAU,EAAU,GAAQ,IAClC,OAAS,GAAI,EAAG,EAAI,EAAY,IAC9B,EAAQ,KAAK,CAAC,EAAS,MAK/B,MAAO,GAST,GAAM,KAAY,AAAC,GAAoB,EACrC,iBACA,WAAY,AAAG,GAAM,EAAgB,CAAC,EAAG,GAAI,CAAC,GAAI,IAClD,SAAU,AAAG,GAAM,EAAgB,CAAC,EAAG,GAAI,CAAC,GAAI,MAGlD,aAAsB,EAAY,EAAS,EAAW,CACpD,GAAM,GAAY,AAAG,GAAM,EAAY,CAAC,EAAG,GAAI,CAAC,GAAI,IAC9C,EAAU,AAAG,GAAI,EAAW,GAC5B,EAAW,AAAG,GAAM,EAAY,CAAC,EAAG,GAAI,CAAC,GAAI,IAC7C,EAAqB,AAAG,GAAI,EAAU,GACtC,EAAoB,AAAG,GAAI,EAAS,GACpC,EAAc,AAAG,GAAI,EAAoB,GACzC,EAAS,AAAG,GAAI,EAAmB,GACnC,EAAO,AAAG,GAAI,EAAmB,GACjC,EAAkB,AAAG,EAAI,EAAQ,GACjC,EAAgB,AAAG,EAAI,EAAM,GAEnC,MAAO,AAAG,IAAS,CAAC,EAAiB,GADlB,GAId,YAAqB,CAO1B,YAAY,EAAO,EAAQ,CACzB,KAAK,MAAQ,EACb,KAAK,YAAc,IAAgB,EAAM,OAAO,GAAG,MAAM,IACzD,KAAK,QAAU,AAAG,GAAS,KAAK,aAChC,KAAK,UAAY,EAAM,OAAO,GAAG,MAAM,GACvC,KAAK,OAAS,OAGV,kBAAiB,EAAY,CAEjC,GAAK,CAAC,GAAgB,EAAW,oBAAwB,EAAW,MAAM,SAAW,GAAO,EAAW,MAAM,GAAK,GAAO,EAAW,MAAM,GAAK,EAAI,MAAO,MAC1J,GAAM,CAAC,EAAO,EAAO,GAAU,AAAG,EAAK,IAAM,CAG3C,GAAM,GAAkB,AAFH,EAAW,eAAe,CAAC,KAAK,UAAW,KAAK,YAEhC,IAAI,OAAO,IAAI,IAC9C,EAAoB,KAAK,MAAM,QAAQ,GACzC,EAEJ,GAAI,MAAM,QAAQ,GAAoB,CACpC,GAAM,GAAS,EAAkB,KAAK,CAAC,EAAG,IAAM,EAAE,KAAO,EAAE,MACrD,EAAY,AAAG,GAAO,CAAC,EAAO,GAAI,EAAO,IAAK,GAC9C,EAAY,AAAG,GAAO,CAAC,EAAO,GAAI,EAAO,IAAK,GAEpD,EAAW,AADI,AAAG,GAAO,CAAC,EAAW,GAAY,GAC/B,QAAQ,OAE1B,GAAW,EAAkB,UAE/B,GAAM,GAAW,IAAa,EAAU,KAAK,QAAS,CAAC,KAAK,UAAW,KAAK,YACtE,EAAS,AAAG,GAAM,EAAU,CAAC,EAAG,GAAI,CAAC,GAAI,IACzC,EAAY,AAAG,GAAQ,GAAQ,UACrC,MAAO,CAAC,EAAU,EAAU,KAExB,EAAmB,KAAM,AAAG,IAAM,uBAAuB,EAAO,EAAQ,KAAK,OAAO,KAAK,SAAS,SAAU,KAAK,OAAO,KAAK,SAAS,aAAc,KAAK,OAAO,KAAK,SAAS,gBAC9K,EAAa,EAAiB,YACpC,EAAiB,UAEjB,GAAM,GAAgB,AADG,EAAW,IAAI,AAAC,GAAa,AAAG,GAAM,EAAO,CAAC,EAAU,GAAI,CAAC,EAAG,MAClD,IAAI,AAAC,GAAgB,CAC1D,GAAM,GAAO,EAAY,YACzB,SAAY,UACL,IAGH,EAAY,EAAO,WACnB,EAAuF,GAC7F,OAAS,GAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC7C,GAAM,GAAW,EAAW,GACtB,EAAa,EAAU,GAC7B,GAAI,EAAa,KAAK,OAAO,KAAK,SAAS,cAAe,CACxD,GAAM,GAAM,IAAU,EAAc,IAC9B,EAAS,KAAK,YAAY,GAC1B,EAAY,AAAG,EAAK,IAAM,AAAG,GAAM,EAAO,CAAC,EAAU,GAAgB,GAAI,CAAC,EAAG,KAAK,UAAU,QAAQ,CAAC,GAAe,MAC1H,EAAe,KAAK,CAAE,MAAK,YAAW,SAAQ,gBAGlD,SAAM,UACN,EAAM,UACN,EAAO,UACA,CACL,MAAO,EACP,YAAa,CAAC,EAAW,MAAM,GAAK,KAAK,UAAW,EAAW,MAAM,GAAK,KAAK,cAKrF,kBAA2B,EAAQ,CACjC,GAAM,GAAY,KAAM,AAAG,IAAe,EAAO,KAAK,SAAS,UAAW,CAAE,UAAW,EAAO,KAAK,SAAS,UAAU,SAAS,eACzH,EAAQ,GAAI,IAAe,EAAW,GAC5C,MAAI,GAAO,OAAO,GAAI,eAAe,EAAO,KAAK,SAAS,UAAU,MAAM,YAAY,MAC/E,EC9HF,YAA6B,EAAK,EAAQ,CAC/C,GAAM,GAAa,CAAC,EAAI,WAAW,GAAK,EAAO,GAAI,EAAI,WAAW,GAAK,EAAO,IACxE,EAAW,CAAC,EAAI,SAAS,GAAK,EAAO,GAAI,EAAI,SAAS,GAAK,EAAO,IACxE,MAAO,CAAE,aAAY,YAGhB,YAAoB,EAAK,CAC9B,MAAO,CACL,KAAK,IAAI,EAAI,SAAS,GAAK,EAAI,WAAW,IAC1C,KAAK,IAAI,EAAI,SAAS,GAAK,EAAI,WAAW,KAIvC,YAAsB,EAAK,CAChC,MAAO,CACL,EAAI,WAAW,GAAM,GAAI,SAAS,GAAK,EAAI,WAAW,IAAM,EAC5D,EAAI,WAAW,GAAM,GAAI,SAAS,GAAK,EAAI,WAAW,IAAM,GAIzD,YAAkC,EAAK,EAAO,EAAU,CAC7D,GAAM,GAAI,EAAM,MAAM,GAChB,EAAI,EAAM,MAAM,GAChB,EAAQ,CAAC,CACb,EAAI,WAAW,GAAK,EACpB,EAAI,WAAW,GAAK,EACpB,EAAI,SAAS,GAAK,EAClB,EAAI,SAAS,GAAK,IAEpB,MAAO,AAAG,IAAM,cAAc,EAAO,EAAO,CAAC,GAAI,GAG5C,YAAoB,EAAK,EAAS,IAAK,CAC5C,GAAM,GAAS,GAAa,GACtB,EAAO,GAAW,GAClB,EAAc,CAAC,EAAS,EAAK,GAAK,EAAG,EAAS,EAAK,GAAK,GACxD,EAAa,CAAC,EAAO,GAAK,EAAY,GAAI,EAAO,GAAK,EAAY,IAClE,EAAW,CAAC,EAAO,GAAK,EAAY,GAAI,EAAO,GAAK,EAAY,IACtE,MAAO,CAAE,aAAY,WAAU,UAAW,EAAI,WAGzC,YAAqB,EAAK,CAC/B,GAAM,GAAU,GAAa,GACvB,EAAO,GAAW,GAElB,EAAW,AADD,KAAK,IAAI,GAAG,GACD,EACrB,EAAa,CAAC,EAAQ,GAAK,EAAU,EAAQ,GAAK,GAClD,EAAW,CAAC,EAAQ,GAAK,EAAU,EAAQ,GAAK,GACtD,MAAO,CAAE,aAAY,WAAU,UAAW,EAAI,WClDzC,GAAM,IAAkB,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAKtD,aAA0B,EAAO,CACtC,MAAO,GAAQ,EAAI,KAAK,GAAK,KAAK,MAAO,GAAQ,KAAK,IAAO,GAAI,KAAK,KAQjE,YAAyB,EAAQ,EAAQ,CAC9C,GAAM,GAAU,KAAK,GAAK,EAAI,KAAK,MAAM,CAAE,GAAO,GAAK,EAAO,IAAK,EAAO,GAAK,EAAO,IACtF,MAAO,KAAiB,GAOnB,YAAgC,EAAG,EAAG,CAC3C,MAAO,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAGhC,YAAa,EAAI,EAAI,CAC1B,GAAI,GAAU,EACd,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,GAAW,EAAG,GAAK,EAAG,GAExB,MAAO,GAGF,aAA4B,EAAK,EAAa,CACnD,GAAM,GAAwB,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,EAAO,KAAK,EAAI,GAAG,IAErB,MAAO,GAGF,YAAmC,EAAM,EAAM,CACpD,GAAM,GAA2B,GAC3B,EAAO,EAAK,OAClB,OAAS,GAAM,EAAG,EAAM,EAAM,IAAO,CACnC,EAAQ,KAAK,IACb,OAAS,GAAM,EAAG,EAAM,EAAM,IAC5B,EAAQ,GAAK,KAAK,GAAI,EAAK,GAAM,IAAmB,EAAM,KAG9D,MAAO,GAGF,YAA6B,EAAU,EAAQ,CACpD,GAAM,GAAO,KAAK,IAAI,GAChB,EAAO,KAAK,IAAI,GAChB,EAAiB,CAAC,CAAC,EAAM,CAAC,EAAM,GAAI,CAAC,EAAM,EAAM,GAAI,CAAC,EAAG,EAAG,IAC5D,EAAoB,GAAuB,EAAO,GAAI,EAAO,IAC7D,EAA2B,GAA0B,EAAmB,GACxE,EAA4B,GAAuB,CAAC,EAAO,GAAI,CAAC,EAAO,IAC7E,MAAO,IAA0B,EAA0B,GAGtD,YAA+B,EAAQ,CAC5C,GAAM,GAAoB,CAAC,CAAC,EAAO,GAAG,GAAI,EAAO,GAAG,IAAK,CAAC,EAAO,GAAG,GAAI,EAAO,GAAG,KAC5E,EAAuB,CAAC,EAAO,GAAG,GAAI,EAAO,GAAG,IAChD,EAAsB,CAC1B,CAAC,GAAI,EAAkB,GAAI,GAC3B,CAAC,GAAI,EAAkB,GAAI,IAE7B,MAAO,CACL,EAAkB,GAAG,OAAO,EAAoB,IAChD,EAAkB,GAAG,OAAO,EAAoB,IAChD,CAAC,EAAG,EAAG,IAIJ,YAAqB,EAAuB,EAAgB,CACjE,MAAO,CACL,GAAI,EAAuB,EAAe,IAC1C,GAAI,EAAuB,EAAe,KClFvC,GAAM,IAAmB,CAC9B,WAAY,CACV,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACvD,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,KAEpD,eAAgB,CAAC,GAAI,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,KAC7D,eAAgB,CAAC,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAC3D,eAAgB,CAAC,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAC9D,eAAgB,CAAC,GAAI,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,KAC9D,eAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/C,eAAgB,CAAC,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACtD,eAAgB,CAAC,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,KAC1C,eAAgB,CAAC,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,KACpD,eAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC/C,eAAgB,CAAC,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxD,eAAgB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACzD,kBAAmB,CAAC,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,KACnD,kBAAmB,CAAC,GAAI,IAAK,GAAI,GAAI,GAAI,IACzC,aAAc,CAAC,IAAK,IAAK,IAAK,IAAK,KACnC,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC9C,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxD,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC9C,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxD,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAC9C,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxD,cAAe,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACxD,iBAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KACtD,iBAAkB,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,KAC5C,YAAa,CAAC,IAAK,IAAK,IAAK,IAAK,KAClC,kBAAmB,CAAC,KACpB,QAAS,CAAC,GACV,WAAY,CAAC,GACb,gBAAiB,CAAC,IAClB,eAAgB,CAAC,KACjB,WAAY,CAAC,KACb,UAAW,CAAC,MAGD,GAA2B,CACtC,CAAE,IAAK,YAAa,QAAS,CAAC,EAAG,GAAI,GAAI,GAAI,GAAI,GAAI,KACrD,CAAE,IAAK,YAAa,QAAS,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KACtD,CAAE,IAAK,YAAa,QAAS,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KACtD,CAAE,IAAK,YAAa,QAAS,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACtD,CAAE,IAAK,YAAa,QAAS,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAC9D,CAAE,IAAK,YAAa,QAAS,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KAC9D,CAAE,IAAK,YAAa,QAAS,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,MAKnD,GAAQ,CACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAwBvI,GAAM,KAAQ,CACP,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/E,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC1C,IAAK,EAAG,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,IAChC,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACtD,GAAI,GAAI,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAChD,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,KAGhC,IAAQ,CAAC,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,KAE1J,IAAO,CAAC,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,KAElC,IAAO,IAAM,IAAI,AAAC,GAAM,GAAM,IAE9B,IAAO,IAAM,IAAI,AAAC,GAAM,GAAM,IAE9B,IAAM,IAAK,IAAI,AAAC,GAAM,GAAM,ICjoBzC,GAAM,IAAc,AAAO,GAAiB,cACtC,GAAe,AAAO,GAAiB,eAEvC,GAAe,CACnB,WAAY,CAAC,GAAY,GAAI,GAAY,GAAY,OAAS,IAC9D,YAAa,CAAC,GAAa,GAAI,GAAa,GAAa,OAAS,KAG9D,GAAgB,CACpB,MAAO,IACP,MAAO,GACP,aAAc,CAAC,GAAI,AAAO,GAAiB,kBAAqB,KAG5D,GAAqB,CACzB,QAAS,EACT,SAAU,EACV,KAAM,EACN,MAAO,EACP,QAAS,EACT,SAAU,EACV,aAAc,CAAC,EAAG,IAGd,GAAgB,CACpB,YAAa,EACb,YAAa,EACb,MAAO,GACP,eAAgB,IAKlB,YAA+B,EAAW,EAAW,EAAQ,EAAM,CACjE,OAAS,GAAI,EAAG,EAAI,AAAO,GAAyB,OAAQ,IAAK,CAC/D,GAAM,CAAE,MAAK,WAAY,AAAO,GAAyB,GACnD,EAAkB,AAAO,GAAiB,GAAG,IAAS,KAE5D,GAAI,CAAC,GAAQ,EAAK,SAAS,GACzB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAM,GAAQ,EAAQ,GACtB,EAAU,EAAgB,IAAM,CAC9B,EAAU,GAAO,GAAI,EAAU,GAAO,GACrC,GAAU,GAAO,GAAK,EAAU,EAAgB,IAAI,IAAM,KAO9D,YAAe,CAYpB,YAAY,EAAqB,EAAc,EAAW,CApE5D,QAsEI,KAAK,YAAc,GACnB,KAAK,oBAAsB,EAC3B,KAAK,aAAe,EACpB,KAAK,UAAY,EACjB,KAAK,QAAU,qBAAqB,QAArB,cAA4B,OAAO,GAAG,MAAM,KAAM,EACjE,KAAK,SAAW,kBAAc,OAAO,GAAG,MAAM,KAAM,qBAAqB,QAArB,cAA4B,OAAO,GAAG,MAAM,IAChG,KAAK,SAAW,kBAAW,OAAO,GAAG,MAAM,KAAM,EACjD,KAAK,YAAc,IACnB,KAAK,QAAU,EACf,KAAK,cAAgB,EAGvB,mBAAmB,EAAW,EAAK,EAAO,EAAgB,CACxD,GAAM,GAAU,AAAS,GAAW,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,WAC1E,EAAe,EAAU,IAAI,AAAC,GAAW,CAC7C,EAAQ,GAAK,KAAK,SAAY,GAAM,GAAK,KAAK,SAAW,GACzD,EAAQ,GAAK,KAAK,SAAY,GAAM,GAAK,KAAK,SAAW,GACzD,EAAM,KAEF,EAAwB,IAAU,EAAK,AAAK,GAAoB,EAAO,CAAC,EAAG,IAAW,GACtF,EAAiB,IAAU,EAAK,EAAa,IAAI,AAAC,GAAW,CAAC,GAAG,AAAK,GAAY,EAAO,GAAuB,EAAM,KAAQ,EAC9H,EAAyB,IAAU,EAAK,AAAK,GAAsB,GAAuB,GAC1F,EAAY,CAAC,GAAG,AAAS,GAAa,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,WAAa,GACrG,MAAO,GAAc,IAAI,AAAC,GAAW,CACnC,EAAM,GAAK,AAAK,GAAI,EAAW,EAAsB,IACrD,EAAM,GAAK,AAAK,GAAI,EAAW,EAAsB,IACrD,EAAM,KAIV,iCAAiC,EAAW,CAC1C,GAAM,GAAW,EAAU,GAAa,WAAW,IAAI,GACjD,EAAY,EAAU,GAAa,YAAY,IAAI,GACzD,MAAO,GAAW,EAIpB,UAAU,EAAW,EAAM,EAAqB,EAAqB,EAAO,GAAO,CACjF,GAAM,GAAM,AAAS,GAAY,AAAS,GAAW,KAAK,8BAA8B,CAAC,EAAU,GAAsB,EAAU,KAAwB,KAAK,cAC1J,EAAU,AAAS,GAAW,GAChC,EAAO,AAAG,GAAM,cAAc,EAAM,CAAC,CACvC,EAAI,WAAW,GAAK,KAAK,SACzB,EAAI,WAAW,GAAK,KAAK,SAAU,EAAI,SAAS,GAAK,KAAK,SAC1D,EAAI,SAAS,GAAK,KAAK,WACrB,CAAC,GAAI,CAAC,KAAK,SAAU,KAAK,WAC9B,MAAI,IAAQ,AAAG,GAAI,MAAM,YACvB,GAAO,AAAG,GAAM,cAAc,IAEzB,CAAE,MAAK,UAAS,QAIzB,aAAa,EAAS,EAAQ,EAAY,EAAO,GAAO,CACtD,GAAM,GAA6B,GACnC,OAAS,GAAI,EAAG,EAAI,GAAc,eAAgB,IAAK,CACrD,GAAM,GAAI,EAAQ,EAAI,GAChB,EAAI,EAAQ,EAAI,EAAI,GACpB,EAAI,EAAQ,EAAI,EAAI,GAC1B,EAAa,KAAK,CACf,GAAQ,EAAK,EAAI,KAAK,SAAc,EAAI,KAAK,UAAa,EAAW,GAAK,EAAO,WAAW,GAC5F,EAAI,KAAK,SAAY,EAAW,GAAK,EAAO,WAAW,GAAI,IAGhE,MAAO,CAAE,UAAW,EAAc,KAAM,EAAa,MAAM,GAAc,QAI3E,sBAAsB,EAAW,EAAY,EAAW,CACtD,GAAM,GAAe,EAAU,AAAO,GAAiB,GAAG,cAAsB,GAAc,cAAc,GACtG,EAAe,EAAU,AAAO,GAAiB,GAAG,cAAsB,GAAc,cAAc,GACtG,EAAY,GAAe,GAAgB,EAEjD,MAAO,GAAW,IAAI,CAAC,EAAO,IAAM,CAClC,GAAI,GAAI,EACR,MAAI,KAAM,EACR,EAAI,EACK,IAAM,GACf,GAAI,GAEC,CAAC,EAAM,GAAI,EAAM,GAAI,UAI1B,SAAQ,EAAO,EAAQ,CAC3B,GAAI,GAAc,GAEd,EAQJ,GAPK,MAAK,UAAY,GAAO,KAAK,QAAU,EAAO,KAAK,SAAS,YAAe,CAAC,EAAO,KAAK,KAAK,SAAW,CAAC,EAAO,iBACnH,GAAW,KAAM,MAAK,oBAAoB,iBAAiB,GAC3D,KAAK,QAAU,GAEb,EAAO,gBAAgB,KAAK,UAG5B,GAAY,EAAS,OAAU,EAAC,EAAO,KAAK,KAAK,SAAY,EAAS,MAAM,SAAW,KAAK,eAAmB,KAAK,gBAAkB,EAAO,KAAK,SAAS,UAAY,CACzK,KAAK,YAAc,GACnB,KAAK,cAAgB,EACrB,OAAW,KAAY,GAAS,MAC9B,KAAK,YAAY,KAAK,CAAE,WAAY,EAAS,IAAI,WAAW,WAAY,SAAU,EAAS,IAAI,SAAS,WAAY,UAAW,EAAS,UAAW,WAAY,EAAS,aAE1K,AAAI,KAAK,YAAY,OAAS,GAAG,GAAc,IAKjD,GAFI,EAAO,KAAK,SAAS,aAAe,KAAK,gBAAkB,GAAG,MAAK,QAAU,GAE7E,EAAa,CACf,GAAI,CAAC,GAAY,CAAC,EAAS,OAAU,EAAS,MAAM,SAAW,EAC7D,YAAK,YAAc,GACnB,KAAK,cAAgB,EACd,KAET,OAAS,GAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAAK,CAChD,GAAM,GAAY,AAAS,GAAoB,CAAE,WAAY,KAAK,YAAY,GAAG,WAAY,SAAU,KAAK,YAAY,GAAG,UAAY,EAAS,aAC1I,EAAc,AAAS,GAAW,GAClC,EAAgB,AAAS,GAAY,GACrC,EAAY,KAAK,YAAY,GAAG,UAAU,YAC1C,EAAa,KAAK,YAAY,GAAG,WACvC,KAAK,YAAY,GAAK,IAAK,EAAe,aAAY,cAG1D,AAAI,GAAY,EAAS,OACvB,EAAS,MAAM,QAAQ,AAAC,GAAe,CACrC,EAAW,IAAI,WAAW,UAC1B,EAAW,IAAI,SAAS,UACxB,EAAW,UAAU,YAIzB,GAAI,GAAU,AAAG,EAAK,IAAM,KAAK,YAAY,IAAI,CAAC,EAAK,IAAM,CAC3D,GAAM,GAAgB,EAAI,WAGtB,EACA,EAAQ,EACR,EAEJ,GAAI,EAAO,KAAK,SAAS,UAAY,EAAO,KAAK,KAAK,SAAW,AAAG,GAAI,MAAM,WAAY,CACxF,GAAM,CAAC,EAAc,GAAoB,EAAI,UAAU,QAAU,GAAc,MAAS,GAAc,aAAe,GAAmB,aACxI,EAAQ,AAAK,GAAgB,EAAI,UAAU,GAAe,EAAI,UAAU,IACxE,GAAM,GAAa,AAAS,GAAa,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,WAC/E,EAAuB,CAAC,EAAW,GAAK,EAAM,MAAM,GAAI,EAAW,GAAK,EAAM,MAAM,IACpF,EAAe,AAAG,GAAM,iBAAiB,EAAO,EAAO,EAAG,GAChE,EAAiB,AAAK,GAAoB,CAAC,EAAO,GAClD,AAAI,EAAO,KAAK,KAAK,QAAS,EAAO,AAAS,GAAyB,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,UAAY,EAAc,CAAC,KAAK,SAAU,KAAK,WAAW,IAAI,KAC5K,EAAO,AAAS,GAAyB,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,UAAY,EAAc,CAAC,KAAK,QAAS,KAAK,UAAU,IAAI,SACjJ,CACL,EAAsB,GACtB,GAAM,GAAc,EAAM,QAC1B,AAAI,EAAO,KAAK,KAAK,QAAS,EAAO,AAAS,GAAyB,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,UAAY,EAAa,CAAC,KAAK,SAAU,KAAK,WAAW,IAAI,KAC3K,EAAO,AAAS,GAAyB,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,UAAY,EAAa,CAAC,KAAK,QAAS,KAAK,UAAU,IAAI,KAIvJ,GAAI,CAAC,EAAO,KAAK,KAAK,QASpB,MARmB,CACjB,OAAQ,KACR,MACA,eAAgB,KAChB,cAAe,EAAI,WACnB,WAAY,EAAI,WAChB,MAAO,GAKX,GAAM,CAAC,CAAE,EAAY,GAAiB,KAAK,aAAa,QAAQ,GAC1D,EAAiB,EAAW,WAAW,GAC7C,GAAI,EAAiB,EAAO,KAAK,SAAS,cAAe,MAAO,MAEhE,GAAI,GAAY,AADO,AAAG,EAAQ,EAAe,CAAC,GAAI,IACvB,YAE/B,GAAI,EAAO,KAAK,KAAK,QAAS,CAC5B,GAAM,CAAE,IAAK,EAAY,QAAS,EAAgB,KAAM,GAAgB,KAAK,UAAU,EAAW,EAAM,GAAa,WAAW,GAAI,GAAa,WAAW,GAAI,IAC1J,CAAE,IAAK,EAAa,QAAS,EAAiB,KAAM,GAAiB,KAAK,UAAU,EAAW,EAAM,GAAa,YAAY,GAAI,GAAa,YAAY,IAE3J,EAAqB,AADJ,KAAK,UAAU,QAAQ,AAAG,GAAO,CAAC,EAAa,KAC5B,WACpC,EAAc,EAAmB,MAAM,EAAG,GAAc,eAAiB,GACzE,CAAE,UAAW,EAAkB,KAAM,GAAsB,KAAK,aAAa,EAAa,EAAY,EAAgB,IACtH,EAAe,EAAmB,MAAM,GAAc,eAAiB,GACvE,CAAE,UAAW,EAAmB,KAAM,IAAuB,KAAK,aAAa,EAAc,EAAa,GAC1G,EAAgC,KAAK,iCAAiC,GAC5E,AAAI,KAAK,IAAI,GAAiC,GAC5C,IAAsB,EAAW,EAAkB,OAAQ,MAC3D,GAAsB,EAAW,EAAmB,QAAS,OAGxD,AAAI,EAAgC,EACzC,GAAsB,EAAW,EAAkB,OAAQ,CAAC,YAAa,cAEzE,GAAsB,EAAW,EAAmB,QAAS,CAAC,YAAa,cAE7E,GAAM,IAAyB,KAAK,sBAAsB,EAAW,EAAmB,QAClF,GAA0B,KAAK,sBAAsB,EAAW,GAAoB,SAC1F,EAAY,EAAU,OAAO,IAAwB,OAAO,IAI9D,GAAM,GAAwB,KAAK,mBAAmB,EAAW,EAAK,EAAO,GAC7E,EAAM,AAAS,GAAW,KAAK,8BAA8B,GAAwB,KACrF,GAAM,GAAoB,AAAG,GAAS,GAGtC,GAAI,EAAO,KAAK,SAAS,UAAY,EAAO,KAAK,KAAK,SAAW,EAAO,KAAK,SAAS,QAAU,AAAG,GAAI,MAAM,WAAY,CACvH,GAAM,CAAC,EAAc,GAAoB,EAAI,UAAU,QAAU,GAAc,MAAS,GAAc,aAAe,GAAmB,aACxI,EAAQ,AAAK,GAAgB,EAAI,UAAU,GAAe,EAAI,UAAU,IACxE,GAAM,GAAa,AAAS,GAAa,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,WAC/E,EAAuB,CAAC,EAAW,GAAK,EAAM,MAAM,GAAI,EAAW,GAAK,EAAM,MAAM,IACpF,EAAe,AAAG,GAAM,iBAAiB,EAAO,EAAO,EAAG,GAChE,EAAiB,AAAK,GAAoB,CAAC,EAAO,GAClD,EAAO,AAAS,GAAyB,CAAE,WAAY,EAAI,WAAY,SAAU,EAAI,UAAY,EAAc,CAAC,KAAK,SAAU,KAAK,WAAW,IAAI,KAGrJ,GAAM,GAAa,CACjB,OAAQ,EACR,MACA,iBACA,gBACA,MAAO,EACP,aAII,EAAyB,AAAS,GAAY,GACpD,YAAK,YAAY,GAAK,IAAK,EAAwB,UAAW,EAAuB,WAAY,EAAI,WAAY,kBAE1G,KAGT,SAAU,EAAQ,OAAO,AAAC,GAAM,IAAM,MAElC,EAAO,KAAK,KAAK,SAAS,MAAK,YAAc,KAAK,YAAY,OAAO,AAAC,GAAM,EAAE,eAAiB,EAAO,KAAK,SAAS,gBACxH,KAAK,cAAgB,EAAQ,OAEtB,EAGT,8BAA8B,EAAW,CACvC,GAAM,GAAK,EAAU,IAAI,AAAC,GAAM,EAAE,IAC5B,EAAK,EAAU,IAAI,AAAC,GAAM,EAAE,IAC5B,EAAa,CAAC,KAAK,IAAI,GAAG,GAAK,KAAK,IAAI,GAAG,IAC3C,EAAW,CAAC,KAAK,IAAI,GAAG,GAAK,KAAK,IAAI,GAAG,IAC/C,MAAO,CAAE,aAAY,WAAU,eCnTnC,OAA0B,SCJ1B,8CCEO,GAAM,IAAO,GAEb,YAAa,EAAc,EAAU,CAC1C,GAAI,CAAC,GAAO,CAAC,EAAI,QAAS,OAC1B,GAAM,GAAa,EACb,EAAO,EAAI,QACd,OAAO,AAAC,GAAM,EAAE,aAAe,GAC/B,OAAO,CAAC,EAAG,IAAM,GAAK,EAAE,aAAc,GACnC,EAAU,EAAI,QACjB,IAAI,CAAC,EAAG,IAAQ,GAAE,GAAK,EAAU,IACjC,OAAO,AAAC,GAAM,EAAE,aAAe,GAC/B,KAAK,CAAC,EAAG,IAAM,EAAE,aAAe,EAAE,cAC/B,EAAU,EAAI,QACjB,IAAI,CAAC,EAAG,IAAQ,GAAE,GAAK,EAAU,IACjC,OAAO,AAAC,GAAM,EAAE,mBAAqB,GACrC,KAAK,CAAC,EAAG,IAAM,EAAE,mBAAqB,EAAE,oBAC3C,AAAI,EAAQ,OAAS,GAAY,GAAQ,OAAS,GAC9C,EAAQ,OAAS,GAAY,GAAQ,OAAS,GAClD,GAAM,GAAM,CAAE,SAAU,EAAI,SAAU,WAAY,EAAI,WAAY,UAAW,EAAI,UAAW,aAAc,EAAI,QAAQ,OAAQ,cAAe,EAAM,iBAAkB,EAAS,iBAAkB,GAChM,GAAK,GAAQ,EACb,GAAI,iBAAkB,EAAM,GDlB9B,GAAI,IACA,GAAO,CAAE,IAAK,GACd,GAAU,OAAO,iBAErB,kBAA2B,EAAQ,CACjC,MAAK,KACH,IAAQ,KAAM,AAAG,IAAe,EAAO,KAAK,IAAI,WAC5C,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,IAAI,UAAU,MAAM,YAAY,OAE5E,GAGT,kBAA8B,EAAO,EAAQ,CAC3C,MAAK,IACA,GAAU,EAAO,KAAK,IAAI,YAAe,EAAO,gBAAkB,GAAK,KAAQ,GAAK,IAAM,EAC7F,MACO,IAET,CAAI,EAAO,eAAgB,GAAU,EAChC,GAAU,OAAO,iBACf,GAAI,SAAQ,KAAO,IAAY,CACpC,GAAM,GAAS,AAAG,GAAM,eAAe,EAAO,CAAC,GAAM,OAAO,GAAG,MAAM,GAAI,GAAM,OAAO,GAAG,MAAM,IAAK,IAC9F,EAAU,AAAG,EAAI,EAAQ,CAAC,MAChC,AAAG,GAAQ,GAEX,GAAI,GACE,EAAM,CAAE,IAAK,GAEnB,GAAI,CAAC,EAAO,QACV,AAAI,EAAO,KAAK,IAAI,SAAS,GAAO,KAAM,IAAM,QAAQ,QACnD,CACL,GAAM,GAAa,EAAO,KAAK,IAAI,QAAU,KAAM,AAAG,IAAQ,IAAM,GAAM,QAAQ,IAAY,GAC9F,EAAO,EAAW,OAAO,QACzB,EAAW,OAAO,UAClB,AAAQ,GAAI,MAAO,GAIrB,GAFA,EAAQ,UAEJ,EAAM,CACR,GAAM,GAAO,EAAK,WAClB,EAAI,IAAM,KAAK,MAAM,GAAK,EAAK,IAAM,GAEvC,EAAK,UAEL,GAAO,EACP,EAAQ,MAhCS,KEjBrB,8CAIA,GAAI,IACA,GAAO,CAAE,OAAQ,IACjB,GAAU,OAAO,iBACjB,GAAc,GAGZ,GAAM,CAAC,MAAQ,KAAQ,MAE7B,kBAA2B,EAAQ,CACjC,MAAK,KACH,IAAQ,KAAM,AAAG,IAAe,EAAO,KAAK,OAAO,WACnD,GAAc,GAAM,OAAO,GAAG,MAAM,KAAO,EACvC,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,OAAO,UAAU,MAAM,YAAY,OAE/E,GAGT,kBAA8B,EAAO,EAAQ,CAC3C,MAAK,IACA,GAAU,EAAO,KAAK,OAAO,YAAe,EAAO,gBAAkB,GAAK,SAAW,GACxF,MACO,IAET,CAAI,EAAO,eAAgB,GAAU,EAChC,GAAU,OAAO,iBACf,GAAI,SAAQ,KAAO,IAAY,CACpC,GAAM,GAAS,AAAG,GAAM,eAAe,EAAO,CAAC,GAAM,OAAO,GAAG,MAAM,GAAI,GAAM,OAAO,GAAG,MAAM,IAAK,IAChG,EACJ,AAAI,GACF,EAAU,AAAG,EAAK,IAAM,CACtB,GAAM,CAAC,EAAK,EAAO,GAAQ,AAAG,GAAM,EAAQ,EAAG,GACzC,EAAU,AAAG,EAAI,EAAK,GAAI,IAC1B,EAAY,AAAG,EAAI,EAAO,GAAI,IAC9B,EAAW,AAAG,EAAI,EAAM,GAAI,IAGlC,MADkB,AADA,AAAG,IAAK,CAAC,EAAS,EAAW,IACnB,IAAI,IAAK,IAAI,KAI3C,EAAU,AAAG,EAAI,EAAQ,CAAC,MAE5B,AAAG,GAAQ,GAEX,GAAI,GACE,EAAM,CAAE,OAAQ,GAAI,WAAY,GAEtC,GAAI,CAAC,EAAO,QACV,AAAI,EAAO,KAAK,OAAO,SAAS,GAAU,KAAM,IAAM,QAAQ,QACzD,CACL,GAAM,GAAgB,EAAO,KAAK,OAAO,QAAU,KAAM,AAAG,IAAQ,IAAM,GAAM,QAAQ,IAAY,GACpG,EAAU,EAAc,OAAO,QAC/B,EAAc,OAAO,UACrB,AAAQ,GAAI,SAAU,GAIxB,GAFA,EAAQ,UAEJ,EAAS,CACX,GAAM,GAAO,EAAQ,WACrB,GAAI,GAEF,AAAI,GAAK,GAAK,EAAO,KAAK,OAAO,eAAiB,EAAK,GAAK,EAAO,KAAK,OAAO,gBAC7E,GAAI,OAAS,EAAK,GAAK,EAAK,GAAK,SAAW,OAC5C,EAAI,WAAa,EAAK,GAAK,EAAK,GAAM,KAAK,MAAM,IAAM,EAAK,IAAM,IAAQ,KAAK,MAAM,IAAM,EAAK,IAAM,SAEnG,CAEL,GAAM,GAAa,KAAK,MAAM,IAAM,KAAK,IAAK,EAAK,GAAK,KAAS,IACjE,AAAI,EAAa,EAAO,KAAK,OAAO,eAClC,GAAI,OAAS,EAAK,IAAM,GAAM,SAAW,OACzC,EAAI,WAAa,KAAK,IAAI,IAAM,KAItC,EAAQ,UAER,GAAO,EACP,EAAQ,MA1DS,KCtBrB,8CAIA,GAAM,KAAc,CAAC,QAAS,UAAW,OAAQ,QAAS,MAAO,WAAY,WACzE,GACA,GAAkD,GAClD,GAAU,OAAO,iBAGf,GAAM,CAAC,MAAQ,KAAQ,MAE7B,kBAA2B,EAAQ,CACjC,MAAK,KACH,IAAQ,KAAM,AAAG,IAAe,EAAO,KAAK,QAAQ,WAChD,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,QAAQ,UAAU,MAAM,YAAY,OAEhF,GAGT,kBAA8B,EAAO,EAAQ,CAC3C,MAAK,IACA,GAAU,EAAO,KAAK,QAAQ,YAAe,EAAO,gBAAmB,GAAK,OAAS,EACxF,MACO,IAET,CAAI,EAAO,eAAgB,GAAU,EAChC,GAAU,OAAO,iBACf,GAAI,SAAQ,KAAO,IAAY,CACpC,GAAM,GAAS,AAAG,GAAM,eAAe,EAAO,CAAC,GAAM,OAAO,GAAG,MAAM,GAAI,GAAM,OAAO,GAAG,MAAM,IAAK,IAC9F,CAAC,EAAK,EAAO,GAAQ,AAAG,GAAM,EAAQ,EAAG,GAC/C,EAAO,UAEP,GAAM,GAAU,AAAG,EAAI,EAAK,GAAI,IAC1B,EAAY,AAAG,EAAI,EAAO,GAAI,IAC9B,EAAW,AAAG,EAAI,EAAM,GAAI,IAClC,EAAI,UACJ,EAAM,UACN,EAAK,UACL,GAAM,GAAY,AAAG,GAAK,CAAC,EAAS,EAAW,IAC/C,EAAQ,UACR,EAAU,UACV,EAAS,UACT,GAAM,GAAY,AAAG,EAAK,IAAM,EAAU,IAAI,IAAK,IAAI,IACvD,EAAU,UACV,GAAM,GAAiD,GACvD,GAAI,EAAO,KAAK,QAAQ,QAAS,CAC/B,GAAI,GACJ,GAAK,EAAO,QAIL,CACL,GAAM,GAAc,KAAM,AAAG,IAAQ,IAAM,GAAM,QAAQ,IACzD,EAAO,EAAY,OAAO,WAC1B,EAAY,OAAO,UACnB,AAAQ,GAAI,UAAW,OARJ,CACnB,GAAM,GAAW,KAAM,IAAM,QAAQ,GACrC,EAAO,EAAS,WAChB,AAAG,GAAQ,GAOb,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,AAAI,EAAK,GAAK,EAAO,KAAK,QAAQ,eAAe,EAAI,KAAK,CAAE,MAAO,KAAK,IAAI,IAAM,KAAK,MAAM,IAAM,EAAK,IAAM,KAAM,QAAS,IAAY,KAE3I,EAAI,KAAK,CAAC,EAAG,IAAM,EAAE,MAAQ,EAAE,OAEjC,EAAU,UACV,GAAO,EACP,EAAQ,MA5CS,KChBrB,GAAI,IAEJ,kBAA2B,EAAQ,CACjC,MAAK,KACH,IAAQ,KAAM,AAAG,IAAe,EAAO,KAAK,UAAU,WAClD,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,UAAU,UAAU,MAAM,YAAY,OAElF,GAGF,YAAqB,EAAY,EAAY,EAAQ,EAAW,CAGrE,GAFI,CAAC,GAAc,CAAC,GAChB,kBAAY,UAAW,GAAK,kBAAY,UAAW,GACnD,kBAAY,UAAW,kBAAY,QAAQ,MAAO,GAEtD,GAAM,GAAW,EACd,IAAI,CAAC,EAAK,IAAO,KAAK,IAAI,EAAW,GAAK,EAAW,KAAO,GAC5D,OAAO,CAAC,EAAK,IAAS,EAAM,EAAM,IAC/B,GAAI,GAEV,MADY,MAAK,IAAI,KAAK,MAAM,IAAQ,GAAI,IAAa,IAAM,GAI1D,YAAe,EAA0B,EAAgB,EAAY,EAAG,CAC7E,GAAI,GAAO,CAAE,YAAa,EAAG,KAAM,GAAI,OAAQ,GAAI,UAAW,IAC9D,GAAI,CAAC,GAAa,CAAC,GAAM,CAAC,MAAM,QAAQ,IAAc,CAAC,MAAM,QAAQ,GAAK,MAAO,GACjF,OAAW,KAAK,GACd,GAAI,EAAE,WAAa,EAAE,KAAM,CACzB,GAAM,GAAO,GAAY,EAAW,EAAE,WACtC,AAAI,EAAO,GAAa,EAAO,EAAK,aAAa,GAAO,IAAK,EAAG,YAAa,IAGjF,MAAO,GAGF,YAAiB,EAAe,CAqCrC,MApCc,AAAG,GAAK,IAAM,CAK1B,GAAM,GAAM,CAAC,CAAC,IAAM,IAAM,IAAM,MAC1B,EAAS,EAAM,OAAS,EAAM,OACpC,GAAI,CAAE,aAAqB,KAAS,MAAO,MAC3C,GAAM,GAAQ,EAAO,MAAM,SAAW,EAClC,AAAG,GAAM,cAAc,AAAG,GAAW,EAAQ,GAAI,EAAK,CAAC,GAAI,CAAC,GAAM,OAAO,GAAG,MAAM,GAAI,GAAM,OAAO,GAAG,MAAM,KAC5G,AAAG,GAAM,cAAc,EAAQ,EAAK,CAAC,GAAI,CAAC,GAAM,OAAO,GAAG,MAAM,GAAI,GAAM,OAAO,GAAG,MAAM,KAGxF,EAAM,CAAC,MAAQ,KAAQ,MACvB,CAAC,EAAK,EAAO,GAAQ,AAAG,GAAM,EAAM,EAAG,GACvC,EAAU,AAAG,EAAI,EAAK,EAAI,IAC1B,EAAY,AAAG,EAAI,EAAO,EAAI,IAC9B,EAAW,AAAG,EAAI,EAAM,EAAI,IAC5B,EAAY,AAAG,GAAK,CAAC,EAAS,EAAW,IACzC,EAAQ,AAAG,GAAM,CAAC,EAAW,EAAW,GAAY,GAAG,QAAQ,GAY/D,EAAS,EAAM,IAAI,EAAM,OAG/B,MAFgB,GAAO,IAAI,EAAO,SAOtC,kBAA8B,EAAO,EAA2B,CAC9D,MAAK,IACE,GAAI,SAAQ,KAAO,IAAY,CAEpC,GAAI,GAAsB,GAC1B,GAAI,EAAO,KAAK,UAAU,QAAS,CACjC,GAAM,GAAQ,GAAQ,GACtB,GAAI,CAAC,EAAO,QACV,EAAO,AAAG,EAAK,IA+BN,CAAC,GADsB,AAFf,AADC,AArBJ,GAAM,QAAQ,GAqBN,QAAQ,CAAC,IAAK,IACX,UAAU,GAEI,iBAGlC,CACL,GAAM,GAAc,KAAM,AAAG,IAAQ,IAAM,GAAM,QAAQ,CAAE,WAAY,KACvE,EAAO,CAAC,GAAG,EAAY,OAAO,YAC9B,EAAY,OAAO,UACnB,AAAQ,GAAI,UAAW,GAEzB,AAAG,GAAQ,GAEb,EAAQ,KAhDS,GCjFrB,8CCEA,aAAoC,EAAS,CAC3C,GAAM,CAAC,EAAS,EAAS,EAAiB,GAAmB,EAC7D,MAAO,CAAE,UAAS,UAAS,kBAAiB,mBAGvC,YAAgB,CAErB,YAAY,EAAO,CACjB,KAAK,MAAQ,EAGf,QAAQ,EAAO,CACb,MAAO,AAAG,GAAK,IAAM,CAEnB,GAAM,GAAU,AADA,EAAM,UAAU,IAAI,OAAO,IAAI,GACvB,WAAW,GAE7B,EAAY,AADF,KAAK,MAAM,QAAQ,GACT,IAAI,AAAC,GAAM,EAAE,QAAQ,CAAC,KAC1C,EAAe,IAA2B,GAChD,MAAO,CACL,cAAe,EAAa,QAAQ,UACpC,QAAS,EAAa,QACtB,gBAAiB,EAAa,gBAC9B,gBAAiB,EAAa,mBAKpC,SAAU,CACR,KAAK,MAAM,YC7Bf,YAAc,EAAG,CACf,MAAO,MAAK,MAAM,EAAI,GAEjB,YAAc,CAKnB,YAAY,EAAS,EAAiB,CACpC,KAAK,cAAgB,GAAI,OAAM,GAC/B,KAAK,iBAAmB,GACxB,KAAK,gBAAkB,EAGzB,QAAQ,EAAG,CACT,KAAK,cAAc,EAAE,KAAK,kBAAoB,EAC9C,KAAK,KAAK,KAAK,kBAGjB,SAAU,CACR,GAAM,GAAM,KAAK,cAAc,GAC/B,YAAK,SAAS,EAAG,KAAK,oBACtB,KAAK,KAAK,GACV,KAAK,cAAc,KAAK,iBAAmB,GAAK,KACzC,EAGT,OAAQ,CACN,MAAO,MAAK,mBAAqB,GAGnC,MAAO,CACL,MAAO,MAAK,iBAAmB,EAGjC,KAAM,CACJ,MAAO,MAAK,cAAc,MAAM,EAAG,KAAK,iBAAmB,GAG7D,KAAM,CACJ,MAAO,MAAK,cAAc,GAG5B,KAAK,EAAG,CACN,KAAO,EAAI,GAAK,KAAK,KAAK,GAAK,GAAI,IACjC,KAAK,SAAS,EAAG,GAAK,IACtB,EAAI,GAAK,GAIb,KAAK,EAAG,CACN,KAAO,EAAI,GAAK,KAAK,kBAAkB,CACrC,GAAI,GAAI,EAAI,EAEZ,GADI,EAAI,KAAK,kBAAoB,KAAK,KAAK,EAAG,EAAI,IAAI,IAClD,CAAC,KAAK,KAAK,EAAG,GAAI,MACtB,KAAK,SAAS,EAAG,GACjB,EAAI,GAIR,WAAW,EAAG,CACZ,MAAO,MAAK,gBAAgB,KAAK,cAAc,IAGjD,KAAK,EAAG,EAAG,CACT,MAAO,MAAK,WAAW,GAAK,KAAK,WAAW,GAG9C,SAAS,EAAG,EAAG,CACb,GAAM,GAAI,KAAK,cAAc,GAC7B,KAAK,cAAc,GAAK,KAAK,cAAc,GAC3C,KAAK,cAAc,GAAK,ICtE5B,aAAqC,EAAY,EAAO,EAAU,EAAU,EAAoB,EAAQ,CACtG,GAAM,CAAC,EAAQ,GAAS,EAAO,MAC3B,EAAe,GACb,EAAS,KAAK,IAAI,EAAW,EAAoB,GACjD,EAAO,KAAK,IAAI,EAAW,EAAqB,EAAG,GACzD,OAAS,GAAW,EAAQ,EAAW,EAAM,EAAE,EAAU,CACvD,GAAM,GAAS,KAAK,IAAI,EAAW,EAAoB,GACjD,EAAO,KAAK,IAAI,EAAW,EAAqB,EAAG,GACzD,OAAS,GAAW,EAAQ,EAAW,EAAM,EAAE,EAC7C,GAAI,EAAO,IAAI,EAAU,EAAU,GAAc,EAAO,CACtD,EAAe,GACf,MAGJ,GAAI,CAAC,EAAc,MAErB,MAAO,GAGF,YAAiC,EAAgB,EAAoB,EAAQ,CAClF,GAAM,CAAC,EAAQ,EAAO,GAAgB,EAAO,MACvC,EAAQ,GAAa,IAAQ,EAAS,EAAQ,EAAc,CAAC,CAAE,WAAY,GACjF,OAAS,GAAW,EAAG,EAAW,EAAQ,EAAE,EAC1C,OAAS,GAAW,EAAG,EAAW,EAAO,EAAE,EACzC,OAAS,GAAa,EAAG,EAAa,EAAc,EAAE,EAAY,CAChE,GAAM,GAAQ,EAAO,IAAI,EAAU,EAAU,GAE7C,AAAI,EAAQ,GAER,IAA4B,EAAY,EAAO,EAAU,EAAU,EAAoB,IACzF,EAAM,QAAQ,CAAE,QAAO,KAAM,CAAE,WAAU,WAAU,GAAI,KAK/D,MAAO,GCrCT,OAA2B,SCA3B,OAAqB,SAEd,YAAwB,EAAG,EAAG,EAAU,EAAS,CACtD,MAAO,CACL,EAAG,EAAQ,IAAI,EAAG,EAAG,GACrB,EAAG,EAAQ,IAAI,EAAG,EAAG,EAAe,mBAIjC,YAAwB,EAAM,EAAc,EAAS,CAC1D,GAAM,CAAE,WAAU,WAAU,GAAI,GAAa,EACvC,CAAE,IAAG,KAAM,GAAe,EAAU,EAAU,EAAU,GAC9D,MAAO,CACL,EAAG,EAAK,SAAW,EAAe,EAClC,EAAG,EAAK,SAAW,EAAe,GAY/B,YAAe,EAAG,EAAK,EAAK,CACjC,MAAI,GAAI,EAAY,EAChB,EAAI,EAAY,EACb,EAGF,YAAyB,EAAI,EAAI,EAAI,EAAI,CAC9C,GAAM,GAAK,EAAK,EACV,EAAK,EAAK,EAChB,MAAO,GAAK,EAAK,EAAK,EAGjB,YAAoB,EAAG,EAAG,CAC/B,MAAO,CAAE,EAAG,EAAE,EAAI,EAAE,EAAG,EAAG,EAAE,EAAI,EAAE,GCtCpC,OAAqB,SAEd,YAA6B,EAAe,EAAe,CAChE,GAAM,GAAe,EAAc,MAAM,GACnC,EAAS,GAAI,cAAa,GAChC,OAAS,GAAW,EAAG,EAAW,EAAc,IAAY,CAC1D,GAAM,GAAI,EAAc,IAAI,EAAU,GAChC,EAAI,EAAc,IAAI,EAAU,GACtC,EAAO,GAAY,EAAc,IAAI,EAAG,EAAG,GAE7C,MAAO,GAGT,aAAwB,EAAG,EAAG,EAAU,EAAe,CACrD,MAAO,CACL,EAAG,EAAc,IAAI,EAAG,EAAG,GAC3B,EAAG,EAAc,IAAI,EAAG,EAAG,EAAe,mBAIvC,aAA0B,EAAqB,EAAe,CACnE,GAAM,GAAwB,GAC9B,OAAS,GAAW,EAAG,EAAe,iBAAe,IAAY,CAC/D,GAAM,GAAW,EAAoB,IAAI,EAAU,GAAG,UAChD,EAAW,EAAoB,IAAI,EAAU,GAAG,UAChD,CAAE,IAAG,KAAM,IAAe,EAAU,EAAU,EAAU,GAC9D,EAAO,KAAK,GACZ,EAAO,KAAK,GAEd,MAAO,AAAG,IAAS,EAAQ,CAAK,iBAAe,IAG1C,YAAyB,EAAqB,EAAc,EAAe,CAChF,MAAO,AAAG,GAAK,IAAM,EAAoB,WAAW,IAAI,AAAG,GAAO,EAAc,UAAU,UAAU,IAAI,IAAiB,EAAqB,KAGhJ,aAAa,EAAG,EAAG,CACjB,MAAO,AAAG,GAAK,IAAM,CACnB,GAAM,GAAU,EAAE,IAAI,AAAG,GAAO,EAAG,UACnC,MAAO,GAAE,IAAI,EAAQ,IAAI,AAAG,GAAO,EAAG,aAInC,YAAkB,EAAQ,CAC/B,GAAM,CAAC,EAAQ,EAAO,GAAS,EAAO,MACtC,MAAO,AAAG,GAAK,IAAM,CAEnB,GAAM,GAAS,AADE,EAAO,QAAQ,CAAC,EAAS,EAAO,IACzB,OAAO,GACzB,EAAU,EAAO,IAAI,AAAG,GAAO,EAAO,UAAU,WAAW,GAC3D,EAAU,IAAI,EAAQ,GAAO,WAAW,GAC9C,MAAO,AAAG,IAAO,CAAC,EAAS,GAAU,KF/CzC,GAAM,IAAuB,AAAU,aAAU,IAAI,CAAC,CAAC,EAAgB,KAAoB,CAAC,AAAU,WAAQ,GAAiB,AAAU,WAAQ,KAC3I,GAAqB,GAAqB,IAAI,CAAC,CAAC,CAAE,KAAkB,GACpE,GAAqB,GAAqB,IAAI,CAAC,CAAC,KAAmB,GAEnE,IAAsB,GAE5B,aAAyB,EAAQ,EAAO,EAAe,CACrD,GAAM,GAAW,EAAc,MAAM,GAAK,EAC1C,MAAO,CACL,EAAG,EAAc,IAAI,EAAM,EAAG,EAAM,EAAG,GACvC,EAAG,EAAc,IAAI,EAAM,EAAG,EAAM,EAAG,EAAW,IAItD,YAAkC,EAAO,EAAc,EAAQ,EAAO,CACpE,MAAO,CACL,EAAG,AAAQ,GAAM,KAAK,MAAM,EAAM,EAAI,GAAe,EAAG,EAAS,GACjE,EAAG,AAAQ,GAAM,KAAK,MAAM,EAAM,EAAI,GAAe,EAAG,EAAQ,IAIpE,YAAkC,EAAQ,EAAgB,EAAkB,EAAc,EAAS,EAAc,EAAe,EAAmB,EAAG,CACpJ,GAAM,CAAC,EAAQ,GAAS,EAAa,MAE/B,EAAwB,GAAyB,EAAe,SAAU,EAAc,EAAQ,GAChG,EAAe,IAAgB,EAAQ,EAAuB,GAEhE,EADmB,AAAQ,GAAW,EAAe,SAAU,GAEnE,OAAS,GAAI,EAAG,EAAI,EAAkB,IAAK,CACzC,GAAM,GAAwB,GAAyB,EAAgB,EAAc,EAAQ,GACvF,EAAc,AAAQ,GAAe,EAAsB,EAAG,EAAsB,EAAG,EAAkB,GAC/G,EAAiB,AAAQ,GAAW,CAClC,EAAG,EAAsB,EAAI,EAC7B,EAAG,EAAsB,EAAI,GAC5B,CAAE,EAAG,EAAY,EAAG,EAAG,EAAY,IAExC,GAAM,GAAwB,GAAyB,EAAgB,EAAc,EAAQ,GACvF,EAAQ,EAAa,IAAI,EAAsB,EAAG,EAAsB,EAAG,GACjF,MAAO,CAAE,SAAU,EAAgB,KAAM,AAAU,aAAU,GAAmB,SAG3E,YAAoB,EAAM,EAAQ,EAAS,EAAc,EAAkB,EAAkB,CAClG,GAAM,GAAW,EAAO,MAAM,GACxB,EAAW,GAAmB,OAC9B,EAAoB,GAAI,OAAM,GAE9B,CAAE,KAAM,EAAU,MAAO,GAAc,EACvC,EAAY,AAAQ,GAAe,EAAU,EAAc,GACjE,EAAkB,EAAS,IAAM,CAC/B,MAAO,EACP,KAAM,AAAU,aAAU,EAAS,IACnC,SAAU,GAGZ,OAAS,GAAO,EAAW,EAAG,GAAQ,EAAG,EAAE,EAAM,CAC/C,GAAM,GAAmB,GAAmB,GACtC,EAAmB,GAAmB,GAC5C,AAAI,EAAkB,IAAqB,CAAC,EAAkB,IAC5D,GAAkB,GAAoB,GAAyB,EAAM,EAAkB,GAAmB,EAAkB,EAAQ,EAAS,EAAc,IAI/J,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EAAM,CAC1C,GAAM,GAAmB,GAAmB,GACtC,EAAmB,GAAmB,GAC5C,AAAI,EAAkB,IAAqB,CAAC,EAAkB,IAC5D,GAAkB,GAAoB,GAAyB,EAAM,EAAkB,GAAmB,EAAkB,EAAQ,EAAS,EAAc,IAG/J,MAAO,GAGT,kBAAuC,EAAe,EAAS,EAAU,CACvE,GAAI,GAAa,EACX,EAAgB,AAAS,GAAS,GAClC,EAAmB,KAAM,SAAQ,IAAI,CAAC,EAAc,SAAU,EAAQ,SAAU,EAAc,WAC9F,EAAe,EAAiB,GAChC,EAAgB,EAAiB,GACjC,EAAsB,EAAiB,GACvC,EAAe,AAAS,GAAgB,EAAqB,IAAqB,GAClF,EAAqB,KAAM,GAAa,SAExC,EAAoB,AADC,MAAM,KAAK,AAAS,GAAoB,EAAc,IACpC,IAAI,CAAC,EAAO,IACvD,IAAc,EACP,CACL,SAAU,CACR,EAAG,EAAmB,IAAI,EAAG,GAC7B,EAAG,EAAmB,IAAI,EAAG,IAE/B,KAAM,AAAU,aAAU,GAC1B,WAGE,EAAoB,EAAkB,OAAO,AAAC,GAAQ,EAAI,MAAQ,GACxE,SAAc,UACd,EAAa,UACN,CAAE,UAAW,EAAmB,MAAO,EAAa,EAAkB,QGhG/E,GAAM,KAAsB,EACtB,GAAsB,GAE5B,YAA6C,EAAO,EAAkB,CAAE,IAAG,KAAK,EAAY,CAC1F,MAAO,GAAM,KAAK,CAAC,CAAE,eAAgB,CACnC,GAAM,GAAwB,EAAU,GAAY,SACpD,MAAO,AAAQ,IAAgB,EAAG,EAAG,EAAsB,EAAG,EAAsB,IAAM,IAI9F,aAA0B,EAAe,EAAkB,EAAmB,CAK5E,MAAO,AAJ6B,GAAkB,OAAO,CAAC,EAAQ,CAAE,WAAU,SAAS,IACpF,IAAoC,EAAe,EAAkB,EAAU,IAAa,IAAU,GACpG,GACN,GACkC,EAAkB,OAGlD,YAA6B,EAAc,EAAe,EAAwB,EAAwB,EAAW,EAAe,EAAgB,CACzJ,GAAM,GAAkD,GAClD,EAAQ,AAAW,GAAwB,EAAgB,IAAqB,GAChF,EAAmB,EAAY,EAErC,KAAO,EAAM,OAAS,GAAiB,CAAC,EAAM,SAAS,CAErD,GAAM,GAAO,EAAM,UAEb,EAAkB,AAAQ,GAAe,EAAK,KAAM,GAAqB,GAC/E,GAAI,GAAoC,EAAO,EAAkB,EAAiB,EAAK,KAAK,IAAK,SAEjG,GAAM,GAAY,AAAW,GAAW,EAAM,EAAc,EAAe,GAAqB,EAAwB,GAClH,EAAQ,IAAiB,EAAO,EAAkB,GACxD,AAAI,EAAQ,GAAgB,EAAM,KAAK,CAAE,YAAW,UAEtD,MAAO,GCFT,kBAAwC,EAAS,CAC/C,MAAO,SAAQ,IAAI,EAAQ,IAAI,AAAC,GAAW,EAAO,WAG7C,aAAmB,EAAM,EAAQ,EAAQ,CAC9C,MAAO,CACL,MAAO,EAAK,MACZ,UAAW,EAAK,UAAU,IAAI,CAAC,CAAE,QAAO,OAAM,cAAgB,EAC5D,QACA,OACA,SAAU,CAAE,EAAG,KAAK,MAAM,EAAS,EAAI,GAAS,EAAG,KAAK,MAAM,EAAS,EAAI,QAK1E,YAAkB,EAAO,CAAC,EAAS,GAAU,CAClD,GAAM,GAAQ,EAAM,QAAQ,GACtB,EAAU,EAAM,eAAe,CAAC,EAAS,IAC/C,SAAM,UACC,EAGF,YAA2B,EAAO,CAAC,EAAQ,GAAQ,CAAC,EAAuB,GAAuB,CAEvG,MADoB,GAAM,IAAI,AAAC,GAAS,IAAU,EAAM,EAAS,EAAuB,EAAQ,IRpDlG,mBAAgC,EAAO,EAAK,EAAQ,EAAW,CAC7D,MAAO,IAAI,SAAQ,KAAO,IAAY,CACpC,GAAM,GAAmB,KAAM,AAAK,IAAkB,CAAC,EAAI,cAAe,EAAI,QAAS,EAAI,gBAAiB,EAAI,kBAC1G,EAAe,EAAiB,GAChC,EAAgB,EAAiB,GACjC,EAAyB,EAAiB,GAC1C,EAAyB,EAAiB,GAC1C,EAAQ,KAAM,AAAe,IAAoB,EAAc,EAAe,EAAwB,EAAwB,EAAO,KAAK,UAAW,EAAO,KAAK,cAAe,EAAO,KAAK,gBAC5L,EAAS,AAAK,GAAkB,EAAO,CAAC,EAAM,MAAM,GAAI,EAAM,MAAM,IAAK,CAAC,EAAW,IAC3F,EAAQ,KAIZ,mBAA8B,EAAO,EAAK,EAAQ,EAAW,CAC3D,MAAO,IAAI,SAAQ,KAAO,IAAY,CACpC,GAAM,GAAO,KAAM,AAAW,IAAiB,EAAI,cAAe,EAAI,QAAS,EAAO,KAAK,gBACrF,EAAS,AAAK,GAAkB,CAAC,GAAO,CAAC,EAAM,MAAM,GAAI,EAAM,MAAM,IAAK,CAAC,EAAW,IAC5F,EAAQ,KAIL,YAAc,CAGnB,YAAY,EAAO,CACjB,KAAK,UAAY,EACjB,KAAK,UAAY,EAAM,MAAM,OAAO,GAAG,MAAM,GACzC,KAAK,UAAY,KAAK,MAAK,UAAY,UAGvC,eAAc,EAAO,EAAQ,CACjC,GAAM,GAAU,AAAK,GAAS,EAAO,CAAC,KAAK,UAAW,KAAK,YACrD,EAAM,KAAK,UAAU,QAAQ,EAAS,GAEtC,EAAS,EAAO,KAAK,cAAgB,EACvC,KAAM,KAAe,EAAO,EAAK,EAAQ,KAAK,WAC9C,KAAM,KAAiB,EAAO,EAAK,EAAQ,KAAK,WAEpD,SAAI,cAAc,UAClB,EAAI,QAAQ,UACZ,EAAI,gBAAgB,UACpB,EAAI,gBAAgB,UACpB,EAAQ,UAED,EAGT,SAAU,CACR,KAAK,UAAU,YAInB,kBAA2B,EAAQ,CACjC,GAAM,GAAQ,KAAM,AAAG,IAAe,EAAO,KAAK,WAC5C,EAAY,GAAc,IAAU,GAC1C,MAAI,GAAO,OAAO,GAAI,eAAe,EAAO,KAAK,UAAU,MAAM,YAAY,MACtE,GAAI,IAAQ,GS/DrB,+CCEO,YAAoB,EAAK,CAC9B,MAAO,CACL,KAAK,IAAI,EAAI,SAAS,GAAK,EAAI,WAAW,IAC1C,KAAK,IAAI,EAAI,SAAS,GAAK,EAAI,WAAW,KAIvC,YAAsB,EAAK,CAChC,MAAO,CACL,EAAI,WAAW,GAAM,GAAI,SAAS,GAAK,EAAI,WAAW,IAAM,EAC5D,EAAI,WAAW,GAAM,GAAI,SAAS,GAAK,EAAI,WAAW,IAAM,GAIzD,YAAkC,EAAK,EAAO,EAAU,CAC7D,GAAM,GAAI,EAAM,MAAM,GAChB,EAAI,EAAM,MAAM,GAChB,EAAQ,CAAC,CACb,EAAI,WAAW,GAAK,EACpB,EAAI,WAAW,GAAK,EACpB,EAAI,SAAS,GAAK,EAClB,EAAI,SAAS,GAAK,IAEpB,MAAO,AAAG,IAAM,cAAc,EAAO,EAAO,CAAC,GAAI,GAG5C,YAA6B,EAAK,EAAQ,CAC/C,GAAM,GAAa,CAAC,EAAI,WAAW,GAAK,EAAO,GAAI,EAAI,WAAW,GAAK,EAAO,IACxE,EAAW,CAAC,EAAI,SAAS,GAAK,EAAO,GAAI,EAAI,SAAS,GAAK,EAAO,IAClE,EAAgB,EAAI,cAAc,IAAI,AAAC,GACvB,CAAC,EAAM,GAAK,EAAO,GAAI,EAAM,GAAK,EAAO,KAG/D,MAAO,CAAE,aAAY,WAAU,gBAAe,WAAY,EAAI,YAGzD,YAAoB,EAAK,EAAS,IAAK,CAC5C,GAAM,GAAS,GAAa,GACtB,EAAO,GAAW,GAClB,EAAc,CAAC,EAAS,EAAK,GAAK,EAAG,EAAS,EAAK,GAAK,GACxD,EAAa,CAAC,EAAO,GAAK,EAAY,GAAI,EAAO,GAAK,EAAY,IAClE,EAAW,CAAC,EAAO,GAAK,EAAY,GAAI,EAAO,GAAK,EAAY,IACtE,MAAO,CAAE,aAAY,WAAU,cAAe,EAAI,eAG7C,YAAqB,EAAK,CAC/B,GAAM,GAAU,GAAa,GACvB,EAAO,GAAW,GAElB,EAAW,AADD,KAAK,IAAI,GAAG,GACD,EACrB,EAAa,CAAC,EAAQ,GAAK,EAAU,EAAQ,GAAK,GAClD,EAAW,CAAC,EAAQ,GAAK,EAAU,EAAQ,GAAK,GACtD,MAAO,CAAE,aAAY,WAAU,cAAe,EAAI,eCnD7C,YAAmB,CAQxB,YAAY,EAAO,EAAW,EAAkB,CAC9C,KAAK,MAAQ,EACb,KAAK,QAAU,EAAiB,IAAI,AAAC,GAAW,CAAC,EAAO,SAAU,EAAO,WACzE,KAAK,cAAgB,AAAG,GAAS,KAAK,SACtC,KAAK,UAAY,EACjB,KAAK,gBAAkB,AAAG,GAAS,CAAC,EAAW,IAC/C,KAAK,sBAAwB,AAAG,GAAS,CAAC,EAAY,EAAG,EAAY,IAGvE,eAAe,EAAO,CACpB,MAAO,AAAG,GAAK,IAAM,CACnB,GAAM,GAAa,AAAG,GAAM,EAAO,CAAC,EAAG,GAAI,CAAC,GAAI,IAC1C,EAAW,AAAG,GAAM,EAAO,CAAC,EAAG,GAAI,CAAC,GAAI,IACxC,EAAkB,AAAG,GAAI,AAAG,GAAI,EAAY,KAAK,iBAAkB,KAAK,eACxE,EAAe,AAAG,GAAI,EAAU,KAAK,uBACrC,EAAc,AAAG,EAAI,AAAG,GAAI,EAAiB,GAAe,KAAK,iBACjE,EAAY,AAAG,EAAI,AAAG,GAAI,EAAiB,GAAe,KAAK,iBACrE,MAAO,AAAG,IAAS,CAAC,EAAa,GAAY,KAIjD,mBAAmB,EAAkB,EAAO,CAC1C,MAAO,AAAG,GAAK,IAAM,CACnB,GAAM,GAAY,AAAG,GAAI,AAAG,GAAI,EAAiB,QAAQ,CAAC,GAAI,EAAG,IAAK,KAAK,iBAAkB,KAAK,QAAQ,IAC1G,MAAO,AAAG,GAAI,EAAW,KAAK,wBAI5B,UAAS,EAAO,EAAQ,CAC5B,GAAM,GAAU,KAAK,MAAM,QAAQ,GAC7B,EAAc,EAAQ,UAC5B,EAAQ,UACR,GAAM,GAAU,AAAG,EAAK,IAAM,AAAG,GAAQ,AAAG,GAAM,EAAa,CAAC,EAAG,GAAI,CAAC,GAAI,KAAK,WAC3E,EAAS,EAAQ,WACjB,EAAW,AAAG,GAAM,EAAa,CAAC,EAAG,GAAI,CAAC,GAAI,IAC9C,EAAQ,KAAK,eAAe,GAClC,EAAS,UACT,GAAM,GAAY,KAAM,AAAG,IAAM,uBAAuB,EAAO,EAAQ,EAAO,KAAK,SAAU,EAAO,KAAK,aAAc,EAAO,KAAK,gBAC7H,EAAW,EAAU,YAE3B,EAAQ,UACR,EAAU,UACV,GAAM,GAAqE,GAC3E,OAAW,KAAS,GAClB,GAAI,EAAO,IAAU,EAAO,KAAK,cAAe,CAC9C,GAAM,GAAc,AAAG,GAAM,EAAO,CAAC,EAAO,GAAI,CAAC,EAAG,KAC9C,EAAmB,AAAG,GAAM,EAAa,CAAC,EAAO,GAAI,CAAC,EAAG,KACzD,EAAgB,AAAG,EAAK,IAAM,KAAK,mBAAmB,EAAkB,GAAO,QAAQ,CAAC,GAAI,KAClG,EAAiB,UACjB,EAAM,KAAK,CAAE,IAAK,EAAa,gBAAe,WAAY,EAAO,KAGrE,SAAY,UACZ,EAAM,UACC,OAGH,oBAAmB,EAAO,EAAQ,CACtC,GAAM,GAAc,EAAM,MAAM,GAC1B,EAAa,EAAM,MAAM,GACzB,EAAQ,AAAG,EAAK,IAAM,EAAM,eAAe,CAAC,KAAK,UAAW,KAAK,YAAY,IAAI,OAAO,IAAI,IAC5F,EAAc,KAAM,MAAK,SAAS,EAAO,GAC/C,EAAM,UACN,GAAM,GAAmB,GACzB,GAAI,CAAC,GAAe,EAAY,SAAW,EAAG,MAAO,GACrD,OAAW,KAAc,GAAa,CACpC,GAAM,GAAQ,EAAW,IAAI,WACvB,EAAa,EAAM,MAAM,EAAG,GAC5B,EAAW,EAAM,MAAM,EAAG,GAC1B,EAAgB,EAAW,cAAc,YAC/C,EAAW,IAAI,UACf,EAAW,cAAc,UACzB,EAAM,KAAK,AAAI,GAAoB,CAAE,aAAY,WAAU,gBAAe,WAAY,EAAW,YAAc,CAAC,EAAa,KAAK,UAAW,EAAc,KAAK,aAElK,MAAO,KCrFJ,aAA0B,EAAO,CACtC,MAAO,GAAQ,EAAI,KAAK,GAAK,KAAK,MAAO,GAAQ,KAAK,IAAO,GAAI,KAAK,KAGjE,YAAyB,EAAQ,EAAQ,CAC9C,GAAM,GAAU,KAAK,GAAK,EAAI,KAAK,MAAM,CAAE,GAAO,GAAK,EAAO,IAAK,EAAO,GAAK,EAAO,IACtF,MAAO,KAAiB,GAGnB,GAAM,IAAyB,CAAC,EAAG,IAAM,CAAC,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,GAAI,CAAC,EAAG,EAAG,IAEvE,YAAa,EAAI,EAAI,CAC1B,GAAI,GAAU,EACd,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,GAAW,EAAG,GAAK,EAAG,GAExB,MAAO,GAGF,aAA4B,EAAK,EAAa,CACnD,GAAM,GAAwB,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,EAAO,KAAK,EAAI,GAAG,IAErB,MAAO,GAGF,YAAmC,EAAM,EAAM,CACpD,GAAM,GAA2B,GAC3B,EAAO,EAAK,OAClB,OAAS,GAAM,EAAG,EAAM,EAAM,IAAO,CACnC,EAAQ,KAAK,IACb,OAAS,GAAM,EAAG,EAAM,EAAM,IAC5B,EAAQ,GAAK,KAAK,GAAI,EAAK,GAAM,IAAmB,EAAM,KAG9D,MAAO,GAGF,YAA6B,EAAU,EAAQ,CACpD,GAAM,GAAO,KAAK,IAAI,GAChB,EAAO,KAAK,IAAI,GAChB,EAAiB,CAAC,CAAC,EAAM,CAAC,EAAM,GAAI,CAAC,EAAM,EAAM,GAAI,CAAC,EAAG,EAAG,IAC5D,EAAoB,GAAuB,EAAO,GAAI,EAAO,IAC7D,EAA2B,GAA0B,EAAmB,GACxE,EAA4B,GAAuB,CAAC,EAAO,GAAI,CAAC,EAAO,IAC7E,MAAO,IAA0B,EAA0B,GAGtD,YAA+B,EAAQ,CAC5C,GAAM,GAAoB,CAAC,CAAC,EAAO,GAAG,GAAI,EAAO,GAAG,IAAK,CAAC,EAAO,GAAG,GAAI,EAAO,GAAG,KAC5E,EAAuB,CAAC,EAAO,GAAG,GAAI,EAAO,GAAG,IAChD,EAAsB,CAC1B,CAAC,GAAI,EAAkB,GAAI,GAC3B,CAAC,GAAI,EAAkB,GAAI,IAE7B,MAAO,CACL,EAAkB,GAAG,OAAO,EAAoB,IAChD,EAAkB,GAAG,OAAO,EAAoB,IAChD,CAAC,EAAG,EAAG,IAIJ,YAAqB,EAAuB,EAAgB,CACjE,MAAO,CACL,GAAI,EAAuB,EAAe,IAC1C,GAAI,EAAuB,EAAe,KC7D9C,GAAM,KAA0B,EAE1B,GAA0B,KAC1B,GAAoB,CAAC,EAAG,EAAG,EAAG,GAAI,GAAI,EAAG,GACzC,IAAoC,EACpC,IAA6C,EAE5C,QAAmB,CAQxB,YAAY,EAAc,EAAkB,EAAW,CACrD,KAAK,aAAe,EACpB,KAAK,iBAAmB,EACxB,KAAK,UAAY,EACjB,KAAK,YAAc,GACnB,KAAK,QAAU,EACf,KAAK,cAAgB,EAGvB,uBAAuB,EAAe,EAAgB,CACpD,GAAM,GAAuB,EAAc,IAAI,AAAC,GAAU,AAAK,GAAY,CAAC,GAAG,EAAO,GAAI,IACpF,EAAgB,KAAK,8BAA8B,GAEzD,MAAO,AAAI,IAAW,AAAI,GAAY,GAAgB,KAGxD,uBAAuB,EAAW,CAChC,GAAM,GAAc,KAAK,8BAA8B,GAEjD,EAAgB,AAAI,GAAW,AAAI,GAAY,GAAc,IACnE,EAAc,cAAgB,GAC9B,OAAS,GAAI,EAAG,EAAI,GAAkB,OAAQ,IAC5C,EAAc,cAAc,KAAK,EAAU,GAAkB,IAAI,MAAM,EAAG,IAE5E,MAAO,GAGT,mBAAmB,EAAW,EAAM,EAAO,EAAgB,CACzD,GAAM,GAAU,AAAI,GAAW,GACzB,EAAc,CAAC,EAAQ,GAAK,KAAK,UAAW,EAAQ,GAAK,KAAK,UAAY,GAAQ,GAAK,EAAQ,IAAM,KAAK,UAAY,GACtH,EAAe,EAAU,IAAI,AAAC,GAAU,CAC5C,EAAY,GAAM,GAAM,GAAK,KAAK,UAAY,GAC9C,EAAY,GAAM,GAAM,GAAK,KAAK,UAAY,GAC9C,EAAY,GAAK,EAAM,KAEnB,EAAuB,AAAK,GAAoB,EAAO,CAAC,EAAG,IAC3D,EAAgB,EAAa,IAAI,AAAC,GAE/B,CAAC,GADQ,AAAK,GAAY,EAAO,GACpB,EAAM,KAEtB,EAAwB,AAAK,GAAsB,GACnD,EAAY,CAAC,GAAG,AAAI,GAAa,GAAO,GACxC,EAAoB,CACxB,AAAK,GAAI,EAAW,EAAsB,IAC1C,AAAK,GAAI,EAAW,EAAsB,KAE5C,MAAO,GAAc,IAAI,AAAC,GAAU,CAClC,EAAM,GAAK,EAAkB,GAC7B,EAAM,GAAK,EAAkB,GAC7B,EAAM,UAIJ,eAAc,EAAO,EAAQ,CACjC,GAAI,GAAc,GAGd,EACJ,AAAK,MAAK,UAAY,GAAO,KAAK,QAAU,EAAO,KAAK,YAAe,CAAC,EAAO,KAAK,WAAa,CAAC,EAAO,iBACvG,GAAQ,KAAM,MAAK,aAAa,mBAAmB,EAAO,GAC1D,KAAK,QAAU,GAEb,EAAO,gBAAgB,KAAK,UAG5B,GAAU,EAAM,OAAS,GAAQ,GAAM,SAAW,KAAK,eAAmB,KAAK,gBAAkB,EAAO,KAAK,UAAa,CAAC,EAAO,KAAK,YACzI,MAAK,cAAgB,EACrB,KAAK,YAAc,CAAC,GAAG,GAEnB,KAAK,YAAY,OAAS,GAAG,GAAc,KAEjD,GAAM,GAAmB,GAEzB,AAAI,EAAO,KAAK,aAAe,KAAK,gBAAkB,GAAG,MAAK,QAAU,GAGxE,OAAS,GAAI,EAAG,EAAI,KAAK,YAAY,OAAQ,IAAK,CAChD,GAAM,GAAa,KAAK,YAAY,GACpC,GAAI,EAAC,EACL,GAAI,EAAO,KAAK,UAAW,CACzB,GAAM,GAAQ,EAAO,KAAK,SAAW,AAAK,GAAgB,EAAW,cAAc,KAAoC,EAAW,cAAc,MAA+C,EACzL,EAAa,AAAI,GAAa,GAC9B,EAAuB,CAAC,EAAW,GAAK,EAAM,MAAM,GAAI,EAAW,GAAK,EAAM,MAAM,IACpF,EAAe,EAAO,KAAK,SAAW,AAAG,GAAM,iBAAiB,EAAO,EAAO,EAAG,GAAwB,EAAM,QAC/G,EAAiB,AAAK,GAAoB,CAAC,EAAO,GAClD,EAAS,EAAc,KAAK,uBAAuB,EAAW,cAAe,GAAkB,EAC/F,EAAe,AAAI,GAAyB,EAAQ,EAAc,CAAC,KAAK,UAAW,KAAK,YACxF,EAAY,EAAa,IAAI,KACnC,EAAa,UACb,EAAa,UACb,GAAM,CAAC,EAAa,GAAa,KAAM,MAAK,iBAAiB,QAAQ,GACrE,EAAU,UACV,GAAM,GAAa,EAAY,WAAW,GAE1C,GADA,EAAY,UACR,GAAc,EAAO,KAAK,cAAe,CAC3C,GAAM,GAAoB,AAAG,EAAQ,EAAW,CAAC,GAAI,IAC/C,EAAY,EAAkB,YACpC,EAAU,UACV,EAAkB,UAClB,GAAM,GAAS,KAAK,mBAAmB,EAAW,EAAQ,EAAO,GAC3D,EAAkB,KAAK,uBAAuB,GACpD,KAAK,YAAY,GAAK,EACtB,GAAM,GAAS,CACb,UAAW,EACX,aACA,IAAK,CAAE,QAAS,EAAgB,WAAY,YAAa,EAAgB,WAE3E,EAAM,KAAK,OAEX,MAAK,YAAY,GAAK,KAExB,EAAU,cACL,CAEL,GAAM,GAAW,AAAI,GAAW,AAAI,GAAY,GAAa,IACvD,EAAS,CACb,WAAY,EAAW,WACvB,IAAK,CAAE,QAAS,EAAS,WAAY,YAAa,EAAS,WAE7D,EAAM,KAAK,IAGf,YAAK,YAAc,KAAK,YAAY,OAAO,AAAC,GAAM,IAAM,MACxD,KAAK,cAAgB,EAAM,OACpB,EAIT,8BAA8B,EAAW,CACvC,GAAM,GAAK,EAAU,IAAI,AAAC,GAAM,EAAE,IAC5B,EAAK,EAAU,IAAI,AAAC,GAAM,EAAE,IAC5B,EAAa,CAAC,KAAK,IAAI,GAAG,GAAK,KAAK,IAAI,GAAG,IAC3C,EAAW,CAAC,KAAK,IAAI,GAAG,GAAK,KAAK,IAAI,GAAG,IAC/C,MAAO,CAAE,aAAY,cCzJlB,GAAM,IAAU,CACrB,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAA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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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", "names": [] } diff --git a/dist/human.esm-nobundle.js b/dist/human.esm-nobundle.js index 65eeccfb..2cba874b 100644 --- a/dist/human.esm-nobundle.js +++ b/dist/human.esm-nobundle.js @@ -5,14 +5,14 @@ author: ' */ -var Vt=Object.create,ze=Object.defineProperty,Lt=Object.getPrototypeOf,Ht=Object.prototype.hasOwnProperty,Xt=Object.getOwnPropertyNames,Ft=Object.getOwnPropertyDescriptor;var Me=n=>ze(n,"__esModule",{value:!0});var r1=(n,e)=>()=>(e||(e={exports:{}},n(e.exports,e)),e.exports),U=(n,e)=>{for(var t in e)ze(n,t,{get:e[t],enumerable:!0})},y=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Xt(e))!Ht.call(n,A)&&A!=="default"&&ze(n,A,{get:()=>e[A],enumerable:!(t=Ft(e,A))||t.enumerable});return n},Ee=n=>y(Me(ze(n!=null?Vt(Lt(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var a0=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)},p=(n,e,t)=>(a0(n,e,"read from private field"),t?t.call(n):e.get(n)),ne=(n,e,t,A)=>(a0(n,e,"write to private field"),A?A.call(n,t):e.set(n,t),t);import{version as Yt}from"@tensorflow/tfjs/package.json";import{version as Bt}from"@tensorflow/tfjs-core/package.json";import{version as Ct}from"@tensorflow/tfjs-data/package.json";import{version as Jt}from"@tensorflow/tfjs-layers/package.json";import{version as Kt}from"@tensorflow/tfjs-converter/package.json";import{version_cpu as Ut}from"@tensorflow/tfjs-backend-cpu/dist/index.js";import{version_webgl as Dt}from"@tensorflow/tfjs-backend-webgl/dist/index.js";import{version_wasm as Gt}from"@tensorflow/tfjs-backend-wasm/dist/index.js";import*as Dn from"@tensorflow/tfjs-core/dist/index.js";import*as Gn from"@tensorflow/tfjs-layers/dist/index.js";import*as Qn from"@tensorflow/tfjs-converter/dist/index.js";import*as Qt from"@tensorflow/tfjs-data/dist/index.js";import*as $n from"@tensorflow/tfjs-backend-cpu/dist/index.js";import*as e5 from"@tensorflow/tfjs-backend-webgl/dist/index.js";import*as t5 from"@tensorflow/tfjs-backend-wasm/dist/index.js";var O=r1(qt=>{Me(qt);U(qt,{data:()=>Qt,version:()=>$t});y(qt,Dn);y(qt,Gn);y(qt,Qn);y(qt,$n);y(qt,e5);y(qt,t5);var $t={tfjs:Yt,"tfjs-core":Bt,"tfjs-data":Ct,"tfjs-layers":Jt,"tfjs-converter":Kt,"tfjs-backend-cpu":Ut,"tfjs-backend-webgl":Dt,"tfjs-backend-wasm":Gt}});var M0=r1(z0=>{Me(z0);U(z0,{MediaPipeFaceMesh:()=>x1,load:()=>on});var i1=O(),x1=class{constructor(e,t,A,r){this.facePipeline=new s1(e,t,A),this.config=r}async estimateFaces(e,t){let A=await this.facePipeline.predict(e,t),r=[];for(let c of A||[]){if(c.isDisposedInternal)continue;let _=c.coords?c.coords.arraySync():[],h=_.map(s=>[s[0]/e.shape[2],s[1]/e.shape[1],s[2]/this.facePipeline.meshSize]),o={};if(_&&_.length>0)for(let s of Object.keys(Q))o[s]=Q[s].map(l=>_[l]);let i=c.box?[Math.max(0,c.box.startPoint[0]),Math.max(0,c.box.startPoint[1]),Math.min(e.shape[1],c.box.endPoint[0])-c.box.startPoint[0],Math.min(e.shape[2],c.box.endPoint[1])-c.box.startPoint[1]]:0,a=c.box?[Math.max(0,c.box.startPoint[0]/e.shape[2]),Math.max(0,c.box.startPoint[1]/e.shape[1]),Math.min(e.shape[1],c.box.endPoint[0]-c.box.startPoint[0])/e.shape[2],Math.min(e.shape[2],c.box.endPoint[1]-c.box.startPoint[1])/e.shape[1]]:[];r.push({confidence:c.faceConfidence||c.boxConfidence||0,boxConfidence:c.boxConfidence,faceConfidence:c.faceConfidence,box:i,mesh:_,boxRaw:a,meshRaw:h,annotations:o,image:c.image?c.image.clone():null}),c.coords&&c.coords.dispose(),c.image&&c.image.dispose()}return r}},ye=[null,null,null];async function on(n){ye=await Promise.all([!ye[0]&&n.face.enabled?m0(n):null,!ye[1]&&n.face.mesh.enabled?i1.loadGraphModel(n.face.mesh.modelPath,{fromTFHub:n.face.mesh.modelPath.includes("tfhub.dev")}):null,!ye[2]&&n.face.iris.enabled?i1.loadGraphModel(n.face.iris.modelPath,{fromTFHub:n.face.iris.modelPath.includes("tfhub.dev")}):null]);let e=new x1(ye[0],ye[1],ye[2],n);return n.face.mesh.enabled&&n.debug&&T(`load model: ${n.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),n.face.iris.enabled&&n.debug&&T(`load model: ${n.face.iris.modelPath.match(/\/(.*)\./)[1]}`),e}z0.triangulation=xe});var Le=r1(W1=>{Me(W1);U(W1,{NUM_KEYPOINTS:()=>wn,connectedPartIndices:()=>dn,partChannels:()=>mn,partIds:()=>O1,partNames:()=>an,poseChain:()=>fn});var an=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],wn=W1.partNames.length,O1=W1.partNames.reduce((n,e,t)=>(n[e]=t,n),{}),ln=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],dn=ln.map(([n,e])=>[O1[n],O1[e]]),fn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],mn=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function T(...n){let e=new Date,t=`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;n&&console.log(t,"Human:",...n)}function w0(){let n,e;if(typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);t&&t[0]&&(n=t[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),e=navigator.userAgent.replace(t[0],""),n[1]&&(e=e.replace(t[1],"")),e=e.replace(/ /g," "))}else typeof process!="undefined"&&(n=`${process.platform} ${process.arch}`,e=`NodeJS ${process.version}`);return{platform:n,agent:e}}var h0=O();var q=O(),Y={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function l0(){if(!q.findBackend(Y.name)){T("backend registration:",Y.name);try{Y.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Y.width,Y.height):document.createElement("canvas")}catch(n){T("error: cannot create canvas:",n);return}try{Y.gl=Y.canvas.getContext("webgl2",Y.webGLattr)}catch(n){T("error: cannot get WebGL2 context:",n);return}try{q.setWebGLContext(2,Y.gl)}catch(n){T("error: cannot set WebGL2 context:",n);return}try{let n=new q.GPGPUContext(Y.gl);q.registerBackend(Y.name,()=>new q.MathBackendWebGL(n),Y.priority)}catch(n){T("error: cannot register WebGL backend:",n);return}try{q.getKernelsForBackend("webgl").forEach(e=>{let t={...e,backendName:Y.name};q.registerKernel(t)})}catch(n){T("error: cannot update WebGL backend registration:",n);return}try{q.ENV.set("WEBGL_VERSION",2)}catch(n){T("error: cannot set WebGL backend flags:",n);return}T("backend registered:",Y.name)}}var v=O(),d0=6;function en(n){let e={strides:[n/16,n/8],anchors:[2,6]},t=[];for(let A=0;A({startEndTensor:n,startPoint:v.slice(n,[0,0],[-1,2]),endPoint:v.slice(n,[0,2],[-1,2])});function nn(n,e,t){let A=v.slice(n,[0,1],[-1,2]),r=v.add(A,e),c=v.slice(n,[0,3],[-1,2]),_=v.div(c,t),h=v.div(r,t),o=v.div(_,2),i=v.sub(h,o),a=v.add(h,o),s=v.mul(i,t),l=v.mul(a,t);return v.concat2d([s,l],1)}var f0=class{constructor(e,t){this.model=e,this.anchorsData=en(e.inputs[0].shape[1]),this.anchors=v.tensor2d(this.anchorsData),this.inputSize=e.inputs[0].shape[2],this.config=t}async getBoundingBoxes(e){if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return null;let[t,A,r]=v.tidy(()=>{let l=e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),m=this.model.predict(l),f;if(Array.isArray(m)){let V=m.sort((w,b)=>w.size-b.size),B=v.concat([V[0],V[2]],2),G=v.concat([V[1],V[3]],2);f=v.concat([G,B],1).squeeze(0)}else f=m.squeeze();let x=nn(f,this.anchors,[this.inputSize,this.inputSize]),g=v.slice(f,[0,0],[-1,1]),Z=v.sigmoid(g).squeeze();return[f,x,Z]}),c=await v.image.nonMaxSuppressionAsync(A,r,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),_=c.arraySync();c.dispose();let o=_.map(s=>v.slice(A,[s,0],[1,-1])).map(s=>{let l=s.arraySync();return s.dispose(),l}),i=r.dataSync(),a=[];for(let s=0;sthis.config.face.detector.minConfidence){let f=tn(o[s]),x=this.anchorsData[l],g=v.tidy(()=>v.slice(t,[l,d0-1],[1,-1]).squeeze().reshape([d0,-1]));a.push({box:f,landmarks:g,anchor:x,confidence:m})}}return t.dispose(),A.dispose(),r.dispose(),{boxes:a,scaleFactor:[e.shape[2]/this.inputSize,e.shape[1]/this.inputSize]}}};async function m0(n){let e=await v.loadGraphModel(n.face.detector.modelPath,{fromTFHub:n.face.detector.modelPath.includes("tfhub.dev")}),t=new f0(e,n);return n.debug&&T(`load model: ${n.face.detector.modelPath.match(/\/(.*)\./)[1]}`),t}var X=O();var p0=O();function u0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]];return{startPoint:t,endPoint:A}}function pe(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function we(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function le(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return p0.image.cropAndResize(e,c,[0],t)}function Re(n,e=1.5){let t=we(n),A=pe(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}function Se(n){let e=we(n),t=pe(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}var Ne=[[1,0,0],[0,1,0],[0,0,1]];function rn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function A1(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return rn(t)}function b0(n,e){return[[1,0,n],[0,1,e],[0,0,1]]}function ce(n,e){let t=0;for(let A=0;A_1[n]),x5=_n.map(n=>_1[n]),y5=hn.map(n=>_1[n]);var h1=Q.leftEyeLower0,o1=Q.rightEyeLower0,de={leftBounds:[h1[0],h1[h1.length-1]],rightBounds:[o1[0],o1[o1.length-1]]},We={count:468,mouth:13,symmetryLine:[13,Q.midwayBetweenEyes[0]]},v0={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},fe={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function Oe(n,e,t,A){for(let r=0;r[c[0]/this.meshSize*(s[0]-this.meshSize/2),c[1]/this.meshSize*(s[1]-this.meshSize/2),s[2]]),h=A!==0?je(A,[0,0]):Ne,o=A!==0?_.map(s=>[...P0(s,h),s[2]]):_,i=A!==0?T0(r):Ne,a=[...we({startPoint:t.startPoint,endPoint:t.endPoint}),1];return o.map(s=>[s[0]+ce(a,i[0]),s[1]+ce(a,i[1]),s[2]])}getLeftToRightEyeDepthDifference(e){let t=e[de.leftBounds[0]][2],A=e[de.rightBounds[0]][2];return t-A}getEyeBox(e,t,A,r,c=!1){let _=Se(Re(this.calculateLandmarksBoundingBox([e[A],e[r]]),this.irisEnlarge)),h=pe(_),o=X.image.cropAndResize(t,[[_.startPoint[1]/this.meshSize,_.startPoint[0]/this.meshSize,_.endPoint[1]/this.meshSize,_.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return c&&X.ENV.flags.IS_BROWSER&&(o=X.image.flipLeftRight(o)),{box:_,boxSize:h,crop:o}}getEyeCoords(e,t,A,r=!1){let c=[];for(let _=0;_{let i=_;return o===2?i=r:o===4&&(i=c),[h[0],h[1],i]})}async predict(e,t){let A=!1,r;if((this.skipped===0||this.skipped>t.face.detector.skipFrames||!t.face.mesh.enabled||!t.videoOptimized)&&(r=await this.boundingBoxDetector.getBoundingBoxes(e),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.boxes&&(!t.face.mesh.enabled||r.boxes.length!==this.detectedFaces&&this.detectedFaces!==t.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let _ of r.boxes)this.storedBoxes.push({startPoint:_.box.startPoint.dataSync(),endPoint:_.box.endPoint.dataSync(),landmarks:_.landmarks,confidence:_.confidence});this.storedBoxes.length>0&&(A=!0)}if(t.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),A){if(!r||!r.boxes||r.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let _=0;_{_.box.startPoint.dispose(),_.box.endPoint.dispose(),_.landmarks.dispose()});let c=X.tidy(()=>this.storedBoxes.map((_,h)=>{let o=_.confidence,i,a=0,s;if(t.face.detector.rotation&&t.face.mesh.enabled&&X.ENV.flags.IS_BROWSER){let[u,w]=_.landmarks.length>=We.count?We.symmetryLine:v0.symmetryLine;a=A1(_.landmarks[u],_.landmarks[w]);let b=we({startPoint:_.startPoint,endPoint:_.endPoint}),M=[b[0]/e.shape[2],b[1]/e.shape[1]],S=X.image.rotateWithOffset(e,a,0,M);s=je(-a,b),t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.boxSize,this.boxSize]).div(255)}else{s=Ne;let u=e.clone();t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.boxSize,this.boxSize]).div(255)}if(!t.face.mesh.enabled)return{coords:null,box:_,faceConfidence:null,boxConfidence:_.confidence,confidence:_.confidence,image:i};let[,l,m]=this.meshDetector.predict(i),f=l.dataSync()[0];if(f=We.count?We.symmetryLine:v0.symmetryLine;a=A1(_.landmarks[u],_.landmarks[w]);let b=we({startPoint:_.startPoint,endPoint:_.endPoint}),M=[b[0]/e.shape[2],b[1]/e.shape[1]],S=X.image.rotateWithOffset(e,a,0,M);s=je(-a,b),i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.meshSize,this.meshSize]).div(255)}let B={coords:V,box:_,faceConfidence:f,boxConfidence:o,image:i,rawCoords:g},G=Se(_);return this.storedBoxes[h]={...G,landmarks:Z,confidence:_.confidence,faceConfidence:f},B}));return c=c.filter(_=>_!==null),t.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(_=>_.faceConfidence>t.face.detector.minConfidence)),this.detectedFaces=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c,landmarks:e}}};var o0=Ee(M0());var a1={};U(a1,{load:()=>w1,predict:()=>l1});var ee=O();var y1={};function $(n,e){if(!e||!e.kernels)return;let t=5,A=e.kernels.filter(h=>h.kernelTimeMs>0).reduce((h,o)=>h+=o.kernelTimeMs,0),r=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.kernelTimeMs>0).sort((h,o)=>o.kernelTimeMs-h.kernelTimeMs),c=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.totalBytesSnapshot>0).sort((h,o)=>o.totalBytesSnapshot-h.totalBytesSnapshot);r.length>t&&(r.length=t),c.length>t&&(c.length=t);let _={newBytes:e.newBytes,newTensors:e.newTensors,peakBytes:e.peakBytes,numKernelOps:e.kernels.length,timeKernelOps:A,slowestKernelOps:r,largestKernelOps:c};y1[n]=_,T("Human profiler",n,_)}var _e,ke={age:0},Ie=Number.MAX_SAFE_INTEGER;async function w1(n){return _e||(_e=await ee.loadGraphModel(n.face.age.modelPath),n.debug&&T(`load model: ${n.face.age.modelPath.match(/\/(.*)\./)[1]}`)),_e}async function l1(n,e){return _e?Ie0?(Ie++,ke):(e.videoOptimized?Ie=0:Ie=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=ee.image.resizeBilinear(n,[_e.inputs[0].shape[2],_e.inputs[0].shape[1]],!1),r=ee.mul(A,[255]);ee.dispose(A);let c,_={age:0};if(!e.profile)e.face.age.enabled&&(c=await _e.predict(r));else{let h=e.face.age.enabled?await ee.profile(()=>_e.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("age",h)}if(r.dispose(),c){let h=c.dataSync();_.age=Math.trunc(10*h[0])/10}c.dispose(),ke=_,t(_)})):null}var d1={};U(d1,{load:()=>u1,predict:()=>b1});var I=O();var re,f1={gender:""},Ze=Number.MAX_SAFE_INTEGER,m1=!1,p1=[.2989,.587,.114];async function u1(n){return re||(re=await I.loadGraphModel(n.face.gender.modelPath),m1=re.inputs[0].shape[3]===1,n.debug&&T(`load model: ${n.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),re}async function b1(n,e){return re?Ze{let A=I.image.resizeBilinear(n,[re.inputs[0].shape[2],re.inputs[0].shape[1]],!1),r;m1?r=I.tidy(()=>{let[h,o,i]=I.split(A,3,3),a=I.mul(h,p1[0]),s=I.mul(o,p1[1]),l=I.mul(i,p1[2]);return I.addN([a,s,l]).sub(.5).mul(2)}):r=I.mul(A,[255]),I.dispose(A);let c,_={gender:"",confidence:0};if(!e.profile)e.face.gender.enabled&&(c=await re.predict(r));else{let h=e.face.gender.enabled?await I.profile(()=>re.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("gender",h)}if(r.dispose(),c){let h=c.dataSync();if(m1)(h[0]>e.face.gender.minConfidence||h[1]>e.face.gender.minConfidence)&&(_.gender=h[0]>h[1]?"female":"male",_.confidence=h[0]>h[1]?Math.trunc(100*h[0])/100:Math.trunc(100*h[1])/100);else{let o=Math.trunc(200*Math.abs(h[0]-.5))/100;o>e.face.gender.minConfidence&&(_.gender=h[0]<=.5?"female":"male",_.confidence=Math.min(.99,o))}}c.dispose(),f1=_,t(_)})):null}var g1={};U(g1,{load:()=>v1,predict:()=>z1});var L=O();var sn=["angry","disgust","fear","happy","sad","surprise","neutral"],he,T1=[],Ve=Number.MAX_SAFE_INTEGER,P1=[.2989,.587,.114];async function v1(n){return he||(he=await L.loadGraphModel(n.face.emotion.modelPath),n.debug&&T(`load model: ${n.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),he}async function z1(n,e){return he?Ve0?(Ve++,T1):(e.videoOptimized?Ve=0:Ve=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=L.image.resizeBilinear(n,[he.inputs[0].shape[2],he.inputs[0].shape[1]],!1),[r,c,_]=L.split(A,3,3);A.dispose();let h=L.mul(r,P1[0]),o=L.mul(c,P1[1]),i=L.mul(_,P1[2]);r.dispose(),c.dispose(),_.dispose();let a=L.addN([h,o,i]);h.dispose(),o.dispose(),i.dispose();let s=L.tidy(()=>a.sub(.5).mul(2));a.dispose();let l=[];if(e.face.emotion.enabled){let m;if(e.profile){let f=await L.profile(()=>he.predict(s));m=f.result.dataSync(),f.result.dispose(),$("emotion",f)}else{let f=await he.predict(s);m=f.dataSync(),L.dispose(f)}for(let f=0;fe.face.emotion.minConfidence&&l.push({score:Math.min(.99,Math.trunc(100*m[f])/100),emotion:sn[f]});l.sort((f,x)=>x.score-f.score)}s.dispose(),T1=l,t(l)})):null}var N=O();var te;async function M1(n){return te||(te=await N.loadGraphModel(n.face.embedding.modelPath),n.debug&&T(`load model: ${n.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),te}function E0(n,e,t=2){if(!n||!e||(n==null?void 0:n.length)===0||(e==null?void 0:e.length)===0||(n==null?void 0:n.length)!==(e==null?void 0:e.length))return 0;let A=n.map((c,_)=>Math.abs(n[_]-e[_])**t).reduce((c,_)=>c+_,0)**(1/t);return Math.max(Math.trunc(1e3*(1-A))/1e3,0)}function E1(n){return N.tidy(()=>{let t=[[.05,.15,.85,.85]],A=n.image||n.tensor;if(!(A instanceof N.Tensor))return null;let r=A.shape.length===3?N.image.cropAndResize(N.expandDims(A,0),t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]):N.image.cropAndResize(A,t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]),c=[.2989,.587,.114],[_,h,o]=N.split(r,3,3),i=N.mul(_,c[0]),a=N.mul(h,c[1]),s=N.mul(o,c[2]),l=N.addN([i,a,s]),m=N.stack([l,l,l],3).squeeze(4),f=m.sub(m.min());return f.div(f.max())})}async function R1(n,e){return te?new Promise(async t=>{let A=[];if(e.face.embedding.enabled){let r=E1(n);if(!e.profile)A=N.tidy(()=>te.predict(r).reshape([128,2]).logSumExp(1).dataSync());else{let c=await N.profile(()=>te.predict({img_inputs:r}));A=[...c.result.dataSync()],c.result.dispose(),$("emotion",c)}r.dispose()}t(A)}):null}var X1={};U(X1,{PoseNet:()=>F1,load:()=>q1});var C0=O();var R0=O();function xn(n){let[e,t,A,r]=n;return{offsets:e,heatmap:t,displacementFwd:A,displacementBwd:r}}var S1=class{constructor(e){this.model=e}predict(e){return R0.tidy(()=>{let A=e.toFloat().div(127.5).sub(1).expandDims(0),c=this.model.predict(A).map(h=>h.squeeze([0])),_=xn(c);return{heatmapScores:_.heatmap.sigmoid(),offsets:_.offsets,displacementFwd:_.displacementFwd,displacementBwd:_.displacementBwd}})}dispose(){this.model.dispose()}};function N1(n){return Math.floor(n/2)}var j1=class{constructor(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}enqueue(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)}dequeue(){let e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(e){for(;e>0&&this.less(N1(e),e);)this.exchange(e,N1(e)),e=N1(e)}sink(e){for(;2*e<=this.numberOfElements;){let t=2*e;if(te){o=!1;break}if(!o)break}return o}function S0(n,e,t){let[A,r,c]=t.shape,_=new j1(A*r*c,({score:h})=>h);for(let h=0;ht?t:n}function j0(n,e,t,A){let r=t-n,c=A-e;return r*r+c*c}function Z1(n,e){return{x:n.x+e.x,y:n.y+e.y}}var J=O(),Xe=Ee(Le());function W0(n,e){let t=e.shape[0],A=new Float32Array(t);for(let r=0;rn.toTensor().mul(J.scalar(e,"int32")).toFloat().add(un(n,t)))}function bn(n,e){return J.tidy(()=>{let t=n.div(J.scalar(e,"int32"));return n.sub(t.mul(J.scalar(e,"int32")))})}function k0(n){let[e,t,A]=n.shape;return J.tidy(()=>{let c=n.reshape([e*t,A]).argMax(0),_=c.div(J.scalar(t,"int32")).expandDims(1),h=bn(c,t).expandDims(1);return J.concat([_,h],1)})}var I0=Ae.poseChain.map(([n,e])=>[Ae.partIds[n],Ae.partIds[e]]),V1=I0.map(([,n])=>n),Z0=I0.map(([n])=>n),gn=16;function Tn(n,e,t){let A=t.shape[2]/2;return{y:t.get(e.y,e.x,n),x:t.get(e.y,e.x,A+n)}}function L1(n,e,t,A){return{y:I1(Math.round(n.y/e),0,t-1),x:I1(Math.round(n.x/e),0,A-1)}}function V0(n,e,t,A,r,c,_,h=2){let[o,i]=A.shape,a=L1(e.position,c,o,i),s=Tn(n,a,_),m=Z1(e.position,s);for(let g=0;g=0;--l){let m=V1[l],f=Z0[l];o[m]&&!o[f]&&(o[f]=V0(l,o[m],f,e,t,A,c))}for(let l=0;l(A+=f,{position:{y:a.get(x,0),x:a.get(x,1)},part:Ae.partNames[x],score:f})),m=l.filter(f=>f.score>t);return r.dispose(),i.dispose(),{keypoints:m,score:A/l.length}}var Pn=1,X0=16;function F0(n,e,{x:t,y:A},r){return n.some(({keypoints:c})=>{let _=c[r].position;return j0(A,t,_.y,_.x)<=e})}function vn(n,e,t){return t.reduce((r,{position:c,score:_},h)=>(F0(n,e,c,h)||(r+=_),r),0)/t.length}function q0(n,e,t,A,r,c,_){let h=[],o=S0(_,Pn,n),i=r^2;for(;h.length_&&h.push({keypoints:l,score:m})}return h}async function Y0(n){return Promise.all(n.map(e=>e.buffer()))}function zn(n,e,t){return{score:n.score,keypoints:n.keypoints.map(({score:A,part:r,position:c})=>({score:A,part:r,position:{x:Math.trunc(c.x*t),y:Math.trunc(c.y*e)}}))}}function B0(n,[e,t]){let A=n.squeeze(0),r=A.resizeBilinear([e,t]);return A.dispose(),r}function H1(n,[e,t],[A,r]){return n.map(_=>zn(_,e/A,t/r))}async function Mn(n,e,t,A){return new Promise(async r=>{let c=await Y0([e.heatmapScores,e.offsets,e.displacementFwd,e.displacementBwd]),_=c[0],h=c[1],o=c[2],i=c[3],a=await q0(_,h,o,i,t.body.nmsRadius,t.body.maxDetections,t.body.scoreThreshold),s=H1(a,[n.shape[1],n.shape[2]],[A,A]);r(s)})}async function En(n,e,t,A){return new Promise(async r=>{let c=await H0(e.heatmapScores,e.offsets,t.body.scoreThreshold),_=H1([c],[n.shape[1],n.shape[2]],[A,A]);r(_)})}var F1=class{constructor(e){this.baseModel=e,this.inputSize=e.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(e,t){let A=B0(e,[this.inputSize,this.inputSize]),r=this.baseModel.predict(A,t),c=t.body.maxDetections<2?await En(e,r,t,this.inputSize):await Mn(e,r,t,this.inputSize);return r.heatmapScores.dispose(),r.offsets.dispose(),r.displacementFwd.dispose(),r.displacementBwd.dispose(),A.dispose(),c}dispose(){this.baseModel.dispose()}};async function q1(n){let e=await C0.loadGraphModel(n.body.modelPath),t=new S1(e);return n.debug&&T(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`),new F1(t)}var K1={};U(K1,{HandPose:()=>G1,load:()=>Q1});var U1=O();var P=O();var J0=O();function Fe(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function ue(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function K0(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return J0.image.cropAndResize(e,c,[0],t)}function U0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]],r=n.palmLandmarks.map(c=>[c[0]*e[0],c[1]*e[1]]);return{startPoint:t,endPoint:A,palmLandmarks:r,confidence:n.confidence}}function qe(n,e=1.5){let t=ue(n),A=Fe(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}function Ye(n){let e=ue(n),t=Fe(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}var Y1=class{constructor(e,t,A){this.model=e,this.anchors=A.map(r=>[r.x_center,r.y_center]),this.anchorsTensor=P.tensor2d(this.anchors),this.inputSize=t,this.inputSizeTensor=P.tensor1d([t,t]),this.doubleInputSizeTensor=P.tensor1d([t*2,t*2])}normalizeBoxes(e){return P.tidy(()=>{let t=P.slice(e,[0,0],[-1,2]),A=P.slice(e,[0,2],[-1,2]),r=P.add(P.div(t,this.inputSizeTensor),this.anchorsTensor),c=P.div(A,this.doubleInputSizeTensor),_=P.mul(P.sub(r,c),this.inputSizeTensor),h=P.mul(P.add(r,c),this.inputSizeTensor);return P.concat2d([_,h],1)})}normalizeLandmarks(e,t){return P.tidy(()=>{let A=P.add(P.div(e.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return P.mul(A,this.inputSizeTensor)})}async getBoxes(e,t){let A=this.model.predict(e),r=A.squeeze();A.dispose();let c=P.tidy(()=>P.sigmoid(P.slice(r,[0,0],[-1,1])).squeeze()),_=c.dataSync(),h=P.slice(r,[0,1],[-1,4]),o=this.normalizeBoxes(h);h.dispose();let i=await P.image.nonMaxSuppressionAsync(o,_,t.hand.maxHands,t.hand.iouThreshold,t.hand.scoreThreshold),a=i.arraySync();c.dispose(),i.dispose();let s=[];for(let l of a)if(_[l]>=t.hand.minConfidence){let m=P.slice(o,[l,0],[1,-1]),f=P.slice(r,[l,5],[1,14]),x=P.tidy(()=>this.normalizeLandmarks(f,l).reshape([-1,2]));f.dispose(),s.push({box:m,palmLandmarks:x,confidence:_[l]})}return r.dispose(),o.dispose(),s}async estimateHandBounds(e,t){let A=e.shape[1],r=e.shape[2],c=P.tidy(()=>e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),_=await this.getBoxes(c,t);c.dispose();let h=[];if(!_||_.length===0)return h;for(let o of _){let i=o.box.dataSync(),a=i.slice(0,2),s=i.slice(2,4),l=o.palmLandmarks.arraySync();o.box.dispose(),o.palmLandmarks.dispose(),h.push(U0({startPoint:a,endPoint:s,palmLandmarks:l,confidence:o.confidence},[r/this.inputSize,A/this.inputSize]))}return h}};var Be=O();function Rn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function D0(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return Rn(t)}var G0=(n,e)=>[[1,0,n],[0,1,e],[0,0,1]];function oe(n,e){let t=0;for(let A=0;AC1([...c,1],t)),r=this.calculateLandmarksBoundingBox(A);return qe(Ye(r),Nn)}getBoxForHandLandmarks(e){let t=this.calculateLandmarksBoundingBox(e),A=qe(Ye(t),et);A.palmLandmarks=[];for(let r=0;r[_[0]*(m[0]-this.inputSize/2),_[1]*(m[1]-this.inputSize/2),_[2]*m[2]]),o=B1(A,[0,0]),i=h.map(m=>[...C1(m,o),m[2]]),a=$0(r),s=[...ue(t),1],l=[oe(s,a[0]),oe(s,a[1])];return i.map(m=>[m[0]+l[0],m[1]+l[1],m[2]])}async estimateHands(e,t){let A=!1,r;(this.skipped===0||this.skipped>t.hand.skipFrames||!t.hand.landmarks||!t.videoOptimized)&&(r=await this.handDetector.estimateHandBounds(e,t),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.length>0&&(r.length!==this.detectedHands&&this.detectedHands!==t.hand.maxHands||!t.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...r],this.storedBoxes.length>0&&(A=!0));let c=[];t.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let _=0;_=t.hand.minConfidence){let B=Be.reshape(Z,[-1,3]),G=B.arraySync();Z.dispose(),B.dispose();let u=this.transformRawCoords(G,m,o,l),w=this.getBoxForHandLandmarks(u);this.storedBoxes[_]=w;let b={landmarks:u,confidence:V,box:{topLeft:w.startPoint,bottomRight:w.endPoint}};c.push(b)}else this.storedBoxes[_]=null;Z.dispose()}else{let o=qe(Ye(h),et),i={confidence:h.confidence,box:{topLeft:o.startPoint,bottomRight:o.endPoint}};c.push(i)}}return this.storedBoxes=this.storedBoxes.filter(_=>_!==null),this.detectedHands=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c}}};var nt=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var D1={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},G1=class{constructor(e){this.handPipeline=e}static getAnnotations(){return D1}async estimateHands(e,t){let A=await this.handPipeline.estimateHands(e,t);if(!A)return[];let r=[];for(let c of A){let _={};if(c.landmarks)for(let o of Object.keys(D1))_[o]=D1[o].map(i=>c.landmarks[i]);let h=c.box?[Math.max(0,c.box.topLeft[0]),Math.max(0,c.box.topLeft[1]),Math.min(e.shape[2],c.box.bottomRight[0])-c.box.topLeft[0],Math.min(e.shape[1],c.box.bottomRight[1])-c.box.topLeft[1]]:0;r.push({confidence:c.confidence,box:h,landmarks:c.landmarks,annotations:_})}return r}};async function Q1(n){let[e,t]=await Promise.all([n.hand.enabled?U1.loadGraphModel(n.hand.detector.modelPath,{fromTFHub:n.hand.detector.modelPath.includes("tfhub.dev")}):null,n.hand.landmarks?U1.loadGraphModel(n.hand.skeleton.modelPath,{fromTFHub:n.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),A=new Y1(e,e==null?void 0:e.inputs[0].shape[2],nt),r=new J1(A,t,t==null?void 0:t.inputs[0].shape[2]),c=new G1(r);return n.hand.enabled&&n.debug&&T(`load model: ${n.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),n.hand.landmarks&&n.debug&&T(`load model: ${n.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),c}var $1={};U($1,{load:()=>e0,predict:()=>t0});var se=O();var rt=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],At=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var K;async function e0(n){return K||(K=await se.loadGraphModel(n.body.modelPath),K.width=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[2].size),K.height=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[1].size),n.debug&&T(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`)),K}async function t0(n,e){if(!K||!e.body.enabled)return null;let t={width:n.shape[2],height:n.shape[1]},A=se.image.resizeBilinear(n,[K.width,K.height],!1),r=se.div(A,[255]);A.dispose();let c;if(e.profile){let i=await se.profile(()=>K.predict(r));c=i.result.find(a=>a.size===195||a.size===155).dataSync(),i.result.forEach(a=>a.dispose()),$("blazepose",i)}else{let i=await K.predict(r);c=i.find(a=>a.size===195||a.size===155).dataSync(),i.forEach(a=>a.dispose())}r.dispose();let _=[],h=c.length===195?rt:At,o=5;for(let i=0;i{if(!n)return[];let e=[];for(let t=0;to.part==="leftWrist"),r=n[t].keypoints.find(o=>o.part==="rightWrist"),c=n[t].keypoints.find(o=>o.part==="nose");c&&A&&r&&A.position.yo.part==="leftShoulder"),h=n[t].keypoints.find(o=>o.part==="rightShoulder");_&&h&&e.push({body:t,gesture:`leaning ${_.position.y>h.position.y?"left":"right"}`})}return e},_t=n=>{if(!n)return[];let e=[];for(let t=0;t0){let A=n[t].mesh[33][2]-n[t].mesh[263][2];Math.abs(A)<10?e.push({face:t,gesture:"facing camera"}):e.push({face:t,gesture:`facing ${A<0?"right":"left"}`}),Math.abs(n[t].mesh[374][1]-n[t].mesh[386][1])/Math.abs(n[t].mesh[443][1]-n[t].mesh[450][1])<.2&&e.push({face:t,gesture:"blink left eye"}),Math.abs(n[t].mesh[145][1]-n[t].mesh[159][1])/Math.abs(n[t].mesh[223][1]-n[t].mesh[230][1])<.2&&e.push({face:t,gesture:"blink right eye"});let _=Math.min(100,500*Math.abs(n[t].mesh[13][1]-n[t].mesh[14][1])/Math.abs(n[t].mesh[10][1]-n[t].mesh[152][1]));_>10&&e.push({face:t,gesture:`mouth ${Math.trunc(_)}% open`});let h=n[t].mesh[152][2];Math.abs(h)>10&&e.push({face:t,gesture:`head ${h<0?"up":"down"}`})}return e},ht=n=>{if(!n)return[];let e=[];for(let t=0;t{if(!n)return[];let e=[];for(let t=0;t0){let r=A.reduce((_,h)=>_.position[2]_.position[1](i[l]=0,s))},r=function(h,o){let i=n.createShader(o);if(n.shaderSource(i,h),n.compileShader(i),!n.getShaderParameter(i,n.COMPILE_STATUS))throw new Error("Filter: GL compile failed",n.getShaderInfoLog(i));return i};this.uniform={},this.attribute={};let c=r(e,n.VERTEX_SHADER),_=r(t,n.FRAGMENT_SHADER);if(this.id=n.createProgram(),n.attachShader(this.id,c),n.attachShader(this.id,_),n.linkProgram(this.id),!n.getProgramParameter(this.id,n.LINK_STATUS))throw new Error("Filter: GL link failed",n.getProgramInfoLog(this.id));n.useProgram(this.id),A(e,"attribute",this.attribute);for(let h in this.attribute)this.attribute[h]=n.getAttribLocation(this.id,h);A(e,"uniform",this.uniform),A(t,"uniform",this.uniform);for(let h in this.uniform)this.uniform[h]=n.getUniformLocation(this.id,h)}function st(n){n||(n={});let e=0,t=null,A=!1,r=-1,c=[null,null],_=[],h=-1,o=-1,i=null,a=null,s={},l=n.canvas||document.createElement("canvas"),m={},f={INTERMEDIATE:1},x=l.getContext("webgl");if(!x)throw new Error("Filter: getContext() failed");this.addFilter=function(u){let w=Array.prototype.slice.call(arguments,1),b=s[u];_.push({func:b,args:w})},this.reset=function(){_=[]};let g=function(u,w){if(!(u===h&&w===o)){if(l.width=u,h=u,l.height=w,o=w,!i){let b=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=x.createBuffer(),x.bindBuffer(x.ARRAY_BUFFER,i),x.bufferData(x.ARRAY_BUFFER,b,x.STATIC_DRAW),x.pixelStorei(x.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}x.viewport(0,0,h,o),c=[null,null]}},Z=function(u,w){let b=x.createFramebuffer();x.bindFramebuffer(x.FRAMEBUFFER,b);let M=x.createRenderbuffer();x.bindRenderbuffer(x.RENDERBUFFER,M);let S=x.createTexture();return x.bindTexture(x.TEXTURE_2D,S),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,u,w,0,x.RGBA,x.UNSIGNED_BYTE,null),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_2D,S,0),x.bindTexture(x.TEXTURE_2D,null),x.bindFramebuffer(x.FRAMEBUFFER,null),{fbo:b,texture:S}},V=function(u){return c[u]=c[u]||Z(h,o),c[u]},B=function(u=null){var S,C;let w=null,b=null,M=!1;e===0?w=t:w=(S=V(r))==null?void 0:S.texture,e++,A&&!(u&f.INTERMEDIATE)?(b=null,M=e%2==0):(r=(r+1)%2,b=(C=V(r))==null?void 0:C.fbo),x.bindTexture(x.TEXTURE_2D,w),x.bindFramebuffer(x.FRAMEBUFFER,b),x.uniform1f(a.uniform.flipY,M?-1:1),x.drawArrays(x.TRIANGLES,0,6)};this.apply=function(u){if(g(u.width,u.height),e=0,t||(t=x.createTexture()),x.bindTexture(x.TEXTURE_2D,t),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.NEAREST),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.NEAREST),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,x.RGBA,x.UNSIGNED_BYTE,u),_.length===0)return B(),l;for(let w=0;w<_.length;w++){A=w===_.length-1;let b=_[w];b.func.apply(this,b.args||[])}return l};let G=function(u){if(m[u])return a=m[u],x.useProgram(a.id),a;let w={};w.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var Lt=Object.create,ze=Object.defineProperty,Ht=Object.getPrototypeOf,Xt=Object.prototype.hasOwnProperty,Ft=Object.getOwnPropertyNames,qt=Object.getOwnPropertyDescriptor;var Me=n=>ze(n,"__esModule",{value:!0});var r1=(n,e)=>()=>(e||(e={exports:{}},n(e.exports,e)),e.exports),U=(n,e)=>{for(var t in e)ze(n,t,{get:e[t],enumerable:!0})},y=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Ft(e))!Xt.call(n,A)&&A!=="default"&&ze(n,A,{get:()=>e[A],enumerable:!(t=qt(e,A))||t.enumerable});return n},Ee=n=>y(Me(ze(n!=null?Lt(Ht(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var w0=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)},u=(n,e,t)=>(w0(n,e,"read from private field"),t?t.call(n):e.get(n)),ne=(n,e,t,A)=>(w0(n,e,"write to private field"),A?A.call(n,t):e.set(n,t),t);import{version as Bt}from"@tensorflow/tfjs/package.json";import{version as Ct}from"@tensorflow/tfjs-core/package.json";import{version as Jt}from"@tensorflow/tfjs-data/package.json";import{version as Kt}from"@tensorflow/tfjs-layers/package.json";import{version as Ut}from"@tensorflow/tfjs-converter/package.json";import{version_cpu as Dt}from"@tensorflow/tfjs-backend-cpu/dist/index.js";import{version_webgl as Gt}from"@tensorflow/tfjs-backend-webgl/dist/index.js";import{version_wasm as Qt}from"@tensorflow/tfjs-backend-wasm/dist/index.js";import*as Gn from"@tensorflow/tfjs-core/dist/index.js";import*as Qn from"@tensorflow/tfjs-layers/dist/index.js";import*as $n from"@tensorflow/tfjs-converter/dist/index.js";import*as $t from"@tensorflow/tfjs-data/dist/index.js";import*as e5 from"@tensorflow/tfjs-backend-cpu/dist/index.js";import*as t5 from"@tensorflow/tfjs-backend-webgl/dist/index.js";import*as n5 from"@tensorflow/tfjs-backend-wasm/dist/index.js";var O=r1(Yt=>{Me(Yt);U(Yt,{data:()=>$t,version:()=>en});y(Yt,Gn);y(Yt,Qn);y(Yt,$n);y(Yt,e5);y(Yt,t5);y(Yt,n5);var en={tfjs:Bt,"tfjs-core":Ct,"tfjs-data":Jt,"tfjs-layers":Kt,"tfjs-converter":Ut,"tfjs-backend-cpu":Dt,"tfjs-backend-webgl":Gt,"tfjs-backend-wasm":Qt}});var E0=r1(M0=>{Me(M0);U(M0,{MediaPipeFaceMesh:()=>x1,load:()=>sn});var i1=O(),x1=class{constructor(e,t,A,r){this.facePipeline=new s1(e,t,A),this.config=r}async estimateFaces(e,t){let A=await this.facePipeline.predict(e,t),r=[];for(let c of A||[]){if(c.isDisposedInternal)continue;let _=c.coords?c.coords.arraySync():[],h=_.map(s=>[s[0]/e.shape[2],s[1]/e.shape[1],s[2]/this.facePipeline.meshSize]),o={};if(_&&_.length>0)for(let s of Object.keys(Q))o[s]=Q[s].map(l=>_[l]);let i=c.box?[Math.max(0,c.box.startPoint[0]),Math.max(0,c.box.startPoint[1]),Math.min(e.shape[1],c.box.endPoint[0])-c.box.startPoint[0],Math.min(e.shape[2],c.box.endPoint[1])-c.box.startPoint[1]]:0,a=c.box?[Math.max(0,c.box.startPoint[0]/e.shape[2]),Math.max(0,c.box.startPoint[1]/e.shape[1]),Math.min(e.shape[1],c.box.endPoint[0]-c.box.startPoint[0])/e.shape[2],Math.min(e.shape[2],c.box.endPoint[1]-c.box.startPoint[1])/e.shape[1]]:[];r.push({confidence:c.faceConfidence||c.boxConfidence||0,boxConfidence:c.boxConfidence,faceConfidence:c.faceConfidence,box:i,mesh:_,boxRaw:a,meshRaw:h,annotations:o,image:c.image?c.image.clone():null}),c.coords&&c.coords.dispose(),c.image&&c.image.dispose()}return r}},ye=[null,null,null];async function sn(n){ye=await Promise.all([!ye[0]&&n.face.enabled?u0(n):null,!ye[1]&&n.face.mesh.enabled?i1.loadGraphModel(n.face.mesh.modelPath,{fromTFHub:n.face.mesh.modelPath.includes("tfhub.dev")}):null,!ye[2]&&n.face.iris.enabled?i1.loadGraphModel(n.face.iris.modelPath,{fromTFHub:n.face.iris.modelPath.includes("tfhub.dev")}):null]);let e=new x1(ye[0],ye[1],ye[2],n);return n.face.mesh.enabled&&n.debug&&T(`load model: ${n.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),n.face.iris.enabled&&n.debug&&T(`load model: ${n.face.iris.modelPath.match(/\/(.*)\./)[1]}`),e}M0.triangulation=xe});var Le=r1(O1=>{Me(O1);U(O1,{NUM_KEYPOINTS:()=>ln,connectedPartIndices:()=>fn,partChannels:()=>un,partIds:()=>k1,partNames:()=>wn,poseChain:()=>mn});var wn=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],ln=O1.partNames.length,k1=O1.partNames.reduce((n,e,t)=>(n[e]=t,n),{}),dn=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],fn=dn.map(([n,e])=>[k1[n],k1[e]]),mn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],un=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function T(...n){let e=new Date,t=`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;n&&console.log(t,"Human:",...n)}function l0(){let n,e;if(typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);t&&t[0]&&(n=t[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),e=navigator.userAgent.replace(t[0],""),n[1]&&(e=e.replace(t[1],"")),e=e.replace(/ /g," "))}else typeof process!="undefined"&&(n=`${process.platform} ${process.arch}`,e=`NodeJS ${process.version}`);return{platform:n,agent:e}}var o0=O();var q=O(),Y={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function d0(){if(!q.findBackend(Y.name)){T("backend registration:",Y.name);try{Y.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Y.width,Y.height):document.createElement("canvas")}catch(n){T("error: cannot create canvas:",n);return}try{Y.gl=Y.canvas.getContext("webgl2",Y.webGLattr)}catch(n){T("error: cannot get WebGL2 context:",n);return}try{q.setWebGLContext(2,Y.gl)}catch(n){T("error: cannot set WebGL2 context:",n);return}try{let n=new q.GPGPUContext(Y.gl);q.registerBackend(Y.name,()=>new q.MathBackendWebGL(n),Y.priority)}catch(n){T("error: cannot register WebGL backend:",n);return}try{q.getKernelsForBackend("webgl").forEach(e=>{let t={...e,backendName:Y.name};q.registerKernel(t)})}catch(n){T("error: cannot update WebGL backend registration:",n);return}try{q.ENV.set("WEBGL_VERSION",2)}catch(n){T("error: cannot set WebGL backend flags:",n);return}T("backend registered:",Y.name)}}var v=O(),f0=6;function tn(n){let e={strides:[n/16,n/8],anchors:[2,6]},t=[];for(let A=0;A({startEndTensor:n,startPoint:v.slice(n,[0,0],[-1,2]),endPoint:v.slice(n,[0,2],[-1,2])});function rn(n,e,t){let A=v.slice(n,[0,1],[-1,2]),r=v.add(A,e),c=v.slice(n,[0,3],[-1,2]),_=v.div(c,t),h=v.div(r,t),o=v.div(_,2),i=v.sub(h,o),a=v.add(h,o),s=v.mul(i,t),l=v.mul(a,t);return v.concat2d([s,l],1)}var m0=class{constructor(e,t){this.model=e,this.anchorsData=tn(e.inputs[0].shape[1]),this.anchors=v.tensor2d(this.anchorsData),this.inputSize=e.inputs[0].shape[2],this.config=t}async getBoundingBoxes(e){if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return null;let[t,A,r]=v.tidy(()=>{let l=e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),m=this.model.predict(l),f;if(Array.isArray(m)){let V=m.sort((w,b)=>w.size-b.size),B=v.concat([V[0],V[2]],2),G=v.concat([V[1],V[3]],2);f=v.concat([G,B],1).squeeze(0)}else f=m.squeeze();let x=rn(f,this.anchors,[this.inputSize,this.inputSize]),g=v.slice(f,[0,0],[-1,1]),Z=v.sigmoid(g).squeeze();return[f,x,Z]}),c=await v.image.nonMaxSuppressionAsync(A,r,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),_=c.arraySync();c.dispose();let o=_.map(s=>v.slice(A,[s,0],[1,-1])).map(s=>{let l=s.arraySync();return s.dispose(),l}),i=r.dataSync(),a=[];for(let s=0;sthis.config.face.detector.minConfidence){let f=nn(o[s]),x=this.anchorsData[l],g=v.tidy(()=>v.slice(t,[l,f0-1],[1,-1]).squeeze().reshape([f0,-1]));a.push({box:f,landmarks:g,anchor:x,confidence:m})}}return t.dispose(),A.dispose(),r.dispose(),{boxes:a,scaleFactor:[e.shape[2]/this.inputSize,e.shape[1]/this.inputSize]}}};async function u0(n){let e=await v.loadGraphModel(n.face.detector.modelPath,{fromTFHub:n.face.detector.modelPath.includes("tfhub.dev")}),t=new m0(e,n);return n.debug&&T(`load model: ${n.face.detector.modelPath.match(/\/(.*)\./)[1]}`),t}var X=O();var p0=O();function b0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]];return{startPoint:t,endPoint:A}}function ue(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function we(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function le(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return p0.image.cropAndResize(e,c,[0],t)}function Re(n,e=1.5){let t=we(n),A=ue(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}function Se(n){let e=we(n),t=ue(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}var Ne=[[1,0,0],[0,1,0],[0,0,1]];function An(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function A1(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return An(t)}function g0(n,e){return[[1,0,n],[0,1,e],[0,0,1]]}function ce(n,e){let t=0;for(let A=0;A_1[n]),y5=hn.map(n=>_1[n]),a5=on.map(n=>_1[n]);var h1=Q.leftEyeLower0,o1=Q.rightEyeLower0,de={leftBounds:[h1[0],h1[h1.length-1]],rightBounds:[o1[0],o1[o1.length-1]]},We={count:468,mouth:13,symmetryLine:[13,Q.midwayBetweenEyes[0]]},z0={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},fe={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function Oe(n,e,t,A){for(let r=0;r[c[0]/this.meshSize*(s[0]-this.meshSize/2),c[1]/this.meshSize*(s[1]-this.meshSize/2),s[2]]),h=A!==0?je(A,[0,0]):Ne,o=A!==0?_.map(s=>[...v0(s,h),s[2]]):_,i=A!==0?P0(r):Ne,a=[...we({startPoint:t.startPoint,endPoint:t.endPoint}),1];return o.map(s=>[s[0]+ce(a,i[0]),s[1]+ce(a,i[1]),s[2]])}getLeftToRightEyeDepthDifference(e){let t=e[de.leftBounds[0]][2],A=e[de.rightBounds[0]][2];return t-A}getEyeBox(e,t,A,r,c=!1){let _=Se(Re(this.calculateLandmarksBoundingBox([e[A],e[r]]),this.irisEnlarge)),h=ue(_),o=X.image.cropAndResize(t,[[_.startPoint[1]/this.meshSize,_.startPoint[0]/this.meshSize,_.endPoint[1]/this.meshSize,_.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return c&&X.ENV.flags.IS_BROWSER&&(o=X.image.flipLeftRight(o)),{box:_,boxSize:h,crop:o}}getEyeCoords(e,t,A,r=!1){let c=[];for(let _=0;_{let i=_;return o===2?i=r:o===4&&(i=c),[h[0],h[1],i]})}async predict(e,t){let A=!1,r;if((this.skipped===0||this.skipped>t.face.detector.skipFrames||!t.face.mesh.enabled||!t.videoOptimized)&&(r=await this.boundingBoxDetector.getBoundingBoxes(e),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.boxes&&(!t.face.mesh.enabled||r.boxes.length!==this.detectedFaces&&this.detectedFaces!==t.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let _ of r.boxes)this.storedBoxes.push({startPoint:_.box.startPoint.dataSync(),endPoint:_.box.endPoint.dataSync(),landmarks:_.landmarks,confidence:_.confidence});this.storedBoxes.length>0&&(A=!0)}if(t.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),A){if(!r||!r.boxes||r.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let _=0;_{_.box.startPoint.dispose(),_.box.endPoint.dispose(),_.landmarks.dispose()});let c=X.tidy(()=>this.storedBoxes.map((_,h)=>{let o=_.confidence,i,a=0,s;if(t.face.detector.rotation&&t.face.mesh.enabled&&X.ENV.flags.IS_BROWSER){let[p,w]=_.landmarks.length>=We.count?We.symmetryLine:z0.symmetryLine;a=A1(_.landmarks[p],_.landmarks[w]);let b=we({startPoint:_.startPoint,endPoint:_.endPoint}),M=[b[0]/e.shape[2],b[1]/e.shape[1]],N=X.image.rotateWithOffset(e,a,0,M);s=je(-a,b),t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},N,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},N,[this.boxSize,this.boxSize]).div(255)}else{s=Ne;let p=e.clone();t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},p,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},p,[this.boxSize,this.boxSize]).div(255)}if(!t.face.mesh.enabled)return{coords:null,box:_,faceConfidence:null,boxConfidence:_.confidence,confidence:_.confidence,image:i};let[,l,m]=this.meshDetector.predict(i),f=l.dataSync()[0];if(f=We.count?We.symmetryLine:z0.symmetryLine;a=A1(_.landmarks[p],_.landmarks[w]);let b=we({startPoint:_.startPoint,endPoint:_.endPoint}),M=[b[0]/e.shape[2],b[1]/e.shape[1]],N=X.image.rotateWithOffset(e,a,0,M);s=je(-a,b),i=le({startPoint:_.startPoint,endPoint:_.endPoint},N,[this.meshSize,this.meshSize]).div(255)}let B={coords:V,box:_,faceConfidence:f,boxConfidence:o,image:i,rawCoords:g},G=Se(_);return this.storedBoxes[h]={...G,landmarks:Z,confidence:_.confidence,faceConfidence:f},B}));return c=c.filter(_=>_!==null),t.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(_=>_.faceConfidence>t.face.detector.minConfidence)),this.detectedFaces=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c,landmarks:e}}};var s0=Ee(E0());var a1={};U(a1,{load:()=>w1,predict:()=>l1});var ee=O();var y1={};function $(n,e){if(!e||!e.kernels)return;let t=5,A=e.kernels.filter(h=>h.kernelTimeMs>0).reduce((h,o)=>h+=o.kernelTimeMs,0),r=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.kernelTimeMs>0).sort((h,o)=>o.kernelTimeMs-h.kernelTimeMs),c=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.totalBytesSnapshot>0).sort((h,o)=>o.totalBytesSnapshot-h.totalBytesSnapshot);r.length>t&&(r.length=t),c.length>t&&(c.length=t);let _={newBytes:e.newBytes,newTensors:e.newTensors,peakBytes:e.peakBytes,numKernelOps:e.kernels.length,timeKernelOps:A,slowestKernelOps:r,largestKernelOps:c};y1[n]=_,T("Human profiler",n,_)}var _e,ke={age:0},Ie=Number.MAX_SAFE_INTEGER;async function w1(n){return _e||(_e=await ee.loadGraphModel(n.face.age.modelPath),n.debug&&T(`load model: ${n.face.age.modelPath.match(/\/(.*)\./)[1]}`)),_e}async function l1(n,e){return _e?Ie0?(Ie++,ke):(e.videoOptimized?Ie=0:Ie=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=ee.image.resizeBilinear(n,[_e.inputs[0].shape[2],_e.inputs[0].shape[1]],!1),r=ee.mul(A,[255]);ee.dispose(A);let c,_={age:0};if(!e.profile)e.face.age.enabled&&(c=await _e.predict(r));else{let h=e.face.age.enabled?await ee.profile(()=>_e.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("age",h)}if(r.dispose(),c){let h=c.dataSync();_.age=Math.trunc(10*h[0])/10}c.dispose(),ke=_,t(_)})):null}var d1={};U(d1,{load:()=>p1,predict:()=>b1});var I=O();var re,f1={gender:""},Ze=Number.MAX_SAFE_INTEGER,m1=!1,u1=[.2989,.587,.114];async function p1(n){return re||(re=await I.loadGraphModel(n.face.gender.modelPath),m1=re.inputs[0].shape[3]===1,n.debug&&T(`load model: ${n.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),re}async function b1(n,e){return re?Ze{let A=I.image.resizeBilinear(n,[re.inputs[0].shape[2],re.inputs[0].shape[1]],!1),r;m1?r=I.tidy(()=>{let[h,o,i]=I.split(A,3,3),a=I.mul(h,u1[0]),s=I.mul(o,u1[1]),l=I.mul(i,u1[2]);return I.addN([a,s,l]).sub(.5).mul(2)}):r=I.mul(A,[255]),I.dispose(A);let c,_={gender:"",confidence:0};if(!e.profile)e.face.gender.enabled&&(c=await re.predict(r));else{let h=e.face.gender.enabled?await I.profile(()=>re.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("gender",h)}if(r.dispose(),c){let h=c.dataSync();if(m1)(h[0]>e.face.gender.minConfidence||h[1]>e.face.gender.minConfidence)&&(_.gender=h[0]>h[1]?"female":"male",_.confidence=h[0]>h[1]?Math.trunc(100*h[0])/100:Math.trunc(100*h[1])/100);else{let o=Math.trunc(200*Math.abs(h[0]-.5))/100;o>e.face.gender.minConfidence&&(_.gender=h[0]<=.5?"female":"male",_.confidence=Math.min(.99,o))}}c.dispose(),f1=_,t(_)})):null}var g1={};U(g1,{load:()=>v1,predict:()=>z1});var L=O();var xn=["angry","disgust","fear","happy","sad","surprise","neutral"],he,T1=[],Ve=Number.MAX_SAFE_INTEGER,P1=[.2989,.587,.114];async function v1(n){return he||(he=await L.loadGraphModel(n.face.emotion.modelPath),n.debug&&T(`load model: ${n.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),he}async function z1(n,e){return he?Ve0?(Ve++,T1):(e.videoOptimized?Ve=0:Ve=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=L.image.resizeBilinear(n,[he.inputs[0].shape[2],he.inputs[0].shape[1]],!1),[r,c,_]=L.split(A,3,3);A.dispose();let h=L.mul(r,P1[0]),o=L.mul(c,P1[1]),i=L.mul(_,P1[2]);r.dispose(),c.dispose(),_.dispose();let a=L.addN([h,o,i]);h.dispose(),o.dispose(),i.dispose();let s=L.tidy(()=>a.sub(.5).mul(2));a.dispose();let l=[];if(e.face.emotion.enabled){let m;if(e.profile){let f=await L.profile(()=>he.predict(s));m=f.result.dataSync(),f.result.dispose(),$("emotion",f)}else{let f=await he.predict(s);m=f.dataSync(),L.dispose(f)}for(let f=0;fe.face.emotion.minConfidence&&l.push({score:Math.min(.99,Math.trunc(100*m[f])/100),emotion:xn[f]});l.sort((f,x)=>x.score-f.score)}s.dispose(),T1=l,t(l)})):null}var R=O();var te;async function M1(n){return te||(te=await R.loadGraphModel(n.face.embedding.modelPath),n.debug&&T(`load model: ${n.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),te}function E1(n,e,t=2){if(!n||!e||(n==null?void 0:n.length)===0||(e==null?void 0:e.length)===0||(n==null?void 0:n.length)!==(e==null?void 0:e.length))return 0;let A=n.map((c,_)=>Math.abs(n[_]-e[_])**t).reduce((c,_)=>c+_,0)**(1/t);return Math.max(Math.trunc(1e3*(1-A))/1e3,0)}function R0(n,e,t=0){let A={simmilarity:0,name:"",source:"",embedding:[]};if(!n||!e||!Array.isArray(n)||!Array.isArray(e))return A;for(let r of e)if(r.embedding&&r.name){let c=E1(n,r.embedding);c>t&&c>A.simmilarity&&(A={...r,simmilarity:c})}return A}function R1(n){return R.tidy(()=>{let t=[[.05,.15,.85,.85]],A=n.image||n.tensor;if(!(A instanceof R.Tensor))return null;let r=A.shape.length===3?R.image.cropAndResize(R.expandDims(A,0),t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]):R.image.cropAndResize(A,t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]),c=[.2989,.587,.114],[_,h,o]=R.split(r,3,3),i=R.mul(_,c[0]),a=R.mul(h,c[1]),s=R.mul(o,c[2]),l=R.addN([i,a,s]),m=R.stack([l,l,l],3).squeeze(4),f=m.sub(m.min());return f.div(f.max())})}async function S1(n,e){return te?new Promise(async t=>{let A=[];if(e.face.embedding.enabled){let r=R1(n);if(!e.profile)A=R.tidy(()=>[...te.predict(r).reshape([128,2]).logSumExp(1).dataSync()]);else{let c=await R.profile(()=>te.predict({img_inputs:r}));A=[...c.result.dataSync()],c.result.dispose(),$("emotion",c)}R.dispose(r)}t(A)}):[]}var F1={};U(F1,{PoseNet:()=>q1,load:()=>Y1});var J0=O();var S0=O();function yn(n){let[e,t,A,r]=n;return{offsets:e,heatmap:t,displacementFwd:A,displacementBwd:r}}var N1=class{constructor(e){this.model=e}predict(e){return S0.tidy(()=>{let A=e.toFloat().div(127.5).sub(1).expandDims(0),c=this.model.predict(A).map(h=>h.squeeze([0])),_=yn(c);return{heatmapScores:_.heatmap.sigmoid(),offsets:_.offsets,displacementFwd:_.displacementFwd,displacementBwd:_.displacementBwd}})}dispose(){this.model.dispose()}};function j1(n){return Math.floor(n/2)}var W1=class{constructor(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}enqueue(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)}dequeue(){let e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(e){for(;e>0&&this.less(j1(e),e);)this.exchange(e,j1(e)),e=j1(e)}sink(e){for(;2*e<=this.numberOfElements;){let t=2*e;if(te){o=!1;break}if(!o)break}return o}function N0(n,e,t){let[A,r,c]=t.shape,_=new W1(A*r*c,({score:h})=>h);for(let h=0;ht?t:n}function W0(n,e,t,A){let r=t-n,c=A-e;return r*r+c*c}function V1(n,e){return{x:n.x+e.x,y:n.y+e.y}}var J=O(),Xe=Ee(Le());function O0(n,e){let t=e.shape[0],A=new Float32Array(t);for(let r=0;rn.toTensor().mul(J.scalar(e,"int32")).toFloat().add(bn(n,t)))}function gn(n,e){return J.tidy(()=>{let t=n.div(J.scalar(e,"int32"));return n.sub(t.mul(J.scalar(e,"int32")))})}function I0(n){let[e,t,A]=n.shape;return J.tidy(()=>{let c=n.reshape([e*t,A]).argMax(0),_=c.div(J.scalar(t,"int32")).expandDims(1),h=gn(c,t).expandDims(1);return J.concat([_,h],1)})}var Z0=Ae.poseChain.map(([n,e])=>[Ae.partIds[n],Ae.partIds[e]]),L1=Z0.map(([,n])=>n),V0=Z0.map(([n])=>n),Tn=16;function Pn(n,e,t){let A=t.shape[2]/2;return{y:t.get(e.y,e.x,n),x:t.get(e.y,e.x,A+n)}}function H1(n,e,t,A){return{y:Z1(Math.round(n.y/e),0,t-1),x:Z1(Math.round(n.x/e),0,A-1)}}function L0(n,e,t,A,r,c,_,h=2){let[o,i]=A.shape,a=H1(e.position,c,o,i),s=Pn(n,a,_),m=V1(e.position,s);for(let g=0;g=0;--l){let m=L1[l],f=V0[l];o[m]&&!o[f]&&(o[f]=L0(l,o[m],f,e,t,A,c))}for(let l=0;l(A+=f,{position:{y:a.get(x,0),x:a.get(x,1)},part:Ae.partNames[x],score:f})),m=l.filter(f=>f.score>t);return r.dispose(),i.dispose(),{keypoints:m,score:A/l.length}}var vn=1,F0=16;function q0(n,e,{x:t,y:A},r){return n.some(({keypoints:c})=>{let _=c[r].position;return W0(A,t,_.y,_.x)<=e})}function zn(n,e,t){return t.reduce((r,{position:c,score:_},h)=>(q0(n,e,c,h)||(r+=_),r),0)/t.length}function Y0(n,e,t,A,r,c,_){let h=[],o=N0(_,vn,n),i=r^2;for(;h.length_&&h.push({keypoints:l,score:m})}return h}async function B0(n){return Promise.all(n.map(e=>e.buffer()))}function Mn(n,e,t){return{score:n.score,keypoints:n.keypoints.map(({score:A,part:r,position:c})=>({score:A,part:r,position:{x:Math.trunc(c.x*t),y:Math.trunc(c.y*e)}}))}}function C0(n,[e,t]){let A=n.squeeze(0),r=A.resizeBilinear([e,t]);return A.dispose(),r}function X1(n,[e,t],[A,r]){return n.map(_=>Mn(_,e/A,t/r))}async function En(n,e,t,A){return new Promise(async r=>{let c=await B0([e.heatmapScores,e.offsets,e.displacementFwd,e.displacementBwd]),_=c[0],h=c[1],o=c[2],i=c[3],a=await Y0(_,h,o,i,t.body.nmsRadius,t.body.maxDetections,t.body.scoreThreshold),s=X1(a,[n.shape[1],n.shape[2]],[A,A]);r(s)})}async function Rn(n,e,t,A){return new Promise(async r=>{let c=await X0(e.heatmapScores,e.offsets,t.body.scoreThreshold),_=X1([c],[n.shape[1],n.shape[2]],[A,A]);r(_)})}var q1=class{constructor(e){this.baseModel=e,this.inputSize=e.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(e,t){let A=C0(e,[this.inputSize,this.inputSize]),r=this.baseModel.predict(A,t),c=t.body.maxDetections<2?await Rn(e,r,t,this.inputSize):await En(e,r,t,this.inputSize);return r.heatmapScores.dispose(),r.offsets.dispose(),r.displacementFwd.dispose(),r.displacementBwd.dispose(),A.dispose(),c}dispose(){this.baseModel.dispose()}};async function Y1(n){let e=await J0.loadGraphModel(n.body.modelPath),t=new N1(e);return n.debug&&T(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`),new q1(t)}var U1={};U(U1,{HandPose:()=>Q1,load:()=>$1});var D1=O();var P=O();var K0=O();function Fe(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function pe(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function U0(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return K0.image.cropAndResize(e,c,[0],t)}function D0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]],r=n.palmLandmarks.map(c=>[c[0]*e[0],c[1]*e[1]]);return{startPoint:t,endPoint:A,palmLandmarks:r,confidence:n.confidence}}function qe(n,e=1.5){let t=pe(n),A=Fe(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}function Ye(n){let e=pe(n),t=Fe(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}var B1=class{constructor(e,t,A){this.model=e,this.anchors=A.map(r=>[r.x_center,r.y_center]),this.anchorsTensor=P.tensor2d(this.anchors),this.inputSize=t,this.inputSizeTensor=P.tensor1d([t,t]),this.doubleInputSizeTensor=P.tensor1d([t*2,t*2])}normalizeBoxes(e){return P.tidy(()=>{let t=P.slice(e,[0,0],[-1,2]),A=P.slice(e,[0,2],[-1,2]),r=P.add(P.div(t,this.inputSizeTensor),this.anchorsTensor),c=P.div(A,this.doubleInputSizeTensor),_=P.mul(P.sub(r,c),this.inputSizeTensor),h=P.mul(P.add(r,c),this.inputSizeTensor);return P.concat2d([_,h],1)})}normalizeLandmarks(e,t){return P.tidy(()=>{let A=P.add(P.div(e.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return P.mul(A,this.inputSizeTensor)})}async getBoxes(e,t){let A=this.model.predict(e),r=A.squeeze();A.dispose();let c=P.tidy(()=>P.sigmoid(P.slice(r,[0,0],[-1,1])).squeeze()),_=c.dataSync(),h=P.slice(r,[0,1],[-1,4]),o=this.normalizeBoxes(h);h.dispose();let i=await P.image.nonMaxSuppressionAsync(o,_,t.hand.maxHands,t.hand.iouThreshold,t.hand.scoreThreshold),a=i.arraySync();c.dispose(),i.dispose();let s=[];for(let l of a)if(_[l]>=t.hand.minConfidence){let m=P.slice(o,[l,0],[1,-1]),f=P.slice(r,[l,5],[1,14]),x=P.tidy(()=>this.normalizeLandmarks(f,l).reshape([-1,2]));f.dispose(),s.push({box:m,palmLandmarks:x,confidence:_[l]})}return r.dispose(),o.dispose(),s}async estimateHandBounds(e,t){let A=e.shape[1],r=e.shape[2],c=P.tidy(()=>e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),_=await this.getBoxes(c,t);c.dispose();let h=[];if(!_||_.length===0)return h;for(let o of _){let i=o.box.dataSync(),a=i.slice(0,2),s=i.slice(2,4),l=o.palmLandmarks.arraySync();o.box.dispose(),o.palmLandmarks.dispose(),h.push(D0({startPoint:a,endPoint:s,palmLandmarks:l,confidence:o.confidence},[r/this.inputSize,A/this.inputSize]))}return h}};var Be=O();function Sn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function G0(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return Sn(t)}var Q0=(n,e)=>[[1,0,n],[0,1,e],[0,0,1]];function oe(n,e){let t=0;for(let A=0;AJ1([...c,1],t)),r=this.calculateLandmarksBoundingBox(A);return qe(Ye(r),jn)}getBoxForHandLandmarks(e){let t=this.calculateLandmarksBoundingBox(e),A=qe(Ye(t),tt);A.palmLandmarks=[];for(let r=0;r[_[0]*(m[0]-this.inputSize/2),_[1]*(m[1]-this.inputSize/2),_[2]*m[2]]),o=C1(A,[0,0]),i=h.map(m=>[...J1(m,o),m[2]]),a=et(r),s=[...pe(t),1],l=[oe(s,a[0]),oe(s,a[1])];return i.map(m=>[m[0]+l[0],m[1]+l[1],m[2]])}async estimateHands(e,t){let A=!1,r;(this.skipped===0||this.skipped>t.hand.skipFrames||!t.hand.landmarks||!t.videoOptimized)&&(r=await this.handDetector.estimateHandBounds(e,t),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.length>0&&(r.length!==this.detectedHands&&this.detectedHands!==t.hand.maxHands||!t.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...r],this.storedBoxes.length>0&&(A=!0));let c=[];t.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let _=0;_=t.hand.minConfidence){let B=Be.reshape(Z,[-1,3]),G=B.arraySync();Z.dispose(),B.dispose();let p=this.transformRawCoords(G,m,o,l),w=this.getBoxForHandLandmarks(p);this.storedBoxes[_]=w;let b={landmarks:p,confidence:V,box:{topLeft:w.startPoint,bottomRight:w.endPoint}};c.push(b)}else this.storedBoxes[_]=null;Z.dispose()}else{let o=qe(Ye(h),tt),i={confidence:h.confidence,box:{topLeft:o.startPoint,bottomRight:o.endPoint}};c.push(i)}}return this.storedBoxes=this.storedBoxes.filter(_=>_!==null),this.detectedHands=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c}}};var rt=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var G1={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},Q1=class{constructor(e){this.handPipeline=e}static getAnnotations(){return G1}async estimateHands(e,t){let A=await this.handPipeline.estimateHands(e,t);if(!A)return[];let r=[];for(let c of A){let _={};if(c.landmarks)for(let o of Object.keys(G1))_[o]=G1[o].map(i=>c.landmarks[i]);let h=c.box?[Math.max(0,c.box.topLeft[0]),Math.max(0,c.box.topLeft[1]),Math.min(e.shape[2],c.box.bottomRight[0])-c.box.topLeft[0],Math.min(e.shape[1],c.box.bottomRight[1])-c.box.topLeft[1]]:0;r.push({confidence:c.confidence,box:h,landmarks:c.landmarks,annotations:_})}return r}};async function $1(n){let[e,t]=await Promise.all([n.hand.enabled?D1.loadGraphModel(n.hand.detector.modelPath,{fromTFHub:n.hand.detector.modelPath.includes("tfhub.dev")}):null,n.hand.landmarks?D1.loadGraphModel(n.hand.skeleton.modelPath,{fromTFHub:n.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),A=new B1(e,e==null?void 0:e.inputs[0].shape[2],rt),r=new K1(A,t,t==null?void 0:t.inputs[0].shape[2]),c=new Q1(r);return n.hand.enabled&&n.debug&&T(`load model: ${n.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),n.hand.landmarks&&n.debug&&T(`load model: ${n.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),c}var e0={};U(e0,{load:()=>t0,predict:()=>n0});var se=O();var At=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],ct=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var K;async function t0(n){return K||(K=await se.loadGraphModel(n.body.modelPath),K.width=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[2].size),K.height=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[1].size),n.debug&&T(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`)),K}async function n0(n,e){if(!K||!e.body.enabled)return null;let t={width:n.shape[2],height:n.shape[1]},A=se.image.resizeBilinear(n,[K.width,K.height],!1),r=se.div(A,[255]);A.dispose();let c;if(e.profile){let i=await se.profile(()=>K.predict(r));c=i.result.find(a=>a.size===195||a.size===155).dataSync(),i.result.forEach(a=>a.dispose()),$("blazepose",i)}else{let i=await K.predict(r);c=i.find(a=>a.size===195||a.size===155).dataSync(),i.forEach(a=>a.dispose())}r.dispose();let _=[],h=c.length===195?At:ct,o=5;for(let i=0;i{if(!n)return[];let e=[];for(let t=0;to.part==="leftWrist"),r=n[t].keypoints.find(o=>o.part==="rightWrist"),c=n[t].keypoints.find(o=>o.part==="nose");c&&A&&r&&A.position.yo.part==="leftShoulder"),h=n[t].keypoints.find(o=>o.part==="rightShoulder");_&&h&&e.push({body:t,gesture:`leaning ${_.position.y>h.position.y?"left":"right"}`})}return e},ht=n=>{if(!n)return[];let e=[];for(let t=0;t0){let A=n[t].mesh[33][2]-n[t].mesh[263][2];Math.abs(A)<10?e.push({face:t,gesture:"facing camera"}):e.push({face:t,gesture:`facing ${A<0?"right":"left"}`}),Math.abs(n[t].mesh[374][1]-n[t].mesh[386][1])/Math.abs(n[t].mesh[443][1]-n[t].mesh[450][1])<.2&&e.push({face:t,gesture:"blink left eye"}),Math.abs(n[t].mesh[145][1]-n[t].mesh[159][1])/Math.abs(n[t].mesh[223][1]-n[t].mesh[230][1])<.2&&e.push({face:t,gesture:"blink right eye"});let _=Math.min(100,500*Math.abs(n[t].mesh[13][1]-n[t].mesh[14][1])/Math.abs(n[t].mesh[10][1]-n[t].mesh[152][1]));_>10&&e.push({face:t,gesture:`mouth ${Math.trunc(_)}% open`});let h=n[t].mesh[152][2];Math.abs(h)>10&&e.push({face:t,gesture:`head ${h<0?"up":"down"}`})}return e},ot=n=>{if(!n)return[];let e=[];for(let t=0;t{if(!n)return[];let e=[];for(let t=0;t0){let r=A.reduce((_,h)=>_.position[2]_.position[1](i[l]=0,s))},r=function(h,o){let i=n.createShader(o);if(n.shaderSource(i,h),n.compileShader(i),!n.getShaderParameter(i,n.COMPILE_STATUS))throw new Error("Filter: GL compile failed",n.getShaderInfoLog(i));return i};this.uniform={},this.attribute={};let c=r(e,n.VERTEX_SHADER),_=r(t,n.FRAGMENT_SHADER);if(this.id=n.createProgram(),n.attachShader(this.id,c),n.attachShader(this.id,_),n.linkProgram(this.id),!n.getProgramParameter(this.id,n.LINK_STATUS))throw new Error("Filter: GL link failed",n.getProgramInfoLog(this.id));n.useProgram(this.id),A(e,"attribute",this.attribute);for(let h in this.attribute)this.attribute[h]=n.getAttribLocation(this.id,h);A(e,"uniform",this.uniform),A(t,"uniform",this.uniform);for(let h in this.uniform)this.uniform[h]=n.getUniformLocation(this.id,h)}function it(n){n||(n={});let e=0,t=null,A=!1,r=-1,c=[null,null],_=[],h=-1,o=-1,i=null,a=null,s={},l=n.canvas||document.createElement("canvas"),m={},f={INTERMEDIATE:1},x=l.getContext("webgl");if(!x)throw new Error("Filter: getContext() failed");this.addFilter=function(p){let w=Array.prototype.slice.call(arguments,1),b=s[p];_.push({func:b,args:w})},this.reset=function(){_=[]};let g=function(p,w){if(!(p===h&&w===o)){if(l.width=p,h=p,l.height=w,o=w,!i){let b=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=x.createBuffer(),x.bindBuffer(x.ARRAY_BUFFER,i),x.bufferData(x.ARRAY_BUFFER,b,x.STATIC_DRAW),x.pixelStorei(x.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}x.viewport(0,0,h,o),c=[null,null]}},Z=function(p,w){let b=x.createFramebuffer();x.bindFramebuffer(x.FRAMEBUFFER,b);let M=x.createRenderbuffer();x.bindRenderbuffer(x.RENDERBUFFER,M);let N=x.createTexture();return x.bindTexture(x.TEXTURE_2D,N),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,p,w,0,x.RGBA,x.UNSIGNED_BYTE,null),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_2D,N,0),x.bindTexture(x.TEXTURE_2D,null),x.bindFramebuffer(x.FRAMEBUFFER,null),{fbo:b,texture:N}},V=function(p){return c[p]=c[p]||Z(h,o),c[p]},B=function(p=null){var N,C;let w=null,b=null,M=!1;e===0?w=t:w=(N=V(r))==null?void 0:N.texture,e++,A&&!(p&f.INTERMEDIATE)?(b=null,M=e%2==0):(r=(r+1)%2,b=(C=V(r))==null?void 0:C.fbo),x.bindTexture(x.TEXTURE_2D,w),x.bindFramebuffer(x.FRAMEBUFFER,b),x.uniform1f(a.uniform.flipY,M?-1:1),x.drawArrays(x.TRIANGLES,0,6)};this.apply=function(p){if(g(p.width,p.height),e=0,t||(t=x.createTexture()),x.bindTexture(x.TEXTURE_2D,t),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.NEAREST),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.NEAREST),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,x.RGBA,x.UNSIGNED_BYTE,p),_.length===0)return B(),l;for(let w=0;w<_.length;w++){A=w===_.length-1;let b=_[w];b.func.apply(this,b.args||[])}return l};let G=function(p){if(m[p])return a=m[p],x.useProgram(a.id),a;let w={};w.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),w.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` -`),a=new On(x,w.VERTEX_IDENTITY,u);let b=Float32Array.BYTES_PER_ELEMENT,M=4*b;return x.enableVertexAttribArray(a.attribute.pos),x.vertexAttribPointer(a.attribute.pos,2,x.FLOAT,!1,M,0*b),x.enableVertexAttribArray(a.attribute.uv),x.vertexAttribPointer(a.attribute.uv,2,x.FLOAT,!1,M,2*b),m[u]=a,a};s.colorMatrix=function(u){let w=new Float32Array(u);w[4]/=255,w[9]/=255,w[14]/=255,w[19]/=255;let b=w[18]===1&&w[3]===0&&w[8]===0&&w[13]===0&&w[15]===0&&w[16]===0&&w[17]===0&&w[19]===0?s.colorMatrix.SHADER.WITHOUT_ALPHA:s.colorMatrix.SHADER.WITH_ALPHA,M=G(b);x.uniform1fv(M.uniform.m,w),B()},s.colorMatrix.SHADER={},s.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` +`),a=new kn(x,w.VERTEX_IDENTITY,p);let b=Float32Array.BYTES_PER_ELEMENT,M=4*b;return x.enableVertexAttribArray(a.attribute.pos),x.vertexAttribPointer(a.attribute.pos,2,x.FLOAT,!1,M,0*b),x.enableVertexAttribArray(a.attribute.uv),x.vertexAttribPointer(a.attribute.uv,2,x.FLOAT,!1,M,2*b),m[p]=a,a};s.colorMatrix=function(p){let w=new Float32Array(p);w[4]/=255,w[9]/=255,w[14]/=255,w[19]/=255;let b=w[18]===1&&w[3]===0&&w[8]===0&&w[13]===0&&w[15]===0&&w[16]===0&&w[17]===0&&w[19]===0?s.colorMatrix.SHADER.WITHOUT_ALPHA:s.colorMatrix.SHADER.WITH_ALPHA,M=G(b);x.uniform1fv(M.uniform.m,w),B()},s.colorMatrix.SHADER={},s.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),s.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` -`),s.brightness=function(u){let w=(u||0)+1;s.colorMatrix([w,0,0,0,0,0,w,0,0,0,0,0,w,0,0,0,0,0,1,0])},s.saturation=function(u){let w=(u||0)*2/3+1,b=(w-1)*-.5;s.colorMatrix([w,b,b,0,0,b,w,b,0,0,b,b,w,0,0,0,0,0,1,0])},s.desaturate=function(){s.saturation(-1)},s.contrast=function(u){let w=(u||0)+1,b=-128*(w-1);s.colorMatrix([w,0,0,0,b,0,w,0,0,b,0,0,w,0,b,0,0,0,1,0])},s.negative=function(){s.contrast(-2)},s.hue=function(u){u=(u||0)/180*Math.PI;let w=Math.cos(u),b=Math.sin(u),M=.213,S=.715,C=.072;s.colorMatrix([M+w*(1-M)+b*-M,S+w*-S+b*-S,C+w*-C+b*(1-C),0,0,M+w*-M+b*.143,S+w*(1-S)+b*.14,C+w*-C+b*-.283,0,0,M+w*-M+b*-(1-M),S+w*-S+b*S,C+w*(1-C)+b*C,0,0,0,0,0,1,0])},s.desaturateLuminance=function(){s.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},s.sepia=function(){s.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},s.brownie=function(){s.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},s.vintagePinhole=function(){s.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},s.kodachrome=function(){s.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},s.technicolor=function(){s.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},s.polaroid=function(){s.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},s.shiftToBGR=function(){s.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},s.convolution=function(u){let w=new Float32Array(u),b=1/h,M=1/o,S=G(s.convolution.SHADER);x.uniform1fv(S.uniform.m,w),x.uniform2f(S.uniform.px,b,M),B()},s.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` -`),s.detectEdges=function(){s.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},s.sobelX=function(){s.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},s.sobelY=function(){s.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},s.sharpen=function(u){let w=u||1;s.convolution.call(this,[0,-1*w,0,-1*w,1+4*w,-1*w,0,-1*w,0])},s.emboss=function(u){let w=u||1;s.convolution.call(this,[-2*w,-1*w,0,-1*w,1,1*w,0,1*w,2*w])},s.blur=function(u){let w=u/7/h,b=u/7/o,M=G(s.blur.SHADER);x.uniform2f(M.uniform.px,0,b),B(f.INTERMEDIATE),x.uniform2f(M.uniform.px,w,0),B()},s.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` -`),s.pixelate=function(u){let w=u/h,b=u/o,M=G(s.pixelate.SHADER);x.uniform2f(M.uniform.size,w,b),B()},s.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)}var Ce=2048,j=null,H=null,W=null;function n0(n,e){let t;if(n instanceof D.Tensor)t=D.clone(n);else{let r=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0,c=n.naturalHeight||n.videoHeight||n.height||n.shape&&n.shape[2]>0,_=r,h=c;if(_>Ce&&(_=Ce,h=_*c/r),h>Ce&&(h=Ce,_=h*r/c),e.filter.width>0?_=e.filter.width:e.filter.height>0&&(_=r*(e.filter.height/c)),e.filter.height>0?h=e.filter.height:e.filter.width>0&&(h=c*(e.filter.width/r)),!_||!h)return T("Human: invalid input",n),{tensor:null,canvas:null};(!j||j.width!==_||j.height!==h)&&(j=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas"),j.width!==_&&(j.width=_),j.height!==h&&(j.height=h));let o=j.getContext("2d");if(n instanceof ImageData?o.putImageData(n,0,0):o.drawImage(n,0,0,r,c,0,0,j.width,j.height),e.filter.enabled){if((!W||!H||j.width!==H.width||j.height!==H.height)&&(H=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(j.width,j.height):document.createElement("canvas"),H.width!==j.width&&(H.width=j.width),H.height!==j.height&&(H.height=j.height),W=D.ENV.flags.IS_BROWSER?new st({canvas:H}):null),!W)return{tensor:null,canvas:j};W.reset(),W.addFilter("brightness",e.filter.brightness),e.filter.contrast!==0&&W.addFilter("contrast",e.filter.contrast),e.filter.sharpness!==0&&W.addFilter("sharpen",e.filter.sharpness),e.filter.blur!==0&&W.addFilter("blur",e.filter.blur),e.filter.saturation!==0&&W.addFilter("saturation",e.filter.saturation),e.filter.hue!==0&&W.addFilter("hue",e.filter.hue),e.filter.negative&&W.addFilter("negative"),e.filter.sepia&&W.addFilter("sepia"),e.filter.vintage&&W.addFilter("brownie"),e.filter.sepia&&W.addFilter("sepia"),e.filter.kodachrome&&W.addFilter("kodachrome"),e.filter.technicolor&&W.addFilter("technicolor"),e.filter.polaroid&&W.addFilter("polaroid"),e.filter.pixelate!==0&&W.addFilter("pixelate",e.filter.pixelate),W.apply(j)}else H=j,W&&(W=null);let i;if(H.data){let s=[H.height,H.width,3];i=D.tensor3d(H.data,s,"int32")}else if(e.backend==="webgl"||H instanceof ImageData)i=D.browser.fromPixels(H);else{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas");s.width=_,s.height=h;let l=s.getContext("2d");l==null||l.drawImage(H,0,0);let m=l==null?void 0:l.getImageData(0,0,_,h);i=D.browser.fromPixels(m)}let a=i.toFloat();t=a.expandDims(0),i.dispose(),a.dispose()}let A=e.filter.return?H:null;return{tensor:t,canvas:A}}var R={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var Je=` +`),s.brightness=function(p){let w=(p||0)+1;s.colorMatrix([w,0,0,0,0,0,w,0,0,0,0,0,w,0,0,0,0,0,1,0])},s.saturation=function(p){let w=(p||0)*2/3+1,b=(w-1)*-.5;s.colorMatrix([w,b,b,0,0,b,w,b,0,0,b,b,w,0,0,0,0,0,1,0])},s.desaturate=function(){s.saturation(-1)},s.contrast=function(p){let w=(p||0)+1,b=-128*(w-1);s.colorMatrix([w,0,0,0,b,0,w,0,0,b,0,0,w,0,b,0,0,0,1,0])},s.negative=function(){s.contrast(-2)},s.hue=function(p){p=(p||0)/180*Math.PI;let w=Math.cos(p),b=Math.sin(p),M=.213,N=.715,C=.072;s.colorMatrix([M+w*(1-M)+b*-M,N+w*-N+b*-N,C+w*-C+b*(1-C),0,0,M+w*-M+b*.143,N+w*(1-N)+b*.14,C+w*-C+b*-.283,0,0,M+w*-M+b*-(1-M),N+w*-N+b*N,C+w*(1-C)+b*C,0,0,0,0,0,1,0])},s.desaturateLuminance=function(){s.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},s.sepia=function(){s.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},s.brownie=function(){s.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},s.vintagePinhole=function(){s.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},s.kodachrome=function(){s.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},s.technicolor=function(){s.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},s.polaroid=function(){s.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},s.shiftToBGR=function(){s.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},s.convolution=function(p){let w=new Float32Array(p),b=1/h,M=1/o,N=G(s.convolution.SHADER);x.uniform1fv(N.uniform.m,w),x.uniform2f(N.uniform.px,b,M),B()},s.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` +`),s.detectEdges=function(){s.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},s.sobelX=function(){s.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},s.sobelY=function(){s.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},s.sharpen=function(p){let w=p||1;s.convolution.call(this,[0,-1*w,0,-1*w,1+4*w,-1*w,0,-1*w,0])},s.emboss=function(p){let w=p||1;s.convolution.call(this,[-2*w,-1*w,0,-1*w,1,1*w,0,1*w,2*w])},s.blur=function(p){let w=p/7/h,b=p/7/o,M=G(s.blur.SHADER);x.uniform2f(M.uniform.px,0,b),B(f.INTERMEDIATE),x.uniform2f(M.uniform.px,w,0),B()},s.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` +`),s.pixelate=function(p){let w=p/h,b=p/o,M=G(s.pixelate.SHADER);x.uniform2f(M.uniform.size,w,b),B()},s.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` +`)}var Ce=2048,j=null,H=null,W=null;function r0(n,e){let t;if(n instanceof D.Tensor)t=D.clone(n);else{let r=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0,c=n.naturalHeight||n.videoHeight||n.height||n.shape&&n.shape[2]>0,_=r,h=c;if(_>Ce&&(_=Ce,h=_*c/r),h>Ce&&(h=Ce,_=h*r/c),e.filter.width>0?_=e.filter.width:e.filter.height>0&&(_=r*(e.filter.height/c)),e.filter.height>0?h=e.filter.height:e.filter.width>0&&(h=c*(e.filter.width/r)),!_||!h)return T("Human: invalid input",n),{tensor:null,canvas:null};(!j||j.width!==_||j.height!==h)&&(j=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas"),j.width!==_&&(j.width=_),j.height!==h&&(j.height=h));let o=j.getContext("2d");if(n instanceof ImageData?o.putImageData(n,0,0):o.drawImage(n,0,0,r,c,0,0,j.width,j.height),e.filter.enabled){if((!W||!H||j.width!==H.width||j.height!==H.height)&&(H=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(j.width,j.height):document.createElement("canvas"),H.width!==j.width&&(H.width=j.width),H.height!==j.height&&(H.height=j.height),W=D.ENV.flags.IS_BROWSER?new it({canvas:H}):null),!W)return{tensor:null,canvas:j};W.reset(),W.addFilter("brightness",e.filter.brightness),e.filter.contrast!==0&&W.addFilter("contrast",e.filter.contrast),e.filter.sharpness!==0&&W.addFilter("sharpen",e.filter.sharpness),e.filter.blur!==0&&W.addFilter("blur",e.filter.blur),e.filter.saturation!==0&&W.addFilter("saturation",e.filter.saturation),e.filter.hue!==0&&W.addFilter("hue",e.filter.hue),e.filter.negative&&W.addFilter("negative"),e.filter.sepia&&W.addFilter("sepia"),e.filter.vintage&&W.addFilter("brownie"),e.filter.sepia&&W.addFilter("sepia"),e.filter.kodachrome&&W.addFilter("kodachrome"),e.filter.technicolor&&W.addFilter("technicolor"),e.filter.polaroid&&W.addFilter("polaroid"),e.filter.pixelate!==0&&W.addFilter("pixelate",e.filter.pixelate),W.apply(j)}else H=j,W&&(W=null);let i;if(H.data){let s=[H.height,H.width,3];i=D.tensor3d(H.data,s,"int32")}else if(e.backend==="webgl"||H instanceof ImageData)i=D.browser.fromPixels(H);else{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas");s.width=_,s.height=h;let l=s.getContext("2d");l==null||l.drawImage(H,0,0);let m=l==null?void 0:l.getImageData(0,0,_,h);i=D.browser.fromPixels(m)}let a=i.toFloat();t=a.expandDims(0),i.dispose(),a.dispose()}let A=e.filter.return?H:null;return{tensor:t,canvas:A}}var S={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var Je=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -731,5 +731,5 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var r0={};U(r0,{author:()=>ft,browser:()=>lt,bugs:()=>mt,default:()=>kn,description:()=>xt,devDependencies:()=>vt,engines:()=>bt,homepage:()=>pt,keywords:()=>Pt,license:()=>ut,main:()=>at,module:()=>wt,name:()=>it,repository:()=>gt,scripts:()=>Tt,sideEffects:()=>yt,types:()=>dt,version:()=>A0});var it="@vladmandic/human",A0="1.1.4",xt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",yt=!1,at="dist/human.node.js",wt="dist/human.esm.js",lt="dist/human.esm.js",dt="types/src/human.d.ts",ft="Vladimir Mandic ",mt={url:"https://github.com/vladmandic/human/issues"},pt="https://vladmandic.github.io/human/demo/index.html",ut="MIT",bt={node:">=12.0.0"},gt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Tt={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Pt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],vt={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kn={name:it,version:A0,description:xt,sideEffects:yt,main:at,module:wt,browser:lt,types:dt,author:ft,bugs:mt,homepage:pt,license:ut,engines:bt,repository:gt,scripts:Tt,keywords:Pt,devDependencies:vt};var c0={};U(c0,{all:()=>Zn,body:()=>Rt,canvas:()=>In,drawOptions:()=>d,face:()=>Et,gesture:()=>Mt,hand:()=>St});var d={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ue(n,e,t,A=null){n.fillStyle=d.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:d.color,n.beginPath(),n.arc(e,t,d.pointSize,0,2*Math.PI),n.fill()}function zt(n,e,t,A,r){if(n.beginPath(),d.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=d.lineWidth,n.moveTo(e+d.roundRect,t),n.lineTo(e+A-d.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+d.roundRect),n.lineTo(e+A,t+r-d.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-d.roundRect,t+r),n.lineTo(e+d.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-d.roundRect),n.lineTo(e,t+d.roundRect),n.quadraticCurveTo(e,t,e+d.roundRect,t),n.closePath();n.stroke()}function _0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.fillStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),d.fillPolygons&&(n.closePath(),n.fill())}}function De(n,e=[]){if(!(e===void 0||e.length===0)){if(!d.useCurves||e.length<=2){_0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(o,8,2+A*d.lineHeight)),t.fillStyle=d.labelColor,t.fillText(o,6,0+A*d.lineHeight),A+=1}}}async function Et(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=d.font,t.strokeStyle=d.color,t.fillStyle=d.color,d.drawBoxes&&zt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=d.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*d.lineHeight+A.box[1];d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=d.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(d.drawPoints)for(let c of A.mesh)Ue(t,c[0],c[1],c[2]);if(d.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);_0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}}}}}var ie=[];async function Rt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&_0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c)}}}}async function St(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=d.font;for(let A of e){if(d.drawBoxes&&(t.strokeStyle=d.color,t.fillStyle=d.color,zt(t,A.box[0],A.box[1],A.box[2],A.box[3]),d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+d.lineHeight,A.box[2])),t.fillStyle=d.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+d.lineHeight,A.box[2]),t.stroke()),d.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=d.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:d.color,Ue(t,r[0],r[1]);if(d.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function In(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Zn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(Et(n,e.face),Rt(n,e.body),St(n,e.hand),Mt(n,e.gesture))}var E=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var Ge,z,me,ge,Te,ae,k,Qe,Pe,$e,ve,e1,t1,n1,Nt=class{constructor(e={}){Ge.set(this,void 0);z.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!p(this,ge))return;let t=this.tf.engine().state.numTensors,A=p(this,me);ne(this,me,t);let r=t-A;r!==0&&T(...e,r)});Qe.set(this,e=>{if(!p(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof h0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=E();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&T("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&T("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&T(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||T("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&l0();try{await this.tf.setBackend(this.config.backend)}catch(A){T("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(T("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&T(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),p(this,z).backend=Math.trunc(E()-t)}});$e.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,a,s,l,m,f,x;let t,A,r,c,_,h=[];this.state="run:face",t=E();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(p(this,z).face=Math.trunc(E()-t),!o)return[];for(let g of o){if(p(this,k).call(this,"Get Face"),!g.image||g.image.isDisposedInternal){T("Face object is disposed:",g.image);continue}let Z=p(this,$e).call(this,g.mesh);p(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?l1(g.image,this.config):{}:(this.state="run:age",t=E(),A=this.config.face.age.enabled?await l1(g.image,this.config):{},p(this,z).age=Math.trunc(E()-t)),p(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?b1(g.image,this.config):{}:(this.state="run:gender",t=E(),r=this.config.face.gender.enabled?await b1(g.image,this.config):{},p(this,z).gender=Math.trunc(E()-t)),p(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?z1(g.image,this.config):{}:(this.state="run:emotion",t=E(),c=this.config.face.emotion.enabled?await z1(g.image,this.config):{},p(this,z).emotion=Math.trunc(E()-t)),p(this,k).call(this,"End Emotion:"),p(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?R1(g,this.config):[]:(this.state="run:embedding",t=E(),_=this.config.face.embedding.enabled?await R1(g,this.config):[],p(this,z).embedding=Math.trunc(E()-t)),p(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),p(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((a=g==null?void 0:g.annotations)==null?void 0:a.leftEyeIris)&&((s=g==null?void 0:g.annotations)==null?void 0:s.rightEyeIris)&&(delete g.annotations.leftEyeIris,delete g.annotations.rightEyeIris);let V=((l=g.annotations)==null?void 0:l.leftEyeIris)&&((m=g.annotations)==null?void 0:m.rightEyeIris)?11.7*Math.max(Math.abs(g.annotations.leftEyeIris[3][0]-g.annotations.leftEyeIris[1][0]),Math.abs(g.annotations.rightEyeIris[4][1]-g.annotations.rightEyeIris[2][1])):0;h.push({...g,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(f=g.image)==null?void 0:f.squeeze():null}),(x=g.image)==null||x.dispose(),p(this,k).call(this,"End Face")}return p(this,k).call(this,"End FaceMesh:"),this.config.async&&(p(this,z).face&&delete p(this,z).face,p(this,z).age&&delete p(this,z).age,p(this,z).gender&&delete p(this,z).gender,p(this,z).emotion&&delete p(this,z).emotion),h});e1.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Je);break;case"full":t=await e(Ke);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});t1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Je;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Ke;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));n1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Je):e(Ke),A=h0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=h0,this.draw=c0,ne(this,Ge,r0),this.version=A0,this.config=be(R,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,z,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>n0(t,this.config),this.classes={facemesh:o0,age:a1,gender:d1,emotion:g1,body:this.config.body.modelPath.includes("posenet")?X1:$1,hand:K1},this.sysinfo=w0()}profileData(){return this.config.profile?y1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?E0(e,t):0}enhance(e){return this.config.face.embedding.enabled?E1(e):null}async load(e={}){this.state="load";let t=E();e&&(this.config=be(this.config,e)),p(this,ae)&&(this.config.debug&&T(`version: ${this.version}`),this.config.debug&&T(`tfjs version: ${this.tf.version_core}`),this.config.debug&&T("platform:",this.sysinfo.platform),this.config.debug&&T("agent:",this.sysinfo.agent),await p(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&T("configuration:",this.config),this.config.debug&&T("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?o0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?w1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?u1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?v1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?M1(this.config):null),this.models.handpose||(this.config.hand.enabled?Q1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?q1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?e0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await o0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await w1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await u1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await v1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await M1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await Q1(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await q1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await e0(this.config))),p(this,ae)&&(this.config.debug&&T("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(E()-t);A>(p(this,z).load||0)&&(p(this,z).load=A)}async detect(e,t={}){return new Promise(async A=>{var l,m,f,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=p(this,Qe).call(this,e);c&&(T(c,e),A({error:c}));let _=E();await p(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),p(this,k).call(this,"Start Scope:"),r=E();let h=n0(e,this.config);if(!h||!h.tensor){T("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}p(this,z).image=Math.trunc(E()-r),p(this,k).call(this,"Get Image:");let o,i,a;this.config.async?(a=this.config.face.enabled?p(this,ve).call(this,h.tensor):[],p(this,z).face&&delete p(this,z).face):(this.state="run:face",r=E(),a=this.config.face.enabled?await p(this,ve).call(this,h.tensor):[],p(this,z).face=Math.trunc(E()-r)),p(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(l=this.models.posenet)==null?void 0:l.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?t0(h.tensor,this.config):[],p(this,z).body&&delete p(this,z).body):(this.state="run:body",r=E(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((m=this.models.posenet)==null?void 0:m.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await t0(h.tensor,this.config):[],p(this,z).body=Math.trunc(E()-r)),p(this,k).call(this,"End Body:"),p(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(h.tensor,this.config):[],p(this,z).hand&&delete p(this,z).hand):(this.state="run:hand",r=E(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],p(this,z).hand=Math.trunc(E()-r)),p(this,k).call(this,"End Hand:"),this.config.async&&([a,o,i]=await Promise.all([a,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),p(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=E(),s=[..._t(a),...ct(o),...ot(i),...ht(a)],this.config.async?p(this,z).gesture&&delete p(this,z).gesture:p(this,z).gesture=Math.trunc(E()-r)),p(this,z).total=Math.trunc(E()-_),this.state="idle",A({face:a,body:o,hand:i,gesture:s,performance:p(this,z),canvas:h.canvas})})}async warmup(e={}){let t=E();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await p(this,e1).call(this):typeof Image!="undefined"?r=await p(this,t1).call(this):r=await p(this,n1).call(this),this.config.videoOptimized=A;let c=E();return this.config.debug&&T("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};Ge=new WeakMap,z=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Qe=new WeakMap,Pe=new WeakMap,$e=new WeakMap,ve=new WeakMap,e1=new WeakMap,t1=new WeakMap,n1=new WeakMap;export{Nt as Human,Nt as default}; +2Q==`;var A0={};U(A0,{author:()=>mt,browser:()=>dt,bugs:()=>ut,default:()=>In,description:()=>yt,devDependencies:()=>zt,engines:()=>gt,homepage:()=>pt,keywords:()=>vt,license:()=>bt,main:()=>wt,module:()=>lt,name:()=>xt,repository:()=>Tt,scripts:()=>Pt,sideEffects:()=>at,types:()=>ft,version:()=>c0});var xt="@vladmandic/human",c0="1.1.5",yt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",at=!1,wt="dist/human.node.js",lt="dist/human.esm.js",dt="dist/human.esm.js",ft="types/src/human.d.ts",mt="Vladimir Mandic ",ut={url:"https://github.com/vladmandic/human/issues"},pt="https://vladmandic.github.io/human/demo/index.html",bt="MIT",gt={node:">=12.0.0"},Tt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Pt={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},vt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],zt={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},In={name:xt,version:c0,description:yt,sideEffects:at,main:wt,module:lt,browser:dt,types:ft,author:mt,bugs:ut,homepage:pt,license:bt,engines:gt,repository:Tt,scripts:Pt,keywords:vt,devDependencies:zt};var _0={};U(_0,{all:()=>Vn,body:()=>St,canvas:()=>Zn,drawOptions:()=>d,face:()=>Rt,gesture:()=>Et,hand:()=>Nt});var d={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ue(n,e,t,A=null){n.fillStyle=d.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:d.color,n.beginPath(),n.arc(e,t,d.pointSize,0,2*Math.PI),n.fill()}function Mt(n,e,t,A,r){if(n.beginPath(),d.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=d.lineWidth,n.moveTo(e+d.roundRect,t),n.lineTo(e+A-d.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+d.roundRect),n.lineTo(e+A,t+r-d.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-d.roundRect,t+r),n.lineTo(e+d.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-d.roundRect),n.lineTo(e,t+d.roundRect),n.quadraticCurveTo(e,t,e+d.roundRect,t),n.closePath();n.stroke()}function h0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.fillStyle=d.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:d.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),d.fillPolygons&&(n.closePath(),n.fill())}}function De(n,e=[]){if(!(e===void 0||e.length===0)){if(!d.useCurves||e.length<=2){h0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(o,8,2+A*d.lineHeight)),t.fillStyle=d.labelColor,t.fillText(o,6,0+A*d.lineHeight),A+=1}}}async function Rt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=d.font,t.strokeStyle=d.color,t.fillStyle=d.color,d.drawBoxes&&Mt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=d.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*d.lineHeight+A.box[1];d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=d.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(d.drawPoints)for(let c of A.mesh)Ue(t,c[0],c[1],c[2]);if(d.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);h0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=d.useDepth?"rgba(255, 200, 255, 0.3)":d.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),d.fillPolygons&&(t.fillStyle=d.useDepth?"rgba(255, 255, 200, 0.3)":d.color,t.fill())}}}}}var ie=[];async function St(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&h0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>S.body.scoreThreshold&&c.push([r.position.x,r.position.y]),De(t,c)}}}}async function Nt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=d.font;for(let A of e){if(d.drawBoxes&&(t.strokeStyle=d.color,t.fillStyle=d.color,Mt(t,A.box[0],A.box[1],A.box[2],A.box[3]),d.shadowColor&&d.shadowColor!==""&&(t.fillStyle=d.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+d.lineHeight,A.box[2])),t.fillStyle=d.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+d.lineHeight,A.box[2]),t.stroke()),d.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=d.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:d.color,Ue(t,r[0],r[1]);if(d.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function Zn(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Vn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(Rt(n,e.face),St(n,e.body),Nt(n,e.hand),Et(n,e.gesture))}var E=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var Ge,z,me,ge,Te,ae,k,Qe,Pe,$e,ve,e1,t1,n1,jt=class{constructor(e={}){Ge.set(this,void 0);z.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!u(this,ge))return;let t=this.tf.engine().state.numTensors,A=u(this,me);ne(this,me,t);let r=t-A;r!==0&&T(...e,r)});Qe.set(this,e=>{if(!u(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof o0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=E();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&T("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&T("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&T(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||T("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&d0();try{await this.tf.setBackend(this.config.backend)}catch(A){T("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(T("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&T(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),u(this,z).backend=Math.trunc(E()-t)}});$e.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,a,s,l,m,f,x;let t,A,r,c,_,h=[];this.state="run:face",t=E();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(u(this,z).face=Math.trunc(E()-t),!o)return[];for(let g of o){if(u(this,k).call(this,"Get Face"),!g.image||g.image.isDisposedInternal){T("Face object is disposed:",g.image);continue}let Z=u(this,$e).call(this,g.mesh);u(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?l1(g.image,this.config):{}:(this.state="run:age",t=E(),A=this.config.face.age.enabled?await l1(g.image,this.config):{},u(this,z).age=Math.trunc(E()-t)),u(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?b1(g.image,this.config):{}:(this.state="run:gender",t=E(),r=this.config.face.gender.enabled?await b1(g.image,this.config):{},u(this,z).gender=Math.trunc(E()-t)),u(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?z1(g.image,this.config):{}:(this.state="run:emotion",t=E(),c=this.config.face.emotion.enabled?await z1(g.image,this.config):{},u(this,z).emotion=Math.trunc(E()-t)),u(this,k).call(this,"End Emotion:"),u(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?S1(g,this.config):[]:(this.state="run:embedding",t=E(),_=this.config.face.embedding.enabled?await S1(g,this.config):[],u(this,z).embedding=Math.trunc(E()-t)),u(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),u(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((a=g==null?void 0:g.annotations)==null?void 0:a.leftEyeIris)&&((s=g==null?void 0:g.annotations)==null?void 0:s.rightEyeIris)&&(delete g.annotations.leftEyeIris,delete g.annotations.rightEyeIris);let V=((l=g.annotations)==null?void 0:l.leftEyeIris)&&((m=g.annotations)==null?void 0:m.rightEyeIris)?11.7*Math.max(Math.abs(g.annotations.leftEyeIris[3][0]-g.annotations.leftEyeIris[1][0]),Math.abs(g.annotations.rightEyeIris[4][1]-g.annotations.rightEyeIris[2][1])):0;h.push({...g,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(f=g.image)==null?void 0:f.squeeze():null}),(x=g.image)==null||x.dispose(),u(this,k).call(this,"End Face")}return u(this,k).call(this,"End FaceMesh:"),this.config.async&&(u(this,z).face&&delete u(this,z).face,u(this,z).age&&delete u(this,z).age,u(this,z).gender&&delete u(this,z).gender,u(this,z).emotion&&delete u(this,z).emotion),h});e1.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Je);break;case"full":t=await e(Ke);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});t1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Je;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Ke;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));n1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Je):e(Ke),A=o0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=o0,this.draw=_0,ne(this,Ge,A0),this.version=c0,this.config=be(S,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,z,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>r0(t,this.config),this.classes={facemesh:s0,age:a1,gender:d1,emotion:g1,body:this.config.body.modelPath.includes("posenet")?F1:e0,hand:U1},this.sysinfo=l0()}profileData(){return this.config.profile?y1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?E1(e,t):0}enhance(e){return R1(e)}match(e,t,A=0){return R0(e,t,A)}async load(e={}){this.state="load";let t=E();e&&(this.config=be(this.config,e)),u(this,ae)&&(this.config.debug&&T(`version: ${this.version}`),this.config.debug&&T(`tfjs version: ${this.tf.version_core}`),this.config.debug&&T("platform:",this.sysinfo.platform),this.config.debug&&T("agent:",this.sysinfo.agent),await u(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&T("configuration:",this.config),this.config.debug&&T("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?s0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?w1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?p1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?v1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?M1(this.config):null),this.models.handpose||(this.config.hand.enabled?$1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Y1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?t0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await s0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await w1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await p1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await v1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await M1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await $1(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Y1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await t0(this.config))),u(this,ae)&&(this.config.debug&&T("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(E()-t);A>(u(this,z).load||0)&&(u(this,z).load=A)}async detect(e,t={}){return new Promise(async A=>{var l,m,f,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=u(this,Qe).call(this,e);c&&(T(c,e),A({error:c}));let _=E();await u(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),u(this,k).call(this,"Start Scope:"),r=E();let h=r0(e,this.config);if(!h||!h.tensor){T("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}u(this,z).image=Math.trunc(E()-r),u(this,k).call(this,"Get Image:");let o,i,a;this.config.async?(a=this.config.face.enabled?u(this,ve).call(this,h.tensor):[],u(this,z).face&&delete u(this,z).face):(this.state="run:face",r=E(),a=this.config.face.enabled?await u(this,ve).call(this,h.tensor):[],u(this,z).face=Math.trunc(E()-r)),u(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(l=this.models.posenet)==null?void 0:l.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?n0(h.tensor,this.config):[],u(this,z).body&&delete u(this,z).body):(this.state="run:body",r=E(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((m=this.models.posenet)==null?void 0:m.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await n0(h.tensor,this.config):[],u(this,z).body=Math.trunc(E()-r)),u(this,k).call(this,"End Body:"),u(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(h.tensor,this.config):[],u(this,z).hand&&delete u(this,z).hand):(this.state="run:hand",r=E(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],u(this,z).hand=Math.trunc(E()-r)),u(this,k).call(this,"End Hand:"),this.config.async&&([a,o,i]=await Promise.all([a,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),u(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=E(),s=[...ht(a),..._t(o),...st(i),...ot(a)],this.config.async?u(this,z).gesture&&delete u(this,z).gesture:u(this,z).gesture=Math.trunc(E()-r)),u(this,z).total=Math.trunc(E()-_),this.state="idle",A({face:a,body:o,hand:i,gesture:s,performance:u(this,z),canvas:h.canvas})})}async warmup(e={}){let t=E();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await u(this,e1).call(this):typeof Image!="undefined"?r=await u(this,t1).call(this):r=await u(this,n1).call(this),this.config.videoOptimized=A;let c=E();return this.config.debug&&T("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};Ge=new WeakMap,z=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Qe=new WeakMap,Pe=new WeakMap,$e=new WeakMap,ve=new WeakMap,e1=new WeakMap,t1=new WeakMap,n1=new WeakMap;export{jt as Human,jt as default}; //# sourceMappingURL=human.esm-nobundle.js.map diff --git a/dist/human.esm-nobundle.js.map b/dist/human.esm-nobundle.js.map index 3b99df70..27878d82 100644 --- a/dist/human.esm-nobundle.js.map +++ b/dist/human.esm-nobundle.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/tfjs/tf-browser.ts", "../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/log.ts", "../src/sysinfo.ts", "../src/human.ts", "../src/tfjs/backend.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/facepipeline.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/handdetector.ts", "../src/handpose/box.ts", "../src/handpose/handpipeline.ts", "../src/handpose/util.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/gesture/gesture.ts", "../src/image.ts", "../src/imagefx.js", "../config.ts", "../src/sample.ts", "../src/draw.ts"], - "sourcesContent": ["// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n enhance(input: Tensor): Tensor | null {\n if (this.config.face.embedding.enabled) return embedding.enhance(input);\n return null;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2) {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function enhance(input) {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config) {\n if (!model) return null;\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return output;\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n image.dispose();\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], - "mappings": "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pB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAA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,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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", + "sourcesContent": ["// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return embedding.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: String, source: String | undefined, embedding: Array }>, threshold = 0): { name: String, source: String | undefined, simmilarity: Number, embedding: Array } {\n return embedding.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = {};\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2): Number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: Array, threshold = 0) {\n let best = { simmilarity: 0, name: '', source: '', embedding: [] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = simmilarity(embedding, f.embedding);\n if (perc > threshold && perc > best.simmilarity) best = { ...f, simmilarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], + "mappings": "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pB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAA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CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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", "names": [] } diff --git a/dist/human.esm.js b/dist/human.esm.js index a3e58e7f..563141e7 100644 --- a/dist/human.esm.js +++ b/dist/human.esm.js @@ -5,31 +5,31 @@ author: ' */ -var f8=Object.create,mh=Object.defineProperty,m8=Object.getPrototypeOf,A8=Object.prototype.hasOwnProperty,y8=Object.getOwnPropertyNames,g8=Object.getOwnPropertyDescriptor;var Z1=e=>mh(e,"__esModule",{value:!0});var Cg=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),pr=(e,t)=>{for(var n in t)mh(e,n,{get:t[n],enumerable:!0})},x8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of y8(t))!A8.call(e,r)&&r!=="default"&&mh(e,r,{get:()=>t[r],enumerable:!(n=g8(t,r))||n.enumerable});return e},Ah=e=>x8(Z1(mh(e!=null?f8(m8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var Eg=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},ve=(e,t,n)=>(Eg(e,t,"read from private field"),n?n.call(e):t.get(e)),ea=(e,t,n,r)=>(Eg(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var w6=Cg(x6=>{Z1(x6);pr(x6,{MediaPipeFaceMesh:()=>_2,load:()=>Tae});var _2=class{constructor(t,n,r,a){this.facePipeline=new w2(t,n,r),this.config=a}async estimateFaces(t,n){let r=await this.facePipeline.predict(t,n),a=[];for(let s of r||[]){if(s.isDisposedInternal)continue;let i=s.coords?s.coords.arraySync():[],o=i.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),l={};if(i&&i.length>0)for(let h of Object.keys(Gr))l[h]=Gr[h].map(d=>i[d]);let u=s.box?[Math.max(0,s.box.startPoint[0]),Math.max(0,s.box.startPoint[1]),Math.min(t.shape[1],s.box.endPoint[0])-s.box.startPoint[0],Math.min(t.shape[2],s.box.endPoint[1])-s.box.startPoint[1]]:0,c=s.box?[Math.max(0,s.box.startPoint[0]/t.shape[2]),Math.max(0,s.box.startPoint[1]/t.shape[1]),Math.min(t.shape[1],s.box.endPoint[0]-s.box.startPoint[0])/t.shape[2],Math.min(t.shape[2],s.box.endPoint[1]-s.box.startPoint[1])/t.shape[1]]:[];a.push({confidence:s.faceConfidence||s.boxConfidence||0,boxConfidence:s.boxConfidence,faceConfidence:s.faceConfidence,box:u,mesh:i,boxRaw:c,meshRaw:o,annotations:l,image:s.image?s.image.clone():null}),s.coords&&s.coords.dispose(),s.image&&s.image.dispose()}return a}},Mi=[null,null,null];async function Tae(e){Mi=await Promise.all([!Mi[0]&&e.face.enabled?d6(e):null,!Mi[1]&&e.face.mesh.enabled?Ft(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!Mi[2]&&e.face.iris.enabled?Ft(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new _2(Mi[0],Mi[1],Mi[2],e);return e.face.mesh.enabled&&e.debug&&Ce(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&Ce(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}x6.triangulation=Fi});var g0=Cg(U2=>{Z1(U2);pr(U2,{NUM_KEYPOINTS:()=>Mae,connectedPartIndices:()=>Dae,partChannels:()=>zae,partIds:()=>H2,partNames:()=>Fae,poseChain:()=>Oae});var Fae=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],Mae=U2.partNames.length,H2=U2.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),$ae=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Dae=$ae.map(([e,t])=>[H2[e],H2[t]]),Oae=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],zae=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function Ce(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function Rg(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var yh={};pr(yh,{Abs:()=>Zi,Acos:()=>Yi,Acosh:()=>Ji,AdadeltaOptimizer:()=>Ud,AdagradOptimizer:()=>Hd,AdamOptimizer:()=>jd,AdamaxOptimizer:()=>Gd,Add:()=>Na,AddN:()=>os,All:()=>vh,Any:()=>kh,ArgMax:()=>ls,ArgMin:()=>lu,Asin:()=>Qi,Asinh:()=>eo,Atan:()=>to,Atan2:()=>ro,Atanh:()=>no,AvgPool:()=>us,AvgPool3D:()=>uu,AvgPool3DGrad:()=>Ih,AvgPoolGrad:()=>Nh,BackendWasm:()=>g3,BatchMatMul:()=>cs,BatchToSpaceND:()=>cu,Bincount:()=>Sh,BroadcastTo:()=>Gg,Callback:()=>uv,CallbackList:()=>o7,Cast:()=>hs,Ceil:()=>ds,ClipByValue:()=>Ia,Complex:()=>Th,ComplexAbs:()=>hu,Concat:()=>ao,Conv2D:()=>ps,Conv2DBackpropFilter:()=>Ch,Conv2DBackpropInput:()=>fs,Conv3D:()=>du,Conv3DBackpropFilterV2:()=>Eh,Conv3DBackpropInputV2:()=>Rh,Cos:()=>ms,Cosh:()=>so,CropAndResize:()=>io,Cumsum:()=>As,CustomCallback:()=>u7,DataStorage:()=>xh,DenseBincount:()=>Fh,DepthToSpace:()=>oo,DepthwiseConv2dNative:()=>ys,DepthwiseConv2dNativeBackpropFilter:()=>Mh,DepthwiseConv2dNativeBackpropInput:()=>$h,Diag:()=>Dh,Dilation2D:()=>pu,Dilation2DBackpropFilter:()=>zh,Dilation2DBackpropInput:()=>Oh,ENV:()=>fr,EarlyStopping:()=>hv,Elu:()=>lo,EluGrad:()=>Ph,Environment:()=>Hg,Equal:()=>co,Erf:()=>uo,Exp:()=>xs,ExpandDims:()=>ho,Expm1:()=>po,FFT:()=>Lh,Fill:()=>fu,FlipLeftRight:()=>fo,Floor:()=>ws,FloorDiv:()=>_s,FromPixels:()=>ed,FusedBatchNorm:()=>bs,FusedConv2D:()=>ei,FusedDepthwiseConv2D:()=>ti,GPGPUContext:()=>up,GatherNd:()=>Ao,GatherV2:()=>mo,GraphModel:()=>Bv,Greater:()=>yo,GreaterEqual:()=>vs,History:()=>l7,IFFT:()=>Wh,Identity:()=>ks,Imag:()=>Bh,InputSpec:()=>Kt,IsFinite:()=>go,IsInf:()=>xo,IsNan:()=>wo,KernelBackend:()=>su,LRN:()=>yu,LRNGrad:()=>Uh,LayerVariable:()=>n7,LayersModel:()=>ha,LeakyRelu:()=>Ns,Less:()=>_o,LessEqual:()=>bo,LinSpace:()=>Vh,Log:()=>Is,Log1p:()=>vo,LogSoftmax:()=>qg,LogicalAnd:()=>ko,LogicalNot:()=>mu,LogicalOr:()=>Au,MathBackendCPU:()=>Zd,MathBackendWebGL:()=>El,Max:()=>Ss,MaxPool:()=>Cs,MaxPool3D:()=>gu,MaxPool3DGrad:()=>jh,MaxPoolGrad:()=>Hh,MaxPoolWithArgmax:()=>Gh,Maximum:()=>Ts,Mean:()=>Es,Min:()=>Rs,Minimum:()=>Fs,MirrorPad:()=>xu,Mod:()=>No,MomentumOptimizer:()=>qd,Multinomial:()=>qh,Multiply:()=>Ms,Neg:()=>Io,NonMaxSuppressionV3:()=>To,NonMaxSuppressionV4:()=>Co,NonMaxSuppressionV5:()=>Eo,NotEqual:()=>So,OP_SCOPE_SUFFIX:()=>a5,OneHot:()=>$s,OnesLike:()=>Ro,Optimizer:()=>oa,Pack:()=>Fo,PadV2:()=>Ds,Pool:()=>Ck,Pow:()=>Os,Prelu:()=>zs,Prod:()=>Mo,RMSPropOptimizer:()=>Xd,RNN:()=>Hr,Range:()=>wu,Rank:()=>uf,Real:()=>Xh,RealDiv:()=>gs,Reciprocal:()=>$o,Reduction:()=>pn,Relu:()=>Ps,Relu6:()=>Ws,Reshape:()=>Do,ResizeBilinear:()=>Ls,ResizeBilinearGrad:()=>Zh,ResizeNearestNeighbor:()=>_u,ResizeNearestNeighborGrad:()=>Kh,Reverse:()=>Bs,RotateWithOffset:()=>Ko,Round:()=>Vs,Rsqrt:()=>Us,SGDOptimizer:()=>ec,ScatterNd:()=>Oo,Select:()=>zo,Selu:()=>Po,Sequential:()=>Wl,Sigmoid:()=>js,Sign:()=>Bo,Sin:()=>Hs,Sinh:()=>Wo,Slice:()=>Lo,Softmax:()=>Xs,Softplus:()=>Vo,SpaceToBatchND:()=>bu,SparseToDense:()=>Yh,SplitV:()=>Uo,Sqrt:()=>Gs,Square:()=>vu,SquaredDifference:()=>Ks,Step:()=>Ta,StridedSlice:()=>Ho,Sub:()=>Zs,Sum:()=>qs,SymbolicTensor:()=>kr,Tan:()=>jo,Tanh:()=>Ys,Tensor:()=>Ue,TensorBuffer:()=>Ot,Tile:()=>Sa,TopK:()=>Go,Transform:()=>Jh,Transpose:()=>Js,Unique:()=>Qh,Unpack:()=>qo,UnsortedSegmentSum:()=>ku,Variable:()=>Ru,ZerosLike:()=>Xo,_FusedMatMul:()=>Qs,abs:()=>zt,acos:()=>Df,acosh:()=>Of,add:()=>se,addN:()=>Ma,all:()=>dd,any:()=>Ou,argMax:()=>zu,argMin:()=>zf,asin:()=>Pf,asinh:()=>Lf,atan:()=>Wf,atan2:()=>Bf,atanh:()=>Vf,avgPool:()=>Lu,avgPool3d:()=>jf,backend:()=>L5,backend_util:()=>R,basicLSTMCell:()=>oI,batchNorm:()=>li,batchNorm2d:()=>U5,batchNorm3d:()=>H5,batchNorm4d:()=>j5,batchToSpaceND:()=>Wu,bincount:()=>G5,booleanMaskAsync:()=>dC,broadcastTo:()=>Bu,browser:()=>rl,buffer:()=>We,callbacks:()=>Fne,cast:()=>me,ceil:()=>Gf,clipByValue:()=>vn,clone:()=>Rr,complex:()=>Ca,concat:()=>st,concat1d:()=>q5,concat2d:()=>ll,concat3d:()=>X5,concat4d:()=>K5,constraints:()=>C3,conv1d:()=>fd,conv2d:()=>ra,conv2dTranspose:()=>md,conv3d:()=>Xf,conv3dTranspose:()=>CI,copyRegisteredKernels:()=>Fk,cos:()=>Vu,cosh:()=>Ad,cosineWindow:()=>_m,cumsum:()=>yd,customGrad:()=>$r,data:()=>Vv,denseBincount:()=>Y5,deprecationWarn:()=>Mf,depthToSpace:()=>Kf,depthwiseConv2d:()=>ul,deregisterOp:()=>$ne,device_util:()=>Mu,diag:()=>zI,dilation2d:()=>Zf,disableDeprecationWarnings:()=>_N,dispose:()=>Ee,disposeVariables:()=>bN,div:()=>ge,divNoNan:()=>Yf,dot:()=>J5,dropout:()=>xx,elu:()=>cl,enableDebugMode:()=>wN,enableProdMode:()=>xN,enclosingPowerOfTwo:()=>wx,engine:()=>Fr,env:()=>J,equal:()=>Da,erf:()=>Jf,exp:()=>qn,expandDims:()=>hn,expm1:()=>Qf,eye:()=>em,fft:()=>Ju,fill:()=>Uu,findBackend:()=>$f,findBackendFactory:()=>TN,floor:()=>hl,floorDiv:()=>hd,forceHalfFloat:()=>R_,fused:()=>La,gather:()=>ui,gatherND:()=>gx,gather_util:()=>If,getBackend:()=>IN,getGradient:()=>sf,getKernel:()=>td,getKernelsForBackend:()=>Yo,gpgpu_util:()=>t_,grad:()=>dS,grads:()=>pS,greater:()=>rr,greaterEqual:()=>za,ifft:()=>Al,imag:()=>gd,image:()=>Je,inTopKAsync:()=>vC,initializers:()=>O3,input:()=>K3,io:()=>bn,irfft:()=>$d,isFinite:()=>Q5,isInf:()=>ex,isNaN:()=>tx,keep:()=>Gt,kernel_impls:()=>Pr,layers:()=>X3,leakyRelu:()=>Hu,less:()=>xd,lessEqual:()=>ci,linalg:()=>Fx,linspace:()=>nx,loadGraphModel:()=>Ft,loadLayersModel:()=>Jte,localResponseNormalization:()=>tm,log:()=>Mn,log1p:()=>wd,logSigmoid:()=>ax,logSoftmax:()=>bd,logSumExp:()=>am,logicalAnd:()=>ar,logicalNot:()=>ju,logicalOr:()=>vd,logicalXor:()=>lx,losses:()=>WE,matMul:()=>Ge,math:()=>w5,max:()=>Xn,maxPool:()=>Gu,maxPool3d:()=>sm,maxPoolWithArgmax:()=>ux,maximum:()=>Dr,mean:()=>kt,memory:()=>cd,metrics:()=>iv,min:()=>pl,minimum:()=>fl,mirrorPad:()=>im,mod:()=>om,model:()=>Zte,models:()=>ov,moments:()=>kd,movingAverage:()=>mC,mul:()=>P,multiRNNCell:()=>VS,multinomial:()=>cx,neg:()=>vt,nextFrame:()=>Kd,norm:()=>Pd,notEqual:()=>di,oneHot:()=>nl,ones:()=>Or,onesLike:()=>$n,op:()=>O,outerProduct:()=>qS,pad:()=>aa,pad1d:()=>ZS,pad2d:()=>JS,pad3d:()=>eT,pad4d:()=>nT,pool:()=>hx,pow:()=>sa,prelu:()=>Xu,print:()=>f5,prod:()=>Nd,profile:()=>gr,rand:()=>hT,randomGamma:()=>mT,randomNormal:()=>dx,randomUniform:()=>ml,range:()=>Id,ready:()=>NN,real:()=>Ku,reciprocal:()=>cm,registerBackend:()=>sl,registerCallbackConstructor:()=>Qte,registerGradient:()=>Xg,registerKernel:()=>ni,registerOp:()=>Mne,regularizers:()=>lv,relu:()=>zr,relu6:()=>Sd,removeBackend:()=>SN,reshape:()=>G,reverse:()=>Dn,reverse1d:()=>kT,reverse2d:()=>IT,reverse3d:()=>TT,reverse4d:()=>ET,rfft:()=>Qu,round:()=>hm,rsqrt:()=>Td,scalar:()=>be,scatterND:()=>yx,scatter_util:()=>Sf,selu:()=>Cd,separableConv2d:()=>dm,sequential:()=>Yte,serialization:()=>re,setBackend:()=>kN,setPlatform:()=>CN,setWasmPath:()=>qZ,setWasmPaths:()=>XZ,setWebGLContext:()=>sp,setdiff1dAsync:()=>px,shared:()=>Nm,sigmoid:()=>Fn,sign:()=>pm,signal:()=>LE,sin:()=>Ed,sinh:()=>Rd,slice:()=>Re,slice1d:()=>Fd,slice2d:()=>fm,slice3d:()=>Md,slice4d:()=>Zu,slice_util:()=>cn,softmax:()=>Yu,softplus:()=>dl,spaceToBatchND:()=>qu,sparseToDense:()=>wm,spectral:()=>PE,split:()=>Lt,sqrt:()=>en,square:()=>lt,squaredDifference:()=>Dd,squeeze:()=>Pa,stack:()=>dn,step:()=>yl,stridedSlice:()=>mm,sub:()=>ye,sum:()=>Te,sumOutType:()=>sd,tan:()=>Am,tanh:()=>ol,tensor:()=>yr,tensor1d:()=>on,tensor2d:()=>Nn,tensor3d:()=>ld,tensor4d:()=>nC,tensor5d:()=>rC,tensor6d:()=>aC,tensor_util:()=>mr,test_util:()=>O5,tidy:()=>B,tile:()=>Oa,time:()=>vN,topk:()=>ym,train:()=>fi,transpose:()=>at,truncatedNormal:()=>Od,unique:()=>zd,unregisterGradient:()=>Rk,unregisterKernel:()=>Ek,unsortedSegmentSum:()=>gm,unstack:()=>sr,upcastType:()=>nr,util:()=>v,valueAndGrad:()=>fS,valueAndGrads:()=>mS,variable:()=>fx,variableGrads:()=>rx,version:()=>xae,version_converter:()=>Mre,version_core:()=>gN,version_cpu:()=>lw,version_layers:()=>HA,version_wasm:()=>w3,version_webgl:()=>E_,webgl:()=>hL,webgl_util:()=>Cw,where:()=>kn,whereAsync:()=>xm,zeros:()=>Et,zerosLike:()=>He});var w8=Object.create,gh=Object.defineProperty,_8=Object.getPrototypeOf,b8=Object.prototype.hasOwnProperty,v8=Object.getOwnPropertyNames,k8=Object.getOwnPropertyDescriptor,N8=e=>gh(e,"__esModule",{value:!0}),et=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ze=(e,t)=>{for(var n in t)gh(e,n,{get:t[n],enumerable:!0})},I8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of v8(t))!b8.call(e,r)&&r!=="default"&&gh(e,r,{get:()=>t[r],enumerable:!(n=k8(t,r))||n.enumerable});return e},qi=e=>I8(N8(gh(e!=null?w8(_8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),S8=et(()=>{}),T8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),C8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),E8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),R8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),F8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),M8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y1=et(()=>{}),$8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=T8(),r=C8(),a=E8(),s=R8(),i=F8(),o=M8(),l=$8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),O8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),z8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),P8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),L8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),W8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),B8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),V8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=O8(),r=z8(),a=P8(),s=L8(),i=W8(),o=B8(),l=V8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),au=et(()=>{}),H8=et(()=>{}),j8=et(()=>{}),G8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};function s(){return Q.buffer!=Be&&Jt(Q.buffer),yn}function i(){return Q.buffer!=Be&&Jt(Q.buffer),_t}function o(){return Q.buffer!=Be&&Jt(Q.buffer),gn}function l(){return Q.buffer!=Be&&Jt(Q.buffer),Hn}function u(){return Q.buffer!=Be&&Jt(Q.buffer),un}var c=typeof a!="undefined"?a:{},h,d;c.ready=new Promise(function(N,C){h=N,d=C});var p={},f;for(f in c)c.hasOwnProperty(f)&&(p[f]=c[f]);var m=[],A="./this.program",y=function(N,C){throw C},g=!1,_=!1,b=!1,w=!1;g=typeof window=="object",_=typeof importScripts=="function",b=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!g&&!b&&!_;var x=c.ENVIRONMENT_IS_PTHREAD||!1;x&&(Be=c.buffer);var I="";function S(N){return c.locateFile?c.locateFile(N,I):I+N}var T,M,D,z,W,U;if(b){_?I=au().dirname(I)+"/":I=__dirname+"/",T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C},process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(N){if(!(N instanceof ru))throw N}),process.on("unhandledRejection",Yr),y=function(N){process.exit(N)},c.inspect=function(){return"[Emscripten Module object]"};var H;try{H=H8()}catch(N){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),N}global.Worker=H.Worker}else w?(typeof read!="undefined"&&(T=function(N){return read(N)}),D=function(N){var C;return typeof readbuffer=="function"?new Uint8Array(readbuffer(N)):(C=read(N,"binary"),pe(typeof C=="object"),C)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(y=function(N){quit(N)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(g||_)&&(_?I=self.location.href:typeof document!="undefined"&&document.currentScript&&(I=document.currentScript.src),typeof r!="undefined"&&r&&(I=r),I.indexOf("blob:")!==0?I=I.substr(0,I.lastIndexOf("/")+1):I="",b?(T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C}):(T=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.send(null),C.responseText},_&&(D=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),M=function(N,C,L){var q=new XMLHttpRequest;q.open("GET",N,!0),q.responseType="arraybuffer",q.onload=function(){if(q.status==200||q.status==0&&q.response){C(q.response);return}L()},q.onerror=L,q.send(null)}),z=function(N){document.title=N});b&&typeof performance=="undefined"&&(global.performance=j8().performance);var X=c.print||console.log.bind(console),j=c.printErr||console.warn.bind(console);for(f in p)p.hasOwnProperty(f)&&(c[f]=p[f]);p=null,c.arguments&&(m=c.arguments),c.thisProgram&&(A=c.thisProgram),c.quit&&(y=c.quit);var ee=Atomics.load,Y=Atomics.store,ae=Atomics.compareExchange,te;c.wasmBinary&&(te=c.wasmBinary);var ie=c.noExitRuntime||!0;typeof WebAssembly!="object"&&Yr("no native wasm support detected");var Q,he,oe=!1,fe;function pe(N,C){N||Yr("Assertion failed: "+C)}function ke(N){var C=c["_"+N];return pe(C,"Cannot call unknown function "+N+", make sure it is exported"),C}function Ie(N,C,L,q,de){var le={string:function(_n){var Gi=0;if(_n!=null&&_n!==0){var Tg=(_n.length<<2)+1;Gi=Ui(Tg),nt(_n,Gi,Tg)}return Gi},array:function(_n){var Gi=Ui(_n.length);return Ze(_n,Gi),Gi}};function ue(_n){return C==="string"?$e(_n):C==="boolean"?Boolean(_n):_n}var we=ke(N),rt=[],Ht=0;if(q)for(var $t=0;$t=q);){var le=N[C++];if(!le)return de;if(!(le&128)){de+=String.fromCharCode(le);continue}var ue=N[C++]&63;if((le&224)==192){de+=String.fromCharCode((le&31)<<6|ue);continue}var we=N[C++]&63;if((le&240)==224?le=(le&15)<<12|ue<<6|we:le=(le&7)<<18|ue<<12|we<<6|N[C++]&63,le<65536)de+=String.fromCharCode(le);else{var rt=le-65536;de+=String.fromCharCode(55296|rt>>10,56320|rt&1023)}}return de}function $e(N,C){return N?Oe(i(),N,C):""}function tt(N,C,L,q){if(!(q>0))return 0;for(var de=L,le=L+q-1,ue=0;ue=55296&&we<=57343){var rt=N.charCodeAt(++ue);we=65536+((we&1023)<<10)|rt&1023}if(we<=127){if(L>=le)break;C[L++]=we}else if(we<=2047){if(L+1>=le)break;C[L++]=192|we>>6,C[L++]=128|we&63}else if(we<=65535){if(L+2>=le)break;C[L++]=224|we>>12,C[L++]=128|we>>6&63,C[L++]=128|we&63}else{if(L+3>=le)break;C[L++]=240|we>>18,C[L++]=128|we>>12&63,C[L++]=128|we>>6&63,C[L++]=128|we&63}}return C[L]=0,L-de}function nt(N,C,L){return tt(N,i(),C,L)}function ot(N){for(var C=0,L=0;L=55296&&q<=57343&&(q=65536+((q&1023)<<10)|N.charCodeAt(++L)&1023),q<=127?++C:q<=2047?C+=2:q<=65535?C+=3:C+=4}return C}function Ze(N,C){s().set(N,C)}function pt(N,C){return N%C>0&&(N+=C-N%C),N}var Be,yn,_t,Un,Yt,gn,Hn,Rn,un;function Jt(N){Be=N,c.HEAP8=yn=new Int8Array(N),c.HEAP16=Un=new Int16Array(N),c.HEAP32=gn=new Int32Array(N),c.HEAPU8=_t=new Uint8Array(N),c.HEAPU16=Yt=new Uint16Array(N),c.HEAPU32=Hn=new Uint32Array(N),c.HEAPF32=Rn=new Float32Array(N),c.HEAPF64=un=new Float64Array(N)}var Tr=c.INITIAL_MEMORY||16777216;if(x)Q=c.wasmMemory,Be=c.buffer;else if(c.wasmMemory)Q=c.wasmMemory;else if(Q=new WebAssembly.Memory({initial:Tr/65536,maximum:2147483648/65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),b&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(Be=Q.buffer),Tr=Be.byteLength,Jt(Be);var Jn,Qn=[],Aa=[],Kr=[],ya=[],Di=[],dr=!1,Gc=!1;x||Aa.push({func:function(){lh()}}),x&&(dr=!0);function D0(){if(!x){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Kc(c.preRun.shift());zi(Qn)}}function qc(){dr=!0,zi(Aa)}function O0(){x||zi(Kr)}function Xc(){x||(Gc=!0)}function xn(){if(!x){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)z0(c.postRun.shift());zi(Di)}}function Kc(N){Qn.unshift(N)}function z0(N){Di.unshift(N)}var Zr=0,ga=null,ns=null;function P0(N){pe(!x,"addRunDependency cannot be used in a pthread worker"),Zr++,c.monitorRunDependencies&&c.monitorRunDependencies(Zr)}function L0(N){if(Zr--,c.monitorRunDependencies&&c.monitorRunDependencies(Zr),Zr==0&&(ga!==null&&(clearInterval(ga),ga=null),ns)){var C=ns;ns=null,C()}}c.preloadedImages={},c.preloadedAudios={};function Yr(N){c.onAbort&&c.onAbort(N),x&&console.error("Pthread aborting at "+new Error().stack),N+="",j(N),oe=!0,fe=1,N="abort("+N+"). Build with -s ASSERTIONS=1 for more info.";var C=new WebAssembly.RuntimeError(N);throw d(C),C}function Zc(N,C){return String.prototype.startsWith?N.startsWith(C):N.indexOf(C)===0}var Oi="data:application/octet-stream;base64,";function Yc(N){return Zc(N,Oi)}var W0="file://";function Jc(N){return Zc(N,W0)}var wn="tfjs-backend-wasm-threaded-simd.wasm";Yc(wn)||(wn=S(wn));function B0(N){try{if(N==wn&&te)return new Uint8Array(te);if(D)return D(N);throw"both async and sync fetching of the wasm failed"}catch(C){Yr(C)}}function Qc(){if(!te&&(g||_)){if(typeof fetch=="function"&&!Jc(wn))return fetch(wn,{credentials:"same-origin"}).then(function(N){if(!N.ok)throw"failed to load wasm binary file at '"+wn+"'";return N.arrayBuffer()}).catch(function(){return B0(wn)});if(M)return new Promise(function(N,C){M(wn,function(L){N(new Uint8Array(L))},C)})}return Promise.resolve().then(function(){return B0(wn)})}function V0(){var N={a:F1};function C(ue,we){var rt=ue.exports;if(c.asm=rt,Jn=c.asm.F,he=we,!x){var Ht=Ne.unusedWorkers.length;Ne.unusedWorkers.forEach(function($t){Ne.loadWasmModuleToWorker($t,function(){--Ht||L0("wasm-instantiate")})})}}x||P0("wasm-instantiate");function L(ue){C(ue.instance,ue.module)}function q(ue){return Qc().then(function(we){return WebAssembly.instantiate(we,N)}).then(ue,function(we){j("failed to asynchronously prepare wasm: "+we),Yr(we)})}function de(){return!te&&typeof WebAssembly.instantiateStreaming=="function"&&!Yc(wn)&&!Jc(wn)&&typeof fetch=="function"?fetch(wn,{credentials:"same-origin"}).then(function(ue){var we=WebAssembly.instantiateStreaming(ue,N);return we.then(L,function(rt){return j("wasm streaming compile failed: "+rt),j("falling back to ArrayBuffer instantiation"),q(L)})}):q(L)}if(c.instantiateWasm)try{var le=c.instantiateWasm(N,C);return le}catch(ue){return j("Module.instantiateWasm callback failed with error: "+ue),!1}return de().catch(d),{}}var eh={8991:function(N,C){setTimeout(function(){bg(N,C)},0)}};function U0(){Ne.initRuntime()}function zi(N){for(;N.length>0;){var C=N.shift();if(typeof C=="function"){C(c);continue}var L=C.func;typeof L=="number"?C.arg===void 0?Jn.get(L)():Jn.get(L)(C.arg):L(C.arg===void 0?null:C.arg)}}function Pi(N,C){if(N<=0||N>s().length||N&!0||C<0)return-28;if(C==0)return 0;C>=2147483647&&(C=Infinity);var L=Atomics.load(o(),Hi>>2),q=0;if(L==N){var de=Atomics.compareExchange(o(),Hi>>2,L,0);if(de==L&&(--C,q=1,C<=0))return 1}var le=Atomics.notify(o(),N>>2,C);if(le>=0)return le+q;throw"Atomics.notify returned an unexpected value "+le}c._emscripten_futex_wake=Pi;function H0(N){if(x)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in killThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];C.worker.terminate(),Ne.freeThreadData(C),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(C.worker),1),C.worker.pthread=void 0}function j0(N){if(x)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cancelThread!";var C=Ne.pthreads[N];C.worker.postMessage({cmd:"cancel"})}function G0(N){if(x)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cleanupThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];if(C){var L=C.worker;Ne.returnWorkerToPool(L)}}var Ne={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var N=8,C=0;C>2]=N;var L=N+152;o()[L>>2]=L;for(var q=as(512),C=0;C<128;++C)l()[q/4+C]=0;Atomics.store(l(),N+100>>2,q),Atomics.store(l(),N+40>>2,N),ph(N,!_,1),_g(N)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Ne.threadExitHandlers.length>0;)Ne.threadExitHandlers.pop()();x&&Bi()&&wg()},threadExit:function(N){var C=Bi();C&&(Atomics.store(l(),C+4>>2,N),Atomics.store(l(),C+0>>2,1),Atomics.store(l(),C+56>>2,1),Atomics.store(l(),C+60>>2,0),Ne.runExitHandlers(),Pi(C+0,2147483647),ph(0,0,0),x&&postMessage({cmd:"exit"}))},threadCancel:function(){Ne.runExitHandlers();var N=Bi();Atomics.store(l(),N+4>>2,-1),Atomics.store(l(),N+0>>2,1),Pi(N+0,2147483647),ph(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var N in Ne.pthreads){var C=Ne.pthreads[N];C&&C.worker&&Ne.returnWorkerToPool(C.worker)}Ne.pthreads={};for(var L=0;L>2];o()[N.threadInfoStruct+100>>2]=0,tu(C),tu(N.threadInfoStruct)}N.threadInfoStruct=0,N.allocatedOwnStack&&N.stackBase&&tu(N.stackBase),N.stackBase=0,N.worker&&(N.worker.pthread=null)}},returnWorkerToPool:function(N){Ne.runWithoutMainThreadQueuedCalls(function(){delete Ne.pthreads[N.pthread.threadInfoStruct],Ne.unusedWorkers.push(N),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(N),1),Ne.freeThreadData(N.pthread),N.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(N){o()[Sg>>2]=0;try{N()}finally{o()[Sg>>2]=1}},receiveObjectTransfer:function(N){},loadWasmModuleToWorker:function(N,C){N.onmessage=function(L){var q=L.data,de=q.cmd;if(N.pthread&&(Ne.currentProxiedOperationCallerThread=N.pthread.threadInfoStruct),q.targetThread&&q.targetThread!=Bi()){var le=Ne.pthreads[q.targetThread];le?le.worker.postMessage(L.data,q.transferList):console.error('Internal error! Worker sent a message "'+de+'" to target pthread '+q.targetThread+", but that thread no longer exists!"),Ne.currentProxiedOperationCallerThread=void 0;return}if(de==="processQueuedMainThreadWork")q1();else if(de==="spawnThread")ih(L.data);else if(de==="cleanupThread")G0(q.thread);else if(de==="killThread")H0(q.thread);else if(de==="cancelThread")j0(q.thread);else if(de==="loaded")N.loaded=!0,C&&C(N),N.runPthread&&(N.runPthread(),delete N.runPthread);else if(de==="print")X("Thread "+q.threadId+": "+q.text);else if(de==="printErr")j("Thread "+q.threadId+": "+q.text);else if(de==="alert")alert("Thread "+q.threadId+": "+q.text);else if(de==="exit"){var ue=N.pthread&&Atomics.load(l(),N.pthread.threadInfoStruct+64>>2);ue&&Ne.returnWorkerToPool(N)}else if(de==="exitProcess")try{p8(q.returnCode)}catch(we){if(we instanceof ru)return;throw we}else de==="cancelDone"?Ne.returnWorkerToPool(N):de==="objectTransfer"?Ne.receiveObjectTransfer(L.data):L.data.target==="setimmediate"?N.postMessage(L.data):j("worker sent an unknown command "+de);Ne.currentProxiedOperationCallerThread=void 0},N.onerror=function(L){j("pthread sent an error! "+L.filename+":"+L.lineno+": "+L.message)},b&&(N.on("message",function(L){N.onmessage({data:L})}),N.on("error",function(L){N.onerror(L)}),N.on("exit",function(L){})),N.postMessage({cmd:"load",urlOrBlob:c.mainScriptUrlOrBlob||r,wasmMemory:Q,wasmModule:he})},allocateUnusedWorker:function(){var N=S("tfjs-backend-wasm-threaded-simd.worker.js");Ne.unusedWorkers.push(new Worker(N))},getNewWorker:function(){return Ne.unusedWorkers.length==0&&(Ne.allocateUnusedWorker(),Ne.loadWasmModuleToWorker(Ne.unusedWorkers[0])),Ne.unusedWorkers.length>0?Ne.unusedWorkers.pop():null},busySpinWait:function(N){for(var C=performance.now()+N;performance.now()>2]=N,N}function Q0(N,C){if(x)return xa(1,1,N,C)}function e1(N,C){if(N==C)postMessage({cmd:"processQueuedMainThreadWork"});else if(x)postMessage({targetThread:N,cmd:"processThreadQueue"});else{var L=Ne.pthreads[N],q=L&&L.worker;if(!q)return;q.postMessage({cmd:"processThreadQueue"})}return 1}function t1(){Yr()}function n1(N,C,L){var q=o1(C,L);return eh[N].apply(null,q)}function r1(N,C){}function a1(N,C,L){if(N<=0||N>s().length||N&!0)return-28;if(g){if(Atomics.load(o(),N>>2)!=C)return-6;for(var q=performance.now(),de=q+L,le=Atomics.exchange(o(),Hi>>2,N);;){if(q=performance.now(),q>de)return le=Atomics.exchange(o(),Hi>>2,0),-73;if(le=Atomics.exchange(o(),Hi>>2,0),le==0)break;if(q1(),Atomics.load(o(),N>>2)!=C)return-6;le=Atomics.exchange(o(),Hi>>2,N)}return 0}else{var ue=Atomics.wait(o(),N>>2,C,L);if(ue==="timed-out")return-73;if(ue==="not-equal")return-6;if(ue==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ue}}function s1(N,C,L){i().copyWithin(N,C,C+L)}function i1(){return b?require("os").cpus().length:navigator.hardwareConcurrency}function xa(N,C){for(var L=arguments.length-2,q=nu(),de=L,le=Ui(de*8),ue=le>>3,we=0;we>=2;L=i()[N++];){var q=L<105;q&&C&1&&C++,Zl.push(q?u()[C++>>1]:o()[C]),++C}return Zl}function l1(N,C,L){Kl.length=C;for(var q=L>>3,de=0;de>>16),Jt(Q.buffer),1}catch(C){}}function h1(N){var C=u1();if(N<=C)return!1;var L=2147483648;if(N>L)return!1;for(var q=1;q<=4;q*=2){var de=C*(1+.2/q);de=Math.min(de,N+100663296);var le=Math.min(L,pt(Math.max(N,de),65536)),ue=c1(le);if(ue)return!0}return!1}var Le={inEventHandler:0,removeAllEventListeners:function(){for(var N=Le.eventHandlers.length-1;N>=0;--N)Le._removeHandler(N);Le.eventHandlers=[],Le.deferredCalls=[]},registerRemoveEventListeners:function(){Le.removeEventListenersRegistered||(ya.push(Le.removeAllEventListeners),Le.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(N,C,L){function q(ue,we){if(ue.length!=we.length)return!1;for(var rt in ue)if(ue[rt]!=we[rt])return!1;return!0}for(var de in Le.deferredCalls){var le=Le.deferredCalls[de];if(le.targetFunction==N&&q(le.argsList,L))return}Le.deferredCalls.push({targetFunction:N,precedence:C,argsList:L}),Le.deferredCalls.sort(function(ue,we){return ue.precedence>2]=L,o()[ue+4>>2]=q,o()[ue+8>>2]=de,X1(0,N,637534208,C,q,ue),Vi(le)},getTargetThreadForEventCallback:function(N){switch(N){case 1:return 0;case 2:return Ne.currentProxiedOperationCallerThread;default:return N}},getNodeNameForTarget:function(N){return N?N==window?"#window":N==screen?"#screen":N&&N.nodeName?N.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function d1(N){var C=ot(N)+1,L=as(C);return nt(N,L,C),L}function p1(N,C,L,q){var de=nu(),le=Ui(12),ue=0;C&&(ue=d1(C)),o()[le>>2]=ue,o()[le+4>>2]=L,o()[le+8>>2]=q,X1(0,N,657457152,0,ue,le),Vi(de)}function f1(N,C,L,q){C=C?$e(C):"",p1(N,C,L,q)}function m1(N){return N>2?$e(N):N}var A1=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function y1(N){N=m1(N);var C=A1[N]||(typeof document!="undefined"?document.querySelector(N):void 0);return C}function Yl(N){return y1(N)}function th(N,C,L){var q=Yl(N);if(!q)return-4;if(q.canvasSharedPtr&&(o()[q.canvasSharedPtr>>2]=C,o()[q.canvasSharedPtr+4>>2]=L),q.offscreenCanvas||!q.controlTransferredOffscreen){q.offscreenCanvas&&(q=q.offscreenCanvas);var de=!1;if(q.GLctxObject&&q.GLctxObject.GLctx){var le=q.GLctxObject.GLctx.getParameter(2978);de=le[0]===0&&le[1]===0&&le[2]===q.width&&le[3]===q.height}q.width=C,q.height=L,de&&q.GLctxObject.GLctx.viewport(0,0,C,L)}else if(q.canvasSharedPtr){var ue=o()[q.canvasSharedPtr+8>>2];return f1(ue,N,C,L),1}else return-4;return 0}function nh(N,C,L){return x?xa(2,1,N,C,L):th(N,C,L)}function g1(N,C,L){var q=Yl(N);return q?th(N,C,L):nh(N,C,L)}function x1(N){}function w1(N,C){}function _1(N){var C=N.getExtension("ANGLE_instanced_arrays");if(C)return N.vertexAttribDivisor=function(L,q){C.vertexAttribDivisorANGLE(L,q)},N.drawArraysInstanced=function(L,q,de,le){C.drawArraysInstancedANGLE(L,q,de,le)},N.drawElementsInstanced=function(L,q,de,le,ue){C.drawElementsInstancedANGLE(L,q,de,le,ue)},1}function b1(N){var C=N.getExtension("OES_vertex_array_object");if(C)return N.createVertexArray=function(){return C.createVertexArrayOES()},N.deleteVertexArray=function(L){C.deleteVertexArrayOES(L)},N.bindVertexArray=function(L){C.bindVertexArrayOES(L)},N.isVertexArray=function(L){return C.isVertexArrayOES(L)},1}function v1(N){var C=N.getExtension("WEBGL_draw_buffers");if(C)return N.drawBuffers=function(L,q){C.drawBuffersWEBGL(L,q)},1}function k1(N){return!!(N.multiDrawWebgl=N.getExtension("WEBGL_multi_draw"))}var Qe={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(N){Qe.lastError||(Qe.lastError=N)},getNewId:function(N){for(var C=Qe.counter++,L=N.length;L>2]:-1;de+=$e(o()[L+le*4>>2],ue<0?void 0:ue)}return de},createContext:function(N,C){var L=N.getContext("webgl",C);if(!L)return 0;var q=Qe.registerContext(L,C);return q},registerContext:function(N,C){var L=as(8);o()[L+4>>2]=Bi();var q={handle:L,attributes:C,version:C.majorVersion,GLctx:N};return N.canvas&&(N.canvas.GLctxObject=q),Qe.contexts[L]=q,(typeof C.enableExtensionsByDefault=="undefined"||C.enableExtensionsByDefault)&&Qe.initExtensions(q),L},makeContextCurrent:function(N){return Qe.currentContext=Qe.contexts[N],c.ctx=wa=Qe.currentContext&&Qe.currentContext.GLctx,!(N&&!wa)},getContext:function(N){return Qe.contexts[N]},deleteContext:function(N){Qe.currentContext===Qe.contexts[N]&&(Qe.currentContext=null),typeof Le=="object"&&Le.removeAllHandlersOnTarget(Qe.contexts[N].GLctx.canvas),Qe.contexts[N]&&Qe.contexts[N].GLctx.canvas&&(Qe.contexts[N].GLctx.canvas.GLctxObject=void 0),tu(Qe.contexts[N].handle),Qe.contexts[N]=null},initExtensions:function(N){if(N||(N=Qe.currentContext),!N.initExtensionsDone){N.initExtensionsDone=!0;var C=N.GLctx;_1(C),b1(C),v1(C),C.disjointTimerQueryExt=C.getExtension("EXT_disjoint_timer_query"),k1(C);var L=C.getSupportedExtensions()||[];L.forEach(function(q){q.indexOf("lose_context")<0&&q.indexOf("debug")<0&&C.getExtension(q)})}},populateUniformTable:function(N){for(var C=Qe.programs[N],L=Qe.programInfos[N]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},q=L.uniforms,de=wa.getProgramParameter(C,35718),le=0;le>2,q=o()[L+(24>>2)],de={alpha:!!o()[L+(0>>2)],depth:!!o()[L+(4>>2)],stencil:!!o()[L+(8>>2)],antialias:!!o()[L+(12>>2)],premultipliedAlpha:!!o()[L+(16>>2)],preserveDrawingBuffer:!!o()[L+(20>>2)],powerPreference:N1[q],failIfMajorPerformanceCaveat:!!o()[L+(28>>2)],majorVersion:o()[L+(32>>2)],minorVersion:o()[L+(36>>2)],enableExtensionsByDefault:o()[L+(40>>2)],explicitSwapControl:o()[L+(44>>2)],proxyContextToMainThread:o()[L+(48>>2)],renderViaOffscreenBackBuffer:o()[L+(52>>2)]},le=Yl(N);if(!le||de.explicitSwapControl)return 0;var ue=Qe.createContext(le,de);return ue}function S1(N,C){return I1(N,C)}var Li={mappings:{},buffers:[null,[],[]],printChar:function(N,C){var L=Li.buffers[N];C===0||C===10?((N===1?X:j)(Oe(L,0)),L.length=0):L.push(C)},varargs:void 0,get:function(){Li.varargs+=4;var N=o()[Li.varargs-4>>2];return N},getStr:function(N){var C=$e(N);return C},get64:function(N,C){return N}};function rh(N){return x?xa(3,1,N):0}function ah(N,C,L,q,de){if(x)return xa(4,1,N,C,L,q,de)}function sh(N,C,L,q){if(x)return xa(5,1,N,C,L,q);for(var de=0,le=0;le>2],we=o()[C+(le*8+4)>>2],rt=0;rt>2]=de,0}function T1(N){var C=Ne.threadExitHandlers.pop();N&&C()}function C1(N,C){Ne.threadExitHandlers.push(function(){Jn.get(N)(C)})}function ih(N){if(x)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var C=Ne.getNewWorker();if(C.pthread!==void 0)throw"Internal error!";if(!N.pthread_ptr)throw"Internal error, no pthread ptr!";Ne.runningWorkers.push(C);for(var L=as(128*4),q=0;q<128;++q)o()[L+q*4>>2]=0;var de=N.stackBase+N.stackSize,le=Ne.pthreads[N.pthread_ptr]={worker:C,stackBase:N.stackBase,stackSize:N.stackSize,allocatedOwnStack:N.allocatedOwnStack,threadInfoStruct:N.pthread_ptr},ue=le.threadInfoStruct>>2;Atomics.store(l(),ue+(64>>2),N.detached),Atomics.store(l(),ue+(100>>2),L),Atomics.store(l(),ue+(40>>2),le.threadInfoStruct),Atomics.store(l(),ue+(80>>2),N.stackSize),Atomics.store(l(),ue+(76>>2),de),Atomics.store(l(),ue+(104>>2),N.stackSize),Atomics.store(l(),ue+(104+8>>2),de),Atomics.store(l(),ue+(104+12>>2),N.detached);var we=xg(),rt=we+40;Atomics.store(l(),ue+(172>>2),rt),C.pthread=le;var Ht={cmd:"run",start_routine:N.startRoutine,arg:N.arg,threadInfoStruct:N.pthread_ptr,stackBase:N.stackBase,stackSize:N.stackSize};C.runPthread=function(){Ht.time=performance.now(),C.postMessage(Ht,N.transferList)},C.loaded&&(C.runPthread(),delete C.runPthread)}function E1(N,C,L,q){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!N)return j("pthread_create called with a null thread pointer!"),28;var de=[],le=0;if(x&&(de.length===0||le))return vg(687865856,N,C,L,q);if(le)return le;var ue=0,we=0,rt=0;C&&C!=-1?(ue=o()[C>>2],ue+=81920,we=o()[C+8>>2],rt=o()[C+12>>2]!==0):ue=2097152;var Ht=we==0;Ht?we=Ig(16,ue):(we-=ue,pe(we>0));for(var $t=as(228),ba=0;ba<228>>2;++ba)l()[($t>>2)+ba]=0;o()[N>>2]=$t,o()[$t+12>>2]=$t;var ji=$t+152;o()[ji>>2]=ji;var _n={stackBase:we,stackSize:ue,allocatedOwnStack:Ht,detached:rt,startRoutine:L,pthread_ptr:$t,arg:q,transferList:de};return x?(_n.cmd="spawnThread",postMessage(_n,de)):ih(_n),0}function oh(N){if(x)return xa(6,1,N);switch(N){case 30:return 16384;case 85:var C=2147483648;return C/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return J0(28),-1}x||Ne.initMainThreadBlock();var wa,R1=[null,Q0,nh,rh,ah,sh,oh],F1={e:Z0,r:Y0,x:e1,b:t1,y:n1,j:r1,c:a1,d:Pi,f:rs,p:s1,z:i1,u:l1,q:h1,v:g1,i:x1,t:w1,w:S1,m:rh,n:ah,g:sh,o:U0,a:Q||c.wasmMemory,k:T1,l:C1,h:E1,s:oh},yg=V0(),lh=c.___wasm_call_ctors=function(){return(lh=c.___wasm_call_ctors=c.asm.A).apply(null,arguments)},M1=c._init=function(){return(M1=c._init=c.asm.B).apply(null,arguments)},$1=c._register_tensor=function(){return($1=c._register_tensor=c.asm.C).apply(null,arguments)},D1=c._dispose_data=function(){return(D1=c._dispose_data=c.asm.D).apply(null,arguments)},O1=c._dispose=function(){return(O1=c._dispose=c.asm.E).apply(null,arguments)},z1=c._Abs=function(){return(z1=c._Abs=c.asm.G).apply(null,arguments)},P1=c._Add=function(){return(P1=c._Add=c.asm.H).apply(null,arguments)},L1=c._AddN=function(){return(L1=c._AddN=c.asm.I).apply(null,arguments)},W1=c._ArgMax=function(){return(W1=c._ArgMax=c.asm.J).apply(null,arguments)},B1=c._AvgPool=function(){return(B1=c._AvgPool=c.asm.K).apply(null,arguments)},V1=c._BatchMatMul=function(){return(V1=c._BatchMatMul=c.asm.L).apply(null,arguments)},U1=c._Ceil=function(){return(U1=c._Ceil=c.asm.M).apply(null,arguments)},H1=c._ClipByValue=function(){return(H1=c._ClipByValue=c.asm.N).apply(null,arguments)},j1=c._Conv2D=function(){return(j1=c._Conv2D=c.asm.O).apply(null,arguments)},uh=c._Conv2DBackpropInput=function(){return(uh=c._Conv2DBackpropInput=c.asm.P).apply(null,arguments)},ch=c._Cos=function(){return(ch=c._Cos=c.asm.Q).apply(null,arguments)},Jl=c._CropAndResize=function(){return(Jl=c._CropAndResize=c.asm.R).apply(null,arguments)},Wi=c._Cumsum=function(){return(Wi=c._Cumsum=c.asm.S).apply(null,arguments)},G1=c._DepthToSpace=function(){return(G1=c._DepthToSpace=c.asm.T).apply(null,arguments)},Ql=c._DepthwiseConv2dNative=function(){return(Ql=c._DepthwiseConv2dNative=c.asm.U).apply(null,arguments)},K=c._Equal=function(){return(K=c._Equal=c.asm.V).apply(null,arguments)},ne=c._Exp=function(){return(ne=c._Exp=c.asm.W).apply(null,arguments)},Se=c._FlipLeftRight=function(){return(Se=c._FlipLeftRight=c.asm.X).apply(null,arguments)},Ye=c._Floor=function(){return(Ye=c._Floor=c.asm.Y).apply(null,arguments)},It=c._FloorDiv=function(){return(It=c._FloorDiv=c.asm.Z).apply(null,arguments)},At=c._FusedBatchNorm=function(){return(At=c._FusedBatchNorm=c.asm._).apply(null,arguments)},Ve=c._FusedConv2D=function(){return(Ve=c._FusedConv2D=c.asm.$).apply(null,arguments)},je=c._FusedDepthwiseConv2D=function(){return(je=c._FusedDepthwiseConv2D=c.asm.aa).apply(null,arguments)},Qt=c._Gather=function(){return(Qt=c._Gather=c.asm.ba).apply(null,arguments)},Jr=c._GatherNd=function(){return(Jr=c._GatherNd=c.asm.ca).apply(null,arguments)},Qr=c._Greater=function(){return(Qr=c._Greater=c.asm.da).apply(null,arguments)},hh=c._GreaterEqual=function(){return(hh=c._GreaterEqual=c.asm.ea).apply(null,arguments)},eu=c._LeakyRelu=function(){return(eu=c._LeakyRelu=c.asm.fa).apply(null,arguments)},jn=c._Less=function(){return(jn=c._Less=c.asm.ga).apply(null,arguments)},_a=c._LessEqual=function(){return(_a=c._LessEqual=c.asm.ha).apply(null,arguments)},dh=c._Log=function(){return(dh=c._Log=c.asm.ia).apply(null,arguments)},b4=c._LogicalAnd=function(){return(b4=c._LogicalAnd=c.asm.ja).apply(null,arguments)},v4=c._Max=function(){return(v4=c._Max=c.asm.ka).apply(null,arguments)},k4=c._MaxPool=function(){return(k4=c._MaxPool=c.asm.la).apply(null,arguments)},N4=c._Maximum=function(){return(N4=c._Maximum=c.asm.ma).apply(null,arguments)},I4=c._Mean=function(){return(I4=c._Mean=c.asm.na).apply(null,arguments)},S4=c._Min=function(){return(S4=c._Min=c.asm.oa).apply(null,arguments)},T4=c._Minimum=function(){return(T4=c._Minimum=c.asm.pa).apply(null,arguments)},C4=c._Multiply=function(){return(C4=c._Multiply=c.asm.qa).apply(null,arguments)},E4=c._Neg=function(){return(E4=c._Neg=c.asm.ra).apply(null,arguments)},R4=c._NonMaxSuppressionV3=function(){return(R4=c._NonMaxSuppressionV3=c.asm.sa).apply(null,arguments)},F4=c._NonMaxSuppressionV4=function(){return(F4=c._NonMaxSuppressionV4=c.asm.ta).apply(null,arguments)},M4=c._NonMaxSuppressionV5=function(){return(M4=c._NonMaxSuppressionV5=c.asm.ua).apply(null,arguments)},$4=c._NotEqual=function(){return($4=c._NotEqual=c.asm.va).apply(null,arguments)},D4=c._OneHot=function(){return(D4=c._OneHot=c.asm.wa).apply(null,arguments)},O4=c._PadV2=function(){return(O4=c._PadV2=c.asm.xa).apply(null,arguments)},z4=c._Pow=function(){return(z4=c._Pow=c.asm.ya).apply(null,arguments)},P4=c._Prelu=function(){return(P4=c._Prelu=c.asm.za).apply(null,arguments)},L4=c._Prod=function(){return(L4=c._Prod=c.asm.Aa).apply(null,arguments)},W4=c._RealDiv=function(){return(W4=c._RealDiv=c.asm.Ba).apply(null,arguments)},B4=c._Relu=function(){return(B4=c._Relu=c.asm.Ca).apply(null,arguments)},V4=c._Relu6=function(){return(V4=c._Relu6=c.asm.Da).apply(null,arguments)},U4=c._ResizeBilinear=function(){return(U4=c._ResizeBilinear=c.asm.Ea).apply(null,arguments)},H4=c._Reverse=function(){return(H4=c._Reverse=c.asm.Fa).apply(null,arguments)},j4=c._RotateWithOffset=function(){return(j4=c._RotateWithOffset=c.asm.Ga).apply(null,arguments)},G4=c._Round=function(){return(G4=c._Round=c.asm.Ha).apply(null,arguments)},q4=c._Rsqrt=function(){return(q4=c._Rsqrt=c.asm.Ia).apply(null,arguments)},X4=c._ScatterNd=function(){return(X4=c._ScatterNd=c.asm.Ja).apply(null,arguments)},K4=c._SelectV2=function(){return(K4=c._SelectV2=c.asm.Ka).apply(null,arguments)},Z4=c._Sigmoid=function(){return(Z4=c._Sigmoid=c.asm.La).apply(null,arguments)},Y4=c._Sin=function(){return(Y4=c._Sin=c.asm.Ma).apply(null,arguments)},J4=c._Softmax=function(){return(J4=c._Softmax=c.asm.Na).apply(null,arguments)},Q4=c._Sqrt=function(){return(Q4=c._Sqrt=c.asm.Oa).apply(null,arguments)},e8=c._Square=function(){return(e8=c._Square=c.asm.Pa).apply(null,arguments)},t8=c._SquaredDifference=function(){return(t8=c._SquaredDifference=c.asm.Qa).apply(null,arguments)},n8=c._Step=function(){return(n8=c._Step=c.asm.Ra).apply(null,arguments)},r8=c._StridedSlice=function(){return(r8=c._StridedSlice=c.asm.Sa).apply(null,arguments)},a8=c._Sub=function(){return(a8=c._Sub=c.asm.Ta).apply(null,arguments)},s8=c._Sum=function(){return(s8=c._Sum=c.asm.Ua).apply(null,arguments)},i8=c._Tanh=function(){return(i8=c._Tanh=c.asm.Va).apply(null,arguments)},o8=c._Tile=function(){return(o8=c._Tile=c.asm.Wa).apply(null,arguments)},l8=c._TopK=function(){return(l8=c._TopK=c.asm.Xa).apply(null,arguments)},u8=c._Transpose=function(){return(u8=c._Transpose=c.asm.Ya).apply(null,arguments)},c8=c.__FusedMatMul=function(){return(c8=c.__FusedMatMul=c.asm.Za).apply(null,arguments)},as=c._malloc=function(){return(as=c._malloc=c.asm._a).apply(null,arguments)},tu=c._free=function(){return(tu=c._free=c.asm.$a).apply(null,arguments)},gg=c.___errno_location=function(){return(gg=c.___errno_location=c.asm.ab).apply(null,arguments)},xg=c._emscripten_get_global_libc=function(){return(xg=c._emscripten_get_global_libc=c.asm.bb).apply(null,arguments)},Bi=c._pthread_self=function(){return(Bi=c._pthread_self=c.asm.cb).apply(null,arguments)},wg=c.___pthread_tsd_run_dtors=function(){return(wg=c.___pthread_tsd_run_dtors=c.asm.db).apply(null,arguments)},q1=c._emscripten_main_thread_process_queued_calls=function(){return(q1=c._emscripten_main_thread_process_queued_calls=c.asm.eb).apply(null,arguments)},h8=c._emscripten_current_thread_process_queued_calls=function(){return(h8=c._emscripten_current_thread_process_queued_calls=c.asm.fb).apply(null,arguments)},_g=c._emscripten_register_main_browser_thread_id=function(){return(_g=c._emscripten_register_main_browser_thread_id=c.asm.gb).apply(null,arguments)},bg=c.__emscripten_do_dispatch_to_thread=function(){return(bg=c.__emscripten_do_dispatch_to_thread=c.asm.hb).apply(null,arguments)},vg=c._emscripten_sync_run_in_main_thread_4=function(){return(vg=c._emscripten_sync_run_in_main_thread_4=c.asm.ib).apply(null,arguments)},kg=c._emscripten_run_in_main_runtime_thread_js=function(){return(kg=c._emscripten_run_in_main_runtime_thread_js=c.asm.jb).apply(null,arguments)},X1=c.__emscripten_call_on_thread=function(){return(X1=c.__emscripten_call_on_thread=c.asm.kb).apply(null,arguments)},d8=c._emscripten_tls_init=function(){return(d8=c._emscripten_tls_init=c.asm.lb).apply(null,arguments)},ph=c.__emscripten_thread_init=function(){return(ph=c.__emscripten_thread_init=c.asm.mb).apply(null,arguments)},nu=c.stackSave=function(){return(nu=c.stackSave=c.asm.nb).apply(null,arguments)},Vi=c.stackRestore=function(){return(Vi=c.stackRestore=c.asm.ob).apply(null,arguments)},Ui=c.stackAlloc=function(){return(Ui=c.stackAlloc=c.asm.pb).apply(null,arguments)},Ng=c._emscripten_stack_set_limits=function(){return(Ng=c._emscripten_stack_set_limits=c.asm.qb).apply(null,arguments)},Ig=c._memalign=function(){return(Ig=c._memalign=c.asm.rb).apply(null,arguments)},Sg=c.__emscripten_allow_main_runtime_queued_calls=9880,Hi=c.__emscripten_main_thread_futex=11368;c.cwrap=Me,c.PThread=Ne,c.PThread=Ne,c.wasmMemory=Q,c.ExitStatus=ru;var fh;function ru(N){this.name="ExitStatus",this.message="Program terminated with exit("+N+")",this.status=N}ns=function N(){fh||K1(),fh||(ns=N)};function K1(N){if(N=N||m,Zr>0)return;if(x){h(c),postMessage({cmd:"loaded"});return}if(D0(),Zr>0)return;function C(){fh||(fh=!0,c.calledRun=!0,!oe&&(qc(),O0(),h(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),xn()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),C()},1)):C()}c.run=K1;function p8(N,C){if(!(C&&ie&&N===0)){if(!C&&x)throw postMessage({cmd:"exitProcess",returnCode:N}),new ru(N);ie||(Ne.terminateAllThreads(),fe=N,Xc(),c.onExit&&c.onExit(N),oe=!0),y(N,new ru(N))}}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return x&&(ie=!1,Ne.initWorker()),K1(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),q8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};var s=typeof a!="undefined"?a:{},i,o;s.ready=new Promise(function(K,ne){i=K,o=ne});var l={},u;for(u in s)s.hasOwnProperty(u)&&(l[u]=s[u]);var c=[],h="./this.program",d=function(K,ne){throw ne},p=!1,f=!1,m=!1,A=!1;p=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A=!p&&!m&&!f;var y="";function g(K){return s.locateFile?s.locateFile(K,y):y+K}var _,b,w,x,I,S;m?(f?y=au().dirname(y)+"/":y=__dirname+"/",_=function(K,ne){return I||(I=require("fs")),S||(S=au()),K=S.normalize(K),I.readFileSync(K,ne?null:"utf8")},w=function(K){var ne=_(K,!0);return ne.buffer||(ne=new Uint8Array(ne)),X(ne.buffer),ne},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(K){if(!(K instanceof G1))throw K}),process.on("unhandledRejection",dr),d=function(K){process.exit(K)},s.inspect=function(){return"[Emscripten Module object]"}):A?(typeof read!="undefined"&&(_=function(K){return read(K)}),w=function(K){var ne;return typeof readbuffer=="function"?new Uint8Array(readbuffer(K)):(ne=read(K,"binary"),X(typeof ne=="object"),ne)},typeof scriptArgs!="undefined"?c=scriptArgs:typeof arguments!="undefined"&&(c=arguments),typeof quit=="function"&&(d=function(K){quit(K)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",_=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.send(null),ne.responseText},f&&(w=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)}),b=function(K,ne,Se){var Ye=new XMLHttpRequest;Ye.open("GET",K,!0),Ye.responseType="arraybuffer",Ye.onload=function(){if(Ye.status==200||Ye.status==0&&Ye.response){ne(Ye.response);return}Se()},Ye.onerror=Se,Ye.send(null)},x=function(K){document.title=K});var T=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in l)l.hasOwnProperty(u)&&(s[u]=l[u]);l=null,s.arguments&&(c=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(d=s.quit);var D;s.wasmBinary&&(D=s.wasmBinary);var z=s.noExitRuntime||!0;typeof WebAssembly!="object"&&dr("no native wasm support detected");var W,U=!1,H;function X(K,ne){K||dr("Assertion failed: "+ne)}function j(K){var ne=s["_"+K];return X(ne,"Cannot call unknown function "+K+", make sure it is exported"),ne}function ee(K,ne,Se,Ye,It){var At={string:function(jn){var _a=0;if(jn!=null&&jn!==0){var dh=(jn.length<<2)+1;_a=Jl(dh),he(jn,_a,dh)}return _a},array:function(jn){var _a=Jl(jn.length);return oe(jn,_a),_a}};function Ve(jn){return ne==="string"?ie(jn):ne==="boolean"?Boolean(jn):jn}var je=j(K),Qt=[],Jr=0;if(Ye)for(var Qr=0;Qr=Ye);)++It;if(It-ne>16&&K.subarray&&ae)return ae.decode(K.subarray(ne,It));for(var At="";ne>10,56320|Jr&1023)}}return At}function ie(K,ne){return K?te(Ie,K,ne):""}function Q(K,ne,Se,Ye){if(!(Ye>0))return 0;for(var It=Se,At=Se+Ye-1,Ve=0;Ve=55296&&je<=57343){var Qt=K.charCodeAt(++Ve);je=65536+((je&1023)<<10)|Qt&1023}if(je<=127){if(Se>=At)break;ne[Se++]=je}else if(je<=2047){if(Se+1>=At)break;ne[Se++]=192|je>>6,ne[Se++]=128|je&63}else if(je<=65535){if(Se+2>=At)break;ne[Se++]=224|je>>12,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}else{if(Se+3>=At)break;ne[Se++]=240|je>>18,ne[Se++]=128|je>>12&63,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}}return ne[Se]=0,Se-It}function he(K,ne,Se){return Q(K,Ie,ne,Se)}function oe(K,ne){ke.set(K,ne)}function fe(K,ne){return K%ne>0&&(K+=ne-K%ne),K}var pe,ke,Ie,Me,Oe,$e,tt,nt,ot;function Ze(K){pe=K,s.HEAP8=ke=new Int8Array(K),s.HEAP16=Me=new Int16Array(K),s.HEAP32=$e=new Int32Array(K),s.HEAPU8=Ie=new Uint8Array(K),s.HEAPU16=Oe=new Uint16Array(K),s.HEAPU32=tt=new Uint32Array(K),s.HEAPF32=nt=new Float32Array(K),s.HEAPF64=ot=new Float64Array(K)}var pt=s.INITIAL_MEMORY||16777216,Be,yn=[],_t=[],Un=[],Yt=[],gn=!1;_t.push({func:function(){Qc()}});function Hn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)Tr(s.preRun.shift());ga(yn)}function Rn(){gn=!0,ga(_t)}function un(){ga(Un)}function Jt(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)Jn(s.postRun.shift());ga(Yt)}function Tr(K){yn.unshift(K)}function Jn(K){Yt.unshift(K)}var Qn=0,Aa=null,Kr=null;function ya(K){Qn++,s.monitorRunDependencies&&s.monitorRunDependencies(Qn)}function Di(K){if(Qn--,s.monitorRunDependencies&&s.monitorRunDependencies(Qn),Qn==0&&(Aa!==null&&(clearInterval(Aa),Aa=null),Kr)){var ne=Kr;Kr=null,ne()}}s.preloadedImages={},s.preloadedAudios={};function dr(K){s.onAbort&&s.onAbort(K),K+="",M(K),U=!0,H=1,K="abort("+K+"). Build with -s ASSERTIONS=1 for more info.";var ne=new WebAssembly.RuntimeError(K);throw o(ne),ne}function Gc(K,ne){return String.prototype.startsWith?K.startsWith(ne):K.indexOf(ne)===0}var D0="data:application/octet-stream;base64,";function qc(K){return Gc(K,D0)}var O0="file://";function Xc(K){return Gc(K,O0)}var xn="tfjs-backend-wasm.wasm";qc(xn)||(xn=g(xn));function Kc(K){try{if(K==xn&&D)return new Uint8Array(D);if(w)return w(K);throw"both async and sync fetching of the wasm failed"}catch(ne){dr(ne)}}function z0(){if(!D&&(p||f)){if(typeof fetch=="function"&&!Xc(xn))return fetch(xn,{credentials:"same-origin"}).then(function(K){if(!K.ok)throw"failed to load wasm binary file at '"+xn+"'";return K.arrayBuffer()}).catch(function(){return Kc(xn)});if(b)return new Promise(function(K,ne){b(xn,function(Se){K(new Uint8Array(Se))},ne)})}return Promise.resolve().then(function(){return Kc(xn)})}function Zr(){var K={a:wn};function ne(Ve,je){var Qt=Ve.exports;s.asm=Qt,W=s.asm.g,Ze(W.buffer),Be=s.asm.m,Di("wasm-instantiate")}ya("wasm-instantiate");function Se(Ve){ne(Ve.instance)}function Ye(Ve){return z0().then(function(je){return WebAssembly.instantiate(je,K)}).then(Ve,function(je){M("failed to asynchronously prepare wasm: "+je),dr(je)})}function It(){return!D&&typeof WebAssembly.instantiateStreaming=="function"&&!qc(xn)&&!Xc(xn)&&typeof fetch=="function"?fetch(xn,{credentials:"same-origin"}).then(function(Ve){var je=WebAssembly.instantiateStreaming(Ve,K);return je.then(Se,function(Qt){return M("wasm streaming compile failed: "+Qt),M("falling back to ArrayBuffer instantiation"),Ye(Se)})}):Ye(Se)}if(s.instantiateWasm)try{var At=s.instantiateWasm(K,ne);return At}catch(Ve){return M("Module.instantiateWasm callback failed with error: "+Ve),!1}return It().catch(o),{}}function ga(K){for(;K.length>0;){var ne=K.shift();if(typeof ne=="function"){ne(s);continue}var Se=ne.func;typeof Se=="number"?ne.arg===void 0?Be.get(Se)():Be.get(Se)(ne.arg):Se(ne.arg===void 0?null:ne.arg)}}function ns(){dr()}function P0(K,ne,Se){Ie.copyWithin(K,ne,ne+Se)}function L0(){return Ie.length}function Yr(K){try{return W.grow(K-pe.byteLength+65535>>>16),Ze(W.buffer),1}catch(ne){}}function Zc(K){var ne=L0(),Se=2147483648;if(K>Se)return!1;for(var Ye=1;Ye<=4;Ye*=2){var It=ne*(1+.2/Ye);It=Math.min(It,K+100663296);var At=Math.min(Se,fe(Math.max(K,It),65536)),Ve=Yr(At);if(Ve)return!0}return!1}var Oi={mappings:{},buffers:[null,[],[]],printChar:function(K,ne){var Se=Oi.buffers[K];ne===0||ne===10?((K===1?T:M)(te(Se,0)),Se.length=0):Se.push(ne)},varargs:void 0,get:function(){Oi.varargs+=4;var K=$e[Oi.varargs-4>>2];return K},getStr:function(K){var ne=ie(K);return ne},get64:function(K,ne){return K}};function Yc(K){return 0}function W0(K,ne,Se,Ye,It){}function Jc(K,ne,Se,Ye){for(var It=0,At=0;At>2],je=$e[ne+(At*8+4)>>2],Qt=0;Qt>2]=It,0}var wn={a:ns,d:P0,e:Zc,f:Yc,c:W0,b:Jc},B0=Zr(),Qc=s.___wasm_call_ctors=function(){return(Qc=s.___wasm_call_ctors=s.asm.h).apply(null,arguments)},V0=s._init=function(){return(V0=s._init=s.asm.i).apply(null,arguments)},eh=s._register_tensor=function(){return(eh=s._register_tensor=s.asm.j).apply(null,arguments)},U0=s._dispose_data=function(){return(U0=s._dispose_data=s.asm.k).apply(null,arguments)},zi=s._dispose=function(){return(zi=s._dispose=s.asm.l).apply(null,arguments)},Pi=s._Abs=function(){return(Pi=s._Abs=s.asm.n).apply(null,arguments)},H0=s._Add=function(){return(H0=s._Add=s.asm.o).apply(null,arguments)},j0=s._AddN=function(){return(j0=s._AddN=s.asm.p).apply(null,arguments)},G0=s._ArgMax=function(){return(G0=s._ArgMax=s.asm.q).apply(null,arguments)},Ne=s._AvgPool=function(){return(Ne=s._AvgPool=s.asm.r).apply(null,arguments)},q0=s._BatchMatMul=function(){return(q0=s._BatchMatMul=s.asm.s).apply(null,arguments)},X0=s._Ceil=function(){return(X0=s._Ceil=s.asm.t).apply(null,arguments)},K0=s._ClipByValue=function(){return(K0=s._ClipByValue=s.asm.u).apply(null,arguments)},Z0=s._Conv2D=function(){return(Z0=s._Conv2D=s.asm.v).apply(null,arguments)},Y0=s._Conv2DBackpropInput=function(){return(Y0=s._Conv2DBackpropInput=s.asm.w).apply(null,arguments)},rs=s._Cos=function(){return(rs=s._Cos=s.asm.x).apply(null,arguments)},J0=s._CropAndResize=function(){return(J0=s._CropAndResize=s.asm.y).apply(null,arguments)},Q0=s._Cumsum=function(){return(Q0=s._Cumsum=s.asm.z).apply(null,arguments)},e1=s._DepthToSpace=function(){return(e1=s._DepthToSpace=s.asm.A).apply(null,arguments)},t1=s._DepthwiseConv2dNative=function(){return(t1=s._DepthwiseConv2dNative=s.asm.B).apply(null,arguments)},n1=s._Equal=function(){return(n1=s._Equal=s.asm.C).apply(null,arguments)},r1=s._Exp=function(){return(r1=s._Exp=s.asm.D).apply(null,arguments)},a1=s._FlipLeftRight=function(){return(a1=s._FlipLeftRight=s.asm.E).apply(null,arguments)},s1=s._Floor=function(){return(s1=s._Floor=s.asm.F).apply(null,arguments)},i1=s._FloorDiv=function(){return(i1=s._FloorDiv=s.asm.G).apply(null,arguments)},xa=s._FusedBatchNorm=function(){return(xa=s._FusedBatchNorm=s.asm.H).apply(null,arguments)},Kl=s._FusedConv2D=function(){return(Kl=s._FusedConv2D=s.asm.I).apply(null,arguments)},Zl=s._FusedDepthwiseConv2D=function(){return(Zl=s._FusedDepthwiseConv2D=s.asm.J).apply(null,arguments)},o1=s._Gather=function(){return(o1=s._Gather=s.asm.K).apply(null,arguments)},l1=s._GatherNd=function(){return(l1=s._GatherNd=s.asm.L).apply(null,arguments)},u1=s._Greater=function(){return(u1=s._Greater=s.asm.M).apply(null,arguments)},c1=s._GreaterEqual=function(){return(c1=s._GreaterEqual=s.asm.N).apply(null,arguments)},h1=s._LeakyRelu=function(){return(h1=s._LeakyRelu=s.asm.O).apply(null,arguments)},Le=s._Less=function(){return(Le=s._Less=s.asm.P).apply(null,arguments)},d1=s._LessEqual=function(){return(d1=s._LessEqual=s.asm.Q).apply(null,arguments)},p1=s._Log=function(){return(p1=s._Log=s.asm.R).apply(null,arguments)},f1=s._LogicalAnd=function(){return(f1=s._LogicalAnd=s.asm.S).apply(null,arguments)},m1=s._Max=function(){return(m1=s._Max=s.asm.T).apply(null,arguments)},A1=s._MaxPool=function(){return(A1=s._MaxPool=s.asm.U).apply(null,arguments)},y1=s._Maximum=function(){return(y1=s._Maximum=s.asm.V).apply(null,arguments)},Yl=s._Mean=function(){return(Yl=s._Mean=s.asm.W).apply(null,arguments)},th=s._Min=function(){return(th=s._Min=s.asm.X).apply(null,arguments)},nh=s._Minimum=function(){return(nh=s._Minimum=s.asm.Y).apply(null,arguments)},g1=s._Multiply=function(){return(g1=s._Multiply=s.asm.Z).apply(null,arguments)},x1=s._Neg=function(){return(x1=s._Neg=s.asm._).apply(null,arguments)},w1=s._NonMaxSuppressionV3=function(){return(w1=s._NonMaxSuppressionV3=s.asm.$).apply(null,arguments)},_1=s._NonMaxSuppressionV4=function(){return(_1=s._NonMaxSuppressionV4=s.asm.aa).apply(null,arguments)},b1=s._NonMaxSuppressionV5=function(){return(b1=s._NonMaxSuppressionV5=s.asm.ba).apply(null,arguments)},v1=s._NotEqual=function(){return(v1=s._NotEqual=s.asm.ca).apply(null,arguments)},k1=s._OneHot=function(){return(k1=s._OneHot=s.asm.da).apply(null,arguments)},Qe=s._PadV2=function(){return(Qe=s._PadV2=s.asm.ea).apply(null,arguments)},N1=s._Pow=function(){return(N1=s._Pow=s.asm.fa).apply(null,arguments)},I1=s._Prelu=function(){return(I1=s._Prelu=s.asm.ga).apply(null,arguments)},S1=s._Prod=function(){return(S1=s._Prod=s.asm.ha).apply(null,arguments)},Li=s._RealDiv=function(){return(Li=s._RealDiv=s.asm.ia).apply(null,arguments)},rh=s._Relu=function(){return(rh=s._Relu=s.asm.ja).apply(null,arguments)},ah=s._Relu6=function(){return(ah=s._Relu6=s.asm.ka).apply(null,arguments)},sh=s._ResizeBilinear=function(){return(sh=s._ResizeBilinear=s.asm.la).apply(null,arguments)},T1=s._Reverse=function(){return(T1=s._Reverse=s.asm.ma).apply(null,arguments)},C1=s._RotateWithOffset=function(){return(C1=s._RotateWithOffset=s.asm.na).apply(null,arguments)},ih=s._Round=function(){return(ih=s._Round=s.asm.oa).apply(null,arguments)},E1=s._Rsqrt=function(){return(E1=s._Rsqrt=s.asm.pa).apply(null,arguments)},oh=s._ScatterNd=function(){return(oh=s._ScatterNd=s.asm.qa).apply(null,arguments)},wa=s._SelectV2=function(){return(wa=s._SelectV2=s.asm.ra).apply(null,arguments)},R1=s._Sigmoid=function(){return(R1=s._Sigmoid=s.asm.sa).apply(null,arguments)},F1=s._Sin=function(){return(F1=s._Sin=s.asm.ta).apply(null,arguments)},yg=s._Softmax=function(){return(yg=s._Softmax=s.asm.ua).apply(null,arguments)},lh=s._Sqrt=function(){return(lh=s._Sqrt=s.asm.va).apply(null,arguments)},M1=s._Square=function(){return(M1=s._Square=s.asm.wa).apply(null,arguments)},$1=s._SquaredDifference=function(){return($1=s._SquaredDifference=s.asm.xa).apply(null,arguments)},D1=s._Step=function(){return(D1=s._Step=s.asm.ya).apply(null,arguments)},O1=s._StridedSlice=function(){return(O1=s._StridedSlice=s.asm.za).apply(null,arguments)},z1=s._Sub=function(){return(z1=s._Sub=s.asm.Aa).apply(null,arguments)},P1=s._Sum=function(){return(P1=s._Sum=s.asm.Ba).apply(null,arguments)},L1=s._Tanh=function(){return(L1=s._Tanh=s.asm.Ca).apply(null,arguments)},W1=s._Tile=function(){return(W1=s._Tile=s.asm.Da).apply(null,arguments)},B1=s._TopK=function(){return(B1=s._TopK=s.asm.Ea).apply(null,arguments)},V1=s._Transpose=function(){return(V1=s._Transpose=s.asm.Fa).apply(null,arguments)},U1=s.__FusedMatMul=function(){return(U1=s.__FusedMatMul=s.asm.Ga).apply(null,arguments)},H1=s._malloc=function(){return(H1=s._malloc=s.asm.Ha).apply(null,arguments)},j1=s._free=function(){return(j1=s._free=s.asm.Ia).apply(null,arguments)},uh=s.stackSave=function(){return(uh=s.stackSave=s.asm.Ja).apply(null,arguments)},ch=s.stackRestore=function(){return(ch=s.stackRestore=s.asm.Ka).apply(null,arguments)},Jl=s.stackAlloc=function(){return(Jl=s.stackAlloc=s.asm.La).apply(null,arguments)};s.cwrap=Y;var Wi;function G1(K){this.name="ExitStatus",this.message="Program terminated with exit("+K+")",this.status=K}Kr=function K(){Wi||Ql(),Wi||(Kr=K)};function Ql(K){if(K=K||c,Qn>0||(Hn(),Qn>0))return;function ne(){Wi||(Wi=!0,s.calledRun=!0,!U&&(Rn(),un(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),Jt()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),ne()},1)):ne()}if(s.run=Ql,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ql(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),X8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),K8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Z8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),J8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Q8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ek=et((e,t)=>{(function(n,r){var a=(0,eval)("this"),s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=X8(),r=K8(),a=Z8(),s=Y8(),i=J8(),o=Q8(),l=ek();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),tk=et(()=>{}),nk="3.3.0",rk="3.3.0",ak="3.3.0",sk="3.3.0",ik="3.3.0",ok=1e-7,lk=1e-4,xh=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},su=class{refCount(e){return er("refCount")}incRef(e){return er("incRef")}timerAvailable(){return!0}time(e){return er("time")}read(e){return er("read")}readSync(e){return er("readSync")}numDataIds(){return er("numDataIds")}disposeData(e,t){return er("disposeData")}write(e,t,n){return er("write")}move(e,t,n,r,a){return er("move")}memory(){return er("memory")}floatPrecision(){return er("floatPrecision")}epsilon(){return this.floatPrecision()===32?ok:lk}dispose(){return er("dispose")}};function er(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function Mg(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function uk(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r,a,s=0;for(;n>0;)s=Math.random()*n|0,n--,r=e[n],a=t[n],e[n]=e[s],t[n]=t[s],e[s]=r,t[s]=a}function iu(e,t,n){return Math.max(e,Math.min(t,n))}function ck(e){return e%2==0?e:e+1}function hk(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ss(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function is(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||sn(e)&&!n)for(let r=0;r0,n){return new Promise((r,a)=>{let s=0,i=()=>{if(e()){r();return}s++;let o=t(s);if(n!=null&&s>=n){a();return}setTimeout(i,o)};i()})}function xk(e,t){let n=1,r=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let a=e.slice();return a[r]=t/n,a}function tr(e,t){let n=t.length;return e=e==null?t.map((r,a)=>a):[].concat(e),F(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(r=>jt(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function $g(e,t){let n=[],r=[],a=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||a?null:tr(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),r.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),r.push(o))}return{newShape:n,keptDims:r}}function Dg(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Og(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function zg(e,t){for(let n=0;nt+=n.length),t}function va(e){return typeof e=="string"||e instanceof String}function Wg(e){return typeof e=="boolean"}function Bg(e){return typeof e=="number"}function wh(e){return Array.isArray(e)?wh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":Bg(e)?"float32":va(e)?"string":Wg(e)?"bool":"float32"}function ka(e){return!!(e&&e.constructor&&e.call&&e.apply)}function _h(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function Vg(e,t,n){let r=new Array;if(t.length===1){let a=t[0];for(let s=0;so*l);for(let o=0;or*a);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return Vg(0,e,t)}function Q1(e,t){let n=bh(e,t);for(let r=0;rr*a,1);if(t==null||t==="float32")return Ki(e,new Float32Array(n));if(t==="int32")return Ki(e,new Int32Array(n));if(t==="bool")return Ki(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function ef(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function bk(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let a=0;a{let[n,r]=t.split(":");this.urlFlags[n]=Nk(n,r)})}};function kk(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(Ik(t,r[0],r[1]),r.join("="))),t}function Ik(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function Nk(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return fr}var fr=null;function Sk(e){fr=e}var nf;function jg(){if(nf==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");nf=e}return nf}function Tk(){let e=jg();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function rf(e,t){let n=Tk();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var Zi="Abs",Yi="Acos",Ji="Acosh",Na="Add",os="AddN",vh="All",kh="Any",ls="ArgMax",lu="ArgMin",Qi="Asin",eo="Asinh",to="Atan",no="Atanh",ro="Atan2",us="AvgPool",Nh="AvgPoolGrad",uu="AvgPool3D",Ih="AvgPool3DGrad",cs="BatchMatMul",cu="BatchToSpaceND",Sh="Bincount",Gg="BroadcastTo",hs="Cast",ds="Ceil",Ia="ClipByValue",Th="Complex",hu="ComplexAbs",ao="Concat",ps="Conv2D",Ch="Conv2DBackpropFilter",fs="Conv2DBackpropInput",du="Conv3D",Eh="Conv3DBackpropFilterV2",Rh="Conv3DBackpropInputV2",ms="Cos",so="Cosh",As="Cumsum",io="CropAndResize",Fh="DenseBincount",oo="DepthToSpace",ys="DepthwiseConv2dNative",Mh="DepthwiseConv2dNativeBackpropFilter",$h="DepthwiseConv2dNativeBackpropInput",Dh="Diag",pu="Dilation2D",Oh="Dilation2DBackpropInput",zh="Dilation2DBackpropFilter",gs="RealDiv",lo="Elu",Ph="EluGrad",uo="Erf",co="Equal",xs="Exp",ho="ExpandDims",po="Expm1",Lh="FFT",fu="Fill",fo="FlipLeftRight",ws="Floor",_s="FloorDiv",bs="FusedBatchNorm",mo="GatherV2",Ao="GatherNd",yo="Greater",vs="GreaterEqual",ks="Identity",Wh="IFFT",Bh="Imag",go="IsFinite",xo="IsInf",wo="IsNan",Ns="LeakyRelu",_o="Less",bo="LessEqual",Vh="LinSpace",Is="Log",vo="Log1p",ko="LogicalAnd",mu="LogicalNot",Au="LogicalOr",qg="LogSoftmax",yu="LRN",Uh="LRNGrad",Ss="Max",Ts="Maximum",Cs="MaxPool",Hh="MaxPoolGrad",gu="MaxPool3D",jh="MaxPool3DGrad",Gh="MaxPoolWithArgmax",Es="Mean",Rs="Min",Fs="Minimum",xu="MirrorPad",No="Mod",qh="Multinomial",Ms="Multiply",Io="Neg",So="NotEqual",To="NonMaxSuppressionV3",Co="NonMaxSuppressionV4",Eo="NonMaxSuppressionV5",Ro="OnesLike",$s="OneHot",Fo="Pack",Ds="PadV2",Ck="Pool",Os="Pow",zs="Prelu",Mo="Prod",wu="Range",Xh="Real",$o="Reciprocal",Ps="Relu",Do="Reshape",_u="ResizeNearestNeighbor",Kh="ResizeNearestNeighborGrad",Ls="ResizeBilinear",Zh="ResizeBilinearGrad",Ws="Relu6",Bs="Reverse",Vs="Round",Us="Rsqrt",Oo="ScatterNd",zo="Select",Po="Selu",Lo="Slice",Hs="Sin",Wo="Sinh",Bo="Sign",js="Sigmoid",Vo="Softplus",Gs="Sqrt",qs="Sum",bu="SpaceToBatchND",Uo="SplitV",Xs="Softmax",Ks="SquaredDifference",vu="Square",Zs="Sub",Yh="SparseToDense",Ho="StridedSlice",jo="Tan",Ys="Tanh",Sa="Tile",Go="TopK",Jh="Transform",Js="Transpose",Qh="Unique",qo="Unpack",ku="UnsortedSegmentSum",Xo="ZerosLike",Ta="Step",ed="FromPixels",Ko="RotateWithOffset",Qs="_FusedMatMul",ei="FusedConv2D",ti="FusedDepthwiseConv2D",Zo=rf("kernelRegistry",()=>new Map),Nu=rf("gradRegistry",()=>new Map);function td(e,t){let n=af(e,t);return Zo.get(n)}function sf(e){return Nu.get(e)}function Yo(e){let t=Zo.entries(),n=[];for(;;){let{done:r,value:a}=t.next();if(r)break;let[s,i]=a,[o]=s.split("_");o===e&&n.push(i)}return n}function ni(e){let{kernelName:t,backendName:n}=e,r=af(t,n);Zo.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),Zo.set(r,e)}function Xg(e){let{kernelName:t}=e;Nu.has(t)&&J().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),Nu.set(t,e)}function Ek(e,t){let n=af(e,t);if(!Zo.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);Zo.delete(n)}function Rk(e){if(!Nu.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Nu.delete(e)}function Fk(e,t){Yo(e).forEach(n=>{let r=Object.assign({},n,{backendName:t});ni(r)})}function af(e,t){return`${t}_${e}`}var v={};ze(v,{arraysEqual:()=>ta,assert:()=>F,assertNonNegativeIntegerDimensions:()=>ef,assertNonNull:()=>ss,assertShapesMatch:()=>an,bytesFromStringArray:()=>Lg,bytesPerElement:()=>J1,checkConversionForErrors:()=>zg,clamp:()=>iu,computeStrides:()=>Xi,createScalarValue:()=>Mk,createShuffledIndices:()=>yk,decodeString:()=>rd,distSquared:()=>pk,encodeString:()=>Su,fetch:()=>$k,flatten:()=>is,getArrayFromDType:()=>Og,getTypedArrayFromDType:()=>Dg,hasEncodingLoss:()=>wk,indexToLoc:()=>vk,inferDtype:()=>wh,inferFromImplicitShape:()=>xk,isBoolean:()=>Wg,isFunction:()=>ka,isInt:()=>jt,isNumber:()=>Bg,isPromise:()=>tf,isScalarShape:()=>fk,isString:()=>va,isTypedArray:()=>sn,isValidDtype:()=>Pg,locToIndex:()=>bk,makeOnesTypedArray:()=>Q1,makeZerosNestedTypedArray:()=>_k,makeZerosTypedArray:()=>bh,nearestDivisor:()=>_h,nearestLargerEven:()=>ck,now:()=>Iu,parseAxisParam:()=>tr,randUniform:()=>dk,repeatedTry:()=>gk,rightPad:()=>ou,shuffle:()=>Mg,shuffleCombo:()=>uk,sizeFromShape:()=>Dt,sizeToSquarishShape:()=>Ak,squeezeShape:()=>$g,sum:()=>hk,tanh:()=>mk,toNestedArray:()=>Ki,toTypedArray:()=>nd});function Mk(e,t){return t==="string"?Su(e):nd([e],t)}function Dk(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function nd(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=is(e)),J().getBool("DEBUG")&&zg(e,t),Dk(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},s,i=Iu();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(let o of r)o.dataSync();s=Promise.resolve({kernelMs:Iu()-i})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{Ok(u,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),r,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],a,o[2])})})}};function Ok(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${c} %c${u} %c${h} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function Lk(e,t,n){let r={},a={};for(let l=0;lr[m.id]=!0),p=!0,a[u.id]=!0;break}if(p)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let h=0;h=0;a--){let s=t[a],i=[];if(s.outputs.forEach(l=>{let u=e[l.id];u!=null?i.push(u):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let u=n(()=>o[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[l];if(!ta(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let h=e[c.id];e[c.id]=r(h,u),h.dispose()}}}}var Kg=20,Tu=3,of=7;function Vk(e,t,n,r){let a=Xi(t),s=Bk(e,t,n,a),i=t.length,o=ad(e,t,n,a,s),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(u=>" "+u).join(` +var m8=Object.create,mh=Object.defineProperty,A8=Object.getPrototypeOf,y8=Object.prototype.hasOwnProperty,g8=Object.getOwnPropertyNames,x8=Object.getOwnPropertyDescriptor;var Z1=e=>mh(e,"__esModule",{value:!0});var Eg=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),pr=(e,t)=>{for(var n in t)mh(e,n,{get:t[n],enumerable:!0})},w8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of g8(t))!y8.call(e,r)&&r!=="default"&&mh(e,r,{get:()=>t[r],enumerable:!(n=x8(t,r))||n.enumerable});return e},Ah=e=>w8(Z1(mh(e!=null?m8(A8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var Rg=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},ve=(e,t,n)=>(Rg(e,t,"read from private field"),n?n.call(e):t.get(e)),ea=(e,t,n,r)=>(Rg(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var _6=Eg(w6=>{Z1(w6);pr(w6,{MediaPipeFaceMesh:()=>_2,load:()=>Cae});var _2=class{constructor(t,n,r,a){this.facePipeline=new w2(t,n,r),this.config=a}async estimateFaces(t,n){let r=await this.facePipeline.predict(t,n),a=[];for(let s of r||[]){if(s.isDisposedInternal)continue;let i=s.coords?s.coords.arraySync():[],o=i.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),l={};if(i&&i.length>0)for(let h of Object.keys(Gr))l[h]=Gr[h].map(d=>i[d]);let u=s.box?[Math.max(0,s.box.startPoint[0]),Math.max(0,s.box.startPoint[1]),Math.min(t.shape[1],s.box.endPoint[0])-s.box.startPoint[0],Math.min(t.shape[2],s.box.endPoint[1])-s.box.startPoint[1]]:0,c=s.box?[Math.max(0,s.box.startPoint[0]/t.shape[2]),Math.max(0,s.box.startPoint[1]/t.shape[1]),Math.min(t.shape[1],s.box.endPoint[0]-s.box.startPoint[0])/t.shape[2],Math.min(t.shape[2],s.box.endPoint[1]-s.box.startPoint[1])/t.shape[1]]:[];a.push({confidence:s.faceConfidence||s.boxConfidence||0,boxConfidence:s.boxConfidence,faceConfidence:s.faceConfidence,box:u,mesh:i,boxRaw:c,meshRaw:o,annotations:l,image:s.image?s.image.clone():null}),s.coords&&s.coords.dispose(),s.image&&s.image.dispose()}return a}},Mi=[null,null,null];async function Cae(e){Mi=await Promise.all([!Mi[0]&&e.face.enabled?p6(e):null,!Mi[1]&&e.face.mesh.enabled?Ft(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!Mi[2]&&e.face.iris.enabled?Ft(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new _2(Mi[0],Mi[1],Mi[2],e);return e.face.mesh.enabled&&e.debug&&Ce(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&Ce(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}w6.triangulation=Fi});var g0=Eg(H2=>{Z1(H2);pr(H2,{NUM_KEYPOINTS:()=>$ae,connectedPartIndices:()=>Oae,partChannels:()=>Pae,partIds:()=>j2,partNames:()=>Mae,poseChain:()=>zae});var Mae=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],$ae=H2.partNames.length,j2=H2.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),Dae=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Oae=Dae.map(([e,t])=>[j2[e],j2[t]]),zae=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],Pae=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});function Ce(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function Fg(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var yh={};pr(yh,{Abs:()=>Zi,Acos:()=>Yi,Acosh:()=>Ji,AdadeltaOptimizer:()=>Ud,AdagradOptimizer:()=>Hd,AdamOptimizer:()=>jd,AdamaxOptimizer:()=>Gd,Add:()=>Na,AddN:()=>os,All:()=>vh,Any:()=>kh,ArgMax:()=>ls,ArgMin:()=>lu,Asin:()=>Qi,Asinh:()=>eo,Atan:()=>to,Atan2:()=>ro,Atanh:()=>no,AvgPool:()=>us,AvgPool3D:()=>uu,AvgPool3DGrad:()=>Ih,AvgPoolGrad:()=>Nh,BackendWasm:()=>x3,BatchMatMul:()=>cs,BatchToSpaceND:()=>cu,Bincount:()=>Sh,BroadcastTo:()=>qg,Callback:()=>cv,CallbackList:()=>l7,Cast:()=>hs,Ceil:()=>ds,ClipByValue:()=>Ia,Complex:()=>Th,ComplexAbs:()=>hu,Concat:()=>ao,Conv2D:()=>ps,Conv2DBackpropFilter:()=>Ch,Conv2DBackpropInput:()=>fs,Conv3D:()=>du,Conv3DBackpropFilterV2:()=>Eh,Conv3DBackpropInputV2:()=>Rh,Cos:()=>ms,Cosh:()=>so,CropAndResize:()=>io,Cumsum:()=>As,CustomCallback:()=>c7,DataStorage:()=>xh,DenseBincount:()=>Fh,DepthToSpace:()=>oo,DepthwiseConv2dNative:()=>ys,DepthwiseConv2dNativeBackpropFilter:()=>Mh,DepthwiseConv2dNativeBackpropInput:()=>$h,Diag:()=>Dh,Dilation2D:()=>pu,Dilation2DBackpropFilter:()=>zh,Dilation2DBackpropInput:()=>Oh,ENV:()=>fr,EarlyStopping:()=>dv,Elu:()=>lo,EluGrad:()=>Ph,Environment:()=>jg,Equal:()=>co,Erf:()=>uo,Exp:()=>xs,ExpandDims:()=>ho,Expm1:()=>po,FFT:()=>Lh,Fill:()=>fu,FlipLeftRight:()=>fo,Floor:()=>ws,FloorDiv:()=>_s,FromPixels:()=>ed,FusedBatchNorm:()=>bs,FusedConv2D:()=>ei,FusedDepthwiseConv2D:()=>ti,GPGPUContext:()=>up,GatherNd:()=>Ao,GatherV2:()=>mo,GraphModel:()=>Vv,Greater:()=>yo,GreaterEqual:()=>vs,History:()=>u7,IFFT:()=>Wh,Identity:()=>ks,Imag:()=>Bh,InputSpec:()=>Kt,IsFinite:()=>go,IsInf:()=>xo,IsNan:()=>wo,KernelBackend:()=>su,LRN:()=>yu,LRNGrad:()=>Uh,LayerVariable:()=>r7,LayersModel:()=>ha,LeakyRelu:()=>Ns,Less:()=>_o,LessEqual:()=>bo,LinSpace:()=>Vh,Log:()=>Is,Log1p:()=>vo,LogSoftmax:()=>Xg,LogicalAnd:()=>ko,LogicalNot:()=>mu,LogicalOr:()=>Au,MathBackendCPU:()=>Zd,MathBackendWebGL:()=>El,Max:()=>Ss,MaxPool:()=>Cs,MaxPool3D:()=>gu,MaxPool3DGrad:()=>jh,MaxPoolGrad:()=>Hh,MaxPoolWithArgmax:()=>Gh,Maximum:()=>Ts,Mean:()=>Es,Min:()=>Rs,Minimum:()=>Fs,MirrorPad:()=>xu,Mod:()=>No,MomentumOptimizer:()=>qd,Multinomial:()=>qh,Multiply:()=>Ms,Neg:()=>Io,NonMaxSuppressionV3:()=>To,NonMaxSuppressionV4:()=>Co,NonMaxSuppressionV5:()=>Eo,NotEqual:()=>So,OP_SCOPE_SUFFIX:()=>s5,OneHot:()=>$s,OnesLike:()=>Ro,Optimizer:()=>oa,Pack:()=>Fo,PadV2:()=>Ds,Pool:()=>Ek,Pow:()=>Os,Prelu:()=>zs,Prod:()=>Mo,RMSPropOptimizer:()=>Xd,RNN:()=>Hr,Range:()=>wu,Rank:()=>uf,Real:()=>Xh,RealDiv:()=>gs,Reciprocal:()=>$o,Reduction:()=>pn,Relu:()=>Ps,Relu6:()=>Ws,Reshape:()=>Do,ResizeBilinear:()=>Ls,ResizeBilinearGrad:()=>Zh,ResizeNearestNeighbor:()=>_u,ResizeNearestNeighborGrad:()=>Kh,Reverse:()=>Bs,RotateWithOffset:()=>Ko,Round:()=>Vs,Rsqrt:()=>Us,SGDOptimizer:()=>ec,ScatterNd:()=>Oo,Select:()=>zo,Selu:()=>Po,Sequential:()=>Wl,Sigmoid:()=>js,Sign:()=>Bo,Sin:()=>Hs,Sinh:()=>Wo,Slice:()=>Lo,Softmax:()=>Xs,Softplus:()=>Vo,SpaceToBatchND:()=>bu,SparseToDense:()=>Yh,SplitV:()=>Uo,Sqrt:()=>Gs,Square:()=>vu,SquaredDifference:()=>Ks,Step:()=>Ta,StridedSlice:()=>Ho,Sub:()=>Zs,Sum:()=>qs,SymbolicTensor:()=>kr,Tan:()=>jo,Tanh:()=>Ys,Tensor:()=>Ue,TensorBuffer:()=>Ot,Tile:()=>Sa,TopK:()=>Go,Transform:()=>Jh,Transpose:()=>Js,Unique:()=>Qh,Unpack:()=>qo,UnsortedSegmentSum:()=>ku,Variable:()=>Ru,ZerosLike:()=>Xo,_FusedMatMul:()=>Qs,abs:()=>zt,acos:()=>Df,acosh:()=>Of,add:()=>se,addN:()=>Ma,all:()=>dd,any:()=>Ou,argMax:()=>zu,argMin:()=>zf,asin:()=>Pf,asinh:()=>Lf,atan:()=>Wf,atan2:()=>Bf,atanh:()=>Vf,avgPool:()=>Lu,avgPool3d:()=>jf,backend:()=>W5,backend_util:()=>R,basicLSTMCell:()=>lI,batchNorm:()=>li,batchNorm2d:()=>H5,batchNorm3d:()=>j5,batchNorm4d:()=>G5,batchToSpaceND:()=>Wu,bincount:()=>q5,booleanMaskAsync:()=>pC,broadcastTo:()=>Bu,browser:()=>rl,buffer:()=>We,callbacks:()=>Mne,cast:()=>me,ceil:()=>Gf,clipByValue:()=>vn,clone:()=>Rr,complex:()=>Ca,concat:()=>st,concat1d:()=>X5,concat2d:()=>ll,concat3d:()=>K5,concat4d:()=>Z5,constraints:()=>E3,conv1d:()=>fd,conv2d:()=>ra,conv2dTranspose:()=>md,conv3d:()=>Xf,conv3dTranspose:()=>EI,copyRegisteredKernels:()=>Mk,cos:()=>Vu,cosh:()=>Ad,cosineWindow:()=>_m,cumsum:()=>yd,customGrad:()=>$r,data:()=>Uv,denseBincount:()=>J5,deprecationWarn:()=>Mf,depthToSpace:()=>Kf,depthwiseConv2d:()=>ul,deregisterOp:()=>Dne,device_util:()=>Mu,diag:()=>PI,dilation2d:()=>Zf,disableDeprecationWarnings:()=>bN,dispose:()=>Ee,disposeVariables:()=>vN,div:()=>ge,divNoNan:()=>Yf,dot:()=>Q5,dropout:()=>wx,elu:()=>cl,enableDebugMode:()=>_N,enableProdMode:()=>wN,enclosingPowerOfTwo:()=>_x,engine:()=>Fr,env:()=>J,equal:()=>Da,erf:()=>Jf,exp:()=>qn,expandDims:()=>hn,expm1:()=>Qf,eye:()=>em,fft:()=>Ju,fill:()=>Uu,findBackend:()=>$f,findBackendFactory:()=>CN,floor:()=>hl,floorDiv:()=>hd,forceHalfFloat:()=>F_,fused:()=>La,gather:()=>ui,gatherND:()=>xx,gather_util:()=>If,getBackend:()=>SN,getGradient:()=>sf,getKernel:()=>td,getKernelsForBackend:()=>Yo,gpgpu_util:()=>n_,grad:()=>pS,grads:()=>fS,greater:()=>rr,greaterEqual:()=>za,ifft:()=>Al,imag:()=>gd,image:()=>Je,inTopKAsync:()=>kC,initializers:()=>z3,input:()=>Z3,io:()=>bn,irfft:()=>$d,isFinite:()=>ex,isInf:()=>tx,isNaN:()=>nx,keep:()=>Gt,kernel_impls:()=>Pr,layers:()=>K3,leakyRelu:()=>Hu,less:()=>xd,lessEqual:()=>ci,linalg:()=>Mx,linspace:()=>rx,loadGraphModel:()=>Ft,loadLayersModel:()=>Qte,localResponseNormalization:()=>tm,log:()=>Mn,log1p:()=>wd,logSigmoid:()=>sx,logSoftmax:()=>bd,logSumExp:()=>am,logicalAnd:()=>ar,logicalNot:()=>ju,logicalOr:()=>vd,logicalXor:()=>ux,losses:()=>BE,matMul:()=>Ge,math:()=>_5,max:()=>Xn,maxPool:()=>Gu,maxPool3d:()=>sm,maxPoolWithArgmax:()=>cx,maximum:()=>Dr,mean:()=>kt,memory:()=>cd,metrics:()=>ov,min:()=>pl,minimum:()=>fl,mirrorPad:()=>im,mod:()=>om,model:()=>Yte,models:()=>lv,moments:()=>kd,movingAverage:()=>AC,mul:()=>P,multiRNNCell:()=>US,multinomial:()=>hx,neg:()=>vt,nextFrame:()=>Kd,norm:()=>Pd,notEqual:()=>di,oneHot:()=>nl,ones:()=>Or,onesLike:()=>$n,op:()=>O,outerProduct:()=>XS,pad:()=>aa,pad1d:()=>YS,pad2d:()=>QS,pad3d:()=>tT,pad4d:()=>rT,pool:()=>dx,pow:()=>sa,prelu:()=>Xu,print:()=>m5,prod:()=>Nd,profile:()=>gr,rand:()=>dT,randomGamma:()=>AT,randomNormal:()=>px,randomUniform:()=>ml,range:()=>Id,ready:()=>IN,real:()=>Ku,reciprocal:()=>cm,registerBackend:()=>sl,registerCallbackConstructor:()=>ene,registerGradient:()=>Kg,registerKernel:()=>ni,registerOp:()=>$ne,regularizers:()=>uv,relu:()=>zr,relu6:()=>Sd,removeBackend:()=>TN,reshape:()=>G,reverse:()=>Dn,reverse1d:()=>NT,reverse2d:()=>ST,reverse3d:()=>CT,reverse4d:()=>RT,rfft:()=>Qu,round:()=>hm,rsqrt:()=>Td,scalar:()=>be,scatterND:()=>gx,scatter_util:()=>Sf,selu:()=>Cd,separableConv2d:()=>dm,sequential:()=>Jte,serialization:()=>re,setBackend:()=>NN,setPlatform:()=>EN,setWasmPath:()=>XZ,setWasmPaths:()=>KZ,setWebGLContext:()=>sp,setdiff1dAsync:()=>fx,shared:()=>Nm,sigmoid:()=>Fn,sign:()=>pm,signal:()=>WE,sin:()=>Ed,sinh:()=>Rd,slice:()=>Re,slice1d:()=>Fd,slice2d:()=>fm,slice3d:()=>Md,slice4d:()=>Zu,slice_util:()=>cn,softmax:()=>Yu,softplus:()=>dl,spaceToBatchND:()=>qu,sparseToDense:()=>wm,spectral:()=>LE,split:()=>Lt,sqrt:()=>en,square:()=>lt,squaredDifference:()=>Dd,squeeze:()=>Pa,stack:()=>dn,step:()=>yl,stridedSlice:()=>mm,sub:()=>ye,sum:()=>Te,sumOutType:()=>sd,tan:()=>Am,tanh:()=>ol,tensor:()=>yr,tensor1d:()=>on,tensor2d:()=>Nn,tensor3d:()=>ld,tensor4d:()=>rC,tensor5d:()=>aC,tensor6d:()=>sC,tensor_util:()=>mr,test_util:()=>z5,tidy:()=>B,tile:()=>Oa,time:()=>kN,topk:()=>ym,train:()=>fi,transpose:()=>at,truncatedNormal:()=>Od,unique:()=>zd,unregisterGradient:()=>Fk,unregisterKernel:()=>Rk,unsortedSegmentSum:()=>gm,unstack:()=>sr,upcastType:()=>nr,util:()=>v,valueAndGrad:()=>mS,valueAndGrads:()=>AS,variable:()=>mx,variableGrads:()=>ax,version:()=>wae,version_converter:()=>$re,version_core:()=>xN,version_cpu:()=>uw,version_layers:()=>HA,version_wasm:()=>_3,version_webgl:()=>R_,webgl:()=>dL,webgl_util:()=>Ew,where:()=>kn,whereAsync:()=>xm,zeros:()=>Et,zerosLike:()=>He});var _8=Object.create,gh=Object.defineProperty,b8=Object.getPrototypeOf,v8=Object.prototype.hasOwnProperty,k8=Object.getOwnPropertyNames,N8=Object.getOwnPropertyDescriptor,I8=e=>gh(e,"__esModule",{value:!0}),et=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ze=(e,t)=>{for(var n in t)gh(e,n,{get:t[n],enumerable:!0})},S8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of k8(t))!v8.call(e,r)&&r!=="default"&&gh(e,r,{get:()=>t[r],enumerable:!(n=N8(t,r))||n.enumerable});return e},qi=e=>S8(I8(gh(e!=null?_8(b8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),T8=et(()=>{}),C8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),E8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),R8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),F8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),M8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),$8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y1=et(()=>{}),D8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=C8(),r=E8(),a=R8(),s=F8(),i=M8(),o=$8(),l=D8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),z8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),P8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),L8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),W8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),B8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),V8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),U8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=z8(),r=P8(),a=L8(),s=W8(),i=B8(),o=V8(),l=U8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),au=et(()=>{}),j8=et(()=>{}),G8=et(()=>{}),q8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};function s(){return Q.buffer!=Be&&Jt(Q.buffer),yn}function i(){return Q.buffer!=Be&&Jt(Q.buffer),_t}function o(){return Q.buffer!=Be&&Jt(Q.buffer),gn}function l(){return Q.buffer!=Be&&Jt(Q.buffer),Hn}function u(){return Q.buffer!=Be&&Jt(Q.buffer),un}var c=typeof a!="undefined"?a:{},h,d;c.ready=new Promise(function(N,C){h=N,d=C});var p={},f;for(f in c)c.hasOwnProperty(f)&&(p[f]=c[f]);var m=[],A="./this.program",y=function(N,C){throw C},g=!1,_=!1,b=!1,w=!1;g=typeof window=="object",_=typeof importScripts=="function",b=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!g&&!b&&!_;var x=c.ENVIRONMENT_IS_PTHREAD||!1;x&&(Be=c.buffer);var I="";function S(N){return c.locateFile?c.locateFile(N,I):I+N}var T,M,D,z,W,U;if(b){_?I=au().dirname(I)+"/":I=__dirname+"/",T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C},process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(N){if(!(N instanceof ru))throw N}),process.on("unhandledRejection",Yr),y=function(N){process.exit(N)},c.inspect=function(){return"[Emscripten Module object]"};var H;try{H=j8()}catch(N){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),N}global.Worker=H.Worker}else w?(typeof read!="undefined"&&(T=function(N){return read(N)}),D=function(N){var C;return typeof readbuffer=="function"?new Uint8Array(readbuffer(N)):(C=read(N,"binary"),pe(typeof C=="object"),C)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(y=function(N){quit(N)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(g||_)&&(_?I=self.location.href:typeof document!="undefined"&&document.currentScript&&(I=document.currentScript.src),typeof r!="undefined"&&r&&(I=r),I.indexOf("blob:")!==0?I=I.substr(0,I.lastIndexOf("/")+1):I="",b?(T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C}):(T=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.send(null),C.responseText},_&&(D=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),M=function(N,C,L){var q=new XMLHttpRequest;q.open("GET",N,!0),q.responseType="arraybuffer",q.onload=function(){if(q.status==200||q.status==0&&q.response){C(q.response);return}L()},q.onerror=L,q.send(null)}),z=function(N){document.title=N});b&&typeof performance=="undefined"&&(global.performance=G8().performance);var X=c.print||console.log.bind(console),j=c.printErr||console.warn.bind(console);for(f in p)p.hasOwnProperty(f)&&(c[f]=p[f]);p=null,c.arguments&&(m=c.arguments),c.thisProgram&&(A=c.thisProgram),c.quit&&(y=c.quit);var ee=Atomics.load,Y=Atomics.store,ae=Atomics.compareExchange,te;c.wasmBinary&&(te=c.wasmBinary);var ie=c.noExitRuntime||!0;typeof WebAssembly!="object"&&Yr("no native wasm support detected");var Q,he,oe=!1,fe;function pe(N,C){N||Yr("Assertion failed: "+C)}function ke(N){var C=c["_"+N];return pe(C,"Cannot call unknown function "+N+", make sure it is exported"),C}function Ie(N,C,L,q,de){var le={string:function(_n){var Gi=0;if(_n!=null&&_n!==0){var Cg=(_n.length<<2)+1;Gi=Ui(Cg),nt(_n,Gi,Cg)}return Gi},array:function(_n){var Gi=Ui(_n.length);return Ze(_n,Gi),Gi}};function ue(_n){return C==="string"?$e(_n):C==="boolean"?Boolean(_n):_n}var we=ke(N),rt=[],Ht=0;if(q)for(var $t=0;$t=q);){var le=N[C++];if(!le)return de;if(!(le&128)){de+=String.fromCharCode(le);continue}var ue=N[C++]&63;if((le&224)==192){de+=String.fromCharCode((le&31)<<6|ue);continue}var we=N[C++]&63;if((le&240)==224?le=(le&15)<<12|ue<<6|we:le=(le&7)<<18|ue<<12|we<<6|N[C++]&63,le<65536)de+=String.fromCharCode(le);else{var rt=le-65536;de+=String.fromCharCode(55296|rt>>10,56320|rt&1023)}}return de}function $e(N,C){return N?Oe(i(),N,C):""}function tt(N,C,L,q){if(!(q>0))return 0;for(var de=L,le=L+q-1,ue=0;ue=55296&&we<=57343){var rt=N.charCodeAt(++ue);we=65536+((we&1023)<<10)|rt&1023}if(we<=127){if(L>=le)break;C[L++]=we}else if(we<=2047){if(L+1>=le)break;C[L++]=192|we>>6,C[L++]=128|we&63}else if(we<=65535){if(L+2>=le)break;C[L++]=224|we>>12,C[L++]=128|we>>6&63,C[L++]=128|we&63}else{if(L+3>=le)break;C[L++]=240|we>>18,C[L++]=128|we>>12&63,C[L++]=128|we>>6&63,C[L++]=128|we&63}}return C[L]=0,L-de}function nt(N,C,L){return tt(N,i(),C,L)}function ot(N){for(var C=0,L=0;L=55296&&q<=57343&&(q=65536+((q&1023)<<10)|N.charCodeAt(++L)&1023),q<=127?++C:q<=2047?C+=2:q<=65535?C+=3:C+=4}return C}function Ze(N,C){s().set(N,C)}function pt(N,C){return N%C>0&&(N+=C-N%C),N}var Be,yn,_t,Un,Yt,gn,Hn,Rn,un;function Jt(N){Be=N,c.HEAP8=yn=new Int8Array(N),c.HEAP16=Un=new Int16Array(N),c.HEAP32=gn=new Int32Array(N),c.HEAPU8=_t=new Uint8Array(N),c.HEAPU16=Yt=new Uint16Array(N),c.HEAPU32=Hn=new Uint32Array(N),c.HEAPF32=Rn=new Float32Array(N),c.HEAPF64=un=new Float64Array(N)}var Tr=c.INITIAL_MEMORY||16777216;if(x)Q=c.wasmMemory,Be=c.buffer;else if(c.wasmMemory)Q=c.wasmMemory;else if(Q=new WebAssembly.Memory({initial:Tr/65536,maximum:2147483648/65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),b&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(Be=Q.buffer),Tr=Be.byteLength,Jt(Be);var Jn,Qn=[],Aa=[],Kr=[],ya=[],Di=[],dr=!1,Gc=!1;x||Aa.push({func:function(){lh()}}),x&&(dr=!0);function D0(){if(!x){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Kc(c.preRun.shift());zi(Qn)}}function qc(){dr=!0,zi(Aa)}function O0(){x||zi(Kr)}function Xc(){x||(Gc=!0)}function xn(){if(!x){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)z0(c.postRun.shift());zi(Di)}}function Kc(N){Qn.unshift(N)}function z0(N){Di.unshift(N)}var Zr=0,ga=null,ns=null;function P0(N){pe(!x,"addRunDependency cannot be used in a pthread worker"),Zr++,c.monitorRunDependencies&&c.monitorRunDependencies(Zr)}function L0(N){if(Zr--,c.monitorRunDependencies&&c.monitorRunDependencies(Zr),Zr==0&&(ga!==null&&(clearInterval(ga),ga=null),ns)){var C=ns;ns=null,C()}}c.preloadedImages={},c.preloadedAudios={};function Yr(N){c.onAbort&&c.onAbort(N),x&&console.error("Pthread aborting at "+new Error().stack),N+="",j(N),oe=!0,fe=1,N="abort("+N+"). Build with -s ASSERTIONS=1 for more info.";var C=new WebAssembly.RuntimeError(N);throw d(C),C}function Zc(N,C){return String.prototype.startsWith?N.startsWith(C):N.indexOf(C)===0}var Oi="data:application/octet-stream;base64,";function Yc(N){return Zc(N,Oi)}var W0="file://";function Jc(N){return Zc(N,W0)}var wn="tfjs-backend-wasm-threaded-simd.wasm";Yc(wn)||(wn=S(wn));function B0(N){try{if(N==wn&&te)return new Uint8Array(te);if(D)return D(N);throw"both async and sync fetching of the wasm failed"}catch(C){Yr(C)}}function Qc(){if(!te&&(g||_)){if(typeof fetch=="function"&&!Jc(wn))return fetch(wn,{credentials:"same-origin"}).then(function(N){if(!N.ok)throw"failed to load wasm binary file at '"+wn+"'";return N.arrayBuffer()}).catch(function(){return B0(wn)});if(M)return new Promise(function(N,C){M(wn,function(L){N(new Uint8Array(L))},C)})}return Promise.resolve().then(function(){return B0(wn)})}function V0(){var N={a:F1};function C(ue,we){var rt=ue.exports;if(c.asm=rt,Jn=c.asm.F,he=we,!x){var Ht=Ne.unusedWorkers.length;Ne.unusedWorkers.forEach(function($t){Ne.loadWasmModuleToWorker($t,function(){--Ht||L0("wasm-instantiate")})})}}x||P0("wasm-instantiate");function L(ue){C(ue.instance,ue.module)}function q(ue){return Qc().then(function(we){return WebAssembly.instantiate(we,N)}).then(ue,function(we){j("failed to asynchronously prepare wasm: "+we),Yr(we)})}function de(){return!te&&typeof WebAssembly.instantiateStreaming=="function"&&!Yc(wn)&&!Jc(wn)&&typeof fetch=="function"?fetch(wn,{credentials:"same-origin"}).then(function(ue){var we=WebAssembly.instantiateStreaming(ue,N);return we.then(L,function(rt){return j("wasm streaming compile failed: "+rt),j("falling back to ArrayBuffer instantiation"),q(L)})}):q(L)}if(c.instantiateWasm)try{var le=c.instantiateWasm(N,C);return le}catch(ue){return j("Module.instantiateWasm callback failed with error: "+ue),!1}return de().catch(d),{}}var eh={8991:function(N,C){setTimeout(function(){vg(N,C)},0)}};function U0(){Ne.initRuntime()}function zi(N){for(;N.length>0;){var C=N.shift();if(typeof C=="function"){C(c);continue}var L=C.func;typeof L=="number"?C.arg===void 0?Jn.get(L)():Jn.get(L)(C.arg):L(C.arg===void 0?null:C.arg)}}function Pi(N,C){if(N<=0||N>s().length||N&!0||C<0)return-28;if(C==0)return 0;C>=2147483647&&(C=Infinity);var L=Atomics.load(o(),Hi>>2),q=0;if(L==N){var de=Atomics.compareExchange(o(),Hi>>2,L,0);if(de==L&&(--C,q=1,C<=0))return 1}var le=Atomics.notify(o(),N>>2,C);if(le>=0)return le+q;throw"Atomics.notify returned an unexpected value "+le}c._emscripten_futex_wake=Pi;function H0(N){if(x)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in killThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];C.worker.terminate(),Ne.freeThreadData(C),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(C.worker),1),C.worker.pthread=void 0}function j0(N){if(x)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cancelThread!";var C=Ne.pthreads[N];C.worker.postMessage({cmd:"cancel"})}function G0(N){if(x)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cleanupThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];if(C){var L=C.worker;Ne.returnWorkerToPool(L)}}var Ne={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var N=8,C=0;C>2]=N;var L=N+152;o()[L>>2]=L;for(var q=as(512),C=0;C<128;++C)l()[q/4+C]=0;Atomics.store(l(),N+100>>2,q),Atomics.store(l(),N+40>>2,N),ph(N,!_,1),bg(N)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Ne.threadExitHandlers.length>0;)Ne.threadExitHandlers.pop()();x&&Bi()&&_g()},threadExit:function(N){var C=Bi();C&&(Atomics.store(l(),C+4>>2,N),Atomics.store(l(),C+0>>2,1),Atomics.store(l(),C+56>>2,1),Atomics.store(l(),C+60>>2,0),Ne.runExitHandlers(),Pi(C+0,2147483647),ph(0,0,0),x&&postMessage({cmd:"exit"}))},threadCancel:function(){Ne.runExitHandlers();var N=Bi();Atomics.store(l(),N+4>>2,-1),Atomics.store(l(),N+0>>2,1),Pi(N+0,2147483647),ph(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var N in Ne.pthreads){var C=Ne.pthreads[N];C&&C.worker&&Ne.returnWorkerToPool(C.worker)}Ne.pthreads={};for(var L=0;L>2];o()[N.threadInfoStruct+100>>2]=0,tu(C),tu(N.threadInfoStruct)}N.threadInfoStruct=0,N.allocatedOwnStack&&N.stackBase&&tu(N.stackBase),N.stackBase=0,N.worker&&(N.worker.pthread=null)}},returnWorkerToPool:function(N){Ne.runWithoutMainThreadQueuedCalls(function(){delete Ne.pthreads[N.pthread.threadInfoStruct],Ne.unusedWorkers.push(N),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(N),1),Ne.freeThreadData(N.pthread),N.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(N){o()[Tg>>2]=0;try{N()}finally{o()[Tg>>2]=1}},receiveObjectTransfer:function(N){},loadWasmModuleToWorker:function(N,C){N.onmessage=function(L){var q=L.data,de=q.cmd;if(N.pthread&&(Ne.currentProxiedOperationCallerThread=N.pthread.threadInfoStruct),q.targetThread&&q.targetThread!=Bi()){var le=Ne.pthreads[q.targetThread];le?le.worker.postMessage(L.data,q.transferList):console.error('Internal error! Worker sent a message "'+de+'" to target pthread '+q.targetThread+", but that thread no longer exists!"),Ne.currentProxiedOperationCallerThread=void 0;return}if(de==="processQueuedMainThreadWork")q1();else if(de==="spawnThread")ih(L.data);else if(de==="cleanupThread")G0(q.thread);else if(de==="killThread")H0(q.thread);else if(de==="cancelThread")j0(q.thread);else if(de==="loaded")N.loaded=!0,C&&C(N),N.runPthread&&(N.runPthread(),delete N.runPthread);else if(de==="print")X("Thread "+q.threadId+": "+q.text);else if(de==="printErr")j("Thread "+q.threadId+": "+q.text);else if(de==="alert")alert("Thread "+q.threadId+": "+q.text);else if(de==="exit"){var ue=N.pthread&&Atomics.load(l(),N.pthread.threadInfoStruct+64>>2);ue&&Ne.returnWorkerToPool(N)}else if(de==="exitProcess")try{f8(q.returnCode)}catch(we){if(we instanceof ru)return;throw we}else de==="cancelDone"?Ne.returnWorkerToPool(N):de==="objectTransfer"?Ne.receiveObjectTransfer(L.data):L.data.target==="setimmediate"?N.postMessage(L.data):j("worker sent an unknown command "+de);Ne.currentProxiedOperationCallerThread=void 0},N.onerror=function(L){j("pthread sent an error! "+L.filename+":"+L.lineno+": "+L.message)},b&&(N.on("message",function(L){N.onmessage({data:L})}),N.on("error",function(L){N.onerror(L)}),N.on("exit",function(L){})),N.postMessage({cmd:"load",urlOrBlob:c.mainScriptUrlOrBlob||r,wasmMemory:Q,wasmModule:he})},allocateUnusedWorker:function(){var N=S("tfjs-backend-wasm-threaded-simd.worker.js");Ne.unusedWorkers.push(new Worker(N))},getNewWorker:function(){return Ne.unusedWorkers.length==0&&(Ne.allocateUnusedWorker(),Ne.loadWasmModuleToWorker(Ne.unusedWorkers[0])),Ne.unusedWorkers.length>0?Ne.unusedWorkers.pop():null},busySpinWait:function(N){for(var C=performance.now()+N;performance.now()>2]=N,N}function Q0(N,C){if(x)return xa(1,1,N,C)}function e1(N,C){if(N==C)postMessage({cmd:"processQueuedMainThreadWork"});else if(x)postMessage({targetThread:N,cmd:"processThreadQueue"});else{var L=Ne.pthreads[N],q=L&&L.worker;if(!q)return;q.postMessage({cmd:"processThreadQueue"})}return 1}function t1(){Yr()}function n1(N,C,L){var q=o1(C,L);return eh[N].apply(null,q)}function r1(N,C){}function a1(N,C,L){if(N<=0||N>s().length||N&!0)return-28;if(g){if(Atomics.load(o(),N>>2)!=C)return-6;for(var q=performance.now(),de=q+L,le=Atomics.exchange(o(),Hi>>2,N);;){if(q=performance.now(),q>de)return le=Atomics.exchange(o(),Hi>>2,0),-73;if(le=Atomics.exchange(o(),Hi>>2,0),le==0)break;if(q1(),Atomics.load(o(),N>>2)!=C)return-6;le=Atomics.exchange(o(),Hi>>2,N)}return 0}else{var ue=Atomics.wait(o(),N>>2,C,L);if(ue==="timed-out")return-73;if(ue==="not-equal")return-6;if(ue==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ue}}function s1(N,C,L){i().copyWithin(N,C,C+L)}function i1(){return b?require("os").cpus().length:navigator.hardwareConcurrency}function xa(N,C){for(var L=arguments.length-2,q=nu(),de=L,le=Ui(de*8),ue=le>>3,we=0;we>=2;L=i()[N++];){var q=L<105;q&&C&1&&C++,Zl.push(q?u()[C++>>1]:o()[C]),++C}return Zl}function l1(N,C,L){Kl.length=C;for(var q=L>>3,de=0;de>>16),Jt(Q.buffer),1}catch(C){}}function h1(N){var C=u1();if(N<=C)return!1;var L=2147483648;if(N>L)return!1;for(var q=1;q<=4;q*=2){var de=C*(1+.2/q);de=Math.min(de,N+100663296);var le=Math.min(L,pt(Math.max(N,de),65536)),ue=c1(le);if(ue)return!0}return!1}var Le={inEventHandler:0,removeAllEventListeners:function(){for(var N=Le.eventHandlers.length-1;N>=0;--N)Le._removeHandler(N);Le.eventHandlers=[],Le.deferredCalls=[]},registerRemoveEventListeners:function(){Le.removeEventListenersRegistered||(ya.push(Le.removeAllEventListeners),Le.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(N,C,L){function q(ue,we){if(ue.length!=we.length)return!1;for(var rt in ue)if(ue[rt]!=we[rt])return!1;return!0}for(var de in Le.deferredCalls){var le=Le.deferredCalls[de];if(le.targetFunction==N&&q(le.argsList,L))return}Le.deferredCalls.push({targetFunction:N,precedence:C,argsList:L}),Le.deferredCalls.sort(function(ue,we){return ue.precedence>2]=L,o()[ue+4>>2]=q,o()[ue+8>>2]=de,X1(0,N,637534208,C,q,ue),Vi(le)},getTargetThreadForEventCallback:function(N){switch(N){case 1:return 0;case 2:return Ne.currentProxiedOperationCallerThread;default:return N}},getNodeNameForTarget:function(N){return N?N==window?"#window":N==screen?"#screen":N&&N.nodeName?N.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function d1(N){var C=ot(N)+1,L=as(C);return nt(N,L,C),L}function p1(N,C,L,q){var de=nu(),le=Ui(12),ue=0;C&&(ue=d1(C)),o()[le>>2]=ue,o()[le+4>>2]=L,o()[le+8>>2]=q,X1(0,N,657457152,0,ue,le),Vi(de)}function f1(N,C,L,q){C=C?$e(C):"",p1(N,C,L,q)}function m1(N){return N>2?$e(N):N}var A1=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function y1(N){N=m1(N);var C=A1[N]||(typeof document!="undefined"?document.querySelector(N):void 0);return C}function Yl(N){return y1(N)}function th(N,C,L){var q=Yl(N);if(!q)return-4;if(q.canvasSharedPtr&&(o()[q.canvasSharedPtr>>2]=C,o()[q.canvasSharedPtr+4>>2]=L),q.offscreenCanvas||!q.controlTransferredOffscreen){q.offscreenCanvas&&(q=q.offscreenCanvas);var de=!1;if(q.GLctxObject&&q.GLctxObject.GLctx){var le=q.GLctxObject.GLctx.getParameter(2978);de=le[0]===0&&le[1]===0&&le[2]===q.width&&le[3]===q.height}q.width=C,q.height=L,de&&q.GLctxObject.GLctx.viewport(0,0,C,L)}else if(q.canvasSharedPtr){var ue=o()[q.canvasSharedPtr+8>>2];return f1(ue,N,C,L),1}else return-4;return 0}function nh(N,C,L){return x?xa(2,1,N,C,L):th(N,C,L)}function g1(N,C,L){var q=Yl(N);return q?th(N,C,L):nh(N,C,L)}function x1(N){}function w1(N,C){}function _1(N){var C=N.getExtension("ANGLE_instanced_arrays");if(C)return N.vertexAttribDivisor=function(L,q){C.vertexAttribDivisorANGLE(L,q)},N.drawArraysInstanced=function(L,q,de,le){C.drawArraysInstancedANGLE(L,q,de,le)},N.drawElementsInstanced=function(L,q,de,le,ue){C.drawElementsInstancedANGLE(L,q,de,le,ue)},1}function b1(N){var C=N.getExtension("OES_vertex_array_object");if(C)return N.createVertexArray=function(){return C.createVertexArrayOES()},N.deleteVertexArray=function(L){C.deleteVertexArrayOES(L)},N.bindVertexArray=function(L){C.bindVertexArrayOES(L)},N.isVertexArray=function(L){return C.isVertexArrayOES(L)},1}function v1(N){var C=N.getExtension("WEBGL_draw_buffers");if(C)return N.drawBuffers=function(L,q){C.drawBuffersWEBGL(L,q)},1}function k1(N){return!!(N.multiDrawWebgl=N.getExtension("WEBGL_multi_draw"))}var Qe={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(N){Qe.lastError||(Qe.lastError=N)},getNewId:function(N){for(var C=Qe.counter++,L=N.length;L>2]:-1;de+=$e(o()[L+le*4>>2],ue<0?void 0:ue)}return de},createContext:function(N,C){var L=N.getContext("webgl",C);if(!L)return 0;var q=Qe.registerContext(L,C);return q},registerContext:function(N,C){var L=as(8);o()[L+4>>2]=Bi();var q={handle:L,attributes:C,version:C.majorVersion,GLctx:N};return N.canvas&&(N.canvas.GLctxObject=q),Qe.contexts[L]=q,(typeof C.enableExtensionsByDefault=="undefined"||C.enableExtensionsByDefault)&&Qe.initExtensions(q),L},makeContextCurrent:function(N){return Qe.currentContext=Qe.contexts[N],c.ctx=wa=Qe.currentContext&&Qe.currentContext.GLctx,!(N&&!wa)},getContext:function(N){return Qe.contexts[N]},deleteContext:function(N){Qe.currentContext===Qe.contexts[N]&&(Qe.currentContext=null),typeof Le=="object"&&Le.removeAllHandlersOnTarget(Qe.contexts[N].GLctx.canvas),Qe.contexts[N]&&Qe.contexts[N].GLctx.canvas&&(Qe.contexts[N].GLctx.canvas.GLctxObject=void 0),tu(Qe.contexts[N].handle),Qe.contexts[N]=null},initExtensions:function(N){if(N||(N=Qe.currentContext),!N.initExtensionsDone){N.initExtensionsDone=!0;var C=N.GLctx;_1(C),b1(C),v1(C),C.disjointTimerQueryExt=C.getExtension("EXT_disjoint_timer_query"),k1(C);var L=C.getSupportedExtensions()||[];L.forEach(function(q){q.indexOf("lose_context")<0&&q.indexOf("debug")<0&&C.getExtension(q)})}},populateUniformTable:function(N){for(var C=Qe.programs[N],L=Qe.programInfos[N]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},q=L.uniforms,de=wa.getProgramParameter(C,35718),le=0;le>2,q=o()[L+(24>>2)],de={alpha:!!o()[L+(0>>2)],depth:!!o()[L+(4>>2)],stencil:!!o()[L+(8>>2)],antialias:!!o()[L+(12>>2)],premultipliedAlpha:!!o()[L+(16>>2)],preserveDrawingBuffer:!!o()[L+(20>>2)],powerPreference:N1[q],failIfMajorPerformanceCaveat:!!o()[L+(28>>2)],majorVersion:o()[L+(32>>2)],minorVersion:o()[L+(36>>2)],enableExtensionsByDefault:o()[L+(40>>2)],explicitSwapControl:o()[L+(44>>2)],proxyContextToMainThread:o()[L+(48>>2)],renderViaOffscreenBackBuffer:o()[L+(52>>2)]},le=Yl(N);if(!le||de.explicitSwapControl)return 0;var ue=Qe.createContext(le,de);return ue}function S1(N,C){return I1(N,C)}var Li={mappings:{},buffers:[null,[],[]],printChar:function(N,C){var L=Li.buffers[N];C===0||C===10?((N===1?X:j)(Oe(L,0)),L.length=0):L.push(C)},varargs:void 0,get:function(){Li.varargs+=4;var N=o()[Li.varargs-4>>2];return N},getStr:function(N){var C=$e(N);return C},get64:function(N,C){return N}};function rh(N){return x?xa(3,1,N):0}function ah(N,C,L,q,de){if(x)return xa(4,1,N,C,L,q,de)}function sh(N,C,L,q){if(x)return xa(5,1,N,C,L,q);for(var de=0,le=0;le>2],we=o()[C+(le*8+4)>>2],rt=0;rt>2]=de,0}function T1(N){var C=Ne.threadExitHandlers.pop();N&&C()}function C1(N,C){Ne.threadExitHandlers.push(function(){Jn.get(N)(C)})}function ih(N){if(x)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var C=Ne.getNewWorker();if(C.pthread!==void 0)throw"Internal error!";if(!N.pthread_ptr)throw"Internal error, no pthread ptr!";Ne.runningWorkers.push(C);for(var L=as(128*4),q=0;q<128;++q)o()[L+q*4>>2]=0;var de=N.stackBase+N.stackSize,le=Ne.pthreads[N.pthread_ptr]={worker:C,stackBase:N.stackBase,stackSize:N.stackSize,allocatedOwnStack:N.allocatedOwnStack,threadInfoStruct:N.pthread_ptr},ue=le.threadInfoStruct>>2;Atomics.store(l(),ue+(64>>2),N.detached),Atomics.store(l(),ue+(100>>2),L),Atomics.store(l(),ue+(40>>2),le.threadInfoStruct),Atomics.store(l(),ue+(80>>2),N.stackSize),Atomics.store(l(),ue+(76>>2),de),Atomics.store(l(),ue+(104>>2),N.stackSize),Atomics.store(l(),ue+(104+8>>2),de),Atomics.store(l(),ue+(104+12>>2),N.detached);var we=wg(),rt=we+40;Atomics.store(l(),ue+(172>>2),rt),C.pthread=le;var Ht={cmd:"run",start_routine:N.startRoutine,arg:N.arg,threadInfoStruct:N.pthread_ptr,stackBase:N.stackBase,stackSize:N.stackSize};C.runPthread=function(){Ht.time=performance.now(),C.postMessage(Ht,N.transferList)},C.loaded&&(C.runPthread(),delete C.runPthread)}function E1(N,C,L,q){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!N)return j("pthread_create called with a null thread pointer!"),28;var de=[],le=0;if(x&&(de.length===0||le))return kg(687865856,N,C,L,q);if(le)return le;var ue=0,we=0,rt=0;C&&C!=-1?(ue=o()[C>>2],ue+=81920,we=o()[C+8>>2],rt=o()[C+12>>2]!==0):ue=2097152;var Ht=we==0;Ht?we=Sg(16,ue):(we-=ue,pe(we>0));for(var $t=as(228),ba=0;ba<228>>2;++ba)l()[($t>>2)+ba]=0;o()[N>>2]=$t,o()[$t+12>>2]=$t;var ji=$t+152;o()[ji>>2]=ji;var _n={stackBase:we,stackSize:ue,allocatedOwnStack:Ht,detached:rt,startRoutine:L,pthread_ptr:$t,arg:q,transferList:de};return x?(_n.cmd="spawnThread",postMessage(_n,de)):ih(_n),0}function oh(N){if(x)return xa(6,1,N);switch(N){case 30:return 16384;case 85:var C=2147483648;return C/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return J0(28),-1}x||Ne.initMainThreadBlock();var wa,R1=[null,Q0,nh,rh,ah,sh,oh],F1={e:Z0,r:Y0,x:e1,b:t1,y:n1,j:r1,c:a1,d:Pi,f:rs,p:s1,z:i1,u:l1,q:h1,v:g1,i:x1,t:w1,w:S1,m:rh,n:ah,g:sh,o:U0,a:Q||c.wasmMemory,k:T1,l:C1,h:E1,s:oh},gg=V0(),lh=c.___wasm_call_ctors=function(){return(lh=c.___wasm_call_ctors=c.asm.A).apply(null,arguments)},M1=c._init=function(){return(M1=c._init=c.asm.B).apply(null,arguments)},$1=c._register_tensor=function(){return($1=c._register_tensor=c.asm.C).apply(null,arguments)},D1=c._dispose_data=function(){return(D1=c._dispose_data=c.asm.D).apply(null,arguments)},O1=c._dispose=function(){return(O1=c._dispose=c.asm.E).apply(null,arguments)},z1=c._Abs=function(){return(z1=c._Abs=c.asm.G).apply(null,arguments)},P1=c._Add=function(){return(P1=c._Add=c.asm.H).apply(null,arguments)},L1=c._AddN=function(){return(L1=c._AddN=c.asm.I).apply(null,arguments)},W1=c._ArgMax=function(){return(W1=c._ArgMax=c.asm.J).apply(null,arguments)},B1=c._AvgPool=function(){return(B1=c._AvgPool=c.asm.K).apply(null,arguments)},V1=c._BatchMatMul=function(){return(V1=c._BatchMatMul=c.asm.L).apply(null,arguments)},U1=c._Ceil=function(){return(U1=c._Ceil=c.asm.M).apply(null,arguments)},H1=c._ClipByValue=function(){return(H1=c._ClipByValue=c.asm.N).apply(null,arguments)},j1=c._Conv2D=function(){return(j1=c._Conv2D=c.asm.O).apply(null,arguments)},uh=c._Conv2DBackpropInput=function(){return(uh=c._Conv2DBackpropInput=c.asm.P).apply(null,arguments)},ch=c._Cos=function(){return(ch=c._Cos=c.asm.Q).apply(null,arguments)},Jl=c._CropAndResize=function(){return(Jl=c._CropAndResize=c.asm.R).apply(null,arguments)},Wi=c._Cumsum=function(){return(Wi=c._Cumsum=c.asm.S).apply(null,arguments)},G1=c._DepthToSpace=function(){return(G1=c._DepthToSpace=c.asm.T).apply(null,arguments)},Ql=c._DepthwiseConv2dNative=function(){return(Ql=c._DepthwiseConv2dNative=c.asm.U).apply(null,arguments)},K=c._Equal=function(){return(K=c._Equal=c.asm.V).apply(null,arguments)},ne=c._Exp=function(){return(ne=c._Exp=c.asm.W).apply(null,arguments)},Se=c._FlipLeftRight=function(){return(Se=c._FlipLeftRight=c.asm.X).apply(null,arguments)},Ye=c._Floor=function(){return(Ye=c._Floor=c.asm.Y).apply(null,arguments)},It=c._FloorDiv=function(){return(It=c._FloorDiv=c.asm.Z).apply(null,arguments)},At=c._FusedBatchNorm=function(){return(At=c._FusedBatchNorm=c.asm._).apply(null,arguments)},Ve=c._FusedConv2D=function(){return(Ve=c._FusedConv2D=c.asm.$).apply(null,arguments)},je=c._FusedDepthwiseConv2D=function(){return(je=c._FusedDepthwiseConv2D=c.asm.aa).apply(null,arguments)},Qt=c._Gather=function(){return(Qt=c._Gather=c.asm.ba).apply(null,arguments)},Jr=c._GatherNd=function(){return(Jr=c._GatherNd=c.asm.ca).apply(null,arguments)},Qr=c._Greater=function(){return(Qr=c._Greater=c.asm.da).apply(null,arguments)},hh=c._GreaterEqual=function(){return(hh=c._GreaterEqual=c.asm.ea).apply(null,arguments)},eu=c._LeakyRelu=function(){return(eu=c._LeakyRelu=c.asm.fa).apply(null,arguments)},jn=c._Less=function(){return(jn=c._Less=c.asm.ga).apply(null,arguments)},_a=c._LessEqual=function(){return(_a=c._LessEqual=c.asm.ha).apply(null,arguments)},dh=c._Log=function(){return(dh=c._Log=c.asm.ia).apply(null,arguments)},v4=c._LogicalAnd=function(){return(v4=c._LogicalAnd=c.asm.ja).apply(null,arguments)},k4=c._Max=function(){return(k4=c._Max=c.asm.ka).apply(null,arguments)},N4=c._MaxPool=function(){return(N4=c._MaxPool=c.asm.la).apply(null,arguments)},I4=c._Maximum=function(){return(I4=c._Maximum=c.asm.ma).apply(null,arguments)},S4=c._Mean=function(){return(S4=c._Mean=c.asm.na).apply(null,arguments)},T4=c._Min=function(){return(T4=c._Min=c.asm.oa).apply(null,arguments)},C4=c._Minimum=function(){return(C4=c._Minimum=c.asm.pa).apply(null,arguments)},E4=c._Multiply=function(){return(E4=c._Multiply=c.asm.qa).apply(null,arguments)},R4=c._Neg=function(){return(R4=c._Neg=c.asm.ra).apply(null,arguments)},F4=c._NonMaxSuppressionV3=function(){return(F4=c._NonMaxSuppressionV3=c.asm.sa).apply(null,arguments)},M4=c._NonMaxSuppressionV4=function(){return(M4=c._NonMaxSuppressionV4=c.asm.ta).apply(null,arguments)},$4=c._NonMaxSuppressionV5=function(){return($4=c._NonMaxSuppressionV5=c.asm.ua).apply(null,arguments)},D4=c._NotEqual=function(){return(D4=c._NotEqual=c.asm.va).apply(null,arguments)},O4=c._OneHot=function(){return(O4=c._OneHot=c.asm.wa).apply(null,arguments)},z4=c._PadV2=function(){return(z4=c._PadV2=c.asm.xa).apply(null,arguments)},P4=c._Pow=function(){return(P4=c._Pow=c.asm.ya).apply(null,arguments)},L4=c._Prelu=function(){return(L4=c._Prelu=c.asm.za).apply(null,arguments)},W4=c._Prod=function(){return(W4=c._Prod=c.asm.Aa).apply(null,arguments)},B4=c._RealDiv=function(){return(B4=c._RealDiv=c.asm.Ba).apply(null,arguments)},V4=c._Relu=function(){return(V4=c._Relu=c.asm.Ca).apply(null,arguments)},U4=c._Relu6=function(){return(U4=c._Relu6=c.asm.Da).apply(null,arguments)},H4=c._ResizeBilinear=function(){return(H4=c._ResizeBilinear=c.asm.Ea).apply(null,arguments)},j4=c._Reverse=function(){return(j4=c._Reverse=c.asm.Fa).apply(null,arguments)},G4=c._RotateWithOffset=function(){return(G4=c._RotateWithOffset=c.asm.Ga).apply(null,arguments)},q4=c._Round=function(){return(q4=c._Round=c.asm.Ha).apply(null,arguments)},X4=c._Rsqrt=function(){return(X4=c._Rsqrt=c.asm.Ia).apply(null,arguments)},K4=c._ScatterNd=function(){return(K4=c._ScatterNd=c.asm.Ja).apply(null,arguments)},Z4=c._SelectV2=function(){return(Z4=c._SelectV2=c.asm.Ka).apply(null,arguments)},Y4=c._Sigmoid=function(){return(Y4=c._Sigmoid=c.asm.La).apply(null,arguments)},J4=c._Sin=function(){return(J4=c._Sin=c.asm.Ma).apply(null,arguments)},Q4=c._Softmax=function(){return(Q4=c._Softmax=c.asm.Na).apply(null,arguments)},e8=c._Sqrt=function(){return(e8=c._Sqrt=c.asm.Oa).apply(null,arguments)},t8=c._Square=function(){return(t8=c._Square=c.asm.Pa).apply(null,arguments)},n8=c._SquaredDifference=function(){return(n8=c._SquaredDifference=c.asm.Qa).apply(null,arguments)},r8=c._Step=function(){return(r8=c._Step=c.asm.Ra).apply(null,arguments)},a8=c._StridedSlice=function(){return(a8=c._StridedSlice=c.asm.Sa).apply(null,arguments)},s8=c._Sub=function(){return(s8=c._Sub=c.asm.Ta).apply(null,arguments)},i8=c._Sum=function(){return(i8=c._Sum=c.asm.Ua).apply(null,arguments)},o8=c._Tanh=function(){return(o8=c._Tanh=c.asm.Va).apply(null,arguments)},l8=c._Tile=function(){return(l8=c._Tile=c.asm.Wa).apply(null,arguments)},u8=c._TopK=function(){return(u8=c._TopK=c.asm.Xa).apply(null,arguments)},c8=c._Transpose=function(){return(c8=c._Transpose=c.asm.Ya).apply(null,arguments)},h8=c.__FusedMatMul=function(){return(h8=c.__FusedMatMul=c.asm.Za).apply(null,arguments)},as=c._malloc=function(){return(as=c._malloc=c.asm._a).apply(null,arguments)},tu=c._free=function(){return(tu=c._free=c.asm.$a).apply(null,arguments)},xg=c.___errno_location=function(){return(xg=c.___errno_location=c.asm.ab).apply(null,arguments)},wg=c._emscripten_get_global_libc=function(){return(wg=c._emscripten_get_global_libc=c.asm.bb).apply(null,arguments)},Bi=c._pthread_self=function(){return(Bi=c._pthread_self=c.asm.cb).apply(null,arguments)},_g=c.___pthread_tsd_run_dtors=function(){return(_g=c.___pthread_tsd_run_dtors=c.asm.db).apply(null,arguments)},q1=c._emscripten_main_thread_process_queued_calls=function(){return(q1=c._emscripten_main_thread_process_queued_calls=c.asm.eb).apply(null,arguments)},d8=c._emscripten_current_thread_process_queued_calls=function(){return(d8=c._emscripten_current_thread_process_queued_calls=c.asm.fb).apply(null,arguments)},bg=c._emscripten_register_main_browser_thread_id=function(){return(bg=c._emscripten_register_main_browser_thread_id=c.asm.gb).apply(null,arguments)},vg=c.__emscripten_do_dispatch_to_thread=function(){return(vg=c.__emscripten_do_dispatch_to_thread=c.asm.hb).apply(null,arguments)},kg=c._emscripten_sync_run_in_main_thread_4=function(){return(kg=c._emscripten_sync_run_in_main_thread_4=c.asm.ib).apply(null,arguments)},Ng=c._emscripten_run_in_main_runtime_thread_js=function(){return(Ng=c._emscripten_run_in_main_runtime_thread_js=c.asm.jb).apply(null,arguments)},X1=c.__emscripten_call_on_thread=function(){return(X1=c.__emscripten_call_on_thread=c.asm.kb).apply(null,arguments)},p8=c._emscripten_tls_init=function(){return(p8=c._emscripten_tls_init=c.asm.lb).apply(null,arguments)},ph=c.__emscripten_thread_init=function(){return(ph=c.__emscripten_thread_init=c.asm.mb).apply(null,arguments)},nu=c.stackSave=function(){return(nu=c.stackSave=c.asm.nb).apply(null,arguments)},Vi=c.stackRestore=function(){return(Vi=c.stackRestore=c.asm.ob).apply(null,arguments)},Ui=c.stackAlloc=function(){return(Ui=c.stackAlloc=c.asm.pb).apply(null,arguments)},Ig=c._emscripten_stack_set_limits=function(){return(Ig=c._emscripten_stack_set_limits=c.asm.qb).apply(null,arguments)},Sg=c._memalign=function(){return(Sg=c._memalign=c.asm.rb).apply(null,arguments)},Tg=c.__emscripten_allow_main_runtime_queued_calls=9880,Hi=c.__emscripten_main_thread_futex=11368;c.cwrap=Me,c.PThread=Ne,c.PThread=Ne,c.wasmMemory=Q,c.ExitStatus=ru;var fh;function ru(N){this.name="ExitStatus",this.message="Program terminated with exit("+N+")",this.status=N}ns=function N(){fh||K1(),fh||(ns=N)};function K1(N){if(N=N||m,Zr>0)return;if(x){h(c),postMessage({cmd:"loaded"});return}if(D0(),Zr>0)return;function C(){fh||(fh=!0,c.calledRun=!0,!oe&&(qc(),O0(),h(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),xn()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),C()},1)):C()}c.run=K1;function f8(N,C){if(!(C&&ie&&N===0)){if(!C&&x)throw postMessage({cmd:"exitProcess",returnCode:N}),new ru(N);ie||(Ne.terminateAllThreads(),fe=N,Xc(),c.onExit&&c.onExit(N),oe=!0),y(N,new ru(N))}}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return x&&(ie=!1,Ne.initWorker()),K1(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),X8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};var s=typeof a!="undefined"?a:{},i,o;s.ready=new Promise(function(K,ne){i=K,o=ne});var l={},u;for(u in s)s.hasOwnProperty(u)&&(l[u]=s[u]);var c=[],h="./this.program",d=function(K,ne){throw ne},p=!1,f=!1,m=!1,A=!1;p=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A=!p&&!m&&!f;var y="";function g(K){return s.locateFile?s.locateFile(K,y):y+K}var _,b,w,x,I,S;m?(f?y=au().dirname(y)+"/":y=__dirname+"/",_=function(K,ne){return I||(I=require("fs")),S||(S=au()),K=S.normalize(K),I.readFileSync(K,ne?null:"utf8")},w=function(K){var ne=_(K,!0);return ne.buffer||(ne=new Uint8Array(ne)),X(ne.buffer),ne},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(K){if(!(K instanceof G1))throw K}),process.on("unhandledRejection",dr),d=function(K){process.exit(K)},s.inspect=function(){return"[Emscripten Module object]"}):A?(typeof read!="undefined"&&(_=function(K){return read(K)}),w=function(K){var ne;return typeof readbuffer=="function"?new Uint8Array(readbuffer(K)):(ne=read(K,"binary"),X(typeof ne=="object"),ne)},typeof scriptArgs!="undefined"?c=scriptArgs:typeof arguments!="undefined"&&(c=arguments),typeof quit=="function"&&(d=function(K){quit(K)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",_=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.send(null),ne.responseText},f&&(w=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)}),b=function(K,ne,Se){var Ye=new XMLHttpRequest;Ye.open("GET",K,!0),Ye.responseType="arraybuffer",Ye.onload=function(){if(Ye.status==200||Ye.status==0&&Ye.response){ne(Ye.response);return}Se()},Ye.onerror=Se,Ye.send(null)},x=function(K){document.title=K});var T=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in l)l.hasOwnProperty(u)&&(s[u]=l[u]);l=null,s.arguments&&(c=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(d=s.quit);var D;s.wasmBinary&&(D=s.wasmBinary);var z=s.noExitRuntime||!0;typeof WebAssembly!="object"&&dr("no native wasm support detected");var W,U=!1,H;function X(K,ne){K||dr("Assertion failed: "+ne)}function j(K){var ne=s["_"+K];return X(ne,"Cannot call unknown function "+K+", make sure it is exported"),ne}function ee(K,ne,Se,Ye,It){var At={string:function(jn){var _a=0;if(jn!=null&&jn!==0){var dh=(jn.length<<2)+1;_a=Jl(dh),he(jn,_a,dh)}return _a},array:function(jn){var _a=Jl(jn.length);return oe(jn,_a),_a}};function Ve(jn){return ne==="string"?ie(jn):ne==="boolean"?Boolean(jn):jn}var je=j(K),Qt=[],Jr=0;if(Ye)for(var Qr=0;Qr=Ye);)++It;if(It-ne>16&&K.subarray&&ae)return ae.decode(K.subarray(ne,It));for(var At="";ne>10,56320|Jr&1023)}}return At}function ie(K,ne){return K?te(Ie,K,ne):""}function Q(K,ne,Se,Ye){if(!(Ye>0))return 0;for(var It=Se,At=Se+Ye-1,Ve=0;Ve=55296&&je<=57343){var Qt=K.charCodeAt(++Ve);je=65536+((je&1023)<<10)|Qt&1023}if(je<=127){if(Se>=At)break;ne[Se++]=je}else if(je<=2047){if(Se+1>=At)break;ne[Se++]=192|je>>6,ne[Se++]=128|je&63}else if(je<=65535){if(Se+2>=At)break;ne[Se++]=224|je>>12,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}else{if(Se+3>=At)break;ne[Se++]=240|je>>18,ne[Se++]=128|je>>12&63,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}}return ne[Se]=0,Se-It}function he(K,ne,Se){return Q(K,Ie,ne,Se)}function oe(K,ne){ke.set(K,ne)}function fe(K,ne){return K%ne>0&&(K+=ne-K%ne),K}var pe,ke,Ie,Me,Oe,$e,tt,nt,ot;function Ze(K){pe=K,s.HEAP8=ke=new Int8Array(K),s.HEAP16=Me=new Int16Array(K),s.HEAP32=$e=new Int32Array(K),s.HEAPU8=Ie=new Uint8Array(K),s.HEAPU16=Oe=new Uint16Array(K),s.HEAPU32=tt=new Uint32Array(K),s.HEAPF32=nt=new Float32Array(K),s.HEAPF64=ot=new Float64Array(K)}var pt=s.INITIAL_MEMORY||16777216,Be,yn=[],_t=[],Un=[],Yt=[],gn=!1;_t.push({func:function(){Qc()}});function Hn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)Tr(s.preRun.shift());ga(yn)}function Rn(){gn=!0,ga(_t)}function un(){ga(Un)}function Jt(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)Jn(s.postRun.shift());ga(Yt)}function Tr(K){yn.unshift(K)}function Jn(K){Yt.unshift(K)}var Qn=0,Aa=null,Kr=null;function ya(K){Qn++,s.monitorRunDependencies&&s.monitorRunDependencies(Qn)}function Di(K){if(Qn--,s.monitorRunDependencies&&s.monitorRunDependencies(Qn),Qn==0&&(Aa!==null&&(clearInterval(Aa),Aa=null),Kr)){var ne=Kr;Kr=null,ne()}}s.preloadedImages={},s.preloadedAudios={};function dr(K){s.onAbort&&s.onAbort(K),K+="",M(K),U=!0,H=1,K="abort("+K+"). Build with -s ASSERTIONS=1 for more info.";var ne=new WebAssembly.RuntimeError(K);throw o(ne),ne}function Gc(K,ne){return String.prototype.startsWith?K.startsWith(ne):K.indexOf(ne)===0}var D0="data:application/octet-stream;base64,";function qc(K){return Gc(K,D0)}var O0="file://";function Xc(K){return Gc(K,O0)}var xn="tfjs-backend-wasm.wasm";qc(xn)||(xn=g(xn));function Kc(K){try{if(K==xn&&D)return new Uint8Array(D);if(w)return w(K);throw"both async and sync fetching of the wasm failed"}catch(ne){dr(ne)}}function z0(){if(!D&&(p||f)){if(typeof fetch=="function"&&!Xc(xn))return fetch(xn,{credentials:"same-origin"}).then(function(K){if(!K.ok)throw"failed to load wasm binary file at '"+xn+"'";return K.arrayBuffer()}).catch(function(){return Kc(xn)});if(b)return new Promise(function(K,ne){b(xn,function(Se){K(new Uint8Array(Se))},ne)})}return Promise.resolve().then(function(){return Kc(xn)})}function Zr(){var K={a:wn};function ne(Ve,je){var Qt=Ve.exports;s.asm=Qt,W=s.asm.g,Ze(W.buffer),Be=s.asm.m,Di("wasm-instantiate")}ya("wasm-instantiate");function Se(Ve){ne(Ve.instance)}function Ye(Ve){return z0().then(function(je){return WebAssembly.instantiate(je,K)}).then(Ve,function(je){M("failed to asynchronously prepare wasm: "+je),dr(je)})}function It(){return!D&&typeof WebAssembly.instantiateStreaming=="function"&&!qc(xn)&&!Xc(xn)&&typeof fetch=="function"?fetch(xn,{credentials:"same-origin"}).then(function(Ve){var je=WebAssembly.instantiateStreaming(Ve,K);return je.then(Se,function(Qt){return M("wasm streaming compile failed: "+Qt),M("falling back to ArrayBuffer instantiation"),Ye(Se)})}):Ye(Se)}if(s.instantiateWasm)try{var At=s.instantiateWasm(K,ne);return At}catch(Ve){return M("Module.instantiateWasm callback failed with error: "+Ve),!1}return It().catch(o),{}}function ga(K){for(;K.length>0;){var ne=K.shift();if(typeof ne=="function"){ne(s);continue}var Se=ne.func;typeof Se=="number"?ne.arg===void 0?Be.get(Se)():Be.get(Se)(ne.arg):Se(ne.arg===void 0?null:ne.arg)}}function ns(){dr()}function P0(K,ne,Se){Ie.copyWithin(K,ne,ne+Se)}function L0(){return Ie.length}function Yr(K){try{return W.grow(K-pe.byteLength+65535>>>16),Ze(W.buffer),1}catch(ne){}}function Zc(K){var ne=L0(),Se=2147483648;if(K>Se)return!1;for(var Ye=1;Ye<=4;Ye*=2){var It=ne*(1+.2/Ye);It=Math.min(It,K+100663296);var At=Math.min(Se,fe(Math.max(K,It),65536)),Ve=Yr(At);if(Ve)return!0}return!1}var Oi={mappings:{},buffers:[null,[],[]],printChar:function(K,ne){var Se=Oi.buffers[K];ne===0||ne===10?((K===1?T:M)(te(Se,0)),Se.length=0):Se.push(ne)},varargs:void 0,get:function(){Oi.varargs+=4;var K=$e[Oi.varargs-4>>2];return K},getStr:function(K){var ne=ie(K);return ne},get64:function(K,ne){return K}};function Yc(K){return 0}function W0(K,ne,Se,Ye,It){}function Jc(K,ne,Se,Ye){for(var It=0,At=0;At>2],je=$e[ne+(At*8+4)>>2],Qt=0;Qt>2]=It,0}var wn={a:ns,d:P0,e:Zc,f:Yc,c:W0,b:Jc},B0=Zr(),Qc=s.___wasm_call_ctors=function(){return(Qc=s.___wasm_call_ctors=s.asm.h).apply(null,arguments)},V0=s._init=function(){return(V0=s._init=s.asm.i).apply(null,arguments)},eh=s._register_tensor=function(){return(eh=s._register_tensor=s.asm.j).apply(null,arguments)},U0=s._dispose_data=function(){return(U0=s._dispose_data=s.asm.k).apply(null,arguments)},zi=s._dispose=function(){return(zi=s._dispose=s.asm.l).apply(null,arguments)},Pi=s._Abs=function(){return(Pi=s._Abs=s.asm.n).apply(null,arguments)},H0=s._Add=function(){return(H0=s._Add=s.asm.o).apply(null,arguments)},j0=s._AddN=function(){return(j0=s._AddN=s.asm.p).apply(null,arguments)},G0=s._ArgMax=function(){return(G0=s._ArgMax=s.asm.q).apply(null,arguments)},Ne=s._AvgPool=function(){return(Ne=s._AvgPool=s.asm.r).apply(null,arguments)},q0=s._BatchMatMul=function(){return(q0=s._BatchMatMul=s.asm.s).apply(null,arguments)},X0=s._Ceil=function(){return(X0=s._Ceil=s.asm.t).apply(null,arguments)},K0=s._ClipByValue=function(){return(K0=s._ClipByValue=s.asm.u).apply(null,arguments)},Z0=s._Conv2D=function(){return(Z0=s._Conv2D=s.asm.v).apply(null,arguments)},Y0=s._Conv2DBackpropInput=function(){return(Y0=s._Conv2DBackpropInput=s.asm.w).apply(null,arguments)},rs=s._Cos=function(){return(rs=s._Cos=s.asm.x).apply(null,arguments)},J0=s._CropAndResize=function(){return(J0=s._CropAndResize=s.asm.y).apply(null,arguments)},Q0=s._Cumsum=function(){return(Q0=s._Cumsum=s.asm.z).apply(null,arguments)},e1=s._DepthToSpace=function(){return(e1=s._DepthToSpace=s.asm.A).apply(null,arguments)},t1=s._DepthwiseConv2dNative=function(){return(t1=s._DepthwiseConv2dNative=s.asm.B).apply(null,arguments)},n1=s._Equal=function(){return(n1=s._Equal=s.asm.C).apply(null,arguments)},r1=s._Exp=function(){return(r1=s._Exp=s.asm.D).apply(null,arguments)},a1=s._FlipLeftRight=function(){return(a1=s._FlipLeftRight=s.asm.E).apply(null,arguments)},s1=s._Floor=function(){return(s1=s._Floor=s.asm.F).apply(null,arguments)},i1=s._FloorDiv=function(){return(i1=s._FloorDiv=s.asm.G).apply(null,arguments)},xa=s._FusedBatchNorm=function(){return(xa=s._FusedBatchNorm=s.asm.H).apply(null,arguments)},Kl=s._FusedConv2D=function(){return(Kl=s._FusedConv2D=s.asm.I).apply(null,arguments)},Zl=s._FusedDepthwiseConv2D=function(){return(Zl=s._FusedDepthwiseConv2D=s.asm.J).apply(null,arguments)},o1=s._Gather=function(){return(o1=s._Gather=s.asm.K).apply(null,arguments)},l1=s._GatherNd=function(){return(l1=s._GatherNd=s.asm.L).apply(null,arguments)},u1=s._Greater=function(){return(u1=s._Greater=s.asm.M).apply(null,arguments)},c1=s._GreaterEqual=function(){return(c1=s._GreaterEqual=s.asm.N).apply(null,arguments)},h1=s._LeakyRelu=function(){return(h1=s._LeakyRelu=s.asm.O).apply(null,arguments)},Le=s._Less=function(){return(Le=s._Less=s.asm.P).apply(null,arguments)},d1=s._LessEqual=function(){return(d1=s._LessEqual=s.asm.Q).apply(null,arguments)},p1=s._Log=function(){return(p1=s._Log=s.asm.R).apply(null,arguments)},f1=s._LogicalAnd=function(){return(f1=s._LogicalAnd=s.asm.S).apply(null,arguments)},m1=s._Max=function(){return(m1=s._Max=s.asm.T).apply(null,arguments)},A1=s._MaxPool=function(){return(A1=s._MaxPool=s.asm.U).apply(null,arguments)},y1=s._Maximum=function(){return(y1=s._Maximum=s.asm.V).apply(null,arguments)},Yl=s._Mean=function(){return(Yl=s._Mean=s.asm.W).apply(null,arguments)},th=s._Min=function(){return(th=s._Min=s.asm.X).apply(null,arguments)},nh=s._Minimum=function(){return(nh=s._Minimum=s.asm.Y).apply(null,arguments)},g1=s._Multiply=function(){return(g1=s._Multiply=s.asm.Z).apply(null,arguments)},x1=s._Neg=function(){return(x1=s._Neg=s.asm._).apply(null,arguments)},w1=s._NonMaxSuppressionV3=function(){return(w1=s._NonMaxSuppressionV3=s.asm.$).apply(null,arguments)},_1=s._NonMaxSuppressionV4=function(){return(_1=s._NonMaxSuppressionV4=s.asm.aa).apply(null,arguments)},b1=s._NonMaxSuppressionV5=function(){return(b1=s._NonMaxSuppressionV5=s.asm.ba).apply(null,arguments)},v1=s._NotEqual=function(){return(v1=s._NotEqual=s.asm.ca).apply(null,arguments)},k1=s._OneHot=function(){return(k1=s._OneHot=s.asm.da).apply(null,arguments)},Qe=s._PadV2=function(){return(Qe=s._PadV2=s.asm.ea).apply(null,arguments)},N1=s._Pow=function(){return(N1=s._Pow=s.asm.fa).apply(null,arguments)},I1=s._Prelu=function(){return(I1=s._Prelu=s.asm.ga).apply(null,arguments)},S1=s._Prod=function(){return(S1=s._Prod=s.asm.ha).apply(null,arguments)},Li=s._RealDiv=function(){return(Li=s._RealDiv=s.asm.ia).apply(null,arguments)},rh=s._Relu=function(){return(rh=s._Relu=s.asm.ja).apply(null,arguments)},ah=s._Relu6=function(){return(ah=s._Relu6=s.asm.ka).apply(null,arguments)},sh=s._ResizeBilinear=function(){return(sh=s._ResizeBilinear=s.asm.la).apply(null,arguments)},T1=s._Reverse=function(){return(T1=s._Reverse=s.asm.ma).apply(null,arguments)},C1=s._RotateWithOffset=function(){return(C1=s._RotateWithOffset=s.asm.na).apply(null,arguments)},ih=s._Round=function(){return(ih=s._Round=s.asm.oa).apply(null,arguments)},E1=s._Rsqrt=function(){return(E1=s._Rsqrt=s.asm.pa).apply(null,arguments)},oh=s._ScatterNd=function(){return(oh=s._ScatterNd=s.asm.qa).apply(null,arguments)},wa=s._SelectV2=function(){return(wa=s._SelectV2=s.asm.ra).apply(null,arguments)},R1=s._Sigmoid=function(){return(R1=s._Sigmoid=s.asm.sa).apply(null,arguments)},F1=s._Sin=function(){return(F1=s._Sin=s.asm.ta).apply(null,arguments)},gg=s._Softmax=function(){return(gg=s._Softmax=s.asm.ua).apply(null,arguments)},lh=s._Sqrt=function(){return(lh=s._Sqrt=s.asm.va).apply(null,arguments)},M1=s._Square=function(){return(M1=s._Square=s.asm.wa).apply(null,arguments)},$1=s._SquaredDifference=function(){return($1=s._SquaredDifference=s.asm.xa).apply(null,arguments)},D1=s._Step=function(){return(D1=s._Step=s.asm.ya).apply(null,arguments)},O1=s._StridedSlice=function(){return(O1=s._StridedSlice=s.asm.za).apply(null,arguments)},z1=s._Sub=function(){return(z1=s._Sub=s.asm.Aa).apply(null,arguments)},P1=s._Sum=function(){return(P1=s._Sum=s.asm.Ba).apply(null,arguments)},L1=s._Tanh=function(){return(L1=s._Tanh=s.asm.Ca).apply(null,arguments)},W1=s._Tile=function(){return(W1=s._Tile=s.asm.Da).apply(null,arguments)},B1=s._TopK=function(){return(B1=s._TopK=s.asm.Ea).apply(null,arguments)},V1=s._Transpose=function(){return(V1=s._Transpose=s.asm.Fa).apply(null,arguments)},U1=s.__FusedMatMul=function(){return(U1=s.__FusedMatMul=s.asm.Ga).apply(null,arguments)},H1=s._malloc=function(){return(H1=s._malloc=s.asm.Ha).apply(null,arguments)},j1=s._free=function(){return(j1=s._free=s.asm.Ia).apply(null,arguments)},uh=s.stackSave=function(){return(uh=s.stackSave=s.asm.Ja).apply(null,arguments)},ch=s.stackRestore=function(){return(ch=s.stackRestore=s.asm.Ka).apply(null,arguments)},Jl=s.stackAlloc=function(){return(Jl=s.stackAlloc=s.asm.La).apply(null,arguments)};s.cwrap=Y;var Wi;function G1(K){this.name="ExitStatus",this.message="Program terminated with exit("+K+")",this.status=K}Kr=function K(){Wi||Ql(),Wi||(Kr=K)};function Ql(K){if(K=K||c,Qn>0||(Hn(),Qn>0))return;function ne(){Wi||(Wi=!0,s.calledRun=!0,!U&&(Rn(),un(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),Jt()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),ne()},1)):ne()}if(s.run=Ql,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ql(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),K8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Z8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),J8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Q8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ek=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),tk=et((e,t)=>{(function(n,r){var a=(0,eval)("this"),s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=K8(),r=Z8(),a=Y8(),s=J8(),i=Q8(),o=ek(),l=tk();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),nk=et(()=>{}),rk="3.3.0",ak="3.3.0",sk="3.3.0",ik="3.3.0",ok="3.3.0",lk=1e-7,uk=1e-4,xh=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},su=class{refCount(e){return er("refCount")}incRef(e){return er("incRef")}timerAvailable(){return!0}time(e){return er("time")}read(e){return er("read")}readSync(e){return er("readSync")}numDataIds(){return er("numDataIds")}disposeData(e,t){return er("disposeData")}write(e,t,n){return er("write")}move(e,t,n,r,a){return er("move")}memory(){return er("memory")}floatPrecision(){return er("floatPrecision")}epsilon(){return this.floatPrecision()===32?lk:uk}dispose(){return er("dispose")}};function er(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function $g(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function ck(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r,a,s=0;for(;n>0;)s=Math.random()*n|0,n--,r=e[n],a=t[n],e[n]=e[s],t[n]=t[s],e[s]=r,t[s]=a}function iu(e,t,n){return Math.max(e,Math.min(t,n))}function hk(e){return e%2==0?e:e+1}function dk(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ss(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function is(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||sn(e)&&!n)for(let r=0;r0,n){return new Promise((r,a)=>{let s=0,i=()=>{if(e()){r();return}s++;let o=t(s);if(n!=null&&s>=n){a();return}setTimeout(i,o)};i()})}function wk(e,t){let n=1,r=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let a=e.slice();return a[r]=t/n,a}function tr(e,t){let n=t.length;return e=e==null?t.map((r,a)=>a):[].concat(e),F(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(r=>jt(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function Dg(e,t){let n=[],r=[],a=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||a?null:tr(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),r.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),r.push(o))}return{newShape:n,keptDims:r}}function Og(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function zg(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Pg(e,t){for(let n=0;nt+=n.length),t}function va(e){return typeof e=="string"||e instanceof String}function Bg(e){return typeof e=="boolean"}function Vg(e){return typeof e=="number"}function wh(e){return Array.isArray(e)?wh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":Vg(e)?"float32":va(e)?"string":Bg(e)?"bool":"float32"}function ka(e){return!!(e&&e.constructor&&e.call&&e.apply)}function _h(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function Ug(e,t,n){let r=new Array;if(t.length===1){let a=t[0];for(let s=0;so*l);for(let o=0;or*a);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return Ug(0,e,t)}function Q1(e,t){let n=bh(e,t);for(let r=0;rr*a,1);if(t==null||t==="float32")return Ki(e,new Float32Array(n));if(t==="int32")return Ki(e,new Int32Array(n));if(t==="bool")return Ki(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function ef(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function vk(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let a=0;a{let[n,r]=t.split(":");this.urlFlags[n]=Ik(n,r)})}};function Nk(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(Sk(t,r[0],r[1]),r.join("="))),t}function Sk(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function Ik(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return fr}var fr=null;function Tk(e){fr=e}var nf;function Gg(){if(nf==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");nf=e}return nf}function Ck(){let e=Gg();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function rf(e,t){let n=Ck();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var Zi="Abs",Yi="Acos",Ji="Acosh",Na="Add",os="AddN",vh="All",kh="Any",ls="ArgMax",lu="ArgMin",Qi="Asin",eo="Asinh",to="Atan",no="Atanh",ro="Atan2",us="AvgPool",Nh="AvgPoolGrad",uu="AvgPool3D",Ih="AvgPool3DGrad",cs="BatchMatMul",cu="BatchToSpaceND",Sh="Bincount",qg="BroadcastTo",hs="Cast",ds="Ceil",Ia="ClipByValue",Th="Complex",hu="ComplexAbs",ao="Concat",ps="Conv2D",Ch="Conv2DBackpropFilter",fs="Conv2DBackpropInput",du="Conv3D",Eh="Conv3DBackpropFilterV2",Rh="Conv3DBackpropInputV2",ms="Cos",so="Cosh",As="Cumsum",io="CropAndResize",Fh="DenseBincount",oo="DepthToSpace",ys="DepthwiseConv2dNative",Mh="DepthwiseConv2dNativeBackpropFilter",$h="DepthwiseConv2dNativeBackpropInput",Dh="Diag",pu="Dilation2D",Oh="Dilation2DBackpropInput",zh="Dilation2DBackpropFilter",gs="RealDiv",lo="Elu",Ph="EluGrad",uo="Erf",co="Equal",xs="Exp",ho="ExpandDims",po="Expm1",Lh="FFT",fu="Fill",fo="FlipLeftRight",ws="Floor",_s="FloorDiv",bs="FusedBatchNorm",mo="GatherV2",Ao="GatherNd",yo="Greater",vs="GreaterEqual",ks="Identity",Wh="IFFT",Bh="Imag",go="IsFinite",xo="IsInf",wo="IsNan",Ns="LeakyRelu",_o="Less",bo="LessEqual",Vh="LinSpace",Is="Log",vo="Log1p",ko="LogicalAnd",mu="LogicalNot",Au="LogicalOr",Xg="LogSoftmax",yu="LRN",Uh="LRNGrad",Ss="Max",Ts="Maximum",Cs="MaxPool",Hh="MaxPoolGrad",gu="MaxPool3D",jh="MaxPool3DGrad",Gh="MaxPoolWithArgmax",Es="Mean",Rs="Min",Fs="Minimum",xu="MirrorPad",No="Mod",qh="Multinomial",Ms="Multiply",Io="Neg",So="NotEqual",To="NonMaxSuppressionV3",Co="NonMaxSuppressionV4",Eo="NonMaxSuppressionV5",Ro="OnesLike",$s="OneHot",Fo="Pack",Ds="PadV2",Ek="Pool",Os="Pow",zs="Prelu",Mo="Prod",wu="Range",Xh="Real",$o="Reciprocal",Ps="Relu",Do="Reshape",_u="ResizeNearestNeighbor",Kh="ResizeNearestNeighborGrad",Ls="ResizeBilinear",Zh="ResizeBilinearGrad",Ws="Relu6",Bs="Reverse",Vs="Round",Us="Rsqrt",Oo="ScatterNd",zo="Select",Po="Selu",Lo="Slice",Hs="Sin",Wo="Sinh",Bo="Sign",js="Sigmoid",Vo="Softplus",Gs="Sqrt",qs="Sum",bu="SpaceToBatchND",Uo="SplitV",Xs="Softmax",Ks="SquaredDifference",vu="Square",Zs="Sub",Yh="SparseToDense",Ho="StridedSlice",jo="Tan",Ys="Tanh",Sa="Tile",Go="TopK",Jh="Transform",Js="Transpose",Qh="Unique",qo="Unpack",ku="UnsortedSegmentSum",Xo="ZerosLike",Ta="Step",ed="FromPixels",Ko="RotateWithOffset",Qs="_FusedMatMul",ei="FusedConv2D",ti="FusedDepthwiseConv2D",Zo=rf("kernelRegistry",()=>new Map),Nu=rf("gradRegistry",()=>new Map);function td(e,t){let n=af(e,t);return Zo.get(n)}function sf(e){return Nu.get(e)}function Yo(e){let t=Zo.entries(),n=[];for(;;){let{done:r,value:a}=t.next();if(r)break;let[s,i]=a,[o]=s.split("_");o===e&&n.push(i)}return n}function ni(e){let{kernelName:t,backendName:n}=e,r=af(t,n);Zo.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),Zo.set(r,e)}function Kg(e){let{kernelName:t}=e;Nu.has(t)&&J().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),Nu.set(t,e)}function Rk(e,t){let n=af(e,t);if(!Zo.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);Zo.delete(n)}function Fk(e){if(!Nu.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Nu.delete(e)}function Mk(e,t){Yo(e).forEach(n=>{let r=Object.assign({},n,{backendName:t});ni(r)})}function af(e,t){return`${t}_${e}`}var v={};ze(v,{arraysEqual:()=>ta,assert:()=>F,assertNonNegativeIntegerDimensions:()=>ef,assertNonNull:()=>ss,assertShapesMatch:()=>an,bytesFromStringArray:()=>Wg,bytesPerElement:()=>J1,checkConversionForErrors:()=>Pg,clamp:()=>iu,computeStrides:()=>Xi,createScalarValue:()=>$k,createShuffledIndices:()=>gk,decodeString:()=>rd,distSquared:()=>fk,encodeString:()=>Su,fetch:()=>Dk,flatten:()=>is,getArrayFromDType:()=>zg,getTypedArrayFromDType:()=>Og,hasEncodingLoss:()=>_k,indexToLoc:()=>kk,inferDtype:()=>wh,inferFromImplicitShape:()=>wk,isBoolean:()=>Bg,isFunction:()=>ka,isInt:()=>jt,isNumber:()=>Vg,isPromise:()=>tf,isScalarShape:()=>mk,isString:()=>va,isTypedArray:()=>sn,isValidDtype:()=>Lg,locToIndex:()=>vk,makeOnesTypedArray:()=>Q1,makeZerosNestedTypedArray:()=>bk,makeZerosTypedArray:()=>bh,nearestDivisor:()=>_h,nearestLargerEven:()=>hk,now:()=>Iu,parseAxisParam:()=>tr,randUniform:()=>pk,repeatedTry:()=>xk,rightPad:()=>ou,shuffle:()=>$g,shuffleCombo:()=>ck,sizeFromShape:()=>Dt,sizeToSquarishShape:()=>yk,squeezeShape:()=>Dg,sum:()=>dk,tanh:()=>Ak,toNestedArray:()=>Ki,toTypedArray:()=>nd});function $k(e,t){return t==="string"?Su(e):nd([e],t)}function Ok(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function nd(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=is(e)),J().getBool("DEBUG")&&Pg(e,t),Ok(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},s,i=Iu();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(let o of r)o.dataSync();s=Promise.resolve({kernelMs:Iu()-i})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{zk(u,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),r,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],a,o[2])})})}};function zk(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${c} %c${u} %c${h} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function Wk(e,t,n){let r={},a={};for(let l=0;lr[m.id]=!0),p=!0,a[u.id]=!0;break}if(p)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let h=0;h=0;a--){let s=t[a],i=[];if(s.outputs.forEach(l=>{let u=e[l.id];u!=null?i.push(u):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let u=n(()=>o[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[l];if(!ta(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let h=e[c.id];e[c.id]=r(h,u),h.dispose()}}}}var Zg=20,Tu=3,of=7;function Uk(e,t,n,r){let a=Xi(t),s=Vk(e,t,n,a),i=t.length,o=ad(e,t,n,a,s),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(u=>" "+u).join(` `)),l.join(` -`)}function Bk(e,t,n,r){let a=Dt(t),s=r[r.length-1],i=new Array(s).fill(0),o=t.length,l=n==="complex64"?Eu(e):e;if(o>1)for(let u=0;u
Kg){let A=Tu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-Tu)*i,o*i));return n==="complex64"&&(y=Eu(y),g=Eu(g)),["["+y.map((_,b)=>Cu(_,a[b],n)).join(", ")+", ..., "+g.map((_,b)=>Cu(_,a[o-Tu+b],n)).join(", ")+"]"]}let m=n==="complex64"?Eu(e):Array.from(e);return["["+m.map((A,y)=>Cu(A,a[y],n)).join(", ")+"]"]}let u=t.slice(1),c=r.slice(1),h=r[0]*i,d=[];if(o>Kg){for(let m=0;m1)for(let u=0;uZg){let A=Tu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-Tu)*i,o*i));return n==="complex64"&&(y=Eu(y),g=Eu(g)),["["+y.map((_,b)=>Cu(_,a[b],n)).join(", ")+", ..., "+g.map((_,b)=>Cu(_,a[o-Tu+b],n)).join(", ")+"]"]}let m=n==="complex64"?Eu(e):Array.from(e);return["["+m.map((A,y)=>Cu(A,a[y],n)).join(", ")+"]"]}let u=t.slice(1),c=r.slice(1),h=r[0]*i,d=[];if(o>Zg){for(let m=0;m`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||Og(t,this.size),this.strides=Xi(e)}set(e,...t){t.length===0&&(t=[0]),F(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rrd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Cr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>rd(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Cr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Cr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Jo.print(this,e)}clone(){return this.throwIfDisposed(),Jo.clone(this)}toString(e=!1){let t=this.dataSync();return Vk(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Jo.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Cr().makeVariable(this,e,t,n)}};Object.defineProperty(Ue,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return rf("Tensor",()=>Ue)}Z();var Ru=class extends Ue{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!ta(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Cr().disposeTensor(this),this.dataId=e.dataId,Cr().incRef(this,null)}dispose(){Cr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Ru,Symbol.hasInstance,{value:e=>e instanceof Ue&&e.assign!=null&&e.assign instanceof Function});var mr={};ze(mr,{assertTypesMatch:()=>Yg,getTensorsInContainer:()=>lf,isTensorInList:()=>qk,makeTypesMatch:()=>bt});var uf;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(uf||(uf={}));var cf;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(cf||(cf={}));var hf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(hf||(hf={}));var df;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(df||(df={}));var pf;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(pf||(pf={}));var Xk={float32:df,int32:cf,bool:hf,complex64:pf};function nr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return Xk[e][t]}function sd(e){return nr(e,"int32")}function bt(e,t){if(e.dtype===t.dtype)return[e,t];let n=nr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function Yg(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function qk(e,t){return t.some(n=>n.id===e.id)}function lf(e){let t=[],n=new Set;return Jg(e,t,n),t}function Jg(e,t,n){if(e==null)return;if(e instanceof Ue){t.push(e);return}if(!Kk(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),Jg(s,t,n))}}function Kk(e){return Array.isArray(e)||typeof e=="object"}function ff(e){return e.kernelName!=null}var Qg=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Fu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new Qg}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Yo(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof su)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Fu.nextTensorId++}nextVariableId(){return Fu.nextVariableId++}clone(e){let t=$.runKernel(ks,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(hs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(td(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=ff(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(ff(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=td(p,this.backendName);F(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let _=g.map(b=>{if(b.rank!=null)return b;let{dataId:w,shape:x,dtype:I}=b;return this.makeTensorFromDataId(w,x,I)});if(r){let b=this.getTensorsForGradient(p,f,_);n=this.saveTensorsForBackwardMode(b)}return _}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:u,attrs:c}=e,h=ff(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,u,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,u,t,h,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(p=>u[p]!=null?u[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=sf(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,u)=>s[u]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&va(e[0])&&(a=e.map(o=>Su(o)));let s=r.write(a,t,n),i=new Ue(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=Lg(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ue(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Ru(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*J1(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Ru||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*J1(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=sf(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((u,c)=>{if(u==null){let h=n[c],d=bh(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return u}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=lf(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(F(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));F(a instanceof Ue,()=>"The result y returned by f() must be a tensor.");let s=Lk(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?Zk(a.shape):n,Wk(i,s,l=>this.tidy(l),Yk);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return F(ka(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(i=>i instanceof Ue),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),F(n.value instanceof Ue,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(ka(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),u=Array.isArray(l)?l:[l];F(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),F(u.every(h=>h instanceof Ue),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((h,d)=>{c[d]=()=>h}),c};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Iu(),n=await this.backend.time(e);return n.wallMs=Iu()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new Qg;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Fu.nextTensorId=0;Fu.nextVariableId=0;function Zk(e){let t=Q1(Dt(e),"float32");return $.makeTensor(t,e,"float32")}function e5(){let e=jg();if(e._tfengine==null){let t=new Hg(e);e._tfengine=new Fu(t)}return Sk(e._tfengine.ENV),Hk(()=>e._tfengine),e._tfengine}var $=e5();function Yk(e,t){let n={a:e,b:t};return $.runKernel(Na,n)}var Mu={};ze(Mu,{isBrowser:()=>t5,isMobile:()=>Jk});function Qk(){return typeof navigator!="undefined"&&navigator!=null}function Jk(){if(Qk()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function t5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Ar=J();Ar.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Ar.registerFlag("IS_BROWSER",()=>t5());Ar.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Ar.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Ar.registerFlag("PROD",()=>!1);Ar.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Ar.getBool("DEBUG"));Ar.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Ar.registerFlag("IS_TEST",()=>!1);Ar.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);Ar.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Er(e,t){let n=e;if(sn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||sn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&n5(e,r,[]),r}function n5(e,t,n){if(n=n||[],!Array.isArray(e)&&!sn(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),r5(r,a,t,n),e==null||!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Er(e,a);!sn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?nd(e,a):is(e,[],!0);return $.makeTensor(i,s,a)}function $u(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>E(a,`${t}[${s}]`,n,r))}var a5="__op";function O(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+a5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return tf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function e9(e,t){let n=E(e,"real","complex"),r=E(t,"imag","complex");an(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Th,a)}var Ca=O({complex_:e9});function Ea(e,t,n,r){if(r==null&&(r=wh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){ef(t);let a=Dt(t),s=Dt(n);F(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!sn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?nd(e,r):is(e,[],!0),$.makeTensor(e,t,r)}function yr(e,t,n){let r=Er(e,n);return Ea(e,t,r,n)}var mf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},id=4;async function n9(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+id*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var Af=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function i5(e){return Af?Buffer.byteLength(e):new Blob([e]).size}function a9(e){if(Af)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function o5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Du(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:i5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:i5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function i9(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function o9(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function l9(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function r9(){let e=i9(),t=o9(),n=l9();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var St=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return St.instance==null&&(St.instance=new St),St.instance}static registerSaveRouter(e){St.getInstance().saveRouters.push(e)}static registerLoadRouter(e){St.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return St.getHandlers(e,"save")}static getLoadHandlers(e,t){return St.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?St.getInstance().loadRouters:St.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},u9=e=>St.registerSaveRouter(e),c9=e=>St.registerLoadRouter(e),h9=e=>St.getSaveHandlers(e),d9=(e,t)=>St.getLoadHandlers(e,t),gf="tensorflowjs",xf=1,ri="models_store",Ra="model_info_store";function l5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function wf(e){let t=e.result;t.createObjectStore(ri,{keyPath:"modelPath"}),t.createObjectStore(Ra,{keyPath:"modelPath"})}var ai=class{constructor(e){if(this.indexedDB=l5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open(gf,xf);a.onupgradeneeded=()=>wf(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ri,"readonly"),o=i.objectStore(ri).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Du(t),o=s.transaction(Ra,"readwrite"),l=o.objectStore(Ra),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),c;u.onsuccess=()=>{c=s.transaction(ri,"readwrite");let h=c.objectStore(ri).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(Ra);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},u.onerror=h=>(s.close(),r(u.error)),o.oncomplete=()=>{c==null?s.close():c.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};ai.URL_SCHEME="indexeddb://";var u5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ai.URL_SCHEME)?p9(e.slice(ai.URL_SCHEME.length)):null;St.registerSaveRouter(u5);St.registerLoadRouter(u5);function p9(e){return new ai(e)}function f9(e){return e.startsWith(ai.URL_SCHEME)?e.slice(ai.URL_SCHEME.length):e}var m9=class{constructor(){this.indexedDB=l5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(gf,xf);n.onupgradeneeded=()=>wf(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(Ra,"readonly"),s=a.objectStore(Ra).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=f9(e),new Promise((t,n)=>{let r=this.indexedDB.open(gf,xf);r.onupgradeneeded=()=>wf(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(Ra,"readwrite"),i=s.objectStore(Ra),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=i.delete(e),c=()=>{l=a.transaction(ri,"readwrite");let h=l.objectStore(ri).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};u.onsuccess=c,u.onerror=h=>(c(),a.close(),n(o.error))}},o.onerror=u=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},na="/",Qo="tensorflowjs_models",c5="info",A9="model_topology",y9="weight_specs",g9="weight_data",x9="model_metadata";function h5(e){return{info:[Qo,e,c5].join(na),topology:[Qo,e,A9].join(na),weightSpecs:[Qo,e,y9].join(na),weightData:[Qo,e,g9].join(na),modelMetadata:[Qo,e,x9].join(na)}}function w9(e){let t=e.split(na);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(na)}function _9(e){return e.startsWith(si.URL_SCHEME)?e.slice(si.URL_SCHEME.length):e}var si=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=h5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Du(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,a9(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=s9(s),t}};si.URL_SCHEME="localstorage://";var d5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(si.URL_SCHEME)?b9(e.slice(si.URL_SCHEME.length)):null;St.registerSaveRouter(d5);St.registerLoadRouter(d5);function b9(e){return new si(e)}var v9=class{constructor(){F(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Qo+na,n=na+c5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(el)&&(e=e.slice(0,e.indexOf(el))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Gn.getInstance();F(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function od(e){if(e.indexOf(el)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Gn.getSchemes().join(",")}`);return{scheme:e.split(el)[0],path:e.split(el)[1]}}async function p5(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=St.getLoadHandlers(e);F(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=St.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=od(e).scheme,l=od(e).path,u=o===od(e).scheme,c=await a.load();n&&u&&await Gn.getManager(o).removeModel(l);let h=await i.save(c);return n&&!u&&await Gn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function k9(){let e=Gn.getSchemes(),t={};for(let n of e){let r=await Gn.getManager(n).listModels();for(let a in r){let s=n+el+a;t[s]=r[a]}}return t}async function N9(e){let t=od(e);return Gn.getManager(t.scheme).removeModel(t.path)}async function I9(e,t){return p5(e,t,!1)}async function S9(e,t){return p5(e,t,!0)}var T9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new T9);try{Gn.registerManager(si.URL_SCHEME,new v9)}catch(e){}try{Gn.registerManager(ai.URL_SCHEME,new m9)}catch(e){}}var C9={importFetch:()=>S8()},_f,E9=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(_f==null&&(_f=C9.importFetch()),_f(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new E9);function We(e,t="float32",n){return t=t||"float32",ef(e),new Ot(e,t,n)}function R9(e,t){let n=E(e,"x","cast");if(!Pg(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(hs,r,a)}var me=O({cast_:R9});function F9(e){let t={x:E(e,"x","clone","string_or_numeric")};return $.runKernel(ks,t)}var Rr=O({clone_:F9});function f5(e,t=!1){console.log(e.toString(t))}e5();var M9={buffer:We,cast:me,clone:Rr,print:f5};jk(M9);var bn={};ze(bn,{browserFiles:()=>$9,browserHTTPRequest:()=>O9,concatenateArrayBuffers:()=>yf,copyModel:()=>I9,decodeWeights:()=>s5,encodeWeights:()=>n9,fromMemory:()=>z9,getLoadHandlers:()=>d9,getModelArtifactsInfoForJSON:()=>Du,getSaveHandlers:()=>h9,http:()=>vf,isHTTPScheme:()=>bf,listModels:()=>k9,loadWeights:()=>D9,moveModel:()=>S9,registerLoadRouter:()=>c9,registerSaveRouter:()=>u9,removeModel:()=>N9,weightsLoaderFactory:()=>m5,withSaveHandler:()=>P9});var L9="model",W9=".json",B9=".weights.bin";function A5(e){return new Promise(t=>setTimeout(t)).then(e)}var tl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(tl.URL_SCHEME)&&(e=e.slice(tl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=L9),this.modelTopologyFileName=e+W9,this.weightDataFileName=e+B9}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await A5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await A5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Du(e)}}}};tl.URL_SCHEME="downloads://";var V9=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let u;try{u=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let c=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),c.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let _={modelTopology:o,weightSpecs:c,weightData:yf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(_.signature=i.signature),i.userDefinedMetadata!=null&&(_.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(_.modelInitializer=i.modelInitializer),n(_)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(u[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>o5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=o5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},H9=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(tl.URL_SCHEME)?U9(e.slice(tl.URL_SCHEME.length)):null;St.registerSaveRouter(H9);function U9(e="model"){return new tl(e)}function $9(e){return new V9(e)}function y5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(u=>{let c=n+ ++a/e.length*(r-n);return t(c),u}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,u){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),F(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(s))}async function g5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(u=>n(u,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await y5(r,t.onProgress,a,s)).map(u=>u.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await y5(i,t.onProgress,o,l)}async function D9(e,t="",n,r){return m5(a=>g5(a,{requestInit:r}))(e,t,n)}function m5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=mf[y]*Dt(A.shape),_=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((b,w)=>{b===A.name&&(_(),i[w]=!0)}):_(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. -Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),u=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let _=0;_{let b=A.slice(_.groupOffset,_.groupOffset+_.sizeBytes),w=s5(b,[_.manifestEntry]);for(let x in w)h[x]=w[x]}),d+=f}),h}}var j9="application/octet-stream",G9="application/json",kf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(F(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:G9}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:j9}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Du(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let u,c;r!=null&&([u,c]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:u,weightData:c,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=q9(t),a=this.weightPathPrefix||n,s=[];for(let u of e)s.push(...u.weights);let i=[],o=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(c)):i.push(a+c+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await g5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,yf(l)]}};kf.URL_SCHEME_REGEX=/^https?:\/\//;function q9(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function bf(e){return e.match(kf.URL_SCHEME_REGEX)!=null}var x5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>bf(r)):n=bf(e),n)return vf(e,t)}return null};St.registerSaveRouter(x5);St.registerLoadRouter(x5);function vf(e,t){return new kf(e,t)}function O9(e,t){return vf(e,t)}var Nf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},X9=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function z9(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Nf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function P9(e){return new X9(e)}var w5={};ze(w5,{confusionMatrix:()=>K9});function Z9(e,t,n=!1,r=!1){let a=E(e,"a","matMul"),s=E(t,"b","matMul");[a,s]=bt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(cs,i,o)}var Ge=O({matMul_:Z9});function Y9(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:E(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel($s,a,s)}var nl=O({oneHot_:Y9});function J9(e,t){let n=E(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(Js,r,a)}var at=O({transpose_:J9});function Q9(e,t,n){let r=E(e,"labels","confusionMatrix"),a=E(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),F(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),F(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=nl(me(r,"int32"),n),i=nl(me(a,"int32"),n),o=at(s),l=Ge(o,i);return me(l,"int32")}var K9=O({confusionMatrix_:Q9}),rl={};ze(rl,{fromPixels:()=>nN,fromPixelsAsync:()=>eN,toPixels:()=>tN});function ld(e,t,n){if(ss(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Er(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}var al;function _5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(td(ed,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(ed,d,p)}let[l,u]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],c;i?c=e.getContext("2d").getImageData(0,0,l,u).data:r||n?c=e.data:(s||a||o)&&(al==null&&(al=document.createElement("canvas").getContext("2d")),al.canvas.width=l,al.canvas.height=u,al.drawImage(e,0,0,l,u),c=al.getImageData(0,0,l,u).data);let h;if(t===4)h=new Int32Array(c);else{let d=l*u;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(c[0]=p*o,c[1]=p*o,c[2]=p*o):c[d]=p*o}let h=u*4;l[h+0]=Math.round(c[0]),l[h+1]=Math.round(c[1]),l[h+2]=Math.round(c[2]),l[h+3]=Math.round(c[3])}if(t!=null){t.width=a,t.height=r;let u=t.getContext("2d"),c=new ImageData(l,a,r);u.putImageData(c,0,0)}return n!==e&&n.dispose(),l}var nN=O({fromPixels_:_5}),If={};ze(If,{prepareAndValidate:()=>b5});function b5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Dt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/u),1].slice(0,s);return[l,i,u,c]}var Sf={};ze(Sf,{calculateShapes:()=>v5,validateInput:()=>Cf,validateUpdateShape:()=>Tf});function Tf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hoN,computeFlatOffset:()=>uN,computeOutShape:()=>k5,getNormalizedAxes:()=>I5,isSliceContinous:()=>lN,maskToAxes:()=>ud,parseSliceParams:()=>F5,sliceInfo:()=>cN,startForAxis:()=>E5,startIndicesWithElidedDims:()=>S5,stopForAxis:()=>R5,stopIndicesWithElidedDims:()=>T5,stridesForAxis:()=>C5,stridesWithElidedDims:()=>N5});function oN(e,t,n){let r=e.shape.length;F(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),F(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function ud(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function k5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;c=S5(i,p,f,r,e),h=T5(o,p,f,a,e),d=N5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=M5(t,n,o),u=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=M5(t,n,o),u=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=iu(0,i,l-1),i}function R5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=iu(0,i,l):i=iu(-1,i,l-1),i}function lN(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function uN(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function cN(e,t,n,r,a,s,i,o,l){let u=t.slice(),c=n.slice(),h=r;r==null&&(h=new Array(u.length));let d=ud(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-u.length,f=ud(o),m=e.slice();f.forEach(x=>{u[x]=0,c[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=I5(m,d,p,u,c,h,a,s,i);u=A,c=y,h=g;let _=ud(l);_.forEach(x=>{c[x]=u[x]+1,h[x]=1});let b=k5(u,c,h),w=b.filter((x,I)=>_.indexOf(I)===-1);return{nonStrided:h.every(x=>x===1),$begin:u,$end:c,$strides:h,size:b,newShape:m,outShape:w}}var re={};ze(re,{Serializable:()=>D5,SerializationMap:()=>ii,registerClass:()=>Fa});var D5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},ii=class{constructor(){this.classNameMap={}}static getMap(){return ii.instance==null&&(ii.instance=new ii),ii.instance}static register(e){ii.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Fa(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),ii.register(e)}var O5={};ze(O5,{TEST_EPSILON_FLOAT16:()=>z5,encodeStrings:()=>P5,expectArrayBuffersEqual:()=>AN,expectArraysClose:()=>hN,expectArraysEqual:()=>pN,expectNumbersClose:()=>fN,expectPromiseToFail:()=>dN,expectValuesInRange:()=>mN,testEpsilon:()=>Ef});var yN=.001,z5=.1;function hN(e,t,n){return n==null&&(n=Ef()),Rf(e,t,(r,a)=>Ff(r,a,n))}function Ef(){return $.backend.floatPrecision()===32?yN:z5}function Rf(e,t,n){let r=!0;if((sn(e)||sn(t))&&(r=!1),sn(e)&&sn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Er(e),o=Er(t);if(!ta(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=sn(e)?e:is(e),s=sn(t)?t:is(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. +`;return d[d.length-1]=" "+d[d.length-1]+"]"+(s?"":f),d}function Eu(e){let t=[];for(let n=0;n`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||zg(t,this.size),this.strides=Xi(e)}set(e,...t){t.length===0&&(t=[0]),F(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rrd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Cr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>rd(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Cr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Cr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Jo.print(this,e)}clone(){return this.throwIfDisposed(),Jo.clone(this)}toString(e=!1){let t=this.dataSync();return Uk(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Jo.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Cr().makeVariable(this,e,t,n)}};Object.defineProperty(Ue,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return rf("Tensor",()=>Ue)}Z();var Ru=class extends Ue{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!ta(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Cr().disposeTensor(this),this.dataId=e.dataId,Cr().incRef(this,null)}dispose(){Cr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Ru,Symbol.hasInstance,{value:e=>e instanceof Ue&&e.assign!=null&&e.assign instanceof Function});var mr={};ze(mr,{assertTypesMatch:()=>Jg,getTensorsInContainer:()=>lf,isTensorInList:()=>Xk,makeTypesMatch:()=>bt});var uf;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(uf||(uf={}));var cf;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(cf||(cf={}));var hf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(hf||(hf={}));var df;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(df||(df={}));var pf;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(pf||(pf={}));var Kk={float32:df,int32:cf,bool:hf,complex64:pf};function nr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return Kk[e][t]}function sd(e){return nr(e,"int32")}function bt(e,t){if(e.dtype===t.dtype)return[e,t];let n=nr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function Jg(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function Xk(e,t){return t.some(n=>n.id===e.id)}function lf(e){let t=[],n=new Set;return Qg(e,t,n),t}function Qg(e,t,n){if(e==null)return;if(e instanceof Ue){t.push(e);return}if(!Zk(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),Qg(s,t,n))}}function Zk(e){return Array.isArray(e)||typeof e=="object"}function ff(e){return e.kernelName!=null}var e5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Fu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new e5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Yo(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof su)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Fu.nextTensorId++}nextVariableId(){return Fu.nextVariableId++}clone(e){let t=$.runKernel(ks,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(hs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(td(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=ff(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(ff(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=td(p,this.backendName);F(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let _=g.map(b=>{if(b.rank!=null)return b;let{dataId:w,shape:x,dtype:I}=b;return this.makeTensorFromDataId(w,x,I)});if(r){let b=this.getTensorsForGradient(p,f,_);n=this.saveTensorsForBackwardMode(b)}return _}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:u,attrs:c}=e,h=ff(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,u,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,u,t,h,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(p=>u[p]!=null?u[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=sf(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,u)=>s[u]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&va(e[0])&&(a=e.map(o=>Su(o)));let s=r.write(a,t,n),i=new Ue(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=Wg(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ue(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Ru(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*J1(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Ru||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*J1(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=sf(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((u,c)=>{if(u==null){let h=n[c],d=bh(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return u}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=lf(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(F(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));F(a instanceof Ue,()=>"The result y returned by f() must be a tensor.");let s=Wk(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?Yk(a.shape):n,Bk(i,s,l=>this.tidy(l),Jk);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return F(ka(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(i=>i instanceof Ue),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),F(n.value instanceof Ue,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(ka(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),u=Array.isArray(l)?l:[l];F(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),F(u.every(h=>h instanceof Ue),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((h,d)=>{c[d]=()=>h}),c};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Iu(),n=await this.backend.time(e);return n.wallMs=Iu()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new e5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Fu.nextTensorId=0;Fu.nextVariableId=0;function Yk(e){let t=Q1(Dt(e),"float32");return $.makeTensor(t,e,"float32")}function t5(){let e=Gg();if(e._tfengine==null){let t=new jg(e);e._tfengine=new Fu(t)}return Tk(e._tfengine.ENV),jk(()=>e._tfengine),e._tfengine}var $=t5();function Jk(e,t){let n={a:e,b:t};return $.runKernel(Na,n)}var Mu={};ze(Mu,{isBrowser:()=>n5,isMobile:()=>Qk});function e9(){return typeof navigator!="undefined"&&navigator!=null}function Qk(){if(e9()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function n5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Ar=J();Ar.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Ar.registerFlag("IS_BROWSER",()=>n5());Ar.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Ar.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Ar.registerFlag("PROD",()=>!1);Ar.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Ar.getBool("DEBUG"));Ar.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Ar.registerFlag("IS_TEST",()=>!1);Ar.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);Ar.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Er(e,t){let n=e;if(sn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||sn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&r5(e,r,[]),r}function r5(e,t,n){if(n=n||[],!Array.isArray(e)&&!sn(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),a5(r,a,t,n),e==null||!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Er(e,a);!sn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?nd(e,a):is(e,[],!0);return $.makeTensor(i,s,a)}function $u(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>E(a,`${t}[${s}]`,n,r))}var s5="__op";function O(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+s5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return tf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function t9(e,t){let n=E(e,"real","complex"),r=E(t,"imag","complex");an(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Th,a)}var Ca=O({complex_:t9});function Ea(e,t,n,r){if(r==null&&(r=wh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){ef(t);let a=Dt(t),s=Dt(n);F(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!sn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?nd(e,r):is(e,[],!0),$.makeTensor(e,t,r)}function yr(e,t,n){let r=Er(e,n);return Ea(e,t,r,n)}var mf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},id=4;async function r9(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+id*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var Af=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function o5(e){return Af?Buffer.byteLength(e):new Blob([e]).size}function s9(e){if(Af)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function l5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Du(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:o5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:o5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function o9(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function l9(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function u9(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function a9(){let e=o9(),t=l9(),n=u9();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var St=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return St.instance==null&&(St.instance=new St),St.instance}static registerSaveRouter(e){St.getInstance().saveRouters.push(e)}static registerLoadRouter(e){St.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return St.getHandlers(e,"save")}static getLoadHandlers(e,t){return St.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?St.getInstance().loadRouters:St.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},c9=e=>St.registerSaveRouter(e),h9=e=>St.registerLoadRouter(e),d9=e=>St.getSaveHandlers(e),p9=(e,t)=>St.getLoadHandlers(e,t),gf="tensorflowjs",xf=1,ri="models_store",Ra="model_info_store";function u5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function wf(e){let t=e.result;t.createObjectStore(ri,{keyPath:"modelPath"}),t.createObjectStore(Ra,{keyPath:"modelPath"})}var ai=class{constructor(e){if(this.indexedDB=u5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open(gf,xf);a.onupgradeneeded=()=>wf(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ri,"readonly"),o=i.objectStore(ri).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Du(t),o=s.transaction(Ra,"readwrite"),l=o.objectStore(Ra),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),c;u.onsuccess=()=>{c=s.transaction(ri,"readwrite");let h=c.objectStore(ri).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(Ra);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},u.onerror=h=>(s.close(),r(u.error)),o.oncomplete=()=>{c==null?s.close():c.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};ai.URL_SCHEME="indexeddb://";var c5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ai.URL_SCHEME)?f9(e.slice(ai.URL_SCHEME.length)):null;St.registerSaveRouter(c5);St.registerLoadRouter(c5);function f9(e){return new ai(e)}function m9(e){return e.startsWith(ai.URL_SCHEME)?e.slice(ai.URL_SCHEME.length):e}var A9=class{constructor(){this.indexedDB=u5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(gf,xf);n.onupgradeneeded=()=>wf(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(Ra,"readonly"),s=a.objectStore(Ra).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=m9(e),new Promise((t,n)=>{let r=this.indexedDB.open(gf,xf);r.onupgradeneeded=()=>wf(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(Ra,"readwrite"),i=s.objectStore(Ra),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=i.delete(e),c=()=>{l=a.transaction(ri,"readwrite");let h=l.objectStore(ri).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};u.onsuccess=c,u.onerror=h=>(c(),a.close(),n(o.error))}},o.onerror=u=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},na="/",Qo="tensorflowjs_models",h5="info",y9="model_topology",g9="weight_specs",x9="weight_data",w9="model_metadata";function d5(e){return{info:[Qo,e,h5].join(na),topology:[Qo,e,y9].join(na),weightSpecs:[Qo,e,g9].join(na),weightData:[Qo,e,x9].join(na),modelMetadata:[Qo,e,w9].join(na)}}function _9(e){let t=e.split(na);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(na)}function b9(e){return e.startsWith(si.URL_SCHEME)?e.slice(si.URL_SCHEME.length):e}var si=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=d5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Du(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,s9(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=i9(s),t}};si.URL_SCHEME="localstorage://";var p5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(si.URL_SCHEME)?v9(e.slice(si.URL_SCHEME.length)):null;St.registerSaveRouter(p5);St.registerLoadRouter(p5);function v9(e){return new si(e)}var k9=class{constructor(){F(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Qo+na,n=na+h5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(el)&&(e=e.slice(0,e.indexOf(el))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Gn.getInstance();F(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function od(e){if(e.indexOf(el)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Gn.getSchemes().join(",")}`);return{scheme:e.split(el)[0],path:e.split(el)[1]}}async function f5(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=St.getLoadHandlers(e);F(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=St.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=od(e).scheme,l=od(e).path,u=o===od(e).scheme,c=await a.load();n&&u&&await Gn.getManager(o).removeModel(l);let h=await i.save(c);return n&&!u&&await Gn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function N9(){let e=Gn.getSchemes(),t={};for(let n of e){let r=await Gn.getManager(n).listModels();for(let a in r){let s=n+el+a;t[s]=r[a]}}return t}async function I9(e){let t=od(e);return Gn.getManager(t.scheme).removeModel(t.path)}async function S9(e,t){return f5(e,t,!1)}async function T9(e,t){return f5(e,t,!0)}var C9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new C9);try{Gn.registerManager(si.URL_SCHEME,new k9)}catch(e){}try{Gn.registerManager(ai.URL_SCHEME,new A9)}catch(e){}}var E9={importFetch:()=>T8()},_f,R9=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(_f==null&&(_f=E9.importFetch()),_f(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new R9);function We(e,t="float32",n){return t=t||"float32",ef(e),new Ot(e,t,n)}function F9(e,t){let n=E(e,"x","cast");if(!Lg(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(hs,r,a)}var me=O({cast_:F9});function M9(e){let t={x:E(e,"x","clone","string_or_numeric")};return $.runKernel(ks,t)}var Rr=O({clone_:M9});function m5(e,t=!1){console.log(e.toString(t))}t5();var $9={buffer:We,cast:me,clone:Rr,print:m5};Gk($9);var bn={};ze(bn,{browserFiles:()=>D9,browserHTTPRequest:()=>z9,concatenateArrayBuffers:()=>yf,copyModel:()=>S9,decodeWeights:()=>i5,encodeWeights:()=>r9,fromMemory:()=>P9,getLoadHandlers:()=>p9,getModelArtifactsInfoForJSON:()=>Du,getSaveHandlers:()=>d9,http:()=>vf,isHTTPScheme:()=>bf,listModels:()=>N9,loadWeights:()=>O9,moveModel:()=>T9,registerLoadRouter:()=>h9,registerSaveRouter:()=>c9,removeModel:()=>I9,weightsLoaderFactory:()=>A5,withSaveHandler:()=>L9});var W9="model",B9=".json",V9=".weights.bin";function y5(e){return new Promise(t=>setTimeout(t)).then(e)}var tl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(tl.URL_SCHEME)&&(e=e.slice(tl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=W9),this.modelTopologyFileName=e+B9,this.weightDataFileName=e+V9}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await y5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await y5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Du(e)}}}};tl.URL_SCHEME="downloads://";var U9=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let u;try{u=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let c=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),c.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let _={modelTopology:o,weightSpecs:c,weightData:yf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(_.signature=i.signature),i.userDefinedMetadata!=null&&(_.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(_.modelInitializer=i.modelInitializer),n(_)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(u[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>l5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=l5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},j9=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(tl.URL_SCHEME)?H9(e.slice(tl.URL_SCHEME.length)):null;St.registerSaveRouter(j9);function H9(e="model"){return new tl(e)}function D9(e){return new U9(e)}function g5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(u=>{let c=n+ ++a/e.length*(r-n);return t(c),u}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,u){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),F(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(s))}async function x5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(u=>n(u,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await g5(r,t.onProgress,a,s)).map(u=>u.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await g5(i,t.onProgress,o,l)}async function O9(e,t="",n,r){return A5(a=>x5(a,{requestInit:r}))(e,t,n)}function A5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=mf[y]*Dt(A.shape),_=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((b,w)=>{b===A.name&&(_(),i[w]=!0)}):_(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. +Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),u=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let _=0;_{let b=A.slice(_.groupOffset,_.groupOffset+_.sizeBytes),w=i5(b,[_.manifestEntry]);for(let x in w)h[x]=w[x]}),d+=f}),h}}var G9="application/octet-stream",q9="application/json",kf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(F(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:q9}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:G9}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Du(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let u,c;r!=null&&([u,c]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:u,weightData:c,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=X9(t),a=this.weightPathPrefix||n,s=[];for(let u of e)s.push(...u.weights);let i=[],o=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(c)):i.push(a+c+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await x5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,yf(l)]}};kf.URL_SCHEME_REGEX=/^https?:\/\//;function X9(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function bf(e){return e.match(kf.URL_SCHEME_REGEX)!=null}var w5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>bf(r)):n=bf(e),n)return vf(e,t)}return null};St.registerSaveRouter(w5);St.registerLoadRouter(w5);function vf(e,t){return new kf(e,t)}function z9(e,t){return vf(e,t)}var Nf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},K9=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function P9(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Nf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function L9(e){return new K9(e)}var _5={};ze(_5,{confusionMatrix:()=>Z9});function Y9(e,t,n=!1,r=!1){let a=E(e,"a","matMul"),s=E(t,"b","matMul");[a,s]=bt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(cs,i,o)}var Ge=O({matMul_:Y9});function J9(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:E(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel($s,a,s)}var nl=O({oneHot_:J9});function Q9(e,t){let n=E(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(Js,r,a)}var at=O({transpose_:Q9});function eN(e,t,n){let r=E(e,"labels","confusionMatrix"),a=E(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),F(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),F(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=nl(me(r,"int32"),n),i=nl(me(a,"int32"),n),o=at(s),l=Ge(o,i);return me(l,"int32")}var Z9=O({confusionMatrix_:eN}),rl={};ze(rl,{fromPixels:()=>rN,fromPixelsAsync:()=>tN,toPixels:()=>nN});function ld(e,t,n){if(ss(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Er(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}var al;function b5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(td(ed,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(ed,d,p)}let[l,u]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],c;i?c=e.getContext("2d").getImageData(0,0,l,u).data:r||n?c=e.data:(s||a||o)&&(al==null&&(al=document.createElement("canvas").getContext("2d")),al.canvas.width=l,al.canvas.height=u,al.drawImage(e,0,0,l,u),c=al.getImageData(0,0,l,u).data);let h;if(t===4)h=new Int32Array(c);else{let d=l*u;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(c[0]=p*o,c[1]=p*o,c[2]=p*o):c[d]=p*o}let h=u*4;l[h+0]=Math.round(c[0]),l[h+1]=Math.round(c[1]),l[h+2]=Math.round(c[2]),l[h+3]=Math.round(c[3])}if(t!=null){t.width=a,t.height=r;let u=t.getContext("2d"),c=new ImageData(l,a,r);u.putImageData(c,0,0)}return n!==e&&n.dispose(),l}var rN=O({fromPixels_:b5}),If={};ze(If,{prepareAndValidate:()=>v5});function v5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Dt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/u),1].slice(0,s);return[l,i,u,c]}var Sf={};ze(Sf,{calculateShapes:()=>k5,validateInput:()=>Cf,validateUpdateShape:()=>Tf});function Tf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hlN,computeFlatOffset:()=>cN,computeOutShape:()=>N5,getNormalizedAxes:()=>S5,isSliceContinous:()=>uN,maskToAxes:()=>ud,parseSliceParams:()=>M5,sliceInfo:()=>hN,startForAxis:()=>R5,startIndicesWithElidedDims:()=>T5,stopForAxis:()=>F5,stopIndicesWithElidedDims:()=>C5,stridesForAxis:()=>E5,stridesWithElidedDims:()=>I5});function lN(e,t,n){let r=e.shape.length;F(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),F(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function ud(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function N5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;c=T5(i,p,f,r,e),h=C5(o,p,f,a,e),d=I5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=$5(t,n,o),u=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=$5(t,n,o),u=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=iu(0,i,l-1),i}function F5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=iu(0,i,l):i=iu(-1,i,l-1),i}function uN(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function cN(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function hN(e,t,n,r,a,s,i,o,l){let u=t.slice(),c=n.slice(),h=r;r==null&&(h=new Array(u.length));let d=ud(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-u.length,f=ud(o),m=e.slice();f.forEach(x=>{u[x]=0,c[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=S5(m,d,p,u,c,h,a,s,i);u=A,c=y,h=g;let _=ud(l);_.forEach(x=>{c[x]=u[x]+1,h[x]=1});let b=N5(u,c,h),w=b.filter((x,I)=>_.indexOf(I)===-1);return{nonStrided:h.every(x=>x===1),$begin:u,$end:c,$strides:h,size:b,newShape:m,outShape:w}}var re={};ze(re,{Serializable:()=>O5,SerializationMap:()=>ii,registerClass:()=>Fa});var O5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},ii=class{constructor(){this.classNameMap={}}static getMap(){return ii.instance==null&&(ii.instance=new ii),ii.instance}static register(e){ii.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Fa(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),ii.register(e)}var z5={};ze(z5,{TEST_EPSILON_FLOAT16:()=>P5,encodeStrings:()=>L5,expectArrayBuffersEqual:()=>yN,expectArraysClose:()=>dN,expectArraysEqual:()=>fN,expectNumbersClose:()=>mN,expectPromiseToFail:()=>pN,expectValuesInRange:()=>AN,testEpsilon:()=>Ef});var gN=.001,P5=.1;function dN(e,t,n){return n==null&&(n=Ef()),Rf(e,t,(r,a)=>Ff(r,a,n))}function Ef(){return $.backend.floatPrecision()===32?gN:P5}function Rf(e,t,n){let r=!0;if((sn(e)||sn(t))&&(r=!1),sn(e)&&sn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Er(e),o=Er(t);if(!ta(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=sn(e)?e:is(e),s=sn(t)?t:is(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. Actual: ${a}. Expected: ${s}.`);for(let i=0;it.fail(),()=>t())}function pN(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return va(e)||va(e[0])||va(t)||va(t[0])?Rf(e,n,(r,a)=>r==a):Rf(e,t,(r,a)=>Ff(r,a,0))}function fN(e,t,n){if(n==null&&(n=Ef()),!Ff(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Ff(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function mN(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function AN(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function P5(e){for(let t=0;tt.dispose())}function Gt(e){return $.keep(e)}function vN(e){return $.time(e)}function kN(e){return $.setBackend(e)}function NN(){return $.ready()}function IN(){return $.backendName}function SN(e){$.removeBackend(e)}function $f(e){return $.findBackend(e)}function TN(e){return $.findBackendFactory(e)}function sl(e,t,n=1){return $.registerBackend(e,t,n)}function L5(){return $.backend}function CN(e,t){J().setPlatform(e,t)}function EN(e,t){let n=E(e,"a","add"),r=E(t,"b","add");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Na,a)}var se=O({add_:EN});function RN(e,t){let n=E(e,"a","floorDiv"),r=E(t,"b","floorDiv");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(_s,a)}var hd=O({floorDiv_:RN});function FN(e,t){let n=E(e,"a","div"),r=E(t,"b","div");if([n,r]=bt(n,r),n.dtype==="int32"&&r.dtype==="int32")return hd(n,r);let a={a:n,b:r},s={};return $.runKernel(gs,a,s)}var ge=O({div_:FN});function MN(e,t){let n=E(e,"a","mul"),r=E(t,"b","mul");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ms,a)}var P=O({mul_:MN});function $N(e){let t=E(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(hu,n)}else{let n={x:t};return $.runKernel(Zi,n)}}var zt=O({abs_:$N});function DN(e){let t={x:E(e,"x","acos")};return $.runKernel(Yi,t)}var Df=O({acos_:DN});function ON(e){let t={x:E(e,"x","acosh")};return $.runKernel(Ji,t)}var Of=O({acosh_:ON});function zN(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>E(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!ta(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(os,r)}var Ma=O({addN_:zN});function PN(e,t=null,n=!1){let r={x:E(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(vh,r,a)}var dd=O({all_:PN});function LN(e,t=null,n=!1){let r={x:E(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(kh,r,a)}var Ou=O({any_:LN});function WN(e,t=0){let n={x:E(e,"x","argMax")},r={axis:t};return $.runKernel(ls,n,r)}var zu=O({argMax_:WN});function BN(e,t=0){let n={x:E(e,"x","argMin")},r={axis:t};return $.runKernel(lu,n,r)}var zf=O({argMin_:BN});function VN(e){let t={x:E(e,"x","asin")};return $.runKernel(Qi,t)}var Pf=O({asin_:VN});function UN(e){let t={x:E(e,"x","asinh")};return $.runKernel(eo,t)}var Lf=O({asinh_:UN});function HN(e){let t={x:E(e,"x","atan")};return $.runKernel(to,t)}var Wf=O({atan_:HN});function jN(e,t){let n=E(e,"a","atan2"),r=E(t,"b","atan2");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ro,a)}var Bf=O({atan2_:jN});function GN(e){let t={x:E(e,"x","atanh")};return $.runKernel(no,t)}var Vf=O({atanh_:GN});function qN(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=W5(a);return Pu(e,o,n,s,r,null,null,l)}function B5(e,t,n,r,a,s,i="channelsLast"){let[o,l]=pd(t),u;if(i==="channelsLast")u=[o,l,e[3],e[3]];else if(i==="channelsFirst")u=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Pu(e,u,n,r,a,s,!1,i)}function XN(e,t,n,r,a,s,i="NDHWC"){let[o,l,u]=Uf(t),c,h;if(i==="NDHWC")h="channelsLast",c=[o,l,u,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",c=[o,l,u,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return V5(e,c,n,r,a,!1,h,s)}function Pu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,u,c,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,u,c,h]=e;else if(o==="channelsFirst")[l,h,u,c]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=pd(n),[y,g]=pd(r),_=il(d,y),b=il(p,g),{padInfo:w,outHeight:x,outWidth:I}=KN(a,u,c,m,A,_,b,s,o),S=i?f*h:f,T;return o==="channelsFirst"?T=[l,S,x,I]:o==="channelsLast"&&(T=[l,x,I,S]),{batchSize:l,dataFormat:o,inHeight:u,inWidth:c,inChannels:h,outHeight:x,outWidth:I,outChannels:S,padInfo:w,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:_,effectiveFilterWidth:b,dilationHeight:y,dilationWidth:g,inShape:e,outShape:T,filterShape:t}}function V5(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,u,c,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,u,c,h,d]=e;else if(i==="channelsFirst")[l,d,u,c,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,_]=Uf(n),[b,w,x]=Uf(r),I=il(p,b),S=il(f,w),T=il(m,x),{padInfo:M,outDepth:D,outHeight:z,outWidth:W}=ZN(a,u,c,h,y,g,_,I,S,T,o),U=s?A*d:A,H;return i==="channelsFirst"?H=[l,U,D,z,W]:i==="channelsLast"&&(H=[l,D,z,W,U]),{batchSize:l,dataFormat:i,inDepth:u,inHeight:c,inWidth:h,inChannels:d,outDepth:D,outHeight:z,outWidth:W,outChannels:U,padInfo:M,strideDepth:y,strideHeight:g,strideWidth:_,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:I,effectiveFilterHeight:S,effectiveFilterWidth:T,dilationDepth:b,dilationHeight:w,dilationWidth:x,inShape:e,outShape:H,filterShape:t}}function YN(e,t,n,r,a){r==null&&(r=Hf(e,t,n));let s=e[0],i=e[1],o=oi((s-t+2*r)/n+1,a),l=oi((i-t+2*r)/n+1,a);return[o,l]}function JN(e,t,n,r,a,s){a==null&&(a=Hf(e,t,r));let i=e[0],o=e[1],l=e[2],u=oi((i-t+2*a)/r+1,s),c=oi((o-t+2*a)/r+1,s),h=oi((l-t+2*a)/r+1,s);return[u,c,h,n]}function Hf(e,t,n,r=1){let a=il(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function pd(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function Uf(e){return typeof e=="number"?[e,e,e]:e}function il(e,t){return t<=1?e:e+(e-1)*(t-1)}function KN(e,t,n,r,a,s,i,o,l){let u,c,h;if(typeof e=="number"){u={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=YN([t,n],s,r,e,o);c=d[0],h=d[1]}else if(e==="same"){c=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(c-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;u={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];u={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},c=oi((t-s+d+p)/r+1,o),h=oi((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:u,outHeight:c,outWidth:h}}function ZN(e,t,n,r,a,s,i,o,l,u,c){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=JN([t,n,r,1],o,1,a,e,c);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+u-r,g=Math.floor(m/2),_=m-g,b=Math.floor(A/2),w=A-b,x=Math.floor(y/2),I=y-x;h={top:b,bottom:w,left:x,right:I,front:g,back:_,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-u+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function oi(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function $a(e){let[t,n,r]=pd(e);return t===1&&n===1&&r===1}function Mr(e,t){return $a(e)||$a(t)}function W5(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function QN(e,t){let n={x:E(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Do,n,r)}var G=O({reshape_:QN});function eI(e,t,n,r,a){let s=E(e,"x","avgPool","float32"),i=1;F(Mr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&F(jt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(us,u,c);return h=me(h,s.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Lu=O({avgPool_:eI});function tI(e,t,n,r,a,s="NDHWC"){let i=E(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(uu,u,c);return h=me(h,o.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var jf=O({avgPool3d_:tI});function nI(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=$u(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${s.dtype}. `)}),n.length===1)return Rr(n[0]);let r=n,a={axis:t};return $.runKernel(ao,r,a)}var st=O({concat_:nI});function rI(e){let t={x:E(e,"x","sigmoid")};return $.runKernel(js,t)}var Fn=O({sigmoid_:rI});function aI(e,t,n){let r=E(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Lo,a,s)}var Re=O({slice_:aI});function sI(e){let t={x:E(e,"x","tanh")};return $.runKernel(Ys,t)}var ol=O({tanh_:sI});function iI(e,t,n,r,a,s){let i=E(e,"forgetBias","basicLSTMCell"),o=E(t,"lstmKernel","basicLSTMCell"),l=E(n,"lstmBias","basicLSTMCell"),u=E(r,"data","basicLSTMCell"),c=E(a,"c","basicLSTMCell"),h=E(s,"h","basicLSTMCell"),d=st([u,h],1),p=Ge(d,o),f=se(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=Re(f,[0,0],y),_=Re(f,[0,A],y),b=Re(f,[0,A*2],y),w=Re(f,[0,A*3],y),x=se(P(Fn(g),ol(_)),P(c,Fn(se(i,b)))),I=P(ol(x),Fn(w));return[x,I]}var oI=O({basicLSTMCell_:iI});function lI(e,t,n){let r=E(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);F(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(cu,s,i)}var Wu=O({batchToSpaceND_:lI});function uI(e){let t;return e.rank===0||e.rank===1?t=G(e,[1,1,1,e.size]):e.rank===2?t=G(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function cI(e,t,n,r,a,s){s==null&&(s=.001);let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;r!=null&&(c=E(r,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:uI(i),scale:u,offset:c,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(bs,h,d);return G(p,i.shape)}var li=O({batchNorm_:cI});function hI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var U5=O({batchNorm2d_:hI});function dI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var H5=O({batchNorm3d_:dI});function pI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var j5=O({batchNorm4d_:pI});function fI(e,t,n){let r=E(e,"x","bincount"),a=E(t,"weights","bincount");F(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Sh,s,i)}var G5=O({bincount_:fI});function mI(e,t){let n=E(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,u)=>l>1?u:-1).filter(l=>l>=0).length===0)return Rr(n);let i={x:n},o={reps:s};return $.runKernel(Sa,i,o)}var Bu=O({broadcastTo_:mI});function AI(e){let t={x:E(e,"x","ceil")};return $.runKernel(ds,t)}var Gf=O({ceil_:AI});function yI(e,t,n){let r=E(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(Ia,a,s)}var vn=O({clipByValue_:yI});function gI(e){return st(e,0)}var q5=O({concat1d_:gI});function xI(e,t){return st(e,t)}var ll=O({concat2d_:xI});function wI(e,t){return st(e,t)}var X5=O({concat3d_:wI});function _I(e,t){return st(e,t)}var K5=O({concat4d_:_I});function bI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","conv2d"),l=E(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?u.shape[3]:u.shape[1];F(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:u,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ps,d,p);return c?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ra=O({conv2d_:bI});function vI(e,t,n,r,a="NWC",s=1,i){let o=E(e,"x","conv1d"),l=E(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1]])),F(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F(Mr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=G(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=G(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=ra(d,h,[1,n],r,"NHWC",[1,s],i);return c?G(p,[p.shape[2],p.shape[3]]):G(p,[p.shape[0],p.shape[2],p.shape[3]])}var fd=O({conv1d_:vI});function kI(e,t,n,r,a,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,u=!1;t.rank===3&&(u=!0,l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let c=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[2]}.`),F(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(jt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(fs,d,p);return u?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var qf=O({conv2DBackpropInput_:kI});function NI(e,t,n,r,a,s){let i=E(e,"x","conv2dTranspose"),o=E(t,"filter","conv2dTranspose");return qf(n,i,o,r,a,"NHWC",s)}var md=O({conv2dTranspose_:NI});function II(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=E(e,"x","conv3d"),o=E(t,"filter","conv3d"),l=i,u=!1;i.rank===4&&(u=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F(Mr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let c={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(du,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Xf=O({conv3d_:II});function SI(e,t,n,r,a){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],u=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(u===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${n.shape[4]}.`);let c={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Rh,c,h);return o?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Z5=O({conv3DBackpropInput_:SI});function TI(e,t,n,r,a){let s=E(e,"x","conv3dTranspose"),i=E(t,"filter","conv3dTranspose");return Z5(n,s,i,r,a)}var CI=O({conv3dTranspose_:TI});function EI(e){let t={x:E(e,"x","cos")};return $.runKernel(ms,t)}var Vu=O({cos_:EI});function RI(e){let t={x:E(e,"x","cosh")};return $.runKernel(so,t)}var Ad=O({cosh_:RI});function FI(e,t=0,n=!1,r=!1){let a={x:E(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(As,a,s)}var yd=O({cumsum_:FI});function MI(e,t,n,r=!1){let a=E(e,"x","denseBincount"),s=E(t,"weights","denseBincount");F(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),F(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Fh,i,o)}var Y5=O({denseBincount_:MI});function $I(e,t,n="NHWC"){let r=E(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];F(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying +Expected: ${s}.`)}}function pN(e,t){e().then(()=>t.fail(),()=>t())}function fN(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return va(e)||va(e[0])||va(t)||va(t[0])?Rf(e,n,(r,a)=>r==a):Rf(e,t,(r,a)=>Ff(r,a,0))}function mN(e,t,n){if(n==null&&(n=Ef()),!Ff(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Ff(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function AN(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function yN(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function L5(e){for(let t=0;tt.dispose())}function Gt(e){return $.keep(e)}function kN(e){return $.time(e)}function NN(e){return $.setBackend(e)}function IN(){return $.ready()}function SN(){return $.backendName}function TN(e){$.removeBackend(e)}function $f(e){return $.findBackend(e)}function CN(e){return $.findBackendFactory(e)}function sl(e,t,n=1){return $.registerBackend(e,t,n)}function W5(){return $.backend}function EN(e,t){J().setPlatform(e,t)}function RN(e,t){let n=E(e,"a","add"),r=E(t,"b","add");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Na,a)}var se=O({add_:RN});function FN(e,t){let n=E(e,"a","floorDiv"),r=E(t,"b","floorDiv");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(_s,a)}var hd=O({floorDiv_:FN});function MN(e,t){let n=E(e,"a","div"),r=E(t,"b","div");if([n,r]=bt(n,r),n.dtype==="int32"&&r.dtype==="int32")return hd(n,r);let a={a:n,b:r},s={};return $.runKernel(gs,a,s)}var ge=O({div_:MN});function $N(e,t){let n=E(e,"a","mul"),r=E(t,"b","mul");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ms,a)}var P=O({mul_:$N});function DN(e){let t=E(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(hu,n)}else{let n={x:t};return $.runKernel(Zi,n)}}var zt=O({abs_:DN});function ON(e){let t={x:E(e,"x","acos")};return $.runKernel(Yi,t)}var Df=O({acos_:ON});function zN(e){let t={x:E(e,"x","acosh")};return $.runKernel(Ji,t)}var Of=O({acosh_:zN});function PN(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>E(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!ta(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(os,r)}var Ma=O({addN_:PN});function LN(e,t=null,n=!1){let r={x:E(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(vh,r,a)}var dd=O({all_:LN});function WN(e,t=null,n=!1){let r={x:E(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(kh,r,a)}var Ou=O({any_:WN});function BN(e,t=0){let n={x:E(e,"x","argMax")},r={axis:t};return $.runKernel(ls,n,r)}var zu=O({argMax_:BN});function VN(e,t=0){let n={x:E(e,"x","argMin")},r={axis:t};return $.runKernel(lu,n,r)}var zf=O({argMin_:VN});function UN(e){let t={x:E(e,"x","asin")};return $.runKernel(Qi,t)}var Pf=O({asin_:UN});function HN(e){let t={x:E(e,"x","asinh")};return $.runKernel(eo,t)}var Lf=O({asinh_:HN});function jN(e){let t={x:E(e,"x","atan")};return $.runKernel(to,t)}var Wf=O({atan_:jN});function GN(e,t){let n=E(e,"a","atan2"),r=E(t,"b","atan2");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ro,a)}var Bf=O({atan2_:GN});function qN(e){let t={x:E(e,"x","atanh")};return $.runKernel(no,t)}var Vf=O({atanh_:qN});function XN(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=B5(a);return Pu(e,o,n,s,r,null,null,l)}function V5(e,t,n,r,a,s,i="channelsLast"){let[o,l]=pd(t),u;if(i==="channelsLast")u=[o,l,e[3],e[3]];else if(i==="channelsFirst")u=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Pu(e,u,n,r,a,s,!1,i)}function KN(e,t,n,r,a,s,i="NDHWC"){let[o,l,u]=Uf(t),c,h;if(i==="NDHWC")h="channelsLast",c=[o,l,u,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",c=[o,l,u,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return U5(e,c,n,r,a,!1,h,s)}function Pu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,u,c,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,u,c,h]=e;else if(o==="channelsFirst")[l,h,u,c]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=pd(n),[y,g]=pd(r),_=il(d,y),b=il(p,g),{padInfo:w,outHeight:x,outWidth:I}=ZN(a,u,c,m,A,_,b,s,o),S=i?f*h:f,T;return o==="channelsFirst"?T=[l,S,x,I]:o==="channelsLast"&&(T=[l,x,I,S]),{batchSize:l,dataFormat:o,inHeight:u,inWidth:c,inChannels:h,outHeight:x,outWidth:I,outChannels:S,padInfo:w,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:_,effectiveFilterWidth:b,dilationHeight:y,dilationWidth:g,inShape:e,outShape:T,filterShape:t}}function U5(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,u,c,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,u,c,h,d]=e;else if(i==="channelsFirst")[l,d,u,c,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,_]=Uf(n),[b,w,x]=Uf(r),I=il(p,b),S=il(f,w),T=il(m,x),{padInfo:M,outDepth:D,outHeight:z,outWidth:W}=YN(a,u,c,h,y,g,_,I,S,T,o),U=s?A*d:A,H;return i==="channelsFirst"?H=[l,U,D,z,W]:i==="channelsLast"&&(H=[l,D,z,W,U]),{batchSize:l,dataFormat:i,inDepth:u,inHeight:c,inWidth:h,inChannels:d,outDepth:D,outHeight:z,outWidth:W,outChannels:U,padInfo:M,strideDepth:y,strideHeight:g,strideWidth:_,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:I,effectiveFilterHeight:S,effectiveFilterWidth:T,dilationDepth:b,dilationHeight:w,dilationWidth:x,inShape:e,outShape:H,filterShape:t}}function JN(e,t,n,r,a){r==null&&(r=Hf(e,t,n));let s=e[0],i=e[1],o=oi((s-t+2*r)/n+1,a),l=oi((i-t+2*r)/n+1,a);return[o,l]}function QN(e,t,n,r,a,s){a==null&&(a=Hf(e,t,r));let i=e[0],o=e[1],l=e[2],u=oi((i-t+2*a)/r+1,s),c=oi((o-t+2*a)/r+1,s),h=oi((l-t+2*a)/r+1,s);return[u,c,h,n]}function Hf(e,t,n,r=1){let a=il(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function pd(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function Uf(e){return typeof e=="number"?[e,e,e]:e}function il(e,t){return t<=1?e:e+(e-1)*(t-1)}function ZN(e,t,n,r,a,s,i,o,l){let u,c,h;if(typeof e=="number"){u={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=JN([t,n],s,r,e,o);c=d[0],h=d[1]}else if(e==="same"){c=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(c-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;u={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];u={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},c=oi((t-s+d+p)/r+1,o),h=oi((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:u,outHeight:c,outWidth:h}}function YN(e,t,n,r,a,s,i,o,l,u,c){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=QN([t,n,r,1],o,1,a,e,c);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+u-r,g=Math.floor(m/2),_=m-g,b=Math.floor(A/2),w=A-b,x=Math.floor(y/2),I=y-x;h={top:b,bottom:w,left:x,right:I,front:g,back:_,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-u+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function oi(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function $a(e){let[t,n,r]=pd(e);return t===1&&n===1&&r===1}function Mr(e,t){return $a(e)||$a(t)}function B5(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function eI(e,t){let n={x:E(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Do,n,r)}var G=O({reshape_:eI});function tI(e,t,n,r,a){let s=E(e,"x","avgPool","float32"),i=1;F(Mr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&F(jt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(us,u,c);return h=me(h,s.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Lu=O({avgPool_:tI});function nI(e,t,n,r,a,s="NDHWC"){let i=E(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(uu,u,c);return h=me(h,o.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var jf=O({avgPool3d_:nI});function rI(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=$u(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${s.dtype}. `)}),n.length===1)return Rr(n[0]);let r=n,a={axis:t};return $.runKernel(ao,r,a)}var st=O({concat_:rI});function aI(e){let t={x:E(e,"x","sigmoid")};return $.runKernel(js,t)}var Fn=O({sigmoid_:aI});function sI(e,t,n){let r=E(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Lo,a,s)}var Re=O({slice_:sI});function iI(e){let t={x:E(e,"x","tanh")};return $.runKernel(Ys,t)}var ol=O({tanh_:iI});function oI(e,t,n,r,a,s){let i=E(e,"forgetBias","basicLSTMCell"),o=E(t,"lstmKernel","basicLSTMCell"),l=E(n,"lstmBias","basicLSTMCell"),u=E(r,"data","basicLSTMCell"),c=E(a,"c","basicLSTMCell"),h=E(s,"h","basicLSTMCell"),d=st([u,h],1),p=Ge(d,o),f=se(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=Re(f,[0,0],y),_=Re(f,[0,A],y),b=Re(f,[0,A*2],y),w=Re(f,[0,A*3],y),x=se(P(Fn(g),ol(_)),P(c,Fn(se(i,b)))),I=P(ol(x),Fn(w));return[x,I]}var lI=O({basicLSTMCell_:oI});function uI(e,t,n){let r=E(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);F(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(cu,s,i)}var Wu=O({batchToSpaceND_:uI});function cI(e){let t;return e.rank===0||e.rank===1?t=G(e,[1,1,1,e.size]):e.rank===2?t=G(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function hI(e,t,n,r,a,s){s==null&&(s=.001);let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;r!=null&&(c=E(r,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:cI(i),scale:u,offset:c,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(bs,h,d);return G(p,i.shape)}var li=O({batchNorm_:hI});function dI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var H5=O({batchNorm2d_:dI});function pI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var j5=O({batchNorm3d_:pI});function fI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var G5=O({batchNorm4d_:fI});function mI(e,t,n){let r=E(e,"x","bincount"),a=E(t,"weights","bincount");F(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Sh,s,i)}var q5=O({bincount_:mI});function AI(e,t){let n=E(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,u)=>l>1?u:-1).filter(l=>l>=0).length===0)return Rr(n);let i={x:n},o={reps:s};return $.runKernel(Sa,i,o)}var Bu=O({broadcastTo_:AI});function yI(e){let t={x:E(e,"x","ceil")};return $.runKernel(ds,t)}var Gf=O({ceil_:yI});function gI(e,t,n){let r=E(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(Ia,a,s)}var vn=O({clipByValue_:gI});function xI(e){return st(e,0)}var X5=O({concat1d_:xI});function wI(e,t){return st(e,t)}var ll=O({concat2d_:wI});function _I(e,t){return st(e,t)}var K5=O({concat3d_:_I});function bI(e,t){return st(e,t)}var Z5=O({concat4d_:bI});function vI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","conv2d"),l=E(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?u.shape[3]:u.shape[1];F(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:u,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ps,d,p);return c?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ra=O({conv2d_:vI});function kI(e,t,n,r,a="NWC",s=1,i){let o=E(e,"x","conv1d"),l=E(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1]])),F(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F(Mr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=G(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=G(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=ra(d,h,[1,n],r,"NHWC",[1,s],i);return c?G(p,[p.shape[2],p.shape[3]]):G(p,[p.shape[0],p.shape[2],p.shape[3]])}var fd=O({conv1d_:kI});function NI(e,t,n,r,a,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,u=!1;t.rank===3&&(u=!0,l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let c=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[2]}.`),F(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(jt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(fs,d,p);return u?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var qf=O({conv2DBackpropInput_:NI});function II(e,t,n,r,a,s){let i=E(e,"x","conv2dTranspose"),o=E(t,"filter","conv2dTranspose");return qf(n,i,o,r,a,"NHWC",s)}var md=O({conv2dTranspose_:II});function SI(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=E(e,"x","conv3d"),o=E(t,"filter","conv3d"),l=i,u=!1;i.rank===4&&(u=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F(Mr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let c={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(du,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Xf=O({conv3d_:SI});function TI(e,t,n,r,a){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],u=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(u===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${n.shape[4]}.`);let c={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Rh,c,h);return o?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Y5=O({conv3DBackpropInput_:TI});function CI(e,t,n,r,a){let s=E(e,"x","conv3dTranspose"),i=E(t,"filter","conv3dTranspose");return Y5(n,s,i,r,a)}var EI=O({conv3dTranspose_:CI});function RI(e){let t={x:E(e,"x","cos")};return $.runKernel(ms,t)}var Vu=O({cos_:RI});function FI(e){let t={x:E(e,"x","cosh")};return $.runKernel(so,t)}var Ad=O({cosh_:FI});function MI(e,t=0,n=!1,r=!1){let a={x:E(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(As,a,s)}var yd=O({cumsum_:MI});function $I(e,t,n,r=!1){let a=E(e,"x","denseBincount"),s=E(t,"weights","denseBincount");F(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),F(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Fh,i,o)}var J5=O({denseBincount_:$I});function DI(e,t,n="NHWC"){let r=E(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];F(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying ${a} and ${t} for depthToSpace with input shape ${r.shape}`),F(s*t>=0,()=>`Negative dimension size caused by overflow when multiplying ${s} and ${t} for depthToSpace with input shape - ${r.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(oo,o,l)}var Kf=O({depthToSpace_:$I});function DI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","depthwiseConv2d"),l=E(t,"filter","depthwiseConv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(jt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:u,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(ys,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var ul=O({depthwiseConv2d_:DI});function OI(e){let t={x:E(e,"x","diag")};return $.runKernel(Dh,t)}var zI=O({diag_:OI});function PI(e,t,n,r,a=[1,1],s="NHWC"){let i=E(e,"x","dilation2d"),o=E(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,u=!1;i.rank===3&&(l=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),u=!0);let c={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(pu,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Zf=O({dilation2d_:PI});function LI(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Pt(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function yt(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&an(s.shape,l.shape,"Error in where: ");let u={condition:s,t:o,e:l};return $.runKernel(zo,u)}var kn=O({where_:BI});function VI(e){let t={x:E(e,"x","zerosLike")};return $.runKernel(Xo,t)}var He=O({zerosLike_:VI});function UI(e,t){let n=E(e,"a","div"),r=E(t,"b","div");[n,r]=bt(n,r);let a=ge(n,r),s=He(a),i=Da(r,s);return kn(i,s,a)}var Yf=O({divNoNan_:UI});function HI(e,t){let n=E(e,"t1","dot"),r=E(t,"t2","dot");F((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(F(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=G(n,[1,-1]),o=G(r,[-1,1]),l=Ge(i,o);return G(l,[])}else if(n.rank===1&&r.rank===2){let i=G(n,[1,-1]),o=G(r,[r.shape[0],r.shape[1]]),l=Ge(i,o);return G(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=G(r,[-1,1]),o=Ge(n,i);return G(o,[o.size])}else{let i=G(r,[r.shape[0],r.shape[1]]);return Ge(n,i)}}var J5=O({dot_:HI});function jI(e){let t={x:E(e,"x","elu")};return $.runKernel(lo,t)}var cl=O({elu_:jI});function GI(e){let t=E(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=me(t,"float32"));let n={x:t};return $.runKernel(uo,n)}var Jf=O({erf_:GI});function qI(e){let t={x:E(e,"x","exp")};return $.runKernel(xs,t)}var qn=O({exp_:qI});function XI(e,t=0){let n=E(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(ho,r,a)}var hn=O({expandDims_:XI});function KI(e){let t={x:E(e,"x","expm1")};return $.runKernel(po,t)}var Qf=O({expm1_:KI});function ZI(e,t){let n=E(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Sa,r,a)}var Oa=O({tile_:ZI});function YI(e,t,n,r="float32"){t==null&&(t=e);let a=We([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${s.rank}.`),F(jt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=G(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:t,bias:n,alpha:r,beta:a},c=$.runKernel(yu,l,u);return o?G(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var tm=O({localResponseNormalization_:uS});function cS(e){let t={x:E(e,"x","log")};return $.runKernel(Is,t)}var Mn=O({log_:cS});function hS(e){let t={x:E(e,"x","log1p")};return $.runKernel(vo,t)}var wd=O({log1p_:hS});function dS(e){return F(ka(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=E(t,"x","tf.grad","string_or_numeric"),a=n!=null?E(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),_d(i),i[0]})}}function pS(e){return F(ka(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=$u(t,"args","tf.grads","string_or_numeric"),a=n!=null?E(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(i),i})}}function fS(e){return F(ka(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof Ue,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return _d(r),{grad:r[0],value:a}}}function mS(e){return F(ka(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(a=>a instanceof Ue),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&an(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(r.grads),r}}function rx(e,t){F(ka(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(u=>u instanceof Ru),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let u in $.registeredVariables)t.push($.registeredVariables[u])}let r=n?t.filter(u=>!u.trainable):null,a=t.length;t=t.filter(u=>u.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);F(o.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((u,c)=>{o[c]!=null&&(l[u.name]=o[c])}),r!=null&&r.forEach(u=>l[u.name]=null),{value:i,grads:l}}function $r(e){return $.customGrad(e)}function _d(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function AS(e){let t={x:E(e,"x","neg")};return $.runKernel(Io,t)}var vt=O({neg_:AS});function yS(e){let t={x:E(e,"x","softplus")};return $.runKernel(Vo,t)}var dl=O({softplus_:yS});function gS(e){let t=E(e,"x","logSigmoid");return $r(n=>({value:vt(dl(vt(n))),gradFunc:r=>P(r,Fn(vt(n)))}))(t)}var ax=O({logSigmoid_:gS});function xS(e,t=null,n=!1){let r={x:E(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel(Ss,r,a)}var Xn=O({max_:xS});function wS(e,t){let n=E(e,"a","sub"),r=E(t,"b","sub");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Zs,a)}var ye=O({sub_:wS});function _S(e,t=null,n=!1){let r=E(e,"x","sum");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(qs,a,s)}var Te=O({sum_:_S});function bS(e,t=-1){let n=E(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return $r((r,a)=>{let s=!0,i=Xn(r,t,!0),o=ye(r,i),l=ye(me(o,"float32"),Mn(Te(qn(o),t,s)));return a([l]),{value:l,gradFunc:(u,c)=>{let[h]=c,d=!0,p=qn(h);return ye(u,P(Te(u,t,d),p))}}})(n)}var bd=O({logSoftmax_:bS});function nm(e,t){for(let n=0;ne[s]);return[n,a]}function hi(e,t){let n=t.map(r=>1);return sx(e,n,t)}function vS(e,t,n){F(nm(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function ox(e,t){if(nm(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function rm(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function kS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F(Mr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&F(jt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Cs,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Gu=O({maxPool_:ES});function RS(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=E(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(gu,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var sm=O({maxPool3d_:RS});function FS(e,t,n,r,a=!1){let s={x:E(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(Gh,s,i);return{result:o[0],indexes:o[1]}}var ux=O({maxPoolWithArgmax_:FS});function MS(e,t){let n=E(e,"a","maximum"),r=E(t,"b","maximum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ts,a)}var Dr=O({maximum_:MS});function $S(e,t=null,n=!1){let r={x:E(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(Es,r,a)}var kt=O({mean_:$S});function DS(e,t=null,n=!1){let r={x:E(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Rs,r,a)}var pl=O({min_:DS});function OS(e,t){let n=E(e,"a","minimum"),r=E(t,"b","minimum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Fs,a)}var fl=O({minimum_:OS});function zS(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=E(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(xu,i,s)}var im=O({mirrorPad_:zS});function PS(e,t){let n=E(e,"a","mod"),r=E(t,"b","mod");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(No,a)}var om=O({mod_:PS});function LS(e){let t=E(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var lt=O({square_:LS});function WS(e,t=null,n=!1){e=E(e,"x","moments");let r=tr(t,e.shape),a=kt(e,r,n),s=a.shape;n||(s=hi(a.shape,r));let i=lt(ye(me(e,"float32"),G(a,s))),o=kt(i,r,n);return{mean:a,variance:o}}var kd=O({moments_:WS});function BS(e,t,n,r){let a=E(t,"data","multiRNNCell"),s=$u(n,"c","multiRNNCell"),i=$u(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?G(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},u=$.runKernel(qh,o,l);return i===1?G(u,[u.size]):u}var cx=O({multinomial_:US});function HS(e,t){let n=E(e,"a","notEqual"),r=E(t,"b","notEqual");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(So,a)}var di=O({notEqual_:HS});function Et(e,t="float32"){if(t==="complex64"){let r=Et(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=bh(Dt(e),t);return $.makeTensor(n,e,t)}function Or(e,t="float32"){if(t==="complex64"){let r=Or(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=Q1(Dt(e),t);return $.makeTensor(n,e,t)}function jS(e){let t={x:E(e,"x","onesLike")};return $.runKernel(Ro,t)}var $n=O({onesLike_:jS});function GS(e,t){let n=E(e,"v1","outerProduct"),r=E(t,"v2","outerProduct");F(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=G(n,[-1,1]),s=G(r,[1,-1]);return Ge(a,s)}var qS=O({outerProduct_:GS});function XS(e,t,n=0){let r=E(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel(Ds,s,a)}var aa=O({pad_:XS});function KS(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),aa(e,[t],n)}var ZS=O({pad1d_:KS});function YS(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var JS=O({pad2d_:YS});function QS(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var eT=O({pad3d_:QS});function tT(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var nT=O({pad4d_:tT});function rT(e,t,n){let r=E(e,"x","spaceToBatchND");F(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(bu,a,s)}var qu=O({spaceToBatchND_:rT});function iT(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=E(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F(Mr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let u=B5(o.shape,t,s,a,r),c=[u.dilationHeight,u.dilationWidth],h;r==="same"?h=sT([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];let d=c[0]===1&&c[1]===1,[p,f]=aT([u.inHeight,u.inWidth],c,h),m=d?r:"valid",A=d?o:qu(o,c,p),y=(n==="avg"?()=>Lu(A,t,s,m):()=>Gu(A,t,s,m))(),g=d?y:Wu(y,c,f);return l?G(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function aT(e,t,n){let r=n.map(c=>c[0]),a=n.map(c=>c[1]),s=e.concat(r,a),i=t.map((c,h)=>(c-s[h]%c)%c),o=a.map((c,h)=>c+i[h]),l=t.map((c,h)=>[r[h],o[h]]),u=t.map((c,h)=>[0,i[h]]);return[l,u]}function sT(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var hx=O({pool_:iT});function oT(e,t){let n=E(e,"base","pow"),r=E(t,"exp","pow");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Os,a)}var sa=O({pow_:oT});function lT(e,t){let n=E(e,"x","prelu"),r=E(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(zs,a)}var Xu=O({prelu_:lT});function uT(e,t=null,n=!1){let r=E(e,"x","prod");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Mo,a,s)}var Nd=O({prod_:uT});function cT(e,t,n){let r=Dt(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},dT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=lm.alea(a.toString()),this.randn=new um(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=lm.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function fT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new dT(t,n,r,a),i=We(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Dn(t,0)}var kT=O({reverse1d_:vT});function NT(e,t){let n=E(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Dn(n,t)}var IT=O({reverse2d_:NT});function ST(e,t){let n=E(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Dn(n,t)}var TT=O({reverse3d_:ST});function CT(e,t){let n=E(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Dn(n,t)}var ET=O({reverse4d_:CT});function RT(e){let t={x:E(e,"x","round")};return $.runKernel(Vs,t)}var hm=O({round_:RT});function FT(e){let t={x:E(e,"x","rsqrt")};return $.runKernel(Us,t)}var Td=O({rsqrt_:FT});function be(e,t){if((sn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&sn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Ea(e,[],[],t)}function MT(e){let t={x:E(e,"x","selu")};return $.runKernel(Po,t)}var Cd=O({selu_:MT});function $T(e,t,n,r,a,s=[1,1],i="NHWC"){let o=E(e,"x","separableConv2d"),l=E(t,"depthwiseFilter","separableConv2d"),u=E(n,"pointwiseFilter","separableConv2d"),c=o,h=!1;if(o.rank===3&&(h=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),F(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let d=l.shape[2],p=l.shape[3];F(u.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${u.shape[2]}.`);let f=ul(c,l,r,a,i,s),m=ra(f,u,1,"valid",i);return h?G(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var dm=O({separableConv2d_:$T});async function DT(e,t){let n=E(e,"x","setdiff1d"),r=E(t,"y","setdiff1d");F(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),Re(r,[t],[n])}var Fd=O({slice1d_:LT});function WT(e,t,n){let r=E(e,"x","slice2d");return F(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var fm=O({slice2d_:WT});function BT(e,t,n){let r=E(e,"x","slice3d");return F(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Md=O({slice3d_:BT});function VT(e,t,n){let r=E(e,"x","slice4d");return F(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Zu=O({slice4d_:VT});function UT(e,t=-1){let n=E(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(Xs,r,a)}var Yu=O({softmax_:UT});function HT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Lh,t)}var Ju=O({fft_:HT});function jT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Wh,t)}var Al=O({ifft_:jT});function GT(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=G(e,[n,t]);r=Al(a)}else{let a=[n,2*(t-1)],s=G(Ku(e),[n,t]),i=G(gd(e),[n,t]),o=Dn(Re(s,[0,1],[n,t-2]),1),l=P(Dn(Re(i,[0,1],[n,t-2]),1),be(-1)),u=st([s,o],1),c=st([i,l],1),h=G(Ca(u,c),[a[0],a[1]]);r=Al(h)}if(r=Ku(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=G(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var $d=O({irfft_:GT});function qT(e,t,n=0){let r={x:E(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Uo,r,a)}var Lt=O({split_:qT});function XT(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=Re(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=st([e,Et(f)],e.shape.length-1),n=t}else a=e;let s=He(a),i=G(Ca(a,s),[r,n]),o=Ju(i),l=Math.floor(n/2)+1,u=Ku(o),c=gd(o),h=Lt(u,[l,n-l],u.shape.length-1),d=Lt(c,[l,n-l],c.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,G(Ca(h[0],d[0]),p)}var Qu=O({rfft_:XT});function KT(e){let t={x:E(e,"x","sqrt")};return $.runKernel(Gs,t)}var en=O({sqrt_:KT});function ZT(e,t){let n=E(e,"a","squaredDifference"),r=E(t,"b","squaredDifference");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(Ks,a,s)}var Dd=O({squaredDifference_:ZT});function YT(e,t){let n=E(e,"x","squeeze");return G(n,$g(n.shape,t).newShape)}var Pa=O({squeeze_:YT});function JT(e,t=0){let n=$u(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Fo,r,a)}var dn=O({stack_:JT});function QT(e,t=0){let n={x:E(e,"x","step")},r={alpha:t};return $.runKernel(Ta,n,r)}var yl=O({step_:QT});function eC(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let u={x:E(e,"x","stridedSlice")},c={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(Ho,u,c)}var mm=O({stridedSlice_:eC});function tC(e){let t={x:E(e,"x","tan")};return $.runKernel(jo,t)}var Am=O({tan_:tC});function on(e,t){ss(e);let n=Er(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Ea(e,null,n,t)}function Nn(e,t,n){if(ss(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Er(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Ea(e,t,r,n)}function nC(e,t,n){if(ss(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Er(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function rC(e,t,n){if(ss(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Er(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function aC(e,t,n){if(ss(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Er(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Ea(e,t,r,n)}function sC(e,t=1,n=!0){let r=E(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(Go,s,i);return{values:o,indices:l}}var ym=O({topk_:sC});function iC(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new um(t,n,r,!0,a),i=We(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(Qh,r,a);return{values:s,indices:i}}var zd=O({unique_:oC});function lC(e,t,n){let r=E(e,"x","unsortedSegmentSum"),a=E(t,"segmentIds","unsortedSegmentSum","int32");F(jt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(ku,s,i)}var gm=O({unsortedSegmentSum_:lC});function uC(e,t=0){let n=E(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(qo,r,a)}var sr=O({unstack_:uC});function fx(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function mx(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),an(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=be(1),u=ye(l,o),c=P(ye(i,s),u);if(a){F(r!=null,()=>"When using zeroDebias: true, step is required.");let h=E(r,"step","movingAverage");c=ge(c,ye(l,sa(o,h)))}return se(s,c)}var mC=O({movingAverage_:fC});function AC(e,t,n){let r=E(e,"indices","scatterND","int32"),a=E(t,"updates","scatterND");Cf(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(Oo,s,i)}var yx=O({scatterND_:AC});function yC(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function gC(e,t,n,r=0){let a=E(e,"sparseIndices","sparseToDense","int32"),s=E(t,"sparseValues","sparseToDense"),i=E(r,"defaultValue","sparseToDense",s.dtype);yC(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(Yh,o,l)}var wm=O({sparseToDense_:gC});function xC(e,t){let n=E(t,"indices","gatherND","int32"),r={params:E(e,"x","gatherND"),indices:n};return $.runKernel(Ao,r)}var gx=O({gatherND_:xC});function wC(e,t){if(t==null)return e.shape.slice();if(ta(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ue?a.clone():a;let s=wC(a,n),i=1-t,o=ge(hl(se(ml(s,0,1,"float32",r),i)),i);return P(a,o)}var xx=O({dropout_:_C});function wx(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function _m(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),F(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),an(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,u]=[i.length/s,s],c=Dg("bool",l);for(let h=0;hA.value-m.value),c[h]=0;for(let m=0;mkC,depthwiseConv2d:()=>NC,matMul:()=>IC});function SC(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let u=s==="NHWC"?o.shape[3]:o.shape[1],c=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${n[2]}.`),F(c===n[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${n[3]}).`),i!=null&&F(jt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Ch,h,d)}var bm=O({conv2DBackpropFilter_:SC});function Ld(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,yl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Wd(e,t){let n=t,r=Pt(e.shape,t.shape);return r.length>0&&(n=Te(n,r)),G(n,e.shape)}function Bd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return zr(e);if(t==="elu")return cl(e);if(t==="relu6")return Sd(e);if(t==="prelu")return Xu(e,n);if(t==="leakyrelu")return Hu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var Vd=(e,t)=>!(e>0)||t==="linear";function TC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(l=l||"linear",Vd($.state.gradientDepth,l)===!1){let w=ra(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","conv2d"),d=E(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(jt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=Pu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused conv2d"));let g=(w,x)=>{let[I,S,T,M]=x,D=Ld(w,T,l);F($a(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let z=qf(S.shape,D,I,n,r),W=bm(S,D,I.shape,n,r),U=[z,W];if(M!=null){let H=Wd(M,D);U.push(H)}return U},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ei,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ei,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var kC=O({fusedConv2d_:TC});function CC(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={x:o,dy:l},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(Mh,u,c)}var _x=O({depthwiseConv2dNativeBackpropFilter_:CC});function EC(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={dy:o,filter:n},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel($h,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var bx=O({depthwiseConv2dNativeBackpropInput_:EC});function RC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(Vd($.state.gradientDepth,l)===!1){let w=ul(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","depthwiseConv2d"),d=E(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F(Mr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(jt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=Pu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused depthwiseConv2d"));let g=(w,x)=>{F($a(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[I,S,T,M]=x,D=Ld(w,T,l),z=bx(S.shape,D,I,n,r,s,i),W=_x(S,D,I.shape,n,r,s,i);if(M!=null){let U=Wd(A,D);return[z,W,U]}return[z,W]},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ti,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ti,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var NC=O({fusedDepthwiseConv2d_:RC});function FC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(Vd($.state.gradientDepth,s)===!1){let M=Ge(e,t,n,r);return a!=null&&(M=se(M,a)),Bd(M,s,i,o)}let l=E(e,"a","fused matMul"),u=E(t,"b","fused matMul");[l,u]=bt(l,u);let c=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?u.shape[u.rank-1]:u.shape[u.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?u.shape[u.rank-2]:u.shape[u.rank-1],f=l.shape.slice(0,-2),m=u.shape.slice(0,-2),A=Dt(f),y=Dt(m);F(l.rank>=2&&u.rank>=2&&l.rank===u.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${u.rank}.`),F(ta(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${u.shape} must match.`),F(c===h,()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),_=n?G(l,[A,c,d]):G(l,[A,d,c]),b=r?G(u,[y,p,h]):G(u,[y,h,p]),w;a!=null&&(w=E(a,"bias","fused matMul"),[w]=bt(w,l),yt(g,w.shape));let x;i!=null&&(x=E(i,"prelu weights","fused matMul"));let I=(M,D)=>{let[z,W,U,H]=D,X=Ld(G(M,U.shape),U,s),j,ee;if(!n&&!r?(j=Ge(X,W,!1,!0),ee=Ge(z,X,!0,!1)):!n&&r?(j=Ge(X,W,!1,!1),ee=Ge(X,z,!0,!1)):n&&!r?(j=Ge(W,X,!1,!0),ee=Ge(z,X,!1,!1)):(j=Ge(W,X,!0,!0),ee=Ge(X,z,!0,!0)),a!=null){let Y=Wd(H,X);return[j,ee,Y]}else return[j,ee]},S={a:_,b,bias:w,preluActivationWeights:x},T={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?$r((M,D,z)=>{let W=$.runKernel(Qs,S,T);return z([M,D,W]),{value:G(W,g),gradFunc:I}})(_,b):$r((M,D,z,W)=>{let U=$.runKernel(Qs,S,T);return W([M,D,U,z]),{value:G(U,g),gradFunc:I}})(_,b,w)}var IC=O({fusedMatMul_:FC});function MC(e){return _m(e,.54,.46)}var $C=O({hammingWindow_:MC});function DC(e){return _m(e,.5,.5)}var vx=O({hannWindow_:DC});function OC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push(Re(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${o.shape}.`),F(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),F(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),F(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let c={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(io,c,h)}var WC=O({cropAndResize_:LC});function BC(e){let t=E(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(fo,n,{})}var VC=O({flipLeftRight_:BC});function UC(e,t,n=0,r=.5){let a=E(e,"image","rotateWithOffset","float32");F(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(Ko,s,i)}var HC=O({rotateWithOffset_:UC});function gl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function jC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppression"),i=E(t,"scores","nonMaxSuppression"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(To,{boxes:s,scores:i},l)}var GC=O({nonMaxSuppression_:jC});function XC(e,t,n){let r=qC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function qC(e,t,n){return ZC(e,t,n||KC)}function KC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function Nx(e,t,n,r,a){return vm(e,t,n,r,a,0)}function Ix(e,t,n,r,a,s){return vm(e,t,n,r,a,0,!1,s,!0)}function Sx(e,t,n,r,a,s){return vm(e,t,n,r,a,s,!0)}function vm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let u=[];for(let A=0;Aa&&u.push({score:t[A],boxIndex:A,suppressBeginIndex:0});u.sort(Tx);let c=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=u.pop(),{score:y,boxIndex:g,suppressBeginIndex:_}=A;if(y=_;--w){let x=YC(e,g,h[w]);if(x>=r){b=!0;break}if(A.score=A.score*JC(r,c,x),A.score<=a)break}A.suppressBeginIndex=h.length,b||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&XC(u,A,Tx))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function YC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),u=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;let m=Math.max(s,u),A=Math.max(i,c),y=Math.min(o,h),g=Math.min(l,d),_=Math.max(y-m,0)*Math.max(g-A,0);return _/(p+f-_)}function JC(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function Tx(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function QC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppressionAsync"),i=E(t,"scores","nonMaxSuppressionAsync"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),u=l[0],c=l[1],{selectedIndices:h}=Nx(u,c,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),on(h,"int32")}var eE=QC;function tE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u={boxes:i,scores:o},c={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Eo,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var nE=O({nonMaxSuppressionWithScore_:tE});async function rE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u=await Promise.all([i.data(),o.data()]),c=u[0],h=u[1],{selectedIndices:d,selectedScores:p}=Sx(c,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(d,"int32"),selectedScores:on(p)}}var aE=rE;function sE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Co,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var iE=O({nonMaxSuppressionPadded_:sE});async function oE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Ix(d,p,u,c,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(f,"int32"),validOutputs:be(m,"int32")}}var lE=oE;function uE(e,t,n=!1,r=!1){let a=E(e,"images","resizeBilinear");F(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Ls,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Cx=O({resizeBilinear_:uE});function cE(e,t,n=!1,r=!1){let a=E(e,"images","resizeNearestNeighbor");F(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(_u,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Ex=O({resizeNearestNeighbor_:cE});function hE(e,t,n="nearest",r="constant",a=0,s){let i=E(e,"image","transform","float32"),o=E(t,"transforms","transform","float32");F(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),F(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},u={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(Jh,l,u)}var dE=O({transform_:hE});function pE(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=E(e,"a","bandPart");F(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=G(Id(0,s,1,"int32"),[-1,1]),l=Id(0,i,1,"int32"),u=ye(o,l),c=ar(ci(u,be(+t,"int32")),za(u,be(-n,"int32"))),h=Et([s,i],r.dtype);return G(dn(sr(G(r,[-1,s,i])).map(d=>kn(c,d,h))),a)}var fE=O({bandPart_:pE});function mE(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=Lt(e,e.shape[0],0).map(a=>Pa(a,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Rx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,u)=>l*u),r=sr(G(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[u,c]=Rx(l,t);a.push(u),s.push(c)});let i=G(dn(a,0),e.shape),o=G(dn(s,0),e.shape);return[i,o]}}function Rx(e,t=!1){return $.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=em(n),s=Rr(e),i=Nn([[1]],[1,1]),o=Rr(i),l=n>=r?r:n;for(let u=0;u{let p=Re(s,[u,u],[n-u,1]),f=Pd(p),m=Re(s,[u,u],[1,1]),A=kn(rr(m,0),Nn([[-1]]),Nn([[1]])),y=ye(m,P(A,f)),g=ge(p,y);g.shape[0]===1?o=Rr(i):o=st([i,Re(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let _=vt(ge(Ge(A,y),f)),b=Re(s,[u,0],[n-u,r]),w=P(_,o),x=at(o);if(u===0)s=ye(b,Ge(w,Ge(x,b)));else{let T=ye(b,Ge(w,Ge(x,b)));s=st([Re(s,[0,0],[u,r]),T],0)}let I=at(w),S=Re(a,[0,u],[n,a.shape[1]-u]);if(u===0)a=ye(S,Ge(Ge(S,o),I));else{let T=ye(S,Ge(Ge(S,o),I));a=st([Re(a,[0,0],[n,u]),T],1)}return[o,s,a]}),Ee([c,h,d])}return!t&&n>r&&(a=Re(a,[0,0],[n,r]),s=Re(s,[0,0],[r,r])),[a,s]})}var gE=O({qr_:yE}),pn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(pn||(pn={}));function xE(e,t,n=pn.SUM_BY_NONZERO_WEIGHTS){let r=E(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=E(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===pn.NONE)return s;if(n===pn.SUM)return Te(s);if(n===pn.MEAN){if(a==null)return kt(s);{let i=r.size/a.size,o=ge(Te(s),Te(a));return i>1?ge(o,be(i)):o}}if(n===pn.SUM_BY_NONZERO_WEIGHTS){if(a==null)return ge(Te(s),be(r.size));{let i=P(a,Or(r.shape)),o=me(Te(di(i,be(0))),"float32");return ge(Te(s),o)}}throw Error(`Unknown reduction: ${n}`)}var ia=O({computeWeightedLoss_:xE});function wE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","absoluteDifference"),s=E(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=E(n,"weights","absoluteDifference")),an(a.shape,s.shape,"Error in absoluteDifference: ");let o=zt(ye(a,s));return ia(o,i,r)}var _E=O({absoluteDifference_:wE});function bE(e,t,n,r,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","cosineDistance"),i=E(t,"predictions","cosineDistance"),o=null;r!=null&&(o=E(r,"weights","cosineDistance")),an(s.shape,i.shape,"Error in cosineDistance: ");let l=be(1),u=ye(l,Te(P(s,i),n,!0));return ia(u,o,a)}var vE=O({cosineDistance_:bE});function kE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","hingeLoss"),s=E(t,"predictions","hingeLoss"),i=null;n!=null&&(i=E(n,"weights","hingeLoss")),an(a.shape,s.shape,"Error in hingeLoss: ");let o=be(1);a=ye(P(be(2),a),o);let l=zr(ye(o,P(a,s)));return ia(l,i,r)}var NE=O({hingeLoss_:kE});function IE(e,t,n,r=1,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","huberLoss"),i=E(t,"predictions","huberLoss"),o=null;n!=null&&(o=E(n,"weights","huberLoss")),an(s.shape,i.shape,"Error in huberLoss: ");let l=be(r),u=zt(ye(i,s)),c=fl(u,l),h=ye(u,c),d=se(P(be(.5),lt(c)),P(l,h));return ia(d,o,a)}var SE=O({huberLoss_:IE});function TE(e,t,n,r=1e-7,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","logLoss"),i=E(t,"predictions","logLoss"),o=null;n!=null&&(o=E(n,"weights","logLoss")),an(s.shape,i.shape,"Error in logLoss: ");let l=be(1),u=be(r),c=vt(P(s,Mn(se(i,u)))),h=P(ye(l,s),Mn(se(ye(l,i),u))),d=ye(c,h);return ia(d,o,a)}var CE=O({logLoss_:TE});function EE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","meanSquaredError"),s=E(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=E(n,"weights","meanSquaredError")),an(a.shape,s.shape,"Error in meanSquaredError: ");let o=Dd(a,s);return ia(o,i,r)}var RE=O({meanSquaredError_:EE});function FE(e,t){let n=E(e,"labels","sigmoidCrossEntropyWithLogits"),r=E(t,"logits","sigmoidCrossEntropyWithLogits");an(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=zr(r),s=P(r,n),i=wd(qn(vt(zt(r))));return se(ye(a,s),i)}function ME(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"multiClassLabels","sigmoidCrossEntropy"),i=E(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","sigmoidCrossEntropy")),an(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(.5);s=se(P(s,ye(c,u)),P(h,u))}let l=FE(s,i);return ia(l,o,a)}var $E=O({sigmoidCrossEntropy_:ME});function DE(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return $r((r,a,s)=>{let i=am(a,[n],!0),o=ye(me(a,"float32"),i);s([r,o]);let l=vt(P(o,r));return{value:Te(l,[n]),gradFunc:(u,c)=>{let[h,d]=c,p=hi(u.shape,[n]);return[P(G(u,p),ye(me(h,"float32"),qn(d))),P(G(u,p),ye(qn(d),me(h,"float32")))]}}})(e,t)}function OE(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"onehotLabels","softmaxCrossEntropy"),i=E(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","softmaxCrossEntropy")),an(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(s.shape[1]);s=se(P(s,ye(c,u)),ge(u,h))}let l=DE(s,i);return ia(l,o,a)}var zE=O({softmaxCrossEntropy_:OE}),PE={fft:Ju,ifft:Al,rfft:Qu,irfft:$d},LE={hammingWindow:$C,hannWindow:vx,frame:kx,stft:PC},Je={flipLeftRight:VC,resizeNearestNeighbor:Ex,resizeBilinear:Cx,rotateWithOffset:HC,cropAndResize:WC,nonMaxSuppression:GC,nonMaxSuppressionAsync:eE,nonMaxSuppressionWithScore:nE,nonMaxSuppressionWithScoreAsync:aE,nonMaxSuppressionPadded:iE,nonMaxSuppressionPaddedAsync:lE,transform:dE},Fx={bandPart:fE,gramSchmidt:AE,qr:gE},WE={absoluteDifference:_E,computeWeightedLoss:ia,cosineDistance:vE,hingeLoss:NE,huberLoss:SE,logLoss:CE,meanSquaredError:RE,sigmoidCrossEntropy:$E,softmaxCrossEntropy:zE},oa=class extends D5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Ee(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return rx(e,t)}dispose(){this.iterations_!=null&&Ee(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:be(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(oa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var Ud=class extends oa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:B(()=>He(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;B(()=>{let l=se(P(i,this.rho),P(lt(s),1-this.rho)),u=P(ge(en(se(o,this.epsilon)),en(se(i,this.epsilon))),s),c=se(P(o,this.rho),P(lt(u),1-this.rho));i.assign(l),o.assign(c);let h=se(P(u,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ee(this.accumulatedGrads.map(e=>e.variable)),Ee(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};Ud.className="Adadelta";Fa(Ud);var Hd=class extends oa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:B(()=>Uu(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;B(()=>{let i=se(s,lt(a));s.assign(i);let o=se(P(ge(a,en(se(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ee(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};Hd.className="Adagrad";Fa(Hd);var jd=class extends oa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],B(()=>{this.accBeta1=be(t).variable(),this.accBeta2=be(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ye(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:B(()=>He(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:B(()=>He(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedSecondMoment[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=se(P(c,this.beta2),P(lt(l),1-this.beta2)),p=ge(h,n),f=ge(d,r);u.assign(h),c.assign(d);let m=se(P(ge(p,se(en(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ee(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),B(()=>{this.accBeta1.assign(sa(this.beta1,this.iterations_+1)),this.accBeta2.assign(sa(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};jd.className="Adam";Fa(jd);var Gd=class extends oa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],B(()=>{this.iteration=be(0).variable(),this.accBeta1=be(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ge(-this.learningRate,se(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:He(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:He(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedWeightedInfNorm[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=P(c,this.beta2),p=zt(l),f=Dr(d,p);u.assign(h),c.assign(f);let m=se(P(ge(r,n),ge(h,se(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(se(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ee(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};Gd.className="Adamax";Fa(Gd);var ec=class extends oa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];B(()=>{let s=se(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Gt(be(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};ec.className="SGD";Fa(ec);var qd=class extends ec{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=be(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&B(()=>{let i,o=se(P(this.m,a),s);this.useNesterov?i=se(P(this.c,se(s,P(o,this.m))),r):i=se(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ee(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};qd.className="Momentum";Fa(qd);var Xd=class extends oa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:B(()=>He(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;B(()=>{let l=se(P(i,this.decay),P(lt(s),1-this.decay));if(this.centered){let u=this.accumulatedMeanGrads[n].variable,c=se(P(u,this.decay),P(s,1-this.decay)),h=ge(P(s,this.learningRate),en(ye(l,se(lt(c),this.epsilon)))),d=se(P(o,this.momentum),h);i.assign(l),u.assign(c),o.assign(d);let p=ye(r,d);r.assign(p)}else{let u=se(P(i,this.decay),P(lt(s),1-this.decay)),c=se(P(o,this.momentum),ge(P(s,this.learningRate),en(se(u,this.epsilon))));i.assign(u),o.assign(c);let h=ye(r,c);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ee(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ee(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ee(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};Xd.className="RMSProp";Fa(Xd);var pi=class{static sgd(e){return new ec(e)}static momentum(e,t,n=!1){return new qd(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new Xd(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new jd(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new Ud(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new Gd(e,t,n,r,a)}static adagrad(e,t=.1){return new Hd(e,t)}},fi={sgd:pi.sgd,momentum:pi.momentum,adadelta:pi.adadelta,adagrad:pi.adagrad,rmsprop:pi.rmsprop,adamax:pi.adamax,adam:pi.adam},BE=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Kd(){return new Promise(e=>BE(()=>e()))}var R={};ze(R,{ERF_A1:()=>JE,ERF_A2:()=>QE,ERF_A3:()=>eR,ERF_A4:()=>tR,ERF_A5:()=>nR,ERF_P:()=>YE,PARALLELIZE_THRESHOLD:()=>km,SELU_SCALE:()=>$x,SELU_SCALEALPHA:()=>Mx,applyActivation:()=>Bd,assertAndGetBroadcastShape:()=>yt,assertAxesAreInnerMostDims:()=>vS,assertParamsConsistent:()=>VE,assignToTypedArray:()=>cR,axesAreInnerMostDims:()=>nm,calculateShapes:()=>v5,combineLocations:()=>sx,complexWithEvenIndex:()=>oR,complexWithOddIndex:()=>lR,computeConv2DInfo:()=>Pu,computeConv3DInfo:()=>V5,computeDefaultPad:()=>Hf,computeDilation2DInfo:()=>qN,computeOptimalWindowSize:()=>HE,computeOutAndReduceShapes:()=>ix,computeOutShape:()=>UE,computePool2DInfo:()=>B5,computePool3DInfo:()=>XN,convertConv2DDataFormat:()=>W5,eitherStridesOrDilationsAreOne:()=>Mr,expandShapeToKeepDim:()=>hi,exponent:()=>dR,exponents:()=>hR,fromStringArrayToUint8:()=>mR,fromUint8ToStringArray:()=>fR,getAxesPermutation:()=>ox,getBroadcastDims:()=>LI,getComplexWithIndex:()=>uR,getFusedBiasGradient:()=>Wd,getFusedDyActivation:()=>Ld,getImageCenter:()=>jE,getInnerMostAxes:()=>kS,getPermuted:()=>qE,getReductionAxes:()=>Pt,getReshaped:()=>GE,getReshapedPermuted:()=>XE,getSliceBeginCoords:()=>KE,getSliceSize:()=>ZE,getUndoAxesPermutation:()=>rm,log:()=>aR,mergeRealAndImagArrays:()=>sR,prepareAndValidate:()=>b5,prepareSplitSize:()=>pR,segment_util:()=>Dx,shouldFuse:()=>Vd,slice_util:()=>cn,splitRealAndImagArrays:()=>iR,tupleValuesAreOne:()=>$a,upcastType:()=>nr,validateInput:()=>Cf,validateUpdateShape:()=>Tf,warn:()=>rR});function VE(e,t){let n=e[0].length;e.forEach((a,s)=>{F(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function UE(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function XE(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var Dx={};ze(Dx,{collectGatherOpShapeInfo:()=>gR,computeOutShape:()=>yR,segOpComputeOptimalWindowSize:()=>AR});function AR(e,t){let n=!1,r;for(e<=km?(r=e,n=!0):r=_h(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=_h(e,r+1);return r}function yR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( - ${s}).`);if(nrd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function mR(e){return e.map(t=>Su(t))}var Pr={};ze(Pr,{nonMaxSuppressionV3Impl:()=>Nx,nonMaxSuppressionV4Impl:()=>Ix,nonMaxSuppressionV5Impl:()=>Sx,whereImpl:()=>mx});function _e(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var xR=Pr.whereImpl,Zd=class extends su{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new xh(this,Fr())}nextDataId(){return Zd.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` + ${r.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(oo,o,l)}var Kf=O({depthToSpace_:DI});function OI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","depthwiseConv2d"),l=E(t,"filter","depthwiseConv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(jt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:u,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(ys,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var ul=O({depthwiseConv2d_:OI});function zI(e){let t={x:E(e,"x","diag")};return $.runKernel(Dh,t)}var PI=O({diag_:zI});function LI(e,t,n,r,a=[1,1],s="NHWC"){let i=E(e,"x","dilation2d"),o=E(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,u=!1;i.rank===3&&(l=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),u=!0);let c={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(pu,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Zf=O({dilation2d_:LI});function WI(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Pt(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function yt(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&an(s.shape,l.shape,"Error in where: ");let u={condition:s,t:o,e:l};return $.runKernel(zo,u)}var kn=O({where_:VI});function UI(e){let t={x:E(e,"x","zerosLike")};return $.runKernel(Xo,t)}var He=O({zerosLike_:UI});function HI(e,t){let n=E(e,"a","div"),r=E(t,"b","div");[n,r]=bt(n,r);let a=ge(n,r),s=He(a),i=Da(r,s);return kn(i,s,a)}var Yf=O({divNoNan_:HI});function jI(e,t){let n=E(e,"t1","dot"),r=E(t,"t2","dot");F((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(F(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=G(n,[1,-1]),o=G(r,[-1,1]),l=Ge(i,o);return G(l,[])}else if(n.rank===1&&r.rank===2){let i=G(n,[1,-1]),o=G(r,[r.shape[0],r.shape[1]]),l=Ge(i,o);return G(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=G(r,[-1,1]),o=Ge(n,i);return G(o,[o.size])}else{let i=G(r,[r.shape[0],r.shape[1]]);return Ge(n,i)}}var Q5=O({dot_:jI});function GI(e){let t={x:E(e,"x","elu")};return $.runKernel(lo,t)}var cl=O({elu_:GI});function qI(e){let t=E(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=me(t,"float32"));let n={x:t};return $.runKernel(uo,n)}var Jf=O({erf_:qI});function XI(e){let t={x:E(e,"x","exp")};return $.runKernel(xs,t)}var qn=O({exp_:XI});function KI(e,t=0){let n=E(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(ho,r,a)}var hn=O({expandDims_:KI});function ZI(e){let t={x:E(e,"x","expm1")};return $.runKernel(po,t)}var Qf=O({expm1_:ZI});function YI(e,t){let n=E(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Sa,r,a)}var Oa=O({tile_:YI});function JI(e,t,n,r="float32"){t==null&&(t=e);let a=We([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${s.rank}.`),F(jt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=G(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:t,bias:n,alpha:r,beta:a},c=$.runKernel(yu,l,u);return o?G(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var tm=O({localResponseNormalization_:cS});function hS(e){let t={x:E(e,"x","log")};return $.runKernel(Is,t)}var Mn=O({log_:hS});function dS(e){let t={x:E(e,"x","log1p")};return $.runKernel(vo,t)}var wd=O({log1p_:dS});function pS(e){return F(ka(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=E(t,"x","tf.grad","string_or_numeric"),a=n!=null?E(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),_d(i),i[0]})}}function fS(e){return F(ka(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=$u(t,"args","tf.grads","string_or_numeric"),a=n!=null?E(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(i),i})}}function mS(e){return F(ka(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof Ue,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return _d(r),{grad:r[0],value:a}}}function AS(e){return F(ka(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(a=>a instanceof Ue),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&an(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(r.grads),r}}function ax(e,t){F(ka(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(u=>u instanceof Ru),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let u in $.registeredVariables)t.push($.registeredVariables[u])}let r=n?t.filter(u=>!u.trainable):null,a=t.length;t=t.filter(u=>u.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);F(o.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((u,c)=>{o[c]!=null&&(l[u.name]=o[c])}),r!=null&&r.forEach(u=>l[u.name]=null),{value:i,grads:l}}function $r(e){return $.customGrad(e)}function _d(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function yS(e){let t={x:E(e,"x","neg")};return $.runKernel(Io,t)}var vt=O({neg_:yS});function gS(e){let t={x:E(e,"x","softplus")};return $.runKernel(Vo,t)}var dl=O({softplus_:gS});function xS(e){let t=E(e,"x","logSigmoid");return $r(n=>({value:vt(dl(vt(n))),gradFunc:r=>P(r,Fn(vt(n)))}))(t)}var sx=O({logSigmoid_:xS});function wS(e,t=null,n=!1){let r={x:E(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel(Ss,r,a)}var Xn=O({max_:wS});function _S(e,t){let n=E(e,"a","sub"),r=E(t,"b","sub");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Zs,a)}var ye=O({sub_:_S});function bS(e,t=null,n=!1){let r=E(e,"x","sum");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(qs,a,s)}var Te=O({sum_:bS});function vS(e,t=-1){let n=E(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return $r((r,a)=>{let s=!0,i=Xn(r,t,!0),o=ye(r,i),l=ye(me(o,"float32"),Mn(Te(qn(o),t,s)));return a([l]),{value:l,gradFunc:(u,c)=>{let[h]=c,d=!0,p=qn(h);return ye(u,P(Te(u,t,d),p))}}})(n)}var bd=O({logSoftmax_:vS});function nm(e,t){for(let n=0;ne[s]);return[n,a]}function hi(e,t){let n=t.map(r=>1);return ix(e,n,t)}function kS(e,t,n){F(nm(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function lx(e,t){if(nm(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function rm(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function NS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F(Mr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&F(jt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Cs,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Gu=O({maxPool_:RS});function FS(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=E(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(gu,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var sm=O({maxPool3d_:FS});function MS(e,t,n,r,a=!1){let s={x:E(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(Gh,s,i);return{result:o[0],indexes:o[1]}}var cx=O({maxPoolWithArgmax_:MS});function $S(e,t){let n=E(e,"a","maximum"),r=E(t,"b","maximum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ts,a)}var Dr=O({maximum_:$S});function DS(e,t=null,n=!1){let r={x:E(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(Es,r,a)}var kt=O({mean_:DS});function OS(e,t=null,n=!1){let r={x:E(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Rs,r,a)}var pl=O({min_:OS});function zS(e,t){let n=E(e,"a","minimum"),r=E(t,"b","minimum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Fs,a)}var fl=O({minimum_:zS});function PS(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=E(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(xu,i,s)}var im=O({mirrorPad_:PS});function LS(e,t){let n=E(e,"a","mod"),r=E(t,"b","mod");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(No,a)}var om=O({mod_:LS});function WS(e){let t=E(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var lt=O({square_:WS});function BS(e,t=null,n=!1){e=E(e,"x","moments");let r=tr(t,e.shape),a=kt(e,r,n),s=a.shape;n||(s=hi(a.shape,r));let i=lt(ye(me(e,"float32"),G(a,s))),o=kt(i,r,n);return{mean:a,variance:o}}var kd=O({moments_:BS});function VS(e,t,n,r){let a=E(t,"data","multiRNNCell"),s=$u(n,"c","multiRNNCell"),i=$u(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?G(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},u=$.runKernel(qh,o,l);return i===1?G(u,[u.size]):u}var hx=O({multinomial_:HS});function jS(e,t){let n=E(e,"a","notEqual"),r=E(t,"b","notEqual");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(So,a)}var di=O({notEqual_:jS});function Et(e,t="float32"){if(t==="complex64"){let r=Et(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=bh(Dt(e),t);return $.makeTensor(n,e,t)}function Or(e,t="float32"){if(t==="complex64"){let r=Or(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=Q1(Dt(e),t);return $.makeTensor(n,e,t)}function GS(e){let t={x:E(e,"x","onesLike")};return $.runKernel(Ro,t)}var $n=O({onesLike_:GS});function qS(e,t){let n=E(e,"v1","outerProduct"),r=E(t,"v2","outerProduct");F(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=G(n,[-1,1]),s=G(r,[1,-1]);return Ge(a,s)}var XS=O({outerProduct_:qS});function KS(e,t,n=0){let r=E(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel(Ds,s,a)}var aa=O({pad_:KS});function ZS(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),aa(e,[t],n)}var YS=O({pad1d_:ZS});function JS(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var QS=O({pad2d_:JS});function eT(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var tT=O({pad3d_:eT});function nT(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var rT=O({pad4d_:nT});function aT(e,t,n){let r=E(e,"x","spaceToBatchND");F(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(bu,a,s)}var qu=O({spaceToBatchND_:aT});function oT(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=E(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F(Mr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let u=V5(o.shape,t,s,a,r),c=[u.dilationHeight,u.dilationWidth],h;r==="same"?h=iT([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];let d=c[0]===1&&c[1]===1,[p,f]=sT([u.inHeight,u.inWidth],c,h),m=d?r:"valid",A=d?o:qu(o,c,p),y=(n==="avg"?()=>Lu(A,t,s,m):()=>Gu(A,t,s,m))(),g=d?y:Wu(y,c,f);return l?G(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function sT(e,t,n){let r=n.map(c=>c[0]),a=n.map(c=>c[1]),s=e.concat(r,a),i=t.map((c,h)=>(c-s[h]%c)%c),o=a.map((c,h)=>c+i[h]),l=t.map((c,h)=>[r[h],o[h]]),u=t.map((c,h)=>[0,i[h]]);return[l,u]}function iT(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var dx=O({pool_:oT});function lT(e,t){let n=E(e,"base","pow"),r=E(t,"exp","pow");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Os,a)}var sa=O({pow_:lT});function uT(e,t){let n=E(e,"x","prelu"),r=E(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(zs,a)}var Xu=O({prelu_:uT});function cT(e,t=null,n=!1){let r=E(e,"x","prod");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Mo,a,s)}var Nd=O({prod_:cT});function hT(e,t,n){let r=Dt(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},pT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=lm.alea(a.toString()),this.randn=new um(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=lm.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function mT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new pT(t,n,r,a),i=We(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Dn(t,0)}var NT=O({reverse1d_:kT});function IT(e,t){let n=E(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Dn(n,t)}var ST=O({reverse2d_:IT});function TT(e,t){let n=E(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Dn(n,t)}var CT=O({reverse3d_:TT});function ET(e,t){let n=E(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Dn(n,t)}var RT=O({reverse4d_:ET});function FT(e){let t={x:E(e,"x","round")};return $.runKernel(Vs,t)}var hm=O({round_:FT});function MT(e){let t={x:E(e,"x","rsqrt")};return $.runKernel(Us,t)}var Td=O({rsqrt_:MT});function be(e,t){if((sn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&sn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Ea(e,[],[],t)}function $T(e){let t={x:E(e,"x","selu")};return $.runKernel(Po,t)}var Cd=O({selu_:$T});function DT(e,t,n,r,a,s=[1,1],i="NHWC"){let o=E(e,"x","separableConv2d"),l=E(t,"depthwiseFilter","separableConv2d"),u=E(n,"pointwiseFilter","separableConv2d"),c=o,h=!1;if(o.rank===3&&(h=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),F(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let d=l.shape[2],p=l.shape[3];F(u.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${u.shape[2]}.`);let f=ul(c,l,r,a,i,s),m=ra(f,u,1,"valid",i);return h?G(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var dm=O({separableConv2d_:DT});async function OT(e,t){let n=E(e,"x","setdiff1d"),r=E(t,"y","setdiff1d");F(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),Re(r,[t],[n])}var Fd=O({slice1d_:WT});function BT(e,t,n){let r=E(e,"x","slice2d");return F(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var fm=O({slice2d_:BT});function VT(e,t,n){let r=E(e,"x","slice3d");return F(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Md=O({slice3d_:VT});function UT(e,t,n){let r=E(e,"x","slice4d");return F(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Zu=O({slice4d_:UT});function HT(e,t=-1){let n=E(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(Xs,r,a)}var Yu=O({softmax_:HT});function jT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Lh,t)}var Ju=O({fft_:jT});function GT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Wh,t)}var Al=O({ifft_:GT});function qT(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=G(e,[n,t]);r=Al(a)}else{let a=[n,2*(t-1)],s=G(Ku(e),[n,t]),i=G(gd(e),[n,t]),o=Dn(Re(s,[0,1],[n,t-2]),1),l=P(Dn(Re(i,[0,1],[n,t-2]),1),be(-1)),u=st([s,o],1),c=st([i,l],1),h=G(Ca(u,c),[a[0],a[1]]);r=Al(h)}if(r=Ku(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=G(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var $d=O({irfft_:qT});function XT(e,t,n=0){let r={x:E(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Uo,r,a)}var Lt=O({split_:XT});function KT(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=Re(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=st([e,Et(f)],e.shape.length-1),n=t}else a=e;let s=He(a),i=G(Ca(a,s),[r,n]),o=Ju(i),l=Math.floor(n/2)+1,u=Ku(o),c=gd(o),h=Lt(u,[l,n-l],u.shape.length-1),d=Lt(c,[l,n-l],c.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,G(Ca(h[0],d[0]),p)}var Qu=O({rfft_:KT});function ZT(e){let t={x:E(e,"x","sqrt")};return $.runKernel(Gs,t)}var en=O({sqrt_:ZT});function YT(e,t){let n=E(e,"a","squaredDifference"),r=E(t,"b","squaredDifference");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(Ks,a,s)}var Dd=O({squaredDifference_:YT});function JT(e,t){let n=E(e,"x","squeeze");return G(n,Dg(n.shape,t).newShape)}var Pa=O({squeeze_:JT});function QT(e,t=0){let n=$u(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Fo,r,a)}var dn=O({stack_:QT});function eC(e,t=0){let n={x:E(e,"x","step")},r={alpha:t};return $.runKernel(Ta,n,r)}var yl=O({step_:eC});function tC(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let u={x:E(e,"x","stridedSlice")},c={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(Ho,u,c)}var mm=O({stridedSlice_:tC});function nC(e){let t={x:E(e,"x","tan")};return $.runKernel(jo,t)}var Am=O({tan_:nC});function on(e,t){ss(e);let n=Er(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Ea(e,null,n,t)}function Nn(e,t,n){if(ss(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Er(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Ea(e,t,r,n)}function rC(e,t,n){if(ss(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Er(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function aC(e,t,n){if(ss(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Er(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function sC(e,t,n){if(ss(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Er(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Ea(e,t,r,n)}function iC(e,t=1,n=!0){let r=E(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(Go,s,i);return{values:o,indices:l}}var ym=O({topk_:iC});function oC(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new um(t,n,r,!0,a),i=We(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(Qh,r,a);return{values:s,indices:i}}var zd=O({unique_:lC});function uC(e,t,n){let r=E(e,"x","unsortedSegmentSum"),a=E(t,"segmentIds","unsortedSegmentSum","int32");F(jt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(ku,s,i)}var gm=O({unsortedSegmentSum_:uC});function cC(e,t=0){let n=E(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(qo,r,a)}var sr=O({unstack_:cC});function mx(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function Ax(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),an(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=be(1),u=ye(l,o),c=P(ye(i,s),u);if(a){F(r!=null,()=>"When using zeroDebias: true, step is required.");let h=E(r,"step","movingAverage");c=ge(c,ye(l,sa(o,h)))}return se(s,c)}var AC=O({movingAverage_:mC});function yC(e,t,n){let r=E(e,"indices","scatterND","int32"),a=E(t,"updates","scatterND");Cf(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(Oo,s,i)}var gx=O({scatterND_:yC});function gC(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function xC(e,t,n,r=0){let a=E(e,"sparseIndices","sparseToDense","int32"),s=E(t,"sparseValues","sparseToDense"),i=E(r,"defaultValue","sparseToDense",s.dtype);gC(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(Yh,o,l)}var wm=O({sparseToDense_:xC});function wC(e,t){let n=E(t,"indices","gatherND","int32"),r={params:E(e,"x","gatherND"),indices:n};return $.runKernel(Ao,r)}var xx=O({gatherND_:wC});function _C(e,t){if(t==null)return e.shape.slice();if(ta(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ue?a.clone():a;let s=_C(a,n),i=1-t,o=ge(hl(se(ml(s,0,1,"float32",r),i)),i);return P(a,o)}var wx=O({dropout_:bC});function _x(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function _m(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),F(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),an(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,u]=[i.length/s,s],c=Og("bool",l);for(let h=0;hA.value-m.value),c[h]=0;for(let m=0;mNC,depthwiseConv2d:()=>IC,matMul:()=>SC});function TC(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let u=s==="NHWC"?o.shape[3]:o.shape[1],c=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${n[2]}.`),F(c===n[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${n[3]}).`),i!=null&&F(jt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Ch,h,d)}var bm=O({conv2DBackpropFilter_:TC});function Ld(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,yl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Wd(e,t){let n=t,r=Pt(e.shape,t.shape);return r.length>0&&(n=Te(n,r)),G(n,e.shape)}function Bd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return zr(e);if(t==="elu")return cl(e);if(t==="relu6")return Sd(e);if(t==="prelu")return Xu(e,n);if(t==="leakyrelu")return Hu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var Vd=(e,t)=>!(e>0)||t==="linear";function CC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(l=l||"linear",Vd($.state.gradientDepth,l)===!1){let w=ra(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","conv2d"),d=E(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(jt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=Pu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused conv2d"));let g=(w,x)=>{let[I,S,T,M]=x,D=Ld(w,T,l);F($a(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let z=qf(S.shape,D,I,n,r),W=bm(S,D,I.shape,n,r),U=[z,W];if(M!=null){let H=Wd(M,D);U.push(H)}return U},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ei,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ei,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var NC=O({fusedConv2d_:CC});function EC(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={x:o,dy:l},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(Mh,u,c)}var bx=O({depthwiseConv2dNativeBackpropFilter_:EC});function RC(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={dy:o,filter:n},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel($h,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var vx=O({depthwiseConv2dNativeBackpropInput_:RC});function FC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(Vd($.state.gradientDepth,l)===!1){let w=ul(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","depthwiseConv2d"),d=E(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F(Mr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(jt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=Pu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused depthwiseConv2d"));let g=(w,x)=>{F($a(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[I,S,T,M]=x,D=Ld(w,T,l),z=vx(S.shape,D,I,n,r,s,i),W=bx(S,D,I.shape,n,r,s,i);if(M!=null){let U=Wd(A,D);return[z,W,U]}return[z,W]},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ti,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ti,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var IC=O({fusedDepthwiseConv2d_:FC});function MC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(Vd($.state.gradientDepth,s)===!1){let M=Ge(e,t,n,r);return a!=null&&(M=se(M,a)),Bd(M,s,i,o)}let l=E(e,"a","fused matMul"),u=E(t,"b","fused matMul");[l,u]=bt(l,u);let c=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?u.shape[u.rank-1]:u.shape[u.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?u.shape[u.rank-2]:u.shape[u.rank-1],f=l.shape.slice(0,-2),m=u.shape.slice(0,-2),A=Dt(f),y=Dt(m);F(l.rank>=2&&u.rank>=2&&l.rank===u.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${u.rank}.`),F(ta(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${u.shape} must match.`),F(c===h,()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),_=n?G(l,[A,c,d]):G(l,[A,d,c]),b=r?G(u,[y,p,h]):G(u,[y,h,p]),w;a!=null&&(w=E(a,"bias","fused matMul"),[w]=bt(w,l),yt(g,w.shape));let x;i!=null&&(x=E(i,"prelu weights","fused matMul"));let I=(M,D)=>{let[z,W,U,H]=D,X=Ld(G(M,U.shape),U,s),j,ee;if(!n&&!r?(j=Ge(X,W,!1,!0),ee=Ge(z,X,!0,!1)):!n&&r?(j=Ge(X,W,!1,!1),ee=Ge(X,z,!0,!1)):n&&!r?(j=Ge(W,X,!1,!0),ee=Ge(z,X,!1,!1)):(j=Ge(W,X,!0,!0),ee=Ge(X,z,!0,!0)),a!=null){let Y=Wd(H,X);return[j,ee,Y]}else return[j,ee]},S={a:_,b,bias:w,preluActivationWeights:x},T={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?$r((M,D,z)=>{let W=$.runKernel(Qs,S,T);return z([M,D,W]),{value:G(W,g),gradFunc:I}})(_,b):$r((M,D,z,W)=>{let U=$.runKernel(Qs,S,T);return W([M,D,U,z]),{value:G(U,g),gradFunc:I}})(_,b,w)}var SC=O({fusedMatMul_:MC});function $C(e){return _m(e,.54,.46)}var DC=O({hammingWindow_:$C});function OC(e){return _m(e,.5,.5)}var kx=O({hannWindow_:OC});function zC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push(Re(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${o.shape}.`),F(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),F(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),F(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let c={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(io,c,h)}var BC=O({cropAndResize_:WC});function VC(e){let t=E(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(fo,n,{})}var UC=O({flipLeftRight_:VC});function HC(e,t,n=0,r=.5){let a=E(e,"image","rotateWithOffset","float32");F(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(Ko,s,i)}var jC=O({rotateWithOffset_:HC});function gl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function GC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppression"),i=E(t,"scores","nonMaxSuppression"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(To,{boxes:s,scores:i},l)}var qC=O({nonMaxSuppression_:GC});function KC(e,t,n){let r=XC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function XC(e,t,n){return YC(e,t,n||ZC)}function ZC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function Ix(e,t,n,r,a){return vm(e,t,n,r,a,0)}function Sx(e,t,n,r,a,s){return vm(e,t,n,r,a,0,!1,s,!0)}function Tx(e,t,n,r,a,s){return vm(e,t,n,r,a,s,!0)}function vm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let u=[];for(let A=0;Aa&&u.push({score:t[A],boxIndex:A,suppressBeginIndex:0});u.sort(Cx);let c=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=u.pop(),{score:y,boxIndex:g,suppressBeginIndex:_}=A;if(y=_;--w){let x=JC(e,g,h[w]);if(x>=r){b=!0;break}if(A.score=A.score*QC(r,c,x),A.score<=a)break}A.suppressBeginIndex=h.length,b||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&KC(u,A,Cx))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function JC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),u=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;let m=Math.max(s,u),A=Math.max(i,c),y=Math.min(o,h),g=Math.min(l,d),_=Math.max(y-m,0)*Math.max(g-A,0);return _/(p+f-_)}function QC(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function Cx(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function eE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppressionAsync"),i=E(t,"scores","nonMaxSuppressionAsync"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),u=l[0],c=l[1],{selectedIndices:h}=Ix(u,c,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),on(h,"int32")}var tE=eE;function nE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u={boxes:i,scores:o},c={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Eo,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var rE=O({nonMaxSuppressionWithScore_:nE});async function aE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u=await Promise.all([i.data(),o.data()]),c=u[0],h=u[1],{selectedIndices:d,selectedScores:p}=Tx(c,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(d,"int32"),selectedScores:on(p)}}var sE=aE;function iE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Co,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var oE=O({nonMaxSuppressionPadded_:iE});async function lE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Sx(d,p,u,c,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(f,"int32"),validOutputs:be(m,"int32")}}var uE=lE;function cE(e,t,n=!1,r=!1){let a=E(e,"images","resizeBilinear");F(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Ls,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Ex=O({resizeBilinear_:cE});function hE(e,t,n=!1,r=!1){let a=E(e,"images","resizeNearestNeighbor");F(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(_u,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Rx=O({resizeNearestNeighbor_:hE});function dE(e,t,n="nearest",r="constant",a=0,s){let i=E(e,"image","transform","float32"),o=E(t,"transforms","transform","float32");F(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),F(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},u={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(Jh,l,u)}var pE=O({transform_:dE});function fE(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=E(e,"a","bandPart");F(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=G(Id(0,s,1,"int32"),[-1,1]),l=Id(0,i,1,"int32"),u=ye(o,l),c=ar(ci(u,be(+t,"int32")),za(u,be(-n,"int32"))),h=Et([s,i],r.dtype);return G(dn(sr(G(r,[-1,s,i])).map(d=>kn(c,d,h))),a)}var mE=O({bandPart_:fE});function AE(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=Lt(e,e.shape[0],0).map(a=>Pa(a,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Fx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,u)=>l*u),r=sr(G(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[u,c]=Fx(l,t);a.push(u),s.push(c)});let i=G(dn(a,0),e.shape),o=G(dn(s,0),e.shape);return[i,o]}}function Fx(e,t=!1){return $.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=em(n),s=Rr(e),i=Nn([[1]],[1,1]),o=Rr(i),l=n>=r?r:n;for(let u=0;u{let p=Re(s,[u,u],[n-u,1]),f=Pd(p),m=Re(s,[u,u],[1,1]),A=kn(rr(m,0),Nn([[-1]]),Nn([[1]])),y=ye(m,P(A,f)),g=ge(p,y);g.shape[0]===1?o=Rr(i):o=st([i,Re(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let _=vt(ge(Ge(A,y),f)),b=Re(s,[u,0],[n-u,r]),w=P(_,o),x=at(o);if(u===0)s=ye(b,Ge(w,Ge(x,b)));else{let T=ye(b,Ge(w,Ge(x,b)));s=st([Re(s,[0,0],[u,r]),T],0)}let I=at(w),S=Re(a,[0,u],[n,a.shape[1]-u]);if(u===0)a=ye(S,Ge(Ge(S,o),I));else{let T=ye(S,Ge(Ge(S,o),I));a=st([Re(a,[0,0],[n,u]),T],1)}return[o,s,a]}),Ee([c,h,d])}return!t&&n>r&&(a=Re(a,[0,0],[n,r]),s=Re(s,[0,0],[r,r])),[a,s]})}var xE=O({qr_:gE}),pn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(pn||(pn={}));function wE(e,t,n=pn.SUM_BY_NONZERO_WEIGHTS){let r=E(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=E(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===pn.NONE)return s;if(n===pn.SUM)return Te(s);if(n===pn.MEAN){if(a==null)return kt(s);{let i=r.size/a.size,o=ge(Te(s),Te(a));return i>1?ge(o,be(i)):o}}if(n===pn.SUM_BY_NONZERO_WEIGHTS){if(a==null)return ge(Te(s),be(r.size));{let i=P(a,Or(r.shape)),o=me(Te(di(i,be(0))),"float32");return ge(Te(s),o)}}throw Error(`Unknown reduction: ${n}`)}var ia=O({computeWeightedLoss_:wE});function _E(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","absoluteDifference"),s=E(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=E(n,"weights","absoluteDifference")),an(a.shape,s.shape,"Error in absoluteDifference: ");let o=zt(ye(a,s));return ia(o,i,r)}var bE=O({absoluteDifference_:_E});function vE(e,t,n,r,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","cosineDistance"),i=E(t,"predictions","cosineDistance"),o=null;r!=null&&(o=E(r,"weights","cosineDistance")),an(s.shape,i.shape,"Error in cosineDistance: ");let l=be(1),u=ye(l,Te(P(s,i),n,!0));return ia(u,o,a)}var kE=O({cosineDistance_:vE});function NE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","hingeLoss"),s=E(t,"predictions","hingeLoss"),i=null;n!=null&&(i=E(n,"weights","hingeLoss")),an(a.shape,s.shape,"Error in hingeLoss: ");let o=be(1);a=ye(P(be(2),a),o);let l=zr(ye(o,P(a,s)));return ia(l,i,r)}var IE=O({hingeLoss_:NE});function SE(e,t,n,r=1,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","huberLoss"),i=E(t,"predictions","huberLoss"),o=null;n!=null&&(o=E(n,"weights","huberLoss")),an(s.shape,i.shape,"Error in huberLoss: ");let l=be(r),u=zt(ye(i,s)),c=fl(u,l),h=ye(u,c),d=se(P(be(.5),lt(c)),P(l,h));return ia(d,o,a)}var TE=O({huberLoss_:SE});function CE(e,t,n,r=1e-7,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","logLoss"),i=E(t,"predictions","logLoss"),o=null;n!=null&&(o=E(n,"weights","logLoss")),an(s.shape,i.shape,"Error in logLoss: ");let l=be(1),u=be(r),c=vt(P(s,Mn(se(i,u)))),h=P(ye(l,s),Mn(se(ye(l,i),u))),d=ye(c,h);return ia(d,o,a)}var EE=O({logLoss_:CE});function RE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","meanSquaredError"),s=E(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=E(n,"weights","meanSquaredError")),an(a.shape,s.shape,"Error in meanSquaredError: ");let o=Dd(a,s);return ia(o,i,r)}var FE=O({meanSquaredError_:RE});function ME(e,t){let n=E(e,"labels","sigmoidCrossEntropyWithLogits"),r=E(t,"logits","sigmoidCrossEntropyWithLogits");an(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=zr(r),s=P(r,n),i=wd(qn(vt(zt(r))));return se(ye(a,s),i)}function $E(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"multiClassLabels","sigmoidCrossEntropy"),i=E(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","sigmoidCrossEntropy")),an(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(.5);s=se(P(s,ye(c,u)),P(h,u))}let l=ME(s,i);return ia(l,o,a)}var DE=O({sigmoidCrossEntropy_:$E});function OE(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return $r((r,a,s)=>{let i=am(a,[n],!0),o=ye(me(a,"float32"),i);s([r,o]);let l=vt(P(o,r));return{value:Te(l,[n]),gradFunc:(u,c)=>{let[h,d]=c,p=hi(u.shape,[n]);return[P(G(u,p),ye(me(h,"float32"),qn(d))),P(G(u,p),ye(qn(d),me(h,"float32")))]}}})(e,t)}function zE(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"onehotLabels","softmaxCrossEntropy"),i=E(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","softmaxCrossEntropy")),an(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(s.shape[1]);s=se(P(s,ye(c,u)),ge(u,h))}let l=OE(s,i);return ia(l,o,a)}var PE=O({softmaxCrossEntropy_:zE}),LE={fft:Ju,ifft:Al,rfft:Qu,irfft:$d},WE={hammingWindow:DC,hannWindow:kx,frame:Nx,stft:LC},Je={flipLeftRight:UC,resizeNearestNeighbor:Rx,resizeBilinear:Ex,rotateWithOffset:jC,cropAndResize:BC,nonMaxSuppression:qC,nonMaxSuppressionAsync:tE,nonMaxSuppressionWithScore:rE,nonMaxSuppressionWithScoreAsync:sE,nonMaxSuppressionPadded:oE,nonMaxSuppressionPaddedAsync:uE,transform:pE},Mx={bandPart:mE,gramSchmidt:yE,qr:xE},BE={absoluteDifference:bE,computeWeightedLoss:ia,cosineDistance:kE,hingeLoss:IE,huberLoss:TE,logLoss:EE,meanSquaredError:FE,sigmoidCrossEntropy:DE,softmaxCrossEntropy:PE},oa=class extends O5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Ee(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return ax(e,t)}dispose(){this.iterations_!=null&&Ee(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:be(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(oa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var Ud=class extends oa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:B(()=>He(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;B(()=>{let l=se(P(i,this.rho),P(lt(s),1-this.rho)),u=P(ge(en(se(o,this.epsilon)),en(se(i,this.epsilon))),s),c=se(P(o,this.rho),P(lt(u),1-this.rho));i.assign(l),o.assign(c);let h=se(P(u,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ee(this.accumulatedGrads.map(e=>e.variable)),Ee(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};Ud.className="Adadelta";Fa(Ud);var Hd=class extends oa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:B(()=>Uu(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;B(()=>{let i=se(s,lt(a));s.assign(i);let o=se(P(ge(a,en(se(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ee(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};Hd.className="Adagrad";Fa(Hd);var jd=class extends oa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],B(()=>{this.accBeta1=be(t).variable(),this.accBeta2=be(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ye(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:B(()=>He(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:B(()=>He(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedSecondMoment[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=se(P(c,this.beta2),P(lt(l),1-this.beta2)),p=ge(h,n),f=ge(d,r);u.assign(h),c.assign(d);let m=se(P(ge(p,se(en(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ee(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),B(()=>{this.accBeta1.assign(sa(this.beta1,this.iterations_+1)),this.accBeta2.assign(sa(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};jd.className="Adam";Fa(jd);var Gd=class extends oa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],B(()=>{this.iteration=be(0).variable(),this.accBeta1=be(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ge(-this.learningRate,se(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:He(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:He(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedWeightedInfNorm[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=P(c,this.beta2),p=zt(l),f=Dr(d,p);u.assign(h),c.assign(f);let m=se(P(ge(r,n),ge(h,se(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(se(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ee(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};Gd.className="Adamax";Fa(Gd);var ec=class extends oa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];B(()=>{let s=se(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Gt(be(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};ec.className="SGD";Fa(ec);var qd=class extends ec{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=be(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&B(()=>{let i,o=se(P(this.m,a),s);this.useNesterov?i=se(P(this.c,se(s,P(o,this.m))),r):i=se(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ee(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};qd.className="Momentum";Fa(qd);var Xd=class extends oa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:B(()=>He(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;B(()=>{let l=se(P(i,this.decay),P(lt(s),1-this.decay));if(this.centered){let u=this.accumulatedMeanGrads[n].variable,c=se(P(u,this.decay),P(s,1-this.decay)),h=ge(P(s,this.learningRate),en(ye(l,se(lt(c),this.epsilon)))),d=se(P(o,this.momentum),h);i.assign(l),u.assign(c),o.assign(d);let p=ye(r,d);r.assign(p)}else{let u=se(P(i,this.decay),P(lt(s),1-this.decay)),c=se(P(o,this.momentum),ge(P(s,this.learningRate),en(se(u,this.epsilon))));i.assign(u),o.assign(c);let h=ye(r,c);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ee(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ee(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ee(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};Xd.className="RMSProp";Fa(Xd);var pi=class{static sgd(e){return new ec(e)}static momentum(e,t,n=!1){return new qd(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new Xd(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new jd(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new Ud(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new Gd(e,t,n,r,a)}static adagrad(e,t=.1){return new Hd(e,t)}},fi={sgd:pi.sgd,momentum:pi.momentum,adadelta:pi.adadelta,adagrad:pi.adagrad,rmsprop:pi.rmsprop,adamax:pi.adamax,adam:pi.adam},VE=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Kd(){return new Promise(e=>VE(()=>e()))}var R={};ze(R,{ERF_A1:()=>QE,ERF_A2:()=>eR,ERF_A3:()=>tR,ERF_A4:()=>nR,ERF_A5:()=>rR,ERF_P:()=>JE,PARALLELIZE_THRESHOLD:()=>km,SELU_SCALE:()=>Dx,SELU_SCALEALPHA:()=>$x,applyActivation:()=>Bd,assertAndGetBroadcastShape:()=>yt,assertAxesAreInnerMostDims:()=>kS,assertParamsConsistent:()=>UE,assignToTypedArray:()=>hR,axesAreInnerMostDims:()=>nm,calculateShapes:()=>k5,combineLocations:()=>ix,complexWithEvenIndex:()=>lR,complexWithOddIndex:()=>uR,computeConv2DInfo:()=>Pu,computeConv3DInfo:()=>U5,computeDefaultPad:()=>Hf,computeDilation2DInfo:()=>XN,computeOptimalWindowSize:()=>jE,computeOutAndReduceShapes:()=>ox,computeOutShape:()=>HE,computePool2DInfo:()=>V5,computePool3DInfo:()=>KN,convertConv2DDataFormat:()=>B5,eitherStridesOrDilationsAreOne:()=>Mr,expandShapeToKeepDim:()=>hi,exponent:()=>pR,exponents:()=>dR,fromStringArrayToUint8:()=>AR,fromUint8ToStringArray:()=>mR,getAxesPermutation:()=>lx,getBroadcastDims:()=>WI,getComplexWithIndex:()=>cR,getFusedBiasGradient:()=>Wd,getFusedDyActivation:()=>Ld,getImageCenter:()=>GE,getInnerMostAxes:()=>NS,getPermuted:()=>XE,getReductionAxes:()=>Pt,getReshaped:()=>qE,getReshapedPermuted:()=>KE,getSliceBeginCoords:()=>ZE,getSliceSize:()=>YE,getUndoAxesPermutation:()=>rm,log:()=>sR,mergeRealAndImagArrays:()=>iR,prepareAndValidate:()=>v5,prepareSplitSize:()=>fR,segment_util:()=>Ox,shouldFuse:()=>Vd,slice_util:()=>cn,splitRealAndImagArrays:()=>oR,tupleValuesAreOne:()=>$a,upcastType:()=>nr,validateInput:()=>Cf,validateUpdateShape:()=>Tf,warn:()=>aR});function UE(e,t){let n=e[0].length;e.forEach((a,s)=>{F(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function HE(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function KE(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var Ox={};ze(Ox,{collectGatherOpShapeInfo:()=>xR,computeOutShape:()=>gR,segOpComputeOptimalWindowSize:()=>yR});function yR(e,t){let n=!1,r;for(e<=km?(r=e,n=!0):r=_h(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=_h(e,r+1);return r}function gR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( + ${s}).`);if(nrd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function AR(e){return e.map(t=>Su(t))}var Pr={};ze(Pr,{nonMaxSuppressionV3Impl:()=>Ix,nonMaxSuppressionV4Impl:()=>Sx,nonMaxSuppressionV5Impl:()=>Tx,whereImpl:()=>Ax});function _e(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var wR=Pr.whereImpl,Zd=class extends su{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new xh(this,Fr())}nextDataId(){return Zd.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Fr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){_e([e],"where");let t=this.readSync(e.dataId);return xR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};Zd.nextDataId=0;var Nm={};ze(Nm,{addImpl:()=>zx,bincountImpl:()=>Im,bincountReduceImpl:()=>Px,ceilImpl:()=>Lx,concatImpl:()=>Sm,expImpl:()=>Wx,expm1Impl:()=>Bx,floorImpl:()=>Vx,gatherV2Impl:()=>Ux,greaterImpl:()=>Hx,lessImpl:()=>jx,linSpaceImpl:()=>Gx,logImpl:()=>qx,maxImpl:()=>Xx,maximumImpl:()=>Kx,minimumImpl:()=>Zx,multiplyImpl:()=>Tm,negImpl:()=>Yx,notEqualImpl:()=>Jx,prodImpl:()=>Qx,rangeImpl:()=>Em,rsqrtImpl:()=>ew,simpleAbsImpl:()=>Ox,sliceImpl:()=>Yd,squaredDifferenceImpl:()=>tw,stridedSliceImpl:()=>nw,subImpl:()=>rw,tileImpl:()=>aw,topKImpl:()=>sw,transposeImpl:()=>Cm,uniqueImpl:()=>iw});function Ox(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;_e(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=Ox(a),n.makeOutput(r,t.shape,"float32")},_R={kernelName:Zi,backendName:"cpu",kernelFunc:wR};function Rt(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),u=v.sizeFromShape(i),c=v.getTypedArrayFromDType(s,u),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;y_[I]=0);let b=v.locToIndex(_,h,p),w=g.slice(-d);A.forEach(I=>w[I]=0);let x=v.locToIndex(w,d,f);c[y]=e(r[b],a[x])}return[c,i]}}function On(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var bR={kernelName:Th,backendName:"cpu",kernelFunc:On};function Jd(e,t,n="float32"){if(n==="complex64"){let a=Jd(e,t,"float32"),s=Jd(e,t,"float32");return On({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function Lr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var vR={kernelName:ks,backendName:"cpu",kernelFunc:Lr};function mi(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var kR={kernelName:Xh,backendName:"cpu",kernelFunc:mi};function Wa(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Lr({inputs:{x:a},backend:n});let i=Jd(n,a.shape,a.dtype),o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=On({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=mi({inputs:{input:a},backend:n}),o=Wa({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Lr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,u]=Rt((c,h)=>c!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(u,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var NR={kernelName:hs,backendName:"cpu",kernelFunc:Wa};function qt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;_e([i,o],e);let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let u=Wa({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),h=c.complexTensorInfos.real,d=c.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Wa({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,_=l.data.get(y.dataId).values,b=l.data.get(g.dataId).values,[w,x,I]=n(i.shape,o.shape,p,f,_,b),S=l.makeTensorInfo(I,"float32",w),T=l.makeTensorInfo(I,"float32",x),M=On({inputs:{real:S,imag:T},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(S),l.disposeIntermediateTensorInfo(T),M}else{let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}}}function Rm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),u=o.length,c=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),_=n.length,b=v.computeStrides(n);if(p.length+f.length===0)for(let w=0;wI[z]=0);let S=v.locToIndex(I,y,g),T=x.slice(-_);f.forEach(z=>T[z]=0);let M=v.locToIndex(T,_,b),D=e(m[S*2],m[S*2+1],A[M*2],A[M*2+1]);h[w]=D.real,d[w]=D.imag}return[h,d,o]}}var zx=Rt((e,t)=>e+t),IR=Rm((e,t,n,r)=>({real:e+n,imag:t+r})),tc=qt(Na,zx,IR),SR={kernelName:Na,backendName:"cpu",kernelFunc:tc};function Im(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function Px(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=We([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,u):t.size>0?i.set(i.get(o,u)+t.get(o,l),o,u):i.set(i.get(o,u)+1,o,u))}return i}function xl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=v.sizeFromShape(i.shape),c=n||i.dtype,h=v.getArrayFromDType(c,u);for(let d=0;d{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=n||i.dtype,c=t(l,u,a);return o.makeTensorInfo(i.shape,u,c)}}var Lx=xl(e=>Math.ceil(e)),TR=wl(ds,Lx),CR={kernelName:ds,backendName:"cpu",kernelFunc:TR};function Sm(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let u=0;uMath.exp(e)),ow=wl(xs,Wx),ER={kernelName:xs,backendName:"cpu",kernelFunc:ow},Bx=xl(e=>Math.expm1(e)),RR=wl(po,Bx),FR={kernelName:po,backendName:"cpu",kernelFunc:RR},Vx=xl(e=>Math.floor(e)),MR=wl(ws,Vx),$R={kernelName:ws,backendName:"cpu",kernelFunc:MR};function Ux(e,t,n){let r=We(n,e.dtype);for(let a=0;ae>t?1:0),DR=qt(yo,Hx,null,"bool"),OR={kernelName:yo,backendName:"cpu",kernelFunc:DR},jx=Rt((e,t)=>eMath.log(e)),LR=wl(Is,qx),WR={kernelName:Is,backendName:"cpu",kernelFunc:LR};function Xx(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=u)}a[s]=o}return a}var Kx=Rt((e,t)=>Math.max(e,t)),BR=qt(Ts,Kx),VR={kernelName:Ts,backendName:"cpu",kernelFunc:BR},Zx=Rt((e,t)=>Math.min(e,t)),UR=qt(Fs,Zx),HR={kernelName:Fs,backendName:"cpu",kernelFunc:UR},Tm=Rt((e,t)=>e*t),jR=Rm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Fm=qt(Ms,Tm,jR),GR={kernelName:Ms,backendName:"cpu",kernelFunc:Fm};function Yx(e,t,n){let r=v.createScalarValue(-1,n);return Tm([],t,r,e,n)}function qR(e){let{inputs:t,backend:n}=e,{x:r}=t;_e(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=Yx(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var XR={kernelName:Io,backendName:"cpu",kernelFunc:qR},Jx=Rt((e,t)=>e!==t?1:0),KR=qt(So,Jx,null,"bool"),ZR={kernelName:So,backendName:"cpu",kernelFunc:KR};function Cm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),u=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let c=0;cn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var QR={kernelName:Mo,backendName:"cpu",kernelFunc:JR};function Em(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),eF=wl(Us,ew),tF={kernelName:Us,backendName:"cpu",kernelFunc:eF};function Yd(e,t,n,r,a){let s=cn.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=cn.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,u=We(r,a,l),c=We(n,a);for(let h=0;hf+t[m]);c.set(u.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(c.values):c.values}function Ai(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;_e(a,"slice");let[o,l]=cn.parseSliceParams(a,s,i);cn.assertParamsValid(a,o,l);let u=n.data.get(a.dataId).values,c=Yd(u,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,c)}var nF={kernelName:Lo,backendName:"cpu",kernelFunc:Ai},tw=Rt((e,t)=>{let n=e-t;return n*n}),rF=qt(Ks,tw),aF={kernelName:Ks,backendName:"cpu",kernelFunc:rF};function nw(e,t,n,r){let a=We(e,t.dtype);for(let s=0;se-t),sF=Rm((e,t,n,r)=>({real:e-n,imag:t-r})),Mm=qt(Zs,rw,sF),iF={kernelName:Zs,backendName:"cpu",kernelFunc:Mm};function aw(e,t){let n=new Array(e.rank);for(let a=0;a_.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=u.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew Zd,1);var uw=it(lo,e=>e>=0?e:Math.exp(e)-1),oF={kernelName:lo,backendName:"cpu",kernelFunc:uw};function cw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;_e([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let u=0;ue<0?t*e:e);function hw(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;_e([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=uF(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var cF={kernelName:zs,backendName:"cpu",kernelFunc:hw},dw=it(Ps,e=>Math.max(0,e)),hF={kernelName:Ps,backendName:"cpu",kernelFunc:dw},pw=it(Ws,e=>Math.min(Math.max(0,e),6)),dF={kernelName:Ws,backendName:"cpu",kernelFunc:pw};function $m(e,t,n,r,a){if(n==="linear")return Lr({inputs:{x:t},backend:e});if(n==="relu")return dw({inputs:{x:t},backend:e});if(n==="elu")return uw({inputs:{x:t},backend:e});if(n==="relu6")return pw({inputs:{x:t},backend:e});if(n==="prelu")return hw({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return cw({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function gt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let u=n.data.get(a.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,h=u.complexTensorInfos.imag;c.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var pF={kernelName:Do,backendName:"cpu",kernelFunc:gt};function fw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;_e([a,s],"matMul");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=gt({inputs:{x:a},backend:n,attrs:{shape:b}}),I=gt({inputs:{x:s},backend:n,attrs:{shape:w}}),S=i?x.shape[1]:x.shape[2],T=i?x.shape[2]:x.shape[1],M=o?I.shape[1]:I.shape[2],D=Math.max(A,y),z=n.data.get(x.dataId).values,W=n.data.get(I.dataId).values,U=v.computeStrides(x.shape),H=v.computeStrides(I.shape),[X,j,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,ae,te]=o?[1,H[1],H[0]]:[H[1],1,H[0]],ie=T*M,Q=We([D,T,M],x.dtype),he=Q.values,oe=n.blockSize;for(let fe=0;feMath.acos(e)),gF={kernelName:Yi,backendName:"cpu",kernelFunc:yF},xF=it(Ji,e=>Math.acosh(e)),wF={kernelName:Ji,backendName:"cpu",kernelFunc:xF};function _F(e){let{inputs:t,backend:n}=e,r=t;_e(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=We(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=w,_=b)}p[A]=_}return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var TF={kernelName:ls,backendName:"cpu",kernelFunc:SF};function CF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;_e(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=ir({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[c,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(c),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var EF={kernelName:lu,backendName:"cpu",kernelFunc:CF},RF=it(Qi,e=>Math.asin(e)),FF={kernelName:Qi,backendName:"cpu",kernelFunc:RF},MF=it(eo,e=>Math.asinh(e)),$F={kernelName:eo,backendName:"cpu",kernelFunc:MF},DF=it(to,e=>Math.atan(e)),OF={kernelName:to,backendName:"cpu",kernelFunc:DF},zF=Rt((e,t)=>Math.atan2(e,t)),PF=qt(ro,zF),LF={kernelName:ro,backendName:"cpu",kernelFunc:PF},WF=it(no,e=>Math.atanh(e)),BF={kernelName:no,backendName:"cpu",kernelFunc:WF};function Dm(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,u=a.dilationWidth,c=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=We(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],_=a.outShape[3];for(let b=0;bj?j=oe:s==="avg"&&(ee+=oe,Y++)}if(isNaN(j))break}let ae=z+W*_+I;A[ae]=s==="avg"?ee/Y:j}}}return m}function mw(e,t,n,r,a=!1,s=!1){let i=We(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=We(t,n,e);for(let A=0;AM&&(M=X,a?D=s?((A*r.inHeight+z)*r.inWidth+U)*r.inChannels+y:(z*r.inWidth+U)*r.inChannels+y:D=W*d+H)}}i.set(D,A,g,x,y)}}return i}function Aw(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,u=a.dilationDepth,c=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,_=We(a.outShape,n),b=_.values,w=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],I=a.outShape[3]*a.outShape[4],S=a.outShape[4];for(let T=0;Tke?ke=Be:s==="avg"&&(Ie+=Be,Me++),isNaN(ke))break}if(isNaN(ke))break}if(isNaN(ke))break}let Oe=pe+z;b[Oe]=s==="avg"?Ie/Me:ke}}}}return _}function VF(e,t){let n=We(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,u=t.effectiveFilterDepth,c=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=W&&(W=te,U=X*c*h+ee*c+ae)}}}n.set(U,m,y,w,T,A)}}}return n}function UF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;_e(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"avg");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var HF={kernelName:us,backendName:"cpu",kernelFunc:UF};function jF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"avgPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=Aw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var GF={kernelName:uu,backendName:"cpu",kernelFunc:jF};function qF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"avgPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=c.strideDepth,d=c.strideHeight,p=c.strideWidth,f=c.filterDepth,m=c.filterHeight,A=c.filterWidth,y=c.dilationDepth,g=c.dilationHeight,_=c.dilationWidth,b=c.effectiveFilterDepth,w=c.effectiveFilterHeight,x=c.effectiveFilterWidth,I=b-1-c.padInfo.front,S=x-1-c.padInfo.left,T=w-1-c.padInfo.top,M=We(s.shape,"float32"),D=1/(f*m*A),z=n.bufferSync(a);for(let W=0;W=c.outDepth||Math.floor(Q)!==Q))for(let he=0;he=c.outHeight||Math.floor(oe)!==oe))for(let fe=0;fe=c.outWidth||Math.floor(pe)!==pe||(te+=z.get(W,Q,oe,pe,U))}}}M.set(te*D,W,H,X,j,U)}return n.makeTensorInfo(M.shape,M.dtype,M.values)}var XF={kernelName:Ih,backendName:"cpu",kernelFunc:qF};function KF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;_e([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,A=c.dilationWidth,y=c.effectiveFilterHeight,g=c.effectiveFilterWidth,_=g-1-c.padInfo.left,b=y-1-c.padInfo.top,w=We(i.shape,"float32"),x=1/(p*f),I=n.data.get(a.dataId).values,S=We(a.shape,"float32",I);for(let T=0;T=c.outHeight||Math.floor(j)!==j))for(let ee=0;ee=c.outWidth||Math.floor(Y)!==Y||(H+=S.get(T,j,Y,M))}}w.set(H*x,T,D,z,M)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var ZF={kernelName:Nh,backendName:"cpu",kernelFunc:KF};function YF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),_e([a,o,l,s,i],"batchNorm");let{varianceEpsilon:u}=r;u==null&&(u=.001);let c=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),A=f.length,y=p.length,g=d.length,_=h.length,b=0,w=0,x=0,I=0;for(let S=0;S=A&&(b=0),w>=_&&(w=0),x>=y&&(x=0),I>=g&&(I=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var JF={kernelName:bs,backendName:"cpu",kernelFunc:YF};function QF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;_e([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=gt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=ir({inputs:{x:p},backend:n,attrs:{perm:u}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Ai({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var eM={kernelName:cu,backendName:"cpu",kernelFunc:QF};function tM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,u=Im(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var nM={kernelName:Sh,backendName:"cpu",kernelFunc:tM},rM=it(Ia,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let u=0;um.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return Lr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(b=>mi({inputs:{input:b},backend:n})),A=o.map(b=>_l({inputs:{input:b},backend:n})),y=bl({inputs:m,backend:n,attrs:{axis:s}}),g=bl({inputs:A,backend:n,attrs:{axis:s}}),_=On({inputs:{real:y,imag:g},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),A.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),_}let u=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return gt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),c=u.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(u.map(m=>m.shape),1);let h=u[0].shape[0]===1,d=Sm(c,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return u.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var lM={kernelName:ao,backendName:"cpu",kernelFunc:bl};function yw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r;_e([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,_=d.dataFormat==="channelsLast",b=new Ot(d.outShape,a.dtype),w=v.computeStrides(a.shape),x=v.computeStrides(s.shape),I=w[0],S=_?w[1]:w[2],T=_?w[2]:1,M=_?1:w[1],D=b.strides[0],z=_?b.strides[1]:b.strides[2],W=_?b.strides[2]:1,U=_?1:b.strides[1],H=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,j=b.values;for(let ee=0;ee=d.inHeight)continue;let fe=he*x[0],pe=Y+oe*S;for(let ke=0;ke=d.inWidth)continue;let tt=fe+Oe*x[1],nt=pe+$e*T,ot=tt;for(let Ze=0;Ze=u.inDepth)continue;let ee=X*T[0],Y=D+j*S[1];for(let ae=0;ae=u.inHeight)continue;let oe=ee+Q*T[1],fe=Y+he*S[2];for(let pe=0;pe=u.inWidth)continue;let $e=oe+Me*T[2],tt=fe+Oe*u.inChannels,nt=$e;for(let ot=0;otMath.cos(e)),_M={kernelName:ms,backendName:"cpu",kernelFunc:wM},bM=it(so,e=>Math.cosh(e)),vM={kernelName:so,backendName:"cpu",kernelFunc:bM};function kM(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,[c,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=We([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,_=n.data.get(i.dataId).values,b=n.data.get(a.dataId).values,w=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let I=0;I=c)continue;let U=m>1?(D-T)*(h-1)/(m-1):0,H=A>1?(z-M)*(d-1)/(A-1):0;for(let X=0;X1?T*(h-1)+X*U:.5*(T+D)*(h-1);if(j<0||j>h-1){for(let ee=0;ee1?M*(d-1)+te*H:.5*(M+z)*(d-1);if(ie<0||ie>d-1){for(let fe=0;fe1?M*(d-1)+ee*H:.5*(M+z)*(d-1);if(Y<0||Y>d-1){for(let ie=0;iey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],u=a.shape[2],c=a.shape[3],h=l*s,d=u*s,p=c/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,u,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,_=g.left,b=g.top,w=p.outChannels/p.inChannels,x=new Ot(p.outShape,a.dtype),I=n.data.get(a.dataId).values,S=n.data.get(s.dataId).values,T=x.values;for(let M=0;M=p.inHeight)continue;let ee=X*h[0],Y=D+j*c[1];for(let ae=0;ae=p.inWidth)continue;let oe=ee+Q*h[1],fe=Y+he*p.inChannels,pe=te,ke=oe;for(let Ie=0;Ie{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,u=l.data.get(r.dataId).values,c=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:_,strideHeight:b,strideWidth:w,filterHeight:x,filterWidth:I,dilationHeight:S,dilationWidth:T,outShape:M}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),D=v.sizeFromShape(M),z=M.length,W=v.getArrayFromDType(r.dtype,D);for(let U=0;U=0&&Q=0&&oeae&&(ae=ke)}}}let te=v.locToIndex([U,H,j,Y],z,v.computeStrides(M));W[te]=ae}}}return{dataId:l.write(v.toTypedArray(W,r.dtype),M,r.dtype),shape:M,dtype:r.dtype}}},WM={kernelName:zh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${zh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=te,ae=Q)}}}D[Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},BM={kernelName:Oh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Oh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=ie,ae=he)}}}D[z][Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function VM(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;_e([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(u+1)}return n.makeTensorInfo(a.shape,"float32",s)}var UM={kernelName:Ph,backendName:"cpu",kernelFunc:VM},HM=Rt((e,t)=>e===t?1:0),xw=qt(co,HM,null,"bool"),jM={kernelName:co,backendName:"cpu",kernelFunc:xw},GM=R.ERF_P,qM=R.ERF_A1,XM=R.ERF_A2,KM=R.ERF_A3,ZM=R.ERF_A4,YM=R.ERF_A5,JM=it(uo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+GM*n);return t*(1-((((YM*r+ZM)*r+KM)*r+XM)*r+qM)*r*Math.exp(-n*n))}),QM={kernelName:uo,backendName:"cpu",kernelFunc:JM};function Qd(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),gt({inputs:{x:a},backend:n,attrs:{shape:o}})}var e$={kernelName:ho,backendName:"cpu",kernelFunc:Qd},t$=Rt((e,t)=>e/t),Om=qt(gs,t$),zm={kernelName:gs,backendName:"cpu",kernelFunc:Om};function ww(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,u=[a,s],c=v.sizeFromShape(u),h=v.getTypedArrayFromDType("float32",c),d=v.getTypedArrayFromDType("float32",c);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,u]=r.shape,c=a.data.get(r.dataId).values;for(let h=0;h=0&&_Math.floor(e/t)),h$=qt(_s,c$,null,"int32"),d$={kernelName:_s,backendName:"cpu",kernelFunc:h$};function p$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=yw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var f$={kernelName:ei,backendName:"cpu",kernelFunc:p$};function m$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=gw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var A$={kernelName:ti,backendName:"cpu",kernelFunc:m$};function y$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,u,c,h]=R.prepareAndValidate(r,a);if(u===0)return n.makeTensorInfo(l,r.dtype,[]);let d=We([u,c],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/c)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),b$=qt(vs,_$,null,"bool"),v$={kernelName:vs,backendName:"cpu",kernelFunc:b$};function k$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=gt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=ww(o,!0,n),u=gt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),u}var N$={kernelName:Wh,backendName:"cpu",kernelFunc:k$},I$=it(go,e=>Number.isFinite(e)?1:0,"bool"),S$={kernelName:go,backendName:"cpu",kernelFunc:I$},T$=it(xo,e=>Math.abs(e)===Infinity?1:0,"bool"),C$={kernelName:xo,backendName:"cpu",kernelFunc:T$},E$=it(wo,e=>Number.isNaN(e)?1:0,"bool"),R$={kernelName:wo,backendName:"cpu",kernelFunc:E$},F$=Rt((e,t)=>e<=t?1:0),M$=qt(bo,F$,null,"bool"),$$={kernelName:bo,backendName:"cpu",kernelFunc:M$};function D$(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=Gx(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var O$={kernelName:Vh,backendName:"cpu",kernelFunc:D$},z$=it(vo,e=>Math.log1p(e)),P$={kernelName:vo,backendName:"cpu",kernelFunc:z$},L$=Rt((e,t)=>e&&t),W$=qt(ko,L$,null,"bool"),B$={kernelName:ko,backendName:"cpu",kernelFunc:W$},V$=it(mu,e=>e?0:1,"bool"),U$={kernelName:mu,backendName:"cpu",kernelFunc:V$},H$=Rt((e,t)=>e||t),j$=qt(Au,H$,null,"bool"),G$={kernelName:Au,backendName:"cpu",kernelFunc:j$};function q$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;_e(a,"LRN");let u=a.shape[3],c=u-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%u,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,c),_=0;for(;y<=g;y++){let b=h[y];_+=b*b}return _}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"max");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var Q$={kernelName:Cs,backendName:"cpu",kernelFunc:J$};function eD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"maxPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=Aw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var tD={kernelName:gu,backendName:"cpu",kernelFunc:eD};function nD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"maxPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=n.bufferSync(s),d=VF(h,c),p=c.strideDepth,f=c.strideHeight,m=c.strideWidth,A=c.dilationDepth,y=c.dilationHeight,g=c.dilationWidth,_=c.effectiveFilterDepth,b=c.effectiveFilterHeight,w=c.effectiveFilterWidth,x=_-1-c.padInfo.front,I=w-1-c.padInfo.left,S=b-1-c.padInfo.top,T=We(s.shape,"float32"),M=n.bufferSync(a);for(let D=0;D=c.outDepth||Math.floor(te)!==te))for(let ie=0;ie=c.outHeight||Math.floor(Q)!==Q))for(let he=0;he=c.outWidth||Math.floor(oe)!==oe)continue;let fe=_*b*w-1-d.get(D,te,Q,oe,z),pe=ae*b*w+ie*w+he,ke=fe===pe?1:0;ke!==0&&(Y+=M.get(D,te,Q,oe,z)*ke)}}}T.set(Y,D,W,U,H,z)}return n.makeTensorInfo(T.shape,T.dtype,T.values)}var rD={kernelName:jh,backendName:"cpu",kernelFunc:nD};function aD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;_e([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=n.data.get(o.dataId).values,f=We(d.outShape,o.dtype,mw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,_=d.effectiveFilterHeight,b=d.effectiveFilterWidth,w=b-1-d.padInfo.left,x=_-1-d.padInfo.top,I=We(o.shape,"float32"),S=n.data.get(a.dataId).values,T=We(a.shape,"float32",S);for(let M=0;M=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y=d.outWidth||Math.floor(ae)!==ae)continue;let te=_*b-1-f.get(M,ee,ae,D),ie=j*b+Y,Q=te===ie?1:0;Q!==0&&(X+=T.get(M,ee,ae,D)*Q)}}I.set(X,M,z,W,D)}return n.makeTensorInfo(I.shape,I.dtype,I.values)}var sD={kernelName:Hh,backendName:"cpu",kernelFunc:aD};function iD(e,t,n,r,a){let s=v.computeStrides(t),i=Dm(e,t,n,s,a,"max"),o=mw(e,t,n,a,!0,r);return[i.values,o.values]}var oD={kernelName:Gh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;_e(r,"MaxPoolWithArgmax");let u=l.data.get(r.dataId).values,c=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=iD(u,r.shape,r.dtype,o,c),p=l.write(h,c.outShape,r.dtype),f=l.write(d,c.outShape,r.dtype);return[{dataId:p,shape:c.outShape,dtype:r.dtype},{dataId:f,shape:c.outShape,dtype:"int32"}]}};function ep(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"sum");let o;a.dtype==="bool"?o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=Lr({inputs:{x:a},backend:n});let l=o.shape.length,u=v.parseAxisParam(s,o.shape),c=R.getAxesPermutation(u,l),h=u,d=o;c!=null&&(d=ir({inputs:{x:o},backend:n,attrs:{perm:c}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=Jd(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,_=n.data.get(d.dataId).values;for(let b=0;bn.disposeIntermediateTensorInfo(m)),f}var cD={kernelName:Es,backendName:"cpu",kernelFunc:uD};function hD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,u=R.getAxesPermutation(l,a.shape.length),c=a;u!=null&&(c=ir({inputs:{x:a},backend:n,attrs:{perm:u}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,c.shape.length);let[h,d]=R.computeOutAndReduceShapes(c.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),c.dtype),m=n.data.get(c.dataId).values;for(let y=0;yg[0]+a.shape[_]+g[1]),l=s.map(g=>g[0]),u=s.map((g,_)=>g[0]+a.shape[_]),c=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=u[w]&&(_[w]=(u[w]-1)*2-_[w]+c);_=_.map((w,x)=>w-l[x]);let b=v.locToIndex(_,d,p);y[g]=h[b]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var fD={kernelName:xu,backendName:"cpu",kernelFunc:pD},mD=Rt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),AD=qt(No,mD),yD={kernelName:No,backendName:"cpu",kernelFunc:AD},gD=qi(U8());function bw(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),u=_w({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),c=R.expandShapeToKeepDim(u.shape,l),h=gt({inputs:{x:u},backend:n,attrs:{shape:c}}),d=Mm({inputs:{a,b:h},backend:n}),p=ow({inputs:{x:d},backend:n}),f=ep({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Om({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var xD={kernelName:Xs,backendName:"cpu",kernelFunc:bw};function wD(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;_e(a,"multinomial");let l=o?a:bw({inputs:{logits:a},backend:n,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],h=n.data.get(l.dataId).values,d=[u,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&c[h]{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=Qd({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=bl({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var DD={kernelName:Fo,backendName:"cpu",kernelFunc:kw};function OD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;_e(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),u=n.data.get(a.dataId).values,c=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;yb+l[w]),_=v.locToIndex(g,f,m);A[_]=u[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var Nw={kernelName:Ds,backendName:"cpu",kernelFunc:OD},zD=Rt((e,t)=>Math.pow(e,t)),PD=qt(Os,zD),LD={kernelName:Os,backendName:"cpu",kernelFunc:PD};function WD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=Em(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var BD={kernelName:wu,backendName:"cpu",kernelFunc:WD},VD=it($o,e=>1/e),UD={kernelName:$o,backendName:"cpu",kernelFunc:VD};function HD(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;_e(a,"resizeBilinear");let l=v.computeStrides(a.shape),[u,c]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,u,c,f])),y=[s&&u>1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=0,b=y[0]/g[0],w=y[1]/g[1];for(let x=0;x1?u-1:u,i&&p>1?c-1:c],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],_=n.data.get(s.dataId).values,b=0;for(let w=0;w1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=y[0]/g[0],b=y[1]/g[1],w=0;for(let x=0;x1?c-1:c,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],_=y[0]/g[0],b=y[1]/g[1],w=1/_,x=1/b,I=Math.ceil(w)*2+2,S=Math.ceil(x)*2+2;for(let T=0;T=p)continue;let Q=M+ie*l[1],he=ie*_,oe=Math.min(c-1,i?Math.round(he):Math.floor(he));if(D===oe)for(let fe=0;fe=f)continue;let ke=Q+pe*l[2],Ie=pe*b,Me=Math.min(h-1,i?Math.round(Ie):Math.floor(Ie));H===Me&&(ae+=A[ke+Y])}}m[X+Y]=ae}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var YD={kernelName:Kh,backendName:"cpu",kernelFunc:ZD};function JD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;_e(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Lr({inputs:{x:a},backend:n});let l=new Ot(a.shape,a.dtype),u=n.bufferSync(a);for(let c=0;cd[p]=a.shape[p]-1-d[p]),l.set(u.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var QD={kernelName:Bs,backendName:"cpu",kernelFunc:JD},eO={kernelName:Ko,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[u,c,h,d]=r.shape,[p,f]=R.getImageCenter(i,c,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let _=0;_=0&&W=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),nO={kernelName:Vs,backendName:"cpu",kernelFunc:tO};function Iw(e,t,n,r,a,s,i,o,l,u){let c=[r/a,a],h=e.values,d=t.values;if(r===0)return We(n,t.dtype);let p=We(c,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?lO*e:oO*(Math.exp(e)-1)),cO={kernelName:Po,backendName:"cpu",kernelFunc:uO},hO=it(js,e=>1/(1+Math.exp(-e))),dO={kernelName:js,backendName:"cpu",kernelFunc:hO},pO=it(Bo,e=>e<0?-1:e>0?1:0),fO={kernelName:Bo,backendName:"cpu",kernelFunc:pO},mO=it(Hs,e=>Math.sin(e)),AO={kernelName:Hs,backendName:"cpu",kernelFunc:mO},yO=it(Wo,e=>Math.sinh(e)),gO={kernelName:Wo,backendName:"cpu",kernelFunc:yO},xO=11920928955078125e-23,Sw=Math.log(xO)+2,wO=it(Vo,e=>{let t=e>-Sw,n=e{let d=[...c];d[o]=h;let p=Ai({inputs:{x:a},backend:n,attrs:{begin:u,size:d}});return u[o]+=h,p})}var SO={kernelName:Uo,backendName:"cpu",kernelFunc:IO},TO=it(Gs,e=>Math.sqrt(e)),CO={kernelName:Gs,backendName:"cpu",kernelFunc:TO},EO={kernelName:vu,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;_e(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),FO={kernelName:Ta,backendName:"cpu",kernelFunc:RO};function MO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r;_e(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=gt({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=Ai({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=gt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(_),I=nw(g,x,m,f);b=n.makeTensorInfo(I.shape,I.dtype,I.values)}let w=gt({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var $O={kernelName:Ho,backendName:"cpu",kernelFunc:MO},DO=it(jo,e=>Math.tan(e)),OO={kernelName:jo,backendName:"cpu",kernelFunc:DO},zO=it(Ys,e=>Math.tanh(e)),PO={kernelName:Ys,backendName:"cpu",kernelFunc:zO};function LO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;_e(a,"tile");let i=aw(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var WO={kernelName:Sa,backendName:"cpu",kernelFunc:LO};function BO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;_e(a,"topk");let o=n.data.get(a.dataId).values,[l,u]=sw(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var VO={kernelName:Go,backendName:"cpu",kernelFunc:BO};function jO(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=n,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=v.computeStrides(a.shape),g=y[0],_=y[1],b=y[2],w=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));w.fill(l);let x=r.data.get(a.dataId).values,I=r.data.get(s.dataId).values;for(let S=0;St-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function XO(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function KO(e,t){return e}function ZO(e,t){return v.clamp(0,e,t-1)}function nc(e,t,n,r,a,s,i,o,l,u,c){let h=i*r+o*a+l*s+u;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var nz={kernelName:ku,backendName:"cpu",kernelFunc:tz},rz=[AF,_R,gF,wF,SR,bF,kF,IF,TF,EF,FF,$F,OF,LF,BF,HF,GF,XF,ZF,fF,JF,eM,nM,NR,CR,aM,bR,iM,lM,hM,pM,uM,yM,xM,mM,_M,vM,NM,SM,CM,RM,FM,$M,OM,PM,LM,BM,WM,zm,oF,UM,jM,QM,ER,e$,FR,i$,l$,u$,$R,d$,f$,A$,g$,w$,OR,v$,vR,N$,oM,S$,C$,R$,lF,PR,$$,O$,WR,P$,B$,U$,G$,X$,Z$,VR,Q$,tD,rD,sD,oD,Y$,cD,dD,HR,fD,yD,_D,GR,XR,kD,SD,ED,ZR,FD,$D,DD,Nw,LD,cF,QR,BD,kR,UD,hF,dF,pF,jD,qD,KD,YD,QD,eO,nO,tF,aO,iO,cO,dO,fO,AO,gO,nF,xD,_O,vO,NO,SO,CO,EO,aF,FO,$O,iF,lD,OO,PO,WO,VO,YR,GO,JO,ez,nz,MD];for(let e of rz)ni(e);var Cw={};ze(Cw,{assertNotComplex:()=>vl,bindCanvasToFramebuffer:()=>iz,bindColorTextureToFramebuffer:()=>rp,bindTextureToProgramUniformSampler:()=>Hw,bindTextureUnit:()=>Bw,bindVertexBufferToProgramAttribute:()=>Wm,callAndCheck:()=>xe,canBeRepresented:()=>Ew,createFragmentShader:()=>Mw,createFramebuffer:()=>Ww,createProgram:()=>$w,createStaticIndexBuffer:()=>zw,createStaticVertexBuffer:()=>Ow,createTexture:()=>Pw,createVertexShader:()=>Fw,getBatchDim:()=>yi,getExtensionOrThrow:()=>rc,getFramebufferErrorMessage:()=>jw,getMaxTexturesInShader:()=>Xw,getNumChannels:()=>az,getProgramUniformLocation:()=>Uw,getProgramUniformLocationOrThrow:()=>Vw,getRowsCols:()=>gi,getShapeAs3D:()=>ap,getTextureShapeFromLogicalShape:()=>Gw,getWebGLDisjointQueryTimerVersion:()=>Kw,getWebGLErrorMessage:()=>Rw,getWebGLMaxTextureSize:()=>qw,hasExtension:()=>Kn,isCapableOfRenderingToFloatTexture:()=>Zw,isDownloadFloatTextureEnabled:()=>Yw,isReshapeFree:()=>sc,isWebGLFenceEnabled:()=>Jw,isWebGLVersionEnabled:()=>Vm,linkProgram:()=>Dw,resetMaxTextureSize:()=>oz,resetMaxTexturesInShader:()=>lz,unbindColorTextureFromFramebuffer:()=>Bm,unbindTextureUnit:()=>sz,validateFramebuffer:()=>ac,validateProgram:()=>np,validateTextureSize:()=>Lw});var xi={},Um={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function sp(e,t){xi[e]=t}function Wr(e){if(!(e in xi)){let n=uz(e);if(n!==null)xi[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=xi[e];return t.isContextLost()?(delete xi[e],Wr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),xi[e])}function cz(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function uz(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=cz(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete xi[e]},!1),e===1?t.getContext("webgl",Um)||t.getContext("experimental-webgl",Um):t.getContext("webgl2",Um)}var ic;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(ic||(ic={}));var Zn;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Zn||(Zn={}));var tn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(tn||(tn={}));function oc(e,t){return[t,e]}function hz(e,t){return e*t}function lc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function kl(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function dz(e,t){let[n,r]=kl(e,t);return n*r*4}function Hm(e,t){let n=e,r,a,s,i,o,l,u,c,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,u=4,c=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,u=4,c=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:h,textureTypeFloat:d}}function xe(e,t){let n=t();return J().getBool("DEBUG")&&pz(e),n}function pz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Rw(e,t))}var fz=596e-10,mz=65504;function Ew(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||fze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Fw(e,t){let n=la(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function Mw(e,t){let n=la(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw Az(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var yz=/ERROR: [0-9]+:([0-9]+):/g;function Az(e,t){let n=yz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` +============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Fr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){_e([e],"where");let t=this.readSync(e.dataId);return wR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};Zd.nextDataId=0;var Nm={};ze(Nm,{addImpl:()=>Px,bincountImpl:()=>Im,bincountReduceImpl:()=>Lx,ceilImpl:()=>Wx,concatImpl:()=>Sm,expImpl:()=>Bx,expm1Impl:()=>Vx,floorImpl:()=>Ux,gatherV2Impl:()=>Hx,greaterImpl:()=>jx,lessImpl:()=>Gx,linSpaceImpl:()=>qx,logImpl:()=>Xx,maxImpl:()=>Kx,maximumImpl:()=>Zx,minimumImpl:()=>Yx,multiplyImpl:()=>Tm,negImpl:()=>Jx,notEqualImpl:()=>Qx,prodImpl:()=>ew,rangeImpl:()=>Em,rsqrtImpl:()=>tw,simpleAbsImpl:()=>zx,sliceImpl:()=>Yd,squaredDifferenceImpl:()=>nw,stridedSliceImpl:()=>rw,subImpl:()=>aw,tileImpl:()=>sw,topKImpl:()=>iw,transposeImpl:()=>Cm,uniqueImpl:()=>ow});function zx(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;_e(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=zx(a),n.makeOutput(r,t.shape,"float32")},bR={kernelName:Zi,backendName:"cpu",kernelFunc:_R};function Rt(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),u=v.sizeFromShape(i),c=v.getTypedArrayFromDType(s,u),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;y_[I]=0);let b=v.locToIndex(_,h,p),w=g.slice(-d);A.forEach(I=>w[I]=0);let x=v.locToIndex(w,d,f);c[y]=e(r[b],a[x])}return[c,i]}}function On(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var vR={kernelName:Th,backendName:"cpu",kernelFunc:On};function Jd(e,t,n="float32"){if(n==="complex64"){let a=Jd(e,t,"float32"),s=Jd(e,t,"float32");return On({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function Lr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var kR={kernelName:ks,backendName:"cpu",kernelFunc:Lr};function mi(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var NR={kernelName:Xh,backendName:"cpu",kernelFunc:mi};function Wa(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Lr({inputs:{x:a},backend:n});let i=Jd(n,a.shape,a.dtype),o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=On({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=mi({inputs:{input:a},backend:n}),o=Wa({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Lr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,u]=Rt((c,h)=>c!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(u,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var IR={kernelName:hs,backendName:"cpu",kernelFunc:Wa};function qt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;_e([i,o],e);let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let u=Wa({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),h=c.complexTensorInfos.real,d=c.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Wa({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,_=l.data.get(y.dataId).values,b=l.data.get(g.dataId).values,[w,x,I]=n(i.shape,o.shape,p,f,_,b),S=l.makeTensorInfo(I,"float32",w),T=l.makeTensorInfo(I,"float32",x),M=On({inputs:{real:S,imag:T},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(S),l.disposeIntermediateTensorInfo(T),M}else{let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}}}function Rm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),u=o.length,c=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),_=n.length,b=v.computeStrides(n);if(p.length+f.length===0)for(let w=0;wI[z]=0);let S=v.locToIndex(I,y,g),T=x.slice(-_);f.forEach(z=>T[z]=0);let M=v.locToIndex(T,_,b),D=e(m[S*2],m[S*2+1],A[M*2],A[M*2+1]);h[w]=D.real,d[w]=D.imag}return[h,d,o]}}var Px=Rt((e,t)=>e+t),SR=Rm((e,t,n,r)=>({real:e+n,imag:t+r})),tc=qt(Na,Px,SR),TR={kernelName:Na,backendName:"cpu",kernelFunc:tc};function Im(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function Lx(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=We([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,u):t.size>0?i.set(i.get(o,u)+t.get(o,l),o,u):i.set(i.get(o,u)+1,o,u))}return i}function xl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=v.sizeFromShape(i.shape),c=n||i.dtype,h=v.getArrayFromDType(c,u);for(let d=0;d{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=n||i.dtype,c=t(l,u,a);return o.makeTensorInfo(i.shape,u,c)}}var Wx=xl(e=>Math.ceil(e)),CR=wl(ds,Wx),ER={kernelName:ds,backendName:"cpu",kernelFunc:CR};function Sm(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let u=0;uMath.exp(e)),lw=wl(xs,Bx),RR={kernelName:xs,backendName:"cpu",kernelFunc:lw},Vx=xl(e=>Math.expm1(e)),FR=wl(po,Vx),MR={kernelName:po,backendName:"cpu",kernelFunc:FR},Ux=xl(e=>Math.floor(e)),$R=wl(ws,Ux),DR={kernelName:ws,backendName:"cpu",kernelFunc:$R};function Hx(e,t,n){let r=We(n,e.dtype);for(let a=0;ae>t?1:0),OR=qt(yo,jx,null,"bool"),zR={kernelName:yo,backendName:"cpu",kernelFunc:OR},Gx=Rt((e,t)=>eMath.log(e)),WR=wl(Is,Xx),BR={kernelName:Is,backendName:"cpu",kernelFunc:WR};function Kx(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=u)}a[s]=o}return a}var Zx=Rt((e,t)=>Math.max(e,t)),VR=qt(Ts,Zx),UR={kernelName:Ts,backendName:"cpu",kernelFunc:VR},Yx=Rt((e,t)=>Math.min(e,t)),HR=qt(Fs,Yx),jR={kernelName:Fs,backendName:"cpu",kernelFunc:HR},Tm=Rt((e,t)=>e*t),GR=Rm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Fm=qt(Ms,Tm,GR),qR={kernelName:Ms,backendName:"cpu",kernelFunc:Fm};function Jx(e,t,n){let r=v.createScalarValue(-1,n);return Tm([],t,r,e,n)}function XR(e){let{inputs:t,backend:n}=e,{x:r}=t;_e(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=Jx(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var KR={kernelName:Io,backendName:"cpu",kernelFunc:XR},Qx=Rt((e,t)=>e!==t?1:0),ZR=qt(So,Qx,null,"bool"),YR={kernelName:So,backendName:"cpu",kernelFunc:ZR};function Cm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),u=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let c=0;cn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var eF={kernelName:Mo,backendName:"cpu",kernelFunc:QR};function Em(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),tF=wl(Us,tw),nF={kernelName:Us,backendName:"cpu",kernelFunc:tF};function Yd(e,t,n,r,a){let s=cn.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=cn.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,u=We(r,a,l),c=We(n,a);for(let h=0;hf+t[m]);c.set(u.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(c.values):c.values}function Ai(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;_e(a,"slice");let[o,l]=cn.parseSliceParams(a,s,i);cn.assertParamsValid(a,o,l);let u=n.data.get(a.dataId).values,c=Yd(u,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,c)}var rF={kernelName:Lo,backendName:"cpu",kernelFunc:Ai},nw=Rt((e,t)=>{let n=e-t;return n*n}),aF=qt(Ks,nw),sF={kernelName:Ks,backendName:"cpu",kernelFunc:aF};function rw(e,t,n,r){let a=We(e,t.dtype);for(let s=0;se-t),iF=Rm((e,t,n,r)=>({real:e-n,imag:t-r})),Mm=qt(Zs,aw,iF),oF={kernelName:Zs,backendName:"cpu",kernelFunc:Mm};function sw(e,t){let n=new Array(e.rank);for(let a=0;a_.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=u.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew Zd,1);var cw=it(lo,e=>e>=0?e:Math.exp(e)-1),lF={kernelName:lo,backendName:"cpu",kernelFunc:cw};function hw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;_e([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let u=0;ue<0?t*e:e);function dw(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;_e([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=cF(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var hF={kernelName:zs,backendName:"cpu",kernelFunc:dw},pw=it(Ps,e=>Math.max(0,e)),dF={kernelName:Ps,backendName:"cpu",kernelFunc:pw},fw=it(Ws,e=>Math.min(Math.max(0,e),6)),pF={kernelName:Ws,backendName:"cpu",kernelFunc:fw};function $m(e,t,n,r,a){if(n==="linear")return Lr({inputs:{x:t},backend:e});if(n==="relu")return pw({inputs:{x:t},backend:e});if(n==="elu")return cw({inputs:{x:t},backend:e});if(n==="relu6")return fw({inputs:{x:t},backend:e});if(n==="prelu")return dw({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return hw({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function gt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let u=n.data.get(a.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,h=u.complexTensorInfos.imag;c.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var fF={kernelName:Do,backendName:"cpu",kernelFunc:gt};function mw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;_e([a,s],"matMul");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=gt({inputs:{x:a},backend:n,attrs:{shape:b}}),I=gt({inputs:{x:s},backend:n,attrs:{shape:w}}),S=i?x.shape[1]:x.shape[2],T=i?x.shape[2]:x.shape[1],M=o?I.shape[1]:I.shape[2],D=Math.max(A,y),z=n.data.get(x.dataId).values,W=n.data.get(I.dataId).values,U=v.computeStrides(x.shape),H=v.computeStrides(I.shape),[X,j,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,ae,te]=o?[1,H[1],H[0]]:[H[1],1,H[0]],ie=T*M,Q=We([D,T,M],x.dtype),he=Q.values,oe=n.blockSize;for(let fe=0;feMath.acos(e)),xF={kernelName:Yi,backendName:"cpu",kernelFunc:gF},wF=it(Ji,e=>Math.acosh(e)),_F={kernelName:Ji,backendName:"cpu",kernelFunc:wF};function bF(e){let{inputs:t,backend:n}=e,r=t;_e(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=We(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=w,_=b)}p[A]=_}return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var CF={kernelName:ls,backendName:"cpu",kernelFunc:TF};function EF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;_e(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=ir({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[c,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(c),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var RF={kernelName:lu,backendName:"cpu",kernelFunc:EF},FF=it(Qi,e=>Math.asin(e)),MF={kernelName:Qi,backendName:"cpu",kernelFunc:FF},$F=it(eo,e=>Math.asinh(e)),DF={kernelName:eo,backendName:"cpu",kernelFunc:$F},OF=it(to,e=>Math.atan(e)),zF={kernelName:to,backendName:"cpu",kernelFunc:OF},PF=Rt((e,t)=>Math.atan2(e,t)),LF=qt(ro,PF),WF={kernelName:ro,backendName:"cpu",kernelFunc:LF},BF=it(no,e=>Math.atanh(e)),VF={kernelName:no,backendName:"cpu",kernelFunc:BF};function Dm(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,u=a.dilationWidth,c=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=We(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],_=a.outShape[3];for(let b=0;bj?j=oe:s==="avg"&&(ee+=oe,Y++)}if(isNaN(j))break}let ae=z+W*_+I;A[ae]=s==="avg"?ee/Y:j}}}return m}function Aw(e,t,n,r,a=!1,s=!1){let i=We(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=We(t,n,e);for(let A=0;AM&&(M=X,a?D=s?((A*r.inHeight+z)*r.inWidth+U)*r.inChannels+y:(z*r.inWidth+U)*r.inChannels+y:D=W*d+H)}}i.set(D,A,g,x,y)}}return i}function yw(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,u=a.dilationDepth,c=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,_=We(a.outShape,n),b=_.values,w=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],I=a.outShape[3]*a.outShape[4],S=a.outShape[4];for(let T=0;Tke?ke=Be:s==="avg"&&(Ie+=Be,Me++),isNaN(ke))break}if(isNaN(ke))break}if(isNaN(ke))break}let Oe=pe+z;b[Oe]=s==="avg"?Ie/Me:ke}}}}return _}function UF(e,t){let n=We(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,u=t.effectiveFilterDepth,c=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=W&&(W=te,U=X*c*h+ee*c+ae)}}}n.set(U,m,y,w,T,A)}}}return n}function HF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;_e(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"avg");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var jF={kernelName:us,backendName:"cpu",kernelFunc:HF};function GF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"avgPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=yw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var qF={kernelName:uu,backendName:"cpu",kernelFunc:GF};function XF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"avgPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=c.strideDepth,d=c.strideHeight,p=c.strideWidth,f=c.filterDepth,m=c.filterHeight,A=c.filterWidth,y=c.dilationDepth,g=c.dilationHeight,_=c.dilationWidth,b=c.effectiveFilterDepth,w=c.effectiveFilterHeight,x=c.effectiveFilterWidth,I=b-1-c.padInfo.front,S=x-1-c.padInfo.left,T=w-1-c.padInfo.top,M=We(s.shape,"float32"),D=1/(f*m*A),z=n.bufferSync(a);for(let W=0;W=c.outDepth||Math.floor(Q)!==Q))for(let he=0;he=c.outHeight||Math.floor(oe)!==oe))for(let fe=0;fe=c.outWidth||Math.floor(pe)!==pe||(te+=z.get(W,Q,oe,pe,U))}}}M.set(te*D,W,H,X,j,U)}return n.makeTensorInfo(M.shape,M.dtype,M.values)}var KF={kernelName:Ih,backendName:"cpu",kernelFunc:XF};function ZF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;_e([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,A=c.dilationWidth,y=c.effectiveFilterHeight,g=c.effectiveFilterWidth,_=g-1-c.padInfo.left,b=y-1-c.padInfo.top,w=We(i.shape,"float32"),x=1/(p*f),I=n.data.get(a.dataId).values,S=We(a.shape,"float32",I);for(let T=0;T=c.outHeight||Math.floor(j)!==j))for(let ee=0;ee=c.outWidth||Math.floor(Y)!==Y||(H+=S.get(T,j,Y,M))}}w.set(H*x,T,D,z,M)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var YF={kernelName:Nh,backendName:"cpu",kernelFunc:ZF};function JF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),_e([a,o,l,s,i],"batchNorm");let{varianceEpsilon:u}=r;u==null&&(u=.001);let c=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),A=f.length,y=p.length,g=d.length,_=h.length,b=0,w=0,x=0,I=0;for(let S=0;S=A&&(b=0),w>=_&&(w=0),x>=y&&(x=0),I>=g&&(I=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var QF={kernelName:bs,backendName:"cpu",kernelFunc:JF};function eM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;_e([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=gt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=ir({inputs:{x:p},backend:n,attrs:{perm:u}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Ai({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var tM={kernelName:cu,backendName:"cpu",kernelFunc:eM};function nM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,u=Im(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var rM={kernelName:Sh,backendName:"cpu",kernelFunc:nM},aM=it(Ia,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let u=0;um.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return Lr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(b=>mi({inputs:{input:b},backend:n})),A=o.map(b=>_l({inputs:{input:b},backend:n})),y=bl({inputs:m,backend:n,attrs:{axis:s}}),g=bl({inputs:A,backend:n,attrs:{axis:s}}),_=On({inputs:{real:y,imag:g},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),A.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),_}let u=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return gt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),c=u.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(u.map(m=>m.shape),1);let h=u[0].shape[0]===1,d=Sm(c,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return u.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var uM={kernelName:ao,backendName:"cpu",kernelFunc:bl};function gw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r;_e([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,_=d.dataFormat==="channelsLast",b=new Ot(d.outShape,a.dtype),w=v.computeStrides(a.shape),x=v.computeStrides(s.shape),I=w[0],S=_?w[1]:w[2],T=_?w[2]:1,M=_?1:w[1],D=b.strides[0],z=_?b.strides[1]:b.strides[2],W=_?b.strides[2]:1,U=_?1:b.strides[1],H=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,j=b.values;for(let ee=0;ee=d.inHeight)continue;let fe=he*x[0],pe=Y+oe*S;for(let ke=0;ke=d.inWidth)continue;let tt=fe+Oe*x[1],nt=pe+$e*T,ot=tt;for(let Ze=0;Ze=u.inDepth)continue;let ee=X*T[0],Y=D+j*S[1];for(let ae=0;ae=u.inHeight)continue;let oe=ee+Q*T[1],fe=Y+he*S[2];for(let pe=0;pe=u.inWidth)continue;let $e=oe+Me*T[2],tt=fe+Oe*u.inChannels,nt=$e;for(let ot=0;otMath.cos(e)),bM={kernelName:ms,backendName:"cpu",kernelFunc:_M},vM=it(so,e=>Math.cosh(e)),kM={kernelName:so,backendName:"cpu",kernelFunc:vM};function NM(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,[c,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=We([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,_=n.data.get(i.dataId).values,b=n.data.get(a.dataId).values,w=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let I=0;I=c)continue;let U=m>1?(D-T)*(h-1)/(m-1):0,H=A>1?(z-M)*(d-1)/(A-1):0;for(let X=0;X1?T*(h-1)+X*U:.5*(T+D)*(h-1);if(j<0||j>h-1){for(let ee=0;ee1?M*(d-1)+te*H:.5*(M+z)*(d-1);if(ie<0||ie>d-1){for(let fe=0;fe1?M*(d-1)+ee*H:.5*(M+z)*(d-1);if(Y<0||Y>d-1){for(let ie=0;iey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],u=a.shape[2],c=a.shape[3],h=l*s,d=u*s,p=c/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,u,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,_=g.left,b=g.top,w=p.outChannels/p.inChannels,x=new Ot(p.outShape,a.dtype),I=n.data.get(a.dataId).values,S=n.data.get(s.dataId).values,T=x.values;for(let M=0;M=p.inHeight)continue;let ee=X*h[0],Y=D+j*c[1];for(let ae=0;ae=p.inWidth)continue;let oe=ee+Q*h[1],fe=Y+he*p.inChannels,pe=te,ke=oe;for(let Ie=0;Ie{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,u=l.data.get(r.dataId).values,c=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:_,strideHeight:b,strideWidth:w,filterHeight:x,filterWidth:I,dilationHeight:S,dilationWidth:T,outShape:M}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),D=v.sizeFromShape(M),z=M.length,W=v.getArrayFromDType(r.dtype,D);for(let U=0;U=0&&Q=0&&oeae&&(ae=ke)}}}let te=v.locToIndex([U,H,j,Y],z,v.computeStrides(M));W[te]=ae}}}return{dataId:l.write(v.toTypedArray(W,r.dtype),M,r.dtype),shape:M,dtype:r.dtype}}},BM={kernelName:zh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${zh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=te,ae=Q)}}}D[Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},VM={kernelName:Oh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Oh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=ie,ae=he)}}}D[z][Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function UM(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;_e([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(u+1)}return n.makeTensorInfo(a.shape,"float32",s)}var HM={kernelName:Ph,backendName:"cpu",kernelFunc:UM},jM=Rt((e,t)=>e===t?1:0),ww=qt(co,jM,null,"bool"),GM={kernelName:co,backendName:"cpu",kernelFunc:ww},qM=R.ERF_P,XM=R.ERF_A1,KM=R.ERF_A2,ZM=R.ERF_A3,YM=R.ERF_A4,JM=R.ERF_A5,QM=it(uo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+qM*n);return t*(1-((((JM*r+YM)*r+ZM)*r+KM)*r+XM)*r*Math.exp(-n*n))}),e$={kernelName:uo,backendName:"cpu",kernelFunc:QM};function Qd(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),gt({inputs:{x:a},backend:n,attrs:{shape:o}})}var t$={kernelName:ho,backendName:"cpu",kernelFunc:Qd},n$=Rt((e,t)=>e/t),Om=qt(gs,n$),zm={kernelName:gs,backendName:"cpu",kernelFunc:Om};function _w(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,u=[a,s],c=v.sizeFromShape(u),h=v.getTypedArrayFromDType("float32",c),d=v.getTypedArrayFromDType("float32",c);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,u]=r.shape,c=a.data.get(r.dataId).values;for(let h=0;h=0&&_Math.floor(e/t)),d$=qt(_s,h$,null,"int32"),p$={kernelName:_s,backendName:"cpu",kernelFunc:d$};function f$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=gw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var m$={kernelName:ei,backendName:"cpu",kernelFunc:f$};function A$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=xw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var y$={kernelName:ti,backendName:"cpu",kernelFunc:A$};function g$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,u,c,h]=R.prepareAndValidate(r,a);if(u===0)return n.makeTensorInfo(l,r.dtype,[]);let d=We([u,c],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/c)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),v$=qt(vs,b$,null,"bool"),k$={kernelName:vs,backendName:"cpu",kernelFunc:v$};function N$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=gt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=_w(o,!0,n),u=gt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),u}var I$={kernelName:Wh,backendName:"cpu",kernelFunc:N$},S$=it(go,e=>Number.isFinite(e)?1:0,"bool"),T$={kernelName:go,backendName:"cpu",kernelFunc:S$},C$=it(xo,e=>Math.abs(e)===Infinity?1:0,"bool"),E$={kernelName:xo,backendName:"cpu",kernelFunc:C$},R$=it(wo,e=>Number.isNaN(e)?1:0,"bool"),F$={kernelName:wo,backendName:"cpu",kernelFunc:R$},M$=Rt((e,t)=>e<=t?1:0),$$=qt(bo,M$,null,"bool"),D$={kernelName:bo,backendName:"cpu",kernelFunc:$$};function O$(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=qx(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var z$={kernelName:Vh,backendName:"cpu",kernelFunc:O$},P$=it(vo,e=>Math.log1p(e)),L$={kernelName:vo,backendName:"cpu",kernelFunc:P$},W$=Rt((e,t)=>e&&t),B$=qt(ko,W$,null,"bool"),V$={kernelName:ko,backendName:"cpu",kernelFunc:B$},U$=it(mu,e=>e?0:1,"bool"),H$={kernelName:mu,backendName:"cpu",kernelFunc:U$},j$=Rt((e,t)=>e||t),G$=qt(Au,j$,null,"bool"),q$={kernelName:Au,backendName:"cpu",kernelFunc:G$};function X$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;_e(a,"LRN");let u=a.shape[3],c=u-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%u,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,c),_=0;for(;y<=g;y++){let b=h[y];_+=b*b}return _}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"max");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var eD={kernelName:Cs,backendName:"cpu",kernelFunc:Q$};function tD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"maxPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=yw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var nD={kernelName:gu,backendName:"cpu",kernelFunc:tD};function rD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"maxPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=n.bufferSync(s),d=UF(h,c),p=c.strideDepth,f=c.strideHeight,m=c.strideWidth,A=c.dilationDepth,y=c.dilationHeight,g=c.dilationWidth,_=c.effectiveFilterDepth,b=c.effectiveFilterHeight,w=c.effectiveFilterWidth,x=_-1-c.padInfo.front,I=w-1-c.padInfo.left,S=b-1-c.padInfo.top,T=We(s.shape,"float32"),M=n.bufferSync(a);for(let D=0;D=c.outDepth||Math.floor(te)!==te))for(let ie=0;ie=c.outHeight||Math.floor(Q)!==Q))for(let he=0;he=c.outWidth||Math.floor(oe)!==oe)continue;let fe=_*b*w-1-d.get(D,te,Q,oe,z),pe=ae*b*w+ie*w+he,ke=fe===pe?1:0;ke!==0&&(Y+=M.get(D,te,Q,oe,z)*ke)}}}T.set(Y,D,W,U,H,z)}return n.makeTensorInfo(T.shape,T.dtype,T.values)}var aD={kernelName:jh,backendName:"cpu",kernelFunc:rD};function sD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;_e([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=n.data.get(o.dataId).values,f=We(d.outShape,o.dtype,Aw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,_=d.effectiveFilterHeight,b=d.effectiveFilterWidth,w=b-1-d.padInfo.left,x=_-1-d.padInfo.top,I=We(o.shape,"float32"),S=n.data.get(a.dataId).values,T=We(a.shape,"float32",S);for(let M=0;M=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y=d.outWidth||Math.floor(ae)!==ae)continue;let te=_*b-1-f.get(M,ee,ae,D),ie=j*b+Y,Q=te===ie?1:0;Q!==0&&(X+=T.get(M,ee,ae,D)*Q)}}I.set(X,M,z,W,D)}return n.makeTensorInfo(I.shape,I.dtype,I.values)}var iD={kernelName:Hh,backendName:"cpu",kernelFunc:sD};function oD(e,t,n,r,a){let s=v.computeStrides(t),i=Dm(e,t,n,s,a,"max"),o=Aw(e,t,n,a,!0,r);return[i.values,o.values]}var lD={kernelName:Gh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;_e(r,"MaxPoolWithArgmax");let u=l.data.get(r.dataId).values,c=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=oD(u,r.shape,r.dtype,o,c),p=l.write(h,c.outShape,r.dtype),f=l.write(d,c.outShape,r.dtype);return[{dataId:p,shape:c.outShape,dtype:r.dtype},{dataId:f,shape:c.outShape,dtype:"int32"}]}};function ep(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"sum");let o;a.dtype==="bool"?o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=Lr({inputs:{x:a},backend:n});let l=o.shape.length,u=v.parseAxisParam(s,o.shape),c=R.getAxesPermutation(u,l),h=u,d=o;c!=null&&(d=ir({inputs:{x:o},backend:n,attrs:{perm:c}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=Jd(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,_=n.data.get(d.dataId).values;for(let b=0;bn.disposeIntermediateTensorInfo(m)),f}var hD={kernelName:Es,backendName:"cpu",kernelFunc:cD};function dD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,u=R.getAxesPermutation(l,a.shape.length),c=a;u!=null&&(c=ir({inputs:{x:a},backend:n,attrs:{perm:u}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,c.shape.length);let[h,d]=R.computeOutAndReduceShapes(c.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),c.dtype),m=n.data.get(c.dataId).values;for(let y=0;yg[0]+a.shape[_]+g[1]),l=s.map(g=>g[0]),u=s.map((g,_)=>g[0]+a.shape[_]),c=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=u[w]&&(_[w]=(u[w]-1)*2-_[w]+c);_=_.map((w,x)=>w-l[x]);let b=v.locToIndex(_,d,p);y[g]=h[b]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var mD={kernelName:xu,backendName:"cpu",kernelFunc:fD},AD=Rt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),yD=qt(No,AD),gD={kernelName:No,backendName:"cpu",kernelFunc:yD},xD=qi(H8());function vw(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),u=bw({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),c=R.expandShapeToKeepDim(u.shape,l),h=gt({inputs:{x:u},backend:n,attrs:{shape:c}}),d=Mm({inputs:{a,b:h},backend:n}),p=lw({inputs:{x:d},backend:n}),f=ep({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Om({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var wD={kernelName:Xs,backendName:"cpu",kernelFunc:vw};function _D(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;_e(a,"multinomial");let l=o?a:vw({inputs:{logits:a},backend:n,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],h=n.data.get(l.dataId).values,d=[u,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&c[h]{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=Qd({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=bl({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var OD={kernelName:Fo,backendName:"cpu",kernelFunc:Nw};function zD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;_e(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),u=n.data.get(a.dataId).values,c=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;yb+l[w]),_=v.locToIndex(g,f,m);A[_]=u[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var Iw={kernelName:Ds,backendName:"cpu",kernelFunc:zD},PD=Rt((e,t)=>Math.pow(e,t)),LD=qt(Os,PD),WD={kernelName:Os,backendName:"cpu",kernelFunc:LD};function BD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=Em(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var VD={kernelName:wu,backendName:"cpu",kernelFunc:BD},UD=it($o,e=>1/e),HD={kernelName:$o,backendName:"cpu",kernelFunc:UD};function jD(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;_e(a,"resizeBilinear");let l=v.computeStrides(a.shape),[u,c]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,u,c,f])),y=[s&&u>1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=0,b=y[0]/g[0],w=y[1]/g[1];for(let x=0;x1?u-1:u,i&&p>1?c-1:c],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],_=n.data.get(s.dataId).values,b=0;for(let w=0;w1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=y[0]/g[0],b=y[1]/g[1],w=0;for(let x=0;x1?c-1:c,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],_=y[0]/g[0],b=y[1]/g[1],w=1/_,x=1/b,I=Math.ceil(w)*2+2,S=Math.ceil(x)*2+2;for(let T=0;T=p)continue;let Q=M+ie*l[1],he=ie*_,oe=Math.min(c-1,i?Math.round(he):Math.floor(he));if(D===oe)for(let fe=0;fe=f)continue;let ke=Q+pe*l[2],Ie=pe*b,Me=Math.min(h-1,i?Math.round(Ie):Math.floor(Ie));H===Me&&(ae+=A[ke+Y])}}m[X+Y]=ae}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var JD={kernelName:Kh,backendName:"cpu",kernelFunc:YD};function QD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;_e(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Lr({inputs:{x:a},backend:n});let l=new Ot(a.shape,a.dtype),u=n.bufferSync(a);for(let c=0;cd[p]=a.shape[p]-1-d[p]),l.set(u.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var eO={kernelName:Bs,backendName:"cpu",kernelFunc:QD},tO={kernelName:Ko,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[u,c,h,d]=r.shape,[p,f]=R.getImageCenter(i,c,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let _=0;_=0&&W=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),rO={kernelName:Vs,backendName:"cpu",kernelFunc:nO};function Sw(e,t,n,r,a,s,i,o,l,u){let c=[r/a,a],h=e.values,d=t.values;if(r===0)return We(n,t.dtype);let p=We(c,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?uO*e:lO*(Math.exp(e)-1)),hO={kernelName:Po,backendName:"cpu",kernelFunc:cO},dO=it(js,e=>1/(1+Math.exp(-e))),pO={kernelName:js,backendName:"cpu",kernelFunc:dO},fO=it(Bo,e=>e<0?-1:e>0?1:0),mO={kernelName:Bo,backendName:"cpu",kernelFunc:fO},AO=it(Hs,e=>Math.sin(e)),yO={kernelName:Hs,backendName:"cpu",kernelFunc:AO},gO=it(Wo,e=>Math.sinh(e)),xO={kernelName:Wo,backendName:"cpu",kernelFunc:gO},wO=11920928955078125e-23,Tw=Math.log(wO)+2,_O=it(Vo,e=>{let t=e>-Tw,n=e{let d=[...c];d[o]=h;let p=Ai({inputs:{x:a},backend:n,attrs:{begin:u,size:d}});return u[o]+=h,p})}var TO={kernelName:Uo,backendName:"cpu",kernelFunc:SO},CO=it(Gs,e=>Math.sqrt(e)),EO={kernelName:Gs,backendName:"cpu",kernelFunc:CO},RO={kernelName:vu,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;_e(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),MO={kernelName:Ta,backendName:"cpu",kernelFunc:FO};function $O(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r;_e(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=gt({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=Ai({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=gt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(_),I=rw(g,x,m,f);b=n.makeTensorInfo(I.shape,I.dtype,I.values)}let w=gt({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var DO={kernelName:Ho,backendName:"cpu",kernelFunc:$O},OO=it(jo,e=>Math.tan(e)),zO={kernelName:jo,backendName:"cpu",kernelFunc:OO},PO=it(Ys,e=>Math.tanh(e)),LO={kernelName:Ys,backendName:"cpu",kernelFunc:PO};function WO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;_e(a,"tile");let i=sw(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var BO={kernelName:Sa,backendName:"cpu",kernelFunc:WO};function VO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;_e(a,"topk");let o=n.data.get(a.dataId).values,[l,u]=iw(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var UO={kernelName:Go,backendName:"cpu",kernelFunc:VO};function GO(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=n,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=v.computeStrides(a.shape),g=y[0],_=y[1],b=y[2],w=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));w.fill(l);let x=r.data.get(a.dataId).values,I=r.data.get(s.dataId).values;for(let S=0;St-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function KO(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function ZO(e,t){return e}function YO(e,t){return v.clamp(0,e,t-1)}function nc(e,t,n,r,a,s,i,o,l,u,c){let h=i*r+o*a+l*s+u;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var rz={kernelName:ku,backendName:"cpu",kernelFunc:nz},az=[yF,bR,xF,_F,TR,vF,NF,SF,CF,RF,MF,DF,zF,WF,VF,jF,qF,KF,YF,mF,QF,tM,rM,IR,ER,sM,vR,oM,uM,dM,fM,cM,gM,wM,AM,bM,kM,IM,TM,EM,FM,MM,DM,zM,LM,WM,VM,BM,zm,lF,HM,GM,e$,RR,t$,MR,o$,u$,c$,DR,p$,m$,y$,x$,_$,zR,k$,kR,I$,lM,T$,E$,F$,uF,LR,D$,z$,BR,L$,V$,H$,q$,K$,Y$,UR,eD,nD,aD,iD,lD,J$,hD,pD,jR,mD,gD,bD,qR,KR,ND,TD,RD,YR,MD,DD,OD,Iw,WD,hF,eF,VD,NR,HD,dF,pF,fF,GD,XD,ZD,JD,eO,tO,rO,nF,sO,oO,hO,pO,mO,yO,xO,rF,wD,bO,kO,IO,TO,EO,RO,sF,MO,DO,oF,uD,zO,LO,BO,UO,JR,qO,QO,tz,rz,$D];for(let e of az)ni(e);var Ew={};ze(Ew,{assertNotComplex:()=>vl,bindCanvasToFramebuffer:()=>oz,bindColorTextureToFramebuffer:()=>rp,bindTextureToProgramUniformSampler:()=>jw,bindTextureUnit:()=>Vw,bindVertexBufferToProgramAttribute:()=>Wm,callAndCheck:()=>xe,canBeRepresented:()=>Rw,createFragmentShader:()=>$w,createFramebuffer:()=>Bw,createProgram:()=>Dw,createStaticIndexBuffer:()=>Pw,createStaticVertexBuffer:()=>zw,createTexture:()=>Lw,createVertexShader:()=>Mw,getBatchDim:()=>yi,getExtensionOrThrow:()=>rc,getFramebufferErrorMessage:()=>Gw,getMaxTexturesInShader:()=>Kw,getNumChannels:()=>sz,getProgramUniformLocation:()=>Hw,getProgramUniformLocationOrThrow:()=>Uw,getRowsCols:()=>gi,getShapeAs3D:()=>ap,getTextureShapeFromLogicalShape:()=>qw,getWebGLDisjointQueryTimerVersion:()=>Zw,getWebGLErrorMessage:()=>Fw,getWebGLMaxTextureSize:()=>Xw,hasExtension:()=>Kn,isCapableOfRenderingToFloatTexture:()=>Yw,isDownloadFloatTextureEnabled:()=>Jw,isReshapeFree:()=>sc,isWebGLFenceEnabled:()=>Qw,isWebGLVersionEnabled:()=>Vm,linkProgram:()=>Ow,resetMaxTextureSize:()=>lz,resetMaxTexturesInShader:()=>uz,unbindColorTextureFromFramebuffer:()=>Bm,unbindTextureUnit:()=>iz,validateFramebuffer:()=>ac,validateProgram:()=>np,validateTextureSize:()=>Ww});var xi={},Um={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function sp(e,t){xi[e]=t}function Wr(e){if(!(e in xi)){let n=cz(e);if(n!==null)xi[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=xi[e];return t.isContextLost()?(delete xi[e],Wr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),xi[e])}function hz(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function cz(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=hz(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete xi[e]},!1),e===1?t.getContext("webgl",Um)||t.getContext("experimental-webgl",Um):t.getContext("webgl2",Um)}var ic;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(ic||(ic={}));var Zn;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Zn||(Zn={}));var tn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(tn||(tn={}));function oc(e,t){return[t,e]}function dz(e,t){return e*t}function lc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function kl(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function pz(e,t){let[n,r]=kl(e,t);return n*r*4}function Hm(e,t){let n=e,r,a,s,i,o,l,u,c,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,u=4,c=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,u=4,c=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:h,textureTypeFloat:d}}function xe(e,t){let n=t();return J().getBool("DEBUG")&&fz(e),n}function fz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Fw(e,t))}var mz=596e-10,Az=65504;function Rw(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||mze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Mw(e,t){let n=la(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function $w(e,t){let n=la(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw yz(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var gz=/ERROR: [0-9]+:([0-9]+):/g;function yz(e,t){let n=gz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` `),s=a.length.toString().length+2,i=a.map((h,d)=>v.rightPad((d+1).toString(),s)+h),o=0;for(let h=0;he.createProgram(),"Unable to create WebGLProgram.")}function Dw(e,t){if(xe(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function np(e,t){if(xe(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function Ow(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function zw(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function az(){return J().getNumber("WEBGL_VERSION")===2?1:4}function Pw(e){return la(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function Lw(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function Ww(e){return la(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function Wm(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),xe(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),xe(e,()=>e.enableVertexAttribArray(o)),!0)}function Bw(e,t,n){Qw(e,n),xe(e,()=>e.activeTexture(e.TEXTURE0+n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function sz(e,t){Qw(e,t),xe(e,()=>e.activeTexture(e.TEXTURE0+t)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Vw(e,t,n){return la(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function Uw(e,t,n){return e.getUniformLocation(t,n)}function Hw(e,t,n,r){xe(e,()=>Bw(e,t,r)),xe(e,()=>e.uniform1i(n,r))}function iz(e){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),xe(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function rp(e,t,n){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function Bm(e,t){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function ac(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+jw(e,t))}function jw(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function la(e,t,n){let r=xe(e,()=>t());if(r==null)throw new Error(n);return r}function Qw(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function yi(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function gi(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function ap(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[yi(e),...gi(e)]),t}function Gw(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=yi(e),s=2,i=2;return e.length&&([s,i]=gi(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function ip(e){return e%2==0}function sc(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||ip(n)&&ip(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&ip(e[0])&&ip(t[0])}var op,lp;function qw(e){if(op==null){let t=Wr(e);op=t.getParameter(t.MAX_TEXTURE_SIZE)}return op}function oz(){op=null}function lz(){lp=null}function Xw(e){if(lp==null){let t=Wr(e);lp=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,lp)}function Kw(e){if(e===0)return 0;let t,n=Wr(e);return Kn(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Kn(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function Kn(e,t){return e.getExtension(t)!=null}function Vm(e){try{if(Wr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function Zw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float"))return!1}else if(!Kn(t,"EXT_color_buffer_float"))return!1;return jm(t)}function Yw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float")||!Kn(t,"WEBGL_color_buffer_float"))return!1}else{if(Kn(t,"EXT_color_buffer_float"))return jm(t);let n="EXT_color_buffer_half_float";if(Kn(t,n)){let r=t.getExtension(n);return gz(t,r)}return!1}return jm(t)}function jm(e){let t=Hm(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function gz(e,t){let n=Hm(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function Jw(e){return e!==2?!1:Wr(e).fenceSync!=null}function vl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Fe=J();Fe.registerFlag("HAS_WEBGL",()=>Fe.getNumber("WEBGL_VERSION")>0);Fe.registerFlag("WEBGL_VERSION",()=>Vm(2)?2:Vm(1)?1:0);Fe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Fe.get("WEBGL_VERSION")===2);Fe.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Fe.registerFlag("WEBGL_PACK",()=>Fe.getBool("HAS_WEBGL"));Fe.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_CLIP",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_REDUCE",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_LAZILY_UNPACK",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_CONV_IM2COL",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>qw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>Xw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Fe.getNumber("WEBGL_VERSION");return e===0?0:Kw(e)});Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Mu.isMobile());Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>Zw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Fe.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>Yw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_FENCE_API_ENABLED",()=>Jw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Fe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});Fe.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Mu.isMobile()&&Fe.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function fn(){let e,t,n,r,a,s,i,o,l,u;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` +`))}function Dw(e){return la(e,()=>e.createProgram(),"Unable to create WebGLProgram.")}function Ow(e,t){if(xe(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function np(e,t){if(xe(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function zw(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Pw(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function sz(){return J().getNumber("WEBGL_VERSION")===2?1:4}function Lw(e){return la(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function Ww(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function Bw(e){return la(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function Wm(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),xe(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),xe(e,()=>e.enableVertexAttribArray(o)),!0)}function Vw(e,t,n){e_(e,n),xe(e,()=>e.activeTexture(e.TEXTURE0+n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function iz(e,t){e_(e,t),xe(e,()=>e.activeTexture(e.TEXTURE0+t)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Uw(e,t,n){return la(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function Hw(e,t,n){return e.getUniformLocation(t,n)}function jw(e,t,n,r){xe(e,()=>Vw(e,t,r)),xe(e,()=>e.uniform1i(n,r))}function oz(e){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),xe(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function rp(e,t,n){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function Bm(e,t){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function ac(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Gw(e,t))}function Gw(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function la(e,t,n){let r=xe(e,()=>t());if(r==null)throw new Error(n);return r}function e_(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function yi(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function gi(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function ap(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[yi(e),...gi(e)]),t}function qw(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=yi(e),s=2,i=2;return e.length&&([s,i]=gi(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function ip(e){return e%2==0}function sc(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||ip(n)&&ip(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&ip(e[0])&&ip(t[0])}var op,lp;function Xw(e){if(op==null){let t=Wr(e);op=t.getParameter(t.MAX_TEXTURE_SIZE)}return op}function lz(){op=null}function uz(){lp=null}function Kw(e){if(lp==null){let t=Wr(e);lp=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,lp)}function Zw(e){if(e===0)return 0;let t,n=Wr(e);return Kn(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Kn(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function Kn(e,t){return e.getExtension(t)!=null}function Vm(e){try{if(Wr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function Yw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float"))return!1}else if(!Kn(t,"EXT_color_buffer_float"))return!1;return jm(t)}function Jw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float")||!Kn(t,"WEBGL_color_buffer_float"))return!1}else{if(Kn(t,"EXT_color_buffer_float"))return jm(t);let n="EXT_color_buffer_half_float";if(Kn(t,n)){let r=t.getExtension(n);return xz(t,r)}return!1}return jm(t)}function jm(e){let t=Hm(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function xz(e,t){let n=Hm(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function Qw(e){return e!==2?!1:Wr(e).fenceSync!=null}function vl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Fe=J();Fe.registerFlag("HAS_WEBGL",()=>Fe.getNumber("WEBGL_VERSION")>0);Fe.registerFlag("WEBGL_VERSION",()=>Vm(2)?2:Vm(1)?1:0);Fe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Fe.get("WEBGL_VERSION")===2);Fe.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Fe.registerFlag("WEBGL_PACK",()=>Fe.getBool("HAS_WEBGL"));Fe.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_CLIP",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_REDUCE",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_LAZILY_UNPACK",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_CONV_IM2COL",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>Xw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>Kw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Fe.getNumber("WEBGL_VERSION");return e===0?0:Zw(e)});Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Mu.isMobile());Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>Yw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Fe.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>Jw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_FENCE_API_ENABLED",()=>Qw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Fe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});Fe.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Mu.isMobile()&&Fe.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function fn(){let e,t,n,r,a,s,i,o,l,u;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` bool isnan_custom(float val) { return (val > 0.0 || val < 0.0) ? false : val != 0.0; } @@ -78,7 +78,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee int getFlatIndex(ivec3 coords) { return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z; } -`}var e_=` +`}var t_=` const float FLOAT_MAX = 1.70141184e38; const float FLOAT_MIN = 1.17549435e-38; @@ -117,7 +117,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return c / 255.0; } -`,xz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` +`,wz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { ${wi(["r","c","d"],e)} return ivec3(r, c, d); @@ -138,7 +138,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${n.output} = result; } - `}},wz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` + `}},_z=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { ${wi(["r","c","d"],e)} return ivec3(r, c, d); @@ -159,22 +159,22 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${n.output} = result; } - `}},_z=class{constructor(e){this.variableNames=["A"],this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` - ${e_} + `}},bz=class{constructor(e){this.variableNames=["A"],this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` + ${t_} void main() { float x = getAAtOutCoords(); ${t.output} = encode_float(x); } - `}},bz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` - ${e_} + `}},vz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` + ${t_} void main() { ivec3 coords = getOutputCoords(); float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); ${t.output} = encode_float(x); } - `}},vz=class{constructor(e,t,n=!1){this.variableNames=["A"];let r=fn(),[a,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` + `}},kz=class{constructor(e,t,n=!1){this.variableNames=["A"];let r=fn(),[a,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` ${Gm(e)} void main() { @@ -204,7 +204,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${r.output} = vec4(${i}, 0., 0., 0.); } - `}},kz=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let r=fn(),[a,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){let c=l*2+u;i+=` + `}},Nz=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let r=fn(),[a,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){let c=l*2+u;i+=` localCoords = coords; if(localCoords[2] + ${u} < ${e[2]}) { localCoords[2] += ${u}; @@ -248,7 +248,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${r.output} = ${o}; } - `}},t_={};ze(t_,{bindVertexProgramAttributeStreams:()=>c_,createBufferFromOutputTexture:()=>p_,createFloat16MatrixTexture:()=>i_,createFloat16PackedMatrixTexture:()=>u_,createFloat32MatrixTexture:()=>s_,createIndexBuffer:()=>a_,createPackedMatrixTexture:()=>l_,createUnsignedBytesMatrixTexture:()=>o_,createVertexBuffer:()=>r_,createVertexShader:()=>n_,downloadByteEncodedFloatMatrixFromOutputTexture:()=>m_,downloadFloat32MatrixFromBuffer:()=>f_,downloadMatrixFromPackedOutputTexture:()=>y_,downloadPackedMatrixFromBuffer:()=>A_,getInternalFormatForFloat16MatrixTexture:()=>Xm,getInternalFormatForFloat16PackedMatrixTexture:()=>Ym,getInternalFormatForFloat32MatrixTexture:()=>qm,getInternalFormatForPackedMatrixTexture:()=>Zm,getInternalFormatForUnsignedBytesMatrixTexture:()=>Km,uploadDenseMatrixToTexture:()=>h_,uploadPixelDataToTexture:()=>d_});function n_(e){let t=fn(),n=`${t.version} + `}},n_={};ze(n_,{bindVertexProgramAttributeStreams:()=>h_,createBufferFromOutputTexture:()=>f_,createFloat16MatrixTexture:()=>o_,createFloat16PackedMatrixTexture:()=>c_,createFloat32MatrixTexture:()=>i_,createIndexBuffer:()=>s_,createPackedMatrixTexture:()=>u_,createUnsignedBytesMatrixTexture:()=>l_,createVertexBuffer:()=>a_,createVertexShader:()=>r_,downloadByteEncodedFloatMatrixFromOutputTexture:()=>A_,downloadFloat32MatrixFromBuffer:()=>m_,downloadMatrixFromPackedOutputTexture:()=>g_,downloadPackedMatrixFromBuffer:()=>y_,getInternalFormatForFloat16MatrixTexture:()=>Xm,getInternalFormatForFloat16PackedMatrixTexture:()=>Ym,getInternalFormatForFloat32MatrixTexture:()=>qm,getInternalFormatForPackedMatrixTexture:()=>Zm,getInternalFormatForUnsignedBytesMatrixTexture:()=>Km,uploadDenseMatrixToTexture:()=>d_,uploadPixelDataToTexture:()=>p_});function r_(e){let t=fn(),n=`${t.version} precision highp float; ${t.attribute} vec3 clipSpacePos; ${t.attribute} vec2 uv; @@ -257,22 +257,22 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return Fw(e,n)}function r_(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return Ow(e,t)}function a_(e){let t=new Uint16Array([0,1,2,2,1,3]);return zw(e,t)}function uc(e,t,n,r,a,s){Lw(t,n);let i=Pw(e),o=e.TEXTURE_2D;return xe(e,()=>e.bindTexture(o,i)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),xe(e,()=>e.texImage2D(o,0,r,t,n,0,a,s,null)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function qm(e){return e.internalFormatFloat}function s_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,qm(r),r.textureFormatFloat,e.FLOAT)}function Xm(e){return e.internalFormatHalfFloat}function i_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Xm(r),r.textureFormatFloat,r.textureTypeHalfFloat)}function Km(e){return e.downloadTextureFormat}function o_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Km(r),e.RGBA,e.UNSIGNED_BYTE)}function Zm(e){return e.internalFormatPackedFloat}function l_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Zm(r),e.RGBA,e.FLOAT)}function Ym(e){return e.internalFormatPackedHalfFloat}function u_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Ym(r),e.RGBA,r.textureTypeHalfFloat)}function c_(e,t,n){let r=0,a=3*4,s=3*4+2*4;return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),Wm(e,t,"clipSpacePos",n,3,s,r)&&Wm(e,t,"uv",n,2,s,a)}function h_(e,t,n,r,a,s){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;a instanceof Uint8Array?(i=new Uint8Array(n*r*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*r*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(a),xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,r,0,e.RGBA,o,i)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function d_(e,t,n){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function p_(e,t,n,r){let a=e.createBuffer();xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,a));let s=4*4*t*n;return xe(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),a}function f_(e,t,n){let r=e,a=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,t),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,a),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),a}function m_(e,t,n,r){let[a,s]=oc(t,n),i=4,o=new Uint8Array(hz(t*n,i));return xe(e,()=>e.readPixels(0,0,a,s,r.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function A_(e,t,n,r,a,s,i,o){let l=e,u=new Float32Array(dz(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function y_(e,t,n){let r=new Float32Array(t*n*4);return xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,r)),r}var up=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=J().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,sp(t,e)):this.gl=Wr(t);let n="WEBGL_color_buffer_float",r="EXT_color_buffer_half_float";if(J().getNumber("WEBGL_VERSION")===1){let a="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=rc(this.gl,a),Kn(this.gl,s))this.textureHalfFloatExtension=rc(this.gl,s);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Kn(this.gl,r))this.colorBufferHalfFloatExtension=rc(this.gl,r);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Kn(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(Kn(this.gl,r))this.colorBufferHalfFloatExtension=this.gl.getExtension(r);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=r_(this.gl),this.indexBuffer=a_(this.gl),this.framebuffer=Ww(this.gl),this.textureConfig=Hm(this.gl,this.textureHalfFloatExtension)}get debug(){return J().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;xe(e,()=>e.finish()),xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.deleteFramebuffer(this.framebuffer)),xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),xe(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),s_(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),i_(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),o_(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),d_(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,r){this.throwIfDisposed(),h_(this.gl,e,t,n,r,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),u_(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),l_(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(Bm(this.gl,this.framebuffer),this.outputTexture=null),xe(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>m_(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,r,a,s){return A_(this.gl,e,t,n,r,a,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return f_(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let r=p_(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(J().getBool("WEBGL_FENCE_API_ENABLED")){let r=e,a=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=r.clientWaitSync(a,0,0);return s===r.ALREADY_SIGNALED||s===r.CONDITION_SATISFIED},t=a}else J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>y_(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=Mw(t,e),r=n_(t),a=$w(t);return xe(t,()=>t.attachShader(a,r)),xe(t,()=>t.attachShader(a,n)),Dw(t,a),this.debug&&np(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=c_(t,this.program,this.vertexBuffer)),a}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&xe(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&np(this.gl,this.program),xe(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?Vw(this.gl,e,t):Uw(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),xe(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),Hw(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[r,a]=kl(t,n);this.setOutputMatrixTextureDriver(e,r,a)}setOutputMatrixWriteRegion(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)}setOutputPackedMatrixWriteRegion(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&np(this.gl,this.program),ac(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),xe(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),xe(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=rc(this.gl,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.createQuery();return n.beginQuery(r.TIME_ELAPSED_EXT,a),a}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),r=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),r&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=Nz(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),rp(this.gl,e,this.framebuffer),this.debug&&ac(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(rp(this.gl,this.outputTexture,this.framebuffer),this.debug&&ac(this.gl)):Bm(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let r=this.gl;rp(r,e,this.framebuffer),this.debug&&ac(r),this.outputTexture=e,xe(r,()=>r.viewport(0,0,t,n)),xe(r,()=>r.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,r){this.throwIfDisposed(),xe(this.gl,()=>this.gl.scissor(e,t,n,r))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function Nz(e){let t=0;for(;t{let f=v.sizeFromShape(p.shapeInfo.logicalShape);p.shapeInfo.isUniform?a.push(`uniform float ${p.name}${f>1?`[${f}]`:""};`):(a.push(`uniform sampler2D ${p.name};`),a.push(`uniform int offset${p.name};`))});let s=a.join(` -`),i=e.map(p=>Iz(p,t,r)).join(` -`),o=t.texShape,l=fn(),u=Cz(l),c,h,d=Fz(l);return t.isPacked?(c=Sz(t.logicalShape,o),h=Rz(l)):(c=Tz(t.logicalShape,o),h=Ez(l)),r&&(d+=Mz),[d,u,h,s,c,i,n].join(` -`)}function Nl(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return Dz(e);case 1:return Oz(e);case 2:return zz(e);case 3:return Pz(e);case 4:return Lz(e);case 5:return Wz(e);case 6:return Bz(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function x_(e){switch(e.shapeInfo.logicalShape.length){case 0:return Vz(e);case 1:return Uz(e);case 2:return Hz(e);case 3:return jz(e);default:return Gz(e)}}function Iz(e,t,n=!1){let r="";n?r+=x_(e):r+=Nl(e);let a=e.shapeInfo.logicalShape,s=t.logicalShape;return a.length<=s.length&&(n?r+=qz(e,t):r+=Xz(e,t)),r}function Sz(e,t){switch(e.length){case 0:return w_();case 1:return Kz(e,t);case 2:return Jz(e,t);case 3:return Zz(e,t);default:return Yz(e,t)}}function Tz(e,t){switch(e.length){case 0:return w_();case 1:return Qz(e,t);case 2:return aP(e,t);case 3:return eP(e,t);case 4:return tP(e,t);case 5:return nP(e,t);case 6:return rP(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function Cz(e){return` + }`;return Mw(e,n)}function a_(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return zw(e,t)}function s_(e){let t=new Uint16Array([0,1,2,2,1,3]);return Pw(e,t)}function uc(e,t,n,r,a,s){Ww(t,n);let i=Lw(e),o=e.TEXTURE_2D;return xe(e,()=>e.bindTexture(o,i)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),xe(e,()=>e.texImage2D(o,0,r,t,n,0,a,s,null)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function qm(e){return e.internalFormatFloat}function i_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,qm(r),r.textureFormatFloat,e.FLOAT)}function Xm(e){return e.internalFormatHalfFloat}function o_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Xm(r),r.textureFormatFloat,r.textureTypeHalfFloat)}function Km(e){return e.downloadTextureFormat}function l_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Km(r),e.RGBA,e.UNSIGNED_BYTE)}function Zm(e){return e.internalFormatPackedFloat}function u_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Zm(r),e.RGBA,e.FLOAT)}function Ym(e){return e.internalFormatPackedHalfFloat}function c_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Ym(r),e.RGBA,r.textureTypeHalfFloat)}function h_(e,t,n){let r=0,a=3*4,s=3*4+2*4;return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),Wm(e,t,"clipSpacePos",n,3,s,r)&&Wm(e,t,"uv",n,2,s,a)}function d_(e,t,n,r,a,s){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;a instanceof Uint8Array?(i=new Uint8Array(n*r*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*r*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(a),xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,r,0,e.RGBA,o,i)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function p_(e,t,n){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function f_(e,t,n,r){let a=e.createBuffer();xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,a));let s=4*4*t*n;return xe(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),a}function m_(e,t,n){let r=e,a=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,t),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,a),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),a}function A_(e,t,n,r){let[a,s]=oc(t,n),i=4,o=new Uint8Array(dz(t*n,i));return xe(e,()=>e.readPixels(0,0,a,s,r.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function y_(e,t,n,r,a,s,i,o){let l=e,u=new Float32Array(pz(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function g_(e,t,n){let r=new Float32Array(t*n*4);return xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,r)),r}var up=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=J().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,sp(t,e)):this.gl=Wr(t);let n="WEBGL_color_buffer_float",r="EXT_color_buffer_half_float";if(J().getNumber("WEBGL_VERSION")===1){let a="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=rc(this.gl,a),Kn(this.gl,s))this.textureHalfFloatExtension=rc(this.gl,s);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Kn(this.gl,r))this.colorBufferHalfFloatExtension=rc(this.gl,r);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Kn(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(Kn(this.gl,r))this.colorBufferHalfFloatExtension=this.gl.getExtension(r);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=a_(this.gl),this.indexBuffer=s_(this.gl),this.framebuffer=Bw(this.gl),this.textureConfig=Hm(this.gl,this.textureHalfFloatExtension)}get debug(){return J().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;xe(e,()=>e.finish()),xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.deleteFramebuffer(this.framebuffer)),xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),xe(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),i_(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),o_(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),l_(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),p_(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,r){this.throwIfDisposed(),d_(this.gl,e,t,n,r,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),c_(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),u_(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(Bm(this.gl,this.framebuffer),this.outputTexture=null),xe(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>A_(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,r,a,s){return y_(this.gl,e,t,n,r,a,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return m_(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let r=f_(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(J().getBool("WEBGL_FENCE_API_ENABLED")){let r=e,a=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=r.clientWaitSync(a,0,0);return s===r.ALREADY_SIGNALED||s===r.CONDITION_SATISFIED},t=a}else J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>g_(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=$w(t,e),r=r_(t),a=Dw(t);return xe(t,()=>t.attachShader(a,r)),xe(t,()=>t.attachShader(a,n)),Ow(t,a),this.debug&&np(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=h_(t,this.program,this.vertexBuffer)),a}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&xe(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&np(this.gl,this.program),xe(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?Uw(this.gl,e,t):Hw(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),xe(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),jw(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[r,a]=kl(t,n);this.setOutputMatrixTextureDriver(e,r,a)}setOutputMatrixWriteRegion(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)}setOutputPackedMatrixWriteRegion(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&np(this.gl,this.program),ac(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),xe(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),xe(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=rc(this.gl,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.createQuery();return n.beginQuery(r.TIME_ELAPSED_EXT,a),a}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),r=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),r&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=Iz(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),rp(this.gl,e,this.framebuffer),this.debug&&ac(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(rp(this.gl,this.outputTexture,this.framebuffer),this.debug&&ac(this.gl)):Bm(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let r=this.gl;rp(r,e,this.framebuffer),this.debug&&ac(r),this.outputTexture=e,xe(r,()=>r.viewport(0,0,t,n)),xe(r,()=>r.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,r){this.throwIfDisposed(),xe(this.gl,()=>this.gl.scissor(e,t,n,r))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function Iz(e){let t=0;for(;t{let f=v.sizeFromShape(p.shapeInfo.logicalShape);p.shapeInfo.isUniform?a.push(`uniform float ${p.name}${f>1?`[${f}]`:""};`):(a.push(`uniform sampler2D ${p.name};`),a.push(`uniform int offset${p.name};`))});let s=a.join(` +`),i=e.map(p=>Sz(p,t,r)).join(` +`),o=t.texShape,l=fn(),u=Ez(l),c,h,d=Mz(l);return t.isPacked?(c=Tz(t.logicalShape,o),h=Fz(l)):(c=Cz(t.logicalShape,o),h=Rz(l)),r&&(d+=$z),[d,u,h,s,c,i,n].join(` +`)}function Nl(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return Oz(e);case 1:return zz(e);case 2:return Pz(e);case 3:return Lz(e);case 4:return Wz(e);case 5:return Bz(e);case 6:return Vz(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function w_(e){switch(e.shapeInfo.logicalShape.length){case 0:return Uz(e);case 1:return Hz(e);case 2:return jz(e);case 3:return Gz(e);default:return qz(e)}}function Sz(e,t,n=!1){let r="";n?r+=w_(e):r+=Nl(e);let a=e.shapeInfo.logicalShape,s=t.logicalShape;return a.length<=s.length&&(n?r+=Xz(e,t):r+=Kz(e,t)),r}function Tz(e,t){switch(e.length){case 0:return __();case 1:return Zz(e,t);case 2:return Qz(e,t);case 3:return Yz(e,t);default:return Jz(e,t)}}function Cz(e,t){switch(e.length){case 0:return __();case 1:return eP(e,t);case 2:return sP(e,t);case 3:return tP(e,t);case 4:return nP(e,t);case 5:return rP(e,t);case 6:return aP(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function Ez(e){return` float sampleTexture(sampler2D textureSampler, vec2 uv) { return ${e.texture2D}(textureSampler, uv).r; } - `}function Ez(e){return` + `}function Rz(e){return` void setOutput(float val) { ${e.output} = vec4(val, 0, 0, 0); } - `}function Rz(e){return` + `}function Fz(e){return` void setOutput(vec4 val) { ${e.output} = val; } - `}function Fz(e){return`${e.version} + `}function Mz(e){return`${e.version} precision highp float; precision highp int; precision highp sampler2D; @@ -327,10 +327,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return fract((p3.x + p3.y) * p3.z); } - ${sP} ${iP} ${oP} - `}var sP=` + ${lP} + `}var iP=` vec2 uvFromFlat(int texNumR, int texNumC, int index) { int texR = index / texNumC; int texC = index - texR * texNumC; @@ -342,7 +342,7 @@ vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,iP=` +`,oP=` vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texNumC, int row, int col) { int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); @@ -350,7 +350,7 @@ vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,oP=` +`,lP=` vec2 packedUVfrom3D(int texNumR, int texNumC, int texelsInBatch, int texelsInLogicalRow, int b, int row, int col) { @@ -359,7 +359,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, int texC = index - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,Mz=` +`,$z=` float getChannel(vec4 frag, vec2 innerDims) { vec2 modCoord = mod(innerDims, 2.); return modCoord.x == 0. ? @@ -370,11 +370,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float modCoord = mod(float(dim), 2.); return modCoord == 0. ? frag.r : frag.g; } -`;function w_(){return` +`;function __(){return` int getOutputCoords() { return 0; } - `}function Kz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` + `}function Zz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` int getOutputCoords() { return 2 * int(resultUV.x * ${n[1]}.0); } @@ -388,7 +388,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec2(${n[0]}, ${n[1]})); return 2 * (resTexRC.x * ${n[1]} + resTexRC.y); } - `}function Qz(e,t){return t[0]===1?` + `}function eP(e,t){return t[0]===1?` int getOutputCoords() { return int(resultUV.x * ${t[1]}.0); } @@ -402,7 +402,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec2(${t[0]}, ${t[1]})); return resTexRC.x * ${t[1]} + resTexRC.y; } - `}function Zz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return` + `}function Yz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * vec2(${n[0]}, ${n[1]})); @@ -416,7 +416,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, return ivec3(b, r, c); } - `}function eP(e,t){let n=wi(["r","c","d"],e);return` + `}function tP(e,t){let n=wi(["r","c","d"],e);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * vec2(${t[0]}, ${t[1]})); @@ -424,7 +424,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ${n} return ivec3(r, c, d); } - `}function Yz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[e.length-1]/2),a=r*Math.ceil(e[e.length-2]/2),s=a,i="",o="b, r, c";for(let l=2;l=1?c="coords = 0;":c=o.map(A=>`coords.${h[A+u]} = 0;`).join(` + `}function Xz(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=e.shapeInfo.logicalShape.length,i=t.logicalShape.length,o=x_(e.shapeInfo.logicalShape,t.logicalShape),l=ut(i),u=i-s,c,h=["x","y","z","w","u","v"];s===0?c="":i<2&&o.length>=1?c="coords = 0;":c=o.map(A=>`coords.${h[A+u]} = 0;`).join(` `);let d="";i<2&&s>0?d="coords":d=e.shapeInfo.logicalShape.map((A,y)=>`coords.${h[y+u]}`).join(", ");let p="return outputValue;",f=v.sizeFromShape(e.shapeInfo.logicalShape)===1,m=v.sizeFromShape(t.logicalShape)===1;if(s===1&&!f&&!m)p=` return vec4(outputValue.xy, outputValue.xy); `;else if(f&&!m)i===1?p=` @@ -804,22 +804,22 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 outputValue = get${r}(${d}); ${p} } - `}function Xz(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&v.arraysEqual(i,s))return` + `}function Kz(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&v.arraysEqual(i,s))return` float ${a}() { return sampleTexture(${n}, resultUV); } - `;let u=ut(l),c=g_(e.shapeInfo.logicalShape,t.logicalShape),h=l-o,d,p=["x","y","z","w","u","v"];o===0?d="":l<2&&c.length>=1?d="coords = 0;":d=c.map(m=>`coords.${p[m+h]} = 0;`).join(` + `;let u=ut(l),c=x_(e.shapeInfo.logicalShape,t.logicalShape),h=l-o,d,p=["x","y","z","w","u","v"];o===0?d="":l<2&&c.length>=1?d="coords = 0;":d=c.map(m=>`coords.${p[m+h]} = 0;`).join(` `);let f="";return l<2&&o>0?f="coords":f=e.shapeInfo.logicalShape.map((m,A)=>`coords.${p[A+h]}`).join(", "),` float ${a}() { ${u} coords = getOutputCoords(); ${d} return get${r}(${f}); } - `}function ut(e){if(e<=1)return"int";if(e===2)return"ivec2";if(e===3)return"ivec3";if(e===4)return"ivec4";if(e===5)return"ivec5";if(e===6)return"ivec6";throw Error(`GPU for rank ${e} is not yet supported`)}function Sl(e,t){let n=JSON.parse(JSON.stringify(e));return n.shapeInfo.logicalShape=t,n}function Tl(e,t){return t.map(n=>e[n]).join(", ")}function lP(e,t,n,r){let a=t.userCode,s=n.map((p,f)=>{let m={logicalShape:p.shape,texShape:p.isUniform?null:p.texData.texShape,isUniform:p.isUniform,isPacked:p.isUniform?!1:p.texData.isPacked,flatOffset:null};return p.texData!=null&&p.texData.slice!=null&&p.texData.slice.flatOffset>0&&(m.flatOffset=p.texData.slice.flatOffset),{name:t.variableNames[f],shapeInfo:m}}),i=s.map(p=>p.shapeInfo),o={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},l=$z(s,o,a,t.packedInputs),u=e.createProgram(l),c=null,h=e.getUniformLocation(u,"NAN",!1);J().getNumber("WEBGL_VERSION")===1&&(c=e.getUniformLocation(u,"INFINITY",!1));let d={};for(let p=0;p{let a=n.logicalShape,s=t[r],i=s.shape;if(!v.arraysEqual(a,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${a} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!v.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function uP(e,t,n,r,a){__(t.inShapeInfos,n),__([t.outShapeInfo],[r]);let s=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),J().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let u=t.program.variableNames[l],c=t.uniformLocations[u],h=t.uniformLocations[`offset${u}`];if(c!=null){if(o.isUniform){if(v.sizeFromShape(o.shape)<2)e.gl.uniform1f(c,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(c,d)}return}o.texData.slice!=null&&h!=null&&e.gl.uniform1i(h,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,c,l)}}),a!=null&&a(e,t.webGLProgram),e.executeProgram()}function cP(e,t,n){let r="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;r+=`${i.shape}_${l}_${o}`});let a=e.userCode,s=e.constructor.name;return s+="_"+r+"_"+a,s}var{addImpl:hP,bincountImpl:b_,bincountReduceImpl:dP,ceilImpl:pP,concatImpl:fP,expImpl:mP,expm1Impl:AP,floorImpl:yP,gatherV2Impl:gP,greaterImpl:xP,lessImpl:wP,linSpaceImpl:_P,logImpl:bP,maxImpl:vP,maximumImpl:kP,minimumImpl:NP,multiplyImpl:IP,negImpl:SP,prodImpl:TP,rangeImpl:CP,rsqrtImpl:EP,simpleAbsImpl:v_,sliceImpl:RP,stridedSliceImpl:FP,subImpl:MP,tileImpl:$P,topKImpl:DP,transposeImpl:Jm,uniqueImpl:OP}=Nm;function k_(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function mn(e,t){return t===1?[e]:k_(e,t)}function zP(e,t){if(e===1)return"rc";let n="";for(let r=0;re[n]).join(", ")}function uP(e,t,n,r){let a=t.userCode,s=n.map((p,f)=>{let m={logicalShape:p.shape,texShape:p.isUniform?null:p.texData.texShape,isUniform:p.isUniform,isPacked:p.isUniform?!1:p.texData.isPacked,flatOffset:null};return p.texData!=null&&p.texData.slice!=null&&p.texData.slice.flatOffset>0&&(m.flatOffset=p.texData.slice.flatOffset),{name:t.variableNames[f],shapeInfo:m}}),i=s.map(p=>p.shapeInfo),o={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},l=Dz(s,o,a,t.packedInputs),u=e.createProgram(l),c=null,h=e.getUniformLocation(u,"NAN",!1);J().getNumber("WEBGL_VERSION")===1&&(c=e.getUniformLocation(u,"INFINITY",!1));let d={};for(let p=0;p{let a=n.logicalShape,s=t[r],i=s.shape;if(!v.arraysEqual(a,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${a} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!v.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function cP(e,t,n,r,a){b_(t.inShapeInfos,n),b_([t.outShapeInfo],[r]);let s=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),J().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let u=t.program.variableNames[l],c=t.uniformLocations[u],h=t.uniformLocations[`offset${u}`];if(c!=null){if(o.isUniform){if(v.sizeFromShape(o.shape)<2)e.gl.uniform1f(c,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(c,d)}return}o.texData.slice!=null&&h!=null&&e.gl.uniform1i(h,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,c,l)}}),a!=null&&a(e,t.webGLProgram),e.executeProgram()}function hP(e,t,n){let r="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;r+=`${i.shape}_${l}_${o}`});let a=e.userCode,s=e.constructor.name;return s+="_"+r+"_"+a,s}var{addImpl:dP,bincountImpl:v_,bincountReduceImpl:pP,ceilImpl:fP,concatImpl:mP,expImpl:AP,expm1Impl:yP,floorImpl:gP,gatherV2Impl:xP,greaterImpl:wP,lessImpl:_P,linSpaceImpl:bP,logImpl:vP,maxImpl:kP,maximumImpl:NP,minimumImpl:IP,multiplyImpl:SP,negImpl:TP,prodImpl:CP,rangeImpl:EP,rsqrtImpl:RP,simpleAbsImpl:k_,sliceImpl:FP,stridedSliceImpl:MP,subImpl:$P,tileImpl:DP,topKImpl:OP,transposeImpl:Jm,uniqueImpl:zP}=Nm;function N_(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function mn(e,t){return t===1?[e]:N_(e,t)}function PP(e,t){if(e===1)return"rc";let n="";for(let r=0;r ${t[0]}`;let r="";for(let a=e-2;a= ${t[a]}`,a ${t[0]}`;let r="";for(let a=e-2;a= ${t[a]}`,a= ${t}; bool rEdge = rp1 >= ${n}; - `}function WP(e,t){let n=e.length,r=VP(n,t);return n===1?`getA(rc), + `}function BP(e,t){let n=e.length,r=UP(n,t);return n===1?`getA(rc), rc + 1 >= ${e[0]} ? 0. : getA(rc + 1), 0, 0`:`getA(${r[0]}), cEdge ? 0. : getA(${r[1]}), rEdge ? 0. : getA(${r[2]}), - rEdge || cEdge ? 0. : getA(${r[3]})`}var N_=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let r=0;r<4;r++){let a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+=` + rEdge || cEdge ? 0. : getA(${r[3]})`}var I_=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let r=0;r<4;r++){let a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+=` ${a} ${r>0?"if(thisRC.y < rows && thisRC.z < cols){":""} int flatIndex = getFlatIndex(thisRC); @@ -856,7 +856,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); ${r>0?"}":""} `}this.userCode=` - ${UP(t)} + ${HP(t)} ${Gm(e)} void main() { @@ -872,12 +872,12 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}};function UP(e){return` + `}};function HP(e){return` ivec3 inputCoordsFromReshapedOutCoords(int index) { ${wi(["r","c","d"],e)} return ivec3(r, c, d); } - `}var HP=class{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){let r=S_(t,n),a=T_(e,r,n);a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]);let s=I_(e,r,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}let i;return r===tn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===tn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===tn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,r){if(this.freeTextures==null)return;let a=S_(n,r),s=T_(t,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);let i=I_(t,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),o=J().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],u=l.indexOf(e);if(u<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(u,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function jP(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function I_(e,t,n,r,a){let s=GP(t,r),i;if(a){let[l,u]=kl(e[0],e[1]);i=l*u}else{let[l,u]=oc(e[0],e[1]);i=l*u}let o=jP(n,s);return i*o}function GP(e,t){switch(e){case tn.PACKED_2X2_FLOAT32:return Zm(t);case tn.PACKED_2X2_FLOAT16:return Ym(t);case tn.UNPACKED_FLOAT32:return qm(t);case tn.UNPACKED_FLOAT16:return Xm(t);case tn.PACKED_4X1_UNSIGNED_BYTE:return Km(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function qP(e){return J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?tn.PACKED_2X2_FLOAT32:tn.UNPACKED_FLOAT32:e?tn.PACKED_2X2_FLOAT16:tn.UNPACKED_FLOAT16}function S_(e,t){if(e===Zn.UPLOAD)return tn.PACKED_2X2_FLOAT32;if(e===Zn.RENDER||e==null)return qP(t);if(e===Zn.DOWNLOAD||e===Zn.PIXELS)return tn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function T_(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var Ba=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` + `}var jP=class{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){let r=T_(t,n),a=C_(e,r,n);a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]);let s=S_(e,r,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}let i;return r===tn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===tn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===tn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,r){if(this.freeTextures==null)return;let a=T_(n,r),s=C_(t,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);let i=S_(t,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),o=J().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],u=l.indexOf(e);if(u<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(u,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function GP(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function S_(e,t,n,r,a){let s=qP(t,r),i;if(a){let[l,u]=kl(e[0],e[1]);i=l*u}else{let[l,u]=oc(e[0],e[1]);i=l*u}let o=GP(n,s);return i*o}function qP(e,t){switch(e){case tn.PACKED_2X2_FLOAT32:return Zm(t);case tn.PACKED_2X2_FLOAT16:return Ym(t);case tn.UNPACKED_FLOAT32:return qm(t);case tn.UNPACKED_FLOAT16:return Xm(t);case tn.PACKED_4X1_UNSIGNED_BYTE:return Km(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function XP(e){return J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?tn.PACKED_2X2_FLOAT32:tn.UNPACKED_FLOAT32:e?tn.PACKED_2X2_FLOAT16:tn.UNPACKED_FLOAT16}function T_(e,t){if(e===Zn.UPLOAD)return tn.PACKED_2X2_FLOAT32;if(e===Zn.RENDER||e==null)return XP(t);if(e===Zn.DOWNLOAD||e===Zn.PIXELS)return tn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function C_(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var Ba=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` float unaryOperation(float x) { ${t} } @@ -888,11 +888,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},xr="if (isnan(x)) return x;",XP="return x;",C_="return abs(x);",KP="return (x >= 0.0) ? x : (exp(x) - 1.0);",ZP=xr+` + `}},xr="if (isnan(x)) return x;",KP="return x;",E_="return abs(x);",ZP="return (x >= 0.0) ? x : (exp(x) - 1.0);",YP=xr+` return (x < 0.0) ? 0.0 : x; -`,YP=xr+` +`,JP=xr+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,cp="return x;",JP="return x;",QP=` +`,cp="return x;",QP="return x;",eL=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -901,7 +901,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,eL=` +`,tL=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -911,7 +911,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,tL=` +`,nL=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -932,14 +932,14 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},nL=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=mn("rc",t),r=ut(t),a=zP(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` + `}},rL=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=mn("rc",t),r=ut(t),a=PP(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` void main() { ${r} rc = getOutputCoords(); vec4 packedInput = getA(${a}); setOutput(getChannel(packedInput, ${i})); } - `}},rL=Pr.whereImpl,aL=1e-7,sL=1e-4,Qm={};function iL(e){return e in Qm||(Qm[e]={}),Qm[e]}var oL=128,lL=600;function uL(){return J().global.screen==null?1024:J().global.screen.height*J().global.screen.width*window.devicePixelRatio*lL/1024/1024}var El=class extends su{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!J().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Wr(J().getNumber("WEBGL_VERSION"));this.binaryCache=iL(J().getNumber("WEBGL_VERSION")),this.gpgpu=new up(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new HP(this.gpgpu),this.numMBBeforeWarning=uL(),this.texData=new xh(this,Fr())}nextDataId(){return El.nextDataId++}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((J().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||J().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let r={id:this.nextDataId()};return this.texData.set(r,{shape:t,dtype:n,values:e,usage:Zn.UPLOAD,refCount:1}),r}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,r,a){if(J().getBool("DEBUG")&&this.checkNumericalProblems(t),r==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:r,values:t,usage:Zn.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:r,complexTensorInfos:a,slice:s,shape:i,isPacked:o}=t;if(s!=null){let h;o?h=new Cl(i,cp):h=new Ba(i,cp);let d=this.runWebGLProgram(h,[{dataId:e,shape:i,dtype:r}],r),p=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),p}if(n!=null)return this.convertAndCacheOnCPU(e);if(r==="string")return n;let l=this.activeTimers!=null,u;l&&(u=v.now());let c;if(r==="complex64"){let h=this.readSync(a.real.dataId),d=this.readSync(a.imag.dataId);c=R.mergeRealAndImagArrays(h,d)}else c=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=v.now()-u),this.convertAndCacheOnCPU(e,c)}async read(e){if(this.pendingRead.has(e)){let p=this.pendingRead.get(e);return new Promise(f=>p.push(f))}let t=this.texData.get(e),{values:n,shape:r,slice:a,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(a!=null){let p;o?p=new Cl(r,cp):p=new Ba(r,cp);let f=this.runWebGLProgram(p,[{dataId:e,shape:r,dtype:s}],s),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(!J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&J().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,u;if(s!=="complex64"&&J().get("WEBGL_BUFFER_SUPPORTED")){u=this.decode(e);let p=this.texData.get(u.dataId);l=this.gpgpu.createBufferFromTexture(p.texture,...lc(r))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let c;if(s==="complex64"){let p=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),f=p[0],m=p[1];c=R.mergeRealAndImagArrays(f,m)}else if(l==null)c=this.getValuesFromTexture(e);else{let p=v.sizeFromShape(r);c=this.gpgpu.downloadFloat32MatrixFromBuffer(l,p)}u!=null&&this.disposeIntermediateTensorInfo(u);let h=this.convertAndCacheOnCPU(e,c),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(p=>p(h)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Fr().removeDataId(e,this),this.pendingDeletes--),h}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],r=!1;this.programTimersStack==null?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e();let a=v.flatten(this.activeTimers.map(o=>o.query)).filter(o=>o!=null),s=v.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,r&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(a);i.kernelMs=v.sum(o),i.getExtraProfileInfo=()=>o.map((l,u)=>({name:s[u],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:r,usage:a,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(r,n),this.textureManager.releaseTexture(t,r,a,s)));let u=this.texData.get(e);u.texture=null,u.texShape=null,u.isPacked=!1,u.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return J().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Fr().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=oL){let n=this.getCPUBackend();return!J().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(r=>this.texData.get(r.dataId).texture==null&&v.sizeFromShape(r.shape)0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:r}=this.makeTensorInfo(e,t,n);return Fr().makeTensorFromDataId(r,e,t,this)}unpackTensor(e){let t=new nL(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new BP(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[yi(e.shape),...gi(e.shape)],r={dtype:e.dtype,shape:n,dataId:e.dataId},a=[yi(t),...gi(t)],s=new N_(a,n),i=!0,o=this.runWebGLProgram(s,[r],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:r,dtype:a}=t,s=ap(r),i;n?i=new wz(s):i=new xz(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:a,dataId:e}],a,null,o);return{dtype:a,shape:r,dataId:l.dataId}}runWebGLProgram(e,t,n,r,a=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===ic.DENSE){let m=lc(e.outputShape);i.texShape=m.map(A=>A*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),v.sizeFromShape(s.shape)===0)return i.values=v.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let A=this.texData.get(m.dataId);if(A.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=J().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:A.values};e.packedInputs&&(A.isPacked=!0,A.shape=m.shape)}else if(!!A.isPacked!=!!e.packedInputs)m=A.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),A=this.texData.get(m.dataId);else if(A.isPacked&&!sc(A.shape,m.shape)){let y=m,g=m.shape;m.shape=A.shape,m=this.packedReshape(m,g),o.push(m),A=this.texData.get(m.dataId),y.shape=g}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:A,isUniform:!1}});this.uploadToGPU(s.dataId);let u={shape:s.shape,texData:i,isUniform:!1},c=cP(e,l,u),h=this.getAndSaveBinary(c,()=>lP(this.gpgpu,e,l,u)),d=this.activeTimers!=null,p;d&&(p=this.startTimer()),uP(this.gpgpu,h,l,u,r),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(p=this.endTimer(p),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(p)}));let f=J().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!J().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&a===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,r,a=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,r,a)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(J().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=B(()=>{if(!J().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=J().getBool("DEBUG");J().set("DEBUG",!1);let t=this.abs(be(1e-8)).dataSync()[0];if(J().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?aL:sL}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:r,values:a,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,u;l&&(u=v.now());let c=t.texShape;if(c==null&&(c=Gw(n,o),t.texShape=c),a!=null){let h=ap(n),d,p=c[1],f=c[0],m=a instanceof Uint8Array;o?([p,f]=kl(c[0],c[1]),d=new kz(h,[f,p],m)):d=new vz(h,[f,p],m);let A=this.makeTensorInfo([f,p],r);m?this.texData.get(A.dataId).usage=Zn.PIXELS:this.texData.get(A.dataId).usage=Zn.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(A.dataId),p,f,a);let y=!0,g=this.runWebGLProgram(d,[A],r,null,y),_=this.texData.get(g.dataId);t.texture=_.texture,t.texShape=_.texShape,t.isPacked=_.isPacked,t.usage=_.usage,this.disposeIntermediateTensorInfo(A),this.texData.delete(g.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-u)}else{let h=this.acquireTexture(c,i,r,o);t.texture=h}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:r}=n;return this.releaseGPUData(e),t!=null&&(n.values=cL(t,r)),n.values}acquireTexture(e,t,n,r){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${a} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,r)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}};El.nextDataId=0;function cL(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let r=0;rnew El,2);var hL={forceHalfFloat:R_},F_=` + `}},aL=Pr.whereImpl,sL=1e-7,iL=1e-4,Qm={};function oL(e){return e in Qm||(Qm[e]={}),Qm[e]}var lL=128,uL=600;function cL(){return J().global.screen==null?1024:J().global.screen.height*J().global.screen.width*window.devicePixelRatio*uL/1024/1024}var El=class extends su{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!J().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Wr(J().getNumber("WEBGL_VERSION"));this.binaryCache=oL(J().getNumber("WEBGL_VERSION")),this.gpgpu=new up(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new jP(this.gpgpu),this.numMBBeforeWarning=cL(),this.texData=new xh(this,Fr())}nextDataId(){return El.nextDataId++}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((J().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||J().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let r={id:this.nextDataId()};return this.texData.set(r,{shape:t,dtype:n,values:e,usage:Zn.UPLOAD,refCount:1}),r}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,r,a){if(J().getBool("DEBUG")&&this.checkNumericalProblems(t),r==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:r,values:t,usage:Zn.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:r,complexTensorInfos:a,slice:s,shape:i,isPacked:o}=t;if(s!=null){let h;o?h=new Cl(i,cp):h=new Ba(i,cp);let d=this.runWebGLProgram(h,[{dataId:e,shape:i,dtype:r}],r),p=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),p}if(n!=null)return this.convertAndCacheOnCPU(e);if(r==="string")return n;let l=this.activeTimers!=null,u;l&&(u=v.now());let c;if(r==="complex64"){let h=this.readSync(a.real.dataId),d=this.readSync(a.imag.dataId);c=R.mergeRealAndImagArrays(h,d)}else c=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=v.now()-u),this.convertAndCacheOnCPU(e,c)}async read(e){if(this.pendingRead.has(e)){let p=this.pendingRead.get(e);return new Promise(f=>p.push(f))}let t=this.texData.get(e),{values:n,shape:r,slice:a,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(a!=null){let p;o?p=new Cl(r,cp):p=new Ba(r,cp);let f=this.runWebGLProgram(p,[{dataId:e,shape:r,dtype:s}],s),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(!J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&J().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,u;if(s!=="complex64"&&J().get("WEBGL_BUFFER_SUPPORTED")){u=this.decode(e);let p=this.texData.get(u.dataId);l=this.gpgpu.createBufferFromTexture(p.texture,...lc(r))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let c;if(s==="complex64"){let p=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),f=p[0],m=p[1];c=R.mergeRealAndImagArrays(f,m)}else if(l==null)c=this.getValuesFromTexture(e);else{let p=v.sizeFromShape(r);c=this.gpgpu.downloadFloat32MatrixFromBuffer(l,p)}u!=null&&this.disposeIntermediateTensorInfo(u);let h=this.convertAndCacheOnCPU(e,c),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(p=>p(h)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Fr().removeDataId(e,this),this.pendingDeletes--),h}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],r=!1;this.programTimersStack==null?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e();let a=v.flatten(this.activeTimers.map(o=>o.query)).filter(o=>o!=null),s=v.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,r&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(a);i.kernelMs=v.sum(o),i.getExtraProfileInfo=()=>o.map((l,u)=>({name:s[u],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:r,usage:a,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(r,n),this.textureManager.releaseTexture(t,r,a,s)));let u=this.texData.get(e);u.texture=null,u.texShape=null,u.isPacked=!1,u.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return J().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Fr().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=lL){let n=this.getCPUBackend();return!J().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(r=>this.texData.get(r.dataId).texture==null&&v.sizeFromShape(r.shape)0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:r}=this.makeTensorInfo(e,t,n);return Fr().makeTensorFromDataId(r,e,t,this)}unpackTensor(e){let t=new rL(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new VP(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[yi(e.shape),...gi(e.shape)],r={dtype:e.dtype,shape:n,dataId:e.dataId},a=[yi(t),...gi(t)],s=new I_(a,n),i=!0,o=this.runWebGLProgram(s,[r],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:r,dtype:a}=t,s=ap(r),i;n?i=new _z(s):i=new wz(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:a,dataId:e}],a,null,o);return{dtype:a,shape:r,dataId:l.dataId}}runWebGLProgram(e,t,n,r,a=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===ic.DENSE){let m=lc(e.outputShape);i.texShape=m.map(A=>A*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),v.sizeFromShape(s.shape)===0)return i.values=v.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let A=this.texData.get(m.dataId);if(A.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=J().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:A.values};e.packedInputs&&(A.isPacked=!0,A.shape=m.shape)}else if(!!A.isPacked!=!!e.packedInputs)m=A.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),A=this.texData.get(m.dataId);else if(A.isPacked&&!sc(A.shape,m.shape)){let y=m,g=m.shape;m.shape=A.shape,m=this.packedReshape(m,g),o.push(m),A=this.texData.get(m.dataId),y.shape=g}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:A,isUniform:!1}});this.uploadToGPU(s.dataId);let u={shape:s.shape,texData:i,isUniform:!1},c=hP(e,l,u),h=this.getAndSaveBinary(c,()=>uP(this.gpgpu,e,l,u)),d=this.activeTimers!=null,p;d&&(p=this.startTimer()),cP(this.gpgpu,h,l,u,r),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(p=this.endTimer(p),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(p)}));let f=J().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!J().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&a===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,r,a=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,r,a)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(J().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=B(()=>{if(!J().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=J().getBool("DEBUG");J().set("DEBUG",!1);let t=this.abs(be(1e-8)).dataSync()[0];if(J().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?sL:iL}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:r,values:a,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,u;l&&(u=v.now());let c=t.texShape;if(c==null&&(c=qw(n,o),t.texShape=c),a!=null){let h=ap(n),d,p=c[1],f=c[0],m=a instanceof Uint8Array;o?([p,f]=kl(c[0],c[1]),d=new Nz(h,[f,p],m)):d=new kz(h,[f,p],m);let A=this.makeTensorInfo([f,p],r);m?this.texData.get(A.dataId).usage=Zn.PIXELS:this.texData.get(A.dataId).usage=Zn.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(A.dataId),p,f,a);let y=!0,g=this.runWebGLProgram(d,[A],r,null,y),_=this.texData.get(g.dataId);t.texture=_.texture,t.texShape=_.texShape,t.isPacked=_.isPacked,t.usage=_.usage,this.disposeIntermediateTensorInfo(A),this.texData.delete(g.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-u)}else{let h=this.acquireTexture(c,i,r,o);t.texture=h}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:r}=n;return this.releaseGPUData(e),t!=null&&(n.values=hL(t,r)),n.values}acquireTexture(e,t,n,r){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${a} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,r)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}};El.nextDataId=0;function hL(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let r=0;rnew El,2);var dL={forceHalfFloat:F_},M_=` if (isnan(a)) return a; if (isnan(b)) return b; `,Rl=class{constructor(e,t,n){this.variableNames=["A","B"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` @@ -989,21 +989,21 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}};function zn(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var dL={kernelName:ks,backendName:"webgl",kernelFunc:zn};function Va(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.makeTensorInfo(r.shape,"complex64"),i=n.texData.get(s.dataId),o=zn({inputs:{x:r},backend:n}),l=zn({inputs:{x:a},backend:n});return i.complexTensorInfos={real:o,imag:l},s}var pL={kernelName:Th,backendName:"webgl",kernelFunc:Va},M_="return (a < 0.) ? b * a : a;",$_=` + `}};function zn(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var pL={kernelName:ks,backendName:"webgl",kernelFunc:zn};function Va(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.makeTensorInfo(r.shape,"complex64"),i=n.texData.get(s.dataId),o=zn({inputs:{x:r},backend:n}),l=zn({inputs:{x:a},backend:n});return i.complexTensorInfos={real:o,imag:l},s}var fL={kernelName:Th,backendName:"webgl",kernelFunc:Va},$_="return (a < 0.) ? b * a : a;",D_=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function fL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r,i=n.makeTensorInfo([],"float32",v.createScalarValue(s,"float32")),o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc($_,a.shape,i.shape):new Rl(M_,a.shape,i.shape),l=n.runWebGLProgram(o,[a,i],a.dtype);return n.disposeIntermediateTensorInfo(i),l}var mL={kernelName:Ns,backendName:"webgl",kernelFunc:fL},D_="return (a < 0.) ? b * a : a;",O_=` +`;function mL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r,i=n.makeTensorInfo([],"float32",v.createScalarValue(s,"float32")),o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(D_,a.shape,i.shape):new Rl($_,a.shape,i.shape),l=n.runWebGLProgram(o,[a,i],a.dtype);return n.disposeIntermediateTensorInfo(i),l}var AL={kernelName:Ns,backendName:"webgl",kernelFunc:mL},O_="return (a < 0.) ? b * a : a;",z_=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function AL(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(O_,r.shape,a.shape):new Rl(D_,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)}var yL={kernelName:zs,backendName:"webgl",kernelFunc:AL},z_="if (isnan(x)) return x;",gL=` +`;function yL(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(z_,r.shape,a.shape):new Rl(O_,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)}var gL={kernelName:zs,backendName:"webgl",kernelFunc:yL},P_="if (isnan(x)) return x;",xL=` if (isnan(a)) return a; if (isnan(b)) return b; -`,xL=` +`,wL=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function Xe({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:r}){return({inputs:a,backend:s})=>{let{x:i}=a,o=s,l=r||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let h=o.texData.get(i.dataId),d=n(h.values,l);return o.makeTensorInfo(i.shape,l,d)}let u=J().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,c;return u?c=new Cl(i.shape,t):c=new Ba(i.shape,e),o.runWebGLProgram(c,[i],l)}}function nn({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:r=!1,cpuKernelImpl:a,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:u}=i,c=o;if(r&&l.dtype==="complex64"){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=[[f.complexTensorInfos.real,m.complexTensorInfos.real],[f.complexTensorInfos.imag,m.complexTensorInfos.imag]].map(_=>{let[b,w]=_,x={dataId:b.dataId,dtype:b.dtype,shape:l.shape},I={dataId:w.dataId,dtype:w.dtype,shape:u.shape},S=new Rl(e,l.shape,u.shape);return c.runWebGLProgram(S,[x,I],nr(b.dtype,w.dtype))}),g=Va({inputs:{real:A,imag:y},backend:c});return c.disposeIntermediateTensorInfo(A),c.disposeIntermediateTensorInfo(y),g}let h=s||nr(l.dtype,u.dtype);if(c.shouldExecuteOnCPU([l,u])&&a!=null){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=a(l.shape,u.shape,f.values,m.values,h),g=c.makeTensorInfo(y,h),_=c.texData.get(g.dataId);return _.values=A,g}let d=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,p;return d?p=new cc(t,l.shape,u.shape,n):p=new Rl(e,l.shape,u.shape),c.runWebGLProgram(p,[l,u],h)}}function dp(e,t=!1){if(e==="linear")return t?JP:XP;if(e==="relu")return t?eL:ZP;if(e==="elu")return t?QP:KP;if(e==="relu6")return t?tL:YP;if(e==="prelu")return t?O_:D_;if(e==="leakyrelu")return t?$_:M_;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var P_=class{constructor(e,t,n,r=!1,a=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let u=r?e[1]:e[2],c=Math.ceil(u/2),h=r?"i * 2, rc.y":"rc.y, i * 2",d=a?"rc.z, i * 2":"i * 2, rc.z",p=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],m="",A="";i&&(o?m=`vec4 activation(vec4 a) { +`;function Xe({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:r}){return({inputs:a,backend:s})=>{let{x:i}=a,o=s,l=r||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let h=o.texData.get(i.dataId),d=n(h.values,l);return o.makeTensorInfo(i.shape,l,d)}let u=J().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,c;return u?c=new Cl(i.shape,t):c=new Ba(i.shape,e),o.runWebGLProgram(c,[i],l)}}function nn({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:r=!1,cpuKernelImpl:a,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:u}=i,c=o;if(r&&l.dtype==="complex64"){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=[[f.complexTensorInfos.real,m.complexTensorInfos.real],[f.complexTensorInfos.imag,m.complexTensorInfos.imag]].map(_=>{let[b,w]=_,x={dataId:b.dataId,dtype:b.dtype,shape:l.shape},I={dataId:w.dataId,dtype:w.dtype,shape:u.shape},S=new Rl(e,l.shape,u.shape);return c.runWebGLProgram(S,[x,I],nr(b.dtype,w.dtype))}),g=Va({inputs:{real:A,imag:y},backend:c});return c.disposeIntermediateTensorInfo(A),c.disposeIntermediateTensorInfo(y),g}let h=s||nr(l.dtype,u.dtype);if(c.shouldExecuteOnCPU([l,u])&&a!=null){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=a(l.shape,u.shape,f.values,m.values,h),g=c.makeTensorInfo(y,h),_=c.texData.get(g.dataId);return _.values=A,g}let d=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,p;return d?p=new cc(t,l.shape,u.shape,n):p=new Rl(e,l.shape,u.shape),c.runWebGLProgram(p,[l,u],h)}}function dp(e,t=!1){if(e==="linear")return t?QP:KP;if(e==="relu")return t?tL:YP;if(e==="elu")return t?eL:ZP;if(e==="relu6")return t?nL:JP;if(e==="prelu")return t?z_:O_;if(e==="leakyrelu")return t?D_:$_;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var L_=class{constructor(e,t,n,r=!1,a=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let u=r?e[1]:e[2],c=Math.ceil(u/2),h=r?"i * 2, rc.y":"rc.y, i * 2",d=a?"rc.z, i * 2":"i * 2, rc.z",p=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],m="",A="";i&&(o?m=`vec4 activation(vec4 a) { vec4 b = getPreluActivationWeightsAtOutCoords(); ${i} }`:l?m=`vec4 activation(vec4 a) { @@ -1042,7 +1042,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}},L_={REAL:"return areal * breal - aimag * bimag;",IMAG:"return areal * bimag + aimag * breal;"},W_=class{constructor(e,t,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` + `}},W_={REAL:"return areal * breal - aimag * bimag;",IMAG:"return areal * bimag + aimag * breal;"},B_=class{constructor(e,t,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` float binaryOpComplex( float areal, float aimag, float breal, float bimag) { ${e} @@ -1055,7 +1055,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float bimag = getBImagAtOutCoords(); setOutput(binaryOpComplex(areal, aimag, breal, bimag)); } - `}},B_="return a * b;";function V_(e){let{inputs:t,backend:n}=e,{a:r,b:a}=t,s=R.upcastType(r.dtype,a.dtype);if(r.dtype==="complex64"){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),u=new W_(L_.REAL,r.shape,a.shape),c=new W_(L_.IMAG,r.shape,a.shape),h=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:r.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:r.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:a.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:a.shape}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}if(n.shouldExecuteOnCPU([r,a])){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),[u,c]=IP(r.shape,a.shape,o.values,l.values,s),h=n.makeTensorInfo(c,s),d=n.texData.get(h.dataId);return d.values=u,h}let i;return J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new cc(B_,r.shape,a.shape):i=new Rl(B_,r.shape,a.shape),n.runWebGLProgram(i,[r,a],s)}var wL={kernelName:Ms,backendName:"webgl",kernelFunc:V_};function _L(e,t,n){let r=[yi(e.shape),...gi(e.shape)],a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[yi(t),...gi(t)],i=new N_(s,r),o=!0,l=n.runWebGLProgram(i,[a],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function Ae(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=n,o=v.sizeFromShape(a.shape),l=v.inferFromImplicitShape(s,o),u=v.sizeFromShape(l);v.assert(o===u,()=>`The new shape (${l}) has ${u} elements and the old shape (${a.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let c=i.texData.get(a.dataId);return c.isPacked&&!sc(a.shape,l)&&!(c.texture!==null&&sc(c.shape,l))?_L(a,l,i):(i.incRef(a.dataId),{dataId:a.dataId,shape:l,dtype:a.dtype})}var bL={kernelName:Do,backendName:"webgl",kernelFunc:Ae},U_=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let c=1/t;l=`sumValue += dot(values * ${v.isInt(c)?c.toPrecision(2):c}, ones);`}let u="";a%n>0&&(u=` + `}},V_="return a * b;";function U_(e){let{inputs:t,backend:n}=e,{a:r,b:a}=t,s=R.upcastType(r.dtype,a.dtype);if(r.dtype==="complex64"){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),u=new B_(W_.REAL,r.shape,a.shape),c=new B_(W_.IMAG,r.shape,a.shape),h=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:r.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:r.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:a.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:a.shape}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}if(n.shouldExecuteOnCPU([r,a])){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),[u,c]=SP(r.shape,a.shape,o.values,l.values,s),h=n.makeTensorInfo(c,s),d=n.texData.get(h.dataId);return d.values=u,h}let i;return J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new cc(V_,r.shape,a.shape):i=new Rl(V_,r.shape,a.shape),n.runWebGLProgram(i,[r,a],s)}var _L={kernelName:Ms,backendName:"webgl",kernelFunc:U_};function bL(e,t,n){let r=[yi(e.shape),...gi(e.shape)],a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[yi(t),...gi(t)],i=new I_(s,r),o=!0,l=n.runWebGLProgram(i,[a],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function Ae(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=n,o=v.sizeFromShape(a.shape),l=v.inferFromImplicitShape(s,o),u=v.sizeFromShape(l);v.assert(o===u,()=>`The new shape (${l}) has ${u} elements and the old shape (${a.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let c=i.texData.get(a.dataId);return c.isPacked&&!sc(a.shape,l)&&!(c.texture!==null&&sc(c.shape,l))?bL(a,l,i):(i.incRef(a.dataId),{dataId:a.dataId,shape:l,dtype:a.dtype})}var vL={kernelName:Do,backendName:"webgl",kernelFunc:Ae},H_=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let c=1/t;l=`sumValue += dot(values * ${v.isInt(c)?c.toPrecision(2):c}, ones);`}let u="";a%n>0&&(u=` if (inIdx < 0 || inIdx >= ${a}) { return 0.0; } @@ -1108,7 +1108,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, } setOutput(sumValue); } - `}},vL=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let u=Math.floor(n/4)*4,c=n%4,h=` + `}},kL=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let u=Math.floor(n/4)*4,c=n%4,h=` if (${t==="sum"}) { sumValue += dot(values, ones); } else if (${t==="prod"}) { @@ -1193,12 +1193,12 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, } setOutput(${l}); } - `}};function kL(e){let t=[];for(;t.length===0||t[t.length-1].outSize!==1;){let n=t.length?t[t.length-1].outSize:e[1],r=R.computeOptimalWindowSize(n);t.push({inSize:n,windowSize:r,outSize:Math.ceil(n/r)})}return t}function bi(e,t,n,r){let a=kL(e.shape),s=e;for(let i=0;i6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t);for(let a=0;a6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let r=ut(this.rank),a=k_("rc",this.rank),s=new Array(this.rank);for(let u=0;u6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t);for(let a=0;a6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let r=ut(this.rank),a=N_("rc",this.rank),s=new Array(this.rank);for(let u=0;u=2&&c>=2&&_,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${A}).`);let b=(y>g?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([p,f]);v.assert(h===d,()=>`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${r} must match.`);let w=n?[y,h,p]:[y,p,h],x=r?[g,f,d]:[g,d,f],I=Ae({inputs:{x:e},backend:a,attrs:{shape:w}}),S=Ae({inputs:{x:t},backend:a,attrs:{shape:x}}),T=[I,S],M=Math.max(y,g),D=n?I.shape[1]:I.shape[2],z=s!=null,W=i!=null,U=l==="leakyrelu",H=l!=null?dp(l,!0):null,X=z||W||U||H!=null,j;if((p===1||f===1)&&D>H_&&X===!1){let Y=I,ae=S;n&&(Y=In({inputs:{x:I},backend:a,attrs:{perm:[0,2,1]}}),T.push(Y)),r&&(ae=In({inputs:{x:S},backend:a,attrs:{perm:[0,2,1]}}),T.push(ae));let te=f!==1,ie=f===1,Q=Y;te&&(Q=Ae({inputs:{x:Y},backend:a,attrs:{shape:[M,D,1]}}),T.push(Q));let he=f===1?2:1,oe=ae;ie&&(oe=Ae({inputs:{x:ae},backend:a,attrs:{shape:[M,1,D]}}),T.push(oe));let fe=V_({inputs:{a:Q,b:oe},backend:a});j=eA({inputs:{x:fe},backend:a,attrs:{axis:he,keepDims:!0}}),T.push(fe)}else{let Y=nr(e.dtype,t.dtype),ae=new P_(w,x,[M,p,f],n,r,z,H,W,U),te=[I,S];if(s!=null&&te.push(s),W&&te.push(i),U){let ie=a.makeTensorInfo([],"float32",v.createScalarValue(o,"float32"));te.push(ie),T.push(ie)}j=a.runWebGLProgram(ae,te,Y)}let ee=Ae({inputs:{x:j},backend:a,attrs:{shape:b}});T.push(j);for(let Y of T)a.disposeIntermediateTensorInfo(Y);return ee}function RL(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r;return fp({a,b:s,transposeA:l,transposeB:u,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:h,activation:c})}var FL={kernelName:Qs,backendName:"webgl",kernelFunc:RL},j_="return abs(x);";function ML(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])&&r.dtype!=="complex64"){let s=n.texData.get(r.dataId),i=v_(s.values);return n.makeTensorInfo(r.shape,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,j_):a=new Ba(r.shape,j_),n.runWebGLProgram(a,[r],r.dtype)}var $L={kernelName:Zi,backendName:"webgl",kernelFunc:ML},DL=xr+` + `}};function pp(e,t,n){let r=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new TL(e.shape,t):new SL(e.shape,t);return n.runWebGLProgram(r,[e],e.dtype)}function CL(e,t,n,r){let a=t,s=e.shape.length,i=v.parseAxisParam(a,e.shape),o=i,l=R.getAxesPermutation(o,s),u=l!=null,c=e;u&&(c=pp(e,l,r),o=R.getInnerMostAxes(o.length,s)),R.assertAxesAreInnerMostDims("sum",o,s);let[h,d]=R.computeOutAndReduceShapes(c.shape,o),p=h;n&&(p=R.expandShapeToKeepDim(h,i));let f=v.sizeFromShape(d),m=v.sizeFromShape(e.shape)/f,A=Ae({inputs:{x:c},attrs:{shape:[m,f]},backend:r}),y=sd(e.dtype),g=bi(A,y,"sum",r),_=Ae({inputs:{x:g},attrs:{shape:p},backend:r});return r.disposeIntermediateTensorInfo(A),r.disposeIntermediateTensorInfo(g),u&&r.disposeIntermediateTensorInfo(c),_}function eA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;return CL(a,s,i,n)}var EL={kernelName:qs,backendName:"webgl",kernelFunc:eA};function In(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{perm:s}=r,i=n,o=a.shape.length,l=new Array(o);for(let c=0;c=2&&c>=2&&_,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${A}).`);let b=(y>g?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([p,f]);v.assert(h===d,()=>`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${r} must match.`);let w=n?[y,h,p]:[y,p,h],x=r?[g,f,d]:[g,d,f],I=Ae({inputs:{x:e},backend:a,attrs:{shape:w}}),S=Ae({inputs:{x:t},backend:a,attrs:{shape:x}}),T=[I,S],M=Math.max(y,g),D=n?I.shape[1]:I.shape[2],z=s!=null,W=i!=null,U=l==="leakyrelu",H=l!=null?dp(l,!0):null,X=z||W||U||H!=null,j;if((p===1||f===1)&&D>j_&&X===!1){let Y=I,ae=S;n&&(Y=In({inputs:{x:I},backend:a,attrs:{perm:[0,2,1]}}),T.push(Y)),r&&(ae=In({inputs:{x:S},backend:a,attrs:{perm:[0,2,1]}}),T.push(ae));let te=f!==1,ie=f===1,Q=Y;te&&(Q=Ae({inputs:{x:Y},backend:a,attrs:{shape:[M,D,1]}}),T.push(Q));let he=f===1?2:1,oe=ae;ie&&(oe=Ae({inputs:{x:ae},backend:a,attrs:{shape:[M,1,D]}}),T.push(oe));let fe=U_({inputs:{a:Q,b:oe},backend:a});j=eA({inputs:{x:fe},backend:a,attrs:{axis:he,keepDims:!0}}),T.push(fe)}else{let Y=nr(e.dtype,t.dtype),ae=new L_(w,x,[M,p,f],n,r,z,H,W,U),te=[I,S];if(s!=null&&te.push(s),W&&te.push(i),U){let ie=a.makeTensorInfo([],"float32",v.createScalarValue(o,"float32"));te.push(ie),T.push(ie)}j=a.runWebGLProgram(ae,te,Y)}let ee=Ae({inputs:{x:j},backend:a,attrs:{shape:b}});T.push(j);for(let Y of T)a.disposeIntermediateTensorInfo(Y);return ee}function FL(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r;return fp({a,b:s,transposeA:l,transposeB:u,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:h,activation:c})}var ML={kernelName:Qs,backendName:"webgl",kernelFunc:FL},G_="return abs(x);";function $L(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])&&r.dtype!=="complex64"){let s=n.texData.get(r.dataId),i=k_(s.values);return n.makeTensorInfo(r.shape,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,G_):a=new Ba(r.shape,G_),n.runWebGLProgram(a,[r],r.dtype)}var DL={kernelName:Zi,backendName:"webgl",kernelFunc:$L},OL=xr+` if (abs(x) > 1.) { return NAN; } return acos(x); -`,OL=Xe({opSnippet:DL}),zL={kernelName:Yi,backendName:"webgl",kernelFunc:OL},PL=xr+` +`,zL=Xe({opSnippet:OL}),PL={kernelName:Yi,backendName:"webgl",kernelFunc:zL},LL=xr+` if (x < 1.0) return NAN; -return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,backendName:"webgl",kernelFunc:LL},G_="return a + b;",BL=nn({opSnippet:G_,packedOpSnippet:G_,supportsComplex:!0,cpuKernelImpl:hP}),VL={kernelName:Na,backendName:"webgl",kernelFunc:BL},UL=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`float v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` +return log(x + sqrt(x * x - 1.0));`,WL=Xe({opSnippet:LL}),BL={kernelName:Ji,backendName:"webgl",kernelFunc:WL},q_="return a + b;",VL=nn({opSnippet:q_,packedOpSnippet:q_,supportsComplex:!0,cpuKernelImpl:dP}),UL={kernelName:Na,backendName:"webgl",kernelFunc:VL},HL=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`float v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` void main() { ${n.join(` `)} @@ -1230,7 +1230,7 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back float result = ${r}; setOutput(result); } - `}},HL=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`vec4 v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` + `}},jL=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`vec4 v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` void main() { ${n.join(` `)} @@ -1238,7 +1238,7 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back vec4 result = ${r}; setOutput(result); } - `}};function mp(e){let{inputs:t,backend:n}=e,r=t;if(r.length===1)return zn({inputs:{x:r[0]},backend:n});if(r.length>J().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(r.length/2),l=mp({inputs:r.slice(0,o),backend:n}),u=mp({inputs:r.slice(o),backend:n});return mp({inputs:[l,u],backend:n})}let a=r.map(o=>o.dtype).reduce((o,l)=>nr(o,l)),s=r.map(o=>o.shape),i=J().getBool("WEBGL_PACK")?new HL(r[0].shape,s):new UL(r[0].shape,s);return n.runWebGLProgram(i,r,a)}var jL={kernelName:os,backendName:"webgl",kernelFunc:mp};function GL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("all",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"all",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var qL={kernelName:vh,backendName:"webgl",kernelFunc:GL};function XL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("any",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"any",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var KL={kernelName:kh,backendName:"webgl",kernelFunc:XL},ZL=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:r,batchSize:a,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` + `}};function mp(e){let{inputs:t,backend:n}=e,r=t;if(r.length===1)return zn({inputs:{x:r[0]},backend:n});if(r.length>J().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(r.length/2),l=mp({inputs:r.slice(0,o),backend:n}),u=mp({inputs:r.slice(o),backend:n});return mp({inputs:[l,u],backend:n})}let a=r.map(o=>o.dtype).reduce((o,l)=>nr(o,l)),s=r.map(o=>o.shape),i=J().getBool("WEBGL_PACK")?new jL(r[0].shape,s):new HL(r[0].shape,s);return n.runWebGLProgram(i,r,a)}var GL={kernelName:os,backendName:"webgl",kernelFunc:mp};function qL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("all",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"all",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var XL={kernelName:vh,backendName:"webgl",kernelFunc:qL};function KL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("any",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"any",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var ZL={kernelName:kh,backendName:"webgl",kernelFunc:KL},YL=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:r,batchSize:a,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` void main() { ivec2 coords = getOutputCoords(); int batch = coords[0]; @@ -1258,7 +1258,7 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back } setOutput(float(bestIndex)); } - `}},YL=class{constructor(e,t,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,v.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let a=e[e.length-1],s=Math.ceil(a/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=ut(o),u=mn("coords",o),c,h;if(s===1){h=o+1;let I=ut(h);c=` + `}},JL=class{constructor(e,t,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,v.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let a=e[e.length-1],s=Math.ceil(a/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=ut(o),u=mn("coords",o),c,h;if(s===1){h=o+1;let I=ut(h);c=` ${I} sourceLocR = ${I}(${u.join()}, 0); ++${u[o-1]}; ${I} sourceLocG = ${I}(${u.join()}, 0); @@ -1320,23 +1320,23 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back } setOutput(bestIndex); } - `}};function q_(e,t,n,r=null){let a=t.shape[0],s=t.shape[1];r!=null&&(a=r.shape[0],s=r.shape[1]);let i=R.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:a,outSize:Math.ceil(s/i)},l=new ZL(o,n,r==null),u=[t];r!=null&&u.push(r);let c=e.runWebGLProgram(l,u,"int32");if(c.shape[1]===1)return c;let h=q_(e,t,n,c);return e.disposeIntermediateTensorInfo(c),h}function X_(e,t,n,r=null){let a=r!=null?r.shape:t.shape,s=a[a.length-1],i=R.computeOptimalWindowSize(s),o=new YL(a,i,n,r==null),l=r==null?[t]:[t,r],u=e.runWebGLProgram(o,l,"int32");if(u.shape.length===t.shape.length){let c=X_(e,t,n,u);return e.disposeIntermediateTensorInfo(u),c}return u}function K_(e,t,n,r){let a=[n];if(R.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),a,t.shape.length),!J().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=R.computeOutAndReduceShapes(t.shape,a),l=v.sizeFromShape(o),u=Ae({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(u);let c=q_(e,u,r);s.push(c);let h=Ae({inputs:{x:c},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),h}return X_(e,t,r)}function JL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let c=K_(n,l,i[0],"max");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var QL={kernelName:ls,backendName:"webgl",kernelFunc:JL};function eW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let c=K_(n,l,i[0],"min");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var tW={kernelName:lu,backendName:"webgl",kernelFunc:eW},nW=xr+` + `}};function X_(e,t,n,r=null){let a=t.shape[0],s=t.shape[1];r!=null&&(a=r.shape[0],s=r.shape[1]);let i=R.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:a,outSize:Math.ceil(s/i)},l=new YL(o,n,r==null),u=[t];r!=null&&u.push(r);let c=e.runWebGLProgram(l,u,"int32");if(c.shape[1]===1)return c;let h=X_(e,t,n,c);return e.disposeIntermediateTensorInfo(c),h}function K_(e,t,n,r=null){let a=r!=null?r.shape:t.shape,s=a[a.length-1],i=R.computeOptimalWindowSize(s),o=new JL(a,i,n,r==null),l=r==null?[t]:[t,r],u=e.runWebGLProgram(o,l,"int32");if(u.shape.length===t.shape.length){let c=K_(e,t,n,u);return e.disposeIntermediateTensorInfo(u),c}return u}function Z_(e,t,n,r){let a=[n];if(R.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),a,t.shape.length),!J().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=R.computeOutAndReduceShapes(t.shape,a),l=v.sizeFromShape(o),u=Ae({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(u);let c=X_(e,u,r);s.push(c);let h=Ae({inputs:{x:c},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),h}return K_(e,t,r)}function QL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let c=Z_(n,l,i[0],"max");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var eW={kernelName:ls,backendName:"webgl",kernelFunc:QL};function tW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let c=Z_(n,l,i[0],"min");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var nW={kernelName:lu,backendName:"webgl",kernelFunc:tW},rW=xr+` if (abs(x) > 1.) { return NAN; } return asin(x); -`,rW=Xe({opSnippet:nW}),aW={kernelName:Qi,backendName:"webgl",kernelFunc:rW},sW=xr+"return log(x + sqrt(x * x + 1.0));",iW=Xe({opSnippet:sW}),oW={kernelName:eo,backendName:"webgl",kernelFunc:iW},lW=xr+` +`,aW=Xe({opSnippet:rW}),sW={kernelName:Qi,backendName:"webgl",kernelFunc:aW},iW=xr+"return log(x + sqrt(x * x + 1.0));",oW=Xe({opSnippet:iW}),lW={kernelName:eo,backendName:"webgl",kernelFunc:oW},uW=xr+` return atan(x); -`,uW=Xe({opSnippet:lW}),cW={kernelName:to,backendName:"webgl",kernelFunc:uW},hW=gL+` +`,cW=Xe({opSnippet:uW}),hW={kernelName:to,backendName:"webgl",kernelFunc:cW},dW=xL+` return atan(a, b); -`,dW=` +`,pW=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+xL+` + `+wL+` return result; -`,pW=nn({opSnippet:hW,packedOpSnippet:dW}),fW={kernelName:ro,backendName:"webgl",kernelFunc:pW},mW=xr+` +`,fW=nn({opSnippet:dW,packedOpSnippet:pW}),mW={kernelName:ro,backendName:"webgl",kernelFunc:fW},AW=xr+` if ((x < -1.0) || (x > 1.0)) return NAN; -return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelName:no,backendName:"webgl",kernelFunc:AW},hc=class{constructor(e,t,n,r=!1,a=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=e.padInfo.top,p=e.padInfo.left;this.outputShape=e.outShape;let f=t==="avg",m=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,A=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(f||(y="-1.0 / 1e-20"),n){let I=">=";this.userCode=` +return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,yW=Xe({opSnippet:AW}),gW={kernelName:no,backendName:"webgl",kernelFunc:yW},hc=class{constructor(e,t,n,r=!1,a=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=e.padInfo.top,p=e.padInfo.left;this.outputShape=e.outShape;let f=t==="avg",m=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,A=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(f||(y="-1.0 / 1e-20"),n){let I=">=";this.userCode=` const ivec2 strides = ivec2(${i}, ${o}); const ivec2 pads = ivec2(${d}, ${p}); @@ -1640,7 +1640,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(${w}); } } - `}};function gW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"avg",!1);return n.runWebGLProgram(h,[a],"float32")}var xW={kernelName:us,backendName:"webgl",kernelFunc:gW};function wW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,l,u),d=new tA(h,"avg",!1);return n.runWebGLProgram(d,[a],"float32")}var _W={kernelName:uu,backendName:"webgl",kernelFunc:wW},bW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,u=o-1-e.padInfo.top,c=l-1-e.padInfo.left,h=1/(t*n);this.userCode=` + `}};function xW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"avg",!1);return n.runWebGLProgram(h,[a],"float32")}var wW={kernelName:us,backendName:"webgl",kernelFunc:xW};function _W(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,l,u),d=new tA(h,"avg",!1);return n.runWebGLProgram(d,[a],"float32")}var bW={kernelName:uu,backendName:"webgl",kernelFunc:_W},vW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,u=o-1-e.padInfo.top,c=l-1-e.padInfo.left,h=1/(t*n);this.userCode=` const ivec2 pads = ivec2(${u}, ${c}); const float avgMultiplier = float(${h}); @@ -1682,7 +1682,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},vW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,h=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=c-1-e.padInfo.front,f=h-1-e.padInfo.top,m=d-1-e.padInfo.left,A=1/(t*n*r);this.userCode=` + `}},kW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,h=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=c-1-e.padInfo.front,f=h-1-e.padInfo.top,m=d-1-e.padInfo.left,A=1/(t*n*r);this.userCode=` const ivec3 pads = ivec3(${p}, ${f}, ${m}); const float avgMultiplier = float(${A}); @@ -1738,7 +1738,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function kW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new vW(d);return n.runWebGLProgram(p,[a],i.dtype)}var NW={kernelName:Ih,backendName:"webgl",kernelFunc:kW};function IW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;vl([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=new bW(c);return n.runWebGLProgram(h,[a],i.dtype)}var SW={kernelName:Nh,backendName:"webgl",kernelFunc:IW};function TW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;return fp({a,b:s,transposeA:i,transposeB:o,backend:n})}var CW={kernelName:cs,backendName:"webgl",kernelFunc:TW},EW=class{constructor(e,t,n,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="0.0";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` + `}};function NW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new kW(d);return n.runWebGLProgram(p,[a],i.dtype)}var IW={kernelName:Ih,backendName:"webgl",kernelFunc:NW};function SW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;vl([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=new vW(c);return n.runWebGLProgram(h,[a],i.dtype)}var TW={kernelName:Nh,backendName:"webgl",kernelFunc:SW};function CW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;return fp({a,b:s,transposeA:i,transposeB:o,backend:n})}var EW={kernelName:cs,backendName:"webgl",kernelFunc:CW},RW=class{constructor(e,t,n,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="0.0";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -1748,7 +1748,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float inv = scale * inversesqrt(variance + float(${s})); setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); } - `}},RW=class{constructor(e,t,n,r,a,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` + `}},FW=class{constructor(e,t,n,r,a,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { vec4 offset = ${i}; vec4 scale = ${o}; @@ -1761,7 +1761,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput((x - mean) * inv + offset); } - `}},FW=({inputs:e,backend:t,attrs:n})=>{let{x:r,mean:a,variance:s,offset:i,scale:o}=e;v.assert(a.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||a.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(o==null||a.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let u=[r,a,s],c=null;i!=null&&(c=i.shape,u.push(i));let h=null;o!=null&&(h=o.shape,u.push(o));let d=J().getBool("WEBGL_PACK_NORMALIZATION")?new RW(r.shape,a.shape,s.shape,c,h,l):new EW(r.shape,a.shape,s.shape,c,h,l);return t.runWebGLProgram(d,u,u[0].dtype)},MW={kernelName:bs,backendName:"webgl",kernelFunc:FW},DW=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=`uniform int start[${this.rank}];`,r=$W(this.rank),a,s=e.map((i,o)=>`sourceLoc.${nA[o]} = start[${o}] + coords.${nA[o]};`);a=` + `}},MW=({inputs:e,backend:t,attrs:n})=>{let{x:r,mean:a,variance:s,offset:i,scale:o}=e;v.assert(a.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||a.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(o==null||a.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let u=[r,a,s],c=null;i!=null&&(c=i.shape,u.push(i));let h=null;o!=null&&(h=o.shape,u.push(o));let d=J().getBool("WEBGL_PACK_NORMALIZATION")?new FW(r.shape,a.shape,s.shape,c,h,l):new RW(r.shape,a.shape,s.shape,c,h,l);return t.runWebGLProgram(d,u,u[0].dtype)},$W={kernelName:bs,backendName:"webgl",kernelFunc:MW},OW=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=`uniform int start[${this.rank}];`,r=DW(this.rank),a,s=e.map((i,o)=>`sourceLoc.${nA[o]} = start[${o}] + coords.${nA[o]};`);a=` ${t} sourceLoc; ${t} coords = getOutputCoords(); ${s.join(` @@ -1772,7 +1772,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${a} setOutput(getSource(${r})); } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},nA=["x","y","z","w","u","v"];function $W(e){if(e===1)return"sourceLoc";if(e<=6)return nA.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var OW=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=mn("coords",this.rank),r=mn("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":`vec2(${r.slice(-2).join()})`,s=`getChannel(getSource(${r.join()}), ${a})`,i=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},nA=["x","y","z","w","u","v"];function DW(e){if(e===1)return"sourceLoc";if(e<=6)return nA.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var zW=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=mn("coords",this.rank),r=mn("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":`vec2(${r.slice(-2).join()})`,s=`getChannel(getSource(${r.join()}), ${a})`,i=` result.x = ${s}; if (++${n[this.rank-1]} < ${e[this.rank-1]}) { ++${r[this.rank-1]}; @@ -1802,7 +1802,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${o} setOutput(result); } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function zW(e,t,n,r){let a=r.texData.get(e.dataId),s=r.makeTensorInfo(n,e.dtype),i=r.texData.get(s.dataId);Object.assign(i,a),i.refCount=1,i.shape=n,i.dtype=e.dtype;let o=cn.computeFlatOffset(t,v.computeStrides(e.shape));a.slice&&(o+=a.slice.flatOffset),i.slice={flatOffset:o,origDataId:a.slice&&a.slice.origDataId||e.dataId};let l=r.dataRefCount.get(i.slice.origDataId)||1;return r.dataRefCount.set(i.slice.origDataId,l+1),s}function dc(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r,[o,l]=cn.parseSliceParams(a,s,i);if(cn.assertParamsValid(a,o,l),v.sizeFromShape(l)===0)return n.makeTensorInfo(l,a.dtype,[]);if(n.shouldExecuteOnCPU([a])||a.dtype==="string"){let h=n.texData.get(a.dataId),d=RP(h.values,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,d)}let{isPacked:u}=n.texData.get(a.dataId),c=cn.isSliceContinous(a.shape,o,l);if(u||!c){let h=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new OW(l):new DW(l),d=h.getCustomSetupFunc(o);return n.runWebGLProgram(h,[a],a.dtype,d)}return n.uploadToGPU(a.dataId),zW(a,o,l,n)}var PW={kernelName:Lo,backendName:"webgl",kernelFunc:dc},LW=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;v.assert(a.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((g,_)=>g*_),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=[],f=Ae({inputs:{x:a},backend:n,attrs:{shape:l}}),m=In({inputs:{x:f},backend:n,attrs:{perm:u}}),A=Ae({inputs:{x:m},backend:n,attrs:{shape:c}}),y=dc({inputs:{x:A},backend:n,attrs:{begin:h,size:d}});return p.push(f),p.push(m),p.push(A),p.forEach(g=>n.disposeIntermediateTensorInfo(g)),y},WW={kernelName:cu,backendName:"webgl",kernelFunc:LW};function BW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.readSync(a.dataId),l=n.readSync(s.dataId),u=b_(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var VW={kernelName:Sh,backendName:"webgl",kernelFunc:BW},UW="return float(a != b);",Z_=nn({opSnippet:UW,dtype:"bool"}),HW={kernelName:So,backendName:"webgl",kernelFunc:Z_};function pc(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.real},backend:n})}var jW={kernelName:Xh,backendName:"webgl",kernelFunc:pc},GW="return float(int(x));";function qW(e,t){let n=new Ba(e.shape,GW),r=t.runWebGLProgram(n,[e],"int32");return{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}function rA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return zn({inputs:{x:a},backend:n});let i=Et(a.shape),o=rA({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Va({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=pc({inputs:{input:a},backend:n}),o=rA({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=zn({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return qW(a,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",v.getTypedArrayFromDType("bool",1)),o=Z_({inputs:{a,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var XW={kernelName:hs,backendName:"webgl",kernelFunc:rA},Y_="return ceil(x);",KW=Xe({opSnippet:Y_,packedOpSnippet:Y_,cpuKernelImpl:pP}),ZW={kernelName:ds,backendName:"webgl",kernelFunc:KW},YW=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function PW(e,t,n,r){let a=r.texData.get(e.dataId),s=r.makeTensorInfo(n,e.dtype),i=r.texData.get(s.dataId);Object.assign(i,a),i.refCount=1,i.shape=n,i.dtype=e.dtype;let o=cn.computeFlatOffset(t,v.computeStrides(e.shape));a.slice&&(o+=a.slice.flatOffset),i.slice={flatOffset:o,origDataId:a.slice&&a.slice.origDataId||e.dataId};let l=r.dataRefCount.get(i.slice.origDataId)||1;return r.dataRefCount.set(i.slice.origDataId,l+1),s}function dc(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r,[o,l]=cn.parseSliceParams(a,s,i);if(cn.assertParamsValid(a,o,l),v.sizeFromShape(l)===0)return n.makeTensorInfo(l,a.dtype,[]);if(n.shouldExecuteOnCPU([a])||a.dtype==="string"){let h=n.texData.get(a.dataId),d=FP(h.values,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,d)}let{isPacked:u}=n.texData.get(a.dataId),c=cn.isSliceContinous(a.shape,o,l);if(u||!c){let h=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new zW(l):new OW(l),d=h.getCustomSetupFunc(o);return n.runWebGLProgram(h,[a],a.dtype,d)}return n.uploadToGPU(a.dataId),PW(a,o,l,n)}var LW={kernelName:Lo,backendName:"webgl",kernelFunc:dc},WW=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;v.assert(a.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((g,_)=>g*_),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=[],f=Ae({inputs:{x:a},backend:n,attrs:{shape:l}}),m=In({inputs:{x:f},backend:n,attrs:{perm:u}}),A=Ae({inputs:{x:m},backend:n,attrs:{shape:c}}),y=dc({inputs:{x:A},backend:n,attrs:{begin:h,size:d}});return p.push(f),p.push(m),p.push(A),p.forEach(g=>n.disposeIntermediateTensorInfo(g)),y},BW={kernelName:cu,backendName:"webgl",kernelFunc:WW};function VW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.readSync(a.dataId),l=n.readSync(s.dataId),u=v_(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var UW={kernelName:Sh,backendName:"webgl",kernelFunc:VW},HW="return float(a != b);",Y_=nn({opSnippet:HW,dtype:"bool"}),jW={kernelName:So,backendName:"webgl",kernelFunc:Y_};function pc(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.real},backend:n})}var GW={kernelName:Xh,backendName:"webgl",kernelFunc:pc},qW="return float(int(x));";function XW(e,t){let n=new Ba(e.shape,qW),r=t.runWebGLProgram(n,[e],"int32");return{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}function rA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return zn({inputs:{x:a},backend:n});let i=Et(a.shape),o=rA({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Va({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=pc({inputs:{input:a},backend:n}),o=rA({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=zn({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return XW(a,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",v.getTypedArrayFromDType("bool",1)),o=Y_({inputs:{a,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var KW={kernelName:hs,backendName:"webgl",kernelFunc:rA},J_="return ceil(x);",ZW=Xe({opSnippet:J_,packedOpSnippet:J_,cpuKernelImpl:fP}),YW={kernelName:ds,backendName:"webgl",kernelFunc:ZW},JW=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1815,7 +1815,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},JW=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},QW=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1829,7 +1829,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function QW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o;J().getBool("WEBGL_PACK_CLIP")?o=new JW(a.shape):o=new YW(a.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[a],a.dtype,l)}var eB={kernelName:Ia,backendName:"webgl",kernelFunc:QW},tB=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function eB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o;J().getBool("WEBGL_PACK_CLIP")?o=new QW(a.shape):o=new JW(a.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[a],a.dtype,l)}var tB={kernelName:Ia,backendName:"webgl",kernelFunc:eB},nB=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1842,7 +1842,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) ); } - `}};function J_(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}}function nB(e){let{inputs:t,backend:n}=e,{x:r}=t,a=n.texData.get(r.dataId),s=new tB(r.shape),i=[J_(r,a.complexTensorInfos.real),J_(r,a.complexTensorInfos.imag)];return n.runWebGLProgram(s,i,i[0].dtype)}var rB={kernelName:hu,backendName:"webgl",kernelFunc:nB},aB=class{constructor(e){this.outputShape=[],this.outputShape=R.computeOutShape(e,1),this.variableNames=e.map((s,i)=>`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${m}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let f=1;f`T${m}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let f=1;fs===r?`${a} - ${n}`:a).join()}function yp(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.imag},backend:n})}var iB={kernelName:Bh,backendName:"webgl",kernelFunc:yp};function Fl(e,t,n){let r=e[0].dtype;if(r==="complex64"){let u=e.map(f=>pc({inputs:{input:f},backend:n})),c=e.map(f=>yp({inputs:{input:f},backend:n})),h=Fl(u,t,n),d=Fl(c,t,n),p=Va({inputs:{real:h,imag:d},backend:n});return u.forEach(f=>n.disposeIntermediateTensorInfo(f)),c.forEach(f=>n.disposeIntermediateTensorInfo(f)),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),p}if(r==="string"){let{tensors2D:u,outShape:c}=Q_(e,t,n),h=u.map(A=>({vals:n.readSync(A.dataId),shape:A.shape})),d=u[0].shape[0]===1,p=fP(h,c,r,d),f=R.computeOutShape(e.map(A=>A.shape),t),m=n.makeTensorInfo(f,r,p);return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),m}if(e.length>J().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let u=Math.floor(e.length/2),c=Fl(e.slice(0,u),t,n),h=Fl(e.slice(u),t,n),d=Fl([c,h],t,n);return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),d}if(J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let u=new sB(e.map(c=>c.shape),t);return n.runWebGLProgram(u,e,r)}let{tensors2D:a,outShape:s}=Q_(e,t,n),i=new aB(a.map(u=>u.shape)),o=n.runWebGLProgram(i,a,r);a.forEach(u=>n.disposeIntermediateTensorInfo(u));let l=Ae({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function Q_(e,t,n){let r=R.computeOutShape(e.map(a=>a.shape),t);return{tensors2D:e.map(a=>Ae({inputs:{x:a},attrs:{shape:[-1,v.sizeFromShape(a.shape.slice(t))]},backend:n})),outShape:r}}function eb(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,s=v.parseAxisParam(a,t[0].shape)[0],i=R.computeOutShape(t.map(u=>u.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(u=>v.sizeFromShape(u.shape)>0);if(o.length===1)return zn({inputs:{x:o[0]},backend:n});let l=o.map(u=>u.shape);return R.assertParamsConsistent(l,s),Fl(o,s,n)}var oB={kernelName:ao,backendName:"webgl",kernelFunc:eb},tb=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,c=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4,m=e.dataFormat==="channelsLast",A=m?1:2,y=m?2:3,g=m?3:1,_="",b="";n&&(r?_=`float activation(float a) { + `}};function Ap(e,t,n){let r=e.indexOf(t);return e.map((a,s)=>s===r?`${a} - ${n}`:a).join()}function yp(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.imag},backend:n})}var oB={kernelName:Bh,backendName:"webgl",kernelFunc:yp};function Fl(e,t,n){let r=e[0].dtype;if(r==="complex64"){let u=e.map(f=>pc({inputs:{input:f},backend:n})),c=e.map(f=>yp({inputs:{input:f},backend:n})),h=Fl(u,t,n),d=Fl(c,t,n),p=Va({inputs:{real:h,imag:d},backend:n});return u.forEach(f=>n.disposeIntermediateTensorInfo(f)),c.forEach(f=>n.disposeIntermediateTensorInfo(f)),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),p}if(r==="string"){let{tensors2D:u,outShape:c}=eb(e,t,n),h=u.map(A=>({vals:n.readSync(A.dataId),shape:A.shape})),d=u[0].shape[0]===1,p=mP(h,c,r,d),f=R.computeOutShape(e.map(A=>A.shape),t),m=n.makeTensorInfo(f,r,p);return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),m}if(e.length>J().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let u=Math.floor(e.length/2),c=Fl(e.slice(0,u),t,n),h=Fl(e.slice(u),t,n),d=Fl([c,h],t,n);return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),d}if(J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let u=new iB(e.map(c=>c.shape),t);return n.runWebGLProgram(u,e,r)}let{tensors2D:a,outShape:s}=eb(e,t,n),i=new sB(a.map(u=>u.shape)),o=n.runWebGLProgram(i,a,r);a.forEach(u=>n.disposeIntermediateTensorInfo(u));let l=Ae({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function eb(e,t,n){let r=R.computeOutShape(e.map(a=>a.shape),t);return{tensors2D:e.map(a=>Ae({inputs:{x:a},attrs:{shape:[-1,v.sizeFromShape(a.shape.slice(t))]},backend:n})),outShape:r}}function tb(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,s=v.parseAxisParam(a,t[0].shape)[0],i=R.computeOutShape(t.map(u=>u.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(u=>v.sizeFromShape(u.shape)>0);if(o.length===1)return zn({inputs:{x:o[0]},backend:n});let l=o.map(u=>u.shape);return R.assertParamsConsistent(l,s),Fl(o,s,n)}var lB={kernelName:ao,backendName:"webgl",kernelFunc:tb},nb=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,c=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4,m=e.dataFormat==="channelsLast",A=m?1:2,y=m?2:3,g=m?3:1,_="",b="";n&&(r?_=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); ${n} }`:a?_=`float activation(float a) { @@ -2022,7 +2022,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${b} setOutput(result); } - `}},lB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,r=e.padInfo.left,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.filterDepth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4;this.userCode=` + `}},uB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,r=e.padInfo.left,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.filterDepth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4;this.userCode=` const ivec3 strides = ivec3(${a}, ${s}, ${i}); const ivec3 pads = ivec3(${t}, ${n}, ${r}); @@ -2110,7 +2110,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},uB=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:r,inChannels:a,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:u,dilationHeight:c,dataFormat:h}=n,{left:d,top:p}=o,f=a*r,m=fn(),A=h==="channelsLast",y=A?0:1,g=A?1:2,_="";for(let b=0;b<=1;b++)for(let w=0;w<=1;w++)_+=` + `}},cB=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:r,inChannels:a,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:u,dilationHeight:c,dataFormat:h}=n,{left:d,top:p}=o,f=a*r,m=fn(),A=h==="channelsLast",y=A?0:1,g=A?1:2,_="";for(let b=0;b<=1;b++)for(let w=0;w<=1;w++)_+=` blockIndex = rc.y + ${w}; pos = rc.x + ${b}; @@ -2154,7 +2154,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${m.output} = result; } - `}};function nb({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,u=r.texData.get(e.dataId),c=n.inChannels,h=l[0]*l[1]*l[2],d=n.outChannels,p=n.dataFormat==="channelsLast",f=!1,m=!1,A,y=[],g=(h===1||d===1)&&c>H_,_=l[2]%2!=0&&!!u.isPacked;if(g||!J().getBool("WEBGL_LAZILY_UNPACK")||!J().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!_){let b=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=Ae({inputs:{x:e},backend:r,attrs:{shape:[1,b,n.inChannels]}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}}),I=fp({a:w,b:x,transposeA:f,transposeB:m,backend:r,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i});A=Ae({inputs:{x:I},backend:r,attrs:{shape:n.outShape}}),y.push(w),y.push(x),y.push(I)}else{let b=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),w={dataId:e.dataId,shape:[1,b,n.inChannels],dtype:e.dtype},x=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,v.assert(sc(u.shape,w.shape),()=>`packed reshape ${u.shape} to ${w.shape} isn't free`);let I=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(I);let S=fp({a:w,b:I,backend:r,transposeA:f,transposeB:m,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),T=r.texData.get(S.dataId);v.assert(T.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=x,T.shape=n.outShape,A=zn({inputs:{x:S},backend:r}),A.shape=n.outShape,y.push(S)}for(let b of y)r.disposeIntermediateTensorInfo(b);return A}function rb({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:u,inChannels:c,outWidth:h,outHeight:d,dataFormat:p}=n,f=p==="channelsLast",m=l*u*c,A=d*h,y=[m,A],g=!0,_=!1,b=[],w=Ae({inputs:{x:e},backend:r,attrs:{shape:e.shape.slice(1)}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,m,v.sizeFromShape(t.shape)/m]}});b.push(w),b.push(x);let I=new uB(y,w.shape,n),S=r.runWebGLProgram(I,[w],"float32"),T=Ae({inputs:{x:S},backend:r,attrs:{shape:[1,y[0],y[1]]}});b.push(S),b.push(T);let M=a!=null,D=s!=null,z=o==="leakyrelu",W=o?dp(o,!0):null,U=new P_(T.shape,x.shape,[1,A,n.outChannels],g,_,M,W,D,z),H=[T,x];if(a&&H.push(a),D&&H.push(s),z){let Y=r.makeTensorInfo([],"float32",v.createScalarValue(i,"float32"));H.push(Y),b.push(Y)}let X=r.runWebGLProgram(U,H,"float32"),j=f?[1,d,h,n.outChannels]:[1,n.outChannels,d,h],ee=Ae({inputs:{x:X},backend:r,attrs:{shape:j}});b.push(X);for(let Y of b)r.disposeIntermediateTensorInfo(Y);return ee}function cB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))p=nb({x:a,filter:s,convInfo:d,backend:n});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)p=rb({x:a,filter:s,convInfo:d,backend:n});else{let m=new tb(d);p=n.runWebGLProgram(m,[a,s],"float32")}let f=Ae({inputs:{x:p},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(p),f}var hB={kernelName:ps,backendName:"webgl",kernelFunc:cB},dB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` + `}};function rb({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,u=r.texData.get(e.dataId),c=n.inChannels,h=l[0]*l[1]*l[2],d=n.outChannels,p=n.dataFormat==="channelsLast",f=!1,m=!1,A,y=[],g=(h===1||d===1)&&c>j_,_=l[2]%2!=0&&!!u.isPacked;if(g||!J().getBool("WEBGL_LAZILY_UNPACK")||!J().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!_){let b=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=Ae({inputs:{x:e},backend:r,attrs:{shape:[1,b,n.inChannels]}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}}),I=fp({a:w,b:x,transposeA:f,transposeB:m,backend:r,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i});A=Ae({inputs:{x:I},backend:r,attrs:{shape:n.outShape}}),y.push(w),y.push(x),y.push(I)}else{let b=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),w={dataId:e.dataId,shape:[1,b,n.inChannels],dtype:e.dtype},x=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,v.assert(sc(u.shape,w.shape),()=>`packed reshape ${u.shape} to ${w.shape} isn't free`);let I=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(I);let S=fp({a:w,b:I,backend:r,transposeA:f,transposeB:m,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),T=r.texData.get(S.dataId);v.assert(T.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=x,T.shape=n.outShape,A=zn({inputs:{x:S},backend:r}),A.shape=n.outShape,y.push(S)}for(let b of y)r.disposeIntermediateTensorInfo(b);return A}function ab({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:u,inChannels:c,outWidth:h,outHeight:d,dataFormat:p}=n,f=p==="channelsLast",m=l*u*c,A=d*h,y=[m,A],g=!0,_=!1,b=[],w=Ae({inputs:{x:e},backend:r,attrs:{shape:e.shape.slice(1)}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,m,v.sizeFromShape(t.shape)/m]}});b.push(w),b.push(x);let I=new cB(y,w.shape,n),S=r.runWebGLProgram(I,[w],"float32"),T=Ae({inputs:{x:S},backend:r,attrs:{shape:[1,y[0],y[1]]}});b.push(S),b.push(T);let M=a!=null,D=s!=null,z=o==="leakyrelu",W=o?dp(o,!0):null,U=new L_(T.shape,x.shape,[1,A,n.outChannels],g,_,M,W,D,z),H=[T,x];if(a&&H.push(a),D&&H.push(s),z){let Y=r.makeTensorInfo([],"float32",v.createScalarValue(i,"float32"));H.push(Y),b.push(Y)}let X=r.runWebGLProgram(U,H,"float32"),j=f?[1,d,h,n.outChannels]:[1,n.outChannels,d,h],ee=Ae({inputs:{x:X},backend:r,attrs:{shape:j}});b.push(X);for(let Y of b)r.disposeIntermediateTensorInfo(Y);return ee}function hB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))p=rb({x:a,filter:s,convInfo:d,backend:n});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)p=ab({x:a,filter:s,convInfo:d,backend:n});else{let m=new nb(d);p=n.runWebGLProgram(m,[a,s],"float32")}let f=Ae({inputs:{x:p},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(p),f}var dB={kernelName:ps,backendName:"webgl",kernelFunc:hB},pB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2196,7 +2196,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},pB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,u=s?2:3,c=s?3:1;this.userCode=` + `}},fB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,u=s?2:3,c=s?3:1;this.userCode=` const ivec2 pads = ivec2(${i}, ${o}); void main() { @@ -2249,7 +2249,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},fB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` + `}},mB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` void main() { ivec5 coords = getOutputCoords(); int wF = coords.x; @@ -2291,7 +2291,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},mB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,u=r-1-e.padInfo.left;this.userCode=` + `}},AB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,u=r-1-e.padInfo.left;this.userCode=` const ivec3 pads = ivec3(${o}, ${l}, ${u}); void main() { @@ -2348,12 +2348,12 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function AB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:u,filterShape:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,c,i,1,o,u,!1,h),p=new dB(d);return n.runWebGLProgram(p,[a,s],"float32")}var yB={kernelName:Ch,backendName:"webgl",kernelFunc:AB};function gB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(u),d=R.computeConv2DInfo(i,s.shape,o,1,l,c,!1,h),p=new pB(d);return n.runWebGLProgram(p,[a,s],"float32")}var xB={kernelName:fs,backendName:"webgl",kernelFunc:gB};function wB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeConv3DInfo(a.shape,s.shape,i,l,o),c=new lB(u);return n.runWebGLProgram(c,[a,s],"float32")}var _B={kernelName:du,backendName:"webgl",kernelFunc:wB};function bB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,filterShape:l}=r,u=R.computeConv3DInfo(a.shape,l,i,1,o),c=new fB(u);return n.runWebGLProgram(c,[a,s],"float32")}var vB={kernelName:Eh,backendName:"webgl",kernelFunc:bB};function kB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{pad:i,strides:o,inputShape:l}=r,u=R.computeConv3DInfo(l,s.shape,o,1,i),c=new mB(u);return n.runWebGLProgram(c,[a,s],"float32")}var NB={kernelName:Rh,backendName:"webgl",kernelFunc:kB},IB=z_+` + `}};function yB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:u,filterShape:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,c,i,1,o,u,!1,h),p=new pB(d);return n.runWebGLProgram(p,[a,s],"float32")}var gB={kernelName:Ch,backendName:"webgl",kernelFunc:yB};function xB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(u),d=R.computeConv2DInfo(i,s.shape,o,1,l,c,!1,h),p=new fB(d);return n.runWebGLProgram(p,[a,s],"float32")}var wB={kernelName:fs,backendName:"webgl",kernelFunc:xB};function _B(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeConv3DInfo(a.shape,s.shape,i,l,o),c=new uB(u);return n.runWebGLProgram(c,[a,s],"float32")}var bB={kernelName:du,backendName:"webgl",kernelFunc:_B};function vB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,filterShape:l}=r,u=R.computeConv3DInfo(a.shape,l,i,1,o),c=new mB(u);return n.runWebGLProgram(c,[a,s],"float32")}var kB={kernelName:Eh,backendName:"webgl",kernelFunc:vB};function NB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{pad:i,strides:o,inputShape:l}=r,u=R.computeConv3DInfo(l,s.shape,o,1,i),c=new AB(u);return n.runWebGLProgram(c,[a,s],"float32")}var IB={kernelName:Rh,backendName:"webgl",kernelFunc:NB},SB=P_+` return cos(x); -`,SB=Xe({opSnippet:IB}),TB={kernelName:ms,backendName:"webgl",kernelFunc:SB},CB=` +`,TB=Xe({opSnippet:SB}),CB={kernelName:ms,backendName:"webgl",kernelFunc:TB},EB=` float e2x = exp(-x); return (e2x + 1.0 / e2x) / 2.0; -`,EB=Xe({opSnippet:CB}),RB={kernelName:so,backendName:"webgl",kernelFunc:EB},FB=class{constructor(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[u]=t,[c,h]=n;this.outputShape=[u,c,h,l];let d=r==="bilinear"?1:0,[p,f]=[`${i-1}.0`,`${o-1}.0`],[m,A,y]=c>1?[`${(i-1)/(c-1)}`,"(y2-y1) * height_ratio",`y1*${p} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${p}`],[g,_,b]=h>1?[`${(o-1)/(h-1)}`,"(x2-x1) * width_ratio",`x1*${f} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${f}`];this.userCode=` +`,RB=Xe({opSnippet:EB}),FB={kernelName:so,backendName:"webgl",kernelFunc:RB},MB=class{constructor(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[u]=t,[c,h]=n;this.outputShape=[u,c,h,l];let d=r==="bilinear"?1:0,[p,f]=[`${i-1}.0`,`${o-1}.0`],[m,A,y]=c>1?[`${(i-1)/(c-1)}`,"(y2-y1) * height_ratio",`y1*${p} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${p}`],[g,_,b]=h>1?[`${(o-1)/(h-1)}`,"(x2-x1) * width_ratio",`x1*${f} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${f}`];this.userCode=` const float height_ratio = float(${m}); const float width_ratio = float(${g}); void main() { @@ -2414,21 +2414,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(newValue); } } - `}},MB=e=>{let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,c=new FB(a.shape,s.shape,o,l,u);return n.runWebGLProgram(c,[a,s,i],"float32")},$B={kernelName:io,backendName:"webgl",kernelFunc:MB},ib=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let r=e.length,a=t?"0.0":`getX(${ab(r,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` + `}},$B=e=>{let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,c=new MB(a.shape,s.shape,o,l,u);return n.runWebGLProgram(c,[a,s,i],"float32")},DB={kernelName:io,backendName:"webgl",kernelFunc:$B},ob=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let r=e.length,a=t?"0.0":`getX(${sb(r,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { ${ut(r)} coords = getOutputCoords(); - int end = ${sb(r,"coords")}; + int end = ${ib(r,"coords")}; float val = ${a}; int pow2 = int(pow(2.0, index)); if (${i}) { int idx = ${o}; - ${sb(r,"coords")} = idx; - val += getX(${ab(r,"coords")}); + ${ib(r,"coords")} = idx; + val += getX(${sb(r,"coords")}); } setOutput(val); } - `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function ab(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function sb(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function DB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,exclusive:i,reverse:o}=r,l=a.shape.length,u=R.getAxesPermutation([s],l),c=a;u!=null&&(c=In({inputs:{x:a},backend:n,attrs:{perm:u}}));let h=R.getInnerMostAxes(1,l)[0];if(h!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${a.shape.length-1} but got axis=${s}`);let d=c.shape[h],p=zn({inputs:{x:c},backend:n});for(let f=0;f<=Math.ceil(Math.log2(d))-1;f++){let m=new ib(c.shape,!1,o),A=m.getCustomSetupFunc(f),y=p;p=n.runWebGLProgram(m,[p],p.dtype,A),n.disposeIntermediateTensorInfo(y)}if(i){let f=new ib(c.shape,i,o),m=p;p=n.runWebGLProgram(f,[p],p.dtype),n.disposeIntermediateTensorInfo(m)}if(u!=null){let f=R.getUndoAxesPermutation(u),m=In({inputs:{x:p},backend:n,attrs:{perm:f}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(c),m}return p}var OB={kernelName:As,backendName:"webgl",kernelFunc:DB};function zB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i,binaryOutput:o}=r;if(a.shape.length===1){let l=n.readSync(a.dataId),u=n.readSync(s.dataId),c=b_(l,u,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}else if(a.shape.length===2){let l=n.bufferSync(a),u=n.bufferSync(s),c=dP(l,u,i,o);return n.makeTensorInfo(c.shape,s.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${a.shape.length}.`)}var PB={kernelName:Fh,backendName:"webgl",kernelFunc:zB},LB=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function sb(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function ib(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function OB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,exclusive:i,reverse:o}=r,l=a.shape.length,u=R.getAxesPermutation([s],l),c=a;u!=null&&(c=In({inputs:{x:a},backend:n,attrs:{perm:u}}));let h=R.getInnerMostAxes(1,l)[0];if(h!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${a.shape.length-1} but got axis=${s}`);let d=c.shape[h],p=zn({inputs:{x:c},backend:n});for(let f=0;f<=Math.ceil(Math.log2(d))-1;f++){let m=new ob(c.shape,!1,o),A=m.getCustomSetupFunc(f),y=p;p=n.runWebGLProgram(m,[p],p.dtype,A),n.disposeIntermediateTensorInfo(y)}if(i){let f=new ob(c.shape,i,o),m=p;p=n.runWebGLProgram(f,[p],p.dtype),n.disposeIntermediateTensorInfo(m)}if(u!=null){let f=R.getUndoAxesPermutation(u),m=In({inputs:{x:p},backend:n,attrs:{perm:f}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(c),m}return p}var zB={kernelName:As,backendName:"webgl",kernelFunc:OB};function PB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i,binaryOutput:o}=r;if(a.shape.length===1){let l=n.readSync(a.dataId),u=n.readSync(s.dataId),c=v_(l,u,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}else if(a.shape.length===2){let l=n.bufferSync(a),u=n.bufferSync(s),c=pP(l,u,i,o);return n.makeTensorInfo(c.shape,s.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${a.shape.length}.`)}var LB={kernelName:Fh,backendName:"webgl",kernelFunc:PB},WB=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2447,7 +2447,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float result = ${this.getInputSamplingString()}; setOutput(result); } - `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function WB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=new LB(f,s,i);return n.runWebGLProgram(m,[a],a.dtype)}var BB={kernelName:oo,backendName:"webgl",kernelFunc:WB},ob=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=e.outChannels/e.inChannels,A="",y="";n&&(r?A=`float activation(float a) { + `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function BB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=new WB(f,s,i);return n.runWebGLProgram(m,[a],a.dtype)}var VB={kernelName:oo,backendName:"webgl",kernelFunc:BB},lb=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=e.outChannels/e.inChannels,A="",y="";n&&(r?A=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); ${n} }`:a?A=`float activation(float a) { @@ -2503,7 +2503,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${y} setOutput(result); } - `}},lb=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=f,A="int xR; int xC; int xCOffset;";for(let b=0;b`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let h=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!0),d;return J().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels==1?d=new lb(h):d=new ob(h),n.runWebGLProgram(d,[a,s],"float32")}var UB={kernelName:ys,backendName:"webgl",kernelFunc:VB},HB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` + `}};function UB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l,dimRoundingMode:u}=r,c=l;c==null&&(c=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(i,c),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let h=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!0),d;return J().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels==1?d=new ub(h):d=new lb(h),n.runWebGLProgram(d,[a,s],"float32")}var HB={kernelName:ys,backendName:"webgl",kernelFunc:UB},jB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2691,7 +2691,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},jB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` + `}},GB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` const ivec2 pads = ivec2(${s}, ${i}); void main() { @@ -2736,13 +2736,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function GB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,filterShape:c}=r,h=R.computeConv2DInfo(a.shape,c,i,o,l,u,!0),d=new HB(h);return n.runWebGLProgram(d,[a,s],"float32")}var qB={kernelName:Mh,backendName:"webgl",kernelFunc:GB};function XB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,inputShape:c}=r,h=R.computeConv2DInfo(c,s.shape,i,o,l,u,!0),d=new jB(h);return n.runWebGLProgram(d,[a,s],"float32")}var KB={kernelName:$h,backendName:"webgl",kernelFunc:XB},ZB=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` + `}};function qB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,filterShape:c}=r,h=R.computeConv2DInfo(a.shape,c,i,o,l,u,!0),d=new jB(h);return n.runWebGLProgram(d,[a,s],"float32")}var XB={kernelName:Mh,backendName:"webgl",kernelFunc:qB};function KB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,inputShape:c}=r,h=R.computeConv2DInfo(c,s.shape,i,o,l,u,!0),d=new GB(h);return n.runWebGLProgram(d,[a,s],"float32")}var ZB={kernelName:$h,backendName:"webgl",kernelFunc:KB},YB=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` void main() { ivec2 coords = getOutputCoords(); float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; setOutput(val); } - `}};function YB(e){let{inputs:t,backend:n}=e,{x:r}=t,a=[...r.shape,...r.shape],s=v.sizeFromShape(r.shape),i=Ae({inputs:{x:r},backend:n,attrs:{shape:[s]}}),o=new ZB(s),l=n.runWebGLProgram(o,[i],i.dtype),u=Ae({inputs:{x:l},backend:n,attrs:{shape:a}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),u}var JB={kernelName:Dh,backendName:"webgl",kernelFunc:YB},QB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:r,strideHeight:a,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:u}=e,{top:c,left:h}=r;this.userCode=` + `}};function JB(e){let{inputs:t,backend:n}=e,{x:r}=t,a=[...r.shape,...r.shape],s=v.sizeFromShape(r.shape),i=Ae({inputs:{x:r},backend:n,attrs:{shape:[s]}}),o=new YB(s),l=n.runWebGLProgram(o,[i],i.dtype),u=Ae({inputs:{x:l},backend:n,attrs:{shape:a}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),u}var QB={kernelName:Dh,backendName:"webgl",kernelFunc:JB},eV=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:r,strideHeight:a,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:u}=e,{top:c,left:h}=r;this.userCode=` const ivec2 strides = ivec2(${a}, ${s}); const ivec2 pads = ivec2(${c}, ${h}); const float neg_infinity = -3.4e38; @@ -2780,7 +2780,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float result = curVal; setOutput(result); } - `}};function eV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeDilation2DInfo(a.shape,s.shape,i,o,"NHWC",l),c,h=new QB(u);c=n.runWebGLProgram(h,[a,s],"float32");let d=Ae({inputs:{x:c},backend:n,attrs:{shape:u.outShape}});return n.disposeIntermediateTensorInfo(c),d}var tV={kernelName:pu,backendName:"webgl",kernelFunc:eV},nV="return (x >= 0.0) ? x : (exp(x) - 1.0);",rV=` + `}};function tV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeDilation2DInfo(a.shape,s.shape,i,o,"NHWC",l),c,h=new eV(u);c=n.runWebGLProgram(h,[a,s],"float32");let d=Ae({inputs:{x:c},backend:n,attrs:{shape:u.outShape}});return n.disposeIntermediateTensorInfo(c),d}var nV={kernelName:pu,backendName:"webgl",kernelFunc:tV},rV="return (x >= 0.0) ? x : (exp(x) - 1.0);",aV=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -2789,12 +2789,12 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,aV=Xe({opSnippet:nV,packedOpSnippet:rV}),sV={kernelName:lo,backendName:"webgl",kernelFunc:aV},iV="return (b >= 1.0) ? a : a * (b + 1.0);",oV=` +`,sV=Xe({opSnippet:rV,packedOpSnippet:aV}),iV={kernelName:lo,backendName:"webgl",kernelFunc:sV},oV="return (b >= 1.0) ? a : a * (b + 1.0);",lV=` vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`,lV=e=>{let{inputs:t,backend:n}=e,{dy:r,y:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(oV,r.shape,a.shape):new Rl(iV,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)},uV={kernelName:Ph,backendName:"webgl",kernelFunc:lV},cV=` +`,uV=e=>{let{inputs:t,backend:n}=e,{dy:r,y:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(lV,r.shape,a.shape):new Rl(oV,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)},cV={kernelName:Ph,backendName:"webgl",kernelFunc:uV},hV=` return vec4(equal(a, b)); -`,hV="return float(a == b);",dV=nn({opSnippet:hV,packedOpSnippet:cV,dtype:"bool"}),pV={kernelName:co,backendName:"webgl",kernelFunc:dV},fV=` +`,dV="return float(a == b);",pV=nn({opSnippet:dV,packedOpSnippet:hV,dtype:"bool"}),fV={kernelName:co,backendName:"webgl",kernelFunc:pV},mV=` // Error function is calculated approximately with elementary function. // See "Handbook of Mathematical Functions with Formulas, // Graphs, and Mathematical Tables", Abramowitz and Stegun. @@ -2809,7 +2809,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam x = abs(x); float t = 1.0 / (1.0 + p * x); return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`,mV=Xe({opSnippet:fV}),AV={kernelName:uo,backendName:"webgl",kernelFunc:mV},ub="return exp(x);",cb=Xe({opSnippet:ub,packedOpSnippet:ub,cpuKernelImpl:mP}),yV={kernelName:xs,backendName:"webgl",kernelFunc:cb};function aA(e){let{inputs:t,attrs:n,backend:r}=e,{dim:a}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=a;return a<0&&(v.assert(-(i+1)<=a,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+a+1),o.splice(l,0,1),Ae({inputs:{x:s},backend:r,attrs:{shape:o}})}var gV={kernelName:ho,backendName:"webgl",kernelFunc:aA},hb="return exp(x) - 1.0;",xV=Xe({opSnippet:hb,packedOpSnippet:hb,cpuKernelImpl:AP}),wV={kernelName:po,backendName:"webgl",kernelFunc:xV},db=class{constructor(e,t,n){this.variableNames=["real","imag"];let r=t[1];this.outputShape=t;let a=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${r}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` +`,AV=Xe({opSnippet:mV}),yV={kernelName:uo,backendName:"webgl",kernelFunc:AV},cb="return exp(x);",hb=Xe({opSnippet:cb,packedOpSnippet:cb,cpuKernelImpl:AP}),gV={kernelName:xs,backendName:"webgl",kernelFunc:hb};function aA(e){let{inputs:t,attrs:n,backend:r}=e,{dim:a}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=a;return a<0&&(v.assert(-(i+1)<=a,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+a+1),o.splice(l,0,1),Ae({inputs:{x:s},backend:r,attrs:{shape:o}})}var xV={kernelName:ho,backendName:"webgl",kernelFunc:aA},db="return exp(x) - 1.0;",wV=Xe({opSnippet:db,packedOpSnippet:db,cpuKernelImpl:yP}),_V={kernelName:po,backendName:"webgl",kernelFunc:wV},pb=class{constructor(e,t,n){this.variableNames=["real","imag"];let r=t[1];this.outputShape=t;let a=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${r}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` const float exponentMultiplier = ${a}; float unaryOpComplex(float real, float expR, float imag, float expI) { @@ -2842,13 +2842,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function pb(e,t,n){let r=n.texData.get(e.dataId),a=v.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=a/s,o=Ae({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}),l=o.shape,u=new db("real",l,t),c=new db("imag",l,t),h=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:l},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:l}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p);let m=Ae({inputs:{x:f},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(f),m}function _V(e){let{inputs:t,backend:n}=e,{input:r}=t;return pb(r,!1,n)}var bV={kernelName:Lh,backendName:"webgl",kernelFunc:_V},vV=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` + `}};function fb(e,t,n){let r=n.texData.get(e.dataId),a=v.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=a/s,o=Ae({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}),l=o.shape,u=new pb("real",l,t),c=new pb("imag",l,t),h=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:l},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:l}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p);let m=Ae({inputs:{x:f},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(f),m}function bV(e){let{inputs:t,backend:n}=e,{input:r}=t;return fb(r,!1,n)}var vV={kernelName:Lh,backendName:"webgl",kernelFunc:bV},kV=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` uniform float value; void main() { // Input can be obtained from uniform value. setOutput(value); } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function sA(e){let{backend:t,attrs:n}=e,{shape:r,value:a}=n,{dtype:s}=n;if(s=s||v.inferDtype(a),s==="string"){let i=v.getArrayFromDType(s,v.sizeFromShape(r));return i.fill(a),t.makeTensorInfo(r,s,i)}else{let i=new vV(r,a),o=i.getCustomSetupFunc(a);return t.runWebGLProgram(i,[],s,o)}}var kV={kernelName:fu,backendName:"webgl",kernelFunc:sA},NV=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function sA(e){let{backend:t,attrs:n}=e,{shape:r,value:a}=n,{dtype:s}=n;if(s=s||v.inferDtype(a),s==="string"){let i=v.getArrayFromDType(s,v.sizeFromShape(r));return i.fill(a),t.makeTensorInfo(r,s,i)}else{let i=new kV(r,a),o=i.getCustomSetupFunc(a);return t.runWebGLProgram(i,[],s,o)}}var NV={kernelName:fu,backendName:"webgl",kernelFunc:sA},IV=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -2862,7 +2862,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(outputValue); } - `}},IV={kernelName:fo,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,r=t,a=new NV(n.shape);return r.runWebGLProgram(a,[n],n.dtype)}},fb="return floor(x);",SV=Xe({opSnippet:fb,packedOpSnippet:fb,cpuKernelImpl:yP}),TV={kernelName:ws,backendName:"webgl",kernelFunc:SV},CV=` + `}},SV={kernelName:fo,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,r=t,a=new IV(n.shape);return r.runWebGLProgram(a,[n],n.dtype)}},mb="return floor(x);",TV=Xe({opSnippet:mb,packedOpSnippet:mb,cpuKernelImpl:gP}),CV={kernelName:ws,backendName:"webgl",kernelFunc:TV},EV=` float s = sign(a) * sign(b); int ia = round(a); int ib = round(b); @@ -2872,7 +2872,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } else { return NAN; } -`,EV=` +`,RV=` ivec4 ia = round(a); ivec4 ib = round(b); bvec4 cond = notEqual(ib, ivec4(0)); @@ -2893,7 +2893,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam result[3] = idiv(ia[3], ib[3], s[3]); } return vec4(result); -`,RV=nn({opSnippet:CV,packedOpSnippet:EV,dtype:"int32"}),FV={kernelName:_s,backendName:"webgl",kernelFunc:RV},MV=class{constructor(e){this.variableNames=["A"];let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` +`,FV=nn({opSnippet:EV,packedOpSnippet:RV,dtype:"int32"}),MV={kernelName:_s,backendName:"webgl",kernelFunc:FV},$V=class{constructor(e){this.variableNames=["A"];let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2915,7 +2915,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(floor(value * 255.0 + 0.5)); } - `}},$V=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` + `}},DV=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2949,7 +2949,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${t.output} = result; } - `}},OV={kernelName:ed,backendName:"webgl",kernelFunc:DV},Ml;function DV(e){let{inputs:t,backend:n,attrs:r}=e,{pixels:a}=t,{numChannels:s}=r,i=typeof HTMLVideoElement!="undefined"&&a instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&a instanceof HTMLImageElement,[l,u]=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],c=[u,l],h=[u,l,s];(o||i)&&(Ml==null&&(Ml=document.createElement("canvas").getContext("2d")),Ml.canvas.width=l,Ml.canvas.height=u,Ml.drawImage(a,0,0,l,u),a=Ml.canvas);let d=n.makeTensorInfo(c,"int32");n.texData.get(d.dataId).usage=Zn.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),a);let p=J().getBool("WEBGL_PACK")?new $V(h):new MV(h),f=n.runWebGLProgram(p,[d],"int32");return n.disposeData(d.dataId),f}function zV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=R.convertConv2DDataFormat(c),A=R.computeConv2DInfo(a.shape,s.shape,l,h,u,d,!1,m),y,g=[];if(A.filterHeight===1&&A.filterWidth===1&&A.dilationHeight===1&&A.dilationWidth===1&&A.strideHeight===1&&A.strideWidth===1&&(A.padInfo.type==="SAME"||A.padInfo.type==="VALID"))y=nb({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)y=rb({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else{let b=i!=null,w=o!=null,x=p==="leakyrelu",I=p?dp(p,!1):null,S=new tb(A,b,I,w,x),T=[a,s];if(i&&T.push(i),o&&T.push(o),x){let M=n.makeTensorInfo([],"float32",v.createScalarValue(f,"float32"));T.push(M),g.push(M)}y=n.runWebGLProgram(S,T,"float32")}let _=Ae({inputs:{x:y},backend:n,attrs:{shape:A.outShape}});return g.push(y),g.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var PV={kernelName:ei,backendName:"webgl",kernelFunc:zV};function LV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dimRoundingMode:h,activation:d,leakyreluAlpha:p}=r,f=[],m=c;m==null&&(m=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(l,m),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${m}'`);let A=R.computeConv2DInfo(a.shape,s.shape,l,m,u,h,!0),y=J().getBool("WEBGL_PACK_DEPTHWISECONV")&&A.strideWidth<=2&&A.outChannels/A.inChannels==1,g=d?dp(d,y):null,_=[a,s],b=i!=null,w=o!=null,x=d==="leakyrelu";if(b&&_.push(i),w&&_.push(o),x){let T=n.makeTensorInfo([],"float32",v.createScalarValue(p,"float32"));_.push(T),f.push(T)}let I;y?I=new lb(A,b,g,w,x):I=new ob(A,b,g,w,x);let S=n.runWebGLProgram(I,_,"float32");return f.forEach(T=>n.disposeIntermediateTensorInfo(T)),S}var WV={kernelName:ti,backendName:"webgl",kernelFunc:LV},BV=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let r=ut(t.length),a=ut(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` + `}},zV={kernelName:ed,backendName:"webgl",kernelFunc:OV},Ml;function OV(e){let{inputs:t,backend:n,attrs:r}=e,{pixels:a}=t,{numChannels:s}=r,i=typeof HTMLVideoElement!="undefined"&&a instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&a instanceof HTMLImageElement,[l,u]=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],c=[u,l],h=[u,l,s];(o||i)&&(Ml==null&&(Ml=document.createElement("canvas").getContext("2d")),Ml.canvas.width=l,Ml.canvas.height=u,Ml.drawImage(a,0,0,l,u),a=Ml.canvas);let d=n.makeTensorInfo(c,"int32");n.texData.get(d.dataId).usage=Zn.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),a);let p=J().getBool("WEBGL_PACK")?new DV(h):new $V(h),f=n.runWebGLProgram(p,[d],"int32");return n.disposeData(d.dataId),f}function PV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=R.convertConv2DDataFormat(c),A=R.computeConv2DInfo(a.shape,s.shape,l,h,u,d,!1,m),y,g=[];if(A.filterHeight===1&&A.filterWidth===1&&A.dilationHeight===1&&A.dilationWidth===1&&A.strideHeight===1&&A.strideWidth===1&&(A.padInfo.type==="SAME"||A.padInfo.type==="VALID"))y=rb({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)y=ab({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else{let b=i!=null,w=o!=null,x=p==="leakyrelu",I=p?dp(p,!1):null,S=new nb(A,b,I,w,x),T=[a,s];if(i&&T.push(i),o&&T.push(o),x){let M=n.makeTensorInfo([],"float32",v.createScalarValue(f,"float32"));T.push(M),g.push(M)}y=n.runWebGLProgram(S,T,"float32")}let _=Ae({inputs:{x:y},backend:n,attrs:{shape:A.outShape}});return g.push(y),g.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var LV={kernelName:ei,backendName:"webgl",kernelFunc:PV};function WV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dimRoundingMode:h,activation:d,leakyreluAlpha:p}=r,f=[],m=c;m==null&&(m=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(l,m),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${m}'`);let A=R.computeConv2DInfo(a.shape,s.shape,l,m,u,h,!0),y=J().getBool("WEBGL_PACK_DEPTHWISECONV")&&A.strideWidth<=2&&A.outChannels/A.inChannels==1,g=d?dp(d,y):null,_=[a,s],b=i!=null,w=o!=null,x=d==="leakyrelu";if(b&&_.push(i),w&&_.push(o),x){let T=n.makeTensorInfo([],"float32",v.createScalarValue(p,"float32"));_.push(T),f.push(T)}let I;y?I=new ub(A,b,g,w,x):I=new lb(A,b,g,w,x);let S=n.runWebGLProgram(I,_,"float32");return f.forEach(T=>n.disposeIntermediateTensorInfo(T)),S}var BV={kernelName:ti,backendName:"webgl",kernelFunc:WV},VV=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let r=ut(t.length),a=ut(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` ${r} strides = ${r}(${this.strides}); void main() { ${a} coords = getOutputCoords(); @@ -2960,21 +2960,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(getX(flattenIndex, coords[1])); } - `}};function VV(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=a.shape,i=s[s.length-1],[o,l,u,c]=R.prepareAndValidate(r,a),h=Ae({inputs:{x:a},backend:n,attrs:{shape:[l,i]}}),d=Ae({inputs:{x:r},backend:n,attrs:{shape:[v.sizeFromShape(r.shape)/u,u]}}),p=new BV(i,c,[l,u]),f=n.runWebGLProgram(p,[d,h],d.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),m}var UV={kernelName:Ao,backendName:"webgl",kernelFunc:VV},jV=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=ut(this.rank),r=HV(e,2);this.userCode=` + `}};function UV(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=a.shape,i=s[s.length-1],[o,l,u,c]=R.prepareAndValidate(r,a),h=Ae({inputs:{x:a},backend:n,attrs:{shape:[l,i]}}),d=Ae({inputs:{x:r},backend:n,attrs:{shape:[v.sizeFromShape(r.shape)/u,u]}}),p=new VV(i,c,[l,u]),f=n.runWebGLProgram(p,[d,h],d.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),m}var HV={kernelName:Ao,backendName:"webgl",kernelFunc:UV},GV=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=ut(this.rank),r=jV(e,2);this.userCode=` void main() { ${n} resRC = getOutputCoords(); setOutput(getA(${r})); } - `}};function HV(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=[];for(let a=0;an.disposeIntermediateTensorInfo(w)),n.makeTensorInfo(u.outputShape,b.dtype,b.values)}let m=new jV(d.shape,f),A=n.runWebGLProgram(m,[d,p],d.dtype);h.push(A);let y=Ae({inputs:{x:A},backend:n,attrs:{shape:u.outputShape}});return h.forEach(g=>n.disposeIntermediateTensorInfo(g)),y}var qV={kernelName:mo,backendName:"webgl",kernelFunc:GV},XV="return float(a > b);",KV=` + `}};function jV(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=[];for(let a=0;an.disposeIntermediateTensorInfo(w)),n.makeTensorInfo(u.outputShape,b.dtype,b.values)}let m=new GV(d.shape,f),A=n.runWebGLProgram(m,[d,p],d.dtype);h.push(A);let y=Ae({inputs:{x:A},backend:n,attrs:{shape:u.outputShape}});return h.forEach(g=>n.disposeIntermediateTensorInfo(g)),y}var XV={kernelName:mo,backendName:"webgl",kernelFunc:qV},KV="return float(a > b);",ZV=` return vec4(greaterThan(a, b)); -`,ZV=nn({opSnippet:XV,packedOpSnippet:KV,cpuKernelImpl:xP,dtype:"bool"}),YV={kernelName:yo,backendName:"webgl",kernelFunc:ZV},JV="return float(a >= b);",QV=` +`,YV=nn({opSnippet:KV,packedOpSnippet:ZV,cpuKernelImpl:wP,dtype:"bool"}),JV={kernelName:yo,backendName:"webgl",kernelFunc:YV},QV="return float(a >= b);",eU=` return vec4(greaterThanEqual(a, b)); -`,eU=nn({opSnippet:JV,packedOpSnippet:QV,dtype:"bool"}),tU={kernelName:vs,backendName:"webgl",kernelFunc:eU};function nU(e){let{inputs:t,backend:n}=e,{input:r}=t;return pb(r,!0,n)}var rU={kernelName:Wh,backendName:"webgl",kernelFunc:nU},aU="return float(!isnan(x) && !isinf(x));",sU=Xe({opSnippet:aU,dtype:"bool"}),iU={kernelName:go,backendName:"webgl",kernelFunc:sU},oU="return float(isinf(x));",lU=Xe({opSnippet:oU,dtype:"bool"}),uU={kernelName:xo,backendName:"webgl",kernelFunc:lU},cU="return float(isnan(x));",hU=Xe({opSnippet:cU,dtype:"bool"}),dU={kernelName:wo,backendName:"webgl",kernelFunc:hU},pU="return float(a < b);",fU=` +`,tU=nn({opSnippet:QV,packedOpSnippet:eU,dtype:"bool"}),nU={kernelName:vs,backendName:"webgl",kernelFunc:tU};function rU(e){let{inputs:t,backend:n}=e,{input:r}=t;return fb(r,!0,n)}var aU={kernelName:Wh,backendName:"webgl",kernelFunc:rU},sU="return float(!isnan(x) && !isinf(x));",iU=Xe({opSnippet:sU,dtype:"bool"}),oU={kernelName:go,backendName:"webgl",kernelFunc:iU},lU="return float(isinf(x));",uU=Xe({opSnippet:lU,dtype:"bool"}),cU={kernelName:xo,backendName:"webgl",kernelFunc:uU},hU="return float(isnan(x));",dU=Xe({opSnippet:hU,dtype:"bool"}),pU={kernelName:wo,backendName:"webgl",kernelFunc:dU},fU="return float(a < b);",mU=` return vec4(lessThan(a, b)); -`,mU=nn({opSnippet:pU,packedOpSnippet:fU,cpuKernelImpl:wP,dtype:"bool"}),AU={kernelName:_o,backendName:"webgl",kernelFunc:mU},yU="return float(a <= b);",gU=` +`,AU=nn({opSnippet:fU,packedOpSnippet:mU,cpuKernelImpl:_P,dtype:"bool"}),yU={kernelName:_o,backendName:"webgl",kernelFunc:AU},gU="return float(a <= b);",xU=` return vec4(lessThanEqual(a, b)); -`,xU=nn({opSnippet:yU,packedOpSnippet:gU,dtype:"bool"}),wU={kernelName:bo,backendName:"webgl",kernelFunc:xU};function _U(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=_P(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var bU={kernelName:Vh,backendName:"webgl",kernelFunc:_U},vU=`if (x < 0.0) return NAN; - return log(x);`,kU=` +`,wU=nn({opSnippet:gU,packedOpSnippet:xU,dtype:"bool"}),_U={kernelName:bo,backendName:"webgl",kernelFunc:wU};function bU(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=bP(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var vU={kernelName:Vh,backendName:"webgl",kernelFunc:bU},kU=`if (x < 0.0) return NAN; + return log(x);`,NU=` vec4 result = log(x); vec4 isNaN = vec4(lessThan(x, vec4(0.0))); result.r = isNaN.r == 1.0 ? NAN : result.r; @@ -2983,16 +2983,16 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam result.a = isNaN.a == 1.0 ? NAN : result.a; return result; -`,NU=Xe({opSnippet:vU,packedOpSnippet:kU,cpuKernelImpl:bP}),IU={kernelName:Is,backendName:"webgl",kernelFunc:NU},SU="return log(1.0 + x);",TU=Xe({opSnippet:SU}),CU={kernelName:vo,backendName:"webgl",kernelFunc:TU},EU="return float(a >= 1.0 && b >= 1.0);",RU=` +`,IU=Xe({opSnippet:kU,packedOpSnippet:NU,cpuKernelImpl:vP}),SU={kernelName:Is,backendName:"webgl",kernelFunc:IU},TU="return log(1.0 + x);",CU=Xe({opSnippet:TU}),EU={kernelName:vo,backendName:"webgl",kernelFunc:CU},RU="return float(a >= 1.0 && b >= 1.0);",FU=` return vec4( vec4(greaterThanEqual(a, vec4(1.0))) * vec4(greaterThanEqual(b, vec4(1.0)))); -`,FU=nn({opSnippet:EU,packedOpSnippet:RU,dtype:"bool"}),MU={kernelName:ko,backendName:"webgl",kernelFunc:FU},$U="return float(!(x >= 1.0));",DU=Xe({opSnippet:$U}),OU={kernelName:mu,backendName:"webgl",kernelFunc:DU},zU="return float(a >= 1.0 || b >= 1.0);",PU=` +`,MU=nn({opSnippet:RU,packedOpSnippet:FU,dtype:"bool"}),$U={kernelName:ko,backendName:"webgl",kernelFunc:MU},DU="return float(!(x >= 1.0));",OU=Xe({opSnippet:DU}),zU={kernelName:mu,backendName:"webgl",kernelFunc:OU},PU="return float(a >= 1.0 || b >= 1.0);",LU=` return min( vec4(greaterThanEqual(a, vec4(1.0))) + vec4(greaterThanEqual(b, vec4(1.0))), vec4(1.0)); -`,LU=nn({opSnippet:zU,packedOpSnippet:PU,dtype:"bool"}),WU={kernelName:Au,backendName:"webgl",kernelFunc:LU},BU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` +`,WU=nn({opSnippet:PU,packedOpSnippet:LU,dtype:"bool"}),BU={kernelName:Au,backendName:"webgl",kernelFunc:WU},VU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3011,7 +3011,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float val = x * ${o}; setOutput(val); } - `}},VU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` + `}},UU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords.x; @@ -3073,7 +3073,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam vec4 result = xAtOutputCoords * ${o}; setOutput(result); } - `}},UU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r,u=J().getBool("WEBGL_PACK_NORMALIZATION")?new VU(a.shape,s,i,o,l):new BU(a.shape,s,i,o,l);return n.runWebGLProgram(u,[a],a.dtype)},HU={kernelName:yu,backendName:"webgl",kernelFunc:UU},jU=class{constructor(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode=` + `}},HU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r,u=J().getBool("WEBGL_PACK_NORMALIZATION")?new UU(a.shape,s,i,o,l):new VU(a.shape,s,i,o,l);return n.runWebGLProgram(u,[a],a.dtype)},jU={kernelName:yu,backendName:"webgl",kernelFunc:HU},GU=class{constructor(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3128,14 +3128,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(result); } - `}},GU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:u,beta:c}=r,h=new jU(a.shape,o,l,u,c);return n.runWebGLProgram(h,[a,s,i],a.dtype)},qU={kernelName:Uh,backendName:"webgl",kernelFunc:GU};function XU(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,e.dtype,"max",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}function mb(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=n.shouldExecuteOnCPU([a]),p=a;if(h){if(d){let g=n.texData.get(p.dataId).values,_=new Array(o);for(let x=0;x<_.length;x++)_[x]=a.shape[c[x]];let b=Jm(g,a.shape,a.dtype,c,_);p=n.makeTensorInfo(_,a.dtype);let w=n.texData.get(p.dataId);w.values=b}else p=pp(a,c,n);u=R.getInnerMostAxes(u.length,o)}R.assertAxesAreInnerMostDims("max",u,o);let[f,m]=R.computeOutAndReduceShapes(p.shape,u),A=f;i&&(A=R.expandShapeToKeepDim(f,l));let y;if(d){let g=n.texData.get(p.dataId).values,_=vP(g,v.sizeFromShape(m),A,a.dtype);y=n.makeTensorInfo(A,a.dtype);let b=n.texData.get(y.dataId);b.values=_}else y=XU(p,m,A,n);return h&&n.disposeIntermediateTensorInfo(p),y}var KU={kernelName:Ss,backendName:"webgl",kernelFunc:mb},ZU=F_+` + `}},qU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:u,beta:c}=r,h=new GU(a.shape,o,l,u,c);return n.runWebGLProgram(h,[a,s,i],a.dtype)},XU={kernelName:Uh,backendName:"webgl",kernelFunc:qU};function KU(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,e.dtype,"max",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}function Ab(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=n.shouldExecuteOnCPU([a]),p=a;if(h){if(d){let g=n.texData.get(p.dataId).values,_=new Array(o);for(let x=0;x<_.length;x++)_[x]=a.shape[c[x]];let b=Jm(g,a.shape,a.dtype,c,_);p=n.makeTensorInfo(_,a.dtype);let w=n.texData.get(p.dataId);w.values=b}else p=pp(a,c,n);u=R.getInnerMostAxes(u.length,o)}R.assertAxesAreInnerMostDims("max",u,o);let[f,m]=R.computeOutAndReduceShapes(p.shape,u),A=f;i&&(A=R.expandShapeToKeepDim(f,l));let y;if(d){let g=n.texData.get(p.dataId).values,_=kP(g,v.sizeFromShape(m),A,a.dtype);y=n.makeTensorInfo(A,a.dtype);let b=n.texData.get(y.dataId);b.values=_}else y=KU(p,m,A,n);return h&&n.disposeIntermediateTensorInfo(p),y}var ZU={kernelName:Ss,backendName:"webgl",kernelFunc:Ab},YU=M_+` return max(a, b); -`,YU=` +`,JU=` vec4 result = vec4(max(a, b)); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+hp+` return result; -`,JU=nn({opSnippet:ZU,packedOpSnippet:YU,cpuKernelImpl:kP}),QU={kernelName:Ts,backendName:"webgl",kernelFunc:JU};function eH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"maxPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"max",!1);return n.runWebGLProgram(h,[a],a.dtype)}var tH={kernelName:Cs,backendName:"webgl",kernelFunc:eH};function nH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,u,l),d=new tA(h,"max",!1);return n.runWebGLProgram(d,[a],a.dtype)}var rH={kernelName:gu,backendName:"webgl",kernelFunc:nH},aH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=a-1-e.padInfo.top,o=s-1-e.padInfo.left,l=a*s-1;this.userCode=` +`,QU=nn({opSnippet:YU,packedOpSnippet:JU,cpuKernelImpl:NP}),eH={kernelName:Ts,backendName:"webgl",kernelFunc:QU};function tH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"maxPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"max",!1);return n.runWebGLProgram(h,[a],a.dtype)}var nH={kernelName:Cs,backendName:"webgl",kernelFunc:tH};function rH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,u,l),d=new tA(h,"max",!1);return n.runWebGLProgram(d,[a],a.dtype)}var aH={kernelName:gu,backendName:"webgl",kernelFunc:rH},sH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=a-1-e.padInfo.top,o=s-1-e.padInfo.left,l=a*s-1;this.userCode=` const ivec2 pads = ivec2(${i}, ${o}); void main() { @@ -3181,7 +3181,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},sH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=o-1-e.padInfo.front,h=l-1-e.padInfo.top,d=u-1-e.padInfo.left,p=o*l*u-1;this.userCode=` + `}},iH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=o-1-e.padInfo.front,h=l-1-e.padInfo.top,d=u-1-e.padInfo.left,p=o*l*u-1;this.userCode=` const ivec3 pads = ivec3(${c}, ${h}, ${d}); void main() { @@ -3245,14 +3245,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function iH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new tA(d,"max",!0),f=n.runWebGLProgram(p,[i],i.dtype),m=new sH(d),A=n.runWebGLProgram(m,[a,f],i.dtype);return n.disposeIntermediateTensorInfo(f),A}var oH={kernelName:jh,backendName:"webgl",kernelFunc:iH};function lH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;vl([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=!0,f=new hc(d,"max",p),m=n.runWebGLProgram(f,[o],o.dtype),A=new aH(d),y=n.runWebGLProgram(A,[a,m],o.dtype);return n.disposeIntermediateTensorInfo(m),y}var uH={kernelName:Hh,backendName:"webgl",kernelFunc:lH};function cH(e,t,n,r){let a=new hc(n,"max",!1),s=r.runWebGLProgram(a,[e],"float32");a=new hc(n,"max",!0,!0,t);let i=r.runWebGLProgram(a,[e],"float32");return[s,i]}var hH={kernelName:Gh,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;v.assert(r.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${r.shape.length}.`);let u=[1,1];v.assert(R.eitherStridesOrDilationsAreOne(s,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);let c=R.computePool2DInfo(r.shape,a,s,u,i),[h,d]=cH(r,o,c,l);return[h,d]}};function dH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,"float32","mean",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}var pH={kernelName:Es,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{keepDims:a,axis:s}=t,i=n,o=r.shape.length,l=v.parseAxisParam(s,r.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=i.shouldExecuteOnCPU([r]),p=[],f=r;if(h){if(d){let _=i.texData.get(f.dataId).values,b=new Array(o);for(let I=0;I{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;v.assert(r.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${r.shape.length}.`);let u=[1,1];v.assert(R.eitherStridesOrDilationsAreOne(s,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);let c=R.computePool2DInfo(r.shape,a,s,u,i),[h,d]=hH(r,o,c,l);return[h,d]}};function pH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,"float32","mean",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}var fH={kernelName:Es,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{keepDims:a,axis:s}=t,i=n,o=r.shape.length,l=v.parseAxisParam(s,r.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=i.shouldExecuteOnCPU([r]),p=[],f=r;if(h){if(d){let _=i.texData.get(f.dataId).values,b=new Array(o);for(let I=0;Iu[0]+e[c]+u[1]);let r=e.length,a=ut(r),s=t.map(u=>u[0]).join(","),i=t.map((u,c)=>u[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),l=n==="reflect"?0:1;if(r===1){this.userCode=` +`,xH=nn({opSnippet:yH,packedOpSnippet:gH,cpuKernelImpl:IP}),wH={kernelName:Fs,backendName:"webgl",kernelFunc:xH},_H=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((u,c)=>u[0]+e[c]+u[1]);let r=e.length,a=ut(r),s=t.map(u=>u[0]).join(","),i=t.map((u,c)=>u[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),l=n==="reflect"?0:1;if(r===1){this.userCode=` int start = ${s}; int end = ${i}; @@ -3281,7 +3281,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${a} coords = outC - start; setOutput(getX(${o})); } - `}},_H=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((p,f)=>p[0]+e[f]+p[1]);let r=e.length,a=ut(r),s=t.map(p=>p[0]).join(","),i=t.map((p,f)=>p[0]+e[f]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=n==="reflect"?0:1,d="";if(r===1){let p=` + `}},bH=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((p,f)=>p[0]+e[f]+p[1]);let r=e.length,a=ut(r),s=t.map(p=>p[0]).join(","),i=t.map((p,f)=>p[0]+e[f]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=n==="reflect"?0:1,d="";if(r===1){let p=` ${a} source = rc; if (source < start) { source = start * 2 - source - ${h}; @@ -3337,13 +3337,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${d} setOutput(result); } - `}},bH=({inputs:e,backend:t,attrs:n})=>{let{x:r}=e,{paddings:a,mode:s}=n,i=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new _H(r.shape,a,s):new wH(r.shape,a,s);return t.runWebGLProgram(i,[r],r.dtype)},vH={kernelName:xu,backendName:"webgl",kernelFunc:bH},kH=`if (b == 0.0) return NAN; - return mod(a, b);`,NH=` + `}},vH=({inputs:e,backend:t,attrs:n})=>{let{x:r}=e,{paddings:a,mode:s}=n,i=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new bH(r.shape,a,s):new _H(r.shape,a,s);return t.runWebGLProgram(i,[r],r.dtype)},kH={kernelName:xu,backendName:"webgl",kernelFunc:vH},NH=`if (b == 0.0) return NAN; + return mod(a, b);`,IH=` vec4 result = mod(a, b); vec4 isNaN = vec4(equal(b, vec4(0.0))); `+hp+` return result; -`,IH=nn({opSnippet:kH,packedOpSnippet:NH}),SH={kernelName:No,backendName:"webgl",kernelFunc:IH},TH=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` +`,SH=nn({opSnippet:NH,packedOpSnippet:IH}),TH={kernelName:No,backendName:"webgl",kernelFunc:SH},CH=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` uniform float seed; void main() { @@ -3365,11 +3365,11 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam // If no other event happened, last event happened. setOutput(float(${t-1})); } - `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},CH=` + `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},EH=` if (a == b) { return 1.0; }; -return a / b;`,EH=` +return a / b;`,RH=` // vec4 one = vec4(equal(a, b)); // return one + (vec4(1.0) - one) * a / b; vec4 result = a / b; @@ -3387,14 +3387,14 @@ return a / b;`,EH=` } return result; -`,Ab=nn({opSnippet:CH,packedOpSnippet:EH,checkOutOfBounds:!0}),RH={kernelName:gs,backendName:"webgl",kernelFunc:Ab},yb="return a - b;",gb=nn({opSnippet:yb,packedOpSnippet:yb,supportsComplex:!0,cpuKernelImpl:MP}),FH={kernelName:Zs,backendName:"webgl",kernelFunc:gb};function xb(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=v.parseAxisParam([s],a.shape),o=mb({inputs:{x:a},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=R.expandShapeToKeepDim(o.shape,i),u=Ae({inputs:{x:o},backend:n,attrs:{shape:l}}),c=gb({inputs:{a,b:u},backend:n}),h=cb({inputs:{x:c},backend:n}),d=eA({inputs:{x:h},backend:n,attrs:{axis:i,keepDims:!1}}),p=Ae({inputs:{x:d},backend:n,attrs:{shape:l}}),f=Ab({inputs:{a:h,b:p},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}var MH={kernelName:Xs,backendName:"webgl",kernelFunc:xb};function $H(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r,l=o?a:xb({inputs:{logits:a},backend:n,attrs:{dim:a.shape.length-1}}),u=l.shape[0],c=l.shape[1],h=new TH(u,c,s),d=h.getCustomSetupFunc(i),p=n.runWebGLProgram(h,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),p}var DH={kernelName:qh,backendName:"webgl",kernelFunc:$H},wb="return -x;";function OH(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])){let s=n.texData.get(r.dataId),[i,o]=SP(s.values,r.shape,r.dtype);return n.makeTensorInfo(o,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,wb):a=new Ba(r.shape,wb),n.runWebGLProgram(a,[r],r.dtype)}var zH={kernelName:Io,backendName:"webgl",kernelFunc:OH},PH=Pr.nonMaxSuppressionV3Impl;function LH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=r,u=n.readSync(a.dataId),c=n.readSync(s.dataId),{selectedIndices:h}=PH(u,c,i,o,l);return n.makeTensorInfo([h.length],"int32",new Int32Array(h))}var WH={kernelName:To,backendName:"webgl",kernelFunc:LH},BH=Pr.nonMaxSuppressionV4Impl;function VH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),{selectedIndices:d,validOutputs:p}=BH(c,h,i,o,l,u);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([p]))]}var UH={kernelName:Co,backendName:"webgl",kernelFunc:VH},HH=Pr.nonMaxSuppressionV5Impl;function jH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),d=i,p=o,f=l,m=u,{selectedIndices:A,selectedScores:y}=HH(c,h,d,p,f,m);return[n.makeTensorInfo([A.length],"int32",new Int32Array(A)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var GH={kernelName:Eo,backendName:"webgl",kernelFunc:jH},qH=class{constructor(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` +`,yb=nn({opSnippet:EH,packedOpSnippet:RH,checkOutOfBounds:!0}),FH={kernelName:gs,backendName:"webgl",kernelFunc:yb},gb="return a - b;",xb=nn({opSnippet:gb,packedOpSnippet:gb,supportsComplex:!0,cpuKernelImpl:$P}),MH={kernelName:Zs,backendName:"webgl",kernelFunc:xb};function wb(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=v.parseAxisParam([s],a.shape),o=Ab({inputs:{x:a},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=R.expandShapeToKeepDim(o.shape,i),u=Ae({inputs:{x:o},backend:n,attrs:{shape:l}}),c=xb({inputs:{a,b:u},backend:n}),h=hb({inputs:{x:c},backend:n}),d=eA({inputs:{x:h},backend:n,attrs:{axis:i,keepDims:!1}}),p=Ae({inputs:{x:d},backend:n,attrs:{shape:l}}),f=yb({inputs:{a:h,b:p},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}var $H={kernelName:Xs,backendName:"webgl",kernelFunc:wb};function DH(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r,l=o?a:wb({inputs:{logits:a},backend:n,attrs:{dim:a.shape.length-1}}),u=l.shape[0],c=l.shape[1],h=new CH(u,c,s),d=h.getCustomSetupFunc(i),p=n.runWebGLProgram(h,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),p}var OH={kernelName:qh,backendName:"webgl",kernelFunc:DH},_b="return -x;";function zH(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])){let s=n.texData.get(r.dataId),[i,o]=TP(s.values,r.shape,r.dtype);return n.makeTensorInfo(o,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,_b):a=new Ba(r.shape,_b),n.runWebGLProgram(a,[r],r.dtype)}var PH={kernelName:Io,backendName:"webgl",kernelFunc:zH},LH=Pr.nonMaxSuppressionV3Impl;function WH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=r,u=n.readSync(a.dataId),c=n.readSync(s.dataId),{selectedIndices:h}=LH(u,c,i,o,l);return n.makeTensorInfo([h.length],"int32",new Int32Array(h))}var BH={kernelName:To,backendName:"webgl",kernelFunc:WH},VH=Pr.nonMaxSuppressionV4Impl;function UH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),{selectedIndices:d,validOutputs:p}=VH(c,h,i,o,l,u);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([p]))]}var HH={kernelName:Co,backendName:"webgl",kernelFunc:UH},jH=Pr.nonMaxSuppressionV5Impl;function GH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),d=i,p=o,f=l,m=u,{selectedIndices:A,selectedScores:y}=jH(c,h,d,p,f,m);return[n.makeTensorInfo([A.length],"int32",new Int32Array(A)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var qH={kernelName:Eo,backendName:"webgl",kernelFunc:GH},XH=class{constructor(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` void main() { ivec2 coords = getOutputCoords(); int index = round(getIndices(coords.x)); setOutput(mix(float(${r}), float(${n}), float(index == coords.y))); } - `}},XH=e=>{let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=v.sizeFromShape(a.shape),u=new qH(l,s,i,o),c=Ae({inputs:{x:a},backend:n,attrs:{shape:[l]}}),h=n.runWebGLProgram(u,[c],a.dtype);n.disposeIntermediateTensorInfo(c);let d=[...a.shape,s],p=Ae({inputs:{x:h},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(h),p},KH={kernelName:$s,backendName:"webgl",kernelFunc:XH};function gp(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=gp({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:r.dtype==="string"?"":0},backend:n})}var ZH={kernelName:Xo,backendName:"webgl",kernelFunc:gp};function _b(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=_b({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:n})}var YH={kernelName:Ro,backendName:"webgl",kernelFunc:_b};function JH(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return aA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=aA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=eb({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var QH={kernelName:Fo,backendName:"webgl",kernelFunc:JH},ej=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,u)=>l[0]+e[u]+l[1]);let r=e.length,a=ut(r),s=t.map(l=>l[0]).join(","),i=t.map((l,u)=>l[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);if(r===1){this.userCode=` + `}},KH=e=>{let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=v.sizeFromShape(a.shape),u=new XH(l,s,i,o),c=Ae({inputs:{x:a},backend:n,attrs:{shape:[l]}}),h=n.runWebGLProgram(u,[c],a.dtype);n.disposeIntermediateTensorInfo(c);let d=[...a.shape,s],p=Ae({inputs:{x:h},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(h),p},ZH={kernelName:$s,backendName:"webgl",kernelFunc:KH};function gp(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=gp({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:r.dtype==="string"?"":0},backend:n})}var YH={kernelName:Xo,backendName:"webgl",kernelFunc:gp};function bb(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=bb({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:n})}var JH={kernelName:Ro,backendName:"webgl",kernelFunc:bb};function QH(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return aA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=aA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=tb({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var ej={kernelName:Fo,backendName:"webgl",kernelFunc:QH},tj=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,u)=>l[0]+e[u]+l[1]);let r=e.length,a=ut(r),s=t.map(l=>l[0]).join(","),i=t.map((l,u)=>l[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);if(r===1){this.userCode=` int start = ${s}; int end = ${i}; uniform float value; @@ -3421,7 +3421,7 @@ return a / b;`,EH=` setOutput(getX(${o})); } } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},tj=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((f,m)=>f[0]+e[m]+f[1]);let r=e.length,a=ut(r),s=t.map(f=>f[0]).join(","),i=t.map((f,m)=>f[0]+e[m]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=[`${a} rc = outputLoc;`,`${o[r-1]} += 1; + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},nj=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((f,m)=>f[0]+e[m]+f[1]);let r=e.length,a=ut(r),s=t.map(f=>f[0]).join(","),i=t.map((f,m)=>f[0]+e[m]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=[`${a} rc = outputLoc;`,`${o[r-1]} += 1; if(${u}) { `,r===1?"":`} rc = outputLoc; @@ -3446,7 +3446,7 @@ return a / b;`,EH=` ${p} setOutput(result); } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},bb=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r,o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new tj(a.shape,s,i):new ej(a.shape,s,i),l=o.getCustomSetupFunc(i);return n.runWebGLProgram(o,[a],a.dtype,l)},nj={kernelName:Ds,backendName:"webgl",kernelFunc:bb},rj=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},vb=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r,o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new nj(a.shape,s,i):new tj(a.shape,s,i),l=o.getCustomSetupFunc(i);return n.runWebGLProgram(o,[a],a.dtype,l)},rj={kernelName:Ds,backendName:"webgl",kernelFunc:vb},aj=` if(a < 0.0 && floor(b) < b){ return NAN; } @@ -3455,7 +3455,7 @@ return a / b;`,EH=` } return (round(mod(b, 2.0)) != 1) ? pow(abs(a), b) : sign(a) * pow(abs(a), b); -`,aj=` +`,sj=` // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); @@ -3471,9 +3471,9 @@ return a / b;`,EH=` vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); `+hp+` return result; -`,sj=nn({opSnippet:rj,packedOpSnippet:aj}),ij={kernelName:Os,backendName:"webgl",kernelFunc:sj};function oj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=[],u=v.parseAxisParam(s,a.shape),c=u,h=R.getAxesPermutation(c,o),d=a;h!=null&&(d=In({inputs:{x:a},backend:n,attrs:{perm:h}}),c=R.getInnerMostAxes(c.length,o),l.push(d)),R.assertAxesAreInnerMostDims("prod",c,o);let p;if(n.shouldExecuteOnCPU([d])){let f=n.texData.get(d.dataId).values,{outVals:m,outShape:A,outDtype:y}=TP(d.shape,d.dtype,f,c);p=n.makeTensorInfo(A,y,m)}else{let[f,m]=R.computeOutAndReduceShapes(d.shape,c),A=v.sizeFromShape(m),y=Ae({inputs:{x:d},backend:n,attrs:{shape:[-1,A]}}),g=sd(a.dtype),_=bi(y,g,"prod",n);p=Ae({inputs:{x:_},backend:n,attrs:{shape:f}}),l.push(y),l.push(_)}if(i){l.push(p);let f=R.expandShapeToKeepDim(p.shape,u);p=Ae({inputs:{x:p},backend:n,attrs:{shape:f}})}return l.forEach(f=>n.disposeIntermediateTensorInfo(f)),p}var lj={kernelName:Mo,backendName:"webgl",kernelFunc:oj},vb=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=CP(r,a,s,i);return t.makeTensorInfo([o.length],i,o)},uj={kernelName:wu,backendName:"webgl",kernelFunc:vb},cj="return 1.0 / x;",hj=Xe({opSnippet:cj}),dj={kernelName:$o,backendName:"webgl",kernelFunc:hj},pj=xr+` +`,ij=nn({opSnippet:aj,packedOpSnippet:sj}),oj={kernelName:Os,backendName:"webgl",kernelFunc:ij};function lj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=[],u=v.parseAxisParam(s,a.shape),c=u,h=R.getAxesPermutation(c,o),d=a;h!=null&&(d=In({inputs:{x:a},backend:n,attrs:{perm:h}}),c=R.getInnerMostAxes(c.length,o),l.push(d)),R.assertAxesAreInnerMostDims("prod",c,o);let p;if(n.shouldExecuteOnCPU([d])){let f=n.texData.get(d.dataId).values,{outVals:m,outShape:A,outDtype:y}=CP(d.shape,d.dtype,f,c);p=n.makeTensorInfo(A,y,m)}else{let[f,m]=R.computeOutAndReduceShapes(d.shape,c),A=v.sizeFromShape(m),y=Ae({inputs:{x:d},backend:n,attrs:{shape:[-1,A]}}),g=sd(a.dtype),_=bi(y,g,"prod",n);p=Ae({inputs:{x:_},backend:n,attrs:{shape:f}}),l.push(y),l.push(_)}if(i){l.push(p);let f=R.expandShapeToKeepDim(p.shape,u);p=Ae({inputs:{x:p},backend:n,attrs:{shape:f}})}return l.forEach(f=>n.disposeIntermediateTensorInfo(f)),p}var uj={kernelName:Mo,backendName:"webgl",kernelFunc:lj},kb=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=EP(r,a,s,i);return t.makeTensorInfo([o.length],i,o)},cj={kernelName:wu,backendName:"webgl",kernelFunc:kb},hj="return 1.0 / x;",dj=Xe({opSnippet:hj}),pj={kernelName:$o,backendName:"webgl",kernelFunc:dj},fj=xr+` return (x < 0.0) ? 0.0 : x; -`,fj=` +`,mj=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3483,9 +3483,9 @@ return a / b;`,EH=` result.a = isNaN.a ? x.a : result.a; return result; -`,mj=Xe({opSnippet:pj,packedOpSnippet:fj}),Aj={kernelName:Ps,backendName:"webgl",kernelFunc:mj},yj=xr+` +`,Aj=Xe({opSnippet:fj,packedOpSnippet:mj}),yj={kernelName:Ps,backendName:"webgl",kernelFunc:Aj},gj=xr+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,gj=` +`,xj=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3495,7 +3495,7 @@ return a / b;`,EH=` result.a = isNaN.a ? x.a : result.a; return result; -`,xj=Xe({opSnippet:yj,packedOpSnippet:gj}),wj={kernelName:Ws,backendName:"webgl",kernelFunc:xj},_j=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":h="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` +`,wj=Xe({opSnippet:gj,packedOpSnippet:xj}),_j={kernelName:Ws,backendName:"webgl",kernelFunc:wj},bj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":h="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( ${u[0]/c[0]}, ${u[1]/c[1]}); @@ -3528,7 +3528,7 @@ return a / b;`,EH=` setOutput(newValue); } - `}},bj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":h="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}},vj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":h="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec3 effectiveInputOverOutputRatioRC = vec3( ${u[0]/c[0]}, ${u[1]/c[1]}, @@ -3605,7 +3605,7 @@ return a / b;`,EH=` setOutput(newValue); } - `}};function vj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=J().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new bj(a.shape,l,u,s,i):new _j(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],"float32")}var kj={kernelName:Ls,backendName:"webgl",kernelFunc:vj},Nj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` + `}};function kj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=J().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new vj(a.shape,l,u,s,i):new bj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],"float32")}var Nj={kernelName:Ls,backendName:"webgl",kernelFunc:kj},Ij=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3686,7 +3686,7 @@ return a / b;`,EH=` setOutput(accumulator); } - `}};function Ij(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Nj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Sj={kernelName:Zh,backendName:"webgl",kernelFunc:Ij},Tj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=r?"0.5":"0.0",d;a?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}};function Sj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Ij(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Tj={kernelName:Zh,backendName:"webgl",kernelFunc:Sj},Cj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=r?"0.5":"0.0",d;a?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( ${u[0]/c[0]}, ${u[1]/c[1]}); @@ -3708,7 +3708,7 @@ return a / b;`,EH=` setOutput(newValue); } - `}};function Cj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=new Tj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],a.dtype)}var Ej={kernelName:_u,backendName:"webgl",kernelFunc:Cj},Rj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` + `}};function Ej(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=new Cj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],a.dtype)}var Rj={kernelName:_u,backendName:"webgl",kernelFunc:Ej},Fj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3778,7 +3778,7 @@ return a / b;`,EH=` setOutput(accumulator); } - `}};function Fj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Rj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Mj={kernelName:Kh,backendName:"webgl",kernelFunc:Fj},$j=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` + `}};function Mj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Fj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var $j={kernelName:Kh,backendName:"webgl",kernelFunc:Mj},Dj=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` void main() { int coord = getOutputCoords(); setOutput(getX(${e[0]} - coord - 1)); @@ -3788,7 +3788,7 @@ return a / b;`,EH=` ${s} coords = getOutputCoords(); setOutput(getX(${a})); } - `}},Dj=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let r=mn("rc",n),a=`${r[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${r[n-2]} + 1 < ${this.outputShape[n-2]}`,i=ut(n);n===1?this.userCode=` + `}},Oj=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let r=mn("rc",n),a=`${r[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${r[n-2]} + 1 < ${this.outputShape[n-2]}`,i=ut(n);n===1?this.userCode=` void main(){ int rc = getOutputCoords(); vec4 result = vec4(0.); @@ -3816,7 +3816,7 @@ return a / b;`,EH=` } setOutput(result); } - `;function o(p){return h(p)}function l(p){return p[n-1]="("+p[n-1]+" + 1)",h(p)}function u(p){return p[n-2]="("+p[n-2]+" + 1)",h(p)}function c(p){return p[n-1]="("+p[n-1]+" + 1)",p[n-2]="("+p[n-2]+" + 1)",h(p)}function h(p){let f=e.map((y,g)=>d(g,p)),m=f.join(","),A=f.slice(-2).join(",");return`getChannel(getX(${m}), vec2(${A}))`}function d(p,f){return t.indexOf(p)!==-1&&e[p]!==1?`${e[p]} - ${f[p]} - 1`:`${f[p]}`}}};function Oj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return zn({inputs:{x:a},backend:n});let l=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Dj(a.shape,o):new $j(a.shape,o);return n.runWebGLProgram(l,[a],a.dtype)}var zj={kernelName:Bs,backendName:"webgl",kernelFunc:Oj},Pj=class{constructor(e,t){this.variableNames=["Image"],this.outputShape=[];let n=e[1],r=e[2];this.outputShape=e;let a="";typeof t=="number"?a=`float outputValue = ${t.toFixed(2)};`:a=` + `;function o(p){return h(p)}function l(p){return p[n-1]="("+p[n-1]+" + 1)",h(p)}function u(p){return p[n-2]="("+p[n-2]+" + 1)",h(p)}function c(p){return p[n-1]="("+p[n-1]+" + 1)",p[n-2]="("+p[n-2]+" + 1)",h(p)}function h(p){let f=e.map((y,g)=>d(g,p)),m=f.join(","),A=f.slice(-2).join(",");return`getChannel(getX(${m}), vec2(${A}))`}function d(p,f){return t.indexOf(p)!==-1&&e[p]!==1?`${e[p]} - ${f[p]} - 1`:`${f[p]}`}}};function zj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return zn({inputs:{x:a},backend:n});let l=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Oj(a.shape,o):new Dj(a.shape,o);return n.runWebGLProgram(l,[a],a.dtype)}var Pj={kernelName:Bs,backendName:"webgl",kernelFunc:zj},Lj=class{constructor(e,t){this.variableNames=["Image"],this.outputShape=[];let n=e[1],r=e[2];this.outputShape=e;let a="";typeof t=="number"?a=`float outputValue = ${t.toFixed(2)};`:a=` vec3 fill = vec3(${t.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` uniform vec4 params; @@ -3836,7 +3836,7 @@ return a / b;`,EH=` } setOutput(outputValue); } - `}getCustomSetupFunc(e,t,n,r){return(a,s)=>{this.paramsLoc==null&&(this.paramsLoc=a.getUniformLocationNoThrow(s,"params")),a.gl.uniform4f(this.paramsLoc,e,t,n,r)}}},Lj={kernelName:Ko,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=new Pj(r.shape,s),[u,c]=R.getImageCenter(i,r.shape[1],r.shape[2]),h=l.getCustomSetupFunc(u,c,Math.sin(a),Math.cos(a));return o.runWebGLProgram(l,[r],r.dtype,h)}},Wj=` + `}getCustomSetupFunc(e,t,n,r){return(a,s)=>{this.paramsLoc==null&&(this.paramsLoc=a.getUniformLocationNoThrow(s,"params")),a.gl.uniform4f(this.paramsLoc,e,t,n,r)}}},Wj={kernelName:Ko,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=new Lj(r.shape,s),[u,c]=R.getImageCenter(i,r.shape[1],r.shape[2]),h=l.getCustomSetupFunc(u,c,Math.sin(a),Math.cos(a));return o.runWebGLProgram(l,[r],r.dtype,h)}},Bj=` // OpenGL ES does not support round function. // The algorithm is based on banker's rounding. float base = floor(x); @@ -3851,7 +3851,7 @@ return a / b;`,EH=` return base + 1.0; } } -`,Bj=Xe({opSnippet:Wj}),Vj={kernelName:Vs,backendName:"webgl",kernelFunc:Bj},Uj="return inversesqrt(x);",Hj=Xe({opSnippet:Uj,cpuKernelImpl:EP}),jj={kernelName:Us,backendName:"webgl",kernelFunc:Hj},kb=class{constructor(e,t,n,r,a,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=ut(a.length),l=ut(s.length),u="";n===1?u="i":n===2&&(u="i, j");let c=`getIndices(${u})`,h="";r===1?h="i":r===2&&(h="i, coords[1]");let d=`getUpdates(${h})`,p=t>1?"strides[j]":"strides";this.userCode=` +`,Vj=Xe({opSnippet:Bj}),Uj={kernelName:Vs,backendName:"webgl",kernelFunc:Vj},Hj="return inversesqrt(x);",jj=Xe({opSnippet:Hj,cpuKernelImpl:RP}),Gj={kernelName:Us,backendName:"webgl",kernelFunc:jj},Nb=class{constructor(e,t,n,r,a,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=ut(a.length),l=ut(s.length),u="";n===1?u="i":n===2&&(u="i, j");let c=`getIndices(${u})`,h="";r===1?h="i":r===2&&(h="i, coords[1]");let d=`getUpdates(${h})`,p=t>1?"strides[j]":"strides";this.userCode=` ${o} strides = ${o}(${a}); void main() { @@ -3871,7 +3871,7 @@ return a / b;`,EH=` } setOutput(mix(getDefaultValue(), sum, float(found))); } - `}};function Gj(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a,updates:s}=t,{shape:i}=r,{sliceRank:o,numUpdates:l,sliceSize:u,strides:c,outputSize:h}=R.calculateShapes(s,a,i),d=[h/u,u];if(h===0)return n.makeTensorInfo(i,a.dtype);let p=Ae({inputs:{x:a},backend:n,attrs:{shape:[l,o]}}),f=Ae({inputs:{x:s},backend:n,attrs:{shape:[l,u]}}),m=n.makeTensorInfo([],"float32",new Float32Array([0])),A=new kb(l,o,p.shape.length,f.shape.length,c,d),y=n.runWebGLProgram(A,[f,p,m],f.dtype),g=Ae({inputs:{x:y},backend:n,attrs:{shape:i}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(m),g}var qj={kernelName:Oo,backendName:"webgl",kernelFunc:Gj},Xj=class{constructor(e,t,n){this.variableNames=["c","a","b"],this.outputShape=t;let r,a;if(n>4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)a="resRC",r="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let u=0;u4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)a="resRC",r="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let u=0;u= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`,Jj=Xe({opSnippet:Yj}),Qj={kernelName:Po,backendName:"webgl",kernelFunc:Jj},eG="return 1.0 / (1.0 + exp(-1.0 * x));",tG=Xe({opSnippet:eG}),nG={kernelName:js,backendName:"webgl",kernelFunc:tG},rG=` +`,Qj=Xe({opSnippet:Jj}),eG={kernelName:Po,backendName:"webgl",kernelFunc:Qj},tG="return 1.0 / (1.0 + exp(-1.0 * x));",nG=Xe({opSnippet:tG}),rG={kernelName:js,backendName:"webgl",kernelFunc:nG},aG=` if (isnan(x)) { return 0.0; } return sign(x); -`,aG=Xe({opSnippet:rG}),sG={kernelName:Bo,backendName:"webgl",kernelFunc:aG},iG=z_+` +`,sG=Xe({opSnippet:aG}),iG={kernelName:Bo,backendName:"webgl",kernelFunc:sG},oG=P_+` return sin(x); -`,oG=Xe({opSnippet:iG}),lG={kernelName:Hs,backendName:"webgl",kernelFunc:oG},uG=` +`,lG=Xe({opSnippet:oG}),uG={kernelName:Hs,backendName:"webgl",kernelFunc:lG},cG=` float e2x = exp(x); return (e2x - 1.0 / e2x) / 2.0; -`,cG=Xe({opSnippet:uG}),hG={kernelName:Wo,backendName:"webgl",kernelFunc:cG},dG=` +`,hG=Xe({opSnippet:cG}),dG={kernelName:Wo,backendName:"webgl",kernelFunc:hG},pG=` float epsilon = 1.1920928955078125e-7; float threshold = log(epsilon) + 2.0; @@ -3915,9 +3915,9 @@ return a / b;`,EH=` result = log(exp_x + 1.0); } return result; -`,pG=Xe({opSnippet:dG}),fG={kernelName:Vo,backendName:"webgl",kernelFunc:pG},mG=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,paddings:i}=r;v.assert(a.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,g)=>y*g),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),A},AG={kernelName:bu,backendName:"webgl",kernelFunc:mG};function yG(e){let{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:s,defaultValue:i}=t,{outputShape:o}=r,{sliceRank:l,numUpdates:u,strides:c,outputSize:h}=R.calculateShapes(s,a,o),d=!1,p=new kb(u,l,a.shape.length,s.shape.length,c,[h,1],d),f=n.runWebGLProgram(p,[s,a,i],s.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(f),m}var gG={kernelName:Yh,backendName:"webgl",kernelFunc:yG};function xG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:s,axis:i}=r,o=v.parseAxisParam(i,a.shape)[0],l=R.prepareSplitSize(a,s,o),u=a.shape.length,c=new Array(u).fill(0),h=a.shape.slice();return l.map(d=>{let p=[...h];p[o]=d;let f=dc({inputs:{x:a},backend:n,attrs:{begin:c,size:p}});return c[o]+=d,f})}var wG={kernelName:Uo,backendName:"webgl",kernelFunc:xG},_G="return sqrt(x);",bG=Xe({opSnippet:_G}),vG={kernelName:Gs,backendName:"webgl",kernelFunc:bG},kG="return x * x;",NG=Xe({opSnippet:kG}),IG={kernelName:vu,backendName:"webgl",kernelFunc:NG},Nb="return (a - b) * (a - b);",SG=nn({opSnippet:Nb,packedOpSnippet:Nb}),TG={kernelName:Ks,backendName:"webgl",kernelFunc:SG};function CG({inputs:e,attrs:t,backend:n}){let{x:r}=e,a=xr+` +`,fG=Xe({opSnippet:pG}),mG={kernelName:Vo,backendName:"webgl",kernelFunc:fG},AG=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,paddings:i}=r;v.assert(a.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,g)=>y*g),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),A},yG={kernelName:bu,backendName:"webgl",kernelFunc:AG};function gG(e){let{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:s,defaultValue:i}=t,{outputShape:o}=r,{sliceRank:l,numUpdates:u,strides:c,outputSize:h}=R.calculateShapes(s,a,o),d=!1,p=new Nb(u,l,a.shape.length,s.shape.length,c,[h,1],d),f=n.runWebGLProgram(p,[s,a,i],s.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(f),m}var xG={kernelName:Yh,backendName:"webgl",kernelFunc:gG};function wG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:s,axis:i}=r,o=v.parseAxisParam(i,a.shape)[0],l=R.prepareSplitSize(a,s,o),u=a.shape.length,c=new Array(u).fill(0),h=a.shape.slice();return l.map(d=>{let p=[...h];p[o]=d;let f=dc({inputs:{x:a},backend:n,attrs:{begin:c,size:p}});return c[o]+=d,f})}var _G={kernelName:Uo,backendName:"webgl",kernelFunc:wG},bG="return sqrt(x);",vG=Xe({opSnippet:bG}),kG={kernelName:Gs,backendName:"webgl",kernelFunc:vG},NG="return x * x;",IG=Xe({opSnippet:NG}),SG={kernelName:vu,backendName:"webgl",kernelFunc:IG},Ib="return (a - b) * (a - b);",TG=nn({opSnippet:Ib,packedOpSnippet:Ib}),CG={kernelName:Ks,backendName:"webgl",kernelFunc:TG};function EG({inputs:e,attrs:t,backend:n}){let{x:r}=e,a=xr+` return x > 0.0 ? 1.0 : float(${t.alpha}); - `,s=new Ba(r.shape,a);return n.runWebGLProgram(s,[r],r.dtype)}var EG={kernelName:Ta,backendName:"webgl",kernelFunc:CG},RG=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let r=n.length,a=ut(n.length),s=ut(n.length),i="";if(r===1)i="coords * strides + begin";else{let o=0;i=n.map((l,u)=>(o++,n.length===1?`coords * strides[${u}] + begin[${u}]`:`coords[${o-1}] * strides[${u}] + begin[${u}]`)).join(",")}this.userCode=` + `,s=new Ba(r.shape,a);return n.runWebGLProgram(s,[r],r.dtype)}var RG={kernelName:Ta,backendName:"webgl",kernelFunc:EG},FG=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let r=n.length,a=ut(n.length),s=ut(n.length),i="";if(r===1)i="coords * strides + begin";else{let o=0;i=n.map((l,u)=>(o++,n.length===1?`coords * strides[${u}] + begin[${u}]`:`coords[${o-1}] * strides[${u}] + begin[${u}]`)).join(",")}this.userCode=` ${a} begin = ${a}(${e}); ${a} strides = ${a}(${t}); @@ -3925,15 +3925,15 @@ return a / b;`,EH=` ${s} coords = getOutputCoords(); setOutput(getX(${i})); } - `}};function FG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=Ae({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=dc({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=Ae({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else if(n.shouldExecuteOnCPU([_])){let x=n.texData.get(_.dataId).values,I=We(_.shape,_.dtype,x),S=FP(g,I,m,f);b=n.makeTensorInfo(g,_.dtype,S.values)}else{let x=new RG(f,m,g);b=n.runWebGLProgram(x,[_],_.dtype)}let w=Ae({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var MG={kernelName:Ho,backendName:"webgl",kernelFunc:FG},$G="return tan(x);",DG=Xe({opSnippet:$G}),OG={kernelName:jo,backendName:"webgl",kernelFunc:DG},zG=` + `}};function MG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=Ae({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=dc({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=Ae({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else if(n.shouldExecuteOnCPU([_])){let x=n.texData.get(_.dataId).values,I=We(_.shape,_.dtype,x),S=MP(g,I,m,f);b=n.makeTensorInfo(g,_.dtype,S.values)}else{let x=new FG(f,m,g);b=n.runWebGLProgram(x,[_],_.dtype)}let w=Ae({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var $G={kernelName:Ho,backendName:"webgl",kernelFunc:MG},DG="return tan(x);",OG=Xe({opSnippet:DG}),zG={kernelName:jo,backendName:"webgl",kernelFunc:OG},PG=` float e2x = exp(-2.0 * abs(x)); return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`,PG=Xe({opSnippet:zG}),LG={kernelName:Ys,backendName:"webgl",kernelFunc:PG},BG=class{constructor(e,t){this.variableNames=["A"];let n=new Array(e.length);for(let s=0;s5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[];for(let a=0;av.decodeString(c)),l=We(a.shape,a.dtype,o),u=$P(l,s);return n.makeTensorInfo(u.shape,u.dtype,u.values)}let i=new BG(a.shape,s);return n.runWebGLProgram(i,[a],a.dtype)}var VG={kernelName:Sa,backendName:"webgl",kernelFunc:Ib};function UG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r,o=n.readSync(a.dataId),[l,u]=DP(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var HG={kernelName:Go,backendName:"webgl",kernelFunc:UG},jG=class{constructor(e,t,n,r,a,s){this.variableNames=["Image","Transforms"],this.outputShape=s;let i=n==="nearest"?1:2,o;switch(r){case"constant":o=1;break;case"reflect":o=2;break;case"wrap":o=3;break;case"nearest":o=4;break;default:o=1;break}this.userCode=` + `}};function BG(e){let t=e.length;if(t>5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[];for(let a=0;av.decodeString(c)),l=We(a.shape,a.dtype,o),u=DP(l,s);return n.makeTensorInfo(u.shape,u.dtype,u.values)}let i=new VG(a.shape,s);return n.runWebGLProgram(i,[a],a.dtype)}var UG={kernelName:Sa,backendName:"webgl",kernelFunc:Sb};function HG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r,o=n.readSync(a.dataId),[l,u]=OP(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var jG={kernelName:Go,backendName:"webgl",kernelFunc:HG},GG=class{constructor(e,t,n,r,a,s){this.variableNames=["Image","Transforms"],this.outputShape=s;let i=n==="nearest"?1:2,o;switch(r){case"constant":o=1;break;case"reflect":o=2;break;case"wrap":o=3;break;case"nearest":o=4;break;default:o=1;break}this.userCode=` float mapCoord(float outCoord, float len) { float inCoord = outCoord; if(${o} == 2) { @@ -4045,7 +4045,7 @@ return a / b;`,EH=` } setOutput(outputValue); } - `}};function GG(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=r,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=new jG(h,d,i,o,l,A);return n.runWebGLProgram(y,[a,s],"float32")}var qG={kernelName:Jh,backendName:"webgl",kernelFunc:GG};function XG(e){let{inputs:t,attrs:n,backend:r}=e,{axis:a}=n,{x:s}=t;vl(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=r.readSync(s.dataId),{outputValues:o,outputShape:l,indices:u}=OP(i,a,s.shape,s.dtype);return[r.makeTensorInfo(l,s.dtype,o),r.makeTensorInfo([u.length],"int32",u)]}var KG={kernelName:Qh,backendName:"webgl",kernelFunc:XG};function ZG(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a,o=i.shape.length,l=a.shape[s],u=new Array(o-1),c=0;for(let m=0;mn.disposeIntermediateTensorInfo(m)),f}var YG={kernelName:qo,backendName:"webgl",kernelFunc:ZG},JG=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,r=e.batchSize,a=e.inSize,s=e.numSegments,i=s*Math.ceil(a/n);this.outputShape=[r,i];let o="0.0",l="sumValue",u=Math.floor(n/4)*4,c=n%4,h=` + `}};function qG(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=r,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=new GG(h,d,i,o,l,A);return n.runWebGLProgram(y,[a,s],"float32")}var XG={kernelName:Jh,backendName:"webgl",kernelFunc:qG};function KG(e){let{inputs:t,attrs:n,backend:r}=e,{axis:a}=n,{x:s}=t;vl(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=r.readSync(s.dataId),{outputValues:o,outputShape:l,indices:u}=zP(i,a,s.shape,s.dtype);return[r.makeTensorInfo(l,s.dtype,o),r.makeTensorInfo([u.length],"int32",u)]}var ZG={kernelName:Qh,backendName:"webgl",kernelFunc:KG};function YG(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a,o=i.shape.length,l=a.shape[s],u=new Array(o-1),c=0;for(let m=0;mn.disposeIntermediateTensorInfo(m)),f}var JG={kernelName:qo,backendName:"webgl",kernelFunc:YG},QG=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,r=e.batchSize,a=e.inSize,s=e.numSegments,i=s*Math.ceil(a/n);this.outputShape=[r,i];let o="0.0",l="sumValue",u=Math.floor(n/4)*4,c=n%4,h=` sumValue += dot(values, segFilter); `,d="";a%n>0&&(d=` if (inIdx < 0 || inIdx >= ${a}) { @@ -4151,26 +4151,26 @@ return a / b;`,EH=` } setOutput(${l}); } - `}};function QG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:s}=t,{numSegments:i}=r,o=a.shape.length,l=[],u=0,c=R.getAxesPermutation([u],o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),l.push(h),u=R.getInnerMostAxes(1,o)[0]);let d=R.segment_util.computeOutShape(h.shape,u,i),p=v.sizeFromShape([h.shape[u]]),f=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,p]}});l.push(f);let m=sd(a.dtype),A=(b,w,x,I,S)=>{let T=b.shape[0],M=b.shape[1],D=R.segment_util.segOpComputeOptimalWindowSize(M,S),z={windowSize:D,inSize:M,batchSize:T,numSegments:S},W=new JG(z,w),U=n.compileAndRun(W,[b,x],I);if(l.push(U),U.shape[1]===S)return U;let H=vb({backend:n,attrs:{start:0,stop:S,step:1,dtype:"float32"}}),X=Ib({inputs:{x:H},backend:n,attrs:{reps:[M/D]}});return l.push(H),l.push(X),A(U,w,X,I,S)},y=A(f,"unsortedSegmentSum",s,m,i),g=Ae({inputs:{x:y},backend:n,attrs:{shape:d}}),_=g;if(c!=null){l.push(g);let b=R.getUndoAxesPermutation(c);_=In({inputs:{x:_},backend:n,attrs:{perm:b}})}return l.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var eq={kernelName:ku,backendName:"webgl",kernelFunc:QG},tq=[HU,qU,FL,$L,zL,WL,VL,jL,qL,KL,QL,tW,aW,oW,fW,cW,yW,_W,xW,NW,SW,CW,MW,WW,VW,XW,ZW,eB,rB,pL,oB,yB,xB,hB,vB,NB,_B,TB,RB,$B,OB,PB,BB,qB,KB,UB,JB,tV,sV,uV,pV,AV,yV,gV,wV,bV,kV,IV,TV,FV,OV,PV,WV,UV,qV,YV,tU,dL,rU,iB,iU,uU,dU,mL,AU,wU,bU,CU,IU,MU,OU,WU,KU,rH,tH,oH,uH,hH,QU,pH,mH,xH,vH,SH,DH,wL,zH,WH,UH,GH,HW,KH,YH,QH,nj,ij,yL,lj,uj,jW,RH,dj,wj,Aj,bL,kj,Sj,Ej,Mj,zj,Lj,Vj,jj,qj,Zj,Qj,nG,sG,lG,hG,PW,MH,fG,AG,gG,wG,vG,IG,TG,EG,MG,FH,CL,OG,LG,VG,HG,qG,EL,KG,YG,eq,ZH];for(let e of tq)ni(e);var Pn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Pn||(Pn={}));var fc;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(fc||(fc={}));var Sb;function nq(e){Sb=e.wasm.cwrap(Qs,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function rq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r,d=n.dataIdMap.get(a.dataId).id,p=n.dataIdMap.get(s.dataId).id,f=0;if(i!=null){let S=n.dataIdMap.get(i.dataId);if(S.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${S.shape.length}.`);f=S.id}let m=o==null?0:n.dataIdMap.get(o.dataId).id,A=fc[c];if(A==null)throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?a.shape[2]:a.shape[1],g=u?s.shape[1]:s.shape[2],_=a.shape[0],b=n.makeOutput([_,y,g],a.dtype),w=n.dataIdMap.get(b.dataId).id,x=new Uint8Array(new Int32Array(a.shape).buffer),I=new Uint8Array(new Int32Array(s.shape).buffer);return Sb(d,x,a.shape.length,p,I,s.shape.length,l,u,A,f,m,h||0,w),b}var aq={kernelName:Qs,backendName:"wasm",setupFunc:nq,kernelFunc:rq};function Sn(e){let t;function n(a){t=a.wasm.cwrap(e,null,["number","number"])}function r(a){let{backend:s,inputs:{x:i}}=a,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),u=s.dataIdMap.get(l.dataId).id;return v.sizeFromShape(l.shape)===0||t(o,u),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:r}}var sq=Sn(Zi);function An(e,t,n){let r;function a(i){r=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:u,b:c}=l,h=o.dataIdMap.get(u.dataId).id,d=o.dataIdMap.get(c.dataId).id,p=n!=null?n:u.dtype,f=R.assertAndGetBroadcastShape(u.shape,c.shape),m=o.makeOutput(f,p);if(v.sizeFromShape(f)===0)return m;let A=new Uint8Array(new Int32Array(u.shape).buffer),y=new Uint8Array(new Int32Array(c.shape).buffer),g=o.dataIdMap.get(m.dataId).id,_=()=>r(h,A,u.shape.length,d,y,c.shape.length,Pn[u.dtype],g);if(t&&u.dtype==="float32")return _(),m;let b=R.getBroadcastDims(u.shape,f),w=R.getBroadcastDims(c.shape,f),x=b.every((S,T)=>S===T),I=w.every((S,T)=>S===T);if(x&&I)return _(),m;throw new Error(`Broadcasting along outer dims is not yet supported for ${u.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:a,kernelFunc:s}}var iq=!0,oq=An(Na,iq),Tb;function lq(e){Tb=e.wasm.cwrap(os,null,["array","number","number","number"])}function uq(e){let{inputs:t,backend:n}=e,r=n.makeOutput(t[0].shape,t[0].dtype);if(v.sizeFromShape(r.shape)===0)return r;let a=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(a).buffer),i=n.dataIdMap.get(r.dataId).id;return Tb(s,a.length,Pn[r.dtype],i),r}var cq={kernelName:os,backendName:"wasm",setupFunc:lq,kernelFunc:uq};function xp(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype),a=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(r).set(a),r}var hq={kernelName:ks,backendName:"wasm",kernelFunc:xp},Cb;function dq(e){Cb=e.wasm.cwrap(Js,null,["number","array","number","number","number","array","number"])}function wp(e){let{inputs:t,backend:n,attrs:r}=e,[a,s]=fq(t.x.shape,r.perm),i=!0;for(let f=0;f=a&&(s===-1||r[s]>r[i])&&(s=i);r[s]=a}return[n,r]}var mq={kernelName:Js,backendName:"wasm",kernelFunc:wp,setupFunc:dq};function $l(e,t,n){let r=e.shape,a=e.shape.length,s=v.parseAxisParam(t,r),i=s,o=R.getAxesPermutation(i,a),l=null,u=!1;if(o!=null){let c=new Array(a);for(let d=0;d`new shape: ${i}, old shape: ${r.shape}. New shape and old shape must have the same number of elements.`),e.backend.incRef(r.dataId),{dataId:r.dataId,shape:i,dtype:r.dtype}}var bq={kernelName:Do,backendName:"wasm",kernelFunc:wr},Fb;function vq(e){Fb=e.wasm.cwrap(cs,null,["number","array","number","number","array","number","number","number","number"])}function kq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=wr({inputs:{x:a},backend:n,attrs:{shape:b}}),I=wr({inputs:{x:s},backend:n,attrs:{shape:w}}),S=n.dataIdMap.get(x.dataId).id,T=n.dataIdMap.get(I.dataId).id,M=i?x.shape[2]:x.shape[1],D=o?I.shape[1]:I.shape[2],z=Math.max(A,y),W=n.makeOutput([z,M,D],x.dtype),U=n.dataIdMap.get(W.dataId).id,H=new Uint8Array(new Int32Array(x.shape).buffer),X=new Uint8Array(new Int32Array(I.shape).buffer);return Fb(S,H,x.shape.length,T,X,I.shape.length,i,o,U),n.disposeData(x.dataId),n.disposeData(I.dataId),W.shape=_,W}var Nq={kernelName:cs,backendName:"wasm",setupFunc:vq,kernelFunc:kq};function _p(e){let{inputs:{x:t},attrs:{dtype:n},backend:r}=e,a=r.makeOutput(t.shape,n),s=r.typedArrayFromHeap(t);return r.typedArrayFromHeap(a).set(s),a}var Iq={kernelName:hs,backendName:"wasm",kernelFunc:_p},Sq=Sn(ds),Mb;function Tq(e){Mb=e.wasm.cwrap(Ia,null,["number","number","number","number"])}function Cq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o=n.dataIdMap.get(a.dataId).id,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(l.dataId).id;return Mb(o,s,i,u),l}var Eq={kernelName:Ia,backendName:"wasm",setupFunc:Tq,kernelFunc:Cq};function $b(e){let{inputs:t,backend:n}=e,r=v.parseAxisParam(e.attrs.axis,t[0].shape)[0],a=R.computeOutShape(t.map(p=>p.shape),r),s=t.filter(p=>v.sizeFromShape(p.shape)>0);if(s.length===1)return xp({inputs:{x:s[0]},backend:n});let i=n.makeOutput(a,t[0].dtype);if(v.sizeFromShape(a)===0)return i;let o=s.map(p=>p.shape);if(R.assertParamsConsistent(o,r),s[0].dtype==="string"){let p=s.map(_=>{let b=v.sizeFromShape(_.shape.slice(r));return wr({inputs:{x:_},backend:n,attrs:{shape:[-1,b]}})}),f=p.map(_=>({vals:n.readSync(_.dataId),shape:_.shape}));a=R.computeOutShape(p.map(_=>_.shape),1);let m=p[0].shape[0]===1,A=Sm(f,a,t[0].dtype,m),y=R.computeOutShape(s.map(_=>_.shape),r);i.shape=y;let g=n.dataIdMap.get(i.dataId);return g.stringBytes=R.fromStringArrayToUint8(A),p.forEach(_=>n.disposeData(_.dataId)),i}let l=v.sizeFromShape(s[0].shape.slice(0,r)),u=0,c=s.map(p=>{let f=v.sizeFromShape(p.shape.slice(r));return u+=f,f}),h=s.map(p=>n.typedArrayFromHeap(p)),d=n.typedArrayFromHeap(i);for(let p=0;p`cumsum does not support ${a.dtype} tensors in the WASM backend`);let u=R.getAxesPermutation([s],l),c=a;u!==null&&(c=wp({inputs:{x:a},attrs:{perm:u},backend:n}));let h=R.getInnerMostAxes(1,l)[0];R.assertAxesAreInnerMostDims("cumsum",[h],l);let d=n.makeOutput(c.shape,c.dtype),p=c.shape[h],f=n.dataIdMap.get(c.dataId).id,m=n.dataIdMap.get(d.dataId).id;Pb(f,i?1:0,o?1:0,p,m,Pn[a.dtype]);let A=d;if(u!==null){let y=R.getUndoAxesPermutation(u);A=wp({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(c.dataId),n.disposeData(d.dataId)}return A}var Hq={kernelName:As,backendName:"wasm",setupFunc:Vq,kernelFunc:Uq},Lb;function jq(e){Lb=e.wasm.cwrap(oo,null,["number","number","number","array","number","array","array","number","number"])}function Gq(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=t.makeOutput(f,"float32"),A=t.dataIdMap.get(a.dataId).id,y=new Uint8Array(new Int32Array(v.computeStrides(a.shape)).buffer),g=new Uint8Array(new Int32Array(f).buffer),_=new Uint8Array(new Int32Array(v.computeStrides(f)).buffer),b=t.dataIdMap.get(m.dataId).id;return Lb(A,s,i==="NHWC"?1:0,y,a.shape.length-1,g,_,f.length,b),m}var qq={kernelName:oo,backendName:"wasm",setupFunc:jq,kernelFunc:Gq},Wb;function Xq(e){Wb=e.wasm.cwrap(ys,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Kq(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s}=t,i=r.dataIdMap.get(a.dataId).id,o=r.dataIdMap.get(s.dataId).id,{strides:l,dilations:u,pad:c,dimRoundingMode:h}=n,d=u==null?[1,1]:u,p=R.computeConv2DInfo(a.shape,s.shape,l,d,c,h,!0),f=p.filterHeight,m=p.filterWidth,A=p.padInfo.top,y=p.padInfo.right,g=p.padInfo.bottom,_=p.padInfo.left,b=p.dilationHeight,w=p.dilationWidth,x=p.strideHeight,I=p.strideWidth,S=p.inChannels,T=p.outChannels,M=p.padInfo.type==="SAME"?1:0;if(p.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${p.dataFormat}'. Please use 'channelsLast'.`);let D=r.makeOutput(p.outShape,"float32"),z=r.dataIdMap.get(D.dataId).id;return Wb(i,a.shape[0],a.shape[1],a.shape[2],o,f,m,A,y,g,_,M,b,w,x,I,S,T,z),D}var Zq={kernelName:ys,backendName:"wasm",setupFunc:Xq,kernelFunc:Kq},Yq=!1,Jq=An(co,Yq,"bool"),Qq=Sn(xs);function oA(e){let{inputs:t,attrs:n,backend:r}=e,{input:a}=t,{dim:s}=n,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),wr({inputs:{x:a},backend:r,attrs:{shape:o}})}var eX={kernelName:ho,backendName:"wasm",kernelFunc:oA};function tX(e){let{attrs:{shape:t,value:n,dtype:r},backend:a}=e,s=a.makeOutput(t,r);return a.typedArrayFromHeap(s).fill(n),s}var nX={kernelName:fu,backendName:"wasm",kernelFunc:tX},Bb;function rX(e){Bb=e.wasm.cwrap(fo,null,["number","number","number","number","number","number"])}function aX(e){let{inputs:t,backend:n}=e,{image:r}=t,a=n.makeOutput(r.shape,r.dtype),s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,[o,l,u,c]=r.shape;return Bb(s,o,l,u,c,i),a}var sX={kernelName:fo,backendName:"wasm",kernelFunc:aX,setupFunc:rX},iX=Sn(ws),oX=!1,lX=An(_s,oX),Vb;function uX(e){Vb=e.wasm.cwrap(bs,null,["number","number","number","number","number","number","number"])}function cX(e){let{backend:t,inputs:n,attrs:r}=e,{varianceEpsilon:a}=r,{x:s,mean:i,variance:o,offset:l,scale:u}=n,c=t.dataIdMap.get(s.dataId).id,h=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,p=l!=null?t.dataIdMap.get(l.dataId).id:0,f=u!=null?t.dataIdMap.get(u.dataId).id:0,m=t.makeOutput(s.shape,s.dtype);if(v.sizeFromShape(s.shape)===0)return m;let A=t.dataIdMap.get(m.dataId).id;return Vb(c,h,d,p,f,a,A),m}var hX={kernelName:bs,backendName:"wasm",setupFunc:uX,kernelFunc:cX},Ub;function dX(e){Ub=e.wasm.cwrap(ei,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function pX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return Ub(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var fX={kernelName:ei,backendName:"wasm",setupFunc:dX,kernelFunc:pX},Hb;function mX(e){Hb=e.wasm.cwrap(ti,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function AX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d,!0),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedDepthwiseConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return Hb(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var yX={kernelName:ti,backendName:"wasm",setupFunc:mX,kernelFunc:AX},jb;function gX(e){jb=e.wasm.cwrap(Ao,null,["number","number","number","number","number","number","array","number"])}function xX(e){let{backend:t,inputs:n}=e,{params:r,indices:a}=n,[s,i,o,l]=If.prepareAndValidate(r,a),u=t.makeOutput(s,r.dtype);if(i===0)return u;let c=a.shape,h=c[c.length-1],d=t.dataIdMap.get(r.dataId).id,p=t.dataIdMap.get(a.dataId).id,f=new Uint8Array(new Int32Array(l).buffer),m=t.dataIdMap.get(u.dataId).id;return jb(d,Pn[r.dtype],p,i,h,o,f,m),u}var wX={kernelName:Ao,backendName:"wasm",setupFunc:gX,kernelFunc:xX},Gb;function _X(e){Gb=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function bX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a,indices:s}=n,{axis:i,batchDims:o}=r,l=v.parseAxisParam(i,a.shape)[0],u=R.segment_util.collectGatherOpShapeInfo(a,s,l,o),c=wr({inputs:{x:a},attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]},backend:t}),h=v.sizeFromShape(s.shape),d=wr({inputs:{x:s},attrs:{shape:[u.batchSize,h/u.batchSize]},backend:t}),p=[u.batchSize,u.outerSize,h/u.batchSize,u.sliceSize],f=t.makeOutput(p,a.dtype);if(v.sizeFromShape(a.shape)===0)return f;let m=c.shape.length-1,A=t.dataIdMap.get(c.dataId).id,y=t.dataIdMap.get(d.dataId).id,g=t.dataIdMap.get(f.dataId).id,_=new Uint8Array(new Int32Array(v.computeStrides(c.shape)).buffer),b=new Uint8Array(new Int32Array(v.computeStrides(p)).buffer);return Gb(A,Pn[a.dtype],_,m,y,u.batchSize,b,g),t.disposeData(c.dataId),t.disposeData(d.dataId),f.shape=u.outputShape,f}var vX={kernelName:mo,backendName:"wasm",setupFunc:_X,kernelFunc:bX},kX=!1,NX=An(yo,kX,"bool"),IX=!1,SX=An(vs,IX,"bool"),qb;function TX(e){qb=e.wasm.cwrap(Ns,null,["number","number","number"])}function CX(e){let{inputs:{x:t},attrs:{alpha:n},backend:r}=e,a=r.dataIdMap.get(t.dataId).id,s=r.makeOutput(t.shape,t.dtype);if(v.sizeFromShape(t.shape)!==0){let i=r.dataIdMap.get(s.dataId).id;qb(a,n,i)}return s}var EX={kernelName:Ns,backendName:"wasm",setupFunc:TX,kernelFunc:CX},RX=!1,FX=An(_o,RX,"bool"),MX=!1,$X=An(bo,MX,"bool"),DX=Sn(Is),OX=!1,zX=An(ko,OX,"bool"),Xb;function PX(e){Xb=e.wasm.cwrap(Ss,null,["number, number, number"])}function LX(e){let{backend:t,inputs:n,attrs:r}=e,{reductionIndices:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:u,axes:c,originalAxes:h,inputWasTransposed:d}=$l(i,a,t);if(d){let g=t.dataIdMap.get(u.dataId).id;l=u,o=g}let p=l.shape.length;R.assertAxesAreInnerMostDims("max",c,p);let[f,m]=R.computeOutAndReduceShapes(l.shape,c),A=v.sizeFromShape(m),y=t.makeOutput(f,i.dtype);if(v.sizeFromShape(l.shape)!==0){let g=t.dataIdMap.get(y.dataId).id;Xb(o,A,g)}if(d&&t.disposeData(u.dataId),s){let g=R.expandShapeToKeepDim(y.shape,h);y.shape=g}return y}var WX={kernelName:Ss,backendName:"wasm",setupFunc:PX,kernelFunc:LX},BX=!1,VX=An(Ts,BX),Kb;function UX(e){Kb=e.wasm.cwrap(Cs,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function HX(e){let{inputs:t,attrs:n,backend:r}=e,a=t.x,s=r.dataIdMap.get(a.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=n,c=R.computePool2DInfo(a.shape,i,o,1,l,u),h=c.filterHeight,d=c.filterWidth,p=c.padInfo.top,f=c.padInfo.right,m=c.padInfo.bottom,A=c.padInfo.left,y=c.dilationHeight,g=c.dilationWidth,_=c.strideHeight,b=c.strideWidth,w=c.inChannels,x=c.outChannels;if(c.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);let I=r.makeOutput(c.outShape,"float32"),S=r.dataIdMap.get(I.dataId).id;return Kb(s,a.shape[0],a.shape[1],a.shape[2],h,d,p,f,m,A,y,g,_,b,w,x,S),I}var jX={kernelName:Cs,backendName:"wasm",setupFunc:UX,kernelFunc:HX},Zb;function GX(e){Zb=e.wasm.cwrap(Es,null,["number, number, number"])}function qX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("mean",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=u;u.dtype!=="float32"&&(g=_p({backend:t,inputs:{x:u},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(g.dataId).id);let _=t.makeOutput(m,"float32");if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(_.dataId).id;Zb(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(_.shape,d);_.shape=b}return u.dtype!=="float32"&&t.disposeData(g.dataId),_}var XX={kernelName:Es,backendName:"wasm",setupFunc:GX,kernelFunc:qX},Yb;function KX(e){Yb=e.wasm.cwrap(Rs,null,["number, number, number"])}function ZX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t);if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_)}let f=u.shape.length;R.assertAxesAreInnerMostDims("min",h,f);let[m,A]=R.computeOutAndReduceShapes(u.shape,h),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;Yb(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var YX={kernelName:Rs,backendName:"wasm",setupFunc:KX,kernelFunc:ZX},JX=!1,QX=An(Fs,JX),eK=!0,tK=An(Ms,eK),nK=Sn(Io);function lA(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),r=n[0],a=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:r,selectedSize:a,pSelectedScores:s,pValidOutputs:i}}var Jb;function rK(e){Jb=e.wasm.cwrap(To,"number",["number","number","number","number","number"])}function aK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i}=r,{boxes:o,scores:l}=n,u=t.dataIdMap.get(o.dataId).id,c=t.dataIdMap.get(l.dataId).id,h=Jb(u,c,s,a,i),{pSelectedIndices:d,selectedSize:p,pSelectedScores:f,pValidOutputs:m}=lA(t,h);return t.wasm._free(f),t.wasm._free(m),t.makeOutput([p],"int32",d)}var sK={kernelName:To,backendName:"wasm",setupFunc:rK,kernelFunc:aK},Qb;function iK(e){Qb=e.wasm.cwrap(Co,"number",["number","number","number","number","number","bool"])}function oK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=Qb(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(m);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([],"int32",A);return[y,g]}var lK={kernelName:Co,backendName:"wasm",setupFunc:iK,kernelFunc:oK},e3;function uK(e){e3=e.wasm.cwrap(Eo,"number",["number","number","number","number","number","number"])}function cK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=e3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(A);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([f],"float32",m);return[y,g]}var hK={kernelName:Eo,backendName:"wasm",setupFunc:uK,kernelFunc:cK},dK=!1,pK=An(So,dK,"bool"),t3;function fK(e){t3=e.wasm.cwrap($s,null,["number","number","number","number","number"])}function mK(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=n.makeOutput([...a.shape,s],"int32"),u=n.dataIdMap.get(l.dataId).id,c=n.dataIdMap.get(a.dataId).id;return t3(c,s,i,o,u),l}var AK={kernelName:$s,backendName:"wasm",setupFunc:fK,kernelFunc:mK};function yK(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(1),r}var gK={kernelName:Ro,backendName:"wasm",kernelFunc:yK};function xK(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return oA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=oA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=$b({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeData(c.dataId)),u}var wK={kernelName:Fo,backendName:"wasm",kernelFunc:xK},n3;function _K(e){n3=e.wasm.cwrap(Ds,null,["number","array","number","number","array","array","number","number"])}function bK(e){let{inputs:{x:t},backend:n,attrs:{paddings:r,constantValue:a}}=e,s=r.map((f,m)=>f[0]+t.shape[m]+f[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(t.shape).buffer),c=r.map(f=>f[0]),h=r.map(f=>f[1]),d=new Uint8Array(new Int32Array(c).buffer),p=new Uint8Array(new Int32Array(h).buffer);return n3(i,u,t.shape.length,Pn[t.dtype],d,p,a,l),o}var vK={kernelName:Ds,backendName:"wasm",kernelFunc:bK,setupFunc:_K},kK=!1,NK=An(Os,kK),r3;function IK(e){r3=e.wasm.cwrap(zs,null,["number","number","number"])}function SK(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,o=n.makeOutput(r.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return r3(s,i,l),o}var TK={kernelName:zs,backendName:"wasm",setupFunc:IK,kernelFunc:SK},a3;function CK(e){a3=e.wasm.cwrap(Mo,null,["number","number","number","number"])}function EK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("prod",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;a3(l,y,Pn[g.dtype],_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var RK={kernelName:Mo,backendName:"wasm",setupFunc:CK,kernelFunc:EK},FK=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=Em(r,a,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},MK={kernelName:wu,backendName:"wasm",kernelFunc:FK},$K=!0,DK=An(gs,$K),OK=Sn(Ps),zK=Sn(Ws),s3;function PK(e){s3=e.wasm.cwrap(Ls,null,["number","number","number","number","number","number","number","number","number","number"])}function LK(e){let{backend:t,inputs:n,attrs:r}=e,{images:a}=n,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,[c,h,d,p]=a.shape,f=[c,l,u,p],m=t.dataIdMap.get(a.dataId),A;m.dtype!=="float32"&&(A=_p({backend:t,inputs:{x:a},attrs:{dtype:"float32"}}),m=t.dataIdMap.get(A.dataId));let y=m.id,g=t.makeOutput(f,"float32");if(v.sizeFromShape(a.shape)===0)return g;let _=t.dataIdMap.get(g.dataId).id;return s3(y,c,h,d,p,l,u,s?1:0,i?1:0,_),A!=null&&t.disposeData(A.dataId),g}var WK={kernelName:Ls,backendName:"wasm",setupFunc:PK,kernelFunc:LK},i3;function BK(e){i3=e.wasm.cwrap(Bs,null,["number","array","number","array","number","number"])}function VK(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=v.parseAxisParam(s,a.shape);if(a.shape.length===0)return xp({inputs:{x:a},backend:n});let o=n.makeOutput(a.shape,a.dtype),l=n.dataIdMap.get(a.dataId).id,u=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(i).buffer),h=new Uint8Array(new Int32Array(a.shape).buffer);i3(l,c,i.length,h,a.shape.length,u);let d=wr({inputs:{x:o},attrs:{shape:a.shape},backend:n});return n.disposeData(o.dataId),d}var UK={kernelName:Bs,backendName:"wasm",kernelFunc:VK,setupFunc:BK},o3;function HK(e){o3=e.wasm.cwrap(Ko,null,["number","number","number","number","number","number","number","number","array","number","number"])}function jK(e){let{inputs:t,backend:n,attrs:r}=e,{image:a}=t,{radians:s,fillValue:i,center:o}=r,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(a.dataId).id,c=n.dataIdMap.get(l.dataId).id,[h,d,p,f]=a.shape,[m,A]=R.getImageCenter(o,d,p),y=i===0,g=255,_=typeof i=="number"?[i,i,i,y?0:g]:[...i,g],b=new Uint8Array(new Int32Array(_).buffer);return o3(u,h,d,p,f,s,m,A,b,_.length,c),l}var GK={kernelName:Ko,backendName:"wasm",kernelFunc:jK,setupFunc:HK},qK=Sn(Vs),XK=Sn(Us),l3;function KK(e){l3=e.wasm.cwrap(Oo,null,["number","number","number","number","number","number","array","number","number"])}function ZK(e){let{backend:t,inputs:n,attrs:r}=e,{indices:a,updates:s}=n,{shape:i}=r,o=t.makeOutput(i,s.dtype);if(v.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:u,sliceSize:c,strides:h,outputSize:d}=Sf.calculateShapes(s,a,i),p=t.dataIdMap.get(a.dataId).id,f=t.dataIdMap.get(s.dataId).id,m=new Uint8Array(new Int32Array(h).buffer),A=t.dataIdMap.get(o.dataId).id;return l3(p,f,Pn[s.dtype],l,u,c,m,d,A),o}var YK={kernelName:Oo,backendName:"wasm",setupFunc:KK,kernelFunc:ZK},u3;function JK(e){u3=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function QK(e){let{inputs:t,backend:n}=e,{condition:r,t:a,e:s}=t,i=n.dataIdMap.get(r.dataId).id,o=n.dataIdMap.get(a.dataId).id,l=n.dataIdMap.get(s.dataId).id,u=n.makeOutput(a.shape,a.dtype),c=n.dataIdMap.get(u.dataId).id,h=r.shape.length,d=a.shape.length,p=h===0||h>1||d===1?1:v.sizeFromShape(a.shape.slice(1));return u3(i,o,l,p,c),u}var eZ={kernelName:zo,backendName:"wasm",kernelFunc:QK,setupFunc:JK},c3;function tZ(e){c3=e.wasm.cwrap(js,null,["number","number"])}function nZ(e){let{backend:t,inputs:{x:n}}=e,r=t.dataIdMap.get(n.dataId).id,a=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(a.dataId).id;return v.sizeFromShape(a.shape)===0||c3(r,s),a}var rZ={kernelName:"Sigmoid",backendName:"wasm",setupFunc:tZ,kernelFunc:nZ},aZ=Sn(Hs);function bp(e){let{inputs:{x:t},attrs:{begin:n,size:r},backend:a}=e,[s,i]=cn.parseSliceParams(t,n,r),o=cn.isSliceContinous(t.shape,s,i),l=a.readSync(t.dataId),u=a.makeOutput(i,t.dtype),c=v.computeStrides(t.shape),h=a.dataIdMap.get(u.dataId);if(o){let f=cn.computeFlatOffset(s,c);return t.dtype==="string"?h.stringBytes=l.slice(f,f+v.sizeFromShape(i)):a.typedArrayFromHeap(u).set(l.subarray(f,f+v.sizeFromShape(i))),u}if(t.dtype==="string"){let f=Yd(l,s,i,t.shape,t.dtype);return h.stringBytes=f,u}let d=a.typedArrayFromHeap(u),p=t.shape.length;if(p===2)sZ(l,c[0],d,s,i);else if(p===3)iZ(l,c[0],c[1],d,s,i);else if(p===4)oZ(l,c[0],c[1],c[2],d,s,i);else{let f=Yd(l,s,i,t.shape,t.dtype);d.set(f)}return u}function sZ(e,t,n,r,a){let s=0,i=r[0],o=r[1],l=i+a[0];for(let u=i;u{let d=[...c];d[o]=h;let p=bp({inputs:{x:a},attrs:{begin:u,size:d},backend:r});return u[o]+=h,p})}var pZ={kernelName:Uo,backendName:"wasm",kernelFunc:dZ},fZ=Sn(Gs),mZ=Sn(vu),AZ=!0,yZ=An(Ks,AZ),d3;function gZ(e){d3=e.wasm.cwrap(Ta,null,["number","number","number"])}function xZ(e){let{backend:t,inputs:n,attrs:r}=e,{alpha:a}=r,{x:s}=n,i=t.dataIdMap.get(s.dataId).id,o=t.makeOutput(s.shape,s.dtype),l=t.dataIdMap.get(o.dataId).id;return d3(i,a,l),o}var wZ={kernelName:Ta,backendName:"wasm",setupFunc:gZ,kernelFunc:xZ},p3;function _Z(e){p3=e.wasm.cwrap(Ho,null,["number","array","number","array","array","array","array","array","number","number"])}function bZ(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{begin:s,end:i,strides:o}=r;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,p=R.slice_util.maskToAxes(c);if(p.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(c!==0&&h!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(c!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let f=a.shape.length-s.length,m=R.slice_util.maskToAxes(h),A=a.shape.slice();m.forEach(M=>{s[M]=0,i[M]=1,A.splice(M,0,1)});let y=wr({inputs:{x:a},attrs:{shape:A},backend:t}),{begin:g,end:_,strides:b}=R.slice_util.getNormalizedAxes(y.shape,p,f,s,i,o,l,u,c);s=g,i=_,o=b;let w=R.slice_util.maskToAxes(d);w.forEach(M=>{i[M]=s[M]+1,o[M]=1});let x=R.slice_util.computeOutShape(s,i,o),I=x.filter((M,D)=>w.indexOf(D)===-1);if(o.every(M=>M===1)){let M=bp({inputs:{x:y},attrs:{begin:s,size:x},backend:t});t.disposeData(y.dataId);let D=wr({inputs:{x:M},attrs:{shape:I},backend:t});return t.disposeData(M.dataId),D}let S=t.makeOutput(I,"float32");if(!I.some(M=>M===0)){let M=t.dataIdMap.get(y.dataId).id,D=new Uint8Array(new Int32Array(v.computeStrides(y.shape)).buffer),z=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),U=new Uint8Array(new Int32Array(o).buffer),H=new Uint8Array(new Int32Array(I).buffer),X=new Uint8Array(new Int32Array(v.computeStrides(I)).buffer),j=t.dataIdMap.get(S.dataId).id;p3(M,D,y.shape.length,z,W,U,H,X,I.length,j)}t.disposeData(y.dataId);let T=wr({inputs:{x:S},attrs:{shape:I},backend:t});return t.disposeData(S.dataId),T}var vZ={kernelName:Ho,backendName:"wasm",setupFunc:_Z,kernelFunc:bZ},kZ=!0,NZ=An(Zs,kZ),f3;function IZ(e){f3=e.wasm.cwrap(qs,null,["number, number, number"])}function SZ(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("sum",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;f3(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var TZ={kernelName:qs,backendName:"wasm",setupFunc:IZ,kernelFunc:SZ},CZ=Sn(Ys),m3;function EZ(e){m3=e.wasm.cwrap(Sa,null,["number","array","number","array","number","number"])}function RZ(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,s=n.dataIdMap.get(a.dataId).id,{reps:i}=r,o=new Array(a.shape.length);for(let d=0;d{let{x:r}=e,{k:a,sorted:s}=n,i=t.dataIdMap.get(r.dataId).id,o=new Uint8Array(new Int32Array(r.shape).buffer),l=r.shape.slice();l[l.length-1]=a;let u=t.makeOutput(l,r.dtype),c=t.dataIdMap.get(u.dataId).id,h=t.makeOutput(l,"int32"),d=t.dataIdMap.get(h.dataId).id;return A3(i,o,r.shape.length,Pn[r.dtype],a,s,c,d),[u,h]},DZ={kernelName:Go,backendName:"wasm",setupFunc:MZ,kernelFunc:$Z};function OZ(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a.shape[s],o=a.shape.length,l=new Array(o-1),u=0;for(let p=0;p({dataId:p,dtype:f,shape:l}))}var zZ={kernelName:qo,backendName:"wasm",kernelFunc:OZ};function PZ(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(0),r}var LZ={kernelName:Xo,backendName:"wasm",kernelFunc:PZ},WZ=[sq,oq,cq,gq,_q,Nq,Iq,Sq,Eq,Rq,$q,zq,Pq,Bq,Hq,qq,Zq,Jq,Qq,eX,nX,sX,iX,lX,aq,hX,fX,yX,wX,vX,NX,SX,hq,EX,FX,$X,DX,zX,WX,VX,jX,XX,YX,QX,tK,nK,sK,lK,hK,pK,AK,gK,wK,vK,NK,TK,RK,MK,DK,OK,zK,bq,WK,UK,GK,XK,qK,YK,eZ,rZ,aZ,lZ,hZ,pZ,fZ,mZ,yZ,wZ,vZ,NZ,TZ,CZ,FZ,DZ,mq,zZ,LZ];for(let e of WZ)ni(e);var uA=J();uA.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));uA.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(uA.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var y3=qi(G8()),BZ='var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["getNoExitRuntime"]()){}else{Module["PThread"].threadExit(ex.status)}}else{Module["PThread"].threadExit(-2);throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',VZ=qi(q8()),g3=class extends su{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new xh(this,Fr())}write(e,t,n){let r={id:this.dataIdNextNumber++};return this.move(r,e,t,n,1),r}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}move(e,t,n,r,a){let s=this.dataIdNextNumber++;if(r==="string"){let u=t;this.dataIdMap.set(e,{id:s,stringBytes:u,shape:n,dtype:r,memoryOffset:null,refCount:a});return}let i=v.sizeFromShape(n),o=i*v.bytesPerElement(r),l=this.wasm._malloc(o);this.dataIdMap.set(e,{id:s,memoryOffset:l,shape:n,dtype:r,refCount:a}),this.wasm.tfjs.registerTensor(s,i,l),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,o),l)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:r,stringBytes:a}=this.dataIdMap.get(e);if(n==="string")return a;let s=this.wasm.HEAPU8.slice(t,t+v.sizeFromShape(r)*v.bytesPerElement(n));return UZ(s.buffer,n)}disposeData(e,t=!1){if(this.dataIdMap.has(e)){let n=this.dataIdMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;this.wasm._free(n.memoryOffset),this.wasm.tfjs.disposeData(n.id),this.dataIdMap.delete(e)}return!0}refCount(e){return this.dataIdMap.has(e)?this.dataIdMap.get(e).refCount:0}incRef(e){let t=this.dataIdMap.get(e);t!=null&&t.refCount++}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let r;if(n==null)r=this.write(null,e,t);else{let a=this.dataIdNextNumber++;r={id:a},this.dataIdMap.set(r,{id:a,memoryOffset:n,shape:e,dtype:t,refCount:1});let s=v.sizeFromShape(e);this.wasm.tfjs.registerTensor(a,s,n)}return{dataId:r,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let r=this.wasm.HEAPU8.buffer,{memoryOffset:a}=this.dataIdMap.get(n),s=v.sizeFromShape(e);switch(t){case"float32":return new Float32Array(r,a,s);case"int32":return new Int32Array(r,a,s);case"bool":return new Uint8Array(r,a,s);default:throw new Error(`Unknown dtype ${t}`)}}};function HZ(e){return(t,n)=>(v.fetch(e,{credentials:"same-origin"}).then(r=>{r.ok||t.env.a(`failed to load wasm binary file at '${e}'`),r.arrayBuffer().then(a=>{WebAssembly.instantiate(a,t).then(s=>{n(s.instance)})})}),{})}function x3(e,t,n){if(vp!=null)return vp;let r="tfjs-backend-wasm.wasm";return e&&t?r="tfjs-backend-wasm-threaded-simd.wasm":e&&(r="tfjs-backend-wasm-simd.wasm"),mc!=null&&mc[r]!=null?mc[r]:n+r}async function jZ(){let[e,t]=await Promise.all([J().getAsync("WASM_HAS_SIMD_SUPPORT"),J().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,r)=>{let a={};a.locateFile=(o,l)=>{if(o.endsWith(".worker.js")){let u=BZ,c=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(c)}return o.endsWith(".wasm")?x3(e,t,Ac!=null?Ac:l):l+o},cA&&(a.instantiateWasm=HZ(x3(e,t,Ac!=null?Ac:"")));let s=!1;a.onAbort=()=>{s||yc||(yc=!0,r({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))};let i;t&&e&&vp==null?(a.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+y3.default.toString()],{type:"text/javascript"}),i=(0,y3.default)(a)):i=(0,VZ.default)(a),i.then(o=>{s=!0,yc=!1;let l=null;o.tfjs={init:o.cwrap("init",null,[]),registerTensor:o.cwrap("register_tensor",null,["number","number","number"]),disposeData:o.cwrap("dispose_data",l,["number"]),dispose:o.cwrap("dispose",l,[])},n({wasm:o})})})}function UZ(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var GZ=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],vp=null,Ac=null,mc={},yc=!1,cA=!1;function qZ(e,t=!1){if(Mf("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");vp=e,cA=t}function XZ(e,t=!1){if(yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Ac=e;else{mc=e;let n=GZ.filter(r=>mc[r]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}cA=t}var w3="3.3.0",KZ=2;sl("wasm",async()=>{let{wasm:e}=await jZ();return new g3(e)},KZ);Z().prototype.abs=function(){return this.throwIfDisposed(),zt(this)};Z().prototype.acos=function(){return this.throwIfDisposed(),Df(this)};Z().prototype.acosh=function(){return this.throwIfDisposed(),Of(this)};Z().prototype.add=function(e){return this.throwIfDisposed(),se(this,e)};Z().prototype.all=function(e,t){return this.throwIfDisposed(),dd(this,e,t)};Z().prototype.any=function(e,t){return this.throwIfDisposed(),Ou(this,e,t)};Z().prototype.argMax=function(e){return this.throwIfDisposed(),zu(this,e)};Z().prototype.argMin=function(e){return this.throwIfDisposed(),zf(this,e)};Z().prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),G(this,[])};Z().prototype.asType=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.as1D=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.as2D=function(e,t){return this.throwIfDisposed(),G(this,[e,t])};Z().prototype.as3D=function(e,t,n){return this.throwIfDisposed(),G(this,[e,t,n])};Z().prototype.as4D=function(e,t,n,r){return this.throwIfDisposed(),G(this,[e,t,n,r])};Z().prototype.as5D=function(e,t,n,r,a){return this.throwIfDisposed(),G(this,[e,t,n,r,a])};Z().prototype.asin=function(){return this.throwIfDisposed(),Pf(this)};Z().prototype.asinh=function(){return this.throwIfDisposed(),Lf(this)};Z().prototype.atan=function(){return this.throwIfDisposed(),Wf(this)};Z().prototype.atan2=function(e){return this.throwIfDisposed(),Bf(this,e)};Z().prototype.atanh=function(){return this.throwIfDisposed(),Vf(this)};Z().prototype.avgPool=function(e,t,n,r){return this.throwIfDisposed(),Lu(this,e,t,n,r)};Z().prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Wu(this,e,t)};Z().prototype.batchNorm=function(e,t,n,r,a){return this.throwIfDisposed(),li(this,e,t,n,r,a)};Z().prototype.broadcastTo=function(e){return this.throwIfDisposed(),Bu(this,e)};Z().prototype.cast=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.ceil=function(){return this.throwIfDisposed(),Gf(this)};Z().prototype.clipByValue=function(e,t){return this.throwIfDisposed(),vn(this,e,t)};Z().prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof Ue&&(e=[e]),st([this,...e],t)};Z().prototype.conv1d=function(e,t,n,r,a,s){return this.throwIfDisposed(),fd(this,e,t,n,r,a,s)};Z().prototype.conv2dTranspose=function(e,t,n,r,a){return this.throwIfDisposed(),md(this,e,t,n,r,a)};Z().prototype.conv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ra(this,e,t,n,r,a,s)};Z().prototype.cos=function(){return this.throwIfDisposed(),Vu(this)};Z().prototype.cosh=function(){return this.throwIfDisposed(),Ad(this)};Z().prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),yd(this,e,t,n)};Z().prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),Kf(this,e,t)};Z().prototype.depthwiseConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ul(this,e,t,n,r,a,s)};Z().prototype.dilation2d=function(e,t,n,r,a){return this.throwIfDisposed(),Zf(this,e,t,n,r,a)};Z().prototype.divNoNan=function(e){return this.throwIfDisposed(),Yf(this,e)};Z().prototype.div=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.dot=function(e){return this.throwIfDisposed(),J5(this,e)};Z().prototype.elu=function(){return this.throwIfDisposed(),cl(this)};Z().prototype.equal=function(e){return this.throwIfDisposed(),Da(this,e)};Z().prototype.erf=function(){return this.throwIfDisposed(),Jf(this)};Z().prototype.exp=function(){return this.throwIfDisposed(),qn(this)};Z().prototype.expandDims=function(e){return this.throwIfDisposed(),hn(this,e)};Z().prototype.expm1=function(){return this.throwIfDisposed(),Qf(this)};Z().prototype.fft=function(){return this.throwIfDisposed(),Ju(this)};Z().prototype.flatten=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.floor=function(){return this.throwIfDisposed(),hl(this)};Z().prototype.floorDiv=function(e){return this.throwIfDisposed(),hd(this,e)};Z().prototype.gather=function(e,t){return this.throwIfDisposed(),ui(this,e,t)};Z().prototype.greaterEqual=function(e){return this.throwIfDisposed(),za(this,e)};Z().prototype.greater=function(e){return this.throwIfDisposed(),rr(this,e)};Z().prototype.ifft=function(){return this.throwIfDisposed(),Al(this)};Z().prototype.irfft=function(){return this.throwIfDisposed(),$d(this)};Z().prototype.isFinite=function(){return this.throwIfDisposed(),Q5(this)};Z().prototype.isInf=function(){return this.throwIfDisposed(),ex(this)};Z().prototype.isNaN=function(){return this.throwIfDisposed(),tx(this)};Z().prototype.leakyRelu=function(e){return this.throwIfDisposed(),Hu(this,e)};Z().prototype.lessEqual=function(e){return this.throwIfDisposed(),ci(this,e)};Z().prototype.less=function(e){return this.throwIfDisposed(),xd(this,e)};Z().prototype.localResponseNormalization=function(e,t,n,r){return this.throwIfDisposed(),tm(this,e,t,n,r)};Z().prototype.logSigmoid=function(){return this.throwIfDisposed(),ax(this)};Z().prototype.logSoftmax=function(e){return this.throwIfDisposed(),bd(this,e)};Z().prototype.logSumExp=function(e,t){return this.throwIfDisposed(),am(this,e,t)};Z().prototype.log=function(){return this.throwIfDisposed(),Mn(this)};Z().prototype.log1p=function(){return this.throwIfDisposed(),wd(this)};Z().prototype.logicalAnd=function(e){return this.throwIfDisposed(),ar(this,e)};Z().prototype.logicalNot=function(){return this.throwIfDisposed(),ju(this)};Z().prototype.logicalOr=function(e){return this.throwIfDisposed(),vd(this,e)};Z().prototype.logicalXor=function(e){return this.throwIfDisposed(),lx(this,e)};Z().prototype.matMul=function(e,t,n){return this.throwIfDisposed(),Ge(this,e,t,n)};Z().prototype.maxPool=function(e,t,n,r){return this.throwIfDisposed(),Gu(this,e,t,n,r)};Z().prototype.max=function(e,t){return this.throwIfDisposed(),Xn(this,e,t)};Z().prototype.maximum=function(e){return this.throwIfDisposed(),Dr(this,e)};Z().prototype.mean=function(e,t){return this.throwIfDisposed(),kt(this,e,t)};Z().prototype.min=function(e,t){return this.throwIfDisposed(),pl(this,e,t)};Z().prototype.minimum=function(e){return this.throwIfDisposed(),fl(this,e)};Z().prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),im(this,e,t)};Z().prototype.mod=function(e){return this.throwIfDisposed(),om(this,e)};Z().prototype.mul=function(e){return this.throwIfDisposed(),P(this,e)};Z().prototype.neg=function(){return this.throwIfDisposed(),vt(this)};Z().prototype.norm=function(e,t,n){return this.throwIfDisposed(),Pd(this,e,t,n)};Z().prototype.notEqual=function(e){return this.throwIfDisposed(),di(this,e)};Z().prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),nl(this,e,t,n)};Z().prototype.onesLike=function(){return this.throwIfDisposed(),$n(this)};Z().prototype.pad=function(e,t){return this.throwIfDisposed(),aa(this,e,t)};Z().prototype.pool=function(e,t,n,r,a){return this.throwIfDisposed(),hx(this,e,t,n,r,a)};Z().prototype.pow=function(e){return this.throwIfDisposed(),sa(this,e)};Z().prototype.prelu=function(e){return this.throwIfDisposed(),Xu(this,e)};Z().prototype.prod=function(e,t){return this.throwIfDisposed(),Nd(this,e,t)};Z().prototype.reciprocal=function(){return this.throwIfDisposed(),cm(this)};Z().prototype.relu=function(){return this.throwIfDisposed(),zr(this)};Z().prototype.relu6=function(){return this.throwIfDisposed(),Sd(this)};Z().prototype.reshapeAs=function(e){return this.throwIfDisposed(),G(this,e.shape)};Z().prototype.reshape=function(e){return this.throwIfDisposed(),G(this,e)};Z().prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),Cx(this,e,t,n)};Z().prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),Ex(this,e,t,n)};Z().prototype.reverse=function(e){return this.throwIfDisposed(),Dn(this,e)};Z().prototype.rfft=function(){return this.throwIfDisposed(),Qu(this)};Z().prototype.round=function(){return this.throwIfDisposed(),hm(this)};Z().prototype.rsqrt=function(){return this.throwIfDisposed(),Td(this)};Z().prototype.selu=function(){return this.throwIfDisposed(),Cd(this)};Z().prototype.separableConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),dm(this,e,t,n,r,a,s)};Z().prototype.sigmoid=function(){return this.throwIfDisposed(),Fn(this)};Z().prototype.sign=function(){return this.throwIfDisposed(),pm(this)};Z().prototype.sin=function(){return this.throwIfDisposed(),Ed(this)};Z().prototype.sinh=function(){return this.throwIfDisposed(),Rd(this)};Z().prototype.slice=function(e,t){return this.throwIfDisposed(),Re(this,e,t)};Z().prototype.softmax=function(e){return this.throwIfDisposed(),Yu(this,e)};Z().prototype.softplus=function(){return this.throwIfDisposed(),dl(this)};Z().prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),qu(this,e,t)};Z().prototype.split=function(e,t){return this.throwIfDisposed(),Lt(this,e,t)};Z().prototype.sqrt=function(){return this.throwIfDisposed(),en(this)};Z().prototype.square=function(){return this.throwIfDisposed(),lt(this)};Z().prototype.squaredDifference=function(e){return this.throwIfDisposed(),Dd(this,e)};Z().prototype.squeeze=function(e){return this.throwIfDisposed(),Pa(this,e)};Z().prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof Ue?[this,e]:[this,...e];return dn(n,t)};Z().prototype.step=function(e){return this.throwIfDisposed(),yl(this,e)};Z().prototype.stridedSlice=function(e,t,n,r,a,s,i,o){return this.throwIfDisposed(),mm(this,e,t,n,r,a,s,i,o)};Z().prototype.sub=function(e){return this.throwIfDisposed(),ye(this,e)};Z().prototype.sum=function(e,t){return this.throwIfDisposed(),Te(this,e,t)};Z().prototype.tan=function(){return this.throwIfDisposed(),Am(this)};Z().prototype.tanh=function(){return this.throwIfDisposed(),ol(this)};Z().prototype.tile=function(e){return this.throwIfDisposed(),Oa(this,e)};Z().prototype.toBool=function(){return this.throwIfDisposed(),me(this,"bool")};Z().prototype.toFloat=function(){return this.throwIfDisposed(),me(this,"float32")};Z().prototype.toInt=function(){return this.throwIfDisposed(),me(this,"int32")};Z().prototype.topk=function(e,t){return this.throwIfDisposed(),ym(this,e,t)};Z().prototype.transpose=function(e){return this.throwIfDisposed(),at(this,e)};Z().prototype.unique=function(e){return this.throwIfDisposed(),zd(this,e)};Z().prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),gm(this,e,t)};Z().prototype.unstack=function(e){return this.throwIfDisposed(),sr(this,e)};Z().prototype.where=function(e,t){return this.throwIfDisposed(),kn(e,this,t)};Z().prototype.zerosLike=function(){return this.throwIfDisposed(),He(this)};var _3={kernelName:Zi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,yl(me(n,"float32"),-1))}}},ZZ={kernelName:Yi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=lt(me(n,"float32")),a=en(ye(be(1),r));return vt(ge(e,a))}}}},YZ={kernelName:Ji,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(ye(lt(me(n,"float32")),1));return ge(e,r)}}}},JZ={kernelName:Na,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},QZ={kernelName:os,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((r,a)=>{n[a]=()=>e.clone()}),n}},eY={kernelName:ls,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},tY={kernelName:lu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},nY={kernelName:Qi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,en(ye(be(1),lt(me(n,"float32")))))}}},rY={kernelName:eo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(se(be(1),lt(me(n,"float32"))));return ge(e,r)}}}},aY={kernelName:ro,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=se(lt(n),lt(r)),i=P(e,ge(r,s)),o=Pt(n.shape,a);return o.length>0&&(i=Te(i,o)),G(i,n.shape)},b:()=>{let s=se(lt(n),lt(r)),i=vt(P(e,ge(n,s))),o=Pt(r.shape,a);return o.length>0&&(i=Te(i,o)),G(i,r.shape)}}}},sY={kernelName:to,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(lt(me(n,"float32")),1))}}},iY={kernelName:no,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,ye(be(1),lt(me(n,"float32"))))}}};function oY(e,t,n,r,a,s){let i=E(e,"dy","avgPool3dGrad"),o=E(t,"input","avgPool3dGrad"),l=i,u=o,c=!1;o.rank===4&&(c=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),u=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),s!=null&&F(jt(a),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${s} but got pad ${a}.`);let h={dy:l,input:u},d={filterSize:n,strides:r,pad:a,dimRoundingMode:s},p=$.runKernel(Ih,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var lY=O({avgPool3dGrad_:oY}),uY={kernelName:uu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i,dimRoundingMode:o}=n;return{x:()=>lY(e,r,a,s,i,o)}}};function cY(e,t,n,r,a){let s=E(e,"dy","avgPoolGrad"),i=E(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,u=!1;i.rank===3&&(u=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let c={dy:l,input:o},h={filterSize:n,strides:r,pad:a},d=$.runKernel(Nh,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var hY=O({avgPoolGrad_:cY}),dY={kernelName:us,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i}=n;return{x:()=>hY(e,r,a,s,i)}}},pY={kernelName:cs,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[r,a]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>Ge(e,a,!1,!0),b:()=>Ge(r,e,!0,!1)}:!s&&i?{a:()=>Ge(e,a,!1,!1),b:()=>Ge(e,r,!0,!1)}:s&&!i?{a:()=>Ge(a,e,!1,!0),b:()=>Ge(r,e,!1,!1)}:{a:()=>Ge(a,e,!0,!0),b:()=>Ge(e,r,!0,!0)}}},fY={kernelName:cu,gradFunc:(e,t,n)=>{let{blockShape:r,crops:a}=n;return{x:()=>qu(e,r,a)}}},mY={kernelName:Gg,gradFunc:(e,t,n)=>{let r=n,a=r.inputShape,s=r.shape,i=Array.from(s);for(let l=a.length-1;l>=0;l--)if(a[l]===s[l])i[l]=1;else if(a[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Te(e,o,!0)}}},AY={kernelName:hs,gradFunc:e=>({x:()=>e.clone()})},yY={kernelName:ds,gradFunc:e=>({x:()=>He(e)})},gY={kernelName:Ia,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{clipValueMin:a,clipValueMax:s}=n;return{x:()=>kn(ar(za(r,a),ci(r,s)),e,He(e))}}},xY={kernelName:hu,inputsToSave:["x"],gradFunc:_3.gradFunc},wY={kernelName:ao,saveAllInputs:!0,gradFunc:(e,t,n)=>{let r=t.map(o=>o.shape),{axis:a}=n,s=tr(a,t[0].shape)[0],i=r.map(o=>o[s]);return Lt(e,i,s).map(o=>()=>o)}},_Y={kernelName:ps,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F($a(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>qf(r.shape,e,a,i,o,l),filter:()=>bm(r,e,a.shape,i,o,l)}}},bY={kernelName:fs,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>ra(e,a,s,i,o,1,l),filter:()=>bm(e,r,a.shape,s,i,o,l)}}};function vY(e,t,n,r,a){let s=e;e.rank===4&&(s=G(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:r,pad:a,filterShape:n};return $.runKernel(Eh,o,l)}var kY=O({conv3DBackpropFilter_:vY}),NY={kernelName:du,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s}=n;F($a(r),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);let[i,o]=t;return{x:()=>Z5(i.shape,e,o,a,s),filter:()=>kY(i,e,o.shape,a,s)}}},IY={kernelName:ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(vt(Ed(me(n,"float32"))),e)}}},SY={kernelName:so,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Rd(me(n,"float32")),e)}}},TY={kernelName:As,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a,exclusive:s,reverse:i}=n;return{x:()=>{let o=ox([a],r.rank),l=yd(e,a,s,!i);return o!=null&&(l=at(l,o)),l}}}},CY={kernelName:ys,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s,dimRoundingMode:i}=n,o=r==null?[1,1]:r;F($a(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,u]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),F(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),F(Mr(a,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${o}'.`),i!=null&&F(jt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>bx(l.shape,e,u,a,s,r,i),filter:()=>_x(l,e,u.shape,a,s,r,i)}}},EY={kernelName:pu,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,s={x:r,filter:a,dy:e},i={x:r,filter:a,dy:e};return{x:()=>$.runKernel(Oh,s,n),filter:()=>$.runKernel(zh,i,n)}}},RY={kernelName:lo,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,r={dy:e,y:n};return{x:()=>$.runKernel(Ph,r)}}},FY={kernelName:uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(qn(vt(lt(n))),2/Math.sqrt(Math.PI));return{x:()=>P(e,r)}}},MY={kernelName:xs,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,n)}}},$Y={kernelName:ho,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>G(e,n.shape)}}},DY={kernelName:po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,qn(n))}}},OY={kernelName:ws,gradFunc:e=>({x:()=>He(e)})},zY={kernelName:_s,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},PY={kernelName:bs,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:r}=n,[a,s,i,o]=t,l=o==null?be(1):o,u=Pt(s.shape,a.shape),c=[];if(s.rank===1){for(let m=0;ms.rank===1?G(P(P(e,Oa(G(p,[1,1,1,s.shape[0]]),c)),l),a.shape):G(P(P(e,p),l),a.shape),mean:()=>{let m=P(P(p,be(-1)),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},variance:()=>{let m=P(P(f,h),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},scale:()=>{let m=P(h,p),A=P(e,m);return s.rank===1&&(A=Te(A,u)),G(A,s.shape)},offset:()=>{let m=e;return s.rank===1&&(m=Te(m,u)),G(m,s.shape)}}}},LY={kernelName:mo,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[r,a]=t,{axis:s}=n,i=tr(s,r.shape)[0];return{x:()=>{let o=r.shape,l=a.size,u=o.slice(0,i),c=u.length,h=o.slice(s,o.length).slice(1),d=h.length,p=b3(0,c),f=b3(c+1,c+1+d),m=v3([u,[l],h]),A=G(e,m),y=G(a,[l]),g=v3([[c],p,f]),_=at(A,g),b=gm(_,y,r.shape[i]),w=rm(g);return b=at(b,w),b},indices:()=>a}}};function b3(e,t){let n=[];for(let r=e;r{let[n,r]=t;return{a:()=>He(n),b:()=>He(r)}}},BY={kernelName:ks,gradFunc:e=>({x:()=>me(e,"float32")})},VY={kernelName:go,gradFunc:e=>({x:()=>He(e)})},UY={kernelName:xo,gradFunc:e=>({x:()=>He(e)})},HY={kernelName:wo,gradFunc:e=>({x:()=>He(e)})},jY={kernelName:Ns,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{alpha:a}=n,s=rr(r,0);return{x:()=>kn(s,e,P(e,a))}}},GY={kernelName:vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(n,1))}}},qY={kernelName:Is,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,me(n,"float32"))}}},XY={kernelName:qg,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n;return{logits:()=>{let s=!0,i=qn(r);return ye(e,P(Te(e,a,s),i))}}}};function KY(e,t,n,r=5,a=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:r,bias:a,alpha:s,beta:i};return $.runKernel(Uh,o,l)}var ZY=O({localResponseNormalizationBackprop_:KY}),YY={kernelName:yu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>ZY(r,a,e,s,i,o,l)}}};function k3(e,t,n,r){return t.rankP(e,me(Da(n,t),e.dtype))}}var N3={kernelName:Ss,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{reductionIndices:a}=r,s=t[0],i=t[1],o=tr(a,s.shape),l=k3(e,i,s,o);return{x:()=>l.x()}}},JY={kernelName:Ts,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(za(n,r),"float32")),b:()=>P(e,me(xd(n,r),"float32"))}}};function QY(e,t,n,r,a,s,i){let o=E(e,"dy","maxPool3dGrad"),l=E(t,"input","maxPool3dGrad"),u=E(n,"output","maxPool3dGrad"),c=o,h=l,d=u,p=!1;l.rank===4&&(p=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),h=G(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=G(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(c.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let f={dy:c,input:h,output:d},m={filterSize:r,strides:a,pad:s,dimRoundingMode:i},A=$.runKernel(jh,f,m);return p?G(A,[A.shape[1],A.shape[2],A.shape[3],A.shape[4]]):A}var eJ=O({maxPool3dGrad_:QY}),tJ={kernelName:gu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=n;return{x:()=>eJ(e,r,a,s,i,o,l)}}};function nJ(e,t,n,r,a,s,i){let o=E(e,"dy","maxPoolGrad"),l=E(t,"input","maxPoolGrad"),u=E(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let c={dy:o,input:l,output:u},h={filterSize:r,strides:a,pad:s,dimRoundingMode:i};return $.runKernel(Hh,c,h)}var rJ=O({maxPoolGrad_:nJ}),aJ={kernelName:Cs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>rJ(e,r,a,s,i,o)}}},sJ={kernelName:Es,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n,s=tr(a,r.shape),i=ix(r.shape,s)[1],o=Dt(i);return{x:()=>{let l=r.shape.slice();s.forEach(c=>{l[c]=1});let u=G(e,l);return ge(P(u,Or(r.shape,"float32")),o)}}}},iJ={kernelName:Rs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{axis:a}=r,[s,i]=t,o=tr(a,s.shape),l=k3(e,i,s,o);return{x:()=>l.x()}}},oJ={kernelName:Fs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(ci(n,r),"float32")),b:()=>P(e,me(rr(n,r),"float32"))}}},lJ={kernelName:xu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},uJ={kernelName:No,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=Pt(n.shape,a);return s.length>0?G(Te(e,s),n.shape):e},b:()=>{let s=P(e,vt(hl(ge(n,r)))),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},cJ={kernelName:Ms,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=P(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},hJ={kernelName:Io,gradFunc:e=>({x:()=>vt(e)})},dJ={kernelName:$s,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>Et(n.shape,"float32")}}},pJ={kernelName:Ro,gradFunc:e=>({x:()=>He(e)})},fJ={kernelName:Fo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:r}=n;return sr(e,r).map(a=>()=>a)}},I3={kernelName:Ds,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},mJ={kernelName:Os,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,r,a]=t,s=n,i=r,o=yt(s.shape,i.shape);return{a:()=>{let l=me(i,"float32"),u=P(e,P(l,sa(s,ye(l,be(1))))),c=Pt(s.shape,o);return c.length>0&&(u=Te(u,c)),G(u,s.shape)},b:()=>{let l=rr(s,0),u=kn(l,Mn(s),He(s)),c=P(e,P(a,u)),h=Pt(i.shape,o);return h.length>0&&(c=Te(c,h)),G(c,i.shape)}}}},AJ={kernelName:zs,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,r]=t,a=rr(n,0);return{x:()=>kn(a,e,P(e,r)),alpha:()=>{let s=kn(a,He(e),P(e,n)),i=Pt(r.shape,e.shape);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},yJ={kernelName:gs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},gJ={kernelName:$o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,vt(lt(n)))}}},xJ={kernelName:Ws,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(ci(n,6),yl(n));return{x:()=>P(e,me(r,"float32"))}}},wJ={kernelName:Ps,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,me(yl(n),"float32"))}}},_J={kernelName:Do,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>G(e,n.shape)}}},bJ={kernelName:Ls,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Zh,a,n)}}},vJ={kernelName:_u,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Kh,a,n)}}},kJ={kernelName:Bs,gradFunc:(e,t,n)=>{let{dims:r}=n,a=tr(r,e.shape);return{x:()=>Dn(e,a)}}},NJ={kernelName:Vs,gradFunc:e=>({x:()=>He(e)})},IJ={kernelName:Us,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>vt(ge(e,P(sa(n,1.5),2)))}}},SJ={kernelName:zo,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>me(He(n),"float32"),t:()=>P(e,me(n,e.dtype)),e:()=>P(e,me(ju(n),e.dtype))}}},TJ={kernelName:Po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=rr(n,be(0)),a=be(Mx),s=be($x),i=P(e,s),o=P(P(e,a),qn(me(n,"float32")));return kn(r,i,o)}}}},CJ={kernelName:js,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(n,ye(be(1),n)))}}},EJ={kernelName:Bo,gradFunc:e=>({x:()=>He(e)})},RJ={kernelName:Hs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Vu(me(n,"float32")),e)}}},FJ={kernelName:Wo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Ad(me(n,"float32")),e)}}},MJ={kernelName:Lo,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{begin:a,size:s}=n,i=r.shape,[o,l]=F5(r,a,s),u=[];for(let c=0;caa(e,u)}}},$J={kernelName:Xs,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{dim:a}=n,s=!0,i=P(e,r);return{logits:()=>ye(i,P(Te(i,[a],s),r))}}},DJ={kernelName:Vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Fn(n))}}},S3={kernelName:bu,gradFunc:(e,t,n)=>{let{blockShape:r,paddings:a}=n;return{x:()=>Wu(e,r,a)}}},T3={kernelName:Uo,gradFunc:(e,t,n)=>{let{axis:r}=n;return{x:()=>st(e,r)}}},OJ={kernelName:Gs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,P(en(me(n,"float32")),2))}}},zJ={kernelName:vu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(me(n,"float32"),2))}}},PJ={kernelName:Ks,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=be(2);return{a:()=>P(e,P(a,ye(n,r))),b:()=>P(e,P(a,ye(r,n)))}}},LJ={kernelName:Ta,gradFunc:e=>({x:()=>He(e)})},WJ={kernelName:Zs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(vt(s),r.shape)}}}},BJ={kernelName:qs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,a=r.shape.slice(),{axis:s}=n;tr(s,r.shape).forEach(l=>{a[l]=1});let i=G(e,a),o=P(i,Or(r.shape,"float32"));return{x:()=>o}}},VJ={kernelName:jo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,lt(Vu(n)))}}},UJ={kernelName:Ys,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(ye(be(1),lt(n)),e)}}},HJ={kernelName:Sa,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{reps:a}=n;return{x:()=>{let s=He(r);if(r.rank===1)for(let i=0;i{let r=n,{perm:a}=r,s=rm(a);return{x:()=>at(e,s)}}},GJ={kernelName:qo,gradFunc:(e,t,n)=>{let r=n,{axis:a}=r;return{value:()=>dn(e,a)}}},XJ={kernelName:ku,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>qJ(e,n)}}};function qJ(e,t){let n=Dr(t,He(t)),r=ui(e,n),a=za(t,be(0,"int32")),s=r.rank-a.rank;for(let o=0;o({x:()=>He(e)})},ZJ=[_3,ZZ,YZ,JZ,QZ,eY,tY,nY,rY,aY,sY,iY,uY,dY,pY,fY,mY,AY,yY,gY,xY,wY,bY,_Y,NY,IY,SY,TY,CY,EY,yJ,RY,FY,MY,$Y,DY,zY,OY,PY,LY,WY,BY,VY,UY,HY,jY,GY,qY,XY,YY,N3,N3,JY,tJ,aJ,sJ,iJ,oJ,lJ,uJ,cJ,hJ,dJ,pJ,fJ,I3,I3,mJ,AJ,gJ,xJ,wJ,_J,bJ,vJ,kJ,NJ,IJ,SJ,TJ,CJ,EJ,RJ,FJ,MJ,$J,DJ,S3,S3,T3,T3,OJ,PJ,zJ,LJ,WJ,BJ,VJ,UJ,HJ,jJ,GJ,XJ,KJ];for(let e of ZJ)Xg(e);var C3={};ze(C3,{maxNorm:()=>YJ,minMaxNorm:()=>eQ,nonNeg:()=>QJ,unitNorm:()=>JJ});var hA;function Wt(){return hA==null&&(hA=L5().epsilon()),hA}function _r(){return"channelsLast"}var ua=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ua.prototype)}},br=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,br.prototype)}},V=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,V.prototype)}},De=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,De.prototype)}},E3=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,E3.prototype)}};function vi(e,t){if(Array.isArray(e)){let n=[];for(let r=0;rn.toUpperCase())}var or={};function dA(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function pA(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>pA(t));else{let t=Object.keys(e);for(let n of t){let r=e[n];r!=null&&typeof r=="object"&&(!Array.isArray(r)&&r.type==="ndarray"&&typeof r.value=="number"?e[n]=r.value:pA(r))}}}function gc(e,t={},n={},r="object",a=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in or)i=or[s];else if(i=t[s],i==null)throw new V(`Unknown ${r}: ${e}. This may be due to one of the following reasons: + `}};function eq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:s}=t,{numSegments:i}=r,o=a.shape.length,l=[],u=0,c=R.getAxesPermutation([u],o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),l.push(h),u=R.getInnerMostAxes(1,o)[0]);let d=R.segment_util.computeOutShape(h.shape,u,i),p=v.sizeFromShape([h.shape[u]]),f=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,p]}});l.push(f);let m=sd(a.dtype),A=(b,w,x,I,S)=>{let T=b.shape[0],M=b.shape[1],D=R.segment_util.segOpComputeOptimalWindowSize(M,S),z={windowSize:D,inSize:M,batchSize:T,numSegments:S},W=new QG(z,w),U=n.compileAndRun(W,[b,x],I);if(l.push(U),U.shape[1]===S)return U;let H=kb({backend:n,attrs:{start:0,stop:S,step:1,dtype:"float32"}}),X=Sb({inputs:{x:H},backend:n,attrs:{reps:[M/D]}});return l.push(H),l.push(X),A(U,w,X,I,S)},y=A(f,"unsortedSegmentSum",s,m,i),g=Ae({inputs:{x:y},backend:n,attrs:{shape:d}}),_=g;if(c!=null){l.push(g);let b=R.getUndoAxesPermutation(c);_=In({inputs:{x:_},backend:n,attrs:{perm:b}})}return l.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var tq={kernelName:ku,backendName:"webgl",kernelFunc:eq},nq=[jU,XU,ML,DL,PL,BL,UL,GL,XL,ZL,eW,nW,sW,lW,mW,hW,gW,bW,wW,IW,TW,EW,$W,BW,UW,KW,YW,tB,aB,fL,lB,gB,wB,dB,kB,IB,bB,CB,FB,DB,zB,LB,VB,XB,ZB,HB,QB,nV,iV,cV,fV,yV,gV,xV,_V,vV,NV,SV,CV,MV,zV,LV,BV,HV,XV,JV,nU,pL,aU,oB,oU,cU,pU,AL,yU,_U,vU,EU,SU,$U,zU,BU,ZU,aH,nH,lH,cH,dH,eH,fH,AH,wH,kH,TH,OH,_L,PH,BH,HH,qH,jW,ZH,JH,ej,rj,oj,gL,uj,cj,GW,FH,pj,_j,yj,vL,Nj,Tj,Rj,$j,Pj,Wj,Uj,Gj,Xj,Yj,eG,rG,iG,uG,dG,LW,$H,mG,yG,xG,_G,kG,SG,CG,RG,$G,MH,EL,zG,WG,UG,jG,XG,RL,ZG,JG,tq,YH];for(let e of nq)ni(e);var Pn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Pn||(Pn={}));var fc;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(fc||(fc={}));var Tb;function rq(e){Tb=e.wasm.cwrap(Qs,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function aq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r,d=n.dataIdMap.get(a.dataId).id,p=n.dataIdMap.get(s.dataId).id,f=0;if(i!=null){let S=n.dataIdMap.get(i.dataId);if(S.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${S.shape.length}.`);f=S.id}let m=o==null?0:n.dataIdMap.get(o.dataId).id,A=fc[c];if(A==null)throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?a.shape[2]:a.shape[1],g=u?s.shape[1]:s.shape[2],_=a.shape[0],b=n.makeOutput([_,y,g],a.dtype),w=n.dataIdMap.get(b.dataId).id,x=new Uint8Array(new Int32Array(a.shape).buffer),I=new Uint8Array(new Int32Array(s.shape).buffer);return Tb(d,x,a.shape.length,p,I,s.shape.length,l,u,A,f,m,h||0,w),b}var sq={kernelName:Qs,backendName:"wasm",setupFunc:rq,kernelFunc:aq};function Sn(e){let t;function n(a){t=a.wasm.cwrap(e,null,["number","number"])}function r(a){let{backend:s,inputs:{x:i}}=a,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),u=s.dataIdMap.get(l.dataId).id;return v.sizeFromShape(l.shape)===0||t(o,u),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:r}}var iq=Sn(Zi);function An(e,t,n){let r;function a(i){r=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:u,b:c}=l,h=o.dataIdMap.get(u.dataId).id,d=o.dataIdMap.get(c.dataId).id,p=n!=null?n:u.dtype,f=R.assertAndGetBroadcastShape(u.shape,c.shape),m=o.makeOutput(f,p);if(v.sizeFromShape(f)===0)return m;let A=new Uint8Array(new Int32Array(u.shape).buffer),y=new Uint8Array(new Int32Array(c.shape).buffer),g=o.dataIdMap.get(m.dataId).id,_=()=>r(h,A,u.shape.length,d,y,c.shape.length,Pn[u.dtype],g);if(t&&u.dtype==="float32")return _(),m;let b=R.getBroadcastDims(u.shape,f),w=R.getBroadcastDims(c.shape,f),x=b.every((S,T)=>S===T),I=w.every((S,T)=>S===T);if(x&&I)return _(),m;throw new Error(`Broadcasting along outer dims is not yet supported for ${u.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:a,kernelFunc:s}}var oq=!0,lq=An(Na,oq),Cb;function uq(e){Cb=e.wasm.cwrap(os,null,["array","number","number","number"])}function cq(e){let{inputs:t,backend:n}=e,r=n.makeOutput(t[0].shape,t[0].dtype);if(v.sizeFromShape(r.shape)===0)return r;let a=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(a).buffer),i=n.dataIdMap.get(r.dataId).id;return Cb(s,a.length,Pn[r.dtype],i),r}var hq={kernelName:os,backendName:"wasm",setupFunc:uq,kernelFunc:cq};function xp(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype),a=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(r).set(a),r}var dq={kernelName:ks,backendName:"wasm",kernelFunc:xp},Eb;function pq(e){Eb=e.wasm.cwrap(Js,null,["number","array","number","number","number","array","number"])}function wp(e){let{inputs:t,backend:n,attrs:r}=e,[a,s]=mq(t.x.shape,r.perm),i=!0;for(let f=0;f=a&&(s===-1||r[s]>r[i])&&(s=i);r[s]=a}return[n,r]}var Aq={kernelName:Js,backendName:"wasm",kernelFunc:wp,setupFunc:pq};function $l(e,t,n){let r=e.shape,a=e.shape.length,s=v.parseAxisParam(t,r),i=s,o=R.getAxesPermutation(i,a),l=null,u=!1;if(o!=null){let c=new Array(a);for(let d=0;d`new shape: ${i}, old shape: ${r.shape}. New shape and old shape must have the same number of elements.`),e.backend.incRef(r.dataId),{dataId:r.dataId,shape:i,dtype:r.dtype}}var vq={kernelName:Do,backendName:"wasm",kernelFunc:wr},Mb;function kq(e){Mb=e.wasm.cwrap(cs,null,["number","array","number","number","array","number","number","number","number"])}function Nq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=wr({inputs:{x:a},backend:n,attrs:{shape:b}}),I=wr({inputs:{x:s},backend:n,attrs:{shape:w}}),S=n.dataIdMap.get(x.dataId).id,T=n.dataIdMap.get(I.dataId).id,M=i?x.shape[2]:x.shape[1],D=o?I.shape[1]:I.shape[2],z=Math.max(A,y),W=n.makeOutput([z,M,D],x.dtype),U=n.dataIdMap.get(W.dataId).id,H=new Uint8Array(new Int32Array(x.shape).buffer),X=new Uint8Array(new Int32Array(I.shape).buffer);return Mb(S,H,x.shape.length,T,X,I.shape.length,i,o,U),n.disposeData(x.dataId),n.disposeData(I.dataId),W.shape=_,W}var Iq={kernelName:cs,backendName:"wasm",setupFunc:kq,kernelFunc:Nq};function _p(e){let{inputs:{x:t},attrs:{dtype:n},backend:r}=e,a=r.makeOutput(t.shape,n),s=r.typedArrayFromHeap(t);return r.typedArrayFromHeap(a).set(s),a}var Sq={kernelName:hs,backendName:"wasm",kernelFunc:_p},Tq=Sn(ds),$b;function Cq(e){$b=e.wasm.cwrap(Ia,null,["number","number","number","number"])}function Eq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o=n.dataIdMap.get(a.dataId).id,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(l.dataId).id;return $b(o,s,i,u),l}var Rq={kernelName:Ia,backendName:"wasm",setupFunc:Cq,kernelFunc:Eq};function Db(e){let{inputs:t,backend:n}=e,r=v.parseAxisParam(e.attrs.axis,t[0].shape)[0],a=R.computeOutShape(t.map(p=>p.shape),r),s=t.filter(p=>v.sizeFromShape(p.shape)>0);if(s.length===1)return xp({inputs:{x:s[0]},backend:n});let i=n.makeOutput(a,t[0].dtype);if(v.sizeFromShape(a)===0)return i;let o=s.map(p=>p.shape);if(R.assertParamsConsistent(o,r),s[0].dtype==="string"){let p=s.map(_=>{let b=v.sizeFromShape(_.shape.slice(r));return wr({inputs:{x:_},backend:n,attrs:{shape:[-1,b]}})}),f=p.map(_=>({vals:n.readSync(_.dataId),shape:_.shape}));a=R.computeOutShape(p.map(_=>_.shape),1);let m=p[0].shape[0]===1,A=Sm(f,a,t[0].dtype,m),y=R.computeOutShape(s.map(_=>_.shape),r);i.shape=y;let g=n.dataIdMap.get(i.dataId);return g.stringBytes=R.fromStringArrayToUint8(A),p.forEach(_=>n.disposeData(_.dataId)),i}let l=v.sizeFromShape(s[0].shape.slice(0,r)),u=0,c=s.map(p=>{let f=v.sizeFromShape(p.shape.slice(r));return u+=f,f}),h=s.map(p=>n.typedArrayFromHeap(p)),d=n.typedArrayFromHeap(i);for(let p=0;p`cumsum does not support ${a.dtype} tensors in the WASM backend`);let u=R.getAxesPermutation([s],l),c=a;u!==null&&(c=wp({inputs:{x:a},attrs:{perm:u},backend:n}));let h=R.getInnerMostAxes(1,l)[0];R.assertAxesAreInnerMostDims("cumsum",[h],l);let d=n.makeOutput(c.shape,c.dtype),p=c.shape[h],f=n.dataIdMap.get(c.dataId).id,m=n.dataIdMap.get(d.dataId).id;Lb(f,i?1:0,o?1:0,p,m,Pn[a.dtype]);let A=d;if(u!==null){let y=R.getUndoAxesPermutation(u);A=wp({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(c.dataId),n.disposeData(d.dataId)}return A}var jq={kernelName:As,backendName:"wasm",setupFunc:Uq,kernelFunc:Hq},Wb;function Gq(e){Wb=e.wasm.cwrap(oo,null,["number","number","number","array","number","array","array","number","number"])}function qq(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=t.makeOutput(f,"float32"),A=t.dataIdMap.get(a.dataId).id,y=new Uint8Array(new Int32Array(v.computeStrides(a.shape)).buffer),g=new Uint8Array(new Int32Array(f).buffer),_=new Uint8Array(new Int32Array(v.computeStrides(f)).buffer),b=t.dataIdMap.get(m.dataId).id;return Wb(A,s,i==="NHWC"?1:0,y,a.shape.length-1,g,_,f.length,b),m}var Xq={kernelName:oo,backendName:"wasm",setupFunc:Gq,kernelFunc:qq},Bb;function Kq(e){Bb=e.wasm.cwrap(ys,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Zq(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s}=t,i=r.dataIdMap.get(a.dataId).id,o=r.dataIdMap.get(s.dataId).id,{strides:l,dilations:u,pad:c,dimRoundingMode:h}=n,d=u==null?[1,1]:u,p=R.computeConv2DInfo(a.shape,s.shape,l,d,c,h,!0),f=p.filterHeight,m=p.filterWidth,A=p.padInfo.top,y=p.padInfo.right,g=p.padInfo.bottom,_=p.padInfo.left,b=p.dilationHeight,w=p.dilationWidth,x=p.strideHeight,I=p.strideWidth,S=p.inChannels,T=p.outChannels,M=p.padInfo.type==="SAME"?1:0;if(p.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${p.dataFormat}'. Please use 'channelsLast'.`);let D=r.makeOutput(p.outShape,"float32"),z=r.dataIdMap.get(D.dataId).id;return Bb(i,a.shape[0],a.shape[1],a.shape[2],o,f,m,A,y,g,_,M,b,w,x,I,S,T,z),D}var Yq={kernelName:ys,backendName:"wasm",setupFunc:Kq,kernelFunc:Zq},Jq=!1,Qq=An(co,Jq,"bool"),eX=Sn(xs);function oA(e){let{inputs:t,attrs:n,backend:r}=e,{input:a}=t,{dim:s}=n,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),wr({inputs:{x:a},backend:r,attrs:{shape:o}})}var tX={kernelName:ho,backendName:"wasm",kernelFunc:oA};function nX(e){let{attrs:{shape:t,value:n,dtype:r},backend:a}=e,s=a.makeOutput(t,r);return a.typedArrayFromHeap(s).fill(n),s}var rX={kernelName:fu,backendName:"wasm",kernelFunc:nX},Vb;function aX(e){Vb=e.wasm.cwrap(fo,null,["number","number","number","number","number","number"])}function sX(e){let{inputs:t,backend:n}=e,{image:r}=t,a=n.makeOutput(r.shape,r.dtype),s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,[o,l,u,c]=r.shape;return Vb(s,o,l,u,c,i),a}var iX={kernelName:fo,backendName:"wasm",kernelFunc:sX,setupFunc:aX},oX=Sn(ws),lX=!1,uX=An(_s,lX),Ub;function cX(e){Ub=e.wasm.cwrap(bs,null,["number","number","number","number","number","number","number"])}function hX(e){let{backend:t,inputs:n,attrs:r}=e,{varianceEpsilon:a}=r,{x:s,mean:i,variance:o,offset:l,scale:u}=n,c=t.dataIdMap.get(s.dataId).id,h=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,p=l!=null?t.dataIdMap.get(l.dataId).id:0,f=u!=null?t.dataIdMap.get(u.dataId).id:0,m=t.makeOutput(s.shape,s.dtype);if(v.sizeFromShape(s.shape)===0)return m;let A=t.dataIdMap.get(m.dataId).id;return Ub(c,h,d,p,f,a,A),m}var dX={kernelName:bs,backendName:"wasm",setupFunc:cX,kernelFunc:hX},Hb;function pX(e){Hb=e.wasm.cwrap(ei,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return Hb(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var mX={kernelName:ei,backendName:"wasm",setupFunc:pX,kernelFunc:fX},jb;function AX(e){jb=e.wasm.cwrap(ti,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function yX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d,!0),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedDepthwiseConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return jb(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var gX={kernelName:ti,backendName:"wasm",setupFunc:AX,kernelFunc:yX},Gb;function xX(e){Gb=e.wasm.cwrap(Ao,null,["number","number","number","number","number","number","array","number"])}function wX(e){let{backend:t,inputs:n}=e,{params:r,indices:a}=n,[s,i,o,l]=If.prepareAndValidate(r,a),u=t.makeOutput(s,r.dtype);if(i===0)return u;let c=a.shape,h=c[c.length-1],d=t.dataIdMap.get(r.dataId).id,p=t.dataIdMap.get(a.dataId).id,f=new Uint8Array(new Int32Array(l).buffer),m=t.dataIdMap.get(u.dataId).id;return Gb(d,Pn[r.dtype],p,i,h,o,f,m),u}var _X={kernelName:Ao,backendName:"wasm",setupFunc:xX,kernelFunc:wX},qb;function bX(e){qb=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function vX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a,indices:s}=n,{axis:i,batchDims:o}=r,l=v.parseAxisParam(i,a.shape)[0],u=R.segment_util.collectGatherOpShapeInfo(a,s,l,o),c=wr({inputs:{x:a},attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]},backend:t}),h=v.sizeFromShape(s.shape),d=wr({inputs:{x:s},attrs:{shape:[u.batchSize,h/u.batchSize]},backend:t}),p=[u.batchSize,u.outerSize,h/u.batchSize,u.sliceSize],f=t.makeOutput(p,a.dtype);if(v.sizeFromShape(a.shape)===0)return f;let m=c.shape.length-1,A=t.dataIdMap.get(c.dataId).id,y=t.dataIdMap.get(d.dataId).id,g=t.dataIdMap.get(f.dataId).id,_=new Uint8Array(new Int32Array(v.computeStrides(c.shape)).buffer),b=new Uint8Array(new Int32Array(v.computeStrides(p)).buffer);return qb(A,Pn[a.dtype],_,m,y,u.batchSize,b,g),t.disposeData(c.dataId),t.disposeData(d.dataId),f.shape=u.outputShape,f}var kX={kernelName:mo,backendName:"wasm",setupFunc:bX,kernelFunc:vX},NX=!1,IX=An(yo,NX,"bool"),SX=!1,TX=An(vs,SX,"bool"),Xb;function CX(e){Xb=e.wasm.cwrap(Ns,null,["number","number","number"])}function EX(e){let{inputs:{x:t},attrs:{alpha:n},backend:r}=e,a=r.dataIdMap.get(t.dataId).id,s=r.makeOutput(t.shape,t.dtype);if(v.sizeFromShape(t.shape)!==0){let i=r.dataIdMap.get(s.dataId).id;Xb(a,n,i)}return s}var RX={kernelName:Ns,backendName:"wasm",setupFunc:CX,kernelFunc:EX},FX=!1,MX=An(_o,FX,"bool"),$X=!1,DX=An(bo,$X,"bool"),OX=Sn(Is),zX=!1,PX=An(ko,zX,"bool"),Kb;function LX(e){Kb=e.wasm.cwrap(Ss,null,["number, number, number"])}function WX(e){let{backend:t,inputs:n,attrs:r}=e,{reductionIndices:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:u,axes:c,originalAxes:h,inputWasTransposed:d}=$l(i,a,t);if(d){let g=t.dataIdMap.get(u.dataId).id;l=u,o=g}let p=l.shape.length;R.assertAxesAreInnerMostDims("max",c,p);let[f,m]=R.computeOutAndReduceShapes(l.shape,c),A=v.sizeFromShape(m),y=t.makeOutput(f,i.dtype);if(v.sizeFromShape(l.shape)!==0){let g=t.dataIdMap.get(y.dataId).id;Kb(o,A,g)}if(d&&t.disposeData(u.dataId),s){let g=R.expandShapeToKeepDim(y.shape,h);y.shape=g}return y}var BX={kernelName:Ss,backendName:"wasm",setupFunc:LX,kernelFunc:WX},VX=!1,UX=An(Ts,VX),Zb;function HX(e){Zb=e.wasm.cwrap(Cs,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function jX(e){let{inputs:t,attrs:n,backend:r}=e,a=t.x,s=r.dataIdMap.get(a.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=n,c=R.computePool2DInfo(a.shape,i,o,1,l,u),h=c.filterHeight,d=c.filterWidth,p=c.padInfo.top,f=c.padInfo.right,m=c.padInfo.bottom,A=c.padInfo.left,y=c.dilationHeight,g=c.dilationWidth,_=c.strideHeight,b=c.strideWidth,w=c.inChannels,x=c.outChannels;if(c.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);let I=r.makeOutput(c.outShape,"float32"),S=r.dataIdMap.get(I.dataId).id;return Zb(s,a.shape[0],a.shape[1],a.shape[2],h,d,p,f,m,A,y,g,_,b,w,x,S),I}var GX={kernelName:Cs,backendName:"wasm",setupFunc:HX,kernelFunc:jX},Yb;function qX(e){Yb=e.wasm.cwrap(Es,null,["number, number, number"])}function XX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("mean",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=u;u.dtype!=="float32"&&(g=_p({backend:t,inputs:{x:u},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(g.dataId).id);let _=t.makeOutput(m,"float32");if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(_.dataId).id;Yb(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(_.shape,d);_.shape=b}return u.dtype!=="float32"&&t.disposeData(g.dataId),_}var KX={kernelName:Es,backendName:"wasm",setupFunc:qX,kernelFunc:XX},Jb;function ZX(e){Jb=e.wasm.cwrap(Rs,null,["number, number, number"])}function YX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t);if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_)}let f=u.shape.length;R.assertAxesAreInnerMostDims("min",h,f);let[m,A]=R.computeOutAndReduceShapes(u.shape,h),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;Jb(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var JX={kernelName:Rs,backendName:"wasm",setupFunc:ZX,kernelFunc:YX},QX=!1,eK=An(Fs,QX),tK=!0,nK=An(Ms,tK),rK=Sn(Io);function lA(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),r=n[0],a=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:r,selectedSize:a,pSelectedScores:s,pValidOutputs:i}}var Qb;function aK(e){Qb=e.wasm.cwrap(To,"number",["number","number","number","number","number"])}function sK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i}=r,{boxes:o,scores:l}=n,u=t.dataIdMap.get(o.dataId).id,c=t.dataIdMap.get(l.dataId).id,h=Qb(u,c,s,a,i),{pSelectedIndices:d,selectedSize:p,pSelectedScores:f,pValidOutputs:m}=lA(t,h);return t.wasm._free(f),t.wasm._free(m),t.makeOutput([p],"int32",d)}var iK={kernelName:To,backendName:"wasm",setupFunc:aK,kernelFunc:sK},e3;function oK(e){e3=e.wasm.cwrap(Co,"number",["number","number","number","number","number","bool"])}function lK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=e3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(m);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([],"int32",A);return[y,g]}var uK={kernelName:Co,backendName:"wasm",setupFunc:oK,kernelFunc:lK},t3;function cK(e){t3=e.wasm.cwrap(Eo,"number",["number","number","number","number","number","number"])}function hK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=t3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(A);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([f],"float32",m);return[y,g]}var dK={kernelName:Eo,backendName:"wasm",setupFunc:cK,kernelFunc:hK},pK=!1,fK=An(So,pK,"bool"),n3;function mK(e){n3=e.wasm.cwrap($s,null,["number","number","number","number","number"])}function AK(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=n.makeOutput([...a.shape,s],"int32"),u=n.dataIdMap.get(l.dataId).id,c=n.dataIdMap.get(a.dataId).id;return n3(c,s,i,o,u),l}var yK={kernelName:$s,backendName:"wasm",setupFunc:mK,kernelFunc:AK};function gK(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(1),r}var xK={kernelName:Ro,backendName:"wasm",kernelFunc:gK};function wK(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return oA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=oA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=Db({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeData(c.dataId)),u}var _K={kernelName:Fo,backendName:"wasm",kernelFunc:wK},r3;function bK(e){r3=e.wasm.cwrap(Ds,null,["number","array","number","number","array","array","number","number"])}function vK(e){let{inputs:{x:t},backend:n,attrs:{paddings:r,constantValue:a}}=e,s=r.map((f,m)=>f[0]+t.shape[m]+f[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(t.shape).buffer),c=r.map(f=>f[0]),h=r.map(f=>f[1]),d=new Uint8Array(new Int32Array(c).buffer),p=new Uint8Array(new Int32Array(h).buffer);return r3(i,u,t.shape.length,Pn[t.dtype],d,p,a,l),o}var kK={kernelName:Ds,backendName:"wasm",kernelFunc:vK,setupFunc:bK},NK=!1,IK=An(Os,NK),a3;function SK(e){a3=e.wasm.cwrap(zs,null,["number","number","number"])}function TK(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,o=n.makeOutput(r.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return a3(s,i,l),o}var CK={kernelName:zs,backendName:"wasm",setupFunc:SK,kernelFunc:TK},s3;function EK(e){s3=e.wasm.cwrap(Mo,null,["number","number","number","number"])}function RK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("prod",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;s3(l,y,Pn[g.dtype],_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var FK={kernelName:Mo,backendName:"wasm",setupFunc:EK,kernelFunc:RK},MK=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=Em(r,a,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},$K={kernelName:wu,backendName:"wasm",kernelFunc:MK},DK=!0,OK=An(gs,DK),zK=Sn(Ps),PK=Sn(Ws),i3;function LK(e){i3=e.wasm.cwrap(Ls,null,["number","number","number","number","number","number","number","number","number","number"])}function WK(e){let{backend:t,inputs:n,attrs:r}=e,{images:a}=n,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,[c,h,d,p]=a.shape,f=[c,l,u,p],m=t.dataIdMap.get(a.dataId),A;m.dtype!=="float32"&&(A=_p({backend:t,inputs:{x:a},attrs:{dtype:"float32"}}),m=t.dataIdMap.get(A.dataId));let y=m.id,g=t.makeOutput(f,"float32");if(v.sizeFromShape(a.shape)===0)return g;let _=t.dataIdMap.get(g.dataId).id;return i3(y,c,h,d,p,l,u,s?1:0,i?1:0,_),A!=null&&t.disposeData(A.dataId),g}var BK={kernelName:Ls,backendName:"wasm",setupFunc:LK,kernelFunc:WK},o3;function VK(e){o3=e.wasm.cwrap(Bs,null,["number","array","number","array","number","number"])}function UK(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=v.parseAxisParam(s,a.shape);if(a.shape.length===0)return xp({inputs:{x:a},backend:n});let o=n.makeOutput(a.shape,a.dtype),l=n.dataIdMap.get(a.dataId).id,u=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(i).buffer),h=new Uint8Array(new Int32Array(a.shape).buffer);o3(l,c,i.length,h,a.shape.length,u);let d=wr({inputs:{x:o},attrs:{shape:a.shape},backend:n});return n.disposeData(o.dataId),d}var HK={kernelName:Bs,backendName:"wasm",kernelFunc:UK,setupFunc:VK},l3;function jK(e){l3=e.wasm.cwrap(Ko,null,["number","number","number","number","number","number","number","number","array","number","number"])}function GK(e){let{inputs:t,backend:n,attrs:r}=e,{image:a}=t,{radians:s,fillValue:i,center:o}=r,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(a.dataId).id,c=n.dataIdMap.get(l.dataId).id,[h,d,p,f]=a.shape,[m,A]=R.getImageCenter(o,d,p),y=i===0,g=255,_=typeof i=="number"?[i,i,i,y?0:g]:[...i,g],b=new Uint8Array(new Int32Array(_).buffer);return l3(u,h,d,p,f,s,m,A,b,_.length,c),l}var qK={kernelName:Ko,backendName:"wasm",kernelFunc:GK,setupFunc:jK},XK=Sn(Vs),KK=Sn(Us),u3;function ZK(e){u3=e.wasm.cwrap(Oo,null,["number","number","number","number","number","number","array","number","number"])}function YK(e){let{backend:t,inputs:n,attrs:r}=e,{indices:a,updates:s}=n,{shape:i}=r,o=t.makeOutput(i,s.dtype);if(v.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:u,sliceSize:c,strides:h,outputSize:d}=Sf.calculateShapes(s,a,i),p=t.dataIdMap.get(a.dataId).id,f=t.dataIdMap.get(s.dataId).id,m=new Uint8Array(new Int32Array(h).buffer),A=t.dataIdMap.get(o.dataId).id;return u3(p,f,Pn[s.dtype],l,u,c,m,d,A),o}var JK={kernelName:Oo,backendName:"wasm",setupFunc:ZK,kernelFunc:YK},c3;function QK(e){c3=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function eZ(e){let{inputs:t,backend:n}=e,{condition:r,t:a,e:s}=t,i=n.dataIdMap.get(r.dataId).id,o=n.dataIdMap.get(a.dataId).id,l=n.dataIdMap.get(s.dataId).id,u=n.makeOutput(a.shape,a.dtype),c=n.dataIdMap.get(u.dataId).id,h=r.shape.length,d=a.shape.length,p=h===0||h>1||d===1?1:v.sizeFromShape(a.shape.slice(1));return c3(i,o,l,p,c),u}var tZ={kernelName:zo,backendName:"wasm",kernelFunc:eZ,setupFunc:QK},h3;function nZ(e){h3=e.wasm.cwrap(js,null,["number","number"])}function rZ(e){let{backend:t,inputs:{x:n}}=e,r=t.dataIdMap.get(n.dataId).id,a=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(a.dataId).id;return v.sizeFromShape(a.shape)===0||h3(r,s),a}var aZ={kernelName:"Sigmoid",backendName:"wasm",setupFunc:nZ,kernelFunc:rZ},sZ=Sn(Hs);function bp(e){let{inputs:{x:t},attrs:{begin:n,size:r},backend:a}=e,[s,i]=cn.parseSliceParams(t,n,r),o=cn.isSliceContinous(t.shape,s,i),l=a.readSync(t.dataId),u=a.makeOutput(i,t.dtype),c=v.computeStrides(t.shape),h=a.dataIdMap.get(u.dataId);if(o){let f=cn.computeFlatOffset(s,c);return t.dtype==="string"?h.stringBytes=l.slice(f,f+v.sizeFromShape(i)):a.typedArrayFromHeap(u).set(l.subarray(f,f+v.sizeFromShape(i))),u}if(t.dtype==="string"){let f=Yd(l,s,i,t.shape,t.dtype);return h.stringBytes=f,u}let d=a.typedArrayFromHeap(u),p=t.shape.length;if(p===2)iZ(l,c[0],d,s,i);else if(p===3)oZ(l,c[0],c[1],d,s,i);else if(p===4)lZ(l,c[0],c[1],c[2],d,s,i);else{let f=Yd(l,s,i,t.shape,t.dtype);d.set(f)}return u}function iZ(e,t,n,r,a){let s=0,i=r[0],o=r[1],l=i+a[0];for(let u=i;u{let d=[...c];d[o]=h;let p=bp({inputs:{x:a},attrs:{begin:u,size:d},backend:r});return u[o]+=h,p})}var fZ={kernelName:Uo,backendName:"wasm",kernelFunc:pZ},mZ=Sn(Gs),AZ=Sn(vu),yZ=!0,gZ=An(Ks,yZ),p3;function xZ(e){p3=e.wasm.cwrap(Ta,null,["number","number","number"])}function wZ(e){let{backend:t,inputs:n,attrs:r}=e,{alpha:a}=r,{x:s}=n,i=t.dataIdMap.get(s.dataId).id,o=t.makeOutput(s.shape,s.dtype),l=t.dataIdMap.get(o.dataId).id;return p3(i,a,l),o}var _Z={kernelName:Ta,backendName:"wasm",setupFunc:xZ,kernelFunc:wZ},f3;function bZ(e){f3=e.wasm.cwrap(Ho,null,["number","array","number","array","array","array","array","array","number","number"])}function vZ(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{begin:s,end:i,strides:o}=r;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,p=R.slice_util.maskToAxes(c);if(p.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(c!==0&&h!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(c!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let f=a.shape.length-s.length,m=R.slice_util.maskToAxes(h),A=a.shape.slice();m.forEach(M=>{s[M]=0,i[M]=1,A.splice(M,0,1)});let y=wr({inputs:{x:a},attrs:{shape:A},backend:t}),{begin:g,end:_,strides:b}=R.slice_util.getNormalizedAxes(y.shape,p,f,s,i,o,l,u,c);s=g,i=_,o=b;let w=R.slice_util.maskToAxes(d);w.forEach(M=>{i[M]=s[M]+1,o[M]=1});let x=R.slice_util.computeOutShape(s,i,o),I=x.filter((M,D)=>w.indexOf(D)===-1);if(o.every(M=>M===1)){let M=bp({inputs:{x:y},attrs:{begin:s,size:x},backend:t});t.disposeData(y.dataId);let D=wr({inputs:{x:M},attrs:{shape:I},backend:t});return t.disposeData(M.dataId),D}let S=t.makeOutput(I,"float32");if(!I.some(M=>M===0)){let M=t.dataIdMap.get(y.dataId).id,D=new Uint8Array(new Int32Array(v.computeStrides(y.shape)).buffer),z=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),U=new Uint8Array(new Int32Array(o).buffer),H=new Uint8Array(new Int32Array(I).buffer),X=new Uint8Array(new Int32Array(v.computeStrides(I)).buffer),j=t.dataIdMap.get(S.dataId).id;f3(M,D,y.shape.length,z,W,U,H,X,I.length,j)}t.disposeData(y.dataId);let T=wr({inputs:{x:S},attrs:{shape:I},backend:t});return t.disposeData(S.dataId),T}var kZ={kernelName:Ho,backendName:"wasm",setupFunc:bZ,kernelFunc:vZ},NZ=!0,IZ=An(Zs,NZ),m3;function SZ(e){m3=e.wasm.cwrap(qs,null,["number, number, number"])}function TZ(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("sum",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;m3(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var CZ={kernelName:qs,backendName:"wasm",setupFunc:SZ,kernelFunc:TZ},EZ=Sn(Ys),A3;function RZ(e){A3=e.wasm.cwrap(Sa,null,["number","array","number","array","number","number"])}function FZ(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,s=n.dataIdMap.get(a.dataId).id,{reps:i}=r,o=new Array(a.shape.length);for(let d=0;d{let{x:r}=e,{k:a,sorted:s}=n,i=t.dataIdMap.get(r.dataId).id,o=new Uint8Array(new Int32Array(r.shape).buffer),l=r.shape.slice();l[l.length-1]=a;let u=t.makeOutput(l,r.dtype),c=t.dataIdMap.get(u.dataId).id,h=t.makeOutput(l,"int32"),d=t.dataIdMap.get(h.dataId).id;return y3(i,o,r.shape.length,Pn[r.dtype],a,s,c,d),[u,h]},OZ={kernelName:Go,backendName:"wasm",setupFunc:$Z,kernelFunc:DZ};function zZ(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a.shape[s],o=a.shape.length,l=new Array(o-1),u=0;for(let p=0;p({dataId:p,dtype:f,shape:l}))}var PZ={kernelName:qo,backendName:"wasm",kernelFunc:zZ};function LZ(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(0),r}var WZ={kernelName:Xo,backendName:"wasm",kernelFunc:LZ},BZ=[iq,lq,hq,xq,bq,Iq,Sq,Tq,Rq,Fq,Dq,Pq,Lq,Vq,jq,Xq,Yq,Qq,eX,tX,rX,iX,oX,uX,sq,dX,mX,gX,_X,kX,IX,TX,dq,RX,MX,DX,OX,PX,BX,UX,GX,KX,JX,eK,nK,rK,iK,uK,dK,fK,yK,xK,_K,kK,IK,CK,FK,$K,OK,zK,PK,vq,BK,HK,qK,KK,XK,JK,tZ,aZ,sZ,uZ,dZ,fZ,mZ,AZ,gZ,_Z,kZ,IZ,CZ,EZ,MZ,OZ,Aq,PZ,WZ];for(let e of BZ)ni(e);var uA=J();uA.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));uA.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(uA.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var g3=qi(q8()),VZ='var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["getNoExitRuntime"]()){}else{Module["PThread"].threadExit(ex.status)}}else{Module["PThread"].threadExit(-2);throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',UZ=qi(X8()),x3=class extends su{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new xh(this,Fr())}write(e,t,n){let r={id:this.dataIdNextNumber++};return this.move(r,e,t,n,1),r}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}move(e,t,n,r,a){let s=this.dataIdNextNumber++;if(r==="string"){let u=t;this.dataIdMap.set(e,{id:s,stringBytes:u,shape:n,dtype:r,memoryOffset:null,refCount:a});return}let i=v.sizeFromShape(n),o=i*v.bytesPerElement(r),l=this.wasm._malloc(o);this.dataIdMap.set(e,{id:s,memoryOffset:l,shape:n,dtype:r,refCount:a}),this.wasm.tfjs.registerTensor(s,i,l),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,o),l)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:r,stringBytes:a}=this.dataIdMap.get(e);if(n==="string")return a;let s=this.wasm.HEAPU8.slice(t,t+v.sizeFromShape(r)*v.bytesPerElement(n));return HZ(s.buffer,n)}disposeData(e,t=!1){if(this.dataIdMap.has(e)){let n=this.dataIdMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;this.wasm._free(n.memoryOffset),this.wasm.tfjs.disposeData(n.id),this.dataIdMap.delete(e)}return!0}refCount(e){return this.dataIdMap.has(e)?this.dataIdMap.get(e).refCount:0}incRef(e){let t=this.dataIdMap.get(e);t!=null&&t.refCount++}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let r;if(n==null)r=this.write(null,e,t);else{let a=this.dataIdNextNumber++;r={id:a},this.dataIdMap.set(r,{id:a,memoryOffset:n,shape:e,dtype:t,refCount:1});let s=v.sizeFromShape(e);this.wasm.tfjs.registerTensor(a,s,n)}return{dataId:r,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let r=this.wasm.HEAPU8.buffer,{memoryOffset:a}=this.dataIdMap.get(n),s=v.sizeFromShape(e);switch(t){case"float32":return new Float32Array(r,a,s);case"int32":return new Int32Array(r,a,s);case"bool":return new Uint8Array(r,a,s);default:throw new Error(`Unknown dtype ${t}`)}}};function jZ(e){return(t,n)=>(v.fetch(e,{credentials:"same-origin"}).then(r=>{r.ok||t.env.a(`failed to load wasm binary file at '${e}'`),r.arrayBuffer().then(a=>{WebAssembly.instantiate(a,t).then(s=>{n(s.instance)})})}),{})}function w3(e,t,n){if(vp!=null)return vp;let r="tfjs-backend-wasm.wasm";return e&&t?r="tfjs-backend-wasm-threaded-simd.wasm":e&&(r="tfjs-backend-wasm-simd.wasm"),mc!=null&&mc[r]!=null?mc[r]:n+r}async function GZ(){let[e,t]=await Promise.all([J().getAsync("WASM_HAS_SIMD_SUPPORT"),J().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,r)=>{let a={};a.locateFile=(o,l)=>{if(o.endsWith(".worker.js")){let u=VZ,c=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(c)}return o.endsWith(".wasm")?w3(e,t,Ac!=null?Ac:l):l+o},cA&&(a.instantiateWasm=jZ(w3(e,t,Ac!=null?Ac:"")));let s=!1;a.onAbort=()=>{s||yc||(yc=!0,r({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))};let i;t&&e&&vp==null?(a.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+g3.default.toString()],{type:"text/javascript"}),i=(0,g3.default)(a)):i=(0,UZ.default)(a),i.then(o=>{s=!0,yc=!1;let l=null;o.tfjs={init:o.cwrap("init",null,[]),registerTensor:o.cwrap("register_tensor",null,["number","number","number"]),disposeData:o.cwrap("dispose_data",l,["number"]),dispose:o.cwrap("dispose",l,[])},n({wasm:o})})})}function HZ(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var qZ=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],vp=null,Ac=null,mc={},yc=!1,cA=!1;function XZ(e,t=!1){if(Mf("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");vp=e,cA=t}function KZ(e,t=!1){if(yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Ac=e;else{mc=e;let n=qZ.filter(r=>mc[r]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}cA=t}var _3="3.3.0",ZZ=2;sl("wasm",async()=>{let{wasm:e}=await GZ();return new x3(e)},ZZ);Z().prototype.abs=function(){return this.throwIfDisposed(),zt(this)};Z().prototype.acos=function(){return this.throwIfDisposed(),Df(this)};Z().prototype.acosh=function(){return this.throwIfDisposed(),Of(this)};Z().prototype.add=function(e){return this.throwIfDisposed(),se(this,e)};Z().prototype.all=function(e,t){return this.throwIfDisposed(),dd(this,e,t)};Z().prototype.any=function(e,t){return this.throwIfDisposed(),Ou(this,e,t)};Z().prototype.argMax=function(e){return this.throwIfDisposed(),zu(this,e)};Z().prototype.argMin=function(e){return this.throwIfDisposed(),zf(this,e)};Z().prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),G(this,[])};Z().prototype.asType=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.as1D=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.as2D=function(e,t){return this.throwIfDisposed(),G(this,[e,t])};Z().prototype.as3D=function(e,t,n){return this.throwIfDisposed(),G(this,[e,t,n])};Z().prototype.as4D=function(e,t,n,r){return this.throwIfDisposed(),G(this,[e,t,n,r])};Z().prototype.as5D=function(e,t,n,r,a){return this.throwIfDisposed(),G(this,[e,t,n,r,a])};Z().prototype.asin=function(){return this.throwIfDisposed(),Pf(this)};Z().prototype.asinh=function(){return this.throwIfDisposed(),Lf(this)};Z().prototype.atan=function(){return this.throwIfDisposed(),Wf(this)};Z().prototype.atan2=function(e){return this.throwIfDisposed(),Bf(this,e)};Z().prototype.atanh=function(){return this.throwIfDisposed(),Vf(this)};Z().prototype.avgPool=function(e,t,n,r){return this.throwIfDisposed(),Lu(this,e,t,n,r)};Z().prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Wu(this,e,t)};Z().prototype.batchNorm=function(e,t,n,r,a){return this.throwIfDisposed(),li(this,e,t,n,r,a)};Z().prototype.broadcastTo=function(e){return this.throwIfDisposed(),Bu(this,e)};Z().prototype.cast=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.ceil=function(){return this.throwIfDisposed(),Gf(this)};Z().prototype.clipByValue=function(e,t){return this.throwIfDisposed(),vn(this,e,t)};Z().prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof Ue&&(e=[e]),st([this,...e],t)};Z().prototype.conv1d=function(e,t,n,r,a,s){return this.throwIfDisposed(),fd(this,e,t,n,r,a,s)};Z().prototype.conv2dTranspose=function(e,t,n,r,a){return this.throwIfDisposed(),md(this,e,t,n,r,a)};Z().prototype.conv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ra(this,e,t,n,r,a,s)};Z().prototype.cos=function(){return this.throwIfDisposed(),Vu(this)};Z().prototype.cosh=function(){return this.throwIfDisposed(),Ad(this)};Z().prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),yd(this,e,t,n)};Z().prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),Kf(this,e,t)};Z().prototype.depthwiseConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ul(this,e,t,n,r,a,s)};Z().prototype.dilation2d=function(e,t,n,r,a){return this.throwIfDisposed(),Zf(this,e,t,n,r,a)};Z().prototype.divNoNan=function(e){return this.throwIfDisposed(),Yf(this,e)};Z().prototype.div=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.dot=function(e){return this.throwIfDisposed(),Q5(this,e)};Z().prototype.elu=function(){return this.throwIfDisposed(),cl(this)};Z().prototype.equal=function(e){return this.throwIfDisposed(),Da(this,e)};Z().prototype.erf=function(){return this.throwIfDisposed(),Jf(this)};Z().prototype.exp=function(){return this.throwIfDisposed(),qn(this)};Z().prototype.expandDims=function(e){return this.throwIfDisposed(),hn(this,e)};Z().prototype.expm1=function(){return this.throwIfDisposed(),Qf(this)};Z().prototype.fft=function(){return this.throwIfDisposed(),Ju(this)};Z().prototype.flatten=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.floor=function(){return this.throwIfDisposed(),hl(this)};Z().prototype.floorDiv=function(e){return this.throwIfDisposed(),hd(this,e)};Z().prototype.gather=function(e,t){return this.throwIfDisposed(),ui(this,e,t)};Z().prototype.greaterEqual=function(e){return this.throwIfDisposed(),za(this,e)};Z().prototype.greater=function(e){return this.throwIfDisposed(),rr(this,e)};Z().prototype.ifft=function(){return this.throwIfDisposed(),Al(this)};Z().prototype.irfft=function(){return this.throwIfDisposed(),$d(this)};Z().prototype.isFinite=function(){return this.throwIfDisposed(),ex(this)};Z().prototype.isInf=function(){return this.throwIfDisposed(),tx(this)};Z().prototype.isNaN=function(){return this.throwIfDisposed(),nx(this)};Z().prototype.leakyRelu=function(e){return this.throwIfDisposed(),Hu(this,e)};Z().prototype.lessEqual=function(e){return this.throwIfDisposed(),ci(this,e)};Z().prototype.less=function(e){return this.throwIfDisposed(),xd(this,e)};Z().prototype.localResponseNormalization=function(e,t,n,r){return this.throwIfDisposed(),tm(this,e,t,n,r)};Z().prototype.logSigmoid=function(){return this.throwIfDisposed(),sx(this)};Z().prototype.logSoftmax=function(e){return this.throwIfDisposed(),bd(this,e)};Z().prototype.logSumExp=function(e,t){return this.throwIfDisposed(),am(this,e,t)};Z().prototype.log=function(){return this.throwIfDisposed(),Mn(this)};Z().prototype.log1p=function(){return this.throwIfDisposed(),wd(this)};Z().prototype.logicalAnd=function(e){return this.throwIfDisposed(),ar(this,e)};Z().prototype.logicalNot=function(){return this.throwIfDisposed(),ju(this)};Z().prototype.logicalOr=function(e){return this.throwIfDisposed(),vd(this,e)};Z().prototype.logicalXor=function(e){return this.throwIfDisposed(),ux(this,e)};Z().prototype.matMul=function(e,t,n){return this.throwIfDisposed(),Ge(this,e,t,n)};Z().prototype.maxPool=function(e,t,n,r){return this.throwIfDisposed(),Gu(this,e,t,n,r)};Z().prototype.max=function(e,t){return this.throwIfDisposed(),Xn(this,e,t)};Z().prototype.maximum=function(e){return this.throwIfDisposed(),Dr(this,e)};Z().prototype.mean=function(e,t){return this.throwIfDisposed(),kt(this,e,t)};Z().prototype.min=function(e,t){return this.throwIfDisposed(),pl(this,e,t)};Z().prototype.minimum=function(e){return this.throwIfDisposed(),fl(this,e)};Z().prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),im(this,e,t)};Z().prototype.mod=function(e){return this.throwIfDisposed(),om(this,e)};Z().prototype.mul=function(e){return this.throwIfDisposed(),P(this,e)};Z().prototype.neg=function(){return this.throwIfDisposed(),vt(this)};Z().prototype.norm=function(e,t,n){return this.throwIfDisposed(),Pd(this,e,t,n)};Z().prototype.notEqual=function(e){return this.throwIfDisposed(),di(this,e)};Z().prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),nl(this,e,t,n)};Z().prototype.onesLike=function(){return this.throwIfDisposed(),$n(this)};Z().prototype.pad=function(e,t){return this.throwIfDisposed(),aa(this,e,t)};Z().prototype.pool=function(e,t,n,r,a){return this.throwIfDisposed(),dx(this,e,t,n,r,a)};Z().prototype.pow=function(e){return this.throwIfDisposed(),sa(this,e)};Z().prototype.prelu=function(e){return this.throwIfDisposed(),Xu(this,e)};Z().prototype.prod=function(e,t){return this.throwIfDisposed(),Nd(this,e,t)};Z().prototype.reciprocal=function(){return this.throwIfDisposed(),cm(this)};Z().prototype.relu=function(){return this.throwIfDisposed(),zr(this)};Z().prototype.relu6=function(){return this.throwIfDisposed(),Sd(this)};Z().prototype.reshapeAs=function(e){return this.throwIfDisposed(),G(this,e.shape)};Z().prototype.reshape=function(e){return this.throwIfDisposed(),G(this,e)};Z().prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),Ex(this,e,t,n)};Z().prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),Rx(this,e,t,n)};Z().prototype.reverse=function(e){return this.throwIfDisposed(),Dn(this,e)};Z().prototype.rfft=function(){return this.throwIfDisposed(),Qu(this)};Z().prototype.round=function(){return this.throwIfDisposed(),hm(this)};Z().prototype.rsqrt=function(){return this.throwIfDisposed(),Td(this)};Z().prototype.selu=function(){return this.throwIfDisposed(),Cd(this)};Z().prototype.separableConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),dm(this,e,t,n,r,a,s)};Z().prototype.sigmoid=function(){return this.throwIfDisposed(),Fn(this)};Z().prototype.sign=function(){return this.throwIfDisposed(),pm(this)};Z().prototype.sin=function(){return this.throwIfDisposed(),Ed(this)};Z().prototype.sinh=function(){return this.throwIfDisposed(),Rd(this)};Z().prototype.slice=function(e,t){return this.throwIfDisposed(),Re(this,e,t)};Z().prototype.softmax=function(e){return this.throwIfDisposed(),Yu(this,e)};Z().prototype.softplus=function(){return this.throwIfDisposed(),dl(this)};Z().prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),qu(this,e,t)};Z().prototype.split=function(e,t){return this.throwIfDisposed(),Lt(this,e,t)};Z().prototype.sqrt=function(){return this.throwIfDisposed(),en(this)};Z().prototype.square=function(){return this.throwIfDisposed(),lt(this)};Z().prototype.squaredDifference=function(e){return this.throwIfDisposed(),Dd(this,e)};Z().prototype.squeeze=function(e){return this.throwIfDisposed(),Pa(this,e)};Z().prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof Ue?[this,e]:[this,...e];return dn(n,t)};Z().prototype.step=function(e){return this.throwIfDisposed(),yl(this,e)};Z().prototype.stridedSlice=function(e,t,n,r,a,s,i,o){return this.throwIfDisposed(),mm(this,e,t,n,r,a,s,i,o)};Z().prototype.sub=function(e){return this.throwIfDisposed(),ye(this,e)};Z().prototype.sum=function(e,t){return this.throwIfDisposed(),Te(this,e,t)};Z().prototype.tan=function(){return this.throwIfDisposed(),Am(this)};Z().prototype.tanh=function(){return this.throwIfDisposed(),ol(this)};Z().prototype.tile=function(e){return this.throwIfDisposed(),Oa(this,e)};Z().prototype.toBool=function(){return this.throwIfDisposed(),me(this,"bool")};Z().prototype.toFloat=function(){return this.throwIfDisposed(),me(this,"float32")};Z().prototype.toInt=function(){return this.throwIfDisposed(),me(this,"int32")};Z().prototype.topk=function(e,t){return this.throwIfDisposed(),ym(this,e,t)};Z().prototype.transpose=function(e){return this.throwIfDisposed(),at(this,e)};Z().prototype.unique=function(e){return this.throwIfDisposed(),zd(this,e)};Z().prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),gm(this,e,t)};Z().prototype.unstack=function(e){return this.throwIfDisposed(),sr(this,e)};Z().prototype.where=function(e,t){return this.throwIfDisposed(),kn(e,this,t)};Z().prototype.zerosLike=function(){return this.throwIfDisposed(),He(this)};var b3={kernelName:Zi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,yl(me(n,"float32"),-1))}}},YZ={kernelName:Yi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=lt(me(n,"float32")),a=en(ye(be(1),r));return vt(ge(e,a))}}}},JZ={kernelName:Ji,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(ye(lt(me(n,"float32")),1));return ge(e,r)}}}},QZ={kernelName:Na,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},eY={kernelName:os,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((r,a)=>{n[a]=()=>e.clone()}),n}},tY={kernelName:ls,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},nY={kernelName:lu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},rY={kernelName:Qi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,en(ye(be(1),lt(me(n,"float32")))))}}},aY={kernelName:eo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(se(be(1),lt(me(n,"float32"))));return ge(e,r)}}}},sY={kernelName:ro,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=se(lt(n),lt(r)),i=P(e,ge(r,s)),o=Pt(n.shape,a);return o.length>0&&(i=Te(i,o)),G(i,n.shape)},b:()=>{let s=se(lt(n),lt(r)),i=vt(P(e,ge(n,s))),o=Pt(r.shape,a);return o.length>0&&(i=Te(i,o)),G(i,r.shape)}}}},iY={kernelName:to,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(lt(me(n,"float32")),1))}}},oY={kernelName:no,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,ye(be(1),lt(me(n,"float32"))))}}};function lY(e,t,n,r,a,s){let i=E(e,"dy","avgPool3dGrad"),o=E(t,"input","avgPool3dGrad"),l=i,u=o,c=!1;o.rank===4&&(c=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),u=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),s!=null&&F(jt(a),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${s} but got pad ${a}.`);let h={dy:l,input:u},d={filterSize:n,strides:r,pad:a,dimRoundingMode:s},p=$.runKernel(Ih,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var uY=O({avgPool3dGrad_:lY}),cY={kernelName:uu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i,dimRoundingMode:o}=n;return{x:()=>uY(e,r,a,s,i,o)}}};function hY(e,t,n,r,a){let s=E(e,"dy","avgPoolGrad"),i=E(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,u=!1;i.rank===3&&(u=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let c={dy:l,input:o},h={filterSize:n,strides:r,pad:a},d=$.runKernel(Nh,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var dY=O({avgPoolGrad_:hY}),pY={kernelName:us,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i}=n;return{x:()=>dY(e,r,a,s,i)}}},fY={kernelName:cs,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[r,a]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>Ge(e,a,!1,!0),b:()=>Ge(r,e,!0,!1)}:!s&&i?{a:()=>Ge(e,a,!1,!1),b:()=>Ge(e,r,!0,!1)}:s&&!i?{a:()=>Ge(a,e,!1,!0),b:()=>Ge(r,e,!1,!1)}:{a:()=>Ge(a,e,!0,!0),b:()=>Ge(e,r,!0,!0)}}},mY={kernelName:cu,gradFunc:(e,t,n)=>{let{blockShape:r,crops:a}=n;return{x:()=>qu(e,r,a)}}},AY={kernelName:qg,gradFunc:(e,t,n)=>{let r=n,a=r.inputShape,s=r.shape,i=Array.from(s);for(let l=a.length-1;l>=0;l--)if(a[l]===s[l])i[l]=1;else if(a[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Te(e,o,!0)}}},yY={kernelName:hs,gradFunc:e=>({x:()=>e.clone()})},gY={kernelName:ds,gradFunc:e=>({x:()=>He(e)})},xY={kernelName:Ia,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{clipValueMin:a,clipValueMax:s}=n;return{x:()=>kn(ar(za(r,a),ci(r,s)),e,He(e))}}},wY={kernelName:hu,inputsToSave:["x"],gradFunc:b3.gradFunc},_Y={kernelName:ao,saveAllInputs:!0,gradFunc:(e,t,n)=>{let r=t.map(o=>o.shape),{axis:a}=n,s=tr(a,t[0].shape)[0],i=r.map(o=>o[s]);return Lt(e,i,s).map(o=>()=>o)}},bY={kernelName:ps,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F($a(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>qf(r.shape,e,a,i,o,l),filter:()=>bm(r,e,a.shape,i,o,l)}}},vY={kernelName:fs,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>ra(e,a,s,i,o,1,l),filter:()=>bm(e,r,a.shape,s,i,o,l)}}};function kY(e,t,n,r,a){let s=e;e.rank===4&&(s=G(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:r,pad:a,filterShape:n};return $.runKernel(Eh,o,l)}var NY=O({conv3DBackpropFilter_:kY}),IY={kernelName:du,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s}=n;F($a(r),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);let[i,o]=t;return{x:()=>Y5(i.shape,e,o,a,s),filter:()=>NY(i,e,o.shape,a,s)}}},SY={kernelName:ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(vt(Ed(me(n,"float32"))),e)}}},TY={kernelName:so,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Rd(me(n,"float32")),e)}}},CY={kernelName:As,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a,exclusive:s,reverse:i}=n;return{x:()=>{let o=lx([a],r.rank),l=yd(e,a,s,!i);return o!=null&&(l=at(l,o)),l}}}},EY={kernelName:ys,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s,dimRoundingMode:i}=n,o=r==null?[1,1]:r;F($a(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,u]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),F(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),F(Mr(a,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${o}'.`),i!=null&&F(jt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>vx(l.shape,e,u,a,s,r,i),filter:()=>bx(l,e,u.shape,a,s,r,i)}}},RY={kernelName:pu,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,s={x:r,filter:a,dy:e},i={x:r,filter:a,dy:e};return{x:()=>$.runKernel(Oh,s,n),filter:()=>$.runKernel(zh,i,n)}}},FY={kernelName:lo,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,r={dy:e,y:n};return{x:()=>$.runKernel(Ph,r)}}},MY={kernelName:uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(qn(vt(lt(n))),2/Math.sqrt(Math.PI));return{x:()=>P(e,r)}}},$Y={kernelName:xs,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,n)}}},DY={kernelName:ho,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>G(e,n.shape)}}},OY={kernelName:po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,qn(n))}}},zY={kernelName:ws,gradFunc:e=>({x:()=>He(e)})},PY={kernelName:_s,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},LY={kernelName:bs,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:r}=n,[a,s,i,o]=t,l=o==null?be(1):o,u=Pt(s.shape,a.shape),c=[];if(s.rank===1){for(let m=0;ms.rank===1?G(P(P(e,Oa(G(p,[1,1,1,s.shape[0]]),c)),l),a.shape):G(P(P(e,p),l),a.shape),mean:()=>{let m=P(P(p,be(-1)),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},variance:()=>{let m=P(P(f,h),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},scale:()=>{let m=P(h,p),A=P(e,m);return s.rank===1&&(A=Te(A,u)),G(A,s.shape)},offset:()=>{let m=e;return s.rank===1&&(m=Te(m,u)),G(m,s.shape)}}}},WY={kernelName:mo,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[r,a]=t,{axis:s}=n,i=tr(s,r.shape)[0];return{x:()=>{let o=r.shape,l=a.size,u=o.slice(0,i),c=u.length,h=o.slice(s,o.length).slice(1),d=h.length,p=v3(0,c),f=v3(c+1,c+1+d),m=k3([u,[l],h]),A=G(e,m),y=G(a,[l]),g=k3([[c],p,f]),_=at(A,g),b=gm(_,y,r.shape[i]),w=rm(g);return b=at(b,w),b},indices:()=>a}}};function v3(e,t){let n=[];for(let r=e;r{let[n,r]=t;return{a:()=>He(n),b:()=>He(r)}}},VY={kernelName:ks,gradFunc:e=>({x:()=>me(e,"float32")})},UY={kernelName:go,gradFunc:e=>({x:()=>He(e)})},HY={kernelName:xo,gradFunc:e=>({x:()=>He(e)})},jY={kernelName:wo,gradFunc:e=>({x:()=>He(e)})},GY={kernelName:Ns,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{alpha:a}=n,s=rr(r,0);return{x:()=>kn(s,e,P(e,a))}}},qY={kernelName:vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(n,1))}}},XY={kernelName:Is,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,me(n,"float32"))}}},KY={kernelName:Xg,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n;return{logits:()=>{let s=!0,i=qn(r);return ye(e,P(Te(e,a,s),i))}}}};function ZY(e,t,n,r=5,a=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:r,bias:a,alpha:s,beta:i};return $.runKernel(Uh,o,l)}var YY=O({localResponseNormalizationBackprop_:ZY}),JY={kernelName:yu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>YY(r,a,e,s,i,o,l)}}};function N3(e,t,n,r){return t.rankP(e,me(Da(n,t),e.dtype))}}var I3={kernelName:Ss,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{reductionIndices:a}=r,s=t[0],i=t[1],o=tr(a,s.shape),l=N3(e,i,s,o);return{x:()=>l.x()}}},QY={kernelName:Ts,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(za(n,r),"float32")),b:()=>P(e,me(xd(n,r),"float32"))}}};function eJ(e,t,n,r,a,s,i){let o=E(e,"dy","maxPool3dGrad"),l=E(t,"input","maxPool3dGrad"),u=E(n,"output","maxPool3dGrad"),c=o,h=l,d=u,p=!1;l.rank===4&&(p=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),h=G(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=G(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(c.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let f={dy:c,input:h,output:d},m={filterSize:r,strides:a,pad:s,dimRoundingMode:i},A=$.runKernel(jh,f,m);return p?G(A,[A.shape[1],A.shape[2],A.shape[3],A.shape[4]]):A}var tJ=O({maxPool3dGrad_:eJ}),nJ={kernelName:gu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=n;return{x:()=>tJ(e,r,a,s,i,o,l)}}};function rJ(e,t,n,r,a,s,i){let o=E(e,"dy","maxPoolGrad"),l=E(t,"input","maxPoolGrad"),u=E(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let c={dy:o,input:l,output:u},h={filterSize:r,strides:a,pad:s,dimRoundingMode:i};return $.runKernel(Hh,c,h)}var aJ=O({maxPoolGrad_:rJ}),sJ={kernelName:Cs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>aJ(e,r,a,s,i,o)}}},iJ={kernelName:Es,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n,s=tr(a,r.shape),i=ox(r.shape,s)[1],o=Dt(i);return{x:()=>{let l=r.shape.slice();s.forEach(c=>{l[c]=1});let u=G(e,l);return ge(P(u,Or(r.shape,"float32")),o)}}}},oJ={kernelName:Rs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{axis:a}=r,[s,i]=t,o=tr(a,s.shape),l=N3(e,i,s,o);return{x:()=>l.x()}}},lJ={kernelName:Fs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(ci(n,r),"float32")),b:()=>P(e,me(rr(n,r),"float32"))}}},uJ={kernelName:xu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},cJ={kernelName:No,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=Pt(n.shape,a);return s.length>0?G(Te(e,s),n.shape):e},b:()=>{let s=P(e,vt(hl(ge(n,r)))),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},hJ={kernelName:Ms,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=P(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},dJ={kernelName:Io,gradFunc:e=>({x:()=>vt(e)})},pJ={kernelName:$s,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>Et(n.shape,"float32")}}},fJ={kernelName:Ro,gradFunc:e=>({x:()=>He(e)})},mJ={kernelName:Fo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:r}=n;return sr(e,r).map(a=>()=>a)}},S3={kernelName:Ds,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},AJ={kernelName:Os,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,r,a]=t,s=n,i=r,o=yt(s.shape,i.shape);return{a:()=>{let l=me(i,"float32"),u=P(e,P(l,sa(s,ye(l,be(1))))),c=Pt(s.shape,o);return c.length>0&&(u=Te(u,c)),G(u,s.shape)},b:()=>{let l=rr(s,0),u=kn(l,Mn(s),He(s)),c=P(e,P(a,u)),h=Pt(i.shape,o);return h.length>0&&(c=Te(c,h)),G(c,i.shape)}}}},yJ={kernelName:zs,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,r]=t,a=rr(n,0);return{x:()=>kn(a,e,P(e,r)),alpha:()=>{let s=kn(a,He(e),P(e,n)),i=Pt(r.shape,e.shape);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},gJ={kernelName:gs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},xJ={kernelName:$o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,vt(lt(n)))}}},wJ={kernelName:Ws,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(ci(n,6),yl(n));return{x:()=>P(e,me(r,"float32"))}}},_J={kernelName:Ps,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,me(yl(n),"float32"))}}},bJ={kernelName:Do,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>G(e,n.shape)}}},vJ={kernelName:Ls,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Zh,a,n)}}},kJ={kernelName:_u,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Kh,a,n)}}},NJ={kernelName:Bs,gradFunc:(e,t,n)=>{let{dims:r}=n,a=tr(r,e.shape);return{x:()=>Dn(e,a)}}},IJ={kernelName:Vs,gradFunc:e=>({x:()=>He(e)})},SJ={kernelName:Us,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>vt(ge(e,P(sa(n,1.5),2)))}}},TJ={kernelName:zo,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>me(He(n),"float32"),t:()=>P(e,me(n,e.dtype)),e:()=>P(e,me(ju(n),e.dtype))}}},CJ={kernelName:Po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=rr(n,be(0)),a=be($x),s=be(Dx),i=P(e,s),o=P(P(e,a),qn(me(n,"float32")));return kn(r,i,o)}}}},EJ={kernelName:js,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(n,ye(be(1),n)))}}},RJ={kernelName:Bo,gradFunc:e=>({x:()=>He(e)})},FJ={kernelName:Hs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Vu(me(n,"float32")),e)}}},MJ={kernelName:Wo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Ad(me(n,"float32")),e)}}},$J={kernelName:Lo,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{begin:a,size:s}=n,i=r.shape,[o,l]=M5(r,a,s),u=[];for(let c=0;caa(e,u)}}},DJ={kernelName:Xs,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{dim:a}=n,s=!0,i=P(e,r);return{logits:()=>ye(i,P(Te(i,[a],s),r))}}},OJ={kernelName:Vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Fn(n))}}},T3={kernelName:bu,gradFunc:(e,t,n)=>{let{blockShape:r,paddings:a}=n;return{x:()=>Wu(e,r,a)}}},C3={kernelName:Uo,gradFunc:(e,t,n)=>{let{axis:r}=n;return{x:()=>st(e,r)}}},zJ={kernelName:Gs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,P(en(me(n,"float32")),2))}}},PJ={kernelName:vu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(me(n,"float32"),2))}}},LJ={kernelName:Ks,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=be(2);return{a:()=>P(e,P(a,ye(n,r))),b:()=>P(e,P(a,ye(r,n)))}}},WJ={kernelName:Ta,gradFunc:e=>({x:()=>He(e)})},BJ={kernelName:Zs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(vt(s),r.shape)}}}},VJ={kernelName:qs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,a=r.shape.slice(),{axis:s}=n;tr(s,r.shape).forEach(l=>{a[l]=1});let i=G(e,a),o=P(i,Or(r.shape,"float32"));return{x:()=>o}}},UJ={kernelName:jo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,lt(Vu(n)))}}},HJ={kernelName:Ys,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(ye(be(1),lt(n)),e)}}},jJ={kernelName:Sa,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{reps:a}=n;return{x:()=>{let s=He(r);if(r.rank===1)for(let i=0;i{let r=n,{perm:a}=r,s=rm(a);return{x:()=>at(e,s)}}},qJ={kernelName:qo,gradFunc:(e,t,n)=>{let r=n,{axis:a}=r;return{value:()=>dn(e,a)}}},KJ={kernelName:ku,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>XJ(e,n)}}};function XJ(e,t){let n=Dr(t,He(t)),r=ui(e,n),a=za(t,be(0,"int32")),s=r.rank-a.rank;for(let o=0;o({x:()=>He(e)})},YJ=[b3,YZ,JZ,QZ,eY,tY,nY,rY,aY,sY,iY,oY,cY,pY,fY,mY,AY,yY,gY,xY,wY,_Y,vY,bY,IY,SY,TY,CY,EY,RY,gJ,FY,MY,$Y,DY,OY,PY,zY,LY,WY,BY,VY,UY,HY,jY,GY,qY,XY,KY,JY,I3,I3,QY,nJ,sJ,iJ,oJ,lJ,uJ,cJ,hJ,dJ,pJ,fJ,mJ,S3,S3,AJ,yJ,xJ,wJ,_J,bJ,vJ,kJ,NJ,IJ,SJ,TJ,CJ,EJ,RJ,FJ,MJ,$J,DJ,OJ,T3,T3,C3,C3,zJ,LJ,PJ,WJ,BJ,VJ,UJ,HJ,jJ,GJ,qJ,KJ,ZJ];for(let e of YJ)Kg(e);var E3={};ze(E3,{maxNorm:()=>JJ,minMaxNorm:()=>tQ,nonNeg:()=>eQ,unitNorm:()=>QJ});var hA;function Wt(){return hA==null&&(hA=W5().epsilon()),hA}function _r(){return"channelsLast"}var ua=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ua.prototype)}},br=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,br.prototype)}},V=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,V.prototype)}},De=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,De.prototype)}},R3=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,R3.prototype)}};function vi(e,t){if(Array.isArray(e)){let n=[];for(let r=0;rn.toUpperCase())}var or={};function dA(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function pA(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>pA(t));else{let t=Object.keys(e);for(let n of t){let r=e[n];r!=null&&typeof r=="object"&&(!Array.isArray(r)&&r.type==="ndarray"&&typeof r.value=="number"?e[n]=r.value:pA(r))}}}function gc(e,t={},n={},r="object",a=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in or)i=or[s];else if(i=t[s],i==null)throw new V(`Unknown ${r}: ${e}. This may be due to one of the following reasons: 1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. 2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return i}else{let s=e;if(s.className==null||s.config==null)throw new V(`${r}: Improper config format: ${JSON.stringify(s)}. 'className' and 'config' must set.`);let i=s.className,o,l;if(i in n?[o,l]=n[i]:i in or?[o,l]=or.className:i in t&&([o,l]=t[i]),o==null)throw new V(`Unknown ${r}: ${i}. This may be due to one of the following reasons: 1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let u={};for(let p of Object.keys(or))u[p]=or[p];for(let p of Object.keys(n))u[p]=n[p];let c=s.config;c.customObjects=u;let h=Object.assign({},or);for(let p of Object.keys(n))or[p]=n[p];pA(s.config);let d=l(o,s.config,n,a);return or=Object.assign({},h),d}else{let u=Object.assign({},or);for(let h of Object.keys(n))or[h]=n[h];let c=new o(s.config);return or=Object.assign({},u),c}}}function tQ(e,t){return et?1:0}function kp(e,t){return-1*tQ(e,t)}function Ua(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function nQ(e){if(e==null)throw new V(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Ni(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new V(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function fA(e,t,n=0,r=Infinity){return Br(n>=0),Br(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(a=>typeof a===t)}function Xt(e,t){Array.isArray(e)?(v.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,r)=>Xt(n,`element ${r+1} of ${t}`))):v.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${F3(e)}.`)}function F3(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>F3(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function rQ(e,t){let n=v.now(),r;return(...a)=>{let s=v.now();return s-nen(Te(P(e,e),t,!0)))}var xc=class extends re.Serializable{getConfig(){return{}}},AA=class extends xc{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=vn(t,0,this.maxValue);return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};AA.className="MaxNorm";re.registerClass(AA);var yA=class extends xc{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>ge(e,se(Wt(),mA(e,this.axis))))}getConfig(){return{axis:this.axis}}};yA.className="UnitNorm";re.registerClass(yA);var gA=class extends xc{apply(e){return zr(e)}};gA.className="NonNeg";re.registerClass(gA);var xA=class extends xc{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=se(P(this.rate,vn(t,this.minValue,this.maxValue)),P(1-this.rate,t));return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};xA.className="MinMaxNorm";re.registerClass(xA);var $3={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Bt(e){return dA(e)}function D3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"constraint")}function Vt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in $3?$3[e]:e,config:{}};return D3(t)}else return e instanceof xc?e:D3(e)}function YJ(e){return new AA(e)}function JJ(e){return new yA(e)}function QJ(){return new gA}function eQ(e){return new xA(e)}var O3={};ze(O3,{constant:()=>iQ,glorotNormal:()=>pQ,glorotUniform:()=>dQ,heNormal:()=>fQ,heUniform:()=>mQ,identity:()=>cQ,leCunNormal:()=>AQ,leCunUniform:()=>yQ,ones:()=>sQ,orthogonal:()=>gQ,randomNormal:()=>lQ,randomUniform:()=>oQ,truncatedNormal:()=>uQ,varianceScaling:()=>hQ,zeros:()=>aQ});var xQ=["channelsFirst","channelsLast"],wQ=["nearest","bilinear"],_Q=["valid","same","causal"],bQ=["max","avg"],vQ=["sum","mul","concat","ave"],Dl=new Map;function Tt(e){Ni(xQ,"DataFormat",e)}function kQ(e){Ni(wQ,"InterpolationFormat",e)}function Yn(e){Ni(_Q,"PaddingMode",e)}function z3(e){Ni(bQ,"PoolMode",e)}var wc=[],P3="/";function Ii(e,t){wc.push(e);try{let n=t();return wc.pop(),n}catch(n){throw wc.pop(),n}}function NQ(){return wc.length===0?"":wc.join(P3)+P3}function W3(e){if(!L3(e))throw new Error("Not a valid tensor name: '"+e+"'");return NQ()+e}function B3(e){if(!L3(e))throw new Error("Not a valid tensor name: '"+e+"'");Dl.has(e)||Dl.set(e,0);let t=Dl.get(e);if(Dl.set(e,Dl.get(e)+1),t>0){let n=`${e}_${t}`;return Dl.set(n,1),n}else return e}var IQ=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function L3(e){return!!e.match(IQ)}function SQ(e){return e===parseInt(e.toString(),10)}function Ha(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let r=1;for(let a=t;a{if(e.shape.length!==2)throw new V(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=bc(e,1);return wA(n,[1,t,1])})}function CQ(e){let t=[Ha(e.shape)];return e.reshape(t)}function EQ(e){if(e.rank<=1)throw new V(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],Ha(e.shape,1)];return e.reshape(t)}function Si(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[t,0],[n,e.shape[1]]);case 3:return Md(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return Zu(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return Re(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return Re(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new V(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function _A(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[0,t],[e.shape[0],n]);case 3:return Md(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return Zu(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function Np(e,t,n,r){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:switch(r){case 1:return Si(e,t,n);case 2:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 3:switch(r){case 1:return Si(e,t,n);case 2:return Md(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 4:switch(r){case 1:return Si(e,t,n);case 2:return Zu(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return Zu(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function bA(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),st(e,t)}function U3(e,t){switch(e.rank){case 1:return q5([e,t]);case 2:return ll([e,t],0);case 3:return X5([e,t],0);case 4:return K5([e,t],0);default:throw new V(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function wA(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new V(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return Oa(e,t)}function Ip(e,t=0,n=1,r,a){return dx(e,t,n,r,a)}function Vr(e,t,n,r){if(e.rank<2||t.rank<2)throw new De(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let a=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(a!==s)throw new De(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let a=!1,s=!1;return La.matMul({a:e,b:t,transposeA:a,transposeB:s,bias:r?vA(e.rank,r,_r()):null,activation:n})}else{let a=e.shape.slice(),s=a.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),u=[...i,o],c=Array.from({length:t.rank},(f,m)=>m===0?t.rank-2:m<=t.rank-2?m-1:m);t=t.transpose(c).reshape([l,-1]);let h=[...a,...u],d=!1,p=!1;return La.matMul({a:e,b:t,transposeA:d,transposeB:p,bias:r?vA(e.rank,r,_r()):null,activation:n}).reshape(h)}}function H3(e,t,n){return B(()=>(Array.isArray(t)?t=on(t,"int32"):t=t.toInt(),ui(e,t,n)))}function vc(e){return P(e,e)}function vA(e,t,n){let r=t.shape;if(t.rank!==1&&t.rank!==e)throw new V(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1,1]):t.reshape([1,r[3],r[0],r[1],r[2]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===4){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1]):t.reshape([1,r[2],r[0],r[1]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===3){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1]):t.reshape([1,r[1],r[0]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,r[0]]):t.reshape([1].concat(r))}else if(e<3)return t;throw new V(`Unsupported input rank by biasAdd: ${t.rank}`)}function Ur(e,t,n){return B(()=>(n==null&&(n=_r()),Tt(n),e.add(vA(e.rank,t,n))))}function RQ(e,t=1){if(t!==1)throw new De(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return cl(e)}function FQ(e){return B(()=>ge(e,zt(e).add(1)))}function j3(e,t,n,r){return B(()=>xx(e,t,n,r))}function MQ(e){return B(()=>{let t=se(.5,P(.2,e));return vn(t,0,1)})}function kc(e,t,n=!1){return n?e():t()}var $Q=["fanIn","fanOut","fanAvg"],DQ=["normal","uniform","truncatedNormal"];function OQ(e){Ni($Q,"FanMode",e)}function zQ(e){Ni(DQ,"Distribution",e)}var lr=class extends re.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},kA=class extends lr{apply(e,t){return Et(e,t)}};kA.className="Zeros";re.registerClass(kA);var Sp=class extends lr{apply(e,t){return Or(e,t)}};Sp.className="Ones";re.registerClass(Sp);var NA=class extends lr{constructor(e){super();if(typeof e!="object")throw new V(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new V(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return B(()=>P(be(this.value),Or(e,t)))}getConfig(){return{value:this.value}}};NA.className="Constant";re.registerClass(NA);var IA=class extends lr{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return ml(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};IA.className="RandomUniform";re.registerClass(IA);var SA=class extends lr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`randomNormal does not support dType ${t}.`);return Ip(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};SA.className="RandomNormal";re.registerClass(SA);var TA=class extends lr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`truncatedNormal does not support dType ${t}.`);return Od(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TA.className="TruncatedNormal";re.registerClass(TA);var CA=class extends lr{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return B(()=>{if(e.length!==2||e[0]!==e[1])throw new V("Identity matrix initializer can only be used for 2D square matrices.");return P(this.gain,em(e[0]))})}getConfig(){return{gain:this.gain}}};CA.className="Identity";re.registerClass(CA);function PQ(e,t="channelsLast"){let n,r;if(Tt(t),e.length===2)n=e[0],r=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let a=Ha(e,2);n=e[1]*a,r=e[0]*a}else if(t==="channelsLast"){let a=Ha(e,0,e.length-2);n=e[e.length-2]*a,r=e[e.length-1]*a}}else{let a=Ha(e);n=Math.sqrt(a),r=Math.sqrt(a)}return[n,r]}var Cn=class extends lr{constructor(e){super();if(e.scale<0)throw new V(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,OQ(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,zQ(this.distribution),this.seed=e.seed}apply(e,t){let n=PQ(e),r=n[0],a=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,r):this.mode==="fanOut"?s/=Math.max(1,a):s/=Math.max(1,(r+a)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`${this.getClassName()} does not support dType ${t}.`);return Od(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return ml(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Cn.className="VarianceScaling";re.registerClass(Cn);var Tp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Tp.className="GlorotUniform";re.registerClass(Tp);var Cp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Cp.className="GlorotNormal";re.registerClass(Cp);var Ep=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Ep.className="HeNormal";re.registerClass(Ep);var Rp=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Rp.className="HeUniform";re.registerClass(Rp);var Fp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Fp.className="LeCunNormal";re.registerClass(Fp);var Mp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Mp.className="LeCunNormal";re.registerClass(Mp);var EA=class extends lr{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new De("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return B(()=>{if(e.length<2)throw new De("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,r=Ip(n,0,1,"float32"),a=Fx.gramSchmidt(r);return e[0]>e[1]&&(a=a.transpose()),P(this.gain,a)})}getConfig(){return{gain:this.gain,seed:this.seed}}};EA.className="Orthogonal";re.registerClass(EA);var G3={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function q3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"initializer")}function Nt(e){return dA(e)}function xt(e){if(typeof e=="string"){let t=e in G3?G3[e]:e;if(t==="GlorotNormal")return new Cp;if(t==="GlorotUniform")return new Tp;if(t==="HeNormal")return new Ep;if(t==="HeUniform")return new Rp;if(t==="LeCunNormal")return new Fp;if(t==="LeCunUniform")return new Mp;{let n={};return n.className=t,n.config={},q3(n)}}else return e instanceof lr?e:q3(e)}function aQ(){return new kA}function sQ(){return new Sp}function iQ(e){return new NA(e)}function oQ(e){return new IA(e)}function lQ(e){return new SA(e)}function uQ(e){return new TA(e)}function cQ(e){return new CA(e)}function hQ(e){return new Cn(e)}function dQ(e){return new Tp(e)}function pQ(e){return new Cp(e)}function fQ(e){return new Ep(e)}function mQ(e){return new Rp(e)}function AQ(e){return new Fp(e)}function yQ(e){return new Mp(e)}function gQ(e){return new EA(e)}var X3={};ze(X3,{Layer:()=>qe,RNN:()=>Hr,RNNCell:()=>Nc,activation:()=>eee,add:()=>uee,alphaDropout:()=>Gee,average:()=>cee,averagePooling1d:()=>RA,averagePooling2d:()=>FA,averagePooling3d:()=>MA,avgPool1d:()=>xee,avgPool2d:()=>_ee,avgPool3d:()=>vee,avgPooling1d:()=>wee,avgPooling2d:()=>bee,avgPooling3d:()=>kee,batchNormalization:()=>Aee,bidirectional:()=>Pee,concatenate:()=>hee,conv1d:()=>GQ,conv2d:()=>qQ,conv2dTranspose:()=>XQ,conv3d:()=>KQ,convLstm2d:()=>$ee,convLstm2dCell:()=>Dee,cropping2D:()=>YQ,dense:()=>tee,depthwiseConv2d:()=>QQ,dot:()=>mee,dropout:()=>nee,elu:()=>WQ,embedding:()=>lee,flatten:()=>aee,gaussianDropout:()=>jee,gaussianNoise:()=>Hee,globalAveragePooling1d:()=>Nee,globalAveragePooling2d:()=>Iee,globalMaxPool1d:()=>Wee,globalMaxPool2d:()=>Bee,globalMaxPooling1d:()=>Z3,globalMaxPooling2d:()=>Y3,gru:()=>Tee,gruCell:()=>Cee,input:()=>K3,inputLayer:()=>LQ,layerNormalization:()=>yee,leakyReLU:()=>VQ,lstm:()=>Eee,lstmCell:()=>Ree,masking:()=>qee,maxPool1d:()=>Vee,maxPool2d:()=>Uee,maxPooling1d:()=>J3,maxPooling2d:()=>Q3,maxPooling3d:()=>See,maximum:()=>dee,minimum:()=>pee,multiply:()=>fee,permute:()=>oee,prelu:()=>UQ,reLU:()=>BQ,repeatVector:()=>see,reshape:()=>iee,rnn:()=>Oee,separableConv2d:()=>ZQ,simpleRNN:()=>Fee,simpleRNNCell:()=>Mee,softmax:()=>HQ,spatialDropout1d:()=>ree,stackedRNNCells:()=>zee,thresholdedReLU:()=>jQ,timeDistributed:()=>Lee,upSampling2d:()=>JQ,zeroPadding2d:()=>gee});var Xee=0;function e7(){return Xee++}var $p={};function Dp(e=""){return e in $p||($p[e]=0),$p[e]+=1,e+$p[e].toString()}function $A(e){return Array.isArray(e)&&Array.isArray(e[0])}function Op(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Pe(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new V(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function ct(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new V(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function zp(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((r,a)=>r*a);return t}var t7="Variable",n7=class{constructor(e,t="float32",n=t7,r=!0,a=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=e7(),n=n==null?t7:n,this.originalName=W3(n),this.name=B3(this.originalName),this.trainable_=r,this.constraint=a,this.val=fx(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),Kee(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function Kee(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function DA(e){return e.map(t=>t.read())}function OA(e){e.forEach(t=>{t[0].write(t[1])})}var Kt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},kr=class{constructor(e,t,n,r,a,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=a,this.outputTensorIndex=i,this.id=e7(),s!=null&&(this.originalName=W3(s),this.name=B3(this.originalName)),this.rank=t.length}},Zee=0,Pp=class{constructor(e,t){this.callArgs=t,this.id=Zee++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},Yee=0,qe=class extends re.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=Yee++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=ca(n)+"_"+Dp(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let a=null;e.batchSize!=null&&(a=e.batchSize),n=[a].concat(e.inputShape)}this.batchInputShape=n;let r=e.dtype;r==null&&(r=e.inputDType),r==null&&(r="float32"),this.dtype=r}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new br(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new V(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Tn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Tn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} is not connected, no input to return.`);return Tn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Tn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=ft(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=ft(this.inputSpec);if(e.length!==t.length)throw new V(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;na.maxNDim)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${a.maxNDim}, found ndim=${s}`);if(a.minNDim!=null&&s=0?i[l]:i[i.length+l];if(u!=null&&[u,null].indexOf(c)===-1)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${u} but got shape ${i}.`)}}if(a.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of ft(e))s.push(i.shape);this.build(Tn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&a&&(this._refCount=1)}if(this.assertInputCompatibility(e),a){let s=this.call(e,t),i=ft(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Tn(o),this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=Jee(e),i=this.computeOutputShape(s),o,l=Qee(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((u,c)=>new kr(l,u,this,ft(e),t,this.name,c)):o=new kr(l,i,this,ft(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,r)=>{n!=null&&e[r]!=null&&e[r]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new ua(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new ua(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new br(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return zp(this.weights)}build(e){this.built=!0}getWeights(e=!1){return DA(e?this.trainableWeights:this.weights)}setWeights(e){B(()=>{let t=this.weights;if(t.length!==e.length)throw new V(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],r=DA(t);for(let a=0;aa.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=ft(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,r,a,s,i=null){let o=ft(e);t=ft(t),n=ft(n),r=ft(r),a=Op(a),s=Op(s);let l=[],u=[],c=[];for(let h of o)l.push(h.sourceLayer),u.push(h.nodeIndex),c.push(h.tensorIndex);new Pp({outboundLayer:this,inboundLayers:l,nodeIndices:u,tensorIndices:c,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:a,outputShapes:s},i);for(let h=0;he.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function Jee(e){e=ft(e);let t=[];for(let n of e)t.push(n.shape);return Tn(t)}function Qee(e){return"float32"}function r7(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let r=t.inboundNodes[n];if(r.inboundLayers.length===0)return r.inputTensors;{let a=[];for(let s=0;s0){let a=await Promise.all(t);for(let s=0;sse(this.totals[r],P(a,n)));this.totals[r]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:B(()=>{let r=P(ge(1,this.seen),this.totals[n]);t[n]=r,this.totals[n].dispose(),Gt(t[n])}))}},l7=class extends Pl{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let a in this.history){let s=this.history[a];for(let i=0;inew u7(n,t))}var ur=class{constructor(){}static registerCallbackConstructor(e,t){v.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),ur.checkForDuplicate(t),ur.constructors[e]==null&&(ur.constructors[e]=[]),ur.constructors[e].push(t)}static checkForDuplicate(e){for(let t in ur.constructors)ur.constructors[+t].forEach(n=>{if(n===e)throw new V("Duplicate callback constructor.")})}static clear(){ur.constructors={}}static createCallbacks(e){let t=[];for(let n in ur.constructors){let r=+n;e>=r&&t.push(...ur.constructors[r])}return t.map(n=>new n)}};ur.constructors={};function h7(e,t,n,r,a,s,i,o,l){let u=new l7,c=[new tte,...ur.createCallbacks(t)];e!=null&&c.push(...e),c.push(u);let h=new o7(c);return h.setParams({epochs:n,initialEpoch:r,samples:a,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function Nr(e,t={},n=!1){return gc(e,re.SerializationMap.getMap().classNameMap,t,"layer",n)}function Lp(e,t){return B(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Te(vc(e),t,!0),r=Uu(n.shape,Wt()),a=en(Dr(n,r));return ge(e,a)})}function Ti(e,t){return B(()=>kt(vc(ye(t,e)),-1))}function Wp(e,t){return B(()=>kt(zt(ye(t,e)),-1))}function Ll(e,t){return B(()=>{let n=ye(e,t),r=vn(zt(e),Wt(),Number.MAX_VALUE),a=zt(ge(n,r));return P(100,kt(a,-1))})}function nte(e,t){return B(()=>{let n=vn(t,Wt(),Number.MAX_VALUE),r=Mn(se(1,n)),a=vn(e,Wt(),Number.MAX_VALUE),s=Mn(se(1,a));return kt(vc(ye(r,s)),-1)})}function rte(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(vc(n),-1)})}function ate(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(n,-1)})}function ste(e,t){return B(()=>{let n=Te(P(e,t),-1),r=Xn(P(ye(1,e),t),-1);return Dr(0,se(1,ye(r,n)))})}function ite(e,t){return B(()=>{let n=Math.log(2),r=ye(t,e),a=ye(se(r,dl(P(-2,r))),n);return kt(a,-1)})}function Ic(e,t,n=!1){return B(()=>{if(n)t=Yu(t);else{let r=Te(t,t.shape.length-1,!0);t=ge(t,r)}return t=vn(t,Wt(),1-Wt()),vt(Te(P(e.toFloat(),Mn(t)),t.shape.length-1))})}function Bp(e,t,n=!1){return B(()=>{let r=hl(CQ(e)).toInt();t=vn(t,Wt(),1-Wt());let a=t.shape,s=nl(r,a[a.length-1]).reshape(a);return Ic(s,t,n)})}function ote(e,t){if(!v.arraysEqual(e.shape,t.shape))throw new V(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return B(()=>{let n=t.relu(),r=t.abs().neg();return n.sub(t.mul(e)).add(r.exp().log1p())})}function Vp(e,t){return B(()=>{let n;return n=vn(t,Wt(),1-Wt()),n=Mn(ge(n,ye(1,n))),kt(ote(e,n),-1)})}function lte(e,t){return B(()=>{let n=vn(e,Wt(),1),r=vn(t,Wt(),1);return Te(P(e,Mn(ge(n,r))),-1)})}function ute(e,t){return B(()=>{let n=Mn(se(Wt(),t));return kt(ye(t,P(e,n)),-1)})}function zA(e,t){return B(()=>{let n=Lp(e,-1),r=Lp(t,-1),a=P(n,r);return vt(Te(a,-1))})}var Up={meanSquaredError:Ti,meanAbsoluteError:Wp,meanAbsolutePercentageError:Ll,meanSquaredLogarithmicError:nte,squaredHinge:rte,hinge:ate,categoricalHinge:ste,logcosh:ite,categoricalCrossentropy:Ic,sparseCategoricalCrossentropy:Bp,binaryCrossentropy:Vp,kullbackLeiblerDivergence:lte,poisson:ute,cosineProximity:zA};function PA(e){if(typeof e=="string"){if(e in Up)return Up[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new V(t)}else return e}function LA(e,t){return B(()=>{let n=P(.5,$n(t)),r=_c(rr(t,n),e.dtype);return kt(Da(e,r),-1)})}function WA(e,t){return B(()=>_c(Da(zu(e,-1),zu(t,-1)),"float32"))}function d7(e,t){return B(()=>ar(e.equal(1),t.equal(1)).sum().cast("float32"))}function cte(e,t){return B(()=>ar(e.equal(1),t.equal(0)).sum().cast("float32"))}function hte(e,t){return B(()=>ar(e.equal(0),t.equal(1)).sum().cast("float32"))}function p7(e,t){return B(()=>{let n=d7(e,t),r=hte(e,t),a=n.add(r);return kn(rr(a,0),n.div(a),0).cast("float32")})}function dte(e,t){return B(()=>{let n=d7(e,t),r=cte(e,t),a=n.add(r);return kn(rr(a,0),n.div(a),0).cast("float32")})}function f7(e,t){return Vp(e,t)}function m7(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Da(e,t).asType("float32")}var pte=Ti,fte=Ti,mte=Wp,Ate=Wp,yte=Ll,gte=Ll,BA=Ic,xte=zA,A7=Bp,Hp={binaryAccuracy:LA,categoricalAccuracy:WA,precision:p7,categoricalCrossentropy:BA,sparseCategoricalCrossentropy:A7,mse:pte,MSE:fte,mae:mte,MAE:Ate,mape:yte,MAPE:gte,cosine:xte};function wte(e){if(typeof e=="string"&&e in Hp)return Hp[e];if(typeof e!="string"&&e!=null)return e;throw new V(`Unknown metric ${e}`)}function jp(e){if(Br(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(Up))if(Up[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(Hp))if(Hp[n]===e){t=n;break}return t!==void 0?t:e.name}}function _te(e){let t={Adagrad:()=>fi.adagrad(.01),Adadelta:()=>fi.adadelta(1,.95,Wt()),Adam:()=>fi.adam(.001,.9,.999,Wt()),Adamax:()=>fi.adamax(.002,.9,.999,Wt(),0),RMSProp:()=>fi.rmsprop(.001,.9,0,Wt()),SGD:()=>fi.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new V(`Unknown Optimizer ${e}`)}var y7=1*1024*1024;function g7(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!VA(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let r=JSON.stringify(e);r.length>y7&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${r.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${y7}.`)}}function VA(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!VA(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!VA(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function Ite(e,t,n,r=console.log){let a=vte(e),s=["Layer (type)","Output shape","Param #"];a?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(c=>Math.floor(t*c)));let i;if(!a){s.push("Receives inputs"),i=[];for(let c in e.nodesByDepth)i.push(...e.nodesByDepth[c])}r("_".repeat(t)),Gp(s,n,r),r("=".repeat(t));let o=e.layers;for(let c=0;c1||a.length===1&&a[0].inboundLayers.length>1){t=!1;break}r.push(...a)}if(t)for(let a of e.layers){let s=!1;for(let i of a.inboundNodes)if(r.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function Gp(e,t,n=console.log){let r="";for(let a=0;a0&&(r=r.slice(0,r.length-1)+" "),r+=e[a],r=r.slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function kte(e,t,n){let r;try{r=JSON.stringify(e.outputShape)}catch(o){r="multiple"}let a=e.name,s=e.getClassName(),i=[`${a} (${s})`,r,e.countParams().toString()];Gp(i,t,n)}function Nte(e,t,n,r){let a;try{a=JSON.stringify(e.outputShape)}catch(c){a="multiple"}let s=[];for(let c of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(c)===-1))for(let h=0;hf.name),l=[],u=t.names();for(let f of o)u.indexOf(f)!==-1?l.push(t.getValue(f)):l.push(null);r!=null&&(r.maxNumTensors=-Infinity,r.minNumTensors=Infinity);let c=o.join(",")+"|"+t.names().join(","),h,d;if(jA[c]==null){let f=Tte(i,t);h=f.sorted,d=f.recipientCounts,jA[c]=h,w7[c]=d}h=jA[c],d={},a||Object.assign(d,w7[c]);let p=new Ci(t);for(let f=0;fr.maxNumTensors&&(r.maxNumTensors=T),T0,()=>"Expected at least one fetch, got none");let n=[],r={};if(e.length===1){let a=_7(e[0],t);n=a.sorted,r=a.recipientMap}else{let a=new Set;for(let s of e){let{sorted:i,recipientMap:o}=_7(s,t);for(let l of i)a.has(l.name)||(n.push(l),a.add(l.name));for(let l in o)r[l]==null&&(r[l]=new Set),o[l].forEach(u=>r[l].add(u))}}return{sorted:n,recipientCounts:Ete(r)}}function Ete(e){let t={};for(let n in e)t[n]=e[n].size;return t}function _7(e,t){let n=new Set,r=[],a={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),r.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let u of o.inputs)a[u.name]==null&&(a[u.name]=new Set),a[u.name].add(o.name),!n.has(u.name)&&s.push(u)}}return{sorted:r,recipientMap:a}}function Cte(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let r=0;ry.name)}`);Ua(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;this.outputLayers.push(g),this.outputLayersNodeIndices.push(_),this.outputLayersTensorIndices.push(b)}for(let y of this.inputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;Br(_===0,"input layer has >1 nodes"),Br(b===0,"input layer has >1 tensors"),this.inputLayers.push(g),this.inputLayersNodeIndices.push(_),this.inputLayersTensorIndices.push(b)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},r={},a={},s={},i=[],o=(y,g,_,b,w,x)=>{(b==null||w==null||x==null)&&(b=y.sourceLayer,w=y.nodeIndex,x=y.tensorIndex);let I=b.inboundNodes[w];if(_.indexOf(I)!==-1)throw new br(`The tensor ${y.name} at layer "${b.name}" is part of a cycle.`);if(g.indexOf(I)!==-1)return;this.containerNodes.add(jr.nodeKey(b,w)),b.id in s||(s[b.id]=Object.keys(s).length),_.indexOf(I)===-1&&_.push(I);let S=I.inboundLayers.length;for(let T=0;T=0;)_.splice(_.indexOf(I),1);i.push(I)},l=[],u=[];for(let y of this.outputs)o(y,l,u);let c=i.slice().reverse();for(let y of c){n[y.id]=y,y.id in t||(t[y.id]=0);let g=t[y.id],_=r[y.outboundLayer.id]==null?0:r[y.outboundLayer.id];g=Math.max(g,_),r[y.outboundLayer.id]=g,a[y.outboundLayer.id]=y.outboundLayer,t[y.id]=g;for(let b=0;bparseInt(y,10)).sort(kp);this.layers=[];for(let y of p){let g=d[y];g.sort((_,b)=>{let w=s[_.id],x=s[b.id];return wx?1:0});for(let _ of g)_ instanceof jr&&this.internalContainerRefs.push(_),this.layers.push(_)}this.layersByDepth=d,p=Object.keys(h).map(y=>parseInt(y,10)).sort(kp);let f=this.inputs.slice(),m=[];for(let y of p)for(let g of h[y]){let _=g.outboundLayer;if(_!=null){for(let b of g.inputTensors)if(f.indexOf(b)===-1)throw new br(`Graph disconnected: cannot obtain value for tensor ${b} at layer "${_.name}". The following previous layers were accessed without issue: ${m}`);for(let b of g.outputTensors)f.push(b);m.push(_.name)}}this.nodesByDepth=h;let A=this.layers.map(y=>y.name);for(let y of A){let g=A.filter(_=>_===y).length;if(g!==1)throw new br(`The name "${y}" is used ${g} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(A))}this.outboundNodes=[],this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new V("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},r=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new V(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,r++}let a=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)a.push([n[i],e[s]]);else if(t)throw new V(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new V(`${s.length} of ${r} weights are not set: ${s}`)}OA(a)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${HA}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=UA(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return B(()=>{e=ft(e);let n=new Ci;for(let r=0;r{e=ft(e);let n;return t==null?n=vi(null,e.length):n=ft(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=Op(e);if(t.length!==this.inputLayers.length)throw new V(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(kp);if(r.length>1)for(let i of r){let o=this.nodesByDepth[i];for(let l of o){let u=l.outboundLayer;if(this.inputLayers.map(f=>f.id).indexOf(u.id)!==-1)continue;let c=[];for(let f=0;fparseInt(o,10)).sort(kp);for(let o of r){let l=this.nodesByDepth[o];for(let u of l){let c=u.outboundLayer,h=u.inputTensors,d=u.outputTensors,p=new Array;for(let f of h)f.id in n&&p.push(n[f.id]);if(p.length===h.length){let f={},m,A,y,g;if(u.callArgs!=null&&(f=u.callArgs),p.length===1){let[_,b]=p[0];f.mask==null&&(f.mask=b),y=ft(c.call(_,f)),g=ft(c.computeMask(_,b)),m=[_],A=[b]}else m=p.map(_=>_[0]),A=p.map(_=>_[1]),f.mask==null&&(f.mask=A),y=ft(c.call(m,f)),g=ft(c.computeMask(m,A));if(c.activityRegularizer)throw new De("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let _=0;_{let e=[];for(let t of this.layers)for(let n=0;n0){let f=[];for(let m=0;m0&&m.apply(Tn(y),g)}function l(m){let A=m.name,y=Nr(m,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(r),a[A]=y,m.inboundNodes.forEach(g=>{if(!(g instanceof Array))throw new V(`Corrupted configuration, expected array for nodeData: ${g}`);i(y,g)})}let u=t.name,c=t.layers;for(let m of c)l(m);for(;!nQ(s);)for(let m of c){let A=a[m.name];if(A.name in s){let y=s[A.name];delete s[A.name];for(let g of y)o(A,g)}}let h=[],d=[],p=t.inputLayers;for(let m of p){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;h.push(_[g])}let f=t.outputLayers;for(let m of f){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;d.push(_[g])}return new e({inputs:h,outputs:d,name:u})}get stateful(){if(this._stateful)throw new V("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){B(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function Rte(e,t,n){let r=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(a=>null);if(r===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${r} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let a=[];return t.forEach(s=>{s in e?a.push(e[s]):a.push(null)}),a}else throw new Error(`The model has multiple (${r}) outputs, so ${n} must be either an array with ${r} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function b7(e,t){return Rte(e,t,"classWeight")}async function v7(e,t,n,r){if(t!=null||r!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let a=B(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await a.data());Ee(a);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),on(i,"float32")}else return null}function Fte(e,t){return P(e,t)}var Mte=32;function N7(e,t){let n,r,a=t;n=a.xs,r=a.ys,v.assert(n!=null&&r!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=k7("input",e.inputNames,n),i=k7("output",e.outputNames,r),o=s[0].shape[0];v.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),v.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function k7(e,t,n){if(n instanceof Ue)return[n];if(Array.isArray(n))return v.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let r=[];for(let a of t){if(n[a]==null)throw new V(`The feature data generated by the dataset lacks the required ${e} key '${a}'.`);r.push(n[a])}return r}}function $te(e){if(e.length===3)throw new De("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function Ote(e,t,n){let r=n.batchesPerEpoch!=null;if(v.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),v.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),v.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),v.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),v.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let a=n.validationData!=null,s,i;if(a)if(I7(n.validationData))v.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let A=$te(n.validationData);s=A.xs,i=A.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),u;a?u=l.slice().concat(l.map(A=>"val_"+A)):u=l.slice();let c=c7(n.callbacks,n.yieldEvery),h=n.verbose==null?1:n.verbose,{callbackList:d,history:p}=h7(c,h,n.epochs,null,null,Dte(t,n),null,a,u);d.setModel(e),e.history=p,await d.onTrainBegin(),e.stopTraining_=!1;let f=n.initialEpoch==null?0:n.initialEpoch,m=await t.iterator();for(;f=n.batchesPerEpoch:_.done){if(a){let b;I7(n.validationData)?b=ft(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):b=ft(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?Mte:n.validationBatchSize,verbose:0}));for(let w=0;w0)throw new De("Verbose mode is not implemented yet.");v.assert(!r||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=zte(t)?t:await t.iterator(),o=0,l=0;for(;r?l{if(u.value){let{xs:c,ys:h}=N7(e,u.value),d=c.concat(h),p=B(()=>a(d));if(Ee(d),l===0)for(let m=0;mse(s[m],P(f,A))),l>0&&Ee(y)}Ee(p),o+=f,++l}return s}),u.done){r&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function Cc(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(r=>Si(r,t,n-t)):Si(e,t,n-t)}function qA(e,t){return B(()=>e==null?null:Array.isArray(e)?e.map(n=>qA(n,t)):H3(e,t.dtype==="int32"?t:t.toInt()))}function XA(e,t){let n=[],r=0,a=null;for(;r=e&&(a=e),n.push([r,a]),r=a;return n}async function Lte(e,t,n,r,a,s,i,o,l,u,c,h,d,p,f){a==null&&(a=32),s==null&&(s=1),c==null&&(c=!0),d==null&&(d=0);let m=!1;if(l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new V("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let A=e.checkNumSamples(n,a,p,"steps_per_epoch"),y;A!=null&&(y=vr(0,A)),i==null&&(i=1);let{callbackList:g,history:_}=h7(o,i,s,d,A,p,a,m,h);g.setModel(e),e.history=_,await g.onTrainBegin(),e.stopTraining_=!1;for(let b=d;b{let M=I[S][0],D=I[S][1],z=Si(x,M,D-M);T.batch=S,T.size=D-M;let W=qA(n,z),U=t(W);for(let H=0;H0){if(f=!0,r.validationData.length===2)i=r.validationData[0],o=r.validationData[1];else throw r.validationData.length===3?new De("validationData including sample weights is not supported yet."):new V(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${r.validationData} is invalid.`);let x=!0,I=await e.standardizeUserData(i,o,null,null,x,h);l=I[0],u=I[1],m=l.concat(u)}else if(r.validationSplit!=null&&r.validationSplit>0&&r.validationSplit<1){f=!0;let x=Math.floor(a[0].shape[0]*(1-r.validationSplit)),I=a[0].shape[0];l=Cc(a,x,I),a=Cc(a,0,x),u=Cc(s,x,I),s=Cc(s,0,x),m=l.concat(u)}else r.validationSteps!=null&&(f=!0);let A=a.concat(s).concat(c);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),g=e.getDedupedMetricsNames(),_,b;f?(e.makeTestFunction(),_=e.testFunction,b=g.slice().concat(g.map(x=>"val_"+x))):(_=null,m=[],b=g.slice());let w=c7(r.callbacks,r.yieldEvery);return await Lte(e,y,A,g,h,r.epochs,r.verbose,w,_,m,r.shuffle,b,r.initialEpoch,null,null)}finally{e.isTraining=!1,Ei(a,t),Ei(s,n),Ei(l,i),Ei(u,o),c!=null&&Ee(c)}}function S7(e){let t=[];e instanceof Ue&&(e=[e]);for(let n=0;nn.push(a.id));else if(t!=null)for(let a in t){let s=t[a];n.push(s.id)}let r=[];if(e instanceof Ue)n.indexOf(e.id)===-1&&r.push(e);else if(Array.isArray(e))e.forEach(a=>{n.indexOf(a.id)===-1&&r.push(a)});else if(e!=null)for(let a in e){let s=e[a];n.indexOf(s.id)===-1&&r.push(s)}r.forEach(a=>{a.isDisposed||a.dispose()})}function Bte(e){return e instanceof Ue}function KA(e){return Array.isArray(e)}function T7(e){return!Bte(e)&&!KA(e)}function C7(e,t,n,r=!0,a=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(KA(e)&&e.length>0)i=!0;else if(T7(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new V(`Error when checking model ${a} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(T7(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new V(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(KA(e)){if(e=e,e.length!==t.length)throw new V(`Error when checking model ${a}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new V(`The model ${a} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=S7(s),n!=null)for(let i=0;i=0&&u!==c)throw new V(`Error when checking ${a}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function Vte(e,t,n){let r=Ua(e.map(s=>s.shape[0]));r.sort();let a=Ua(t.map(s=>s.shape[0]));if(a.sort(),r.length>1)throw new V(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(a.length>1)throw new V(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(r.length>0&&a.length>0&&!v.arraysEqual(r,a))throw new V(`Input Tensors should have the same number of samples as target Tensors. Found ${r[0]} input sample(s) and ${a[0]} target sample(s).`)}function Ute(e,t,n){let r=[Ti,Vp,Ic];for(let a=0;a1)throw new V(`The model expects ${t.length} ${a} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(r=>n);{let r=[];for(let a of t){let s=n.hasOwnProperty(a)?n[a]:[];Array.isArray(s)||(s=[s]),r.push(s)}return r}}var jte="layers-model",ha=class extends jr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new V("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");Ite(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=_te(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof oa))throw new V("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new V(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(PA(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new V(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>PA(s))}else{let s=PA(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let r=Hte(e.metrics,this.outputNames),a=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Ii("metric",()=>{for(let s=0;s{let l="",u,c,h;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let f=this.internalOutputShapes[s];f[f.length-1]===1||this.lossFunctions[s]===Vp?["accuracy","acc"].indexOf(d)!==-1?c=LA:["crossentropy","ce"].indexOf(d)!==-1&&(c=f7):this.lossFunctions[s]===Bp?["accuracy","acc"].indexOf(d)!==-1?c=m7:["crossentropy","ce"].indexOf(d)!==-1&&(c=A7):["accuracy","acc"].indexOf(d)!==-1?c=WA:["crossentropy","ce"].indexOf(d)!==-1&&(c=BA);let m;["accuracy","acc"].indexOf(d)!==-1?m="acc":["crossentropy","ce"].indexOf(d)!==-1&&(m="ce"),h=c,u=l+m}else h=wte(d),u=l+jp(d);let p;Ii(u,()=>{p=h}),a(s,u,p)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let r=n.batchSize==null?32:n.batchSize;GA(r);let a=!0,s=this.standardizeUserDataXY(e,t,a,r);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,r,n.verbose,n.steps);return Tn(l)}finally{Ei(s[0],e),Ei(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),Pte(this,e,t)}checkNumSamples(e,t,n,r="steps"){let a;if(n!=null){if(a=null,t!=null)throw new V(`If ${r} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?a=e[0].shape[0]:a=e.shape[0];else throw new V(`Either the input data should have a defined shape, or ${r} shoud be specified.`);return a}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new V("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),r=n?t:[t],a=this.retrieveSymbolicTensors(r),s=new Ci;if(e instanceof Ue&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new V(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let r=[];throw t.forEach((a,s)=>{a==null&&r.push(e[s])}),new V(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(r)}`)}return t}predictLoop(e,t=32,n=!1){return B(()=>{let r=this.checkNumSamples(e);if(n)throw new De("Verbose predictLoop() is not implemented yet.");let a=XA(r,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=a[i][0],l=a[i][1],u=Cc(e,o,l),c=[];if(Array.isArray(u))for(let d=0;ds[l].push(o));return Tn(s.map(i=>st(i,0)))})}predict(e,t={}){let n=S7(e);E7(n,this.inputNames,this.feedInputShapes,!1);try{let r=t.batchSize==null?32:t.batchSize;return GA(r),this.predictLoop(n,r)}finally{Ei(n,e)}}predictOnBatch(e){E7(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,r){if(this.optimizer_==null)throw new br("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let a=[];for(let s=0;s0&&e[0].shape[0]%r!=0)throw new V(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${r}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,r,a=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,a,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(r!=null){let u=b7(r,this.outputNames);l=[];for(let c=0;c{let s=this.checkNumSamples(t,n,a,"steps"),i=[];if(r>0)throw new De("Verbose mode is not implemented yet.");if(a!=null)throw new De("steps mode in testLoop() is not implemented yet");{let o=XA(s,n),l=on(vr(0,s));for(let u=0;u1&&(a+=`_${R3(e.slice(0,n),r)}`),t.push(a)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let u=[];for(let p=0;p1&&p{d=se(d,p)}),d},o=this.collectedTrainableWeights.map(u=>u.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>B(()=>{let t=[],n,r=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lca(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let r of t)if(typeof n[r]=="string")e[r]=ca(n[r]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[ca(jp(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>ca(jp(e)));{let e={};for(let t in this.metrics)e[t]=ca(jp(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=Sc(e.optimizer_config),n=Nr(t),r;if(typeof e.loss=="string")r=ki(e.loss);else if(Array.isArray(e.loss))r=e.loss.map(s=>ki(s));else if(e.loss!=null){r={};for(let s in e.loss)r[s]=ki(e.loss[s])}let a;if(Array.isArray(e.metrics))a=e.metrics.map(s=>ki(s));else if(e.metrics!=null){a={};for(let s in e.metrics)a[s]=ki(e.metrics[s])}this.compile({loss:r,metrics:a,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=bn.getSaveHandlers(e);if(i.length===0)throw new V(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new V(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new V("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await bn.encodeWeights(this.getNamedWeights(t)),r=!1,a=null,s={modelTopology:this.toJSON(a,r),format:jte,generatedBy:`TensorFlow.js tfjs-layers v${HA}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await bn.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=bn.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;g7(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){g7(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};ha.className="Model";re.registerClass(ha);var R7=class extends ha{};R7.className="Functional";re.registerClass(R7);async function Gte(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let r=Sc(n),a=Nr(r,t);if(e.weightsManifest!=null){let s=await bn.loadWeights(e.weightsManifest,e.pathPrefix,a.weights.map(o=>o.originalName)),i={};for(let o of a.weights)i[o.originalName]=s[o.originalName];a.loadWeights(i),Ee(s)}return a}async function Xte(e,t){if(t==null&&(t={}),typeof e=="string"){let n=bn.getLoadHandlers(e,t);if(n.length===0)n.push(bn.browserHTTPRequest(e,t));else if(n.length>1)throw new V(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return qte(e,void 0,t)}async function qte(e,t,n){if(n==null&&(n={}),e.load==null)throw new V("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let r=await e.load(),a=r.modelTopology;a.model_config!=null&&(a=a.model_config);let s=n.strict==null?!0:n.strict,i=r.weightData!=null&&r.weightSpecs!=null&&s,o=Nr(Sc(a),t,i),l=r.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),r.userDefinedMetadata!=null&&o.setUserDefinedMetadata(r.userDefinedMetadata),r.weightData!=null){if(r.weightSpecs==null)throw new V("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:u,optimizerWeights:c}=Kte(r.weightData,r.weightSpecs);o.loadWeights(u,s),o.optimizer!=null&&c.length>0&&await o.optimizer.setWeights(c),Ee(u),Ee(c.map(h=>h.tensor))}return o}function Kte(e,t){let n=bn.decodeWeights(e,t),r={},a=[];return t.forEach(s=>{s.group==="optimizer"?a.push({name:s.name,tensor:n[s.name]}):r[s.name]=n[s.name]}),{modelWeights:r,optimizerWeights:a}}var Wl=class extends ha{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:Dp("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new V(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof Wl||e instanceof ha,n;if(t){if(n=e,n.outputs.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new V("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new V("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let r=a7({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(r)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new V(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=r7(this.outputs[0])}this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:vi(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(r=>r.shape),outputShapes:this.outputs[0].shape})}else{let r=e.apply(this.outputs[0]);if(Array.isArray(r))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[r],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(ct(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new ha({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},r=!1){let a,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new V("Legacy serialization format not supported yet.");a=t}else v.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),a=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof Wl))throw new De(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of a){let l=Nr(o,void 0,r);r&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new V("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new V("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};Wl.className="Sequential";re.registerClass(Wl);function Zte(e){return new ha(e)}function Yte(e){return new Wl(e)}function Jte(e,t){return t==null&&(t={}),Xte(e,t)}function K3(e){return a7(e)}function Qte(e,t){ur.registerCallbackConstructor(e,t)}var Ln=class extends re.Serializable{getConfig(){return{}}},F7=class extends Ln{apply(e,t=1){return RQ(e,t)}};F7.className="elu";re.registerClass(F7);var M7=class extends Ln{apply(e){return Cd(e)}};M7.className="selu";re.registerClass(M7);var $7=class extends Ln{apply(e){return zr(e)}};$7.className="relu";re.registerClass($7);var D7=class extends Ln{apply(e){return B(()=>fl(6,zr(e)))}};D7.className="relu6";re.registerClass(D7);var O7=class extends Ln{apply(e){return e}};O7.className="linear";re.registerClass(O7);var z7=class extends Ln{apply(e){return Fn(e)}};z7.className="sigmoid";re.registerClass(z7);var P7=class extends Ln{apply(e){return MQ(e)}};P7.className="hardSigmoid";re.registerClass(P7);var L7=class extends Ln{apply(e){return dl(e)}};L7.className="softplus";re.registerClass(L7);var W7=class extends Ln{apply(e){return FQ(e)}};W7.className="softsign";re.registerClass(W7);var B7=class extends Ln{apply(e){return ol(e)}};B7.className="tanh";re.registerClass(B7);var ZA=class extends Ln{apply(e,t=-1){return Yu(e,t)}};ZA.className="softmax";re.registerClass(ZA);var V7=class extends Ln{apply(e,t=-1){return bd(e,t)}};V7.className="logSoftmax";re.registerClass(V7);var U7=class extends Ln{apply(e,t=1){return B(()=>Fn(e.mul(t)).mul(e))}};U7.className="swish";re.registerClass(U7);function qa(e){return e.getClassName()}function YA(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"activation")}function Xa(e){if(e==null){let t={};return t.className="linear",t.config={},YA(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},YA(t)}else return e instanceof Ln?e:YA(e)}function JA(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var H7=class extends re.Serializable{},Ec=class extends H7{constructor(e){super();JA(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return B(()=>{let t=Et([1]);return this.hasL1&&(t=se(t,Te(P(this.l1,zt(e))))),this.hasL2&&(t=se(t,Te(P(this.l2,vc(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};Ec.className="L1L2";re.registerClass(Ec);function ene(e){return JA(e),new Ec({l1:e!=null?e.l1:null,l2:0})}function tne(e){return JA(e),new Ec({l2:e!=null?e.l2:null,l1:0})}var j7={l1l2:"L1L2"};function ht(e){return dA(e)}function G7(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"regularizer")}function wt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in j7?j7[e]:e,config:{}};return G7(t)}else return e instanceof H7?e:G7(e)}var QA=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Pe(e);let n=zr(e);return this.maxValue!=null&&(n=vn(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};QA.className="ReLU";re.registerClass(QA);var ey=class extends qe{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Pe(e);return Hu(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};ey.className="LeakyReLU";re.registerClass(ey);var ty=class extends qe{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=xt(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=wt(e.alphaRegularizer),this.alphaConstraint=Vt(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new V(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=ct(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let r of this.sharedAxes)t[r-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let r=1;r(Tt(t),t==="channelsFirst"?at(e,[0,2,3,1]):e))}function q7(e,t){return B(()=>(Tt(t),t==="channelsFirst"?at(e,[0,2,3,4,1]):e))}function nne(e,t,n,r=1,a="valid",s,i=1){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.shape.length!==3)throw new V(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new V(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new V(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=at(e,[0,2,1])),a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=fd(e,t,r,a==="same"?"same":"valid","NWC",i);return n!=null&&(o=Ur(o,n)),o})}function X7(e,t,n,r=[1,1],a="valid",s,i,o=null){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==3&&e.rank!==4)throw new V(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new V(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=sy(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=La.conv2d({x:l,filter:t,strides:r,pad:a==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=at(l,[0,3,1,2])),l})}function rne(e,t,n,r=[1,1,1],a="valid",s,i){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==4&&e.rank!==5)throw new V(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new V(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=q7(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=Xf(o,t,r,a==="same"?"same":"valid","NDHWC",i),n!=null&&(o=Ur(o,n)),s==="channelsFirst"&&(o=at(o,[0,4,1,2,3])),o})}var iy=class extends qe{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",iy.verifyArgs(t),this.rank=e,Xt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new De(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Bl(t.kernelSize,e,"kernelSize"),this.strides=Bl(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,Yn(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Tt(this.dataFormat),this.activation=Xa(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=xt(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Vt(t.biasConstraint),this.biasRegularizer=wt(t.biasRegularizer),this.activityRegularizer=wt(t.activityRegularizer),this.dilationRate=Bl(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new V(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new V(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new V(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(Br("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,3))throw new V(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:qa(this.activation),useBias:this.useBias,biasInitializer:Nt(this.biasInitializer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},Rc=class extends iy{constructor(e,t){super(e,t);this.kernel=null,Rc.verifyArgs(t),this.filters=t.filters,Xt(this.filters,"filters"),this.kernelInitializer=xt(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Vt(t.kernelConstraint),this.kernelRegularizer=wt(t.kernelRegularizer)}build(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],r=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",r,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n,r=this.bias==null?null:this.bias.read(),a=M3(this.activation.getClassName());if(a!=null&&this.rank===2)n=X7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate,a);else{if(this.rank===1)n=nne(e,this.kernel.read(),r,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=X7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=rne(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new De("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=ct(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let a=0;a 0 but got ${JSON.stringify(e.filters)}`)}},Fc=class extends Rc{constructor(e){super(2,e);Fc.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,2))throw new V(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};Fc.className="Conv2D";re.registerClass(Fc);var Xp=class extends Rc{constructor(e){super(3,e);Xp.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new V(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};Xp.className="Conv3D";re.registerClass(Xp);var oy=class extends Fc{constructor(e){super(e);if(this.inputSpec=[new Kt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new V(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=ct(e),e.length!==4)throw new V("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],r=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",r,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Kt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return B(()=>{let n=Pe(e);if(n.shape.length!==4)throw new V(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let r=n.shape,a=r[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=r[s],l=r[i],u=this.kernelSize[0],c=this.kernelSize[1],h=this.strides[0],d=this.strides[1],p=qp(o,h,u,this.padding),f=qp(l,d,c,this.padding),m=[a,p,f,this.filters];this.dataFormat!=="channelsLast"&&(n=at(n,[0,2,3,1]));let A=md(n,this.kernel.read(),m,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(A=at(A,[0,3,1,2])),this.bias!=null&&(A=Ur(A,this.bias.read(),this.dataFormat)),this.activation!=null&&(A=this.activation.apply(A)),A})}computeOutputShape(e){e=ct(e);let t=e.slice(),n,r,a;this.dataFormat==="channelsFirst"?(n=1,r=2,a=3):(n=3,r=1,a=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[r]=qp(t[r],o,s,this.padding),t[a]=qp(t[a],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};oy.className="Conv2DTranspose";re.registerClass(oy);var K7=class extends Rc{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new V("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new V("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new V(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=wt(t.depthwiseRegularizer),this.depthwiseConstraint=Vt(t.depthwiseConstraint),this.pointwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=wt(t.pointwiseRegularizer),this.pointwiseConstraint=Vt(t.pointwiseConstraint)}build(e){if(e=ct(e),e.length{e=Pe(e);let n;if(this.rank===1)throw new De("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=at(e,[0,2,3,1])),n=dm(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=at(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.pointwiseInitializer=Nt(this.pointwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.pointwiseRegularizer=ht(this.pointwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseConstraint),e.pointwiseConstraint=Bt(this.pointwiseConstraint),e}};K7.className="SeparableConv";var ly=class extends K7{constructor(e){super(2,e)}};ly.className="SeparableConv2D";re.registerClass(ly);var Kp=class extends Rc{constructor(e){super(1,e);Kp.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,1))throw new V(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};Kp.className="Conv1D";re.registerClass(Kp);var uy=class extends qe{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return B(()=>{if(e=Pe(e),this.dataFormat==="channelsLast"){let n=Np(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return Np(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=Np(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return Np(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};uy.className="Cropping2D";re.registerClass(uy);var cy=class extends qe{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,kQ(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return B(()=>{let n=Pe(e),r=n.shape;if(this.dataFormat==="channelsFirst"){n=at(n,[0,2,3,1]);let a=this.size[0]*r[2],s=this.size[1]*r[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s]);return at(i,[0,3,1,2])}else{let a=this.size[0]*r[1],s=this.size[1]*r[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};cy.className="UpSampling2D";re.registerClass(cy);function ane(e,t,n=[1,1],r="valid",a,s){return B(()=>{a==null&&(a=_r()),Tt(a);let i=sy(e,a);if(e.rank!==4)throw new V(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new V(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=ul(i,t,n,r==="same"?"same":"valid","NHWC",s),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}var hy=class extends iy{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=xt(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Vt(e.depthwiseConstraint),this.depthwiseRegularizer=wt(e.depthwiseRegularizer)}build(e){if(e=ct(e),e.length<4)throw new V(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new V(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n=ane(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,a=Ir(t,this.kernelSize[0],this.padding,this.strides[0]),s=Ir(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],r,a,s]:[e[0],a,s,r]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseRegularizer),e}};hy.className="DepthwiseConv2D";re.registerClass(hy);function Z7(e,t,n,r){if(Array.isArray(e)){if(t!=null||n!=null)throw new V("When inputs is an array, neither initialState or constants should be provided");r!=null&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(s){return s==null||Array.isArray(s)?s:[s]}return t=a(t),n=a(n),{inputs:e,initialState:t,constants:n}}function Y7(e,t,n,r=!1,a,s,i=!1,o=!1){return B(()=>{let l=t.shape.length;if(l<3)throw new V(`Input should be at least 3D, but is ${l}D.`);let u=[1,0].concat(vr(2,l));if(t=at(t,u),s!=null)throw new De("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a!=null&&(a=a.asType("bool").asType("float32"),a.rank===l-1&&(a=hn(a,-1)),a=at(a,u)),r&&(t=Dn(t,0),a!=null&&(a=Dn(a,0)));let c=[],h,d=n,p=t.shape[0],f=sr(t),m;a!=null&&(m=sr(a));for(let y=0;ye(g,d));if(a==null)h=_[0],d=_[1];else{let b=B(()=>{let w=m[y],x=$n(w).sub(w),I=_[0].mul(w).add(d[0].mul(x)),S=d.map((T,M)=>_[1][M].mul(w).add(T.mul(x)));return{output:I,newStates:S}});h=b.output,d=b.newStates}o&&c.push(h)}let A;return o&&(A=dn(c,1)),[h,A,d]})}var Hr=class extends qe{constructor(e){super(e);let t;if(e.cell==null)throw new V("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new Zp({cells:e.cell}):t=e.cell,t.stateSize==null)throw new V("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Kt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return vr(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){$A(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],r;if(this.returnSequences?r=[e[0],e[1],n]:r=[e[0],n],this.returnState){let a=[];for(let s of t)a.push([e[0],s]);return[r].concat(a)}else return r}computeMask(e,t){return B(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let r=this.states.map(a=>null);return[n].concat(r)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new V(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Kt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_=[Et([n,this.cell.stateSize])];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_[0]=Et([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let r=0;rGt(r.clone()))})}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=Z7(e,n,r,this.numConstants);e=a.inputs,n=a.initialState,r=a.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Kt({shape:o.shape}));i=i.concat(this.stateSpec)}if(r!=null&&(t.constants=r,s=s.concat(r),this.numConstants=r.length),s[0]instanceof kr){let o=[e].concat(s),l=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=l;let c=super.apply(o,t);return this.inputSpec=u,c}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;e=Pe(e),a==null&&(this.stateful?a=this.states_:a=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(a.length!==s)throw new V(`RNN Layer has ${s} state(s) but was passed ${a.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:r},o=Y7((d,p)=>{let f=this.cell.call([d].concat(p),i);return[f[0],f.slice(1)]},e,a,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],u=o[1],c=o[2];this.stateful&&this.resetStates(c,r);let h=this.returnSequences?u:l;return this.returnState?[h].concat(c):h})}getInitialState(e){return B(()=>{let t=Et(e.shape);return t=Te(t,[1,2]),t=bc(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?wA(t,[1,n]):t):this.cell.stateSize>1?[wA(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===Hr.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let r=t.cell,a=Nr(r,n);return new e(Object.assign(t,{cell:a}))}};Hr.className="RNN";re.registerClass(Hr);var Nc=class extends qe{},Yp=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let r=t.training==null?!1:t.training;0$n(e),rate:this.dropout,training:r})),0$n(n),rate:this.recurrentDropout,training:r}));let a,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?a=Vr(P(e,s),this.kernel.read()):a=Vr(e,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),i!=null&&(n=P(n,i));let o=se(a,Vr(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),recurrentInitializer:Nt(this.recurrentInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),recurrentRegularizer:ht(this.recurrentRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),recurrentConstraint:Bt(this.recurrentConstraint),biasConstraint:Bt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};Yp.className="SimpleRNNCell";re.registerClass(Yp);var dy=class extends Hr{constructor(e){e.cell=new Yp(e),super(e)}call(e,t){return B(()=>{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return new e(t)}};dy.className="SimpleRNN";re.registerClass(dy);var Jp=class extends Nc{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new V("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,r=e[1];e=e[0],0$n(e),rate:this.dropout,training:n,count:3})),0$n(r),rate:this.recurrentDropout,training:n,count:3}));let a=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};py.className="GRU";re.registerClass(py);var Mc=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=ct(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let r;if(this.useBias){if(this.unitForgetBias){let a=this.biasInitializer,s=this.units;r=new(t=class extends lr{apply(i,o){let l=a.apply([s]),u=new Sp().apply([s]),c=a.apply([s*2]);return U3(U3(l,u),c)}},t.className="CustomInit",t)}else r=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,r,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new V(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let r=e[1],a=e[2];e=e[0],0$n(e),rate:this.dropout,training:n,count:4})),0$n(r),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,u,c;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};fy.className="LSTM";re.registerClass(fy);var Zp=class extends Nc{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return B(()=>{e=e;let n=e.slice(1),r=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?r.push(n.splice(0,i.stateSize.length)):r.push(n.splice(0,1));r.reverse();let a=[],s;for(let i=0;i{Ii(`RNNCell_${r}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=r=>({className:r.getClassName(),config:r.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let r=[];for(let a of t.cells)r.push(Nr(a,n));return new e({cells:r})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return DA(e)}setWeights(e){let t=[];for(let n of this.cells){let r=n.weights.length,a=e.splice(r);for(let s=0;sj3(t(),n),i=()=>kc(s,t,r);return!a||a<=1?Gt(i().clone()):Array(a).fill(void 0).map(i).map(o=>Gt(o.clone()))}var sne=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a{if(this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new V("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return B(()=>{let{stateSize:t}=this.cell,n=e.shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)],s=Et(a);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)];if(n[0]==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_=[Et(a)];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_[0]=Et(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let s=0;sGt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:r,padding:a,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],u=e[o?4:3],c=Ir(l,r[0],a,s[0],i[0]),h=Ir(u,r[1],a,s[1],i[1]);return[...e.slice(0,2),...o?[n,c,h]:[c,h,n]]}};J7.className="ConvRNN2D";var Qp=class extends Mc{constructor(e){let{filters:t,kernelSize:n,strides:r,padding:a,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Xt(this.filters,"filters"),this.kernelSize=Bl(n,2,"kernelSize"),this.kernelSize.forEach(o=>Xt(o,"kernelSize")),this.strides=Bl(r||1,2,"strides"),this.strides.forEach(o=>Xt(o,"strides")),this.padding=a||"valid",Yn(this.padding),this.dataFormat=s||"channelsLast",Tt(this.dataFormat),this.dilationRate=Bl(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Xt(o,"dilationRate"))}build(e){var t;e=ct(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[n]}`);let r=e[n],a=4,s=this.kernelSize.concat([r,this.filters*a]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*a]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,u=this.filters;o=new(t=class extends lr{apply(c,h){let d=l.apply([u]),p=Or([u]),f=l.apply([u*2]);return bA([d,p,f])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*a],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return B(()=>{if(e.length!==3)throw new V(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,r=e[0],a=e[1],s=e[2],i=4;0$n(r),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Y,ae,te)=>!ae||!ae[te]?Y:P(ae[te],Y),u=l(r,o,0),c=l(r,o,1),h=l(r,o,2),d=l(r,o,3);0$n(a),rate:this.recurrentDropout,training:n,count:i}));let p=this.recurrentDropoutMask,f=l(a,p,0),m=l(a,p,1),A=l(a,p,2),y=l(a,p,3),g=3,[_,b,w,x]=Lt(this.kernel.read(),i,g),[I,S,T,M]=this.useBias?Lt(this.bias.read(),i):[null,null,null,null];u=this.inputConv(u,_,I,this.padding),c=this.inputConv(c,b,S,this.padding),h=this.inputConv(h,w,T,this.padding),d=this.inputConv(d,x,M,this.padding);let[D,z,W,U]=Lt(this.recurrentKernel.read(),i,g);f=this.recurrentConv(f,D),m=this.recurrentConv(m,z),A=this.recurrentConv(A,W),y=this.recurrentConv(y,U);let H=this.recurrentActivation.apply(se(u,f)),X=this.recurrentActivation.apply(se(c,m)),j=se(P(X,s),P(H,this.activation.apply(se(h,A)))),ee=P(this.recurrentActivation.apply(se(d,y)),this.activation.apply(j));return[ee,ee,j]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=sne(e,["units"]),r={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,r)}inputConv(e,t,n,r){let a=ra(e,t,this.strides,r||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?Ur(a,n,this.dataFormat):a}recurrentConv(e,t){return ra(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};Qp.className="ConvLSTM2DCell";re.registerClass(Qp);var my=class extends J7{constructor(e){let t=new Qp(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};my.className="ConvLSTM2D";re.registerClass(my);var e0=class extends qe{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);if(0j3(n,this.rate,a,this.seed),()=>n,r)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};e0.className="Dropout";re.registerClass(e0);var Ay=class extends e0{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};Ay.className="SpatialDropout1D";re.registerClass(Ay);var yy=class extends qe{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Vt(e.kernelConstraint),this.biasConstraint=Vt(e.biasConstraint),this.kernelRegularizer=wt(e.kernelRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=ct(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=ct(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=M3(this.activation.getClassName()),a;return r!=null?a=Vr(n,this.kernel.read(),r,this.bias?this.bias.read():null):(a=Vr(n,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),this.activation!=null&&(a=this.activation.apply(a))),a})}getConfig(){let e={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};yy.className="Dense";re.registerClass(yy);var gy=class extends qe{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=ct(e);for(let t of e.slice(1))if(t==null)throw new V(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],Ha(e,1)]}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let r=[0];for(let a=2;a{this.invokeCallHook(e,t);let n=Pe(e);return this.activation.apply(n)})}getConfig(){let e={activation:qa(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};xy.className="Activation";re.registerClass(xy);var wy=class extends qe{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return B(()=>(e=Pe(e),TQ(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};wy.className="RepeatVector";re.registerClass(wy);var _y=class extends qe{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Pe(e),r=n.shape,a=r.slice(0,1).concat(this.fixUnknownDimension(r.slice(1),this.targetShape));return n.reshape(a)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};_y.className="Reshape";re.registerClass(_y);var by=class extends qe{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=vr(1,e.dims.length+1);if(!v.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Kt({ndim:this.dims.length+1})]}computeOutputShape(e){e=ct(e);let t=e.slice();return this.dims.forEach((n,r)=>{t[r+1]=e[n]}),t}call(e,t){return at(Pe(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};by.className="Permute";re.registerClass(by);var vy=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Pe(e),r=-1;return Ou(di(n,this.maskValue),r)}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=-1,a=!0,s=Ou(di(n,this.maskValue),r,a);return n.mul(s.asType(n.dtype))})}};vy.className="Masking";re.registerClass(vy);var ky=class extends qe{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(ft(e.inputLength))}this.inputDim=e.inputDim,Xt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Xt(this.outputDim,"outputDim"),this.embeddingsInitializer=xt(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=wt(e.embeddingsRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.embeddingsConstraint=Vt(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return B(()=>this.maskZero?(e=Pe(e),di(e,He(e))):null)}computeOutputShape(e){if(e=ct(e),this.inputLength==null)return[...e,this.outputDim];let t=ft(this.inputLength);if(t.length!==e.length-1)throw new V(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);return n.dtype!=="int32"&&(n=_c(n,"int32")),H3(this.embeddings.read(),n.as1D()).reshape(ct(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Nt(this.embeddingsInitializer),embeddingsRegularizer:ht(this.embeddingsRegularizer),activityRegularizer:ht(this.activityRegularizer),embeddingsConstraint:Bt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};ky.className="Embedding";re.registerClass(ky);var Ri=class extends qe{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new De}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new V(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let a=1;aa.length);e.indexOf(null)===-1&&Ua(r).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return B(()=>{if(e=e,this.reshapeRequired){let n=[],r=e.map(a=>a.rank);if(r.indexOf(null)===-1){let a=ja(r);for(let s of e){let i=s.rank;for(let o=0;o1){let u=vr(1,l).concat([0]);n.push(at(o,u)),a=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(a){if(i==null){let o=s.shape,l=o.length,u=o[l-1],c=[u].concat(o.slice(0,o.length-1));s=at(s.reshape([-1,u]),[1,0]).reshape(c)}else if(i>1){let o=[i-1].concat(vr(0,i-1));s=at(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let r=1;r{if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an Array");if(!Array.isArray(e))throw new V("`inputs` should be an Array");if(t.length!==e.length)throw new V(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(r=>r==null))return null;t=t.map(r=>r==null?r:hn(r,0));let n=t[0];for(let r=1;r{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new V("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return B(()=>bA(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new V("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis;for(let a of t.slice(1)){if(n[r]==null||a[r]==null){n[r]=null;break}n[r]+=a[r]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new V("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new V(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return B(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let r=[];for(let s=0;s3||t.shape.length>3)throw new De("batchDot is not implemented for tensors of 4D or higher rank yet");if(v.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),v.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new De("batchDot is not implemented for complex64-type Tensors yet.");let r=e.shape.length,a=t.shape.length;n==null&&(n=[r-1,a-2]);let s=n;return B(()=>{let i;if(r>a){i=r-a;let l=[];for(let u=0;ur){i=a-r;let l=[];for(let u=0;u0){let l;r>a?l=r+a-3:l=r-1;let u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new V(`Dimension incompatibility: ${t[r[0]]} !== ${n[r[1]]}`)}mergeFunction(e){if(e.length!==2)throw new V(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],r;return Array.isArray(this.axes)?r=this.axes.map((a,s)=>$c(a,e[s].shape.length)):r=[$c(this.axes,t.shape.length),$c(this.axes,n.shape.length)],this.normalize&&(t=Lp(t,r[0]),n=Lp(n,r[1])),ine(t,n,r)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[$c(this.axes,e.length),$c(this.axes,t.length)],n}computeOutputShape(e){v.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);let a=t.concat(n);return a.length===1&&a.push(1),a}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};Ry.className="Dot";re.registerClass(Ry);var Fy=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return kc(()=>Ip(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Fy.className="GaussianNoise";re.registerClass(Fy);var My=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return this.rate>0&&this.rate<1?kc(()=>{let r=Math.sqrt(this.rate/(1-this.rate));return n.mul(Ip(n.shape,1,r))},()=>n,t.training||!1):n})}};My.className="GaussianDropout";re.registerClass(My);var $y=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Pe(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return kc(()=>{let r=Pe(e),a=1.6732632423543772,s=1.0507009873554805,i=-a*s,o=za(ml(n),this.rate);o=_c(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,u=-l*i*this.rate;return r.mul(o).add(o.add(-1).mul(i)).mul(l).add(u)},()=>Pe(e),t.training||!1)}return e})}};$y.className="AlphaDropout";re.registerClass($y);function Dc(e,t,n,r,a,s=.001){let i;if(e.rank===2)i=U5(e,t,n,r,a,s);else if(e.rank===3)i=H5(e,t,n,r,a,s);else if(e.rank===4)i=j5(e,t,n,r,a,s);else throw new De(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function one(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance;return[Dc(e,i,o,n,t,a),i,o]})}function lne(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance,l=[];for(let p of vr(0,e.rank))r.indexOf(p)!==-1?l.push(1):l.push(e.shape[p]);let u=i.reshape(l),c=o.reshape(l),h=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[Dc(e,u,c,d,h,a),i,o]})}function une(e,t,n,r,a=.001){return v.arraysEqual(r.slice().sort(),vr(0,e.rank-1))?one(e,t,n,r,a):lne(e,t,n,r,a)}var Dy=class extends qe{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.movingMeanInitializer=xt(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=xt(e.movingVarianceInitializer||"ones"),this.betaConstraint=Vt(e.betaConstraint),this.gammaConstraint=Vt(e.gammaConstraint),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer)}build(e){e=ct(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new V(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Kt({ndim:e.length,axes:{[t]:n}})];let r=[n];this.scale&&(this.gamma=this.addWeight("gamma",r,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",r,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",r,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",r,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training,r=Pe(e),a=r.shape,s=a.length,i=vr(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=vi(1,s);l[o]=a[o];let u=i.slice();u.sort();let c=!v.arraysEqual(u,vr(0,s).slice(0,s-1)),h=()=>{if(c){let A=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),g=this.center?this.beta.read().reshape(l):null,_=this.scale?this.gamma.read().reshape(l):null;return Dc(r,A,y,g,_,this.epsilon)}else return Dc(r,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return h();let[d,p,f]=une(r,this.gamma.read(),this.beta.read(),i,this.epsilon),m=(A,y,g)=>{B(()=>{let _=1-g,b=A.read(),w=b.sub(y).mul(_);A.write(b.sub(w))})};return(()=>{m(this.movingMean,p,this.momentum),m(this.movingVariance,f,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Nt(this.betaInitializer),gammaInitializer:Nt(this.gammaInitializer),movingMeanInitializer:Nt(this.movingMeanInitializer),movingVarianceInitializer:Nt(this.movingVarianceInitializer),betaRegularizer:ht(this.betaRegularizer),gammaRegularizer:ht(this.gammaRegularizer),betaConstraint:Bt(this.betaConstraint),gammaConstraint:Bt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Dy.className="BatchNormalization";re.registerClass(Dy);var Oy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=ct(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let a=0;a=t)throw new Error(`Invalid axis: ${a}`);if(this.axis.length!==Ua(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(a=>e[a]),r=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,r):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,r):this.beta=null,this.built=!0}call(e,t){let n=Pe(e),r=n.shape,a=r.length;return B(()=>{let s=!0,{mean:i,variance:o}=kd(n,this.axis,s),l=vi(1,a);for(let f of this.axis)l[f]=r[f];let u=f=>f!=null&&f.shape.length!==a&&this.axis!==[a-1]?f.reshape(l):f,c=u(this.gamma.read()),h=u(this.beta.read()),d=[],p=[];for(let f=0;f{if(e.rank!==4)throw new V(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new V("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=_r()),n!=="channelsLast"&&n!=="channelsFirst")throw new V(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let r;return n==="channelsFirst"?r=[[0,0],[0,0],t[0],t[1]]:r=[[0,0],t[0],t[1],[0,0]],aa(e,r)})}var zy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?_r():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new V(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new V(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new V(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return B(()=>cne(Pe(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};zy.className="ZeroPadding2D";re.registerClass(zy);function t0(e,t,n,r,a,s){return B(()=>{Tt(a),z3(s),Yn(r),n==null&&(n=[1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=sy(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=Gu(e,t,n,o):i=Lu(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}function Q7(e,t,n,r,a,s){return B(()=>{Tt(a),z3(s),Yn(r),n==null&&(n=[1,1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=q7(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=sm(e,t,n,o):i=jf(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,4,1,2,3])),i})}var ev=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new V(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Xt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new V(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,Yn(this.padding),this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){e=ct(e);let t=Ir(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return B(()=>{this.invokeCallHook(e,t),e=bc(Pe(e),2);let n=this.poolingFunction(Pe(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return Pa(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},Py=class extends ev{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Py.className="MaxPooling1D";re.registerClass(Py);var Ly=class extends ev{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};Ly.className="AveragePooling1D";re.registerClass(Ly);var tv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new V(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Wy=class extends tv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Wy.className="MaxPooling2D";re.registerClass(Wy);var By=class extends tv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};By.className="AveragePooling2D";re.registerClass(By);var nv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new V(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:5})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),r=Ir(r,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Vy=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),Q7(e,t,n,r,a,"max")}};Vy.className="MaxPooling3D";re.registerClass(Vy);var Uy=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),Q7(e,t,n,r,a,"avg")}};Uy.className="AveragePooling3D";re.registerClass(Uy);var rv=class extends qe{constructor(e){super(e);this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new De}},Hy=class extends rv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return kt(n,1)})}};Hy.className="GlobalAveragePooling1D";re.registerClass(Hy);var jy=class extends rv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return Xn(n,1)})}};jy.className="GlobalMaxPooling1D";re.registerClass(jy);var av=class extends qe{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new De}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Gy=class extends av{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?kt(n,[1,2]):kt(n,[2,3])})}};Gy.className="GlobalAveragePooling2D";re.registerClass(Gy);var qy=class extends av{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?Xn(n,[1,2]):Xn(n,[2,3])})}};qy.className="GlobalMaxPooling2D";re.registerClass(qy);var sv=class extends qe{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let r=t.layer,a=Nr(r,n);delete t.layer;let s={layer:a};return Object.assign(s,t),new e(s)}},Xy=class extends sv{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=ct(e),e.length<3)throw new V(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=ct(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))}call(e,t){return B(()=>(e=Pe(e),Y7((n,r)=>[Pe(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};Xy.className="TimeDistributed";re.registerClass(Xy);function hne(e){Ni(vQ,"BidirectionalMergeMode",e)}var dne="concat",Ky=class extends sv{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Nr(n),t.goBackwards=t.goBackwards!==!0;let r={};if(r.className=e.layer.getClassName(),r.config=t,this.backwardLayer=Nr(r),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?dne:e.mergeMode,hne(this.mergeMode),e.weights)throw new De("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,r,a;return this.returnState&&(a=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,r=[n]):this.mergeMode==null?r=[n,n.slice()]:r=[n],this.returnState?this.mergeMode==null?r.concat(a).concat(a.slice()):[n].concat(a).concat(a.slice()):Tn(r)}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=Z7(e,n,r,this.numConstants);if(e=a.inputs,n=a.initialState,r=a.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&r==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new V("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let u=n.map(c=>new Kt({shape:c.shape}));this.forwardLayer.stateSpec=u.slice(0,l/2),this.backwardLayer.stateSpec=u.slice(l/2),i.push(...u)}if(r!=null)throw new De("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof kr;for(let l of s)if(l instanceof kr!==o)throw new V("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),u=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=u;let h=super.apply(l,t);return this.inputSpec=c,h}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t.initialState,r,a;if(n==null)r=this.forwardLayer.call(e,t),a=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);r=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),a=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(r)&&(s=r.slice(1).concat(a.slice(1))),r=r[0],a=a[0]),this.returnSequences&&(a=Dn(a,1));let i;return this.mergeMode==="concat"?i=bA([r,a]):this.mergeMode==="sum"?i=se(r,a):this.mergeMode==="ave"?i=P(.5,se(r,a)):this.mergeMode==="mul"?i=P(r,a):this.mergeMode==null&&(i=[r,a]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Ii(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Ii(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let r=this.forwardLayer.states.map(a=>null);return Array.isArray(n)?n.concat(r).concat(r):[n].concat(r).concat(r)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Nr(t.layer);if(delete t.layer,t.numConstants!=null)throw new De("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let r=t;return r.layer=n,new e(r)}};Ky.className="Bidirectional";re.registerClass(Ky);function LQ(e){return new zl(e)}function WQ(e){return new ny(e)}function BQ(e){return new QA(e)}function VQ(e){return new ey(e)}function UQ(e){return new ty(e)}function HQ(e){return new ay(e)}function jQ(e){return new ry(e)}function GQ(e){return new Kp(e)}function qQ(e){return new Fc(e)}function XQ(e){return new oy(e)}function KQ(e){return new Xp(e)}function ZQ(e){return new ly(e)}function YQ(e){return new uy(e)}function JQ(e){return new cy(e)}function QQ(e){return new hy(e)}function eee(e){return new xy(e)}function tee(e){return new yy(e)}function nee(e){return new e0(e)}function ree(e){return new Ay(e)}function aee(e){return new gy(e)}function see(e){return new wy(e)}function iee(e){return new _y(e)}function oee(e){return new by(e)}function lee(e){return new ky(e)}function uee(e){return new Ny(e)}function cee(e){return new Sy(e)}function hee(e){return new Ey(e)}function dee(e){return new Ty(e)}function pee(e){return new Cy(e)}function fee(e){return new Iy(e)}function mee(e){return new Ry(e)}function Aee(e){return new Dy(e)}function yee(e){return new Oy(e)}function gee(e){return new zy(e)}function RA(e){return new Ly(e)}function xee(e){return RA(e)}function wee(e){return RA(e)}function FA(e){return new By(e)}function _ee(e){return FA(e)}function bee(e){return FA(e)}function MA(e){return new Uy(e)}function vee(e){return MA(e)}function kee(e){return MA(e)}function Nee(e){return new Hy(e)}function Iee(e){return new Gy(e)}function Z3(e){return new jy(e)}function Y3(e){return new qy(e)}function J3(e){return new Py(e)}function Q3(e){return new Wy(e)}function See(e){return new Vy(e)}function Tee(e){return new py(e)}function Cee(e){return new Jp(e)}function Eee(e){return new fy(e)}function Ree(e){return new Mc(e)}function Fee(e){return new dy(e)}function Mee(e){return new Yp(e)}function $ee(e){return new my(e)}function Dee(e){return new Qp(e)}function Oee(e){return new Hr(e)}function zee(e){return new Zp(e)}function Pee(e){return new Ky(e)}function Lee(e){return new Xy(e)}var Wee=Z3,Bee=Y3,Vee=J3,Uee=Q3;function Hee(e){return new Fy(e)}function jee(e){return new My(e)}function Gee(e){return new $y(e)}function qee(e){return new vy(e)}var iv={};ze(iv,{MAPE:()=>vne,MSE:()=>Ine,binaryAccuracy:()=>pne,binaryCrossentropy:()=>fne,categoricalAccuracy:()=>Ane,categoricalCrossentropy:()=>yne,cosineProximity:()=>wne,mape:()=>kne,meanAbsoluteError:()=>_ne,meanAbsolutePercentageError:()=>bne,meanSquaredError:()=>Nne,mse:()=>Sne,precision:()=>gne,recall:()=>xne,sparseCategoricalAccuracy:()=>mne});function pne(e,t){return LA(e,t)}function fne(e,t){return f7(e,t)}function mne(e,t){return m7(e,t)}function Ane(e,t){return WA(e,t)}function yne(e,t){return BA(e,t)}function gne(e,t){return p7(e,t)}function xne(e,t){return dte(e,t)}function wne(e,t){return zA(e,t)}function _ne(e,t){return Wp(e,t)}function bne(e,t){return Ll(e,t)}function vne(e,t){return Ll(e,t)}function kne(e,t){return Ll(e,t)}function Nne(e,t){return Ti(e,t)}function Ine(e,t){return Ti(e,t)}function Sne(e,t){return Ti(e,t)}var ov={};ze(ov,{modelFromJSON:()=>Gte});var lv={};ze(lv,{l1:()=>Cne,l1l2:()=>Tne,l2:()=>Ene});function Tne(e){return new Ec(e)}function Cne(e){return ene(e)}function Ene(e){return tne(e)}var uv=class extends Pl{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof ha))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function n0(e,t){return et}var hv=class extends uv{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new De("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=n0:this.mode==="max"?this.monitorFunc=cv:this.monitor.indexOf("acc")!==-1?this.monitorFunc=cv:this.monitorFunc=n0,this.monitorFunc===n0&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===n0?Infinity:-Infinity}async onEpochEnd(e,t){await Ga(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function Rne(e){return new hv(e)}var Fne={earlyStopping:Rne},Sr;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Sr||(Sr={}));var dv;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(dv||(dv={}));var Zy={};function Mne(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};Zy[e]=n}function pv(e){return Zy[e]}function $ne(e){delete Zy[e]}function k(e,t,n,r,a){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return En(t.inputNames[s.inputIndexStart],n,r,a);if(s.type==="tensors")return t.inputNames.slice(o,l).map(h=>En(h,n,r,a));let u=En(t.inputNames.slice(o)[0],n,r,a),c=u.dataSync();return s.type==="number"?c[0]:v.toNestedArray(u.shape,c)}let i=t.attrParams[e];return i&&i.value}function En(e,t,n,r){let[a,s]=Wn(e);if(r!=null){let o=r.getHashTableHandleByName(a);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[r0(a,o)]);return i!==void 0?t[r0(a,i)][s]:void 0}function Dne(e,t,n){return t[r0(e,n.currentContextId)]}function da(e,t){let[n,r]=Wn(e);return[r0(n,t&&t.currentContextId),r]}function r0(e,t){return t?`${e}-${t}`:e}function Wn(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function a0(e,t,n){let r=k("pad",e,t,n);if(r==="explicit"){r=k("explicitPaddings",e,t,n);let a=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)a[s][0]=r[s*2],a[s][1]=r[s*2+1];return a}return r}function pa(e){return e.kept?e:Rr(e)}var fv={};ze(fv,{json:()=>One});var One=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],mv={};ze(mv,{json:()=>zne});var zne=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Av={};ze(Av,{json:()=>Pne});var Pne=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],yv={};ze(yv,{json:()=>Lne});var Lne=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],gv={};ze(gv,{json:()=>Wne});var Wne=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],xv={};ze(xv,{json:()=>Bne});var Bne=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],wv={};ze(wv,{json:()=>Vne});var Vne=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],_v={};ze(_v,{json:()=>Une});var Une=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],bv={};ze(bv,{json:()=>Hne});var Hne=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]}],vv={};ze(vv,{json:()=>jne});var jne=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],kv={};ze(kv,{json:()=>Gne});var Gne=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Nv={};ze(Nv,{json:()=>qne});var qne=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Iv={};ze(Iv,{json:()=>Xne});var Xne=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],Sv={};ze(Sv,{json:()=>Kne});var Kne=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],Tv={};ze(Tv,{json:()=>Zne});var Zne=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],Cv={};ze(Cv,{json:()=>Yne});var Yne=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],Ev={};ze(Ev,{json:()=>Jne});var Jne=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],Fv=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[fv,mv,Av,yv,gv,xv,wv,kv,vv,_v,Nv,Iv,Sv,Tv,Cv,Ev,bv],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,r)=>(n[r.tfOpName]=r,n),{})}transformGraph(e,t={}){let n=e.node,r=[],a=[],s=[],i=n.reduce((f,m)=>(f[m.name]=this.mapNode(m),m.op.startsWith("Placeholder")?r.push(f[m.name]):m.op==="Const"?a.push(f[m.name]):(m.input==null||m.input.length===0)&&s.push(f[m.name]),f),{}),o=[],l=[],u={},c={};t!=null&&(u=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));let h=Object.keys(i);h.forEach(f=>{let m=i[f];m.inputNames.forEach(A=>{let[y]=da(A);m.inputs.push(i[y]),i[y].children.push(m)})}),Object.keys(c).length===0?h.forEach(f=>{let m=i[f];m.children.length===0&&l.push(m)}):Object.keys(c).forEach(f=>{let[m]=da(f),A=i[m];A!=null&&(A.signatureKey=c[f],l.push(A))}),Object.keys(u).length>0?Object.keys(u).forEach(f=>{let[m]=da(f),A=i[m];A&&(A.signatureKey=u[f],o.push(A))}):o=r;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((f,m)=>(f[m.signature.name]=this.mapFunction(m),f),{}));let p={nodes:i,inputs:o,outputs:l,weights:a,placeholders:r,signature:t,functions:d};return s.length>0&&(p.initNodes=s),p}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=pv(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(r=>r.startsWith("^")?r.substr(1):r),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((r,a)=>(r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((r,a)=>{let s=a.type,i;switch(a.type){case"string":i=Yy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Yy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":i=s2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=s2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":i=Qy(e.attr,a.tfName,a.defaultValue||0),i===void 0&&!!a.tfDeprecatedName&&(i=Qy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":i=a2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=a2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":i=Jy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Jy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":i=o2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=o2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":i=r2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=r2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":i=i2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=i2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":i=t2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=t2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":i=n2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=n2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":i=Rv(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Rv(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${a.type} for op: ${e.op}`)}return r[a.name]={value:i,type:s},r},{})),n}mapFunction(e){let t=e.nodeDef,n=[],r=[],a={};t!=null&&(a=t.reduce((u,c)=>(u[c.name]=this.mapNode(c),c.op==="Const"&&r.push(u[c.name]),u),{}));let s=[],i=[];e.signature.inputArg.forEach(u=>{let[c]=da(u.name),h={name:c,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:e2(u.type),type:"dtype"}},children:[]};h.signatureKey=u.name,s.push(h),a[c]=h}),Object.keys(a).forEach(u=>{let c=a[u];c.inputNames.forEach(h=>{let[d]=da(h);c.inputs.push(a[d]),a[d].children.push(c)})});let o=e.ret;e.signature.outputArg.forEach(u=>{let[c,h]=da(o[u.name]),d=a[c];d!=null&&(d.defaultOutput=h,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:a,inputs:s,outputs:i,weights:r,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function Qne(e){let t=J().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function Mv(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):Qne(e);return t?n:n.toLowerCase()}function Yy(e,t,n,r=!1){let a=e[t];return a!=null?Mv(a.s,r):n}function Jy(e,t,n){let r=e[t];return r?r.b:n}function Qy(e,t,n){let r=e[t]||{},a=r.i!=null?r.i:r.f!=null?r.f:n;return typeof a=="number"?a:parseInt(a,10)}function e2(e){switch(typeof e=="string"&&(e=Sr[e]),e){case Sr.DT_FLOAT:return"float32";case Sr.DT_INT32:case Sr.DT_INT64:case Sr.DT_INT8:case Sr.DT_UINT8:return"int32";case Sr.DT_BOOL:return"bool";case Sr.DT_DOUBLE:return"float32";case Sr.DT_STRING:return"string";default:return null}}function Rv(e,t,n){let r=e[t];return r&&r.func?r.func.name:n}function t2(e,t,n){let r=e[t];return r&&r.type?e2(r.type):n}function n2(e,t,n){let r=e[t];return r&&r.list&&r.list.type?r.list.type.map(a=>e2(a)):n}function $v(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function r2(e,t,n){let r=e[t];return r&&r.shape?$v(r.shape):n}function a2(e,t,n){let r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map(a=>typeof a=="number"?a:parseInt(a,10)):n}function s2(e,t,n,r=!1){let a=e[t];return a&&a.list&&a.list.s?a.list.s.map(s=>Mv(s,r)):n}function i2(e,t,n){let r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map(a=>$v(a)):n}function o2(e,t,n){let r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var ere=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(r=>this.getInput(r)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((r,a)=>(r[a]=this.getAttr(a),r),{}))}getInput(e){return En(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return En(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return Qy(this.node.rawAttrs,e,t);if(n.s!=null)return Yy(this.node.rawAttrs,e,t);if(n.b!=null)return Jy(this.node.rawAttrs,e,t);if(n.shape!=null)return r2(this.node.rawAttrs,e,t);if(n.type!=null)return t2(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return a2(this.node.rawAttrs,e,t);if(n.list.s!=null)return s2(this.node.rawAttrs,e,t);if(n.list.shape!=null)return i2(this.node.rawAttrs,e,t);if(n.list.b!=null)return o2(this.node.rawAttrs,e,t);if(n.list.type!=null)return n2(this.node.rawAttrs,e,t)}return t}},tre=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[se(k("a",e,t,n),k("b",e,t,n))];case"AddN":return[Ma(k("tensors",e,t,n))];case"FloorMod":case"Mod":return[om(k("a",e,t,n),k("b",e,t,n))];case"Mul":return[P(k("a",e,t,n),k("b",e,t,n))];case"RealDiv":case"Div":return[ge(k("a",e,t,n),k("b",e,t,n))];case"DivNoNan":return[Yf(k("a",e,t,n),k("b",e,t,n))];case"FloorDiv":return[hd(k("a",e,t,n),k("b",e,t,n))];case"Sub":return[ye(k("a",e,t,n),k("b",e,t,n))];case"Minimum":return[fl(k("a",e,t,n),k("b",e,t,n))];case"Maximum":return[Dr(k("a",e,t,n),k("b",e,t,n))];case"Pow":return[sa(k("a",e,t,n),k("b",e,t,n))];case"SquaredDifference":return[Dd(k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},nre=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[zt(k("x",e,t,n))];case"Acos":return[Df(k("x",e,t,n))];case"Acosh":return[Of(k("x",e,t,n))];case"Asin":return[Pf(k("x",e,t,n))];case"Asinh":return[Lf(k("x",e,t,n))];case"Atan":return[Wf(k("x",e,t,n))];case"Atan2":return[Bf(k("x",e,t,n),k("y",e,t,n))];case"Atanh":return[Vf(k("x",e,t,n))];case"Ceil":return[Gf(k("x",e,t,n))];case"Complex":return[Ca(k("real",e,t,n),k("imag",e,t,n))];case"Cos":return[Vu(k("x",e,t,n))];case"Cosh":return[Ad(k("x",e,t,n))];case"Elu":return[cl(k("x",e,t,n))];case"Erf":return[Jf(k("x",e,t,n))];case"Exp":return[qn(k("x",e,t,n))];case"Expm1":return[Qf(k("x",e,t,n))];case"Floor":return[hl(k("x",e,t,n))];case"Log":return[Mn(k("x",e,t,n))];case"Log1p":return[wd(k("x",e,t,n))];case"Imag":return[gd(k("x",e,t,n))];case"Neg":return[vt(k("x",e,t,n))];case"Reciprocal":return[cm(k("x",e,t,n))];case"Real":return[Ku(k("x",e,t,n))];case"Relu":return[zr(k("x",e,t,n))];case"Round":return[hm(k("x",e,t,n))];case"Selu":return[Cd(k("x",e,t,n))];case"Sigmoid":return[Fn(k("x",e,t,n))];case"Sin":return[Ed(k("x",e,t,n))];case"Sign":return[pm(k("x",e,t,n))];case"Sinh":return[Rd(k("x",e,t,n))];case"Softplus":return[dl(k("x",e,t,n))];case"Sqrt":return[en(k("x",e,t,n))];case"Square":return[lt(k("x",e,t,n))];case"Tanh":return[ol(k("x",e,t,n))];case"Tan":return[Am(k("x",e,t,n))];case"ClipByValue":return[vn(k("x",e,t,n),k("clipValueMin",e,t,n),k("clipValueMax",e,t,n))];case"Relu6":return[Sd(k("x",e,t,n))];case"Rsqrt":return[Td(En(e.inputNames[0],t,n))];case"Prod":return[Nd(k("x",e,t,n),k("axes",e,t,n))];case"LeakyRelu":return[Hu(k("x",e,t,n),k("alpha",e,t,n))];case"Prelu":return[Xu(k("x",e,t,n),k("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function cr(e,t,n=""){if(!(typeof e=="number"||typeof t=="number")){v.assert(e.length===t.length,()=>n+` Shapes ${e} and ${t} must match`);for(let r=0;rn+` Shapes ${e} and ${t} must match`)}}}function Dv(e){return!(typeof e=="number"||e.some(t=>t<0))}function Oc(e,t,n){let r=l2(e,n),a=!Dv(r);if(a&&t.length===0)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(a&&t.forEach(s=>{r=l2(s.shape,r)}),!Dv(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function l2(e,t){if(typeof e=="number")return t;if(typeof t=="number")return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);let n=[];for(let r=0;r=0&&s>=0&&a!==s)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=a>=0?a:s}return n}var rre=class{constructor(e,t,n,r,a,s,i){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=a,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=be(0),Gt(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, +2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let u={};for(let p of Object.keys(or))u[p]=or[p];for(let p of Object.keys(n))u[p]=n[p];let c=s.config;c.customObjects=u;let h=Object.assign({},or);for(let p of Object.keys(n))or[p]=n[p];pA(s.config);let d=l(o,s.config,n,a);return or=Object.assign({},h),d}else{let u=Object.assign({},or);for(let h of Object.keys(n))or[h]=n[h];let c=new o(s.config);return or=Object.assign({},u),c}}}function nQ(e,t){return et?1:0}function kp(e,t){return-1*nQ(e,t)}function Ua(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function rQ(e){if(e==null)throw new V(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Ni(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new V(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function fA(e,t,n=0,r=Infinity){return Br(n>=0),Br(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(a=>typeof a===t)}function Xt(e,t){Array.isArray(e)?(v.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,r)=>Xt(n,`element ${r+1} of ${t}`))):v.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${M3(e)}.`)}function M3(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>M3(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function aQ(e,t){let n=v.now(),r;return(...a)=>{let s=v.now();return s-nen(Te(P(e,e),t,!0)))}var xc=class extends re.Serializable{getConfig(){return{}}},AA=class extends xc{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=vn(t,0,this.maxValue);return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};AA.className="MaxNorm";re.registerClass(AA);var yA=class extends xc{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>ge(e,se(Wt(),mA(e,this.axis))))}getConfig(){return{axis:this.axis}}};yA.className="UnitNorm";re.registerClass(yA);var gA=class extends xc{apply(e){return zr(e)}};gA.className="NonNeg";re.registerClass(gA);var xA=class extends xc{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=se(P(this.rate,vn(t,this.minValue,this.maxValue)),P(1-this.rate,t));return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};xA.className="MinMaxNorm";re.registerClass(xA);var D3={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Bt(e){return dA(e)}function O3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"constraint")}function Vt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in D3?D3[e]:e,config:{}};return O3(t)}else return e instanceof xc?e:O3(e)}function JJ(e){return new AA(e)}function QJ(e){return new yA(e)}function eQ(){return new gA}function tQ(e){return new xA(e)}var z3={};ze(z3,{constant:()=>oQ,glorotNormal:()=>fQ,glorotUniform:()=>pQ,heNormal:()=>mQ,heUniform:()=>AQ,identity:()=>hQ,leCunNormal:()=>yQ,leCunUniform:()=>gQ,ones:()=>iQ,orthogonal:()=>xQ,randomNormal:()=>uQ,randomUniform:()=>lQ,truncatedNormal:()=>cQ,varianceScaling:()=>dQ,zeros:()=>sQ});var wQ=["channelsFirst","channelsLast"],_Q=["nearest","bilinear"],bQ=["valid","same","causal"],vQ=["max","avg"],kQ=["sum","mul","concat","ave"],Dl=new Map;function Tt(e){Ni(wQ,"DataFormat",e)}function NQ(e){Ni(_Q,"InterpolationFormat",e)}function Yn(e){Ni(bQ,"PaddingMode",e)}function P3(e){Ni(vQ,"PoolMode",e)}var wc=[],L3="/";function Ii(e,t){wc.push(e);try{let n=t();return wc.pop(),n}catch(n){throw wc.pop(),n}}function IQ(){return wc.length===0?"":wc.join(L3)+L3}function B3(e){if(!W3(e))throw new Error("Not a valid tensor name: '"+e+"'");return IQ()+e}function V3(e){if(!W3(e))throw new Error("Not a valid tensor name: '"+e+"'");Dl.has(e)||Dl.set(e,0);let t=Dl.get(e);if(Dl.set(e,Dl.get(e)+1),t>0){let n=`${e}_${t}`;return Dl.set(n,1),n}else return e}var SQ=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function W3(e){return!!e.match(SQ)}function TQ(e){return e===parseInt(e.toString(),10)}function Ha(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let r=1;for(let a=t;a{if(e.shape.length!==2)throw new V(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=bc(e,1);return wA(n,[1,t,1])})}function EQ(e){let t=[Ha(e.shape)];return e.reshape(t)}function RQ(e){if(e.rank<=1)throw new V(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],Ha(e.shape,1)];return e.reshape(t)}function Si(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[t,0],[n,e.shape[1]]);case 3:return Md(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return Zu(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return Re(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return Re(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new V(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function _A(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[0,t],[e.shape[0],n]);case 3:return Md(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return Zu(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function Np(e,t,n,r){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:switch(r){case 1:return Si(e,t,n);case 2:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 3:switch(r){case 1:return Si(e,t,n);case 2:return Md(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 4:switch(r){case 1:return Si(e,t,n);case 2:return Zu(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return Zu(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function bA(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),st(e,t)}function H3(e,t){switch(e.rank){case 1:return X5([e,t]);case 2:return ll([e,t],0);case 3:return K5([e,t],0);case 4:return Z5([e,t],0);default:throw new V(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function wA(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new V(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return Oa(e,t)}function Ip(e,t=0,n=1,r,a){return px(e,t,n,r,a)}function Vr(e,t,n,r){if(e.rank<2||t.rank<2)throw new De(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let a=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(a!==s)throw new De(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let a=!1,s=!1;return La.matMul({a:e,b:t,transposeA:a,transposeB:s,bias:r?vA(e.rank,r,_r()):null,activation:n})}else{let a=e.shape.slice(),s=a.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),u=[...i,o],c=Array.from({length:t.rank},(f,m)=>m===0?t.rank-2:m<=t.rank-2?m-1:m);t=t.transpose(c).reshape([l,-1]);let h=[...a,...u],d=!1,p=!1;return La.matMul({a:e,b:t,transposeA:d,transposeB:p,bias:r?vA(e.rank,r,_r()):null,activation:n}).reshape(h)}}function j3(e,t,n){return B(()=>(Array.isArray(t)?t=on(t,"int32"):t=t.toInt(),ui(e,t,n)))}function vc(e){return P(e,e)}function vA(e,t,n){let r=t.shape;if(t.rank!==1&&t.rank!==e)throw new V(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1,1]):t.reshape([1,r[3],r[0],r[1],r[2]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===4){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1]):t.reshape([1,r[2],r[0],r[1]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===3){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1]):t.reshape([1,r[1],r[0]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,r[0]]):t.reshape([1].concat(r))}else if(e<3)return t;throw new V(`Unsupported input rank by biasAdd: ${t.rank}`)}function Ur(e,t,n){return B(()=>(n==null&&(n=_r()),Tt(n),e.add(vA(e.rank,t,n))))}function FQ(e,t=1){if(t!==1)throw new De(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return cl(e)}function MQ(e){return B(()=>ge(e,zt(e).add(1)))}function G3(e,t,n,r){return B(()=>wx(e,t,n,r))}function $Q(e){return B(()=>{let t=se(.5,P(.2,e));return vn(t,0,1)})}function kc(e,t,n=!1){return n?e():t()}var DQ=["fanIn","fanOut","fanAvg"],OQ=["normal","uniform","truncatedNormal"];function zQ(e){Ni(DQ,"FanMode",e)}function PQ(e){Ni(OQ,"Distribution",e)}var lr=class extends re.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},kA=class extends lr{apply(e,t){return Et(e,t)}};kA.className="Zeros";re.registerClass(kA);var Sp=class extends lr{apply(e,t){return Or(e,t)}};Sp.className="Ones";re.registerClass(Sp);var NA=class extends lr{constructor(e){super();if(typeof e!="object")throw new V(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new V(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return B(()=>P(be(this.value),Or(e,t)))}getConfig(){return{value:this.value}}};NA.className="Constant";re.registerClass(NA);var IA=class extends lr{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return ml(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};IA.className="RandomUniform";re.registerClass(IA);var SA=class extends lr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`randomNormal does not support dType ${t}.`);return Ip(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};SA.className="RandomNormal";re.registerClass(SA);var TA=class extends lr{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`truncatedNormal does not support dType ${t}.`);return Od(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TA.className="TruncatedNormal";re.registerClass(TA);var CA=class extends lr{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return B(()=>{if(e.length!==2||e[0]!==e[1])throw new V("Identity matrix initializer can only be used for 2D square matrices.");return P(this.gain,em(e[0]))})}getConfig(){return{gain:this.gain}}};CA.className="Identity";re.registerClass(CA);function LQ(e,t="channelsLast"){let n,r;if(Tt(t),e.length===2)n=e[0],r=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let a=Ha(e,2);n=e[1]*a,r=e[0]*a}else if(t==="channelsLast"){let a=Ha(e,0,e.length-2);n=e[e.length-2]*a,r=e[e.length-1]*a}}else{let a=Ha(e);n=Math.sqrt(a),r=Math.sqrt(a)}return[n,r]}var Cn=class extends lr{constructor(e){super();if(e.scale<0)throw new V(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,zQ(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,PQ(this.distribution),this.seed=e.seed}apply(e,t){let n=LQ(e),r=n[0],a=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,r):this.mode==="fanOut"?s/=Math.max(1,a):s/=Math.max(1,(r+a)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`${this.getClassName()} does not support dType ${t}.`);return Od(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return ml(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Cn.className="VarianceScaling";re.registerClass(Cn);var Tp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Tp.className="GlorotUniform";re.registerClass(Tp);var Cp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Cp.className="GlorotNormal";re.registerClass(Cp);var Ep=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Ep.className="HeNormal";re.registerClass(Ep);var Rp=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Rp.className="HeUniform";re.registerClass(Rp);var Fp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Fp.className="LeCunNormal";re.registerClass(Fp);var Mp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Mp.className="LeCunNormal";re.registerClass(Mp);var EA=class extends lr{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new De("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return B(()=>{if(e.length<2)throw new De("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,r=Ip(n,0,1,"float32"),a=Mx.gramSchmidt(r);return e[0]>e[1]&&(a=a.transpose()),P(this.gain,a)})}getConfig(){return{gain:this.gain,seed:this.seed}}};EA.className="Orthogonal";re.registerClass(EA);var q3={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function X3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"initializer")}function Nt(e){return dA(e)}function xt(e){if(typeof e=="string"){let t=e in q3?q3[e]:e;if(t==="GlorotNormal")return new Cp;if(t==="GlorotUniform")return new Tp;if(t==="HeNormal")return new Ep;if(t==="HeUniform")return new Rp;if(t==="LeCunNormal")return new Fp;if(t==="LeCunUniform")return new Mp;{let n={};return n.className=t,n.config={},X3(n)}}else return e instanceof lr?e:X3(e)}function sQ(){return new kA}function iQ(){return new Sp}function oQ(e){return new NA(e)}function lQ(e){return new IA(e)}function uQ(e){return new SA(e)}function cQ(e){return new TA(e)}function hQ(e){return new CA(e)}function dQ(e){return new Cn(e)}function pQ(e){return new Tp(e)}function fQ(e){return new Cp(e)}function mQ(e){return new Ep(e)}function AQ(e){return new Rp(e)}function yQ(e){return new Fp(e)}function gQ(e){return new Mp(e)}function xQ(e){return new EA(e)}var K3={};ze(K3,{Layer:()=>qe,RNN:()=>Hr,RNNCell:()=>Nc,activation:()=>tee,add:()=>cee,alphaDropout:()=>qee,average:()=>hee,averagePooling1d:()=>RA,averagePooling2d:()=>FA,averagePooling3d:()=>MA,avgPool1d:()=>wee,avgPool2d:()=>bee,avgPool3d:()=>kee,avgPooling1d:()=>_ee,avgPooling2d:()=>vee,avgPooling3d:()=>Nee,batchNormalization:()=>yee,bidirectional:()=>Lee,concatenate:()=>dee,conv1d:()=>qQ,conv2d:()=>XQ,conv2dTranspose:()=>KQ,conv3d:()=>ZQ,convLstm2d:()=>Dee,convLstm2dCell:()=>Oee,cropping2D:()=>JQ,dense:()=>nee,depthwiseConv2d:()=>eee,dot:()=>Aee,dropout:()=>ree,elu:()=>BQ,embedding:()=>uee,flatten:()=>see,gaussianDropout:()=>Gee,gaussianNoise:()=>jee,globalAveragePooling1d:()=>Iee,globalAveragePooling2d:()=>See,globalMaxPool1d:()=>Bee,globalMaxPool2d:()=>Vee,globalMaxPooling1d:()=>Y3,globalMaxPooling2d:()=>J3,gru:()=>Cee,gruCell:()=>Eee,input:()=>Z3,inputLayer:()=>WQ,layerNormalization:()=>gee,leakyReLU:()=>UQ,lstm:()=>Ree,lstmCell:()=>Fee,masking:()=>Xee,maxPool1d:()=>Uee,maxPool2d:()=>Hee,maxPooling1d:()=>Q3,maxPooling2d:()=>e7,maxPooling3d:()=>Tee,maximum:()=>pee,minimum:()=>fee,multiply:()=>mee,permute:()=>lee,prelu:()=>HQ,reLU:()=>VQ,repeatVector:()=>iee,reshape:()=>oee,rnn:()=>zee,separableConv2d:()=>YQ,simpleRNN:()=>Mee,simpleRNNCell:()=>$ee,softmax:()=>jQ,spatialDropout1d:()=>aee,stackedRNNCells:()=>Pee,thresholdedReLU:()=>GQ,timeDistributed:()=>Wee,upSampling2d:()=>QQ,zeroPadding2d:()=>xee});var Kee=0;function t7(){return Kee++}var $p={};function Dp(e=""){return e in $p||($p[e]=0),$p[e]+=1,e+$p[e].toString()}function $A(e){return Array.isArray(e)&&Array.isArray(e[0])}function Op(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Pe(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new V(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function ct(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new V(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function zp(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((r,a)=>r*a);return t}var n7="Variable",r7=class{constructor(e,t="float32",n=n7,r=!0,a=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=t7(),n=n==null?n7:n,this.originalName=B3(n),this.name=V3(this.originalName),this.trainable_=r,this.constraint=a,this.val=mx(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),Zee(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function Zee(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function DA(e){return e.map(t=>t.read())}function OA(e){e.forEach(t=>{t[0].write(t[1])})}var Kt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},kr=class{constructor(e,t,n,r,a,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=a,this.outputTensorIndex=i,this.id=t7(),s!=null&&(this.originalName=B3(s),this.name=V3(this.originalName)),this.rank=t.length}},Yee=0,Pp=class{constructor(e,t){this.callArgs=t,this.id=Yee++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},Jee=0,qe=class extends re.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=Jee++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=ca(n)+"_"+Dp(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let a=null;e.batchSize!=null&&(a=e.batchSize),n=[a].concat(e.inputShape)}this.batchInputShape=n;let r=e.dtype;r==null&&(r=e.inputDType),r==null&&(r="float32"),this.dtype=r}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new br(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new V(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Tn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Tn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} is not connected, no input to return.`);return Tn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Tn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=ft(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=ft(this.inputSpec);if(e.length!==t.length)throw new V(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;na.maxNDim)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${a.maxNDim}, found ndim=${s}`);if(a.minNDim!=null&&s=0?i[l]:i[i.length+l];if(u!=null&&[u,null].indexOf(c)===-1)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${u} but got shape ${i}.`)}}if(a.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of ft(e))s.push(i.shape);this.build(Tn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&a&&(this._refCount=1)}if(this.assertInputCompatibility(e),a){let s=this.call(e,t),i=ft(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Tn(o),this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=Qee(e),i=this.computeOutputShape(s),o,l=ete(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((u,c)=>new kr(l,u,this,ft(e),t,this.name,c)):o=new kr(l,i,this,ft(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,r)=>{n!=null&&e[r]!=null&&e[r]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new ua(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new ua(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new br(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return zp(this.weights)}build(e){this.built=!0}getWeights(e=!1){return DA(e?this.trainableWeights:this.weights)}setWeights(e){B(()=>{let t=this.weights;if(t.length!==e.length)throw new V(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],r=DA(t);for(let a=0;aa.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=ft(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,r,a,s,i=null){let o=ft(e);t=ft(t),n=ft(n),r=ft(r),a=Op(a),s=Op(s);let l=[],u=[],c=[];for(let h of o)l.push(h.sourceLayer),u.push(h.nodeIndex),c.push(h.tensorIndex);new Pp({outboundLayer:this,inboundLayers:l,nodeIndices:u,tensorIndices:c,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:a,outputShapes:s},i);for(let h=0;he.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function Qee(e){e=ft(e);let t=[];for(let n of e)t.push(n.shape);return Tn(t)}function ete(e){return"float32"}function a7(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let r=t.inboundNodes[n];if(r.inboundLayers.length===0)return r.inputTensors;{let a=[];for(let s=0;s0){let a=await Promise.all(t);for(let s=0;sse(this.totals[r],P(a,n)));this.totals[r]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:B(()=>{let r=P(ge(1,this.seen),this.totals[n]);t[n]=r,this.totals[n].dispose(),Gt(t[n])}))}},u7=class extends Pl{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let a in this.history){let s=this.history[a];for(let i=0;inew c7(n,t))}var ur=class{constructor(){}static registerCallbackConstructor(e,t){v.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),ur.checkForDuplicate(t),ur.constructors[e]==null&&(ur.constructors[e]=[]),ur.constructors[e].push(t)}static checkForDuplicate(e){for(let t in ur.constructors)ur.constructors[+t].forEach(n=>{if(n===e)throw new V("Duplicate callback constructor.")})}static clear(){ur.constructors={}}static createCallbacks(e){let t=[];for(let n in ur.constructors){let r=+n;e>=r&&t.push(...ur.constructors[r])}return t.map(n=>new n)}};ur.constructors={};function d7(e,t,n,r,a,s,i,o,l){let u=new u7,c=[new nte,...ur.createCallbacks(t)];e!=null&&c.push(...e),c.push(u);let h=new l7(c);return h.setParams({epochs:n,initialEpoch:r,samples:a,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function Nr(e,t={},n=!1){return gc(e,re.SerializationMap.getMap().classNameMap,t,"layer",n)}function Lp(e,t){return B(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Te(vc(e),t,!0),r=Uu(n.shape,Wt()),a=en(Dr(n,r));return ge(e,a)})}function Ti(e,t){return B(()=>kt(vc(ye(t,e)),-1))}function Wp(e,t){return B(()=>kt(zt(ye(t,e)),-1))}function Ll(e,t){return B(()=>{let n=ye(e,t),r=vn(zt(e),Wt(),Number.MAX_VALUE),a=zt(ge(n,r));return P(100,kt(a,-1))})}function rte(e,t){return B(()=>{let n=vn(t,Wt(),Number.MAX_VALUE),r=Mn(se(1,n)),a=vn(e,Wt(),Number.MAX_VALUE),s=Mn(se(1,a));return kt(vc(ye(r,s)),-1)})}function ate(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(vc(n),-1)})}function ste(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(n,-1)})}function ite(e,t){return B(()=>{let n=Te(P(e,t),-1),r=Xn(P(ye(1,e),t),-1);return Dr(0,se(1,ye(r,n)))})}function ote(e,t){return B(()=>{let n=Math.log(2),r=ye(t,e),a=ye(se(r,dl(P(-2,r))),n);return kt(a,-1)})}function Ic(e,t,n=!1){return B(()=>{if(n)t=Yu(t);else{let r=Te(t,t.shape.length-1,!0);t=ge(t,r)}return t=vn(t,Wt(),1-Wt()),vt(Te(P(e.toFloat(),Mn(t)),t.shape.length-1))})}function Bp(e,t,n=!1){return B(()=>{let r=hl(EQ(e)).toInt();t=vn(t,Wt(),1-Wt());let a=t.shape,s=nl(r,a[a.length-1]).reshape(a);return Ic(s,t,n)})}function lte(e,t){if(!v.arraysEqual(e.shape,t.shape))throw new V(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return B(()=>{let n=t.relu(),r=t.abs().neg();return n.sub(t.mul(e)).add(r.exp().log1p())})}function Vp(e,t){return B(()=>{let n;return n=vn(t,Wt(),1-Wt()),n=Mn(ge(n,ye(1,n))),kt(lte(e,n),-1)})}function ute(e,t){return B(()=>{let n=vn(e,Wt(),1),r=vn(t,Wt(),1);return Te(P(e,Mn(ge(n,r))),-1)})}function cte(e,t){return B(()=>{let n=Mn(se(Wt(),t));return kt(ye(t,P(e,n)),-1)})}function zA(e,t){return B(()=>{let n=Lp(e,-1),r=Lp(t,-1),a=P(n,r);return vt(Te(a,-1))})}var Up={meanSquaredError:Ti,meanAbsoluteError:Wp,meanAbsolutePercentageError:Ll,meanSquaredLogarithmicError:rte,squaredHinge:ate,hinge:ste,categoricalHinge:ite,logcosh:ote,categoricalCrossentropy:Ic,sparseCategoricalCrossentropy:Bp,binaryCrossentropy:Vp,kullbackLeiblerDivergence:ute,poisson:cte,cosineProximity:zA};function PA(e){if(typeof e=="string"){if(e in Up)return Up[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new V(t)}else return e}function LA(e,t){return B(()=>{let n=P(.5,$n(t)),r=_c(rr(t,n),e.dtype);return kt(Da(e,r),-1)})}function WA(e,t){return B(()=>_c(Da(zu(e,-1),zu(t,-1)),"float32"))}function p7(e,t){return B(()=>ar(e.equal(1),t.equal(1)).sum().cast("float32"))}function hte(e,t){return B(()=>ar(e.equal(1),t.equal(0)).sum().cast("float32"))}function dte(e,t){return B(()=>ar(e.equal(0),t.equal(1)).sum().cast("float32"))}function f7(e,t){return B(()=>{let n=p7(e,t),r=dte(e,t),a=n.add(r);return kn(rr(a,0),n.div(a),0).cast("float32")})}function pte(e,t){return B(()=>{let n=p7(e,t),r=hte(e,t),a=n.add(r);return kn(rr(a,0),n.div(a),0).cast("float32")})}function m7(e,t){return Vp(e,t)}function A7(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Da(e,t).asType("float32")}var fte=Ti,mte=Ti,Ate=Wp,yte=Wp,gte=Ll,xte=Ll,BA=Ic,wte=zA,y7=Bp,Hp={binaryAccuracy:LA,categoricalAccuracy:WA,precision:f7,categoricalCrossentropy:BA,sparseCategoricalCrossentropy:y7,mse:fte,MSE:mte,mae:Ate,MAE:yte,mape:gte,MAPE:xte,cosine:wte};function _te(e){if(typeof e=="string"&&e in Hp)return Hp[e];if(typeof e!="string"&&e!=null)return e;throw new V(`Unknown metric ${e}`)}function jp(e){if(Br(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(Up))if(Up[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(Hp))if(Hp[n]===e){t=n;break}return t!==void 0?t:e.name}}function bte(e){let t={Adagrad:()=>fi.adagrad(.01),Adadelta:()=>fi.adadelta(1,.95,Wt()),Adam:()=>fi.adam(.001,.9,.999,Wt()),Adamax:()=>fi.adamax(.002,.9,.999,Wt(),0),RMSProp:()=>fi.rmsprop(.001,.9,0,Wt()),SGD:()=>fi.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new V(`Unknown Optimizer ${e}`)}var g7=1*1024*1024;function x7(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!VA(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let r=JSON.stringify(e);r.length>g7&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${r.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${g7}.`)}}function VA(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!VA(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!VA(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function Ste(e,t,n,r=console.log){let a=kte(e),s=["Layer (type)","Output shape","Param #"];a?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(c=>Math.floor(t*c)));let i;if(!a){s.push("Receives inputs"),i=[];for(let c in e.nodesByDepth)i.push(...e.nodesByDepth[c])}r("_".repeat(t)),Gp(s,n,r),r("=".repeat(t));let o=e.layers;for(let c=0;c1||a.length===1&&a[0].inboundLayers.length>1){t=!1;break}r.push(...a)}if(t)for(let a of e.layers){let s=!1;for(let i of a.inboundNodes)if(r.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function Gp(e,t,n=console.log){let r="";for(let a=0;a0&&(r=r.slice(0,r.length-1)+" "),r+=e[a],r=r.slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function Nte(e,t,n){let r;try{r=JSON.stringify(e.outputShape)}catch(o){r="multiple"}let a=e.name,s=e.getClassName(),i=[`${a} (${s})`,r,e.countParams().toString()];Gp(i,t,n)}function Ite(e,t,n,r){let a;try{a=JSON.stringify(e.outputShape)}catch(c){a="multiple"}let s=[];for(let c of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(c)===-1))for(let h=0;hf.name),l=[],u=t.names();for(let f of o)u.indexOf(f)!==-1?l.push(t.getValue(f)):l.push(null);r!=null&&(r.maxNumTensors=-Infinity,r.minNumTensors=Infinity);let c=o.join(",")+"|"+t.names().join(","),h,d;if(jA[c]==null){let f=Cte(i,t);h=f.sorted,d=f.recipientCounts,jA[c]=h,_7[c]=d}h=jA[c],d={},a||Object.assign(d,_7[c]);let p=new Ci(t);for(let f=0;fr.maxNumTensors&&(r.maxNumTensors=T),T0,()=>"Expected at least one fetch, got none");let n=[],r={};if(e.length===1){let a=b7(e[0],t);n=a.sorted,r=a.recipientMap}else{let a=new Set;for(let s of e){let{sorted:i,recipientMap:o}=b7(s,t);for(let l of i)a.has(l.name)||(n.push(l),a.add(l.name));for(let l in o)r[l]==null&&(r[l]=new Set),o[l].forEach(u=>r[l].add(u))}}return{sorted:n,recipientCounts:Rte(r)}}function Rte(e){let t={};for(let n in e)t[n]=e[n].size;return t}function b7(e,t){let n=new Set,r=[],a={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),r.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let u of o.inputs)a[u.name]==null&&(a[u.name]=new Set),a[u.name].add(o.name),!n.has(u.name)&&s.push(u)}}return{sorted:r,recipientMap:a}}function Ete(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let r=0;ry.name)}`);Ua(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;this.outputLayers.push(g),this.outputLayersNodeIndices.push(_),this.outputLayersTensorIndices.push(b)}for(let y of this.inputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;Br(_===0,"input layer has >1 nodes"),Br(b===0,"input layer has >1 tensors"),this.inputLayers.push(g),this.inputLayersNodeIndices.push(_),this.inputLayersTensorIndices.push(b)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},r={},a={},s={},i=[],o=(y,g,_,b,w,x)=>{(b==null||w==null||x==null)&&(b=y.sourceLayer,w=y.nodeIndex,x=y.tensorIndex);let I=b.inboundNodes[w];if(_.indexOf(I)!==-1)throw new br(`The tensor ${y.name} at layer "${b.name}" is part of a cycle.`);if(g.indexOf(I)!==-1)return;this.containerNodes.add(jr.nodeKey(b,w)),b.id in s||(s[b.id]=Object.keys(s).length),_.indexOf(I)===-1&&_.push(I);let S=I.inboundLayers.length;for(let T=0;T=0;)_.splice(_.indexOf(I),1);i.push(I)},l=[],u=[];for(let y of this.outputs)o(y,l,u);let c=i.slice().reverse();for(let y of c){n[y.id]=y,y.id in t||(t[y.id]=0);let g=t[y.id],_=r[y.outboundLayer.id]==null?0:r[y.outboundLayer.id];g=Math.max(g,_),r[y.outboundLayer.id]=g,a[y.outboundLayer.id]=y.outboundLayer,t[y.id]=g;for(let b=0;bparseInt(y,10)).sort(kp);this.layers=[];for(let y of p){let g=d[y];g.sort((_,b)=>{let w=s[_.id],x=s[b.id];return wx?1:0});for(let _ of g)_ instanceof jr&&this.internalContainerRefs.push(_),this.layers.push(_)}this.layersByDepth=d,p=Object.keys(h).map(y=>parseInt(y,10)).sort(kp);let f=this.inputs.slice(),m=[];for(let y of p)for(let g of h[y]){let _=g.outboundLayer;if(_!=null){for(let b of g.inputTensors)if(f.indexOf(b)===-1)throw new br(`Graph disconnected: cannot obtain value for tensor ${b} at layer "${_.name}". The following previous layers were accessed without issue: ${m}`);for(let b of g.outputTensors)f.push(b);m.push(_.name)}}this.nodesByDepth=h;let A=this.layers.map(y=>y.name);for(let y of A){let g=A.filter(_=>_===y).length;if(g!==1)throw new br(`The name "${y}" is used ${g} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(A))}this.outboundNodes=[],this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new V("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},r=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new V(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,r++}let a=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)a.push([n[i],e[s]]);else if(t)throw new V(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new V(`${s.length} of ${r} weights are not set: ${s}`)}OA(a)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${HA}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=UA(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return B(()=>{e=ft(e);let n=new Ci;for(let r=0;r{e=ft(e);let n;return t==null?n=vi(null,e.length):n=ft(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=Op(e);if(t.length!==this.inputLayers.length)throw new V(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(kp);if(r.length>1)for(let i of r){let o=this.nodesByDepth[i];for(let l of o){let u=l.outboundLayer;if(this.inputLayers.map(f=>f.id).indexOf(u.id)!==-1)continue;let c=[];for(let f=0;fparseInt(o,10)).sort(kp);for(let o of r){let l=this.nodesByDepth[o];for(let u of l){let c=u.outboundLayer,h=u.inputTensors,d=u.outputTensors,p=new Array;for(let f of h)f.id in n&&p.push(n[f.id]);if(p.length===h.length){let f={},m,A,y,g;if(u.callArgs!=null&&(f=u.callArgs),p.length===1){let[_,b]=p[0];f.mask==null&&(f.mask=b),y=ft(c.call(_,f)),g=ft(c.computeMask(_,b)),m=[_],A=[b]}else m=p.map(_=>_[0]),A=p.map(_=>_[1]),f.mask==null&&(f.mask=A),y=ft(c.call(m,f)),g=ft(c.computeMask(m,A));if(c.activityRegularizer)throw new De("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let _=0;_{let e=[];for(let t of this.layers)for(let n=0;n0){let f=[];for(let m=0;m0&&m.apply(Tn(y),g)}function l(m){let A=m.name,y=Nr(m,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(r),a[A]=y,m.inboundNodes.forEach(g=>{if(!(g instanceof Array))throw new V(`Corrupted configuration, expected array for nodeData: ${g}`);i(y,g)})}let u=t.name,c=t.layers;for(let m of c)l(m);for(;!rQ(s);)for(let m of c){let A=a[m.name];if(A.name in s){let y=s[A.name];delete s[A.name];for(let g of y)o(A,g)}}let h=[],d=[],p=t.inputLayers;for(let m of p){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;h.push(_[g])}let f=t.outputLayers;for(let m of f){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;d.push(_[g])}return new e({inputs:h,outputs:d,name:u})}get stateful(){if(this._stateful)throw new V("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){B(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function Fte(e,t,n){let r=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(a=>null);if(r===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${r} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let a=[];return t.forEach(s=>{s in e?a.push(e[s]):a.push(null)}),a}else throw new Error(`The model has multiple (${r}) outputs, so ${n} must be either an array with ${r} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function v7(e,t){return Fte(e,t,"classWeight")}async function k7(e,t,n,r){if(t!=null||r!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let a=B(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await a.data());Ee(a);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),on(i,"float32")}else return null}function Mte(e,t){return P(e,t)}var $te=32;function I7(e,t){let n,r,a=t;n=a.xs,r=a.ys,v.assert(n!=null&&r!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=N7("input",e.inputNames,n),i=N7("output",e.outputNames,r),o=s[0].shape[0];v.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),v.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function N7(e,t,n){if(n instanceof Ue)return[n];if(Array.isArray(n))return v.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let r=[];for(let a of t){if(n[a]==null)throw new V(`The feature data generated by the dataset lacks the required ${e} key '${a}'.`);r.push(n[a])}return r}}function Dte(e){if(e.length===3)throw new De("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function zte(e,t,n){let r=n.batchesPerEpoch!=null;if(v.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),v.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),v.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),v.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),v.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let a=n.validationData!=null,s,i;if(a)if(S7(n.validationData))v.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let A=Dte(n.validationData);s=A.xs,i=A.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),u;a?u=l.slice().concat(l.map(A=>"val_"+A)):u=l.slice();let c=h7(n.callbacks,n.yieldEvery),h=n.verbose==null?1:n.verbose,{callbackList:d,history:p}=d7(c,h,n.epochs,null,null,Ote(t,n),null,a,u);d.setModel(e),e.history=p,await d.onTrainBegin(),e.stopTraining_=!1;let f=n.initialEpoch==null?0:n.initialEpoch,m=await t.iterator();for(;f=n.batchesPerEpoch:_.done){if(a){let b;S7(n.validationData)?b=ft(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):b=ft(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?$te:n.validationBatchSize,verbose:0}));for(let w=0;w0)throw new De("Verbose mode is not implemented yet.");v.assert(!r||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=Pte(t)?t:await t.iterator(),o=0,l=0;for(;r?l{if(u.value){let{xs:c,ys:h}=I7(e,u.value),d=c.concat(h),p=B(()=>a(d));if(Ee(d),l===0)for(let m=0;mse(s[m],P(f,A))),l>0&&Ee(y)}Ee(p),o+=f,++l}return s}),u.done){r&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function Cc(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(r=>Si(r,t,n-t)):Si(e,t,n-t)}function qA(e,t){return B(()=>e==null?null:Array.isArray(e)?e.map(n=>qA(n,t)):j3(e,t.dtype==="int32"?t:t.toInt()))}function XA(e,t){let n=[],r=0,a=null;for(;r=e&&(a=e),n.push([r,a]),r=a;return n}async function Wte(e,t,n,r,a,s,i,o,l,u,c,h,d,p,f){a==null&&(a=32),s==null&&(s=1),c==null&&(c=!0),d==null&&(d=0);let m=!1;if(l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new V("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let A=e.checkNumSamples(n,a,p,"steps_per_epoch"),y;A!=null&&(y=vr(0,A)),i==null&&(i=1);let{callbackList:g,history:_}=d7(o,i,s,d,A,p,a,m,h);g.setModel(e),e.history=_,await g.onTrainBegin(),e.stopTraining_=!1;for(let b=d;b{let M=I[S][0],D=I[S][1],z=Si(x,M,D-M);T.batch=S,T.size=D-M;let W=qA(n,z),U=t(W);for(let H=0;H0){if(f=!0,r.validationData.length===2)i=r.validationData[0],o=r.validationData[1];else throw r.validationData.length===3?new De("validationData including sample weights is not supported yet."):new V(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${r.validationData} is invalid.`);let x=!0,I=await e.standardizeUserData(i,o,null,null,x,h);l=I[0],u=I[1],m=l.concat(u)}else if(r.validationSplit!=null&&r.validationSplit>0&&r.validationSplit<1){f=!0;let x=Math.floor(a[0].shape[0]*(1-r.validationSplit)),I=a[0].shape[0];l=Cc(a,x,I),a=Cc(a,0,x),u=Cc(s,x,I),s=Cc(s,0,x),m=l.concat(u)}else r.validationSteps!=null&&(f=!0);let A=a.concat(s).concat(c);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),g=e.getDedupedMetricsNames(),_,b;f?(e.makeTestFunction(),_=e.testFunction,b=g.slice().concat(g.map(x=>"val_"+x))):(_=null,m=[],b=g.slice());let w=h7(r.callbacks,r.yieldEvery);return await Wte(e,y,A,g,h,r.epochs,r.verbose,w,_,m,r.shuffle,b,r.initialEpoch,null,null)}finally{e.isTraining=!1,Ei(a,t),Ei(s,n),Ei(l,i),Ei(u,o),c!=null&&Ee(c)}}function T7(e){let t=[];e instanceof Ue&&(e=[e]);for(let n=0;nn.push(a.id));else if(t!=null)for(let a in t){let s=t[a];n.push(s.id)}let r=[];if(e instanceof Ue)n.indexOf(e.id)===-1&&r.push(e);else if(Array.isArray(e))e.forEach(a=>{n.indexOf(a.id)===-1&&r.push(a)});else if(e!=null)for(let a in e){let s=e[a];n.indexOf(s.id)===-1&&r.push(s)}r.forEach(a=>{a.isDisposed||a.dispose()})}function Vte(e){return e instanceof Ue}function KA(e){return Array.isArray(e)}function C7(e){return!Vte(e)&&!KA(e)}function E7(e,t,n,r=!0,a=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(KA(e)&&e.length>0)i=!0;else if(C7(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new V(`Error when checking model ${a} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(C7(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new V(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(KA(e)){if(e=e,e.length!==t.length)throw new V(`Error when checking model ${a}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new V(`The model ${a} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=T7(s),n!=null)for(let i=0;i=0&&u!==c)throw new V(`Error when checking ${a}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function Ute(e,t,n){let r=Ua(e.map(s=>s.shape[0]));r.sort();let a=Ua(t.map(s=>s.shape[0]));if(a.sort(),r.length>1)throw new V(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(a.length>1)throw new V(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(r.length>0&&a.length>0&&!v.arraysEqual(r,a))throw new V(`Input Tensors should have the same number of samples as target Tensors. Found ${r[0]} input sample(s) and ${a[0]} target sample(s).`)}function Hte(e,t,n){let r=[Ti,Vp,Ic];for(let a=0;a1)throw new V(`The model expects ${t.length} ${a} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(r=>n);{let r=[];for(let a of t){let s=n.hasOwnProperty(a)?n[a]:[];Array.isArray(s)||(s=[s]),r.push(s)}return r}}var Gte="layers-model",ha=class extends jr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new V("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");Ste(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=bte(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof oa))throw new V("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new V(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(PA(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new V(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>PA(s))}else{let s=PA(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let r=jte(e.metrics,this.outputNames),a=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Ii("metric",()=>{for(let s=0;s{let l="",u,c,h;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let f=this.internalOutputShapes[s];f[f.length-1]===1||this.lossFunctions[s]===Vp?["accuracy","acc"].indexOf(d)!==-1?c=LA:["crossentropy","ce"].indexOf(d)!==-1&&(c=m7):this.lossFunctions[s]===Bp?["accuracy","acc"].indexOf(d)!==-1?c=A7:["crossentropy","ce"].indexOf(d)!==-1&&(c=y7):["accuracy","acc"].indexOf(d)!==-1?c=WA:["crossentropy","ce"].indexOf(d)!==-1&&(c=BA);let m;["accuracy","acc"].indexOf(d)!==-1?m="acc":["crossentropy","ce"].indexOf(d)!==-1&&(m="ce"),h=c,u=l+m}else h=_te(d),u=l+jp(d);let p;Ii(u,()=>{p=h}),a(s,u,p)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let r=n.batchSize==null?32:n.batchSize;GA(r);let a=!0,s=this.standardizeUserDataXY(e,t,a,r);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,r,n.verbose,n.steps);return Tn(l)}finally{Ei(s[0],e),Ei(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),Lte(this,e,t)}checkNumSamples(e,t,n,r="steps"){let a;if(n!=null){if(a=null,t!=null)throw new V(`If ${r} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?a=e[0].shape[0]:a=e.shape[0];else throw new V(`Either the input data should have a defined shape, or ${r} shoud be specified.`);return a}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new V("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),r=n?t:[t],a=this.retrieveSymbolicTensors(r),s=new Ci;if(e instanceof Ue&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new V(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let r=[];throw t.forEach((a,s)=>{a==null&&r.push(e[s])}),new V(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(r)}`)}return t}predictLoop(e,t=32,n=!1){return B(()=>{let r=this.checkNumSamples(e);if(n)throw new De("Verbose predictLoop() is not implemented yet.");let a=XA(r,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=a[i][0],l=a[i][1],u=Cc(e,o,l),c=[];if(Array.isArray(u))for(let d=0;ds[l].push(o));return Tn(s.map(i=>st(i,0)))})}predict(e,t={}){let n=T7(e);R7(n,this.inputNames,this.feedInputShapes,!1);try{let r=t.batchSize==null?32:t.batchSize;return GA(r),this.predictLoop(n,r)}finally{Ei(n,e)}}predictOnBatch(e){R7(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,r){if(this.optimizer_==null)throw new br("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let a=[];for(let s=0;s0&&e[0].shape[0]%r!=0)throw new V(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${r}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,r,a=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,a,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(r!=null){let u=v7(r,this.outputNames);l=[];for(let c=0;c{let s=this.checkNumSamples(t,n,a,"steps"),i=[];if(r>0)throw new De("Verbose mode is not implemented yet.");if(a!=null)throw new De("steps mode in testLoop() is not implemented yet");{let o=XA(s,n),l=on(vr(0,s));for(let u=0;u1&&(a+=`_${F3(e.slice(0,n),r)}`),t.push(a)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let u=[];for(let p=0;p1&&p{d=se(d,p)}),d},o=this.collectedTrainableWeights.map(u=>u.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>B(()=>{let t=[],n,r=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lca(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let r of t)if(typeof n[r]=="string")e[r]=ca(n[r]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[ca(jp(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>ca(jp(e)));{let e={};for(let t in this.metrics)e[t]=ca(jp(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=Sc(e.optimizer_config),n=Nr(t),r;if(typeof e.loss=="string")r=ki(e.loss);else if(Array.isArray(e.loss))r=e.loss.map(s=>ki(s));else if(e.loss!=null){r={};for(let s in e.loss)r[s]=ki(e.loss[s])}let a;if(Array.isArray(e.metrics))a=e.metrics.map(s=>ki(s));else if(e.metrics!=null){a={};for(let s in e.metrics)a[s]=ki(e.metrics[s])}this.compile({loss:r,metrics:a,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=bn.getSaveHandlers(e);if(i.length===0)throw new V(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new V(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new V("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await bn.encodeWeights(this.getNamedWeights(t)),r=!1,a=null,s={modelTopology:this.toJSON(a,r),format:Gte,generatedBy:`TensorFlow.js tfjs-layers v${HA}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await bn.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=bn.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;x7(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){x7(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};ha.className="Model";re.registerClass(ha);var F7=class extends ha{};F7.className="Functional";re.registerClass(F7);async function qte(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let r=Sc(n),a=Nr(r,t);if(e.weightsManifest!=null){let s=await bn.loadWeights(e.weightsManifest,e.pathPrefix,a.weights.map(o=>o.originalName)),i={};for(let o of a.weights)i[o.originalName]=s[o.originalName];a.loadWeights(i),Ee(s)}return a}async function Kte(e,t){if(t==null&&(t={}),typeof e=="string"){let n=bn.getLoadHandlers(e,t);if(n.length===0)n.push(bn.browserHTTPRequest(e,t));else if(n.length>1)throw new V(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return Xte(e,void 0,t)}async function Xte(e,t,n){if(n==null&&(n={}),e.load==null)throw new V("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let r=await e.load(),a=r.modelTopology;a.model_config!=null&&(a=a.model_config);let s=n.strict==null?!0:n.strict,i=r.weightData!=null&&r.weightSpecs!=null&&s,o=Nr(Sc(a),t,i),l=r.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),r.userDefinedMetadata!=null&&o.setUserDefinedMetadata(r.userDefinedMetadata),r.weightData!=null){if(r.weightSpecs==null)throw new V("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:u,optimizerWeights:c}=Zte(r.weightData,r.weightSpecs);o.loadWeights(u,s),o.optimizer!=null&&c.length>0&&await o.optimizer.setWeights(c),Ee(u),Ee(c.map(h=>h.tensor))}return o}function Zte(e,t){let n=bn.decodeWeights(e,t),r={},a=[];return t.forEach(s=>{s.group==="optimizer"?a.push({name:s.name,tensor:n[s.name]}):r[s.name]=n[s.name]}),{modelWeights:r,optimizerWeights:a}}var Wl=class extends ha{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:Dp("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new V(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof Wl||e instanceof ha,n;if(t){if(n=e,n.outputs.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new V("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new V("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let r=s7({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(r)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new V(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=a7(this.outputs[0])}this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:vi(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(r=>r.shape),outputShapes:this.outputs[0].shape})}else{let r=e.apply(this.outputs[0]);if(Array.isArray(r))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[r],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(ct(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new ha({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},r=!1){let a,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new V("Legacy serialization format not supported yet.");a=t}else v.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),a=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof Wl))throw new De(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of a){let l=Nr(o,void 0,r);r&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new V("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new V("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};Wl.className="Sequential";re.registerClass(Wl);function Yte(e){return new ha(e)}function Jte(e){return new Wl(e)}function Qte(e,t){return t==null&&(t={}),Kte(e,t)}function Z3(e){return s7(e)}function ene(e,t){ur.registerCallbackConstructor(e,t)}var Ln=class extends re.Serializable{getConfig(){return{}}},M7=class extends Ln{apply(e,t=1){return FQ(e,t)}};M7.className="elu";re.registerClass(M7);var $7=class extends Ln{apply(e){return Cd(e)}};$7.className="selu";re.registerClass($7);var D7=class extends Ln{apply(e){return zr(e)}};D7.className="relu";re.registerClass(D7);var O7=class extends Ln{apply(e){return B(()=>fl(6,zr(e)))}};O7.className="relu6";re.registerClass(O7);var z7=class extends Ln{apply(e){return e}};z7.className="linear";re.registerClass(z7);var P7=class extends Ln{apply(e){return Fn(e)}};P7.className="sigmoid";re.registerClass(P7);var L7=class extends Ln{apply(e){return $Q(e)}};L7.className="hardSigmoid";re.registerClass(L7);var W7=class extends Ln{apply(e){return dl(e)}};W7.className="softplus";re.registerClass(W7);var B7=class extends Ln{apply(e){return MQ(e)}};B7.className="softsign";re.registerClass(B7);var V7=class extends Ln{apply(e){return ol(e)}};V7.className="tanh";re.registerClass(V7);var ZA=class extends Ln{apply(e,t=-1){return Yu(e,t)}};ZA.className="softmax";re.registerClass(ZA);var U7=class extends Ln{apply(e,t=-1){return bd(e,t)}};U7.className="logSoftmax";re.registerClass(U7);var H7=class extends Ln{apply(e,t=1){return B(()=>Fn(e.mul(t)).mul(e))}};H7.className="swish";re.registerClass(H7);function qa(e){return e.getClassName()}function YA(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"activation")}function Xa(e){if(e==null){let t={};return t.className="linear",t.config={},YA(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},YA(t)}else return e instanceof Ln?e:YA(e)}function JA(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var j7=class extends re.Serializable{},Ec=class extends j7{constructor(e){super();JA(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return B(()=>{let t=Et([1]);return this.hasL1&&(t=se(t,Te(P(this.l1,zt(e))))),this.hasL2&&(t=se(t,Te(P(this.l2,vc(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};Ec.className="L1L2";re.registerClass(Ec);function tne(e){return JA(e),new Ec({l1:e!=null?e.l1:null,l2:0})}function nne(e){return JA(e),new Ec({l2:e!=null?e.l2:null,l1:0})}var G7={l1l2:"L1L2"};function ht(e){return dA(e)}function q7(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"regularizer")}function wt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in G7?G7[e]:e,config:{}};return q7(t)}else return e instanceof j7?e:q7(e)}var QA=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Pe(e);let n=zr(e);return this.maxValue!=null&&(n=vn(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};QA.className="ReLU";re.registerClass(QA);var ey=class extends qe{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Pe(e);return Hu(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};ey.className="LeakyReLU";re.registerClass(ey);var ty=class extends qe{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=xt(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=wt(e.alphaRegularizer),this.alphaConstraint=Vt(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new V(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=ct(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let r of this.sharedAxes)t[r-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let r=1;r(Tt(t),t==="channelsFirst"?at(e,[0,2,3,1]):e))}function X7(e,t){return B(()=>(Tt(t),t==="channelsFirst"?at(e,[0,2,3,4,1]):e))}function rne(e,t,n,r=1,a="valid",s,i=1){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.shape.length!==3)throw new V(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new V(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new V(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=at(e,[0,2,1])),a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=fd(e,t,r,a==="same"?"same":"valid","NWC",i);return n!=null&&(o=Ur(o,n)),o})}function K7(e,t,n,r=[1,1],a="valid",s,i,o=null){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==3&&e.rank!==4)throw new V(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new V(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=sy(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=La.conv2d({x:l,filter:t,strides:r,pad:a==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=at(l,[0,3,1,2])),l})}function ane(e,t,n,r=[1,1,1],a="valid",s,i){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==4&&e.rank!==5)throw new V(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new V(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=X7(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=Xf(o,t,r,a==="same"?"same":"valid","NDHWC",i),n!=null&&(o=Ur(o,n)),s==="channelsFirst"&&(o=at(o,[0,4,1,2,3])),o})}var iy=class extends qe{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",iy.verifyArgs(t),this.rank=e,Xt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new De(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Bl(t.kernelSize,e,"kernelSize"),this.strides=Bl(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,Yn(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Tt(this.dataFormat),this.activation=Xa(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=xt(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Vt(t.biasConstraint),this.biasRegularizer=wt(t.biasRegularizer),this.activityRegularizer=wt(t.activityRegularizer),this.dilationRate=Bl(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new V(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new V(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new V(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(Br("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,3))throw new V(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:qa(this.activation),useBias:this.useBias,biasInitializer:Nt(this.biasInitializer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},Rc=class extends iy{constructor(e,t){super(e,t);this.kernel=null,Rc.verifyArgs(t),this.filters=t.filters,Xt(this.filters,"filters"),this.kernelInitializer=xt(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Vt(t.kernelConstraint),this.kernelRegularizer=wt(t.kernelRegularizer)}build(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],r=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",r,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n,r=this.bias==null?null:this.bias.read(),a=$3(this.activation.getClassName());if(a!=null&&this.rank===2)n=K7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate,a);else{if(this.rank===1)n=rne(e,this.kernel.read(),r,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=K7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=ane(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new De("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=ct(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let a=0;a 0 but got ${JSON.stringify(e.filters)}`)}},Fc=class extends Rc{constructor(e){super(2,e);Fc.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,2))throw new V(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};Fc.className="Conv2D";re.registerClass(Fc);var Xp=class extends Rc{constructor(e){super(3,e);Xp.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new V(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};Xp.className="Conv3D";re.registerClass(Xp);var oy=class extends Fc{constructor(e){super(e);if(this.inputSpec=[new Kt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new V(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=ct(e),e.length!==4)throw new V("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],r=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",r,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Kt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return B(()=>{let n=Pe(e);if(n.shape.length!==4)throw new V(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let r=n.shape,a=r[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=r[s],l=r[i],u=this.kernelSize[0],c=this.kernelSize[1],h=this.strides[0],d=this.strides[1],p=qp(o,h,u,this.padding),f=qp(l,d,c,this.padding),m=[a,p,f,this.filters];this.dataFormat!=="channelsLast"&&(n=at(n,[0,2,3,1]));let A=md(n,this.kernel.read(),m,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(A=at(A,[0,3,1,2])),this.bias!=null&&(A=Ur(A,this.bias.read(),this.dataFormat)),this.activation!=null&&(A=this.activation.apply(A)),A})}computeOutputShape(e){e=ct(e);let t=e.slice(),n,r,a;this.dataFormat==="channelsFirst"?(n=1,r=2,a=3):(n=3,r=1,a=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[r]=qp(t[r],o,s,this.padding),t[a]=qp(t[a],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};oy.className="Conv2DTranspose";re.registerClass(oy);var Z7=class extends Rc{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new V("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new V("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new V(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=wt(t.depthwiseRegularizer),this.depthwiseConstraint=Vt(t.depthwiseConstraint),this.pointwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=wt(t.pointwiseRegularizer),this.pointwiseConstraint=Vt(t.pointwiseConstraint)}build(e){if(e=ct(e),e.length{e=Pe(e);let n;if(this.rank===1)throw new De("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=at(e,[0,2,3,1])),n=dm(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=at(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.pointwiseInitializer=Nt(this.pointwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.pointwiseRegularizer=ht(this.pointwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseConstraint),e.pointwiseConstraint=Bt(this.pointwiseConstraint),e}};Z7.className="SeparableConv";var ly=class extends Z7{constructor(e){super(2,e)}};ly.className="SeparableConv2D";re.registerClass(ly);var Kp=class extends Rc{constructor(e){super(1,e);Kp.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,1))throw new V(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};Kp.className="Conv1D";re.registerClass(Kp);var uy=class extends qe{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return B(()=>{if(e=Pe(e),this.dataFormat==="channelsLast"){let n=Np(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return Np(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=Np(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return Np(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};uy.className="Cropping2D";re.registerClass(uy);var cy=class extends qe{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,NQ(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return B(()=>{let n=Pe(e),r=n.shape;if(this.dataFormat==="channelsFirst"){n=at(n,[0,2,3,1]);let a=this.size[0]*r[2],s=this.size[1]*r[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s]);return at(i,[0,3,1,2])}else{let a=this.size[0]*r[1],s=this.size[1]*r[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};cy.className="UpSampling2D";re.registerClass(cy);function sne(e,t,n=[1,1],r="valid",a,s){return B(()=>{a==null&&(a=_r()),Tt(a);let i=sy(e,a);if(e.rank!==4)throw new V(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new V(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=ul(i,t,n,r==="same"?"same":"valid","NHWC",s),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}var hy=class extends iy{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=xt(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Vt(e.depthwiseConstraint),this.depthwiseRegularizer=wt(e.depthwiseRegularizer)}build(e){if(e=ct(e),e.length<4)throw new V(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new V(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n=sne(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,a=Ir(t,this.kernelSize[0],this.padding,this.strides[0]),s=Ir(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],r,a,s]:[e[0],a,s,r]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseRegularizer),e}};hy.className="DepthwiseConv2D";re.registerClass(hy);function Y7(e,t,n,r){if(Array.isArray(e)){if(t!=null||n!=null)throw new V("When inputs is an array, neither initialState or constants should be provided");r!=null&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(s){return s==null||Array.isArray(s)?s:[s]}return t=a(t),n=a(n),{inputs:e,initialState:t,constants:n}}function J7(e,t,n,r=!1,a,s,i=!1,o=!1){return B(()=>{let l=t.shape.length;if(l<3)throw new V(`Input should be at least 3D, but is ${l}D.`);let u=[1,0].concat(vr(2,l));if(t=at(t,u),s!=null)throw new De("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a!=null&&(a=a.asType("bool").asType("float32"),a.rank===l-1&&(a=hn(a,-1)),a=at(a,u)),r&&(t=Dn(t,0),a!=null&&(a=Dn(a,0)));let c=[],h,d=n,p=t.shape[0],f=sr(t),m;a!=null&&(m=sr(a));for(let y=0;ye(g,d));if(a==null)h=_[0],d=_[1];else{let b=B(()=>{let w=m[y],x=$n(w).sub(w),I=_[0].mul(w).add(d[0].mul(x)),S=d.map((T,M)=>_[1][M].mul(w).add(T.mul(x)));return{output:I,newStates:S}});h=b.output,d=b.newStates}o&&c.push(h)}let A;return o&&(A=dn(c,1)),[h,A,d]})}var Hr=class extends qe{constructor(e){super(e);let t;if(e.cell==null)throw new V("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new Zp({cells:e.cell}):t=e.cell,t.stateSize==null)throw new V("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Kt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return vr(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){$A(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],r;if(this.returnSequences?r=[e[0],e[1],n]:r=[e[0],n],this.returnState){let a=[];for(let s of t)a.push([e[0],s]);return[r].concat(a)}else return r}computeMask(e,t){return B(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let r=this.states.map(a=>null);return[n].concat(r)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new V(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Kt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_=[Et([n,this.cell.stateSize])];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_[0]=Et([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let r=0;rGt(r.clone()))})}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=Y7(e,n,r,this.numConstants);e=a.inputs,n=a.initialState,r=a.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Kt({shape:o.shape}));i=i.concat(this.stateSpec)}if(r!=null&&(t.constants=r,s=s.concat(r),this.numConstants=r.length),s[0]instanceof kr){let o=[e].concat(s),l=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=l;let c=super.apply(o,t);return this.inputSpec=u,c}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;e=Pe(e),a==null&&(this.stateful?a=this.states_:a=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(a.length!==s)throw new V(`RNN Layer has ${s} state(s) but was passed ${a.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:r},o=J7((d,p)=>{let f=this.cell.call([d].concat(p),i);return[f[0],f.slice(1)]},e,a,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],u=o[1],c=o[2];this.stateful&&this.resetStates(c,r);let h=this.returnSequences?u:l;return this.returnState?[h].concat(c):h})}getInitialState(e){return B(()=>{let t=Et(e.shape);return t=Te(t,[1,2]),t=bc(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?wA(t,[1,n]):t):this.cell.stateSize>1?[wA(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===Hr.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let r=t.cell,a=Nr(r,n);return new e(Object.assign(t,{cell:a}))}};Hr.className="RNN";re.registerClass(Hr);var Nc=class extends qe{},Yp=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let r=t.training==null?!1:t.training;0$n(e),rate:this.dropout,training:r})),0$n(n),rate:this.recurrentDropout,training:r}));let a,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?a=Vr(P(e,s),this.kernel.read()):a=Vr(e,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),i!=null&&(n=P(n,i));let o=se(a,Vr(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),recurrentInitializer:Nt(this.recurrentInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),recurrentRegularizer:ht(this.recurrentRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),recurrentConstraint:Bt(this.recurrentConstraint),biasConstraint:Bt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};Yp.className="SimpleRNNCell";re.registerClass(Yp);var dy=class extends Hr{constructor(e){e.cell=new Yp(e),super(e)}call(e,t){return B(()=>{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return new e(t)}};dy.className="SimpleRNN";re.registerClass(dy);var Jp=class extends Nc{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new V("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,r=e[1];e=e[0],0$n(e),rate:this.dropout,training:n,count:3})),0$n(r),rate:this.recurrentDropout,training:n,count:3}));let a=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};py.className="GRU";re.registerClass(py);var Mc=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=ct(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let r;if(this.useBias){if(this.unitForgetBias){let a=this.biasInitializer,s=this.units;r=new(t=class extends lr{apply(i,o){let l=a.apply([s]),u=new Sp().apply([s]),c=a.apply([s*2]);return H3(H3(l,u),c)}},t.className="CustomInit",t)}else r=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,r,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new V(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let r=e[1],a=e[2];e=e[0],0$n(e),rate:this.dropout,training:n,count:4})),0$n(r),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,u,c;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};fy.className="LSTM";re.registerClass(fy);var Zp=class extends Nc{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return B(()=>{e=e;let n=e.slice(1),r=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?r.push(n.splice(0,i.stateSize.length)):r.push(n.splice(0,1));r.reverse();let a=[],s;for(let i=0;i{Ii(`RNNCell_${r}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=r=>({className:r.getClassName(),config:r.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let r=[];for(let a of t.cells)r.push(Nr(a,n));return new e({cells:r})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return DA(e)}setWeights(e){let t=[];for(let n of this.cells){let r=n.weights.length,a=e.splice(r);for(let s=0;sG3(t(),n),i=()=>kc(s,t,r);return!a||a<=1?Gt(i().clone()):Array(a).fill(void 0).map(i).map(o=>Gt(o.clone()))}var ine=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a{if(this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new V("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return B(()=>{let{stateSize:t}=this.cell,n=e.shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)],s=Et(a);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)];if(n[0]==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_=[Et(a)];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_[0]=Et(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let s=0;sGt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:r,padding:a,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],u=e[o?4:3],c=Ir(l,r[0],a,s[0],i[0]),h=Ir(u,r[1],a,s[1],i[1]);return[...e.slice(0,2),...o?[n,c,h]:[c,h,n]]}};Q7.className="ConvRNN2D";var Qp=class extends Mc{constructor(e){let{filters:t,kernelSize:n,strides:r,padding:a,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Xt(this.filters,"filters"),this.kernelSize=Bl(n,2,"kernelSize"),this.kernelSize.forEach(o=>Xt(o,"kernelSize")),this.strides=Bl(r||1,2,"strides"),this.strides.forEach(o=>Xt(o,"strides")),this.padding=a||"valid",Yn(this.padding),this.dataFormat=s||"channelsLast",Tt(this.dataFormat),this.dilationRate=Bl(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Xt(o,"dilationRate"))}build(e){var t;e=ct(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[n]}`);let r=e[n],a=4,s=this.kernelSize.concat([r,this.filters*a]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*a]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,u=this.filters;o=new(t=class extends lr{apply(c,h){let d=l.apply([u]),p=Or([u]),f=l.apply([u*2]);return bA([d,p,f])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*a],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return B(()=>{if(e.length!==3)throw new V(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,r=e[0],a=e[1],s=e[2],i=4;0$n(r),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Y,ae,te)=>!ae||!ae[te]?Y:P(ae[te],Y),u=l(r,o,0),c=l(r,o,1),h=l(r,o,2),d=l(r,o,3);0$n(a),rate:this.recurrentDropout,training:n,count:i}));let p=this.recurrentDropoutMask,f=l(a,p,0),m=l(a,p,1),A=l(a,p,2),y=l(a,p,3),g=3,[_,b,w,x]=Lt(this.kernel.read(),i,g),[I,S,T,M]=this.useBias?Lt(this.bias.read(),i):[null,null,null,null];u=this.inputConv(u,_,I,this.padding),c=this.inputConv(c,b,S,this.padding),h=this.inputConv(h,w,T,this.padding),d=this.inputConv(d,x,M,this.padding);let[D,z,W,U]=Lt(this.recurrentKernel.read(),i,g);f=this.recurrentConv(f,D),m=this.recurrentConv(m,z),A=this.recurrentConv(A,W),y=this.recurrentConv(y,U);let H=this.recurrentActivation.apply(se(u,f)),X=this.recurrentActivation.apply(se(c,m)),j=se(P(X,s),P(H,this.activation.apply(se(h,A)))),ee=P(this.recurrentActivation.apply(se(d,y)),this.activation.apply(j));return[ee,ee,j]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=ine(e,["units"]),r={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,r)}inputConv(e,t,n,r){let a=ra(e,t,this.strides,r||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?Ur(a,n,this.dataFormat):a}recurrentConv(e,t){return ra(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};Qp.className="ConvLSTM2DCell";re.registerClass(Qp);var my=class extends Q7{constructor(e){let t=new Qp(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};my.className="ConvLSTM2D";re.registerClass(my);var e0=class extends qe{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);if(0G3(n,this.rate,a,this.seed),()=>n,r)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};e0.className="Dropout";re.registerClass(e0);var Ay=class extends e0{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};Ay.className="SpatialDropout1D";re.registerClass(Ay);var yy=class extends qe{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Vt(e.kernelConstraint),this.biasConstraint=Vt(e.biasConstraint),this.kernelRegularizer=wt(e.kernelRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=ct(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=ct(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=$3(this.activation.getClassName()),a;return r!=null?a=Vr(n,this.kernel.read(),r,this.bias?this.bias.read():null):(a=Vr(n,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),this.activation!=null&&(a=this.activation.apply(a))),a})}getConfig(){let e={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};yy.className="Dense";re.registerClass(yy);var gy=class extends qe{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=ct(e);for(let t of e.slice(1))if(t==null)throw new V(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],Ha(e,1)]}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let r=[0];for(let a=2;a{this.invokeCallHook(e,t);let n=Pe(e);return this.activation.apply(n)})}getConfig(){let e={activation:qa(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};xy.className="Activation";re.registerClass(xy);var wy=class extends qe{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return B(()=>(e=Pe(e),CQ(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};wy.className="RepeatVector";re.registerClass(wy);var _y=class extends qe{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Pe(e),r=n.shape,a=r.slice(0,1).concat(this.fixUnknownDimension(r.slice(1),this.targetShape));return n.reshape(a)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};_y.className="Reshape";re.registerClass(_y);var by=class extends qe{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=vr(1,e.dims.length+1);if(!v.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Kt({ndim:this.dims.length+1})]}computeOutputShape(e){e=ct(e);let t=e.slice();return this.dims.forEach((n,r)=>{t[r+1]=e[n]}),t}call(e,t){return at(Pe(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};by.className="Permute";re.registerClass(by);var vy=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Pe(e),r=-1;return Ou(di(n,this.maskValue),r)}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=-1,a=!0,s=Ou(di(n,this.maskValue),r,a);return n.mul(s.asType(n.dtype))})}};vy.className="Masking";re.registerClass(vy);var ky=class extends qe{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(ft(e.inputLength))}this.inputDim=e.inputDim,Xt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Xt(this.outputDim,"outputDim"),this.embeddingsInitializer=xt(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=wt(e.embeddingsRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.embeddingsConstraint=Vt(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return B(()=>this.maskZero?(e=Pe(e),di(e,He(e))):null)}computeOutputShape(e){if(e=ct(e),this.inputLength==null)return[...e,this.outputDim];let t=ft(this.inputLength);if(t.length!==e.length-1)throw new V(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);return n.dtype!=="int32"&&(n=_c(n,"int32")),j3(this.embeddings.read(),n.as1D()).reshape(ct(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Nt(this.embeddingsInitializer),embeddingsRegularizer:ht(this.embeddingsRegularizer),activityRegularizer:ht(this.activityRegularizer),embeddingsConstraint:Bt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};ky.className="Embedding";re.registerClass(ky);var Ri=class extends qe{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new De}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new V(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let a=1;aa.length);e.indexOf(null)===-1&&Ua(r).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return B(()=>{if(e=e,this.reshapeRequired){let n=[],r=e.map(a=>a.rank);if(r.indexOf(null)===-1){let a=ja(r);for(let s of e){let i=s.rank;for(let o=0;o1){let u=vr(1,l).concat([0]);n.push(at(o,u)),a=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(a){if(i==null){let o=s.shape,l=o.length,u=o[l-1],c=[u].concat(o.slice(0,o.length-1));s=at(s.reshape([-1,u]),[1,0]).reshape(c)}else if(i>1){let o=[i-1].concat(vr(0,i-1));s=at(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let r=1;r{if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an Array");if(!Array.isArray(e))throw new V("`inputs` should be an Array");if(t.length!==e.length)throw new V(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(r=>r==null))return null;t=t.map(r=>r==null?r:hn(r,0));let n=t[0];for(let r=1;r{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new V("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return B(()=>bA(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new V("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis;for(let a of t.slice(1)){if(n[r]==null||a[r]==null){n[r]=null;break}n[r]+=a[r]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new V("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new V(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return B(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let r=[];for(let s=0;s3||t.shape.length>3)throw new De("batchDot is not implemented for tensors of 4D or higher rank yet");if(v.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),v.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new De("batchDot is not implemented for complex64-type Tensors yet.");let r=e.shape.length,a=t.shape.length;n==null&&(n=[r-1,a-2]);let s=n;return B(()=>{let i;if(r>a){i=r-a;let l=[];for(let u=0;ur){i=a-r;let l=[];for(let u=0;u0){let l;r>a?l=r+a-3:l=r-1;let u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new V(`Dimension incompatibility: ${t[r[0]]} !== ${n[r[1]]}`)}mergeFunction(e){if(e.length!==2)throw new V(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],r;return Array.isArray(this.axes)?r=this.axes.map((a,s)=>$c(a,e[s].shape.length)):r=[$c(this.axes,t.shape.length),$c(this.axes,n.shape.length)],this.normalize&&(t=Lp(t,r[0]),n=Lp(n,r[1])),one(t,n,r)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[$c(this.axes,e.length),$c(this.axes,t.length)],n}computeOutputShape(e){v.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);let a=t.concat(n);return a.length===1&&a.push(1),a}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};Ry.className="Dot";re.registerClass(Ry);var Fy=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return kc(()=>Ip(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Fy.className="GaussianNoise";re.registerClass(Fy);var My=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return this.rate>0&&this.rate<1?kc(()=>{let r=Math.sqrt(this.rate/(1-this.rate));return n.mul(Ip(n.shape,1,r))},()=>n,t.training||!1):n})}};My.className="GaussianDropout";re.registerClass(My);var $y=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Pe(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return kc(()=>{let r=Pe(e),a=1.6732632423543772,s=1.0507009873554805,i=-a*s,o=za(ml(n),this.rate);o=_c(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,u=-l*i*this.rate;return r.mul(o).add(o.add(-1).mul(i)).mul(l).add(u)},()=>Pe(e),t.training||!1)}return e})}};$y.className="AlphaDropout";re.registerClass($y);function Dc(e,t,n,r,a,s=.001){let i;if(e.rank===2)i=H5(e,t,n,r,a,s);else if(e.rank===3)i=j5(e,t,n,r,a,s);else if(e.rank===4)i=G5(e,t,n,r,a,s);else throw new De(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function lne(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance;return[Dc(e,i,o,n,t,a),i,o]})}function une(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance,l=[];for(let p of vr(0,e.rank))r.indexOf(p)!==-1?l.push(1):l.push(e.shape[p]);let u=i.reshape(l),c=o.reshape(l),h=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[Dc(e,u,c,d,h,a),i,o]})}function cne(e,t,n,r,a=.001){return v.arraysEqual(r.slice().sort(),vr(0,e.rank-1))?lne(e,t,n,r,a):une(e,t,n,r,a)}var Dy=class extends qe{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.movingMeanInitializer=xt(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=xt(e.movingVarianceInitializer||"ones"),this.betaConstraint=Vt(e.betaConstraint),this.gammaConstraint=Vt(e.gammaConstraint),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer)}build(e){e=ct(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new V(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Kt({ndim:e.length,axes:{[t]:n}})];let r=[n];this.scale&&(this.gamma=this.addWeight("gamma",r,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",r,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",r,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",r,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training,r=Pe(e),a=r.shape,s=a.length,i=vr(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=vi(1,s);l[o]=a[o];let u=i.slice();u.sort();let c=!v.arraysEqual(u,vr(0,s).slice(0,s-1)),h=()=>{if(c){let A=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),g=this.center?this.beta.read().reshape(l):null,_=this.scale?this.gamma.read().reshape(l):null;return Dc(r,A,y,g,_,this.epsilon)}else return Dc(r,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return h();let[d,p,f]=cne(r,this.gamma.read(),this.beta.read(),i,this.epsilon),m=(A,y,g)=>{B(()=>{let _=1-g,b=A.read(),w=b.sub(y).mul(_);A.write(b.sub(w))})};return(()=>{m(this.movingMean,p,this.momentum),m(this.movingVariance,f,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Nt(this.betaInitializer),gammaInitializer:Nt(this.gammaInitializer),movingMeanInitializer:Nt(this.movingMeanInitializer),movingVarianceInitializer:Nt(this.movingVarianceInitializer),betaRegularizer:ht(this.betaRegularizer),gammaRegularizer:ht(this.gammaRegularizer),betaConstraint:Bt(this.betaConstraint),gammaConstraint:Bt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Dy.className="BatchNormalization";re.registerClass(Dy);var Oy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=ct(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let a=0;a=t)throw new Error(`Invalid axis: ${a}`);if(this.axis.length!==Ua(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(a=>e[a]),r=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,r):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,r):this.beta=null,this.built=!0}call(e,t){let n=Pe(e),r=n.shape,a=r.length;return B(()=>{let s=!0,{mean:i,variance:o}=kd(n,this.axis,s),l=vi(1,a);for(let f of this.axis)l[f]=r[f];let u=f=>f!=null&&f.shape.length!==a&&this.axis!==[a-1]?f.reshape(l):f,c=u(this.gamma.read()),h=u(this.beta.read()),d=[],p=[];for(let f=0;f{if(e.rank!==4)throw new V(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new V("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=_r()),n!=="channelsLast"&&n!=="channelsFirst")throw new V(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let r;return n==="channelsFirst"?r=[[0,0],[0,0],t[0],t[1]]:r=[[0,0],t[0],t[1],[0,0]],aa(e,r)})}var zy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?_r():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new V(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new V(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new V(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return B(()=>hne(Pe(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};zy.className="ZeroPadding2D";re.registerClass(zy);function t0(e,t,n,r,a,s){return B(()=>{Tt(a),P3(s),Yn(r),n==null&&(n=[1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=sy(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=Gu(e,t,n,o):i=Lu(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}function ev(e,t,n,r,a,s){return B(()=>{Tt(a),P3(s),Yn(r),n==null&&(n=[1,1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=X7(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=sm(e,t,n,o):i=jf(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,4,1,2,3])),i})}var tv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new V(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Xt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new V(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,Yn(this.padding),this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){e=ct(e);let t=Ir(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return B(()=>{this.invokeCallHook(e,t),e=bc(Pe(e),2);let n=this.poolingFunction(Pe(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return Pa(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},Py=class extends tv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Py.className="MaxPooling1D";re.registerClass(Py);var Ly=class extends tv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};Ly.className="AveragePooling1D";re.registerClass(Ly);var nv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new V(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Wy=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Wy.className="MaxPooling2D";re.registerClass(Wy);var By=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};By.className="AveragePooling2D";re.registerClass(By);var rv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new V(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:5})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),r=Ir(r,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Vy=class extends rv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),ev(e,t,n,r,a,"max")}};Vy.className="MaxPooling3D";re.registerClass(Vy);var Uy=class extends rv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),ev(e,t,n,r,a,"avg")}};Uy.className="AveragePooling3D";re.registerClass(Uy);var av=class extends qe{constructor(e){super(e);this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new De}},Hy=class extends av{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return kt(n,1)})}};Hy.className="GlobalAveragePooling1D";re.registerClass(Hy);var jy=class extends av{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return Xn(n,1)})}};jy.className="GlobalMaxPooling1D";re.registerClass(jy);var sv=class extends qe{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new De}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Gy=class extends sv{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?kt(n,[1,2]):kt(n,[2,3])})}};Gy.className="GlobalAveragePooling2D";re.registerClass(Gy);var qy=class extends sv{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?Xn(n,[1,2]):Xn(n,[2,3])})}};qy.className="GlobalMaxPooling2D";re.registerClass(qy);var iv=class extends qe{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let r=t.layer,a=Nr(r,n);delete t.layer;let s={layer:a};return Object.assign(s,t),new e(s)}},Xy=class extends iv{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=ct(e),e.length<3)throw new V(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=ct(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))}call(e,t){return B(()=>(e=Pe(e),J7((n,r)=>[Pe(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};Xy.className="TimeDistributed";re.registerClass(Xy);function dne(e){Ni(kQ,"BidirectionalMergeMode",e)}var pne="concat",Ky=class extends iv{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Nr(n),t.goBackwards=t.goBackwards!==!0;let r={};if(r.className=e.layer.getClassName(),r.config=t,this.backwardLayer=Nr(r),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?pne:e.mergeMode,dne(this.mergeMode),e.weights)throw new De("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,r,a;return this.returnState&&(a=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,r=[n]):this.mergeMode==null?r=[n,n.slice()]:r=[n],this.returnState?this.mergeMode==null?r.concat(a).concat(a.slice()):[n].concat(a).concat(a.slice()):Tn(r)}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=Y7(e,n,r,this.numConstants);if(e=a.inputs,n=a.initialState,r=a.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&r==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new V("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let u=n.map(c=>new Kt({shape:c.shape}));this.forwardLayer.stateSpec=u.slice(0,l/2),this.backwardLayer.stateSpec=u.slice(l/2),i.push(...u)}if(r!=null)throw new De("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof kr;for(let l of s)if(l instanceof kr!==o)throw new V("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),u=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=u;let h=super.apply(l,t);return this.inputSpec=c,h}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t.initialState,r,a;if(n==null)r=this.forwardLayer.call(e,t),a=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);r=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),a=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(r)&&(s=r.slice(1).concat(a.slice(1))),r=r[0],a=a[0]),this.returnSequences&&(a=Dn(a,1));let i;return this.mergeMode==="concat"?i=bA([r,a]):this.mergeMode==="sum"?i=se(r,a):this.mergeMode==="ave"?i=P(.5,se(r,a)):this.mergeMode==="mul"?i=P(r,a):this.mergeMode==null&&(i=[r,a]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Ii(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Ii(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let r=this.forwardLayer.states.map(a=>null);return Array.isArray(n)?n.concat(r).concat(r):[n].concat(r).concat(r)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Nr(t.layer);if(delete t.layer,t.numConstants!=null)throw new De("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let r=t;return r.layer=n,new e(r)}};Ky.className="Bidirectional";re.registerClass(Ky);function WQ(e){return new zl(e)}function BQ(e){return new ny(e)}function VQ(e){return new QA(e)}function UQ(e){return new ey(e)}function HQ(e){return new ty(e)}function jQ(e){return new ay(e)}function GQ(e){return new ry(e)}function qQ(e){return new Kp(e)}function XQ(e){return new Fc(e)}function KQ(e){return new oy(e)}function ZQ(e){return new Xp(e)}function YQ(e){return new ly(e)}function JQ(e){return new uy(e)}function QQ(e){return new cy(e)}function eee(e){return new hy(e)}function tee(e){return new xy(e)}function nee(e){return new yy(e)}function ree(e){return new e0(e)}function aee(e){return new Ay(e)}function see(e){return new gy(e)}function iee(e){return new wy(e)}function oee(e){return new _y(e)}function lee(e){return new by(e)}function uee(e){return new ky(e)}function cee(e){return new Ny(e)}function hee(e){return new Sy(e)}function dee(e){return new Ey(e)}function pee(e){return new Ty(e)}function fee(e){return new Cy(e)}function mee(e){return new Iy(e)}function Aee(e){return new Ry(e)}function yee(e){return new Dy(e)}function gee(e){return new Oy(e)}function xee(e){return new zy(e)}function RA(e){return new Ly(e)}function wee(e){return RA(e)}function _ee(e){return RA(e)}function FA(e){return new By(e)}function bee(e){return FA(e)}function vee(e){return FA(e)}function MA(e){return new Uy(e)}function kee(e){return MA(e)}function Nee(e){return MA(e)}function Iee(e){return new Hy(e)}function See(e){return new Gy(e)}function Y3(e){return new jy(e)}function J3(e){return new qy(e)}function Q3(e){return new Py(e)}function e7(e){return new Wy(e)}function Tee(e){return new Vy(e)}function Cee(e){return new py(e)}function Eee(e){return new Jp(e)}function Ree(e){return new fy(e)}function Fee(e){return new Mc(e)}function Mee(e){return new dy(e)}function $ee(e){return new Yp(e)}function Dee(e){return new my(e)}function Oee(e){return new Qp(e)}function zee(e){return new Hr(e)}function Pee(e){return new Zp(e)}function Lee(e){return new Ky(e)}function Wee(e){return new Xy(e)}var Bee=Y3,Vee=J3,Uee=Q3,Hee=e7;function jee(e){return new Fy(e)}function Gee(e){return new My(e)}function qee(e){return new $y(e)}function Xee(e){return new vy(e)}var ov={};ze(ov,{MAPE:()=>kne,MSE:()=>Sne,binaryAccuracy:()=>fne,binaryCrossentropy:()=>mne,categoricalAccuracy:()=>yne,categoricalCrossentropy:()=>gne,cosineProximity:()=>_ne,mape:()=>Nne,meanAbsoluteError:()=>bne,meanAbsolutePercentageError:()=>vne,meanSquaredError:()=>Ine,mse:()=>Tne,precision:()=>xne,recall:()=>wne,sparseCategoricalAccuracy:()=>Ane});function fne(e,t){return LA(e,t)}function mne(e,t){return m7(e,t)}function Ane(e,t){return A7(e,t)}function yne(e,t){return WA(e,t)}function gne(e,t){return BA(e,t)}function xne(e,t){return f7(e,t)}function wne(e,t){return pte(e,t)}function _ne(e,t){return zA(e,t)}function bne(e,t){return Wp(e,t)}function vne(e,t){return Ll(e,t)}function kne(e,t){return Ll(e,t)}function Nne(e,t){return Ll(e,t)}function Ine(e,t){return Ti(e,t)}function Sne(e,t){return Ti(e,t)}function Tne(e,t){return Ti(e,t)}var lv={};ze(lv,{modelFromJSON:()=>qte});var uv={};ze(uv,{l1:()=>Ene,l1l2:()=>Cne,l2:()=>Rne});function Cne(e){return new Ec(e)}function Ene(e){return tne(e)}function Rne(e){return nne(e)}var cv=class extends Pl{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof ha))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function n0(e,t){return et}var dv=class extends cv{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new De("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=n0:this.mode==="max"?this.monitorFunc=hv:this.monitor.indexOf("acc")!==-1?this.monitorFunc=hv:this.monitorFunc=n0,this.monitorFunc===n0&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===n0?Infinity:-Infinity}async onEpochEnd(e,t){await Ga(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function Fne(e){return new dv(e)}var Mne={earlyStopping:Fne},Sr;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Sr||(Sr={}));var pv;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(pv||(pv={}));var Zy={};function $ne(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};Zy[e]=n}function fv(e){return Zy[e]}function Dne(e){delete Zy[e]}function k(e,t,n,r,a){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return En(t.inputNames[s.inputIndexStart],n,r,a);if(s.type==="tensors")return t.inputNames.slice(o,l).map(h=>En(h,n,r,a));let u=En(t.inputNames.slice(o)[0],n,r,a),c=u.dataSync();return s.type==="number"?c[0]:v.toNestedArray(u.shape,c)}let i=t.attrParams[e];return i&&i.value}function En(e,t,n,r){let[a,s]=Wn(e);if(r!=null){let o=r.getHashTableHandleByName(a);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[r0(a,o)]);return i!==void 0?t[r0(a,i)][s]:void 0}function One(e,t,n){return t[r0(e,n.currentContextId)]}function da(e,t){let[n,r]=Wn(e);return[r0(n,t&&t.currentContextId),r]}function r0(e,t){return t?`${e}-${t}`:e}function Wn(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function a0(e,t,n){let r=k("pad",e,t,n);if(r==="explicit"){r=k("explicitPaddings",e,t,n);let a=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)a[s][0]=r[s*2],a[s][1]=r[s*2+1];return a}return r}function pa(e){return e.kept?e:Rr(e)}var mv={};ze(mv,{json:()=>zne});var zne=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Av={};ze(Av,{json:()=>Pne});var Pne=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],yv={};ze(yv,{json:()=>Lne});var Lne=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],gv={};ze(gv,{json:()=>Wne});var Wne=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],xv={};ze(xv,{json:()=>Bne});var Bne=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],wv={};ze(wv,{json:()=>Vne});var Vne=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],_v={};ze(_v,{json:()=>Une});var Une=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],bv={};ze(bv,{json:()=>Hne});var Hne=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],vv={};ze(vv,{json:()=>jne});var jne=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]}],kv={};ze(kv,{json:()=>Gne});var Gne=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],Nv={};ze(Nv,{json:()=>qne});var qne=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Iv={};ze(Iv,{json:()=>Xne});var Xne=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Sv={};ze(Sv,{json:()=>Kne});var Kne=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],Tv={};ze(Tv,{json:()=>Zne});var Zne=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],Cv={};ze(Cv,{json:()=>Yne});var Yne=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],Ev={};ze(Ev,{json:()=>Jne});var Jne=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],Rv={};ze(Rv,{json:()=>Qne});var Qne=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],Mv=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[mv,Av,yv,gv,xv,wv,_v,Nv,kv,bv,Iv,Sv,Tv,Cv,Ev,Rv,vv],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,r)=>(n[r.tfOpName]=r,n),{})}transformGraph(e,t={}){let n=e.node,r=[],a=[],s=[],i=n.reduce((f,m)=>(f[m.name]=this.mapNode(m),m.op.startsWith("Placeholder")?r.push(f[m.name]):m.op==="Const"?a.push(f[m.name]):(m.input==null||m.input.length===0)&&s.push(f[m.name]),f),{}),o=[],l=[],u={},c={};t!=null&&(u=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));let h=Object.keys(i);h.forEach(f=>{let m=i[f];m.inputNames.forEach(A=>{let[y]=da(A);m.inputs.push(i[y]),i[y].children.push(m)})}),Object.keys(c).length===0?h.forEach(f=>{let m=i[f];m.children.length===0&&l.push(m)}):Object.keys(c).forEach(f=>{let[m]=da(f),A=i[m];A!=null&&(A.signatureKey=c[f],l.push(A))}),Object.keys(u).length>0?Object.keys(u).forEach(f=>{let[m]=da(f),A=i[m];A&&(A.signatureKey=u[f],o.push(A))}):o=r;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((f,m)=>(f[m.signature.name]=this.mapFunction(m),f),{}));let p={nodes:i,inputs:o,outputs:l,weights:a,placeholders:r,signature:t,functions:d};return s.length>0&&(p.initNodes=s),p}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=fv(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(r=>r.startsWith("^")?r.substr(1):r),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((r,a)=>(r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((r,a)=>{let s=a.type,i;switch(a.type){case"string":i=Yy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Yy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":i=s2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=s2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":i=Qy(e.attr,a.tfName,a.defaultValue||0),i===void 0&&!!a.tfDeprecatedName&&(i=Qy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":i=a2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=a2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":i=Jy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Jy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":i=o2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=o2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":i=r2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=r2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":i=i2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=i2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":i=t2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=t2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":i=n2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=n2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":i=Fv(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Fv(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${a.type} for op: ${e.op}`)}return r[a.name]={value:i,type:s},r},{})),n}mapFunction(e){let t=e.nodeDef,n=[],r=[],a={};t!=null&&(a=t.reduce((u,c)=>(u[c.name]=this.mapNode(c),c.op==="Const"&&r.push(u[c.name]),u),{}));let s=[],i=[];e.signature.inputArg.forEach(u=>{let[c]=da(u.name),h={name:c,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:e2(u.type),type:"dtype"}},children:[]};h.signatureKey=u.name,s.push(h),a[c]=h}),Object.keys(a).forEach(u=>{let c=a[u];c.inputNames.forEach(h=>{let[d]=da(h);c.inputs.push(a[d]),a[d].children.push(c)})});let o=e.ret;e.signature.outputArg.forEach(u=>{let[c,h]=da(o[u.name]),d=a[c];d!=null&&(d.defaultOutput=h,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:a,inputs:s,outputs:i,weights:r,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function ere(e){let t=J().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function $v(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):ere(e);return t?n:n.toLowerCase()}function Yy(e,t,n,r=!1){let a=e[t];return a!=null?$v(a.s,r):n}function Jy(e,t,n){let r=e[t];return r?r.b:n}function Qy(e,t,n){let r=e[t]||{},a=r.i!=null?r.i:r.f!=null?r.f:n;return typeof a=="number"?a:parseInt(a,10)}function e2(e){switch(typeof e=="string"&&(e=Sr[e]),e){case Sr.DT_FLOAT:return"float32";case Sr.DT_INT32:case Sr.DT_INT64:case Sr.DT_INT8:case Sr.DT_UINT8:return"int32";case Sr.DT_BOOL:return"bool";case Sr.DT_DOUBLE:return"float32";case Sr.DT_STRING:return"string";default:return null}}function Fv(e,t,n){let r=e[t];return r&&r.func?r.func.name:n}function t2(e,t,n){let r=e[t];return r&&r.type?e2(r.type):n}function n2(e,t,n){let r=e[t];return r&&r.list&&r.list.type?r.list.type.map(a=>e2(a)):n}function Dv(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function r2(e,t,n){let r=e[t];return r&&r.shape?Dv(r.shape):n}function a2(e,t,n){let r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map(a=>typeof a=="number"?a:parseInt(a,10)):n}function s2(e,t,n,r=!1){let a=e[t];return a&&a.list&&a.list.s?a.list.s.map(s=>$v(s,r)):n}function i2(e,t,n){let r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map(a=>Dv(a)):n}function o2(e,t,n){let r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var tre=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(r=>this.getInput(r)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((r,a)=>(r[a]=this.getAttr(a),r),{}))}getInput(e){return En(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return En(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return Qy(this.node.rawAttrs,e,t);if(n.s!=null)return Yy(this.node.rawAttrs,e,t);if(n.b!=null)return Jy(this.node.rawAttrs,e,t);if(n.shape!=null)return r2(this.node.rawAttrs,e,t);if(n.type!=null)return t2(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return a2(this.node.rawAttrs,e,t);if(n.list.s!=null)return s2(this.node.rawAttrs,e,t);if(n.list.shape!=null)return i2(this.node.rawAttrs,e,t);if(n.list.b!=null)return o2(this.node.rawAttrs,e,t);if(n.list.type!=null)return n2(this.node.rawAttrs,e,t)}return t}},nre=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[se(k("a",e,t,n),k("b",e,t,n))];case"AddN":return[Ma(k("tensors",e,t,n))];case"FloorMod":case"Mod":return[om(k("a",e,t,n),k("b",e,t,n))];case"Mul":return[P(k("a",e,t,n),k("b",e,t,n))];case"RealDiv":case"Div":return[ge(k("a",e,t,n),k("b",e,t,n))];case"DivNoNan":return[Yf(k("a",e,t,n),k("b",e,t,n))];case"FloorDiv":return[hd(k("a",e,t,n),k("b",e,t,n))];case"Sub":return[ye(k("a",e,t,n),k("b",e,t,n))];case"Minimum":return[fl(k("a",e,t,n),k("b",e,t,n))];case"Maximum":return[Dr(k("a",e,t,n),k("b",e,t,n))];case"Pow":return[sa(k("a",e,t,n),k("b",e,t,n))];case"SquaredDifference":return[Dd(k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},rre=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[zt(k("x",e,t,n))];case"Acos":return[Df(k("x",e,t,n))];case"Acosh":return[Of(k("x",e,t,n))];case"Asin":return[Pf(k("x",e,t,n))];case"Asinh":return[Lf(k("x",e,t,n))];case"Atan":return[Wf(k("x",e,t,n))];case"Atan2":return[Bf(k("x",e,t,n),k("y",e,t,n))];case"Atanh":return[Vf(k("x",e,t,n))];case"Ceil":return[Gf(k("x",e,t,n))];case"Complex":return[Ca(k("real",e,t,n),k("imag",e,t,n))];case"Cos":return[Vu(k("x",e,t,n))];case"Cosh":return[Ad(k("x",e,t,n))];case"Elu":return[cl(k("x",e,t,n))];case"Erf":return[Jf(k("x",e,t,n))];case"Exp":return[qn(k("x",e,t,n))];case"Expm1":return[Qf(k("x",e,t,n))];case"Floor":return[hl(k("x",e,t,n))];case"Log":return[Mn(k("x",e,t,n))];case"Log1p":return[wd(k("x",e,t,n))];case"Imag":return[gd(k("x",e,t,n))];case"Neg":return[vt(k("x",e,t,n))];case"Reciprocal":return[cm(k("x",e,t,n))];case"Real":return[Ku(k("x",e,t,n))];case"Relu":return[zr(k("x",e,t,n))];case"Round":return[hm(k("x",e,t,n))];case"Selu":return[Cd(k("x",e,t,n))];case"Sigmoid":return[Fn(k("x",e,t,n))];case"Sin":return[Ed(k("x",e,t,n))];case"Sign":return[pm(k("x",e,t,n))];case"Sinh":return[Rd(k("x",e,t,n))];case"Softplus":return[dl(k("x",e,t,n))];case"Sqrt":return[en(k("x",e,t,n))];case"Square":return[lt(k("x",e,t,n))];case"Tanh":return[ol(k("x",e,t,n))];case"Tan":return[Am(k("x",e,t,n))];case"ClipByValue":return[vn(k("x",e,t,n),k("clipValueMin",e,t,n),k("clipValueMax",e,t,n))];case"Relu6":return[Sd(k("x",e,t,n))];case"Rsqrt":return[Td(En(e.inputNames[0],t,n))];case"Prod":return[Nd(k("x",e,t,n),k("axes",e,t,n))];case"LeakyRelu":return[Hu(k("x",e,t,n),k("alpha",e,t,n))];case"Prelu":return[Xu(k("x",e,t,n),k("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function cr(e,t,n=""){if(!(typeof e=="number"||typeof t=="number")){v.assert(e.length===t.length,()=>n+` Shapes ${e} and ${t} must match`);for(let r=0;rn+` Shapes ${e} and ${t} must match`)}}}function Ov(e){return!(typeof e=="number"||e.some(t=>t<0))}function Oc(e,t,n){let r=l2(e,n),a=!Ov(r);if(a&&t.length===0)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(a&&t.forEach(s=>{r=l2(s.shape,r)}),!Ov(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function l2(e,t){if(typeof e=="number")return t;if(typeof t=="number")return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);let n=[];for(let r=0;r=0&&s>=0&&a!==s)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=a>=0?a:s}return n}var are=class{constructor(e,t,n,r,a,s,i){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=a,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=be(0),Gt(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),cr(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),n.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(n.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);n.tensor=t,Gt(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach((n,r)=>this.write(n,t[r]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let r=0;r=this.maxSize)throw new Error(`Max index must be < array size (${n} vs. ${this.maxSize})`);this.writeMany(e,sr(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let n=0,r=e.map(o=>(n+=o,n));if(n!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let a=n===0?0:t.size/n,s=[];B(()=>{t=G(t,[1,n,a]);for(let o=0;o{if(n!==a.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${a.dtype}`);cr(t,a.shape,"TensorList shape mismatch: "),Gt(a)}),this.idTensor=be(0),this.maxNumElements=r,Gt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new zc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);cr(e,this.elementShape,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,e);return B(()=>{let a=this.tensors.map(s=>G(s,r));return dn(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=Oc(this.elementShape,this.tensors,e),r=this.tensors.pop();return cr(r.shape,e,"TensorList shape mismatch: "),G(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(cr(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Gt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);cr(this.tensors[e].shape,t,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,t);return G(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);cr(this.elementShape,t.shape,"TensorList shape mismatch: "),Gt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);cr(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let r=Oc(this.elementShape,this.tensors,n);return e.length===0?yr([],[0].concat(r)):B(()=>{let a=e.map(s=>G(this.tensors[s],r));return dn(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);cr(this.elementShape,t,"TensorList shape mismatch: ");let n=Oc(this.elementShape,this.tensors,t);return this.size()===0?yr([],[0].concat(n)):B(()=>{let r=this.tensors.map(a=>G(a,n));return st(r,0)})}};function are(e,t,n){let r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let a=e.shape.slice(1);cr(a,t,"TensorList shape mismatch: ");let s=sr(e);return new zc(s,t,r)}function sre(e,t,n){return new zc([],e,t,n)}function ire(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let a=Math.max(...t);if(r!=null&&r!==-1&&a>=r)throw new Error(`Max index must be < array size (${a} vs. ${r})`);let s=new zc([],n,e.dtype,r),i=sr(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function ore(e,t,n){let r=0,a=t.map(c=>(r+=c,r));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let a=n===0?0:t.size/n,s=[];B(()=>{t=G(t,[1,n,a]);for(let o=0;o{if(n!==a.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${a.dtype}`);cr(t,a.shape,"TensorList shape mismatch: "),Gt(a)}),this.idTensor=be(0),this.maxNumElements=r,Gt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new zc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);cr(e,this.elementShape,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,e);return B(()=>{let a=this.tensors.map(s=>G(s,r));return dn(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=Oc(this.elementShape,this.tensors,e),r=this.tensors.pop();return cr(r.shape,e,"TensorList shape mismatch: "),G(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(cr(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Gt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);cr(this.tensors[e].shape,t,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,t);return G(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);cr(this.elementShape,t.shape,"TensorList shape mismatch: "),Gt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);cr(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let r=Oc(this.elementShape,this.tensors,n);return e.length===0?yr([],[0].concat(r)):B(()=>{let a=e.map(s=>G(this.tensors[s],r));return dn(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);cr(this.elementShape,t,"TensorList shape mismatch: ");let n=Oc(this.elementShape,this.tensors,t);return this.size()===0?yr([],[0].concat(n)):B(()=>{let r=this.tensors.map(a=>G(a,n));return st(r,0)})}};function sre(e,t,n){let r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let a=e.shape.slice(1);cr(a,t,"TensorList shape mismatch: ");let s=sr(e);return new zc(s,t,r)}function ire(e,t,n){return new zc([],e,t,n)}function ore(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let a=Math.max(...t);if(r!=null&&r!==-1&&a>=r)throw new Error(`Max index must be < array size (${a} vs. ${r})`);let s=new zc([],n,e.dtype,r),i=sr(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function lre(e,t,n){let r=0,a=t.map(c=>(r+=c,r));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${r}, and tensor's shape is: ${e.shape}`);let s=e.shape.slice(1),i=l2(s,n),o=r===0?0:e.size/r,l=B(()=>{let c=[];e=G(e,[1,r,o]);for(let h=0;h{switch(e.op){case"If":case"StatelessIf":{let r=k("thenBranch",e,t,n),a=k("elseBranch",e,t,n),s=k("cond",e,t,n),i=k("args",e,t,n);return(await s.data())[0]?n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let r=k("body",e,t,n),a=k("cond",e,t,n),s=k("args",e,t,n),i=await n.functionMap[a].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(c=>c.id),l=await i[0].data();i.forEach(c=>{!c.kept&&o.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;l[0];){let c=u;u=await n.functionMap[r].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);let h=u.map(p=>p.id);c.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()});let d=await n.functionMap[a].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()})}return u}case"LoopCond":{let r=k("pred",e,t,n);return[pa(r)]}case"Switch":{let r=k("pred",e,t,n),a=k("data",e,t,n);return a.kept||(a=pa(a)),(await r.data())[0]?[void 0,a]:[a,void 0]}case"Merge":{let r=e.inputNames.find(a=>En(a,t,n)!==void 0);if(r){let a=En(r,t,n);return[pa(a)]}return}case"Enter":{let r=k("frameName",e,t,n),a=k("tensor",e,t,n);return n.enterFrame(r),[pa(a)]}case"Exit":{let r=k("tensor",e,t,n);return n.exitFrame(),[pa(r)]}case"NextIteration":{let r=k("tensor",e,t,n);return n.nextIteration(),[pa(r)]}case"TensorArrayV3":{let r=k("size",e,t,n),a=k("dtype",e,t,n),s=k("elementShape",e,t,n),i=k("dynamicSize",e,t,n),o=k("clearAfterRead",e,t,n),l=k("identicalElementShapes",e,t,n),u=k("name",e,t,n),c=new rre(u,a,r,s,l,i,o);return n.addTensorArray(c),[c.idTensor,be(1)]}case"TensorArrayWriteV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.write(a,s),[i.idTensor]}case"TensorArrayReadV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n);return[n.getTensorArray(r.id).read(a)]}case"TensorArrayGatherV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("dtype",e,t,n);return[n.getTensorArray(r.id).gather(a,s)]}case"TensorArrayScatterV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.scatter(a,s),[i.idTensor]}case"TensorArrayConcatV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id),s=k("dtype",e,t,n);return[a.concat(s)]}case"TensorArraySplitV3":{let r=k("tensorArrayId",e,t,n),a=k("tensor",e,t,n),s=k("lengths",e,t,n),i=n.getTensorArray(r.id);return i.split(s,a),[i.idTensor]}case"TensorArraySizeV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return[be(a.size(),"int32")]}case"TensorArrayCloseV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return a.clearAndClose(),[a.idTensor]}case"TensorListSetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorList(r.id);return i.setItem(a,s),[i.idTensor]}case"TensorListGetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(a,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let r=k("indices",e,t,n),a=k("tensor",e,t,n),s=k("elementShape",e,t,n),i=k("numElements",e,t,n),o=ire(a,r,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let r=k("elementShape",e,t,n),a=k("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=k(s,e,t,n),o=sre(r,a,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let r=k("tensorListId",e,t,n),a=k("indices",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).gather(a,i,s)]}case"TensorListStack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=k("numElements",e,t,n);return[n.getTensorList(r.id).stack(a,s,i)]}case"TensorListFromTensor":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=are(r,a,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let r=k("tensorListId",e,t,n),a=n.getTensorList(r.id),s=k("dtype",e,t,n),i=k("elementShape",e,t,n);return[a.concat(s,i)]}case"TensorListPushBack":{let r=k("tensorListId",e,t,n),a=k("tensor",e,t,n),s=n.getTensorList(r.id);return s.pushBack(a),[s.idTensor]}case"TensorListPopBack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(a,s)]}case"TensorListSplit":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("lengths",e,t,n),i=ore(r,s,a);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Ov(e,t,n){let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=r==="fusedbatchnorm",l=k("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let u=k("strides",e,t,n),c=a0(e,t,n),h=k("dataFormat",e,t,n).toUpperCase(),d=k("dilations",e,t,n),[p,f]=k("args",e,t,n),m=k("leakyreluAlpha",e,t,n);return{stride:u,pad:c,dataFormat:h,dilations:d,biasArg:p,preluArg:f,activationFunc:a,leakyreluAlpha:m}}var ure=(e,t,n)=>{switch(e.op){case"Conv1D":{let r=k("stride",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilation",e,t,n);return[fd(k("x",e,t,n),k("filter",e,t,n),r,a,s,i)]}case"Conv2D":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[ra(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=Ov(e,t,n);return[La.conv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"FusedDepthwiseConv2dNative":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=Ov(e,t,n);return[La.depthwiseConv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let r=k("outputShape",e,t,n),a=k("strides",e,t,n),s=a0(e,t,n);return[md(k("x",e,t,n),k("filter",e,t,n),r,[a[1],a[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dilations",e,t,n),i=k("dataFormat",e,t,n).toUpperCase();return[ul(k("input",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,i,[s[1],s[2]])]}case"Conv3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[Xf(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2],r[3]],a,s,[i[1],i[2],i[3]])]}case"AvgPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Lu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Gu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPoolWithArgmax":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n),i=k("includeBatchInIndex",e,t,n),{result:o,indexes:l}=ux(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a,i);return[o,l]}case"AvgPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[jf(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"MaxPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[sm(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"Dilation2D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dilations",e,t,n),i=r[1],o=r[2],l=s[1],u=s[2];return[Zf(k("x",e,t,n),k("filter",e,t,n),[i,o],a,[l,u],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},cre=(e,t,n)=>{switch(e.op){case"Fill":{let r=k("shape",e,t,n),a=k("dtype",e,t,n),s=k("value",e,t,n);return[Uu(r,s,a)]}case"LinSpace":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("num",e,t,n);return[nx(r,a,s)]}case"Multinomial":{let r=k("logits",e,t,n),a=k("numSamples",e,t,n),s=k("seed",e,t,n);return[cx(r,a,s)]}case"OneHot":{let r=k("indices",e,t,n),a=k("depth",e,t,n),s=k("onValue",e,t,n),i=k("offValue",e,t,n);return[nl(r,a,s,i)]}case"Ones":return[Or(k("shape",e,t,n),k("dtype",e,t,n))];case"OnesLike":return[$n(k("x",e,t,n))];case"RandomUniform":return[ml(k("shape",e,t,n),k("minval",e,t,n),k("maxval",e,t,n),k("dtype",e,t,n))];case"Range":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("step",e,t,n);return[Id(r,a,s,k("dtype",e,t,n))]}case"TruncatedNormal":{let r=k("shape",e,t,n),a=k("mean",e,t,n),s=k("stdDev",e,t,n),i=k("seed",e,t,n);return[Od(r,a,s,k("dtype",e,t,n),i)]}case"Zeros":return[Et(k("shape",e,t,n),k("dtype",e,t,n))];case"ZerosLike":return[He(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function u2(e,t,n){let r=k("boxes",e,t,n),a=k("scores",e,t,n),s=k("maxOutputSize",e,t,n),i=k("iouThreshold",e,t,n),o=k("scoreThreshold",e,t,n),l=k("softNmsSigma",e,t,n);return{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var hre=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=u2(e,t,n),u=await Je.nonMaxSuppressionWithScoreAsync(r,a,s,i,o,l);return[u.selectedIndices,u.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n),l=k("padToMaxOutputSize",e,t,n),u=await Je.nonMaxSuppressionPaddedAsync(r,a,s,i,o,l);return[u.selectedIndices,u.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n);return[await Je.nonMaxSuppressionAsync(r,a,s,i,o)]}case"Where":{let r=me(k("condition",e,t,n),"bool"),a=[await xm(r)];return r.dispose(),a}case"ListDiff":return px(k("x",e,t,n),k("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},dre=(e,t,n)=>{switch(e.op){case"TopKV2":{let r=k("x",e,t,n),a=k("k",e,t,n),s=k("sorted",e,t,n),i=ym(r,a,s);return[i.values,i.indices]}case"Unique":{let r=k("x",e,t,n),a=zd(r);return[a.values,a.indices]}case"UniqueV2":{let r=k("x",e,t,n),a=k("axis",e,t,n),s=zd(r,a);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},pre=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let r=k("default",e,t,n);return[En(e.name,t,n)||r];case"Placeholder":return[En(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let u=k("x",e,t,n);return[pa(u)]}case"IdentityN":return k("x",e,t,n).map(u=>pa(u));case"Snapshot":let a=k("x",e,t,n);return[pa(a)];case"Shape":return[on(k("x",e,t,n).shape,"int32")];case"ShapeN":return k("x",e,t,n).map(u=>on(u.shape));case"Size":return[be(k("x",e,t,n).size,"int32")];case"Rank":return[be(k("x",e,t,n).rank,"int32")];case"NoOp":return[be(1)];case"Print":let s=k("x",e,t,n),i=k("data",e,t,n),o=k("message",e,t,n),l=k("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let u=0;ue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return be(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(r=>r.dispose()),this.tensorMap.clear(),B(()=>{let r=sr(t),a=n.length,s=r.length;v.assert(a===s,()=>`The number of elements doesn't match, keys has ${a} elements, the values has ${s} elements.`);for(let i=0;i{let r=[];for(let a=0;a{switch(e.op){case"HashTable":case"HashTableV2":{let a=k("keyDType",e,t,n),s=k("valueDType",e,t,n),i=new fre(a,s);return r.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("values",e,t,n);return[await r.getHashTableById(a.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("defaultValue",e,t,n);return[await r.getHashTableById(a.id).find(s,i)]}case"LookupTableSize":case"LookupTableSizeV2":{let a=k("tableHandle",e,t,n,r);return[r.getHashTableById(a.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Are=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeBilinear(r,[a[0],a[1]],s,i)]}case"ResizeNearestNeighbor":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeNearestNeighbor(r,[a[0],a[1]],s,i)]}case"CropAndResize":{let r=k("image",e,t,n),a=k("boxes",e,t,n),s=k("boxInd",e,t,n),i=k("cropSize",e,t,n),o=k("method",e,t,n),l=k("extrapolationValue",e,t,n);return[Je.cropAndResize(r,a,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},yre=(e,t,n)=>{switch(e.op){case"Equal":return[Da(k("a",e,t,n),k("b",e,t,n))];case"NotEqual":return[di(k("a",e,t,n),k("b",e,t,n))];case"Greater":return[rr(k("a",e,t,n),k("b",e,t,n))];case"GreaterEqual":return[za(k("a",e,t,n),k("b",e,t,n))];case"Less":return[xd(k("a",e,t,n),k("b",e,t,n))];case"LessEqual":return[ci(k("a",e,t,n),k("b",e,t,n))];case"LogicalAnd":return[ar(k("a",e,t,n),k("b",e,t,n))];case"LogicalNot":return[ju(k("a",e,t,n))];case"LogicalOr":return[vd(k("a",e,t,n),k("b",e,t,n))];case"Select":case"SelectV2":return[kn(k("condition",e,t,n),k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},gre=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[Ge(k("a",e,t,n),k("b",e,t,n),k("transposeA",e,t,n),k("transposeB",e,t,n))];case"Transpose":return[at(k("x",e,t,n),k("perm",e,t,n))];case"_FusedMatMul":let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=k("numArgs",e,t,n),l=k("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[u,c]=k("args",e,t,n);return[La.matMul({a:k("a",e,t,n),b:k("b",e,t,n),transposeA:k("transposeA",e,t,n),transposeB:k("transposeB",e,t,n),bias:u,activation:a,preluActivationWeights:c,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},xre=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"FusedBatchNormV3":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"LRN":return[tm(k("x",e,t,n),k("radius",e,t,n),k("bias",e,t,n),k("alpha",e,t,n),k("beta",e,t,n))];case"Softmax":return[Yu(k("x",e,t,n))];case"LogSoftmax":return[bd(k("x",e,t,n))];case"SparseToDense":return[wm(k("sparseIndices",e,t,n),k("outputShape",e,t,n),k("sparseValues",e,t,n),k("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},wre=(e,t,n)=>{switch(e.op){case"Max":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Xn(k("x",e,t,n),i,o)]}case"Mean":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[kt(k("x",e,t,n),i,o)]}case"Min":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[pl(k("x",e,t,n),i,o)]}case"Sum":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Te(k("x",e,t,n),i,o)]}case"All":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[dd(k("x",e,t,n),i,o)]}case"Any":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Ou(k("x",e,t,n),i,o)]}case"ArgMax":{let i=k("axis",e,t,n);return[zu(k("x",e,t,n),i)]}case"ArgMin":{let i=k("axis",e,t,n);return[zf(k("x",e,t,n),i)]}case"Prod":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Nd(k("x",e,t,n),i,o)]}case"Cumsum":{let i=k("axis",e,t,n),o=k("exclusive",e,t,n),l=k("reverse",e,t,n);return[yd(k("x",e,t,n),i,o,l)]}case"Bincount":let r=k("x",e,t,n),a=k("weights",e,t,n),s=k("size",e,t,n);return[G5(r,a,s)];case"DenseBincount":{let i=k("x",e,t,n),o=k("weights",e,t,n),l=k("size",e,t,n),u=k("binaryOutput",e,t,n);return[Y5(i,o,l,u)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},_re=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let r=k("n",e,t,n),a=k("axis",e,t,n),s=k("tensors",e,t,n);return s=s.slice(0,r),[st(s,a)]}case"Gather":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[ui(r,me(a,"int32"),0)]}case"GatherV2":{let r=k("axis",e,t,n),a=k("batchDims",e,t,n),s=k("x",e,t,n),i=k("indices",e,t,n);return[ui(s,me(i,"int32"),r,a)]}case"Reverse":{let r=k("dims",e,t,n),a=[];for(let i=0;i{let r=k("axis",e,t,n),a=k("tensors",e,t,n),s=a[0].shape,i=Pa(a[0]).shape,o=a.map(l=>{let u=v.arraysEqual(l.shape,s);if(!u&&!v.arraysEqual(Pa(l).shape,i))throw new Error("the input tensors shape does not match");return u?l:G(l,s)});return[dn(o,r)]});case"Unpack":{let r=k("axis",e,t,n),a=k("tensor",e,t,n);return sr(a,r)}case"Tile":{let r=k("reps",e,t,n);return[Oa(k("x",e,t,n),r)]}case"Split":case"SplitV":{let r=k("axis",e,t,n),a=k("numOrSizeSplits",e,t,n),s=k("x",e,t,n);return Lt(s,a,r)}case"ScatterNd":{let r=k("indices",e,t,n),a=k("values",e,t,n),s=k("shape",e,t,n);return[yx(r,a,s)]}case"GatherNd":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[gx(r,a)]}case"SparseToDense":{let r=k("sparseIndices",e,t,n),a=k("outputShape",e,t,n),s=k("sparseValues",e,t,n),i=k("defaultValue",e,t,n);return[wm(r,s,a,s.dtype===i.dtype?i:me(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},bre=(e,t,n)=>{switch(e.op){case"FFT":return[Ju(k("x",e,t,n))];case"IFFT":return[Al(k("x",e,t,n))];case"RFFT":return[Qu(k("x",e,t,n))];case"IRFFT":return[$d(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},vre=(e,t,n)=>{switch(e.op){case"Cast":return[me(k("x",e,t,n),k("dtype",e,t,n))];case"ExpandDims":{let r=k("axis",e,t,n);return[hn(k("x",e,t,n),r)]}case"Squeeze":{let r=k("axis",e,t,n);return[Pa(k("x",e,t,n),r)]}case"Reshape":return[G(k("x",e,t,n),k("shape",e,t,n))];case"MirrorPad":return[im(k("x",e,t,n),k("padding",e,t,n),k("mode",e,t,n))];case"PadV2":case"Pad":return[aa(k("x",e,t,n),k("padding",e,t,n),k("constantValue",e,t,n))];case"SpaceToBatchND":{let r=k("blockShape",e,t,n),a=k("paddings",e,t,n);return[qu(k("x",e,t,n),r,a)]}case"BatchToSpaceND":{let r=k("blockShape",e,t,n),a=k("crops",e,t,n);return[Wu(k("x",e,t,n),r,a)]}case"DepthToSpace":{let r=k("blockSize",e,t,n),a=k("dataFormat",e,t,n).toUpperCase();return[Kf(k("x",e,t,n),r,a)]}case"BroadcastTo":return[Bu(k("x",e,t,n),k("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function zv(e,t,n,r){let a=((s,i,o)=>{switch(s.category){case"arithmetic":return B(()=>tre(s,i,o));case"basic_math":return B(()=>nre(s,i,o));case"control":return lre(s,i,o);case"convolution":return B(()=>ure(s,i,o));case"creation":return B(()=>cre(s,i,o));case"dynamic":return hre(s,i,o);case"evaluation":return B(()=>dre(s,i,o));case"image":return B(()=>Are(s,i,o));case"graph":return B(()=>pre(s,i,o));case"logical":return B(()=>yre(s,i,o));case"matrices":return B(()=>gre(s,i,o));case"normalization":return B(()=>xre(s,i,o));case"reduction":return B(()=>wre(s,i,o));case"slice_join":return B(()=>_re(s,i,o));case"spectral":return B(()=>bre(s,i,o));case"transformation":return B(()=>vre(s,i,o));case"hash_table":return mre(s,i,o,r);case"custom":let l=pv(s.op);if(l&&l.customExecutor)return l.customExecutor(new ere(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(a)?a.then(s=>[].concat(s)):[].concat(a)}var Pv=class{constructor(e={},t={},n={},r={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function Wv(e,t,n,r){let a=new Set,s=[],i=null,o=null,l=new Set,u=Object.keys(e).map(d=>Wn(d)[0]),c=[];r!=null&&(c=r.map(d=>Wn(d.name)[0]));let h=[...t];for(;h.length>0;){let d=h.pop();if((Lv(d)||kre(d)||Nre(d))&&i==null&&(i=d,o=i.children.map(p=>p.name).filter(p=>a.has(p))),a.add(d.name),n[d.name]==null&&u.indexOf(d.name)===-1&&c.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(p=>{l.has(p.name)||(l.add(p.name),h.push(p))})}}return{inputs:e,outputs:t,usedNodes:a,missingInputs:s,dynamicNode:i,syncInputs:o}}function Ire(e,t,n){let{usedNodes:r,inputs:a}=n,s=[],i=Object.keys(a).map(c=>Wn(c)[0]).map(c=>e.nodes[c]),o=e.initNodes;i.forEach(c=>{r.has(c.name)&&s.push(c)}),e.weights.forEach(c=>{r.has(c.name)&&s.push(c)}),o!=null&&o.forEach(c=>{r.has(c.name)&&s.push(c)});let l=new Set,u=[];for(;s.length>0;){let c=s.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(h=>{!l.has(h.name)&&r.has(h.name)&&h.inputs.every(d=>l.has(d.name))&&s.push(h)})}return u}var Sre=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],Tre=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],Cre=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function Lv(e){return Sre.indexOf(e.op)>=0}function kre(e){return Tre.indexOf(e.op)>=0}function Nre(e){return Cre.indexOf(e.op)>=0}var c2=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new c2(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(r=>r.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(a=>a.name).sort(),r=t.map(a=>a.name).sort();return n.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)}compile(e,t){let n=Wv(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:a,syncInputs:s}=n;if(a!=null)throw new Error(`This execution contains the node '${a.name}', which has the dynamic op '${a.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(r.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${r}]`)}return Ire(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let r=n.map(c=>this.graph.nodes[Wn(c)[0]]),a=t.map(c=>Wn(c)[0]),s=a.map(c=>this.graph.nodes[c]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(r,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},u={};return B(()=>{let c=new Pv(this.weightMap,l,u,this.functionExecutorMap),h=Object.assign({},this.weightMap);Object.keys(e).forEach(f=>{let[m,A]=Wn(f),y=[];y[A]=e[f],h[m]=y});let d=this.getFrozenTensorIds(h),p={};for(let f=0;fEn(f,h,c))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(r=>r.id)));return new Set(t)}checkTensorForDisposal(e,t,n,r,a,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=Dne(o.name,n,r);l!=null&&l.forEach(u=>{if(u&&!a.has(u.id)){let c=i[u.id];c===1?(u.dispose(),delete i[u.id]):c!=null&&i[u.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,r={},a={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new Pv(this.weightMap,r,a,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(h=>En(h,i,s)),l=o.map(h=>h.id),u=Object.keys(e).map(h=>e[h].id),c=new Set([...l,...u,...this.weightIds]);return Object.keys(i).forEach(h=>{i[h].forEach(d=>{d&&!d.isDisposed&&!c.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(c),o}async executeFunctionAsync(e,t,n){let r=e.reduce((a,s,i)=>(a[this.inputs[i].name]=s,a),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){let a=Object.keys(e),s=a.map(g=>this.graph.nodes[Wn(g)[0]]),i=n.map(g=>Wn(g)[0]),o=i.map(g=>this.graph.nodes[g]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:u,dynamicNode:c,syncInputs:h}=Wv(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(g=>({node:g,contexts:t.currentContext})),p=Object.assign({},this.weightMap);Object.keys(e).forEach(g=>{let[_,b]=Wn(g),w=[];w[b]=e[g],p[_]=w});let f={},m=this.getFrozenTensorIds(p),A={};for(;d.length>0;){let g=this.processStack(s,d,t,p,A,m,i,f,l);await Promise.all(g)}c==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(g=>!Lv(g)&&!En(g.name,p,t)).map(g=>g.name);if(y.length>0){let g="";throw c!=null&&(g=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${h}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${a}]. Consider providing the following inputs: [${u}]. ${g}`)}return p}processStack(e,t,n,r,a,s,i,o,l){let u=[];for(;t.length>0;){let c=t.pop();n.currentContext=c.contexts;let h="";if(c.node.op==="Enter"&&k("isConstant",c.node,r,n)&&([h]=da(c.node.name,n)),r[c.node.name]==null){let d=zv(c.node,r,n,this._resourceManager);h||([h]=da(c.node.name,n));let p=n.currentContext;v.isPromise(d)?u.push(d.then(f=>(r[h]=f,n.currentContext=p,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l),f))):(r[h]=d,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l))}else this.processChildNodes(c.node,t,n,r,a,l)}return u}processChildNodes(e,t,n,r,a,s){e.children.forEach(i=>{let[o]=da(i.name,n);a[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[r]=Wn(t),a=this.graph.nodes[r];if(a.attrParams.shape&&a.attrParams.shape.value){let s=a.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);v.assert(i,()=>`The shape of dict['${a.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}a.attrParams.dtype&&a.attrParams.dtype.value&&v.assert(n.dtype===a.attrParams.dtype.value,()=>`The dtype of dict['${a.name}'] provided in model.execute(dict) must be ${a.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let r=this._signature.inputs[n];t[r.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[r]=Wn(n);return this.graph.nodes[r]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Wn(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},Ere=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},Rre="?tfjs-format=file",Fre="model.json",Bv=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new Ere}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=bn.browserHTTPRequest(e,this.loadOptions);else{let t=bn.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(bn.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let r=bn.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new c2(Fv.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let a=Fv.Instance.transformGraph(e.modelInitializer);this.initializer=new c2(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=bn.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof Ue)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,r)=>(t[n]=e[r],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Ft(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${Fre}${Rre}`);let n=new Bv(e,t);return await n.load(),n}var Mre="3.3.0",Vv={};ze(Vv,{CSVDataset:()=>Hv,Dataset:()=>Vl,FileDataSource:()=>jv,TextLineDataset:()=>Uv,URLDataSource:()=>Gv,array:()=>$re,csv:()=>Ore,func:()=>zre,generator:()=>Pre,microphone:()=>Wre,version_data:()=>Bre,webcam:()=>Lre,zip:()=>Dre});var Vre=qi(Fg()),Ure=qi(Fg());function Hre(e,t){return s0(e,t)}function s0(e,t,n=new Map,r=new Set){if(e==null)return null;if(r.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(a.recurse)if(Ul(e)){let s=Array.isArray(e)?[]:{};r.add(e);for(let i in e){let o=e[i],l=s0(o,t,n,r);s[i]=l}return r.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,a.value),a.value}function jre(e,t=Xv){return qv(e,t)}function qv(e,t,n=new Set){let r=e[0];if(n.has(r))throw new Error("Circular references are not supported.");let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(a.recurse)if(Ul(r)){let s=Array.isArray(r)?[]:{};n.add(r);for(let i in r){let o=e.map(u=>u[i]),l=qv(o,t,n);s[i]=l}return n.delete(r),s}else throw new Error(`Can't recurse into non-iterable type: ${r}`);else return a.value}function Xv(e){return e===null?null:Ul(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function Kv(e,t){let n=new Map;s0(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let s=await a;n.set(r,s)}}return s0(e,t,n)}function Ul(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof Ue))}function qre(e){return e==null||Gre(e)||Array.isArray(e)||typeof e=="object"&&e instanceof Ue||v.isTypedArray(e)}function Gre(e){return e===null||typeof e!="object"&&typeof e!="function"}function Kre(e){return Hre(e,Xre)}function Xre(e){return e instanceof Ue?{value:e.clone(),recurse:!1}:Ul(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var Zv=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},h2=class extends Zv{constructor(){super(h2.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let r=0;rt===!0)}rowMajorBatch(e,t=!0){return new aae(this,e,t)}columnMajorBatch(e,t=!0,n=Xv){return this.rowMajorBatch(e,t).map(r=>jre(r,n))}concatenate(e,t){return new Jv(Yv([this,e]),t)}take(e){return e<0||e==null?this:new rae(this,e)}skip(e){return e<0||e==null?this:new nae(this,e)}prefetch(e){return new e6(this,e)}shuffle(e,t){return new uae(this,e,t)}serial(){return new tae(this)}},Zre=class extends Zt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:Kre(e),done:!1}}},Yre=class extends Zt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},tae=class extends Zt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},nae=class extends Zt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},aae=class extends Zt{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},sae=class extends Zt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Ee(e.value)}}},iae=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},oae=class extends Zt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},Qv=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=await this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},p2=class extends Zt{constructor(){super();this.outputQueue=new h2,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},lae=class extends p2{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return!0}},Jv=class extends Zt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},Za;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(Za||(Za={}));var Qre=class extends Zt{constructor(e,t=Za.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function r(s){return s instanceof Zt?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let a=await Kv(this.iterators,r);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case Za.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case Za.SHORTEST:return{value:null,done:!0};case Za.LONGEST:default:}return this.count++,{value:a,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},e6=class extends Zt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new Zv(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},uae=class extends e6{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=Ure.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},Vl=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is - ${e}`);let r;return this.size===Infinity||this.size==null?r=this.size:t?r=Math.ceil(this.size/e):r=Math.floor(this.size/e),Bn(async()=>(await n.iterator()).columnMajorBatch(e,t,cae),r)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,Bn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,Bn(async()=>(await t.iterator()).filter(r=>B(()=>e(r))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return Bn(async()=>(await t.iterator()).map(n=>B(()=>e(n))),this.size)}mapAsync(e){let t=this;return Bn(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return Bn(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,Bn(async()=>{let r=d2(async()=>({value:await t.iterator(),done:!1}));return Jre(r.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let r=this,a=Vre.alea(t||v.now().toString());return Bn(async()=>{let s=a.int32();return n&&(s+=a.int32()),(await r.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,Bn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Vl.MAX_BUFFER_SIZE=1e4;function Bn(e,t=null){return new class extends Vl{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function $re(e){return Bn(async()=>Yv(e),e.length)}function Dre(e){if(!Ul(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await Kv(e,r=>{if(r instanceof Vl)return{value:r.iterator(),recurse:!1};if(Ul(r))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return eae(n,Za.SHORTEST)},t)}function cae(e){if(e===null)return null;let t=e[0];return qre(t)?{value:hae(e),recurse:!1}:{value:null,recurse:!0}}function hae(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof Ue?dn(e):yr(e)}var Uv=class extends Vl{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` -`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},i0='"',Pc=Symbol("out"),t6=Symbol("field"),o0=Symbol("quote"),f2=Symbol("quoteafterquote"),n6=Symbol("quoteinquote"),Hv=class extends Vl{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new Uv(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((r,a)=>(r[a]=r[a]+1||1,r),{}),n=Object.keys(t).filter(r=>t[r]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let r of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(r)===-1)throw new Error('The key "'+r+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},r={};for(let a=0;a14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(J().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new r6(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let r=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(r,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let r=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(r,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(r=>{let a=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&r({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(a),r({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((r,a)=>n.set(r,a*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),yr(n,t)}},a6=class extends Zt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=on([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,r=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,a=(1-n)/2,s=(1-r)/2,i=a+n,o=r+s;this.cropBox=Nn([s,a,o,i],[1,4])}else this.cropBox=Nn([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(J().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new a6(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=rl.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return B(()=>{let t=hn(me(e,"float32"),0),n;n=Je.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let r=n.shape;return G(n,r.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},s6=class{},i6=class extends Zt{split(e){return new dae(this,e)}},dae=class extends i6{constructor(e,t){super();this.upstream=e,this.impl=new pae(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},pae=class extends p2{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},mae=class extends Zt{decodeUTF8(){return new fae(this)}},fae=class extends i6{constructor(e){super();this.upstream=e,this.impl=new Aae(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Aae=class extends p2{constructor(e){super();if(this.upstream=e,J().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=tk();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return J().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},o6=class extends mae{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(J().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let r=new FileReader;r.onload=s=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},r.onabort=s=>t(new Error("Aborted")),r.onerror=s=>t(new Error(s.type));let a=this.file.slice(this.offset,n);r.readAsArrayBuffer(a)}this.offset=n}),done:!1}}};async function gae(e,t={}){let n,r;typeof e=="string"?n=e:(n=e.url,r=yae(e));let a=await v.fetch(n,r);if(a.ok){let s=new Uint8Array(await a.arrayBuffer());return new o6(s,t)}else throw new Error(a.statusText)}var yae=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function l6(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var jv=class extends s6{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(l6(this.input)&&J().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new o6(this.input,this.options)}},Gv=class extends s6{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return l6(this.url)?new jv(this.url,this.fileOptions).iterator():gae(this.url,this.fileOptions)}};function Ore(e,t={}){return new Hv(new Gv(e),t)}function zre(e){let t=d2(e);return Bn(async()=>t)}function Pre(e){return Bn(async()=>{let t=await e();return d2(()=>t.next())})}async function Lre(e,t){return a6.create(e,t)}async function Wre(e){return r6.create(e)}var Bre="3.3.0",xae={tfjs:nk,"tfjs-core":rk,"tfjs-data":ak,"tfjs-layers":sk,"tfjs-converter":ik,"tfjs-backend-cpu":lw,"tfjs-backend-webgl":E_,"tfjs-backend-wasm":w3};var Vn={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function u6(){if(!$f(Vn.name)){Ce("backend registration:",Vn.name);try{Vn.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Vn.width,Vn.height):document.createElement("canvas")}catch(e){Ce("error: cannot create canvas:",e);return}try{Vn.gl=Vn.canvas.getContext("webgl2",Vn.webGLattr)}catch(e){Ce("error: cannot get WebGL2 context:",e);return}try{sp(2,Vn.gl)}catch(e){Ce("error: cannot set WebGL2 context:",e);return}try{let e=new up(Vn.gl);sl(Vn.name,()=>new El(e),Vn.priority)}catch(e){Ce("error: cannot register WebGL backend:",e);return}try{Yo("webgl").forEach(t=>{let n={...t,backendName:Vn.name};ni(n)})}catch(e){Ce("error: cannot update WebGL backend registration:",e);return}try{fr.set("WEBGL_VERSION",2)}catch(e){Ce("error: cannot set WebGL backend flags:",e);return}Ce("backend registered:",Vn.name)}}var c6=6;function wae(e){let t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let r=0;r({startEndTensor:e,startPoint:Re(e,[0,0],[-1,2]),endPoint:Re(e,[0,2],[-1,2])});function bae(e,t,n){let r=Re(e,[0,1],[-1,2]),a=se(r,t),s=Re(e,[0,3],[-1,2]),i=ge(s,n),o=ge(a,n),l=ge(i,2),u=ye(o,l),c=se(o,l),h=P(u,n),d=P(c,n);return ll([h,d],1)}var h6=class{constructor(t,n){this.model=t,this.anchorsData=wae(t.inputs[0].shape[1]),this.anchors=Nn(this.anchorsData),this.inputSize=t.inputs[0].shape[2],this.config=n}async getBoundingBoxes(t){if(!t||t.isDisposedInternal||t.shape.length!==4||t.shape[1]<1||t.shape[2]<1)return null;let[n,r,a]=B(()=>{let d=t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),p=this.model.predict(d),f;if(Array.isArray(p)){let g=p.sort((x,I)=>x.size-I.size),_=st([g[0],g[2]],2),b=st([g[1],g[3]],2);f=st([b,_],1).squeeze(0)}else f=p.squeeze();let m=bae(f,this.anchors,[this.inputSize,this.inputSize]),A=Re(f,[0,0],[-1,1]),y=Fn(A).squeeze();return[f,m,y]}),s=await Je.nonMaxSuppressionAsync(r,a,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),i=s.arraySync();s.dispose();let l=i.map(h=>Re(r,[h,0],[1,-1])).map(h=>{let d=h.arraySync();return h.dispose(),d}),u=a.dataSync(),c=[];for(let h=0;hthis.config.face.detector.minConfidence){let f=_ae(l[h]),m=this.anchorsData[d],A=B(()=>Re(n,[d,c6-1],[1,-1]).squeeze().reshape([c6,-1]));c.push({box:f,landmarks:A,anchor:m,confidence:p})}}return n.dispose(),r.dispose(),a.dispose(),{boxes:c,scaleFactor:[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]}}};async function d6(e){let t=await Ft(e.face.detector.modelPath,{fromTFHub:e.face.detector.modelPath.includes("tfhub.dev")}),n=new h6(t,e);return e.debug&&Ce(`load model: ${e.face.detector.modelPath.match(/\/(.*)\./)[1]}`),n}function p6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:n,endPoint:r}}function Lc(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Hl(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function jl(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function l0(e,t=1.5){let n=Hl(e),r=Lc(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}function u0(e){let t=Hl(e),n=Lc(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}var c0=[[1,0,0],[0,1,0],[0,0,1]];function vae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function m2(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return vae(n)}function f6(e,t){return[[1,0,e],[0,1,t],[0,0,1]]}function Ya(e,t){let n=0;for(let r=0;ry2[e]),Yce=Iae.map(e=>y2[e]),Jce=Sae.map(e=>y2[e]);var g2=Gr.leftEyeLower0,x2=Gr.rightEyeLower0,Gl={leftBounds:[g2[0],g2[g2.length-1]],rightBounds:[x2[0],x2[x2.length-1]]},d0={count:468,mouth:13,symmetryLine:[13,Gr.midwayBetweenEyes[0]]},g6={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},ql={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function p0(e,t,n,r){for(let a=0;a[s[0]/this.meshSize*(h[0]-this.meshSize/2),s[1]/this.meshSize*(h[1]-this.meshSize/2),h[2]]),o=r!==0?h0(r,[0,0]):c0,l=r!==0?i.map(h=>[...y6(h,o),h[2]]):i,u=r!==0?A6(a):c0,c=[...Hl({startPoint:n.startPoint,endPoint:n.endPoint}),1];return l.map(h=>[h[0]+Ya(c,u[0]),h[1]+Ya(c,u[1]),h[2]])}getLeftToRightEyeDepthDifference(t){let n=t[Gl.leftBounds[0]][2],r=t[Gl.rightBounds[0]][2];return n-r}getEyeBox(t,n,r,a,s=!1){let i=u0(l0(this.calculateLandmarksBoundingBox([t[r],t[a]]),this.irisEnlarge)),o=Lc(i),l=Je.cropAndResize(n,[[i.startPoint[1]/this.meshSize,i.startPoint[0]/this.meshSize,i.endPoint[1]/this.meshSize,i.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return s&&fr.flags.IS_BROWSER&&(l=Je.flipLeftRight(l)),{box:i,boxSize:o,crop:l}}getEyeCoords(t,n,r,a=!1){let s=[];for(let i=0;i{let u=i;return l===2?u=a:l===4&&(u=s),[o[0],o[1],u]})}async predict(t,n){let r=!1,a;if((this.skipped===0||this.skipped>n.face.detector.skipFrames||!n.face.mesh.enabled||!n.videoOptimized)&&(a=await this.boundingBoxDetector.getBoundingBoxes(t),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.boxes&&(!n.face.mesh.enabled||a.boxes.length!==this.detectedFaces&&this.detectedFaces!==n.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let i of a.boxes)this.storedBoxes.push({startPoint:i.box.startPoint.dataSync(),endPoint:i.box.endPoint.dataSync(),landmarks:i.landmarks,confidence:i.confidence});this.storedBoxes.length>0&&(r=!0)}if(n.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),r){if(!a||!a.boxes||a.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{i.box.startPoint.dispose(),i.box.endPoint.dispose(),i.landmarks.dispose()});let s=B(()=>this.storedBoxes.map((i,o)=>{let l=i.confidence,u,c=0,h;if(n.face.detector.rotation&&n.face.mesh.enabled&&fr.flags.IS_BROWSER){let[w,x]=i.landmarks.length>=d0.count?d0.symmetryLine:g6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.boxSize,this.boxSize]).div(255)}else{h=c0;let w=t.clone();n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.boxSize,this.boxSize]).div(255)}if(!n.face.mesh.enabled)return{coords:null,box:i,faceConfidence:null,boxConfidence:i.confidence,confidence:i.confidence,image:u};let[,d,p]=this.meshDetector.predict(u),f=d.dataSync()[0];if(f=d0.count?d0.symmetryLine:g6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255)}let _={coords:g,box:i,faceConfidence:f,boxConfidence:l,image:u,rawCoords:A},b=u0(i);return this.storedBoxes[o]={...b,landmarks:y,confidence:i.confidence,faceConfidence:f},_}));return s=s.filter(i=>i!==null),n.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(i=>i.faceConfidence>n.face.detector.minConfidence)),this.detectedFaces=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s,landmarks:t}}};var Ag=Ah(w6());var v2={};pr(v2,{load:()=>k2,predict:()=>N2});var b2={};function qr(e,t){if(!t||!t.kernels)return;let n=5,r=t.kernels.filter(o=>o.kernelTimeMs>0).reduce((o,l)=>o+=l.kernelTimeMs,0),a=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.kernelTimeMs>0).sort((o,l)=>l.kernelTimeMs-o.kernelTimeMs),s=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.totalBytesSnapshot>0).sort((o,l)=>l.totalBytesSnapshot-o.totalBytesSnapshot);a.length>n&&(a.length=n),s.length>n&&(s.length=n);let i={newBytes:t.newBytes,newTensors:t.newTensors,peakBytes:t.peakBytes,numKernelOps:t.kernels.length,timeKernelOps:r,slowestKernelOps:a,largestKernelOps:s};b2[e]=i,Ce("Human profiler",e,i)}var Ja,f0={age:0},m0=Number.MAX_SAFE_INTEGER;async function k2(e){return Ja||(Ja=await Ft(e.face.age.modelPath),e.debug&&Ce(`load model: ${e.face.age.modelPath.match(/\/(.*)\./)[1]}`)),Ja}async function N2(e,t){return Ja?m00?(m0++,f0):(t.videoOptimized?m0=0:m0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Ja.inputs[0].shape[2],Ja.inputs[0].shape[1]],!1),a=P(r,[255]);Ee(r);let s,i={age:0};if(!t.profile)t.face.age.enabled&&(s=await Ja.predict(a));else{let o=t.face.age.enabled?await gr(()=>Ja.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("age",o)}if(a.dispose(),s){let o=s.dataSync();i.age=Math.trunc(10*o[0])/10}s.dispose(),f0=i,n(i)})):null}var I2={};pr(I2,{load:()=>E2,predict:()=>R2});var fa,S2={gender:""},A0=Number.MAX_SAFE_INTEGER,T2=!1,C2=[.2989,.587,.114];async function E2(e){return fa||(fa=await Ft(e.face.gender.modelPath),T2=fa.inputs[0].shape[3]===1,e.debug&&Ce(`load model: ${e.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),fa}async function R2(e,t){return fa?A0{let r=Je.resizeBilinear(e,[fa.inputs[0].shape[2],fa.inputs[0].shape[1]],!1),a;T2?a=B(()=>{let[o,l,u]=Lt(r,3,3),c=P(o,C2[0]),h=P(l,C2[1]),d=P(u,C2[2]);return Ma([c,h,d]).sub(.5).mul(2)}):a=P(r,[255]),Ee(r);let s,i={gender:"",confidence:0};if(!t.profile)t.face.gender.enabled&&(s=await fa.predict(a));else{let o=t.face.gender.enabled?await gr(()=>fa.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("gender",o)}if(a.dispose(),s){let o=s.dataSync();if(T2)(o[0]>t.face.gender.minConfidence||o[1]>t.face.gender.minConfidence)&&(i.gender=o[0]>o[1]?"female":"male",i.confidence=o[0]>o[1]?Math.trunc(100*o[0])/100:Math.trunc(100*o[1])/100);else{let l=Math.trunc(200*Math.abs(o[0]-.5))/100;l>t.face.gender.minConfidence&&(i.gender=o[0]<=.5?"female":"male",i.confidence=Math.min(.99,l))}}s.dispose(),S2=i,n(i)})):null}var F2={};pr(F2,{load:()=>D2,predict:()=>O2});var Cae=["angry","disgust","fear","happy","sad","surprise","neutral"],Qa,M2=[],y0=Number.MAX_SAFE_INTEGER,$2=[.2989,.587,.114];async function D2(e){return Qa||(Qa=await Ft(e.face.emotion.modelPath),e.debug&&Ce(`load model: ${e.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),Qa}async function O2(e,t){return Qa?y00?(y0++,M2):(t.videoOptimized?y0=0:y0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Qa.inputs[0].shape[2],Qa.inputs[0].shape[1]],!1),[a,s,i]=Lt(r,3,3);r.dispose();let o=P(a,$2[0]),l=P(s,$2[1]),u=P(i,$2[2]);a.dispose(),s.dispose(),i.dispose();let c=Ma([o,l,u]);o.dispose(),l.dispose(),u.dispose();let h=B(()=>c.sub(.5).mul(2));c.dispose();let d=[];if(t.face.emotion.enabled){let p;if(t.profile){let f=await gr(()=>Qa.predict(h));p=f.result.dataSync(),f.result.dispose(),qr("emotion",f)}else{let f=await Qa.predict(h);p=f.dataSync(),Ee(f)}for(let f=0;ft.face.emotion.minConfidence&&d.push({score:Math.min(.99,Math.trunc(100*p[f])/100),emotion:Cae[f]});d.sort((f,m)=>m.score-f.score)}h.dispose(),M2=d,n(d)})):null}var Xr;async function z2(e){return Xr||(Xr=await Ft(e.face.embedding.modelPath),e.debug&&Ce(`load model: ${e.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),Xr}function _6(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let r=e.map((s,i)=>Math.abs(e[i]-t[i])**n).reduce((s,i)=>s+i,0)**(1/n);return Math.max(Math.trunc(1e3*(1-r))/1e3,0)}function P2(e){return B(()=>{let n=[[.05,.15,.85,.85]],r=e.image||e.tensor;if(!(r instanceof Ue))return null;let a=r.shape.length===3?Je.cropAndResize(hn(r,0),n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]):Je.cropAndResize(r,n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]),s=[.2989,.587,.114],[i,o,l]=Lt(a,3,3),u=P(i,s[0]),c=P(o,s[1]),h=P(l,s[2]),d=Ma([u,c,h]),p=dn([d,d,d],3).squeeze(4),f=p.sub(p.min());return f.div(f.max())})}async function L2(e,t){return Xr?new Promise(async n=>{let r=[];if(t.face.embedding.enabled){let a=P2(e);if(!t.profile)r=B(()=>Xr.predict(a).reshape([128,2]).logSumExp(1).dataSync());else{let s=await gr(()=>Xr.predict({img_inputs:a}));r=[...s.result.dataSync()],s.result.dispose(),qr("emotion",s)}a.dispose()}n(r)}):null}var Y2={};pr(Y2,{PoseNet:()=>J2,load:()=>Q2});function Eae(e){let[t,n,r,a]=e;return{offsets:t,heatmap:n,displacementFwd:r,displacementBwd:a}}var W2=class{constructor(t){this.model=t}predict(t){return B(()=>{let r=t.toFloat().div(127.5).sub(1).expandDims(0),s=this.model.predict(r).map(o=>o.squeeze([0])),i=Eae(s);return{heatmapScores:i.heatmap.sigmoid(),offsets:i.offsets,displacementFwd:i.displacementFwd,displacementBwd:i.displacementBwd}})}dispose(){this.model.dispose()}};function B2(e){return Math.floor(e/2)}var V2=class{constructor(t,n){this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=n}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(B2(t),t);)this.exchange(t,B2(t)),t=B2(t)}sink(t){for(;2*t<=this.numberOfElements;){let n=2*t;if(nt){l=!1;break}if(!l)break}return l}function b6(e,t,n){let[r,a,s]=n.shape,i=new V2(r*a*s,({score:o})=>o);for(let o=0;on?n:e}function k6(e,t,n,r){let a=n-e,s=r-t;return a*a+s*s}function q2(e,t){return{x:e.x+t.x,y:e.y+t.y}}var w0=Ah(g0());function N6(e,t){let n=t.shape[0],r=new Float32Array(n);for(let a=0;ae.toTensor().mul(be(t,"int32")).toFloat().add(Lae(e,n)))}function Wae(e,t){return B(()=>{let n=e.div(be(t,"int32"));return e.sub(n.mul(be(t,"int32")))})}function S6(e){let[t,n,r]=e.shape;return B(()=>{let s=e.reshape([t*n,r]).argMax(0),i=s.div(be(n,"int32")).expandDims(1),o=Wae(s,n).expandDims(1);return st([i,o],1)})}var T6=ma.poseChain.map(([e,t])=>[ma.partIds[e],ma.partIds[t]]),X2=T6.map(([,e])=>e),C6=T6.map(([e])=>e),Bae=16;function Vae(e,t,n){let r=n.shape[2]/2;return{y:n.get(t.y,t.x,e),x:n.get(t.y,t.x,r+e)}}function K2(e,t,n,r){return{y:G2(Math.round(e.y/t),0,n-1),x:G2(Math.round(e.x/t),0,r-1)}}function E6(e,t,n,r,a,s,i,o=2){let[l,u]=r.shape,c=K2(t.position,s,l,u),h=Vae(e,c,i),p=q2(t.position,h);for(let A=0;A=0;--d){let p=X2[d],f=C6[d];l[p]&&!l[f]&&(l[f]=E6(d,l[p],f,t,n,r,s))}for(let d=0;d(r+=f,{position:{y:c.get(m,0),x:c.get(m,1)},part:ma.partNames[m],score:f})),p=d.filter(f=>f.score>n);return a.dispose(),u.dispose(),{keypoints:p,score:r/d.length}}var Uae=1,M6=16;function $6(e,t,{x:n,y:r},a){return e.some(({keypoints:s})=>{let i=s[a].position;return k6(r,n,i.y,i.x)<=t})}function Hae(e,t,n){return n.reduce((a,{position:s,score:i},o)=>($6(e,t,s,o)||(a+=i),a),0)/n.length}function D6(e,t,n,r,a,s,i){let o=[],l=b6(i,Uae,e),u=a^2;for(;o.lengthi&&o.push({keypoints:d,score:p})}return o}async function O6(e){return Promise.all(e.map(t=>t.buffer()))}function jae(e,t,n){return{score:e.score,keypoints:e.keypoints.map(({score:r,part:a,position:s})=>({score:r,part:a,position:{x:Math.trunc(s.x*n),y:Math.trunc(s.y*t)}}))}}function z6(e,[t,n]){let r=e.squeeze(0),a=r.resizeBilinear([t,n]);return r.dispose(),a}function Z2(e,[t,n],[r,a]){return e.map(i=>jae(i,t/r,n/a))}async function Gae(e,t,n,r){return new Promise(async a=>{let s=await O6([t.heatmapScores,t.offsets,t.displacementFwd,t.displacementBwd]),i=s[0],o=s[1],l=s[2],u=s[3],c=await D6(i,o,l,u,n.body.nmsRadius,n.body.maxDetections,n.body.scoreThreshold),h=Z2(c,[e.shape[1],e.shape[2]],[r,r]);a(h)})}async function qae(e,t,n,r){return new Promise(async a=>{let s=await F6(t.heatmapScores,t.offsets,n.body.scoreThreshold),i=Z2([s],[e.shape[1],e.shape[2]],[r,r]);a(i)})}var J2=class{constructor(t){this.baseModel=t,this.inputSize=t.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(t,n){let r=z6(t,[this.inputSize,this.inputSize]),a=this.baseModel.predict(r,n),s=n.body.maxDetections<2?await qae(t,a,n,this.inputSize):await Gae(t,a,n,this.inputSize);return a.heatmapScores.dispose(),a.offsets.dispose(),a.displacementFwd.dispose(),a.displacementBwd.dispose(),r.dispose(),s}dispose(){this.baseModel.dispose()}};async function Q2(e){let t=await Ft(e.body.modelPath),n=new W2(t);return e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`),new J2(n)}var ag={};pr(ag,{HandPose:()=>ig,load:()=>og});function _0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Wc(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function P6(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function L6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],a=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:n,endPoint:r,palmLandmarks:a,confidence:e.confidence}}function b0(e,t=1.5){let n=Wc(e),r=_0(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function v0(e){let t=Wc(e),n=_0(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}var eg=class{constructor(t,n,r){this.model=t,this.anchors=r.map(a=>[a.x_center,a.y_center]),this.anchorsTensor=Nn(this.anchors),this.inputSize=n,this.inputSizeTensor=on([n,n]),this.doubleInputSizeTensor=on([n*2,n*2])}normalizeBoxes(t){return B(()=>{let n=Re(t,[0,0],[-1,2]),r=Re(t,[0,2],[-1,2]),a=se(ge(n,this.inputSizeTensor),this.anchorsTensor),s=ge(r,this.doubleInputSizeTensor),i=P(ye(a,s),this.inputSizeTensor),o=P(se(a,s),this.inputSizeTensor);return ll([i,o],1)})}normalizeLandmarks(t,n){return B(()=>{let r=se(ge(t.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[n]);return P(r,this.inputSizeTensor)})}async getBoxes(t,n){let r=this.model.predict(t),a=r.squeeze();r.dispose();let s=B(()=>Fn(Re(a,[0,0],[-1,1])).squeeze()),i=s.dataSync(),o=Re(a,[0,1],[-1,4]),l=this.normalizeBoxes(o);o.dispose();let u=await Je.nonMaxSuppressionAsync(l,i,n.hand.maxHands,n.hand.iouThreshold,n.hand.scoreThreshold),c=u.arraySync();s.dispose(),u.dispose();let h=[];for(let d of c)if(i[d]>=n.hand.minConfidence){let p=Re(l,[d,0],[1,-1]),f=Re(a,[d,5],[1,14]),m=B(()=>this.normalizeLandmarks(f,d).reshape([-1,2]));f.dispose(),h.push({box:p,palmLandmarks:m,confidence:i[d]})}return a.dispose(),l.dispose(),h}async estimateHandBounds(t,n){let r=t.shape[1],a=t.shape[2],s=B(()=>t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),i=await this.getBoxes(s,n);s.dispose();let o=[];if(!i||i.length===0)return o;for(let l of i){let u=l.box.dataSync(),c=u.slice(0,2),h=u.slice(2,4),d=l.palmLandmarks.arraySync();l.box.dispose(),l.palmLandmarks.dispose(),o.push(L6({startPoint:c,endPoint:h,palmLandmarks:d,confidence:l.confidence},[a/this.inputSize,r/this.inputSize]))}return o}};function Xae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function W6(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Xae(n)}var B6=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function es(e,t){let n=0;for(let r=0;rng([...s,1],n)),a=this.calculateLandmarksBoundingBox(r);return b0(v0(a),Zae)}getBoxForHandLandmarks(t){let n=this.calculateLandmarksBoundingBox(t),r=b0(v0(n),H6);r.palmLandmarks=[];for(let a=0;a[i[0]*(p[0]-this.inputSize/2),i[1]*(p[1]-this.inputSize/2),i[2]*p[2]]),l=tg(r,[0,0]),u=o.map(p=>[...ng(p,l),p[2]]),c=U6(a),h=[...Wc(n),1],d=[es(h,c[0]),es(h,c[1])];return u.map(p=>[p[0]+d[0],p[1]+d[1],p[2]])}async estimateHands(t,n){let r=!1,a;(this.skipped===0||this.skipped>n.hand.skipFrames||!n.hand.landmarks||!n.videoOptimized)&&(a=await this.handDetector.estimateHandBounds(t,n),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.length>0&&(a.length!==this.detectedHands&&this.detectedHands!==n.hand.maxHands||!n.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...a],this.storedBoxes.length>0&&(r=!0));let s=[];n.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let i=0;i=n.hand.minConfidence){let _=G(y,[-1,3]),b=_.arraySync();y.dispose(),_.dispose();let w=this.transformRawCoords(b,p,l,d),x=this.getBoxForHandLandmarks(w);this.storedBoxes[i]=x;let I={landmarks:w,confidence:g,box:{topLeft:x.startPoint,bottomRight:x.endPoint}};s.push(I)}else this.storedBoxes[i]=null;y.dispose()}else{let l=b0(v0(o),H6),u={confidence:o.confidence,box:{topLeft:l.startPoint,bottomRight:l.endPoint}};s.push(u)}}return this.storedBoxes=this.storedBoxes.filter(i=>i!==null),this.detectedHands=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s}}};var G6=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var sg={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},ig=class{constructor(t){this.handPipeline=t}static getAnnotations(){return sg}async estimateHands(t,n){let r=await this.handPipeline.estimateHands(t,n);if(!r)return[];let a=[];for(let s of r){let i={};if(s.landmarks)for(let l of Object.keys(sg))i[l]=sg[l].map(u=>s.landmarks[u]);let o=s.box?[Math.max(0,s.box.topLeft[0]),Math.max(0,s.box.topLeft[1]),Math.min(t.shape[2],s.box.bottomRight[0])-s.box.topLeft[0],Math.min(t.shape[1],s.box.bottomRight[1])-s.box.topLeft[1]]:0;a.push({confidence:s.confidence,box:o,landmarks:s.landmarks,annotations:i})}return a}};async function og(e){let[t,n]=await Promise.all([e.hand.enabled?Ft(e.hand.detector.modelPath,{fromTFHub:e.hand.detector.modelPath.includes("tfhub.dev")}):null,e.hand.landmarks?Ft(e.hand.skeleton.modelPath,{fromTFHub:e.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),r=new eg(t,t==null?void 0:t.inputs[0].shape[2],G6),a=new rg(r,n,n==null?void 0:n.inputs[0].shape[2]),s=new ig(a);return e.hand.enabled&&e.debug&&Ce(`load model: ${e.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),e.hand.landmarks&&e.debug&&Ce(`load model: ${e.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),s}var lg={};pr(lg,{load:()=>ug,predict:()=>cg});var q6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],X6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var hr;async function ug(e){return hr||(hr=await Ft(e.body.modelPath),hr.width=parseInt(hr.signature.inputs["input_1:0"].tensorShape.dim[2].size),hr.height=parseInt(hr.signature.inputs["input_1:0"].tensorShape.dim[1].size),e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`)),hr}async function cg(e,t){if(!hr||!t.body.enabled)return null;let n={width:e.shape[2],height:e.shape[1]},r=Je.resizeBilinear(e,[hr.width,hr.height],!1),a=ge(r,[255]);r.dispose();let s;if(t.profile){let u=await gr(()=>hr.predict(a));s=u.result.find(c=>c.size===195||c.size===155).dataSync(),u.result.forEach(c=>c.dispose()),qr("blazepose",u)}else{let u=await hr.predict(a);s=u.find(c=>c.size===195||c.size===155).dataSync(),u.forEach(c=>c.dispose())}a.dispose();let i=[],o=s.length===195?q6:X6,l=5;for(let u=0;u{if(!e)return[];let t=[];for(let n=0;nl.part==="leftWrist"),a=e[n].keypoints.find(l=>l.part==="rightWrist"),s=e[n].keypoints.find(l=>l.part==="nose");s&&r&&a&&r.position.yl.part==="leftShoulder"),o=e[n].keypoints.find(l=>l.part==="rightShoulder");i&&o&&t.push({body:n,gesture:`leaning ${i.position.y>o.position.y?"left":"right"}`})}return t},Z6=e=>{if(!e)return[];let t=[];for(let n=0;n0){let r=e[n].mesh[33][2]-e[n].mesh[263][2];Math.abs(r)<10?t.push({face:n,gesture:"facing camera"}):t.push({face:n,gesture:`facing ${r<0?"right":"left"}`}),Math.abs(e[n].mesh[374][1]-e[n].mesh[386][1])/Math.abs(e[n].mesh[443][1]-e[n].mesh[450][1])<.2&&t.push({face:n,gesture:"blink left eye"}),Math.abs(e[n].mesh[145][1]-e[n].mesh[159][1])/Math.abs(e[n].mesh[223][1]-e[n].mesh[230][1])<.2&&t.push({face:n,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[n].mesh[13][1]-e[n].mesh[14][1])/Math.abs(e[n].mesh[10][1]-e[n].mesh[152][1]));i>10&&t.push({face:n,gesture:`mouth ${Math.trunc(i)}% open`});let o=e[n].mesh[152][2];Math.abs(o)>10&&t.push({face:n,gesture:`head ${o<0?"up":"down"}`})}return t},Y6=e=>{if(!e)return[];let t=[];for(let n=0;n{if(!e)return[];let t=[];for(let n=0;n0){let a=r.reduce((i,o)=>i.position[2]i.position[1](u[d]=0,h))},a=function(o,l){let u=e.createShader(l);if(e.shaderSource(u,o),e.compileShader(u),!e.getShaderParameter(u,e.COMPILE_STATUS))throw new Error("Filter: GL compile failed",e.getShaderInfoLog(u));return u};this.uniform={},this.attribute={};let s=a(t,e.VERTEX_SHADER),i=a(n,e.FRAGMENT_SHADER);if(this.id=e.createProgram(),e.attachShader(this.id,s),e.attachShader(this.id,i),e.linkProgram(this.id),!e.getProgramParameter(this.id,e.LINK_STATUS))throw new Error("Filter: GL link failed",e.getProgramInfoLog(this.id));e.useProgram(this.id),r(t,"attribute",this.attribute);for(let o in this.attribute)this.attribute[o]=e.getAttribLocation(this.id,o);r(t,"uniform",this.uniform),r(n,"uniform",this.uniform);for(let o in this.uniform)this.uniform[o]=e.getUniformLocation(this.id,o)}function Q6(e){e||(e={});let t=0,n=null,r=!1,a=-1,s=[null,null],i=[],o=-1,l=-1,u=null,c=null,h={},d=e.canvas||document.createElement("canvas"),p={},f={INTERMEDIATE:1},m=d.getContext("webgl");if(!m)throw new Error("Filter: getContext() failed");this.addFilter=function(w){let x=Array.prototype.slice.call(arguments,1),I=h[w];i.push({func:I,args:x})},this.reset=function(){i=[]};let A=function(w,x){if(!(w===o&&x===l)){if(d.width=w,o=w,d.height=x,l=x,!u){let I=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);u=m.createBuffer(),m.bindBuffer(m.ARRAY_BUFFER,u),m.bufferData(m.ARRAY_BUFFER,I,m.STATIC_DRAW),m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}m.viewport(0,0,o,l),s=[null,null]}},y=function(w,x){let I=m.createFramebuffer();m.bindFramebuffer(m.FRAMEBUFFER,I);let S=m.createRenderbuffer();m.bindRenderbuffer(m.RENDERBUFFER,S);let T=m.createTexture();return m.bindTexture(m.TEXTURE_2D,T),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,w,x,0,m.RGBA,m.UNSIGNED_BYTE,null),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,m.TEXTURE_2D,T,0),m.bindTexture(m.TEXTURE_2D,null),m.bindFramebuffer(m.FRAMEBUFFER,null),{fbo:I,texture:T}},g=function(w){return s[w]=s[w]||y(o,l),s[w]},_=function(w=null){var T,M;let x=null,I=null,S=!1;t===0?x=n:x=(T=g(a))==null?void 0:T.texture,t++,r&&!(w&f.INTERMEDIATE)?(I=null,S=t%2==0):(a=(a+1)%2,I=(M=g(a))==null?void 0:M.fbo),m.bindTexture(m.TEXTURE_2D,x),m.bindFramebuffer(m.FRAMEBUFFER,I),m.uniform1f(c.uniform.flipY,S?-1:1),m.drawArrays(m.TRIANGLES,0,6)};this.apply=function(w){if(A(w.width,w.height),t=0,n||(n=m.createTexture()),m.bindTexture(m.TEXTURE_2D,n),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,w),i.length===0)return _(),d;for(let x=0;x{let c=[];e=G(e,[1,r,o]);for(let h=0;h{switch(e.op){case"If":case"StatelessIf":{let r=k("thenBranch",e,t,n),a=k("elseBranch",e,t,n),s=k("cond",e,t,n),i=k("args",e,t,n);return(await s.data())[0]?n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let r=k("body",e,t,n),a=k("cond",e,t,n),s=k("args",e,t,n),i=await n.functionMap[a].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(c=>c.id),l=await i[0].data();i.forEach(c=>{!c.kept&&o.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;l[0];){let c=u;u=await n.functionMap[r].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);let h=u.map(p=>p.id);c.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()});let d=await n.functionMap[a].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()})}return u}case"LoopCond":{let r=k("pred",e,t,n);return[pa(r)]}case"Switch":{let r=k("pred",e,t,n),a=k("data",e,t,n);return a.kept||(a=pa(a)),(await r.data())[0]?[void 0,a]:[a,void 0]}case"Merge":{let r=e.inputNames.find(a=>En(a,t,n)!==void 0);if(r){let a=En(r,t,n);return[pa(a)]}return}case"Enter":{let r=k("frameName",e,t,n),a=k("tensor",e,t,n);return n.enterFrame(r),[pa(a)]}case"Exit":{let r=k("tensor",e,t,n);return n.exitFrame(),[pa(r)]}case"NextIteration":{let r=k("tensor",e,t,n);return n.nextIteration(),[pa(r)]}case"TensorArrayV3":{let r=k("size",e,t,n),a=k("dtype",e,t,n),s=k("elementShape",e,t,n),i=k("dynamicSize",e,t,n),o=k("clearAfterRead",e,t,n),l=k("identicalElementShapes",e,t,n),u=k("name",e,t,n),c=new are(u,a,r,s,l,i,o);return n.addTensorArray(c),[c.idTensor,be(1)]}case"TensorArrayWriteV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.write(a,s),[i.idTensor]}case"TensorArrayReadV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n);return[n.getTensorArray(r.id).read(a)]}case"TensorArrayGatherV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("dtype",e,t,n);return[n.getTensorArray(r.id).gather(a,s)]}case"TensorArrayScatterV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.scatter(a,s),[i.idTensor]}case"TensorArrayConcatV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id),s=k("dtype",e,t,n);return[a.concat(s)]}case"TensorArraySplitV3":{let r=k("tensorArrayId",e,t,n),a=k("tensor",e,t,n),s=k("lengths",e,t,n),i=n.getTensorArray(r.id);return i.split(s,a),[i.idTensor]}case"TensorArraySizeV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return[be(a.size(),"int32")]}case"TensorArrayCloseV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return a.clearAndClose(),[a.idTensor]}case"TensorListSetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorList(r.id);return i.setItem(a,s),[i.idTensor]}case"TensorListGetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(a,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let r=k("indices",e,t,n),a=k("tensor",e,t,n),s=k("elementShape",e,t,n),i=k("numElements",e,t,n),o=ore(a,r,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let r=k("elementShape",e,t,n),a=k("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=k(s,e,t,n),o=ire(r,a,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let r=k("tensorListId",e,t,n),a=k("indices",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).gather(a,i,s)]}case"TensorListStack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=k("numElements",e,t,n);return[n.getTensorList(r.id).stack(a,s,i)]}case"TensorListFromTensor":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=sre(r,a,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let r=k("tensorListId",e,t,n),a=n.getTensorList(r.id),s=k("dtype",e,t,n),i=k("elementShape",e,t,n);return[a.concat(s,i)]}case"TensorListPushBack":{let r=k("tensorListId",e,t,n),a=k("tensor",e,t,n),s=n.getTensorList(r.id);return s.pushBack(a),[s.idTensor]}case"TensorListPopBack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(a,s)]}case"TensorListSplit":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("lengths",e,t,n),i=lre(r,s,a);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function zv(e,t,n){let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=r==="fusedbatchnorm",l=k("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let u=k("strides",e,t,n),c=a0(e,t,n),h=k("dataFormat",e,t,n).toUpperCase(),d=k("dilations",e,t,n),[p,f]=k("args",e,t,n),m=k("leakyreluAlpha",e,t,n);return{stride:u,pad:c,dataFormat:h,dilations:d,biasArg:p,preluArg:f,activationFunc:a,leakyreluAlpha:m}}var cre=(e,t,n)=>{switch(e.op){case"Conv1D":{let r=k("stride",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilation",e,t,n);return[fd(k("x",e,t,n),k("filter",e,t,n),r,a,s,i)]}case"Conv2D":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[ra(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=zv(e,t,n);return[La.conv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"FusedDepthwiseConv2dNative":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=zv(e,t,n);return[La.depthwiseConv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let r=k("outputShape",e,t,n),a=k("strides",e,t,n),s=a0(e,t,n);return[md(k("x",e,t,n),k("filter",e,t,n),r,[a[1],a[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dilations",e,t,n),i=k("dataFormat",e,t,n).toUpperCase();return[ul(k("input",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,i,[s[1],s[2]])]}case"Conv3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[Xf(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2],r[3]],a,s,[i[1],i[2],i[3]])]}case"AvgPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Lu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Gu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPoolWithArgmax":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n),i=k("includeBatchInIndex",e,t,n),{result:o,indexes:l}=cx(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a,i);return[o,l]}case"AvgPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[jf(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"MaxPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[sm(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"Dilation2D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dilations",e,t,n),i=r[1],o=r[2],l=s[1],u=s[2];return[Zf(k("x",e,t,n),k("filter",e,t,n),[i,o],a,[l,u],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},hre=(e,t,n)=>{switch(e.op){case"Fill":{let r=k("shape",e,t,n),a=k("dtype",e,t,n),s=k("value",e,t,n);return[Uu(r,s,a)]}case"LinSpace":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("num",e,t,n);return[rx(r,a,s)]}case"Multinomial":{let r=k("logits",e,t,n),a=k("numSamples",e,t,n),s=k("seed",e,t,n);return[hx(r,a,s)]}case"OneHot":{let r=k("indices",e,t,n),a=k("depth",e,t,n),s=k("onValue",e,t,n),i=k("offValue",e,t,n);return[nl(r,a,s,i)]}case"Ones":return[Or(k("shape",e,t,n),k("dtype",e,t,n))];case"OnesLike":return[$n(k("x",e,t,n))];case"RandomUniform":return[ml(k("shape",e,t,n),k("minval",e,t,n),k("maxval",e,t,n),k("dtype",e,t,n))];case"Range":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("step",e,t,n);return[Id(r,a,s,k("dtype",e,t,n))]}case"TruncatedNormal":{let r=k("shape",e,t,n),a=k("mean",e,t,n),s=k("stdDev",e,t,n),i=k("seed",e,t,n);return[Od(r,a,s,k("dtype",e,t,n),i)]}case"Zeros":return[Et(k("shape",e,t,n),k("dtype",e,t,n))];case"ZerosLike":return[He(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function u2(e,t,n){let r=k("boxes",e,t,n),a=k("scores",e,t,n),s=k("maxOutputSize",e,t,n),i=k("iouThreshold",e,t,n),o=k("scoreThreshold",e,t,n),l=k("softNmsSigma",e,t,n);return{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var dre=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=u2(e,t,n),u=await Je.nonMaxSuppressionWithScoreAsync(r,a,s,i,o,l);return[u.selectedIndices,u.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n),l=k("padToMaxOutputSize",e,t,n),u=await Je.nonMaxSuppressionPaddedAsync(r,a,s,i,o,l);return[u.selectedIndices,u.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n);return[await Je.nonMaxSuppressionAsync(r,a,s,i,o)]}case"Where":{let r=me(k("condition",e,t,n),"bool"),a=[await xm(r)];return r.dispose(),a}case"ListDiff":return fx(k("x",e,t,n),k("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},pre=(e,t,n)=>{switch(e.op){case"TopKV2":{let r=k("x",e,t,n),a=k("k",e,t,n),s=k("sorted",e,t,n),i=ym(r,a,s);return[i.values,i.indices]}case"Unique":{let r=k("x",e,t,n),a=zd(r);return[a.values,a.indices]}case"UniqueV2":{let r=k("x",e,t,n),a=k("axis",e,t,n),s=zd(r,a);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},fre=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let r=k("default",e,t,n);return[En(e.name,t,n)||r];case"Placeholder":return[En(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let u=k("x",e,t,n);return[pa(u)]}case"IdentityN":return k("x",e,t,n).map(u=>pa(u));case"Snapshot":let a=k("x",e,t,n);return[pa(a)];case"Shape":return[on(k("x",e,t,n).shape,"int32")];case"ShapeN":return k("x",e,t,n).map(u=>on(u.shape));case"Size":return[be(k("x",e,t,n).size,"int32")];case"Rank":return[be(k("x",e,t,n).rank,"int32")];case"NoOp":return[be(1)];case"Print":let s=k("x",e,t,n),i=k("data",e,t,n),o=k("message",e,t,n),l=k("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let u=0;ue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return be(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(r=>r.dispose()),this.tensorMap.clear(),B(()=>{let r=sr(t),a=n.length,s=r.length;v.assert(a===s,()=>`The number of elements doesn't match, keys has ${a} elements, the values has ${s} elements.`);for(let i=0;i{let r=[];for(let a=0;a{switch(e.op){case"HashTable":case"HashTableV2":{let a=k("keyDType",e,t,n),s=k("valueDType",e,t,n),i=new mre(a,s);return r.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("values",e,t,n);return[await r.getHashTableById(a.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("defaultValue",e,t,n);return[await r.getHashTableById(a.id).find(s,i)]}case"LookupTableSize":case"LookupTableSizeV2":{let a=k("tableHandle",e,t,n,r);return[r.getHashTableById(a.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},yre=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeBilinear(r,[a[0],a[1]],s,i)]}case"ResizeNearestNeighbor":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeNearestNeighbor(r,[a[0],a[1]],s,i)]}case"CropAndResize":{let r=k("image",e,t,n),a=k("boxes",e,t,n),s=k("boxInd",e,t,n),i=k("cropSize",e,t,n),o=k("method",e,t,n),l=k("extrapolationValue",e,t,n);return[Je.cropAndResize(r,a,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},gre=(e,t,n)=>{switch(e.op){case"Equal":return[Da(k("a",e,t,n),k("b",e,t,n))];case"NotEqual":return[di(k("a",e,t,n),k("b",e,t,n))];case"Greater":return[rr(k("a",e,t,n),k("b",e,t,n))];case"GreaterEqual":return[za(k("a",e,t,n),k("b",e,t,n))];case"Less":return[xd(k("a",e,t,n),k("b",e,t,n))];case"LessEqual":return[ci(k("a",e,t,n),k("b",e,t,n))];case"LogicalAnd":return[ar(k("a",e,t,n),k("b",e,t,n))];case"LogicalNot":return[ju(k("a",e,t,n))];case"LogicalOr":return[vd(k("a",e,t,n),k("b",e,t,n))];case"Select":case"SelectV2":return[kn(k("condition",e,t,n),k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},xre=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[Ge(k("a",e,t,n),k("b",e,t,n),k("transposeA",e,t,n),k("transposeB",e,t,n))];case"Transpose":return[at(k("x",e,t,n),k("perm",e,t,n))];case"_FusedMatMul":let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=k("numArgs",e,t,n),l=k("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[u,c]=k("args",e,t,n);return[La.matMul({a:k("a",e,t,n),b:k("b",e,t,n),transposeA:k("transposeA",e,t,n),transposeB:k("transposeB",e,t,n),bias:u,activation:a,preluActivationWeights:c,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},wre=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"FusedBatchNormV3":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"LRN":return[tm(k("x",e,t,n),k("radius",e,t,n),k("bias",e,t,n),k("alpha",e,t,n),k("beta",e,t,n))];case"Softmax":return[Yu(k("x",e,t,n))];case"LogSoftmax":return[bd(k("x",e,t,n))];case"SparseToDense":return[wm(k("sparseIndices",e,t,n),k("outputShape",e,t,n),k("sparseValues",e,t,n),k("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},_re=(e,t,n)=>{switch(e.op){case"Max":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Xn(k("x",e,t,n),i,o)]}case"Mean":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[kt(k("x",e,t,n),i,o)]}case"Min":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[pl(k("x",e,t,n),i,o)]}case"Sum":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Te(k("x",e,t,n),i,o)]}case"All":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[dd(k("x",e,t,n),i,o)]}case"Any":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Ou(k("x",e,t,n),i,o)]}case"ArgMax":{let i=k("axis",e,t,n);return[zu(k("x",e,t,n),i)]}case"ArgMin":{let i=k("axis",e,t,n);return[zf(k("x",e,t,n),i)]}case"Prod":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Nd(k("x",e,t,n),i,o)]}case"Cumsum":{let i=k("axis",e,t,n),o=k("exclusive",e,t,n),l=k("reverse",e,t,n);return[yd(k("x",e,t,n),i,o,l)]}case"Bincount":let r=k("x",e,t,n),a=k("weights",e,t,n),s=k("size",e,t,n);return[q5(r,a,s)];case"DenseBincount":{let i=k("x",e,t,n),o=k("weights",e,t,n),l=k("size",e,t,n),u=k("binaryOutput",e,t,n);return[J5(i,o,l,u)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},bre=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let r=k("n",e,t,n),a=k("axis",e,t,n),s=k("tensors",e,t,n);return s=s.slice(0,r),[st(s,a)]}case"Gather":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[ui(r,me(a,"int32"),0)]}case"GatherV2":{let r=k("axis",e,t,n),a=k("batchDims",e,t,n),s=k("x",e,t,n),i=k("indices",e,t,n);return[ui(s,me(i,"int32"),r,a)]}case"Reverse":{let r=k("dims",e,t,n),a=[];for(let i=0;i{let r=k("axis",e,t,n),a=k("tensors",e,t,n),s=a[0].shape,i=Pa(a[0]).shape,o=a.map(l=>{let u=v.arraysEqual(l.shape,s);if(!u&&!v.arraysEqual(Pa(l).shape,i))throw new Error("the input tensors shape does not match");return u?l:G(l,s)});return[dn(o,r)]});case"Unpack":{let r=k("axis",e,t,n),a=k("tensor",e,t,n);return sr(a,r)}case"Tile":{let r=k("reps",e,t,n);return[Oa(k("x",e,t,n),r)]}case"Split":case"SplitV":{let r=k("axis",e,t,n),a=k("numOrSizeSplits",e,t,n),s=k("x",e,t,n);return Lt(s,a,r)}case"ScatterNd":{let r=k("indices",e,t,n),a=k("values",e,t,n),s=k("shape",e,t,n);return[gx(r,a,s)]}case"GatherNd":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[xx(r,a)]}case"SparseToDense":{let r=k("sparseIndices",e,t,n),a=k("outputShape",e,t,n),s=k("sparseValues",e,t,n),i=k("defaultValue",e,t,n);return[wm(r,s,a,s.dtype===i.dtype?i:me(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},vre=(e,t,n)=>{switch(e.op){case"FFT":return[Ju(k("x",e,t,n))];case"IFFT":return[Al(k("x",e,t,n))];case"RFFT":return[Qu(k("x",e,t,n))];case"IRFFT":return[$d(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},kre=(e,t,n)=>{switch(e.op){case"Cast":return[me(k("x",e,t,n),k("dtype",e,t,n))];case"ExpandDims":{let r=k("axis",e,t,n);return[hn(k("x",e,t,n),r)]}case"Squeeze":{let r=k("axis",e,t,n);return[Pa(k("x",e,t,n),r)]}case"Reshape":return[G(k("x",e,t,n),k("shape",e,t,n))];case"MirrorPad":return[im(k("x",e,t,n),k("padding",e,t,n),k("mode",e,t,n))];case"PadV2":case"Pad":return[aa(k("x",e,t,n),k("padding",e,t,n),k("constantValue",e,t,n))];case"SpaceToBatchND":{let r=k("blockShape",e,t,n),a=k("paddings",e,t,n);return[qu(k("x",e,t,n),r,a)]}case"BatchToSpaceND":{let r=k("blockShape",e,t,n),a=k("crops",e,t,n);return[Wu(k("x",e,t,n),r,a)]}case"DepthToSpace":{let r=k("blockSize",e,t,n),a=k("dataFormat",e,t,n).toUpperCase();return[Kf(k("x",e,t,n),r,a)]}case"BroadcastTo":return[Bu(k("x",e,t,n),k("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Pv(e,t,n,r){let a=((s,i,o)=>{switch(s.category){case"arithmetic":return B(()=>nre(s,i,o));case"basic_math":return B(()=>rre(s,i,o));case"control":return ure(s,i,o);case"convolution":return B(()=>cre(s,i,o));case"creation":return B(()=>hre(s,i,o));case"dynamic":return dre(s,i,o);case"evaluation":return B(()=>pre(s,i,o));case"image":return B(()=>yre(s,i,o));case"graph":return B(()=>fre(s,i,o));case"logical":return B(()=>gre(s,i,o));case"matrices":return B(()=>xre(s,i,o));case"normalization":return B(()=>wre(s,i,o));case"reduction":return B(()=>_re(s,i,o));case"slice_join":return B(()=>bre(s,i,o));case"spectral":return B(()=>vre(s,i,o));case"transformation":return B(()=>kre(s,i,o));case"hash_table":return Are(s,i,o,r);case"custom":let l=fv(s.op);if(l&&l.customExecutor)return l.customExecutor(new tre(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(a)?a.then(s=>[].concat(s)):[].concat(a)}var Lv=class{constructor(e={},t={},n={},r={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function Bv(e,t,n,r){let a=new Set,s=[],i=null,o=null,l=new Set,u=Object.keys(e).map(d=>Wn(d)[0]),c=[];r!=null&&(c=r.map(d=>Wn(d.name)[0]));let h=[...t];for(;h.length>0;){let d=h.pop();if((Wv(d)||Nre(d)||Ire(d))&&i==null&&(i=d,o=i.children.map(p=>p.name).filter(p=>a.has(p))),a.add(d.name),n[d.name]==null&&u.indexOf(d.name)===-1&&c.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(p=>{l.has(p.name)||(l.add(p.name),h.push(p))})}}return{inputs:e,outputs:t,usedNodes:a,missingInputs:s,dynamicNode:i,syncInputs:o}}function Sre(e,t,n){let{usedNodes:r,inputs:a}=n,s=[],i=Object.keys(a).map(c=>Wn(c)[0]).map(c=>e.nodes[c]),o=e.initNodes;i.forEach(c=>{r.has(c.name)&&s.push(c)}),e.weights.forEach(c=>{r.has(c.name)&&s.push(c)}),o!=null&&o.forEach(c=>{r.has(c.name)&&s.push(c)});let l=new Set,u=[];for(;s.length>0;){let c=s.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(h=>{!l.has(h.name)&&r.has(h.name)&&h.inputs.every(d=>l.has(d.name))&&s.push(h)})}return u}var Tre=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],Cre=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],Ere=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function Wv(e){return Tre.indexOf(e.op)>=0}function Nre(e){return Cre.indexOf(e.op)>=0}function Ire(e){return Ere.indexOf(e.op)>=0}var c2=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new c2(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(r=>r.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(a=>a.name).sort(),r=t.map(a=>a.name).sort();return n.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)}compile(e,t){let n=Bv(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:a,syncInputs:s}=n;if(a!=null)throw new Error(`This execution contains the node '${a.name}', which has the dynamic op '${a.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(r.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${r}]`)}return Sre(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let r=n.map(c=>this.graph.nodes[Wn(c)[0]]),a=t.map(c=>Wn(c)[0]),s=a.map(c=>this.graph.nodes[c]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(r,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},u={};return B(()=>{let c=new Lv(this.weightMap,l,u,this.functionExecutorMap),h=Object.assign({},this.weightMap);Object.keys(e).forEach(f=>{let[m,A]=Wn(f),y=[];y[A]=e[f],h[m]=y});let d=this.getFrozenTensorIds(h),p={};for(let f=0;fEn(f,h,c))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(r=>r.id)));return new Set(t)}checkTensorForDisposal(e,t,n,r,a,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=One(o.name,n,r);l!=null&&l.forEach(u=>{if(u&&!a.has(u.id)){let c=i[u.id];c===1?(u.dispose(),delete i[u.id]):c!=null&&i[u.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,r={},a={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new Lv(this.weightMap,r,a,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(h=>En(h,i,s)),l=o.map(h=>h.id),u=Object.keys(e).map(h=>e[h].id),c=new Set([...l,...u,...this.weightIds]);return Object.keys(i).forEach(h=>{i[h].forEach(d=>{d&&!d.isDisposed&&!c.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(c),o}async executeFunctionAsync(e,t,n){let r=e.reduce((a,s,i)=>(a[this.inputs[i].name]=s,a),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){let a=Object.keys(e),s=a.map(g=>this.graph.nodes[Wn(g)[0]]),i=n.map(g=>Wn(g)[0]),o=i.map(g=>this.graph.nodes[g]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:u,dynamicNode:c,syncInputs:h}=Bv(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(g=>({node:g,contexts:t.currentContext})),p=Object.assign({},this.weightMap);Object.keys(e).forEach(g=>{let[_,b]=Wn(g),w=[];w[b]=e[g],p[_]=w});let f={},m=this.getFrozenTensorIds(p),A={};for(;d.length>0;){let g=this.processStack(s,d,t,p,A,m,i,f,l);await Promise.all(g)}c==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(g=>!Wv(g)&&!En(g.name,p,t)).map(g=>g.name);if(y.length>0){let g="";throw c!=null&&(g=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${h}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${a}]. Consider providing the following inputs: [${u}]. ${g}`)}return p}processStack(e,t,n,r,a,s,i,o,l){let u=[];for(;t.length>0;){let c=t.pop();n.currentContext=c.contexts;let h="";if(c.node.op==="Enter"&&k("isConstant",c.node,r,n)&&([h]=da(c.node.name,n)),r[c.node.name]==null){let d=Pv(c.node,r,n,this._resourceManager);h||([h]=da(c.node.name,n));let p=n.currentContext;v.isPromise(d)?u.push(d.then(f=>(r[h]=f,n.currentContext=p,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l),f))):(r[h]=d,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l))}else this.processChildNodes(c.node,t,n,r,a,l)}return u}processChildNodes(e,t,n,r,a,s){e.children.forEach(i=>{let[o]=da(i.name,n);a[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[r]=Wn(t),a=this.graph.nodes[r];if(a.attrParams.shape&&a.attrParams.shape.value){let s=a.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);v.assert(i,()=>`The shape of dict['${a.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}a.attrParams.dtype&&a.attrParams.dtype.value&&v.assert(n.dtype===a.attrParams.dtype.value,()=>`The dtype of dict['${a.name}'] provided in model.execute(dict) must be ${a.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let r=this._signature.inputs[n];t[r.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[r]=Wn(n);return this.graph.nodes[r]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Wn(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},Rre=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},Fre="?tfjs-format=file",Mre="model.json",Vv=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new Rre}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=bn.browserHTTPRequest(e,this.loadOptions);else{let t=bn.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(bn.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let r=bn.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new c2(Mv.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let a=Mv.Instance.transformGraph(e.modelInitializer);this.initializer=new c2(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=bn.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof Ue)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,r)=>(t[n]=e[r],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Ft(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${Mre}${Fre}`);let n=new Vv(e,t);return await n.load(),n}var $re="3.3.0",Uv={};ze(Uv,{CSVDataset:()=>jv,Dataset:()=>Vl,FileDataSource:()=>Gv,TextLineDataset:()=>Hv,URLDataSource:()=>qv,array:()=>Dre,csv:()=>zre,func:()=>Pre,generator:()=>Lre,microphone:()=>Bre,version_data:()=>Vre,webcam:()=>Wre,zip:()=>Ore});var Ure=qi(Mg()),Hre=qi(Mg());function jre(e,t){return s0(e,t)}function s0(e,t,n=new Map,r=new Set){if(e==null)return null;if(r.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(a.recurse)if(Ul(e)){let s=Array.isArray(e)?[]:{};r.add(e);for(let i in e){let o=e[i],l=s0(o,t,n,r);s[i]=l}return r.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,a.value),a.value}function Gre(e,t=Kv){return Xv(e,t)}function Xv(e,t,n=new Set){let r=e[0];if(n.has(r))throw new Error("Circular references are not supported.");let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(a.recurse)if(Ul(r)){let s=Array.isArray(r)?[]:{};n.add(r);for(let i in r){let o=e.map(u=>u[i]),l=Xv(o,t,n);s[i]=l}return n.delete(r),s}else throw new Error(`Can't recurse into non-iterable type: ${r}`);else return a.value}function Kv(e){return e===null?null:Ul(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function Zv(e,t){let n=new Map;s0(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let s=await a;n.set(r,s)}}return s0(e,t,n)}function Ul(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof Ue))}function Xre(e){return e==null||qre(e)||Array.isArray(e)||typeof e=="object"&&e instanceof Ue||v.isTypedArray(e)}function qre(e){return e===null||typeof e!="object"&&typeof e!="function"}function Zre(e){return jre(e,Kre)}function Kre(e){return e instanceof Ue?{value:e.clone(),recurse:!1}:Ul(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var Yv=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},h2=class extends Yv{constructor(){super(h2.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let r=0;rt===!0)}rowMajorBatch(e,t=!0){return new sae(this,e,t)}columnMajorBatch(e,t=!0,n=Kv){return this.rowMajorBatch(e,t).map(r=>Gre(r,n))}concatenate(e,t){return new Qv(Jv([this,e]),t)}take(e){return e<0||e==null?this:new aae(this,e)}skip(e){return e<0||e==null?this:new rae(this,e)}prefetch(e){return new t6(this,e)}shuffle(e,t){return new cae(this,e,t)}serial(){return new nae(this)}},Yre=class extends Zt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:Zre(e),done:!1}}},Jre=class extends Zt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},nae=class extends Zt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},rae=class extends Zt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},sae=class extends Zt{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},iae=class extends Zt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Ee(e.value)}}},oae=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},lae=class extends Zt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},e6=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=await this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},p2=class extends Zt{constructor(){super();this.outputQueue=new h2,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},uae=class extends p2{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return!0}},Qv=class extends Zt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},Za;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(Za||(Za={}));var eae=class extends Zt{constructor(e,t=Za.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function r(s){return s instanceof Zt?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let a=await Zv(this.iterators,r);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case Za.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case Za.SHORTEST:return{value:null,done:!0};case Za.LONGEST:default:}return this.count++,{value:a,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},t6=class extends Zt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new Yv(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},cae=class extends t6{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=Hre.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},Vl=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is + ${e}`);let r;return this.size===Infinity||this.size==null?r=this.size:t?r=Math.ceil(this.size/e):r=Math.floor(this.size/e),Bn(async()=>(await n.iterator()).columnMajorBatch(e,t,hae),r)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,Bn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,Bn(async()=>(await t.iterator()).filter(r=>B(()=>e(r))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return Bn(async()=>(await t.iterator()).map(n=>B(()=>e(n))),this.size)}mapAsync(e){let t=this;return Bn(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return Bn(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,Bn(async()=>{let r=d2(async()=>({value:await t.iterator(),done:!1}));return Qre(r.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let r=this,a=Ure.alea(t||v.now().toString());return Bn(async()=>{let s=a.int32();return n&&(s+=a.int32()),(await r.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,Bn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Vl.MAX_BUFFER_SIZE=1e4;function Bn(e,t=null){return new class extends Vl{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function Dre(e){return Bn(async()=>Jv(e),e.length)}function Ore(e){if(!Ul(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await Zv(e,r=>{if(r instanceof Vl)return{value:r.iterator(),recurse:!1};if(Ul(r))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return tae(n,Za.SHORTEST)},t)}function hae(e){if(e===null)return null;let t=e[0];return Xre(t)?{value:dae(e),recurse:!1}:{value:null,recurse:!0}}function dae(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof Ue?dn(e):yr(e)}var Hv=class extends Vl{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` +`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},i0='"',Pc=Symbol("out"),n6=Symbol("field"),o0=Symbol("quote"),f2=Symbol("quoteafterquote"),r6=Symbol("quoteinquote"),jv=class extends Vl{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new Hv(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((r,a)=>(r[a]=r[a]+1||1,r),{}),n=Object.keys(t).filter(r=>t[r]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let r of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(r)===-1)throw new Error('The key "'+r+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},r={};for(let a=0;a14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(J().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new a6(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let r=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(r,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let r=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(r,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(r=>{let a=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&r({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(a),r({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((r,a)=>n.set(r,a*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),yr(n,t)}},s6=class extends Zt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=on([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,r=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,a=(1-n)/2,s=(1-r)/2,i=a+n,o=r+s;this.cropBox=Nn([s,a,o,i],[1,4])}else this.cropBox=Nn([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(J().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new s6(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=rl.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return B(()=>{let t=hn(me(e,"float32"),0),n;n=Je.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let r=n.shape;return G(n,r.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},i6=class{},o6=class extends Zt{split(e){return new pae(this,e)}},pae=class extends o6{constructor(e,t){super();this.upstream=e,this.impl=new fae(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},fae=class extends p2{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},Aae=class extends Zt{decodeUTF8(){return new mae(this)}},mae=class extends o6{constructor(e){super();this.upstream=e,this.impl=new yae(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},yae=class extends p2{constructor(e){super();if(this.upstream=e,J().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=nk();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return J().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},l6=class extends Aae{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(J().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let r=new FileReader;r.onload=s=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},r.onabort=s=>t(new Error("Aborted")),r.onerror=s=>t(new Error(s.type));let a=this.file.slice(this.offset,n);r.readAsArrayBuffer(a)}this.offset=n}),done:!1}}};async function xae(e,t={}){let n,r;typeof e=="string"?n=e:(n=e.url,r=gae(e));let a=await v.fetch(n,r);if(a.ok){let s=new Uint8Array(await a.arrayBuffer());return new l6(s,t)}else throw new Error(a.statusText)}var gae=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function u6(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var Gv=class extends i6{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(u6(this.input)&&J().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new l6(this.input,this.options)}},qv=class extends i6{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return u6(this.url)?new Gv(this.url,this.fileOptions).iterator():xae(this.url,this.fileOptions)}};function zre(e,t={}){return new jv(new qv(e),t)}function Pre(e){let t=d2(e);return Bn(async()=>t)}function Lre(e){return Bn(async()=>{let t=await e();return d2(()=>t.next())})}async function Wre(e,t){return s6.create(e,t)}async function Bre(e){return a6.create(e)}var Vre="3.3.0",wae={tfjs:rk,"tfjs-core":ak,"tfjs-data":sk,"tfjs-layers":ik,"tfjs-converter":ok,"tfjs-backend-cpu":uw,"tfjs-backend-webgl":R_,"tfjs-backend-wasm":_3};var Vn={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function c6(){if(!$f(Vn.name)){Ce("backend registration:",Vn.name);try{Vn.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Vn.width,Vn.height):document.createElement("canvas")}catch(e){Ce("error: cannot create canvas:",e);return}try{Vn.gl=Vn.canvas.getContext("webgl2",Vn.webGLattr)}catch(e){Ce("error: cannot get WebGL2 context:",e);return}try{sp(2,Vn.gl)}catch(e){Ce("error: cannot set WebGL2 context:",e);return}try{let e=new up(Vn.gl);sl(Vn.name,()=>new El(e),Vn.priority)}catch(e){Ce("error: cannot register WebGL backend:",e);return}try{Yo("webgl").forEach(t=>{let n={...t,backendName:Vn.name};ni(n)})}catch(e){Ce("error: cannot update WebGL backend registration:",e);return}try{fr.set("WEBGL_VERSION",2)}catch(e){Ce("error: cannot set WebGL backend flags:",e);return}Ce("backend registered:",Vn.name)}}var h6=6;function _ae(e){let t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let r=0;r({startEndTensor:e,startPoint:Re(e,[0,0],[-1,2]),endPoint:Re(e,[0,2],[-1,2])});function vae(e,t,n){let r=Re(e,[0,1],[-1,2]),a=se(r,t),s=Re(e,[0,3],[-1,2]),i=ge(s,n),o=ge(a,n),l=ge(i,2),u=ye(o,l),c=se(o,l),h=P(u,n),d=P(c,n);return ll([h,d],1)}var d6=class{constructor(t,n){this.model=t,this.anchorsData=_ae(t.inputs[0].shape[1]),this.anchors=Nn(this.anchorsData),this.inputSize=t.inputs[0].shape[2],this.config=n}async getBoundingBoxes(t){if(!t||t.isDisposedInternal||t.shape.length!==4||t.shape[1]<1||t.shape[2]<1)return null;let[n,r,a]=B(()=>{let d=t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),p=this.model.predict(d),f;if(Array.isArray(p)){let g=p.sort((x,I)=>x.size-I.size),_=st([g[0],g[2]],2),b=st([g[1],g[3]],2);f=st([b,_],1).squeeze(0)}else f=p.squeeze();let m=vae(f,this.anchors,[this.inputSize,this.inputSize]),A=Re(f,[0,0],[-1,1]),y=Fn(A).squeeze();return[f,m,y]}),s=await Je.nonMaxSuppressionAsync(r,a,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),i=s.arraySync();s.dispose();let l=i.map(h=>Re(r,[h,0],[1,-1])).map(h=>{let d=h.arraySync();return h.dispose(),d}),u=a.dataSync(),c=[];for(let h=0;hthis.config.face.detector.minConfidence){let f=bae(l[h]),m=this.anchorsData[d],A=B(()=>Re(n,[d,h6-1],[1,-1]).squeeze().reshape([h6,-1]));c.push({box:f,landmarks:A,anchor:m,confidence:p})}}return n.dispose(),r.dispose(),a.dispose(),{boxes:c,scaleFactor:[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]}}};async function p6(e){let t=await Ft(e.face.detector.modelPath,{fromTFHub:e.face.detector.modelPath.includes("tfhub.dev")}),n=new d6(t,e);return e.debug&&Ce(`load model: ${e.face.detector.modelPath.match(/\/(.*)\./)[1]}`),n}function f6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:n,endPoint:r}}function Lc(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Hl(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function jl(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function l0(e,t=1.5){let n=Hl(e),r=Lc(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}function u0(e){let t=Hl(e),n=Lc(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}var c0=[[1,0,0],[0,1,0],[0,0,1]];function kae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function m2(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return kae(n)}function m6(e,t){return[[1,0,e],[0,1,t],[0,0,1]]}function Ya(e,t){let n=0;for(let r=0;ry2[e]),Jce=Sae.map(e=>y2[e]),Qce=Tae.map(e=>y2[e]);var g2=Gr.leftEyeLower0,x2=Gr.rightEyeLower0,Gl={leftBounds:[g2[0],g2[g2.length-1]],rightBounds:[x2[0],x2[x2.length-1]]},d0={count:468,mouth:13,symmetryLine:[13,Gr.midwayBetweenEyes[0]]},x6={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},ql={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function p0(e,t,n,r){for(let a=0;a[s[0]/this.meshSize*(h[0]-this.meshSize/2),s[1]/this.meshSize*(h[1]-this.meshSize/2),h[2]]),o=r!==0?h0(r,[0,0]):c0,l=r!==0?i.map(h=>[...g6(h,o),h[2]]):i,u=r!==0?y6(a):c0,c=[...Hl({startPoint:n.startPoint,endPoint:n.endPoint}),1];return l.map(h=>[h[0]+Ya(c,u[0]),h[1]+Ya(c,u[1]),h[2]])}getLeftToRightEyeDepthDifference(t){let n=t[Gl.leftBounds[0]][2],r=t[Gl.rightBounds[0]][2];return n-r}getEyeBox(t,n,r,a,s=!1){let i=u0(l0(this.calculateLandmarksBoundingBox([t[r],t[a]]),this.irisEnlarge)),o=Lc(i),l=Je.cropAndResize(n,[[i.startPoint[1]/this.meshSize,i.startPoint[0]/this.meshSize,i.endPoint[1]/this.meshSize,i.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return s&&fr.flags.IS_BROWSER&&(l=Je.flipLeftRight(l)),{box:i,boxSize:o,crop:l}}getEyeCoords(t,n,r,a=!1){let s=[];for(let i=0;i{let u=i;return l===2?u=a:l===4&&(u=s),[o[0],o[1],u]})}async predict(t,n){let r=!1,a;if((this.skipped===0||this.skipped>n.face.detector.skipFrames||!n.face.mesh.enabled||!n.videoOptimized)&&(a=await this.boundingBoxDetector.getBoundingBoxes(t),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.boxes&&(!n.face.mesh.enabled||a.boxes.length!==this.detectedFaces&&this.detectedFaces!==n.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let i of a.boxes)this.storedBoxes.push({startPoint:i.box.startPoint.dataSync(),endPoint:i.box.endPoint.dataSync(),landmarks:i.landmarks,confidence:i.confidence});this.storedBoxes.length>0&&(r=!0)}if(n.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),r){if(!a||!a.boxes||a.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{i.box.startPoint.dispose(),i.box.endPoint.dispose(),i.landmarks.dispose()});let s=B(()=>this.storedBoxes.map((i,o)=>{let l=i.confidence,u,c=0,h;if(n.face.detector.rotation&&n.face.mesh.enabled&&fr.flags.IS_BROWSER){let[w,x]=i.landmarks.length>=d0.count?d0.symmetryLine:x6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.boxSize,this.boxSize]).div(255)}else{h=c0;let w=t.clone();n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.boxSize,this.boxSize]).div(255)}if(!n.face.mesh.enabled)return{coords:null,box:i,faceConfidence:null,boxConfidence:i.confidence,confidence:i.confidence,image:u};let[,d,p]=this.meshDetector.predict(u),f=d.dataSync()[0];if(f=d0.count?d0.symmetryLine:x6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255)}let _={coords:g,box:i,faceConfidence:f,boxConfidence:l,image:u,rawCoords:A},b=u0(i);return this.storedBoxes[o]={...b,landmarks:y,confidence:i.confidence,faceConfidence:f},_}));return s=s.filter(i=>i!==null),n.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(i=>i.faceConfidence>n.face.detector.minConfidence)),this.detectedFaces=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s,landmarks:t}}};var yg=Ah(_6());var v2={};pr(v2,{load:()=>k2,predict:()=>N2});var b2={};function qr(e,t){if(!t||!t.kernels)return;let n=5,r=t.kernels.filter(o=>o.kernelTimeMs>0).reduce((o,l)=>o+=l.kernelTimeMs,0),a=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.kernelTimeMs>0).sort((o,l)=>l.kernelTimeMs-o.kernelTimeMs),s=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.totalBytesSnapshot>0).sort((o,l)=>l.totalBytesSnapshot-o.totalBytesSnapshot);a.length>n&&(a.length=n),s.length>n&&(s.length=n);let i={newBytes:t.newBytes,newTensors:t.newTensors,peakBytes:t.peakBytes,numKernelOps:t.kernels.length,timeKernelOps:r,slowestKernelOps:a,largestKernelOps:s};b2[e]=i,Ce("Human profiler",e,i)}var Ja,f0={age:0},m0=Number.MAX_SAFE_INTEGER;async function k2(e){return Ja||(Ja=await Ft(e.face.age.modelPath),e.debug&&Ce(`load model: ${e.face.age.modelPath.match(/\/(.*)\./)[1]}`)),Ja}async function N2(e,t){return Ja?m00?(m0++,f0):(t.videoOptimized?m0=0:m0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Ja.inputs[0].shape[2],Ja.inputs[0].shape[1]],!1),a=P(r,[255]);Ee(r);let s,i={age:0};if(!t.profile)t.face.age.enabled&&(s=await Ja.predict(a));else{let o=t.face.age.enabled?await gr(()=>Ja.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("age",o)}if(a.dispose(),s){let o=s.dataSync();i.age=Math.trunc(10*o[0])/10}s.dispose(),f0=i,n(i)})):null}var I2={};pr(I2,{load:()=>E2,predict:()=>R2});var fa,S2={gender:""},A0=Number.MAX_SAFE_INTEGER,T2=!1,C2=[.2989,.587,.114];async function E2(e){return fa||(fa=await Ft(e.face.gender.modelPath),T2=fa.inputs[0].shape[3]===1,e.debug&&Ce(`load model: ${e.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),fa}async function R2(e,t){return fa?A0{let r=Je.resizeBilinear(e,[fa.inputs[0].shape[2],fa.inputs[0].shape[1]],!1),a;T2?a=B(()=>{let[o,l,u]=Lt(r,3,3),c=P(o,C2[0]),h=P(l,C2[1]),d=P(u,C2[2]);return Ma([c,h,d]).sub(.5).mul(2)}):a=P(r,[255]),Ee(r);let s,i={gender:"",confidence:0};if(!t.profile)t.face.gender.enabled&&(s=await fa.predict(a));else{let o=t.face.gender.enabled?await gr(()=>fa.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("gender",o)}if(a.dispose(),s){let o=s.dataSync();if(T2)(o[0]>t.face.gender.minConfidence||o[1]>t.face.gender.minConfidence)&&(i.gender=o[0]>o[1]?"female":"male",i.confidence=o[0]>o[1]?Math.trunc(100*o[0])/100:Math.trunc(100*o[1])/100);else{let l=Math.trunc(200*Math.abs(o[0]-.5))/100;l>t.face.gender.minConfidence&&(i.gender=o[0]<=.5?"female":"male",i.confidence=Math.min(.99,l))}}s.dispose(),S2=i,n(i)})):null}var F2={};pr(F2,{load:()=>D2,predict:()=>O2});var Eae=["angry","disgust","fear","happy","sad","surprise","neutral"],Qa,M2=[],y0=Number.MAX_SAFE_INTEGER,$2=[.2989,.587,.114];async function D2(e){return Qa||(Qa=await Ft(e.face.emotion.modelPath),e.debug&&Ce(`load model: ${e.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),Qa}async function O2(e,t){return Qa?y00?(y0++,M2):(t.videoOptimized?y0=0:y0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Qa.inputs[0].shape[2],Qa.inputs[0].shape[1]],!1),[a,s,i]=Lt(r,3,3);r.dispose();let o=P(a,$2[0]),l=P(s,$2[1]),u=P(i,$2[2]);a.dispose(),s.dispose(),i.dispose();let c=Ma([o,l,u]);o.dispose(),l.dispose(),u.dispose();let h=B(()=>c.sub(.5).mul(2));c.dispose();let d=[];if(t.face.emotion.enabled){let p;if(t.profile){let f=await gr(()=>Qa.predict(h));p=f.result.dataSync(),f.result.dispose(),qr("emotion",f)}else{let f=await Qa.predict(h);p=f.dataSync(),Ee(f)}for(let f=0;ft.face.emotion.minConfidence&&d.push({score:Math.min(.99,Math.trunc(100*p[f])/100),emotion:Eae[f]});d.sort((f,m)=>m.score-f.score)}h.dispose(),M2=d,n(d)})):null}var Xr;async function z2(e){return Xr||(Xr=await Ft(e.face.embedding.modelPath),e.debug&&Ce(`load model: ${e.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),Xr}function P2(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let r=e.map((s,i)=>Math.abs(e[i]-t[i])**n).reduce((s,i)=>s+i,0)**(1/n);return Math.max(Math.trunc(1e3*(1-r))/1e3,0)}function b6(e,t,n=0){let r={simmilarity:0,name:"",source:"",embedding:[]};if(!e||!t||!Array.isArray(e)||!Array.isArray(t))return r;for(let a of t)if(a.embedding&&a.name){let s=P2(e,a.embedding);s>n&&s>r.simmilarity&&(r={...a,simmilarity:s})}return r}function L2(e){return B(()=>{let n=[[.05,.15,.85,.85]],r=e.image||e.tensor;if(!(r instanceof Ue))return null;let a=r.shape.length===3?Je.cropAndResize(hn(r,0),n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]):Je.cropAndResize(r,n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]),s=[.2989,.587,.114],[i,o,l]=Lt(a,3,3),u=P(i,s[0]),c=P(o,s[1]),h=P(l,s[2]),d=Ma([u,c,h]),p=dn([d,d,d],3).squeeze(4),f=p.sub(p.min());return f.div(f.max())})}async function W2(e,t){return Xr?new Promise(async n=>{let r=[];if(t.face.embedding.enabled){let a=L2(e);if(!t.profile)r=B(()=>[...Xr.predict(a).reshape([128,2]).logSumExp(1).dataSync()]);else{let s=await gr(()=>Xr.predict({img_inputs:a}));r=[...s.result.dataSync()],s.result.dispose(),qr("emotion",s)}Ee(a)}n(r)}):[]}var J2={};pr(J2,{PoseNet:()=>Q2,load:()=>eg});function Rae(e){let[t,n,r,a]=e;return{offsets:t,heatmap:n,displacementFwd:r,displacementBwd:a}}var B2=class{constructor(t){this.model=t}predict(t){return B(()=>{let r=t.toFloat().div(127.5).sub(1).expandDims(0),s=this.model.predict(r).map(o=>o.squeeze([0])),i=Rae(s);return{heatmapScores:i.heatmap.sigmoid(),offsets:i.offsets,displacementFwd:i.displacementFwd,displacementBwd:i.displacementBwd}})}dispose(){this.model.dispose()}};function V2(e){return Math.floor(e/2)}var U2=class{constructor(t,n){this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=n}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(V2(t),t);)this.exchange(t,V2(t)),t=V2(t)}sink(t){for(;2*t<=this.numberOfElements;){let n=2*t;if(nt){l=!1;break}if(!l)break}return l}function v6(e,t,n){let[r,a,s]=n.shape,i=new U2(r*a*s,({score:o})=>o);for(let o=0;on?n:e}function N6(e,t,n,r){let a=n-e,s=r-t;return a*a+s*s}function X2(e,t){return{x:e.x+t.x,y:e.y+t.y}}var w0=Ah(g0());function I6(e,t){let n=t.shape[0],r=new Float32Array(n);for(let a=0;ae.toTensor().mul(be(t,"int32")).toFloat().add(Wae(e,n)))}function Bae(e,t){return B(()=>{let n=e.div(be(t,"int32"));return e.sub(n.mul(be(t,"int32")))})}function T6(e){let[t,n,r]=e.shape;return B(()=>{let s=e.reshape([t*n,r]).argMax(0),i=s.div(be(n,"int32")).expandDims(1),o=Bae(s,n).expandDims(1);return st([i,o],1)})}var C6=ma.poseChain.map(([e,t])=>[ma.partIds[e],ma.partIds[t]]),K2=C6.map(([,e])=>e),E6=C6.map(([e])=>e),Vae=16;function Uae(e,t,n){let r=n.shape[2]/2;return{y:n.get(t.y,t.x,e),x:n.get(t.y,t.x,r+e)}}function Z2(e,t,n,r){return{y:q2(Math.round(e.y/t),0,n-1),x:q2(Math.round(e.x/t),0,r-1)}}function R6(e,t,n,r,a,s,i,o=2){let[l,u]=r.shape,c=Z2(t.position,s,l,u),h=Uae(e,c,i),p=X2(t.position,h);for(let A=0;A=0;--d){let p=K2[d],f=E6[d];l[p]&&!l[f]&&(l[f]=R6(d,l[p],f,t,n,r,s))}for(let d=0;d(r+=f,{position:{y:c.get(m,0),x:c.get(m,1)},part:ma.partNames[m],score:f})),p=d.filter(f=>f.score>n);return a.dispose(),u.dispose(),{keypoints:p,score:r/d.length}}var Hae=1,$6=16;function D6(e,t,{x:n,y:r},a){return e.some(({keypoints:s})=>{let i=s[a].position;return N6(r,n,i.y,i.x)<=t})}function jae(e,t,n){return n.reduce((a,{position:s,score:i},o)=>(D6(e,t,s,o)||(a+=i),a),0)/n.length}function O6(e,t,n,r,a,s,i){let o=[],l=v6(i,Hae,e),u=a^2;for(;o.lengthi&&o.push({keypoints:d,score:p})}return o}async function z6(e){return Promise.all(e.map(t=>t.buffer()))}function Gae(e,t,n){return{score:e.score,keypoints:e.keypoints.map(({score:r,part:a,position:s})=>({score:r,part:a,position:{x:Math.trunc(s.x*n),y:Math.trunc(s.y*t)}}))}}function P6(e,[t,n]){let r=e.squeeze(0),a=r.resizeBilinear([t,n]);return r.dispose(),a}function Y2(e,[t,n],[r,a]){return e.map(i=>Gae(i,t/r,n/a))}async function qae(e,t,n,r){return new Promise(async a=>{let s=await z6([t.heatmapScores,t.offsets,t.displacementFwd,t.displacementBwd]),i=s[0],o=s[1],l=s[2],u=s[3],c=await O6(i,o,l,u,n.body.nmsRadius,n.body.maxDetections,n.body.scoreThreshold),h=Y2(c,[e.shape[1],e.shape[2]],[r,r]);a(h)})}async function Xae(e,t,n,r){return new Promise(async a=>{let s=await M6(t.heatmapScores,t.offsets,n.body.scoreThreshold),i=Y2([s],[e.shape[1],e.shape[2]],[r,r]);a(i)})}var Q2=class{constructor(t){this.baseModel=t,this.inputSize=t.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(t,n){let r=P6(t,[this.inputSize,this.inputSize]),a=this.baseModel.predict(r,n),s=n.body.maxDetections<2?await Xae(t,a,n,this.inputSize):await qae(t,a,n,this.inputSize);return a.heatmapScores.dispose(),a.offsets.dispose(),a.displacementFwd.dispose(),a.displacementBwd.dispose(),r.dispose(),s}dispose(){this.baseModel.dispose()}};async function eg(e){let t=await Ft(e.body.modelPath),n=new B2(t);return e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`),new Q2(n)}var sg={};pr(sg,{HandPose:()=>og,load:()=>lg});function _0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Wc(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function L6(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function W6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],a=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:n,endPoint:r,palmLandmarks:a,confidence:e.confidence}}function b0(e,t=1.5){let n=Wc(e),r=_0(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function v0(e){let t=Wc(e),n=_0(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}var tg=class{constructor(t,n,r){this.model=t,this.anchors=r.map(a=>[a.x_center,a.y_center]),this.anchorsTensor=Nn(this.anchors),this.inputSize=n,this.inputSizeTensor=on([n,n]),this.doubleInputSizeTensor=on([n*2,n*2])}normalizeBoxes(t){return B(()=>{let n=Re(t,[0,0],[-1,2]),r=Re(t,[0,2],[-1,2]),a=se(ge(n,this.inputSizeTensor),this.anchorsTensor),s=ge(r,this.doubleInputSizeTensor),i=P(ye(a,s),this.inputSizeTensor),o=P(se(a,s),this.inputSizeTensor);return ll([i,o],1)})}normalizeLandmarks(t,n){return B(()=>{let r=se(ge(t.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[n]);return P(r,this.inputSizeTensor)})}async getBoxes(t,n){let r=this.model.predict(t),a=r.squeeze();r.dispose();let s=B(()=>Fn(Re(a,[0,0],[-1,1])).squeeze()),i=s.dataSync(),o=Re(a,[0,1],[-1,4]),l=this.normalizeBoxes(o);o.dispose();let u=await Je.nonMaxSuppressionAsync(l,i,n.hand.maxHands,n.hand.iouThreshold,n.hand.scoreThreshold),c=u.arraySync();s.dispose(),u.dispose();let h=[];for(let d of c)if(i[d]>=n.hand.minConfidence){let p=Re(l,[d,0],[1,-1]),f=Re(a,[d,5],[1,14]),m=B(()=>this.normalizeLandmarks(f,d).reshape([-1,2]));f.dispose(),h.push({box:p,palmLandmarks:m,confidence:i[d]})}return a.dispose(),l.dispose(),h}async estimateHandBounds(t,n){let r=t.shape[1],a=t.shape[2],s=B(()=>t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),i=await this.getBoxes(s,n);s.dispose();let o=[];if(!i||i.length===0)return o;for(let l of i){let u=l.box.dataSync(),c=u.slice(0,2),h=u.slice(2,4),d=l.palmLandmarks.arraySync();l.box.dispose(),l.palmLandmarks.dispose(),o.push(W6({startPoint:c,endPoint:h,palmLandmarks:d,confidence:l.confidence},[a/this.inputSize,r/this.inputSize]))}return o}};function Kae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function B6(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Kae(n)}var V6=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function es(e,t){let n=0;for(let r=0;rrg([...s,1],n)),a=this.calculateLandmarksBoundingBox(r);return b0(v0(a),Yae)}getBoxForHandLandmarks(t){let n=this.calculateLandmarksBoundingBox(t),r=b0(v0(n),j6);r.palmLandmarks=[];for(let a=0;a[i[0]*(p[0]-this.inputSize/2),i[1]*(p[1]-this.inputSize/2),i[2]*p[2]]),l=ng(r,[0,0]),u=o.map(p=>[...rg(p,l),p[2]]),c=H6(a),h=[...Wc(n),1],d=[es(h,c[0]),es(h,c[1])];return u.map(p=>[p[0]+d[0],p[1]+d[1],p[2]])}async estimateHands(t,n){let r=!1,a;(this.skipped===0||this.skipped>n.hand.skipFrames||!n.hand.landmarks||!n.videoOptimized)&&(a=await this.handDetector.estimateHandBounds(t,n),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.length>0&&(a.length!==this.detectedHands&&this.detectedHands!==n.hand.maxHands||!n.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...a],this.storedBoxes.length>0&&(r=!0));let s=[];n.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let i=0;i=n.hand.minConfidence){let _=G(y,[-1,3]),b=_.arraySync();y.dispose(),_.dispose();let w=this.transformRawCoords(b,p,l,d),x=this.getBoxForHandLandmarks(w);this.storedBoxes[i]=x;let I={landmarks:w,confidence:g,box:{topLeft:x.startPoint,bottomRight:x.endPoint}};s.push(I)}else this.storedBoxes[i]=null;y.dispose()}else{let l=b0(v0(o),j6),u={confidence:o.confidence,box:{topLeft:l.startPoint,bottomRight:l.endPoint}};s.push(u)}}return this.storedBoxes=this.storedBoxes.filter(i=>i!==null),this.detectedHands=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s}}};var q6=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var ig={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},og=class{constructor(t){this.handPipeline=t}static getAnnotations(){return ig}async estimateHands(t,n){let r=await this.handPipeline.estimateHands(t,n);if(!r)return[];let a=[];for(let s of r){let i={};if(s.landmarks)for(let l of Object.keys(ig))i[l]=ig[l].map(u=>s.landmarks[u]);let o=s.box?[Math.max(0,s.box.topLeft[0]),Math.max(0,s.box.topLeft[1]),Math.min(t.shape[2],s.box.bottomRight[0])-s.box.topLeft[0],Math.min(t.shape[1],s.box.bottomRight[1])-s.box.topLeft[1]]:0;a.push({confidence:s.confidence,box:o,landmarks:s.landmarks,annotations:i})}return a}};async function lg(e){let[t,n]=await Promise.all([e.hand.enabled?Ft(e.hand.detector.modelPath,{fromTFHub:e.hand.detector.modelPath.includes("tfhub.dev")}):null,e.hand.landmarks?Ft(e.hand.skeleton.modelPath,{fromTFHub:e.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),r=new tg(t,t==null?void 0:t.inputs[0].shape[2],q6),a=new ag(r,n,n==null?void 0:n.inputs[0].shape[2]),s=new og(a);return e.hand.enabled&&e.debug&&Ce(`load model: ${e.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),e.hand.landmarks&&e.debug&&Ce(`load model: ${e.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),s}var ug={};pr(ug,{load:()=>cg,predict:()=>hg});var X6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],K6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var hr;async function cg(e){return hr||(hr=await Ft(e.body.modelPath),hr.width=parseInt(hr.signature.inputs["input_1:0"].tensorShape.dim[2].size),hr.height=parseInt(hr.signature.inputs["input_1:0"].tensorShape.dim[1].size),e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`)),hr}async function hg(e,t){if(!hr||!t.body.enabled)return null;let n={width:e.shape[2],height:e.shape[1]},r=Je.resizeBilinear(e,[hr.width,hr.height],!1),a=ge(r,[255]);r.dispose();let s;if(t.profile){let u=await gr(()=>hr.predict(a));s=u.result.find(c=>c.size===195||c.size===155).dataSync(),u.result.forEach(c=>c.dispose()),qr("blazepose",u)}else{let u=await hr.predict(a);s=u.find(c=>c.size===195||c.size===155).dataSync(),u.forEach(c=>c.dispose())}a.dispose();let i=[],o=s.length===195?X6:K6,l=5;for(let u=0;u{if(!e)return[];let t=[];for(let n=0;nl.part==="leftWrist"),a=e[n].keypoints.find(l=>l.part==="rightWrist"),s=e[n].keypoints.find(l=>l.part==="nose");s&&r&&a&&r.position.yl.part==="leftShoulder"),o=e[n].keypoints.find(l=>l.part==="rightShoulder");i&&o&&t.push({body:n,gesture:`leaning ${i.position.y>o.position.y?"left":"right"}`})}return t},Y6=e=>{if(!e)return[];let t=[];for(let n=0;n0){let r=e[n].mesh[33][2]-e[n].mesh[263][2];Math.abs(r)<10?t.push({face:n,gesture:"facing camera"}):t.push({face:n,gesture:`facing ${r<0?"right":"left"}`}),Math.abs(e[n].mesh[374][1]-e[n].mesh[386][1])/Math.abs(e[n].mesh[443][1]-e[n].mesh[450][1])<.2&&t.push({face:n,gesture:"blink left eye"}),Math.abs(e[n].mesh[145][1]-e[n].mesh[159][1])/Math.abs(e[n].mesh[223][1]-e[n].mesh[230][1])<.2&&t.push({face:n,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[n].mesh[13][1]-e[n].mesh[14][1])/Math.abs(e[n].mesh[10][1]-e[n].mesh[152][1]));i>10&&t.push({face:n,gesture:`mouth ${Math.trunc(i)}% open`});let o=e[n].mesh[152][2];Math.abs(o)>10&&t.push({face:n,gesture:`head ${o<0?"up":"down"}`})}return t},J6=e=>{if(!e)return[];let t=[];for(let n=0;n{if(!e)return[];let t=[];for(let n=0;n0){let a=r.reduce((i,o)=>i.position[2]i.position[1](u[d]=0,h))},a=function(o,l){let u=e.createShader(l);if(e.shaderSource(u,o),e.compileShader(u),!e.getShaderParameter(u,e.COMPILE_STATUS))throw new Error("Filter: GL compile failed",e.getShaderInfoLog(u));return u};this.uniform={},this.attribute={};let s=a(t,e.VERTEX_SHADER),i=a(n,e.FRAGMENT_SHADER);if(this.id=e.createProgram(),e.attachShader(this.id,s),e.attachShader(this.id,i),e.linkProgram(this.id),!e.getProgramParameter(this.id,e.LINK_STATUS))throw new Error("Filter: GL link failed",e.getProgramInfoLog(this.id));e.useProgram(this.id),r(t,"attribute",this.attribute);for(let o in this.attribute)this.attribute[o]=e.getAttribLocation(this.id,o);r(t,"uniform",this.uniform),r(n,"uniform",this.uniform);for(let o in this.uniform)this.uniform[o]=e.getUniformLocation(this.id,o)}function e4(e){e||(e={});let t=0,n=null,r=!1,a=-1,s=[null,null],i=[],o=-1,l=-1,u=null,c=null,h={},d=e.canvas||document.createElement("canvas"),p={},f={INTERMEDIATE:1},m=d.getContext("webgl");if(!m)throw new Error("Filter: getContext() failed");this.addFilter=function(w){let x=Array.prototype.slice.call(arguments,1),I=h[w];i.push({func:I,args:x})},this.reset=function(){i=[]};let A=function(w,x){if(!(w===o&&x===l)){if(d.width=w,o=w,d.height=x,l=x,!u){let I=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);u=m.createBuffer(),m.bindBuffer(m.ARRAY_BUFFER,u),m.bufferData(m.ARRAY_BUFFER,I,m.STATIC_DRAW),m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}m.viewport(0,0,o,l),s=[null,null]}},y=function(w,x){let I=m.createFramebuffer();m.bindFramebuffer(m.FRAMEBUFFER,I);let S=m.createRenderbuffer();m.bindRenderbuffer(m.RENDERBUFFER,S);let T=m.createTexture();return m.bindTexture(m.TEXTURE_2D,T),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,w,x,0,m.RGBA,m.UNSIGNED_BYTE,null),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,m.TEXTURE_2D,T,0),m.bindTexture(m.TEXTURE_2D,null),m.bindFramebuffer(m.FRAMEBUFFER,null),{fbo:I,texture:T}},g=function(w){return s[w]=s[w]||y(o,l),s[w]},_=function(w=null){var T,M;let x=null,I=null,S=!1;t===0?x=n:x=(T=g(a))==null?void 0:T.texture,t++,r&&!(w&f.INTERMEDIATE)?(I=null,S=t%2==0):(a=(a+1)%2,I=(M=g(a))==null?void 0:M.fbo),m.bindTexture(m.TEXTURE_2D,x),m.bindFramebuffer(m.FRAMEBUFFER,I),m.uniform1f(c.uniform.flipY,S?-1:1),m.drawArrays(m.TRIANGLES,0,6)};this.apply=function(w){if(A(w.width,w.height),t=0,n||(n=m.createTexture()),m.bindTexture(m.TEXTURE_2D,n),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,w),i.length===0)return _(),d;for(let x=0;x0,s=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0,i=a,o=s;if(i>k0&&(i=k0,o=i*s/a),o>k0&&(o=k0,i=o*a/s),t.filter.width>0?i=t.filter.width:t.filter.height>0&&(i=a*(t.filter.height/s)),t.filter.height>0?o=t.filter.height:t.filter.width>0&&(o=s*(t.filter.width/a)),!i||!o)return Ce("Human: invalid input",e),{tensor:null,canvas:null};(!Ct||Ct.width!==i||Ct.height!==o)&&(Ct=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas"),Ct.width!==i&&(Ct.width=i),Ct.height!==o&&(Ct.height=o));let l=Ct.getContext("2d");if(e instanceof ImageData?l.putImageData(e,0,0):l.drawImage(e,0,0,a,s,0,0,Ct.width,Ct.height),t.filter.enabled){if((!Mt||!rn||Ct.width!==rn.width||Ct.height!==rn.height)&&(rn=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Ct.width,Ct.height):document.createElement("canvas"),rn.width!==Ct.width&&(rn.width=Ct.width),rn.height!==Ct.height&&(rn.height=Ct.height),Mt=fr.flags.IS_BROWSER?new Q6({canvas:rn}):null),!Mt)return{tensor:null,canvas:Ct};Mt.reset(),Mt.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&Mt.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&Mt.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&Mt.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&Mt.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&Mt.addFilter("hue",t.filter.hue),t.filter.negative&&Mt.addFilter("negative"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.vintage&&Mt.addFilter("brownie"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.kodachrome&&Mt.addFilter("kodachrome"),t.filter.technicolor&&Mt.addFilter("technicolor"),t.filter.polaroid&&Mt.addFilter("polaroid"),t.filter.pixelate!==0&&Mt.addFilter("pixelate",t.filter.pixelate),Mt.apply(Ct)}else rn=Ct,Mt&&(Mt=null);let u;if(rn.data){let h=[rn.height,rn.width,3];u=ld(rn.data,h,"int32")}else if(t.backend==="webgl"||rn instanceof ImageData)u=rl.fromPixels(rn);else{let h=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas");h.width=i,h.height=o;let d=h.getContext("2d");d==null||d.drawImage(rn,0,0);let p=d==null?void 0:d.getImageData(0,0,i,o);u=rl.fromPixels(p)}let c=u.toFloat();n=c.expandDims(0),u.dispose(),c.dispose()}let r=t.filter.return?rn:null;return{tensor:n,canvas:r}}var mt={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var N0=` +`)}var k0=2048,Ct=null,rn=null,Mt=null;function dg(e,t){let n;if(e instanceof Ue)n=Rr(e);else{let a=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,s=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0,i=a,o=s;if(i>k0&&(i=k0,o=i*s/a),o>k0&&(o=k0,i=o*a/s),t.filter.width>0?i=t.filter.width:t.filter.height>0&&(i=a*(t.filter.height/s)),t.filter.height>0?o=t.filter.height:t.filter.width>0&&(o=s*(t.filter.width/a)),!i||!o)return Ce("Human: invalid input",e),{tensor:null,canvas:null};(!Ct||Ct.width!==i||Ct.height!==o)&&(Ct=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas"),Ct.width!==i&&(Ct.width=i),Ct.height!==o&&(Ct.height=o));let l=Ct.getContext("2d");if(e instanceof ImageData?l.putImageData(e,0,0):l.drawImage(e,0,0,a,s,0,0,Ct.width,Ct.height),t.filter.enabled){if((!Mt||!rn||Ct.width!==rn.width||Ct.height!==rn.height)&&(rn=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Ct.width,Ct.height):document.createElement("canvas"),rn.width!==Ct.width&&(rn.width=Ct.width),rn.height!==Ct.height&&(rn.height=Ct.height),Mt=fr.flags.IS_BROWSER?new e4({canvas:rn}):null),!Mt)return{tensor:null,canvas:Ct};Mt.reset(),Mt.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&Mt.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&Mt.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&Mt.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&Mt.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&Mt.addFilter("hue",t.filter.hue),t.filter.negative&&Mt.addFilter("negative"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.vintage&&Mt.addFilter("brownie"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.kodachrome&&Mt.addFilter("kodachrome"),t.filter.technicolor&&Mt.addFilter("technicolor"),t.filter.polaroid&&Mt.addFilter("polaroid"),t.filter.pixelate!==0&&Mt.addFilter("pixelate",t.filter.pixelate),Mt.apply(Ct)}else rn=Ct,Mt&&(Mt=null);let u;if(rn.data){let h=[rn.height,rn.width,3];u=ld(rn.data,h,"int32")}else if(t.backend==="webgl"||rn instanceof ImageData)u=rl.fromPixels(rn);else{let h=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas");h.width=i,h.height=o;let d=h.getContext("2d");d==null||d.drawImage(rn,0,0);let p=d==null?void 0:d.getImageData(0,0,i,o);u=rl.fromPixels(p)}let c=u.toFloat();n=c.expandDims(0),u.dispose(),c.dispose()}let r=t.filter.return?rn:null;return{tensor:n,canvas:r}}var mt={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var N0=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -4889,7 +4889,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var dg={};pr(dg,{author:()=>o4,browser:()=>s4,bugs:()=>l4,default:()=>ese,description:()=>t4,devDependencies:()=>m4,engines:()=>h4,homepage:()=>u4,keywords:()=>f4,license:()=>c4,main:()=>r4,module:()=>a4,name:()=>e4,repository:()=>d4,scripts:()=>p4,sideEffects:()=>n4,types:()=>i4,version:()=>pg});var e4="@vladmandic/human",pg="1.1.4",t4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",n4=!1,r4="dist/human.node.js",a4="dist/human.esm.js",s4="dist/human.esm.js",i4="types/src/human.d.ts",o4="Vladimir Mandic ",l4={url:"https://github.com/vladmandic/human/issues"},u4="https://vladmandic.github.io/human/demo/index.html",c4="MIT",h4={node:">=12.0.0"},d4={type:"git",url:"git+https://github.com/vladmandic/human.git"},p4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},f4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],m4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},ese={name:e4,version:pg,description:t4,sideEffects:n4,main:r4,module:a4,browser:s4,types:i4,author:o4,bugs:l4,homepage:u4,license:c4,engines:h4,repository:d4,scripts:p4,keywords:f4,devDependencies:m4};var fg={};pr(fg,{all:()=>nse,body:()=>x4,canvas:()=>tse,drawOptions:()=>ce,face:()=>g4,gesture:()=>y4,hand:()=>w4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function A4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function mg(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){mg(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function g4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&A4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);mg(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function x4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&mg(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,A4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function tse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function nse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(g4(e,t.face),x4(e,t.body),w4(e,t.hand),y4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,_4=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&u6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?L2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await L2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=fg,ea(this,C0,dg),this.version=pg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>hg(n,this.config),this.classes={facemesh:Ag,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?Y2:lg,hand:ag},this.sysinfo=Rg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?_6(t,n):0}enhance(t){return this.config.face.embedding.enabled?P2(t):null}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?Ag.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?og(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Q2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?ug(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await Ag.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await og(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Q2(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await ug(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=hg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?cg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await cg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...Z6(c),...K6(l),...J6(u),...Y6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;export{_4 as Human,_4 as default}; +2Q==`;var pg={};pr(pg,{author:()=>l4,browser:()=>i4,bugs:()=>u4,default:()=>tse,description:()=>n4,devDependencies:()=>A4,engines:()=>d4,homepage:()=>c4,keywords:()=>m4,license:()=>h4,main:()=>a4,module:()=>s4,name:()=>t4,repository:()=>p4,scripts:()=>f4,sideEffects:()=>r4,types:()=>o4,version:()=>fg});var t4="@vladmandic/human",fg="1.1.5",n4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",r4=!1,a4="dist/human.node.js",s4="dist/human.esm.js",i4="dist/human.esm.js",o4="types/src/human.d.ts",l4="Vladimir Mandic ",u4={url:"https://github.com/vladmandic/human/issues"},c4="https://vladmandic.github.io/human/demo/index.html",h4="MIT",d4={node:">=12.0.0"},p4={type:"git",url:"git+https://github.com/vladmandic/human.git"},f4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},m4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],A4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},tse={name:t4,version:fg,description:n4,sideEffects:r4,main:a4,module:s4,browser:i4,types:o4,author:l4,bugs:u4,homepage:c4,license:h4,engines:d4,repository:p4,scripts:f4,keywords:m4,devDependencies:A4};var mg={};pr(mg,{all:()=>rse,body:()=>w4,canvas:()=>nse,drawOptions:()=>ce,face:()=>x4,gesture:()=>g4,hand:()=>_4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function y4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function Ag(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){Ag(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function x4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&y4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);Ag(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&Ag(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function _4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,y4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function nse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function rse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(x4(e,t.face),w4(e,t.body),_4(e,t.hand),g4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,b4=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&c6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?W2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await W2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=mg,ea(this,C0,pg),this.version=fg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>dg(n,this.config),this.classes={facemesh:yg,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?J2:ug,hand:sg},this.sysinfo=Fg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?P2(t,n):0}enhance(t){return L2(t)}match(t,n,r=0){return b6(t,n,r)}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?yg.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?lg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?eg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?cg(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await yg.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await lg(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await eg(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await cg(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=dg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?hg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await hg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...Y6(c),...Z6(l),...Q6(u),...J6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;export{b4 as Human,b4 as default}; /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/human.esm.js.map b/dist/human.esm.js.map index 34e0c2b1..bcced17b 100644 --- a/dist/human.esm.js.map +++ b/dist/human.esm.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/log.ts", "../src/sysinfo.ts", "../node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "(disabled):crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "(disabled):path", "(disabled):worker_threads", "(disabled):perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/transform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transform.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transform_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transform.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.ts", "../src/tfjs/backend.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/blazeface/facepipeline.ts", "../src/human.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/box.ts", "../src/handpose/handdetector.ts", "../src/handpose/util.ts", "../src/handpose/handpipeline.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/gesture/gesture.ts", "../src/imagefx.js", "../src/image.ts", "../config.ts", "../src/sample.ts", "../src/draw.ts"], - "sourcesContent": ["import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\n// Detect the global object, even if operating in strict mode.\n// http://stackoverflow.com/a/14387057/265298\nvar global = (0, eval)('this'),\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n enhance(input: Tensor): Tensor | null {\n if (this.config.face.embedding.enabled) return embedding.enhance(input);\n return null;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2) {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function enhance(input) {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config) {\n if (!model) return null;\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return output;\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n image.dispose();\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], - "mappings": ";;;;;;;61BAAA,qEAMO,YAAwB,CAI7B,YAAY,EAAW,EAAgB,EAAW,EAAQ,CACxD,KAAK,aAAe,GAAiB,IAAS,EAAW,EAAgB,GACzE,KAAK,OAAS,OAGV,eAAc,EAAO,EAAkH,CAC3I,GAAM,GAAc,KAAM,MAAK,aAAa,QAAQ,EAAO,GACrD,EAAgH,GACtH,OAAW,KAAe,IAAe,GAAK,CAC5C,GAAI,EAAW,mBAAoB,SACnC,GAAM,GAAO,EAAW,OAAS,EAAW,OAAO,YAAc,GAC3D,EAAU,EAAK,IAAI,AAAC,GAAO,CAC/B,EAAG,GAAK,EAAM,MAAM,GACpB,EAAG,GAAK,EAAM,MAAM,GACpB,EAAG,GAAK,KAAK,aAAa,WAEtB,EAAc,GACpB,GAAI,GAAQ,EAAK,OAAS,EACxB,OAAW,KAAO,QAAO,KAAY,IAAmB,EAAY,GAAO,AAAO,GAAiB,GAAK,IAAI,AAAC,GAAU,EAAK,IAE9H,GAAM,GAAM,EAAW,IAAM,CAC3B,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,IACtC,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,IACtC,KAAK,IAAI,EAAM,MAAM,GAAI,EAAW,IAAI,SAAS,IAAM,EAAW,IAAI,WAAW,GACjF,KAAK,IAAI,EAAM,MAAM,GAAI,EAAW,IAAI,SAAS,IAAM,EAAW,IAAI,WAAW,IAC/E,EACE,EAAS,EAAW,IAAM,CAC9B,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,GAAK,EAAM,MAAM,IACvD,KAAK,IAAI,EAAG,EAAW,IAAI,WAAW,GAAK,EAAM,MAAM,IACvD,KAAK,IAAI,EAAM,MAAM,GAAK,EAAW,IAAI,SAAS,GAAM,EAAW,IAAI,WAAW,IAAM,EAAM,MAAM,GACpG,KAAK,IAAI,EAAM,MAAM,GAAK,EAAW,IAAI,SAAS,GAAM,EAAW,IAAI,WAAW,IAAM,EAAM,MAAM,IAClG,GACJ,EAAQ,KAAK,CACX,WAAY,EAAW,gBAAkB,EAAW,eAAiB,EACrE,cAAe,EAAW,cAC1B,eAAgB,EAAW,eAC3B,MACA,OACA,SACA,UACA,cACA,MAAO,EAAW,MAAQ,EAAW,MAAM,QAAU,OAEnD,EAAW,QAAQ,EAAW,OAAO,UACrC,EAAW,OAAO,EAAW,MAAM,UAEzC,MAAO,KAIP,GAAa,CAAC,KAAM,KAAM,MAC9B,mBAA2B,EAAQ,CAEjC,GAAa,KAAM,SAAQ,IAAI,CAC5B,CAAC,GAAW,IAAM,EAAO,KAAK,QAAW,AAAU,GAAK,GAAU,KAClE,CAAC,GAAW,IAAM,EAAO,KAAK,KAAK,QAAW,AAAG,GAAe,EAAO,KAAK,KAAK,UAAW,CAAE,UAAW,EAAO,KAAK,KAAK,UAAU,SAAS,eAAkB,KAC/J,CAAC,GAAW,IAAM,EAAO,KAAK,KAAK,QAAW,AAAG,GAAe,EAAO,KAAK,KAAK,UAAW,CAAE,UAAW,EAAO,KAAK,KAAK,UAAU,SAAS,eAAkB,OAElK,GAAM,GAAW,GAAI,IAAkB,GAAW,GAAI,GAAW,GAAI,GAAW,GAAI,GACpF,MAAI,GAAO,KAAK,KAAK,SAAW,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,KAAK,UAAU,MAAM,YAAY,MAC1G,EAAO,KAAK,KAAK,SAAW,EAAO,OAAO,GAAI,eAAe,EAAO,KAAK,KAAK,UAAU,MAAM,YAAY,MACvG,EAGT,GAAQ,cAAuB,KC1E/B,0JAAO,GAAM,KAAY,CACvB,OAAQ,UAAW,WAAY,UAAW,WAAY,eACtD,gBAAiB,YAAa,aAAc,YAAa,aACzD,UAAW,WAAY,WAAY,YAAa,YAAa,cAGlD,IAAgB,GAAQ,UAAU,OAElC,GAAU,GAAQ,UAAU,OAAO,CAAC,EAAQ,EAAW,IAClE,GAAO,GAAa,EACb,GACN,IAEG,IAAqB,CACzB,CAAC,UAAW,gBAAiB,CAAC,YAAa,gBAC3C,CAAC,YAAa,aAAc,CAAC,UAAW,YACxC,CAAC,WAAY,aAAc,CAAC,WAAY,iBACxC,CAAC,aAAc,iBAAkB,CAAC,aAAc,cAChD,CAAC,WAAY,aAAc,CAAC,YAAa,cACzC,CAAC,eAAgB,iBAAkB,CAAC,UAAW,aAEpC,IAAuB,IAAmB,IAAI,CAAC,CAAC,EAAY,KAAiB,CAAC,GAAQ,GAAa,GAAQ,KAE3G,IAAY,CACvB,CAAC,OAAQ,WAAY,CAAC,UAAW,WAAY,CAAC,OAAQ,YACtD,CAAC,WAAY,YAAa,CAAC,OAAQ,gBACnC,CAAC,eAAgB,aAAc,CAAC,YAAa,aAC7C,CAAC,eAAgB,WAAY,CAAC,UAAW,YACzC,CAAC,WAAY,aAAc,CAAC,OAAQ,iBACpC,CAAC,gBAAiB,cAAe,CAAC,aAAc,cAChD,CAAC,gBAAiB,YAAa,CAAC,WAAY,aAC5C,CAAC,YAAa,eAGH,IAAe,CAC1B,YACA,aACA,wBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,aACA,wBACA,YACA,cACA,aACA,wBACA,uBACA,uBACA,uBACA,uBACA,sBACA,sBACA,aACA,wBACA,eCzDK,eAAgB,EAAK,CAC1B,GAAM,GAAK,GAAI,MACT,EAAK,GAAG,EAAG,WAAW,WAAW,SAAS,EAAG,QAAQ,EAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,EAAG,aAAa,WAAW,SAAS,EAAG,QAAQ,EAAG,kBAAkB,WAAW,SAAS,EAAG,OAErM,AAAI,GAAK,QAAQ,IAAI,EAAI,SAAU,GAAG,GCLjC,aAAgB,CACrB,GAAI,GACA,EACJ,GAAI,MAAO,YAAc,YAAa,CACpC,GAAM,GAAM,UAAU,UAAU,MAAM,iBACtC,AAAI,GAAO,EAAI,IAEb,GAAW,EAAI,GAAG,MAAM,iBAAiB,GAAG,QAAQ,SAAU,IAC9D,EAAQ,UAAU,UAAU,QAAQ,EAAI,GAAI,IACxC,EAAS,IAAI,GAAQ,EAAM,QAAQ,EAAI,GAAI,KAC/C,EAAQ,EAAM,QAAQ,MAAO,UAE1B,AAAI,OAAO,UAAY,aAC5B,GAAW,GAAG,QAAQ,YAAY,QAAQ,OAC1C,EAAQ,UAAU,QAAQ,WAE5B,MAAO,CAAE,WAAU,u1QChBrB,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,CAAA,EAAA,IAAA,CA2BC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAc,EAAM,CAClB,GAAI,GAAK,KAAM,EAAO,IAEtB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,QAAU,EAAG,GAAK,EAAG,EAAI,sBACjC,MAAA,GAAG,GAAK,EAAG,GACX,EAAG,GAAK,EAAG,GACJ,EAAG,GAAK,EAAK,GAAG,EAAI,EAAI,IAIjC,EAAG,EAAI,EACP,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAO,KAGT,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAK,GACd,EAAQ,GAAQ,EAAK,MACrB,EAAO,EAAG,KACd,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAQ,GAAG,OAAS,WAAe,GAC7D,EAAK,OAAS,UAAW,CACvB,MAAO,KAAU,KAAS,QAAW,GAAK,uBAE5C,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGT,YAAgB,CACd,GAAI,GAAI,WAEJ,EAAO,SAAS,EAAM,CACxB,EAAO,EAAK,WACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAK,EAAK,WAAW,GACrB,GAAI,GAAI,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,GAIL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,KAAO,IAIZ,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9GnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAEzB,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGP,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAK,EAAG,GAAK,GACxB,MAAA,GAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACH,EAAG,GAAM,EAAG,IAAM,GAAM,EAAK,IAAM,GAGxC,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC7EnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAK,EAAG,EAAK,EAAG,IAAM,EAC1B,MAAA,GAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EACzC,GAAG,EAAK,EAAG,EAAI,OAAS,GAC5B,GAAG,EAAK,EAAG,EAAK,EAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAEH,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAC5B,GAAK,EAAQ,QACf,GAAG,EAAI,EAAG,GAAK,GAAK,EAAG,IAAM,GAE/B,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UClFnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAKC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CAEnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAC9B,MAAA,GAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,EAAG,EAAK,EAAI,EAAK,EACV,GAGT,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAI,GAEd,GAAI,IAAU,GAAO,GAEnB,EAAI,EAAE,GAAK,MAIX,KADA,EAAO,GAAK,EACP,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,EAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,EAAG,EAAI,EACP,EAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,EAAG,OAIP,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,UAAY,IAIjB,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9FnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAyBC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAE3B,MAAA,GAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,EAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAG,EAAG,EAAG,EAAI,GAAI,EAAQ,IAYnC,IAXI,IAAU,GAAO,GAEnB,GAAI,EACJ,EAAO,MAGP,GAAO,EAAO,KACd,EAAI,EACJ,EAAQ,KAAK,IAAI,EAAO,EAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,EAAO,EAAE,EAE5B,GAAM,IAAK,EAAK,WAAY,GAAI,IAAM,EAAK,SAE3C,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACP,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAU,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPI,GAAK,KACP,GAAG,IAAQ,EAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGT,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,QAAU,IAIf,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UChJnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAIC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACzC,MAAA,GAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,EAAG,EAAI,EAAK,EAAI,EAAK,EACrB,EAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,EAAG,EAAK,EAAI,EAAK,GAmB1B,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,WAAa,EACpB,EAAG,EAAI,WAEH,IAAS,KAAK,MAAM,GAEtB,GAAG,EAAK,EAAO,WAAe,EAC9B,EAAG,EAAI,EAAO,GAGd,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UCnGnC,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,CAAA,EAAA,IAAA,CAwBC,AAAA,UAAU,EAAM,EAAM,CAIvB,GAAI,GAAS,KACT,EAAQ,IACR,EAAS,EACT,EAAS,GACT,EAAU,SACV,EAAa,EAAK,IAAI,EAAO,GAC7B,EAAe,EAAK,IAAI,EAAG,GAC3B,EAAW,EAAe,EAC1B,EAAO,EAAQ,EACf,EAMJ,WAAoB,EAAM,EAAS,EAAU,CAC3C,GAAI,GAAM,GACV,EAAW,GAAW,GAAQ,CAAE,QAAS,IAAU,GAAW,GAG9D,GAAI,GAAY,EAAO,EACrB,EAAQ,QAAU,CAAC,EAAM,EAAS,IACjC,GAAQ,KAAQ,IAAa,EAAM,GAAI,GAGtC,EAAO,GAAI,GAAK,GAIhB,EAAO,UAAW,CAIpB,OAHI,GAAI,EAAK,EAAE,GACX,EAAI,EACJ,EAAI,EACD,EAAI,GACT,EAAK,GAAI,GAAK,EACd,GAAK,EACL,EAAI,EAAK,EAAE,GAEb,KAAO,GAAK,GACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,GAC7C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,YAC7C,EAAK,OAAS,EAGd,EAAO,EAAS,EAAK,GAAI,GAGjB,GAAQ,MAAQ,GACpB,SAAS,EAAM,EAAM,EAAc,EAAO,CAUxC,MATI,IAEE,GAAM,GAAK,EAAK,EAAO,GAE3B,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAM,MAK1C,EAAgB,GAAK,GAAW,EAAa,GAIrC,IAElB,EACA,EACA,UAAY,GAAU,EAAQ,OAAU,MAAQ,EAChD,EAAQ,OAEV,EAAK,OAAS,GAAW,EAYzB,WAAc,EAAK,CACjB,GAAI,GAAG,EAAS,EAAI,OAChB,EAAK,KAAM,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GAMtD,IAHK,GAAU,GAAM,CAAC,MAGf,EAAI,GACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,EAAO,IACrB,EAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,EAAI,EAAI,GAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIR,AAAA,GAAG,EAAI,SAAS,EAAO,CAItB,OAFI,GAAG,EAAI,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACxB,KACL,EAAI,EAAE,EAAI,EAAQ,EAAI,GACtB,EAAI,EAAI,EAAQ,EAAE,EAAS,GAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,IAAQ,GAAE,GAAK,IAErE,MAAA,GAAG,EAAI,EAAG,EAAG,EAAI,EACV,IAIN,GAOL,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,WAAiB,EAAK,EAAO,CAC3B,GAAI,GAAS,GAAI,EAAO,MAAO,GAAM,EACrC,GAAI,GAAS,GAAO,SAClB,IAAK,IAAQ,GACX,GAAI,CAAE,EAAO,KAAK,EAAQ,EAAI,GAAO,EAAQ,UAAc,EAAd,EAGjD,MAAQ,GAAO,OAAS,EAAS,GAAO,SAAW,EAAM,EAAM,KAQjE,WAAgB,EAAM,EAAK,CAEzB,OADI,GAAa,EAAO,GAAI,EAAO,EAAI,EAChC,EAAI,EAAW,QACpB,EAAI,EAAO,GACT,EAAS,IAAS,EAAI,EAAO,GAAK,IAAM,EAAW,WAAW,KAElE,MAAO,GAAS,GAQlB,YAAoB,CAClB,GAAI,CACF,GAAI,GACJ,MAAI,IAAe,GAAM,EAAW,aAElC,EAAM,EAAI,GAEV,GAAM,GAAI,YAAW,GACpB,GAAO,QAAU,EAAO,UAAU,gBAAgB,IAE9C,EAAS,SACT,EADS,CAEhB,GAAI,GAAU,EAAO,UACjB,EAAU,GAAW,EAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,EAAQ,EAAS,EAAO,OAAQ,EAAS,KAQhE,WAAkB,EAAG,CACnB,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,EAAO,EAAK,SAAU,GAMjB,MAAO,IAAW,UAAY,EAAO,QAAS,CACjD,EAAO,QAAU,EAEjB,GAAI,CACF,EAAqB,WACd,EADc,OAEb,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,UAAW,CAAE,MAAO,OAK3B,GACA,QCrPF,GAAA,GAAA,CAAA,EAAA,IAAA,CAYA,GAAI,GAAe,KAKf,EAAiB,KAKjB,EAAiB,KAQjB,EAAoB,KASpB,EAAkB,KAOlB,EAAiB,KAIjB,EAAa,KAEjB,EAAG,KAAO,EACV,EAAG,OAAS,EACZ,EAAG,OAAS,EACZ,EAAG,UAAY,EACf,EAAG,QAAU,EACb,EAAG,OAAS,EAEZ,EAAO,QAAU,IC3DjB,GAAA,GAAA,CAAA,EAAA,IAAA,CA2BC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAc,EAAM,CAClB,GAAI,GAAK,KAAM,EAAO,IAEtB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,QAAU,EAAG,GAAK,EAAG,EAAI,sBACjC,MAAA,GAAG,GAAK,EAAG,GACX,EAAG,GAAK,EAAG,GACJ,EAAG,GAAK,EAAK,GAAG,EAAI,EAAI,IAIjC,EAAG,EAAI,EACP,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAO,KAGT,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAK,GACd,EAAQ,GAAQ,EAAK,MACrB,EAAO,EAAG,KACd,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAQ,GAAG,OAAS,WAAe,GAC7D,EAAK,OAAS,UAAW,CACvB,MAAO,KAAU,KAAS,QAAW,GAAK,uBAE5C,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGT,YAAgB,CACd,GAAI,GAAI,WAEJ,EAAO,SAAS,EAAM,CACxB,EAAO,EAAK,WACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAK,EAAK,WAAW,GACrB,GAAI,GAAI,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,GAIL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,KAAO,IAIZ,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9GnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAEzB,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGP,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAK,EAAG,GAAK,GACxB,MAAA,GAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACH,EAAG,GAAM,EAAG,IAAM,GAAM,EAAK,IAAM,GAGxC,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC7EnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAK,EAAG,EAAK,EAAG,IAAM,EAC1B,MAAA,GAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EACzC,GAAG,EAAK,EAAG,EAAI,OAAS,GAC5B,GAAG,EAAK,EAAG,EAAK,EAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAEH,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAC5B,GAAK,EAAQ,QACf,GAAG,EAAI,EAAG,GAAK,GAAK,EAAG,IAAM,GAE/B,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UClFnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAKC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CAEnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAC9B,MAAA,GAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,EAAG,EAAK,EAAI,EAAK,EACV,GAGT,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAI,GAEd,GAAI,IAAU,GAAO,GAEnB,EAAI,EAAE,GAAK,MAIX,KADA,EAAO,GAAK,EACP,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,EAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,EAAG,EAAI,EACP,EAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,EAAG,OAIP,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,UAAY,IAIjB,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9FnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAyBC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAE3B,MAAA,GAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,EAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAG,EAAG,EAAG,EAAI,GAAI,EAAQ,IAYnC,IAXI,IAAU,GAAO,GAEnB,GAAI,EACJ,EAAO,MAGP,GAAO,EAAO,KACd,EAAI,EACJ,EAAQ,KAAK,IAAI,EAAO,EAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,EAAO,EAAE,EAE5B,GAAM,IAAK,EAAK,WAAY,GAAI,IAAM,EAAK,SAE3C,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACP,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAU,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPI,GAAK,KACP,GAAG,IAAQ,EAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGT,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,QAAU,IAIf,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UChJnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAIC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACzC,MAAA,GAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,EAAG,EAAI,EAAK,EAAI,EAAK,EACrB,EAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,EAAG,EAAK,EAAI,EAAK,GAmB1B,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,WAAa,EACpB,EAAG,EAAI,WAEH,IAAS,KAAK,MAAM,GAEtB,GAAG,EAAK,EAAO,WAAe,EAC9B,EAAG,EAAI,EAAO,GAGd,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UCnGnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAwBC,AAAA,UAAU,EAAM,EAAM,CAIvB,GAAI,GAAS,KACT,EAAQ,IACR,EAAS,EACT,EAAS,GACT,EAAU,SACV,EAAa,EAAK,IAAI,EAAO,GAC7B,EAAe,EAAK,IAAI,EAAG,GAC3B,EAAW,EAAe,EAC1B,EAAO,EAAQ,EACf,EAMJ,WAAoB,EAAM,EAAS,EAAU,CAC3C,GAAI,GAAM,GACV,EAAW,GAAW,GAAQ,CAAE,QAAS,IAAU,GAAW,GAG9D,GAAI,GAAY,EAAO,EACrB,EAAQ,QAAU,CAAC,EAAM,EAAS,IACjC,GAAQ,KAAQ,IAAa,EAAM,GAAI,GAGtC,EAAO,GAAI,GAAK,GAIhB,EAAO,UAAW,CAIpB,OAHI,GAAI,EAAK,EAAE,GACX,EAAI,EACJ,EAAI,EACD,EAAI,GACT,EAAK,GAAI,GAAK,EACd,GAAK,EACL,EAAI,EAAK,EAAE,GAEb,KAAO,GAAK,GACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,GAC7C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,YAC7C,EAAK,OAAS,EAGd,EAAO,EAAS,EAAK,GAAI,GAGjB,GAAQ,MAAQ,GACpB,SAAS,EAAM,EAAM,EAAc,EAAO,CAUxC,MATI,IAEE,GAAM,GAAK,EAAK,EAAO,GAE3B,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAM,MAK1C,EAAgB,GAAK,GAAW,EAAa,GAIrC,IAElB,EACA,EACA,UAAY,GAAU,EAAQ,OAAU,MAAQ,EAChD,EAAQ,OAEV,EAAK,OAAS,GAAW,EAYzB,WAAc,EAAK,CACjB,GAAI,GAAG,EAAS,EAAI,OAChB,EAAK,KAAM,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GAMtD,IAHK,GAAU,GAAM,CAAC,MAGf,EAAI,GACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,EAAO,IACrB,EAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,EAAI,EAAI,GAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIR,AAAA,GAAG,EAAI,SAAS,EAAO,CAItB,OAFI,GAAG,EAAI,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACxB,KACL,EAAI,EAAE,EAAI,EAAQ,EAAI,GACtB,EAAI,EAAI,EAAQ,EAAE,EAAS,GAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,IAAQ,GAAE,GAAK,IAErE,MAAA,GAAG,EAAI,EAAG,EAAG,EAAI,EACV,IAIN,GAOL,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,WAAiB,EAAK,EAAO,CAC3B,GAAI,GAAS,GAAI,EAAO,MAAO,GAAM,EACrC,GAAI,GAAS,GAAO,SAClB,IAAK,IAAQ,GACX,GAAI,CAAE,EAAO,KAAK,EAAQ,EAAI,GAAO,EAAQ,UAAc,EAAd,EAGjD,MAAQ,GAAO,OAAS,EAAS,GAAO,SAAW,EAAM,EAAM,KAQjE,WAAgB,EAAM,EAAK,CAEzB,OADI,GAAa,EAAO,GAAI,EAAO,EAAI,EAChC,EAAI,EAAW,QACpB,EAAI,EAAO,GACT,EAAS,IAAS,EAAI,EAAO,GAAK,IAAM,EAAW,WAAW,KAElE,MAAO,GAAS,GAQlB,YAAoB,CAClB,GAAI,CACF,GAAI,GACJ,MAAI,IAAe,GAAM,EAAW,aAElC,EAAM,EAAI,GAEV,GAAM,GAAI,YAAW,GACpB,GAAO,QAAU,EAAO,UAAU,gBAAgB,IAE9C,EAAS,SACT,EADS,CAEhB,GAAI,GAAU,EAAO,UACjB,EAAU,GAAW,EAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,EAAQ,EAAS,EAAO,OAAQ,EAAS,KAQhE,WAAkB,EAAG,CACnB,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,EAAO,EAAK,SAAU,GAMjB,MAAO,IAAW,UAAY,EAAO,QAAS,CACjD,EAAO,QAAU,EAEjB,GAAI,CACF,EAAqB,WACd,EADc,OAEb,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,UAAW,CAAE,MAAO,OAK3B,GACA,QCrPF,GAAA,GAAA,CAAA,EAAA,IAAA,CAYA,GAAI,GAAe,KAKf,EAAiB,KAKjB,EAAiB,KAQjB,EAAoB,KASpB,EAAkB,KAOlB,EAAiB,KAIjB,EAAa,KAEjB,EAAG,KAAO,EACV,EAAG,OAAS,EACZ,EAAG,OAAS,EACZ,EAAG,UAAY,EACf,EAAG,QAAU,EACb,EAAG,OAAS,EAEZ,EAAO,QAAU,IC3DjB,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,IAAA,ICAA,GAAA,GAAA,CAAA,EAAA,IAAA,CACA,GAAI,GAAiC,UAAW,CAC9C,GAAI,GAAa,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,GAAa,GAAc,YAEpE,SAAS,EAA+B,CACtC,EAAgC,GAAiC,GAEnE,YAA2B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAM,YAA2B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAO,YAA4B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAO,YAA4B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAQ,YAA4B,CAAC,MAAG,GAAW,QAAQ,IAAQ,GAA2B,EAAW,QAAe,GAAQ,GAAI,GAAO,MAAO,IAAgC,YAAY,EAA8B,GAAO,EAAoB,EAAmB,EAAO,MAAS,GAAI,SAAQ,SAAS,EAAQ,EAAO,CAAC,EAAoB,EAAQ,EAAmB,IAAS,GAAI,GAAgB,GAAO,EAAI,IAAI,IAAO,GAAW,EAAO,eAAe,IAAM,GAAgB,GAAK,EAAO,IAAM,GAAI,GAAW,GAAO,EAAY,iBAAqB,EAAM,SAAS,EAAO,EAAQ,CAAC,KAAM,IAAa,EAAmB,GAAU,EAAsB,GAAU,EAAoB,GAAU,EAAqB,GAAM,EAAmB,MAAO,SAAS,SAAS,EAAsB,MAAO,gBAAgB,WAAW,EAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,EAAqB,CAAC,GAAoB,CAAC,GAAqB,CAAC,EAAsB,GAAI,GAAuB,EAAO,wBAA2B,GAAS,GAAwB,IAAO,EAAO,QAAU,GAAI,GAAgB,GAAG,WAAoB,EAAK,CAAC,MAAG,GAAO,WAAsB,EAAO,WAAc,EAAK,GAAwB,EAAgB,EAAK,GAAI,GAAM,EAAU,EAAW,EAAmB,EAAW,EAAS,GAAG,EAAoB,CAAI,EAAuB,EAAwB,KAAQ,QAAQ,GAAiB,IAAS,EAAgB,UAAU,IAAI,EAAM,SAAoB,EAAS,EAAO,CAAC,MAAI,IAAO,GAAe,eAAU,GAAS,GAAiB,MAAQ,EAAS,EAAS,UAAa,GAAiB,EAAO,aAAgB,EAAS,EAAO,KAAK,SAAS,EAAW,SAAoB,EAAS,CAAC,GAAI,GAAI,EAAM,EAAS,IAAM,MAAI,GAAI,QAAQ,GAAI,GAAI,YAAW,IAAK,GAAO,EAAI,QAAe,GAAQ,QAAQ,KAAQ,OAAO,GAAG,GAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,EAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,SAAS,EAAG,CAAC,GAAG,CAAE,aAAc,KAAa,KAAM,KAAM,QAAQ,GAAM,qBAAqB,IAAO,EAAM,SAAS,EAAO,CAAC,QAAQ,KAAQ,IAAS,EAAO,QAAW,UAAU,CAAC,MAAM,8BAA8B,GAAI,GAAkB,GAAG,CAAC,EAA0B,WAAwB,EAAxB,CAA2B,KAAA,SAAQ,MAAM,2GAAiH,EAAE,OAAO,OAAO,EAAkB,WAAe,GAAyB,OAAO,OAAM,aAAa,GAAM,SAAoB,EAAE,CAAC,MAAO,MAAK,KAAI,EAAW,SAAoB,EAAE,CAAC,GAAI,GAAK,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,GAAK,KAAK,EAAE,UAAU,GAAO,MAAO,IAAO,UAAiB,IAAS,MAAO,aAAY,YAAa,EAAW,WAAmB,MAAO,YAAW,aAAa,GAAW,WAAa,MAAO,OAAO,YAAY,GAAM,SAAS,EAAO,CAAC,KAAK,KAAY,MAAO,QAAQ,aAAgB,OAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAe,IAAoB,IAA0B,GAAuB,EAAgB,KAAK,SAAS,KAAa,MAAO,WAAW,aAAa,SAAS,eAAe,GAAgB,SAAS,cAAc,KAAO,MAAO,IAAe,aAAe,GAAY,GAAgB,GAAc,EAAgB,QAAQ,WAAW,EAAG,EAAgB,EAAgB,OAAO,EAAE,EAAgB,YAAY,KAAK,GAAQ,EAAgB,GAAM,EAAqB,GAAM,SAAoB,EAAS,EAAO,CAAC,MAAI,IAAO,GAAe,eAAU,GAAS,GAAiB,MAAQ,EAAS,EAAS,UAAa,GAAiB,EAAO,aAAgB,EAAS,EAAO,KAAK,SAAS,EAAW,SAAoB,EAAS,CAAC,GAAI,GAAI,EAAM,EAAS,IAAM,MAAI,GAAI,QAAQ,GAAI,GAAI,YAAW,IAAK,GAAO,EAAI,QAAe,IAAU,GAAM,SAAS,EAAI,CAAC,GAAI,GAAI,GAAI,gBAAe,MAAA,GAAI,KAAK,MAAM,EAAI,IAAO,EAAI,KAAK,MAAa,EAAI,cAAiB,GAAuB,GAAW,SAAS,EAAI,CAAC,GAAI,GAAI,GAAI,gBAAe,MAAA,GAAI,KAAK,MAAM,EAAI,IAAO,EAAI,aAAa,cAAc,EAAI,KAAK,MAAa,GAAI,YAAW,EAAI,YAAW,EAAU,SAAS,EAAI,EAAO,EAAQ,CAAC,GAAI,GAAI,GAAI,gBAAe,EAAI,KAAK,MAAM,EAAI,IAAM,EAAI,aAAa,cAAc,EAAI,OAAO,UAAU,CAAC,GAAG,EAAI,QAAQ,KAAK,EAAI,QAAQ,GAAG,EAAI,SAAS,CAAC,EAAO,EAAI,UAAU,OAAO,KAAW,EAAI,QAAQ,EAAQ,EAAI,KAAK,QAAO,EAAe,SAAS,EAAM,CAAC,SAAS,MAAM,IAAgB,GAAwB,MAAO,cAAc,aAAa,QAAO,YAAoB,KAAc,aAAa,GAAI,GAAI,EAAO,OAAU,QAAQ,IAAI,KAAK,SAAa,EAAI,EAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,IAAO,GAAoB,EAAgB,eAAe,IAAM,GAAO,GAAK,EAAgB,IAAM,EAAgB,KAAQ,EAAO,WAAa,GAAW,EAAO,WAAgB,EAAO,aAAe,GAAY,EAAO,aAAkB,EAAO,MAAQ,GAAM,EAAO,MAAQ,GAAI,IAAa,QAAQ,KAAS,EAAc,QAAQ,MAAU,GAAwB,QAAQ,gBAAoB,GAAc,EAAO,YAAc,IAAW,EAAO,YAAc,GAAI,IAAc,EAAO,eAAkB,GAAQ,MAAO,cAAc,UAAU,GAAM,mCAAmC,GAAI,GAAe,GAAe,GAAM,GAAU,GAAW,YAAgB,EAAU,EAAK,CAAK,GAAW,GAAM,qBAAqB,GAAO,YAAkB,EAAM,CAAC,GAAI,GAAK,EAAO,IAAI,GAAO,MAAA,IAAO,EAAK,gCAAgC,EAAM,8BAAqC,EAAK,YAAe,EAAM,EAAW,EAAS,EAAK,GAAK,CAAC,GAAI,IAAI,CAAC,OAAS,SAAS,GAAI,CAAC,GAAI,IAAI,EAAE,GAAG,IAAM,MAAuB,KAAM,EAAE,CAAC,GAAI,IAAK,IAAI,QAAQ,GAAG,EAAE,GAAI,GAAW,IAAK,GAAa,GAAI,GAAI,IAAK,MAAO,KAAK,MAAQ,SAAS,GAAI,CAAC,GAAI,IAAI,GAAW,GAAI,QAAQ,MAAA,IAAmB,GAAI,IAAY,KAAM,YAA4B,GAAI,CAAC,MAAG,KAAa,SAAgB,GAAa,IAAQ,IAAa,UAAiB,QAAQ,IAAY,GAAI,GAAI,IAAK,GAAS,GAAW,GAAM,GAAO,GAAM,EAAE,GAAG,EAAM,OAAQ,IAAE,EAAE,GAAE,EAAK,OAAO,KAAI,CAAC,GAAI,IAAU,GAAI,EAAS,KAAO,GAAc,MAAQ,GAAE,IAAM,MAAY,GAAM,IAAG,GAAU,EAAK,MAAS,GAAM,IAAG,EAAK,IAAK,GAAI,IAAI,GAAK,MAAM,KAAK,IAAO,MAAA,IAAI,GAAmB,IAAQ,KAAQ,GAAE,GAAa,IAAc,GAAI,YAAe,EAAM,EAAW,EAAS,EAAK,CAAC,EAAS,GAAU,GAAG,GAAI,IAAY,EAAS,MAAM,SAAS,GAAK,CAAC,MAAO,MAAO,WAAe,GAAW,IAAa,SAAS,MAAG,KAAY,IAAa,CAAC,EAAa,GAAS,GAAc,UAAU,CAAC,MAAO,IAAM,EAAM,EAAW,EAAS,UAAU,IAAO,YAA2B,EAAK,EAAI,EAAe,CAA0C,OAArC,GAAO,EAAI,EAAmB,GAAI,GAAS,CAAE,IAAK,IAAQ,CAAC,GAAI,IAAG,EAAK,KAAO,GAAG,CAAC,GAAG,MAAO,IAAI,GAAG,CAAE,IAAG,KAAK,CAAC,IAAK,OAAO,aAAa,IAAI,SAAS,GAAI,IAAG,EAAK,KAAO,GAAG,GAAI,IAAG,MAAM,IAAI,CAAC,IAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,GAAI,IAAG,EAAK,KAAO,GAA4F,GAArF,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAK,KAAO,GAAM,GAAG,MAAO,IAAK,OAAO,aAAa,QAAQ,CAAC,GAAI,IAAG,GAAG,MAAM,IAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAO,MAAO,IAAI,YAAsB,EAAI,EAAe,CAAC,MAAO,GAAI,GAAkB,IAAmB,EAAI,GAAgB,GAAG,YAA2B,EAAI,EAAK,EAAO,EAAgB,CAAC,GAAG,CAAE,GAAgB,GAAG,MAAO,GAA0D,OAApD,IAAS,EAAW,GAAO,EAAO,EAAgB,EAAU,GAAE,EAAE,GAAE,EAAI,OAAO,EAAE,GAAE,CAAC,GAAI,IAAE,EAAI,WAAW,IAAG,GAAG,IAAG,OAAO,IAAG,MAAM,CAAC,GAAI,IAAG,EAAI,WAAW,EAAE,IAAG,GAAE,MAAQ,KAAE,OAAO,IAAI,GAAG,KAAK,GAAG,IAAG,IAAI,CAAC,GAAG,GAAQ,GAAO,MAAM,EAAK,KAAU,WAAU,IAAG,KAAK,CAAC,GAAG,EAAO,GAAG,GAAO,MAAM,EAAK,KAAU,IAAI,IAAG,EAAE,EAAK,KAAU,IAAI,GAAE,WAAW,IAAG,MAAM,CAAC,GAAG,EAAO,GAAG,GAAO,MAAM,EAAK,KAAU,IAAI,IAAG,GAAG,EAAK,KAAU,IAAI,IAAG,EAAE,GAAG,EAAK,KAAU,IAAI,GAAE,OAAO,CAAC,GAAG,EAAO,GAAG,GAAO,MAAM,EAAK,KAAU,IAAI,IAAG,GAAG,EAAK,KAAU,IAAI,IAAG,GAAG,GAAG,EAAK,KAAU,IAAI,IAAG,EAAE,GAAG,EAAK,KAAU,IAAI,GAAE,IAAI,MAAA,GAAK,GAAQ,EAAS,EAAO,GAAS,YAAsB,EAAI,EAAO,EAAgB,CAAC,MAAO,IAAkB,EAAI,IAAmB,EAAO,GAAiB,YAAyB,EAAI,CAAW,OAAN,GAAI,EAAU,EAAE,EAAE,EAAE,EAAI,OAAO,EAAE,EAAE,CAAC,GAAI,GAAE,EAAI,WAAW,GAAM,GAAG,OAAO,GAAG,OAAM,GAAE,MAAQ,IAAE,OAAO,IAAI,EAAI,WAAW,EAAE,GAAG,MAAQ,GAAG,IAAI,EAAE,EAAY,GAAG,KAAK,GAAK,EAAU,GAAG,MAAM,GAAK,EAAO,GAAK,EAAE,MAAO,GAAI,YAA4B,EAAM,EAAO,CAAC,IAAmB,IAAI,EAAM,GAAQ,YAAiB,EAAE,EAAS,CAAC,MAAG,GAAE,EAAS,GAAG,IAAG,EAAS,EAAE,GAAgB,EAAE,GAAI,IAAO,GAAM,GAAO,GAAO,GAAQ,GAAO,GAAQ,GAAQ,GAAQ,YAAoC,EAAI,CAAC,GAAO,EAAI,EAAO,MAAS,GAAM,GAAI,WAAU,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,GAAI,IAAe,EAAO,gBAAmB,SAAS,GAAG,EAAwB,EAAW,EAAO,WAAc,GAAO,EAAO,eAAkB,EAAO,WAAe,EAAW,EAAO,mBAAmB,EAAW,GAAI,aAAY,OAAO,CAAC,QAAU,GAAe,MAAM,QAAU,WAAW,MAAM,OAAS,KAAU,CAAE,GAAW,iBAAkB,oBAAoB,KAAA,GAAI,+NAAkO,GAAqB,QAAQ,IAAI,qHAA2H,MAAM,cAAmB,GAAY,IAAO,EAAW,QAAO,GAAe,GAAO,WAAW,GAA2B,IAAQ,GAAI,IAAc,GAAa,GAAO,GAAW,GAAO,GAAW,GAAO,GAAW,GAAO,GAAc,GAAO,GAAmB,GAAU,GAAc,GAAU,GAAuB,GAAW,KAAK,CAAC,KAAK,UAAU,CAAC,QAA2B,GAAuB,IAAmB,IAAK,aAAiB,CAAC,GAAG,CAAA,EAA8B,CAAA,GAAG,EAAO,OAAsF,IAAxE,MAAO,GAAO,QAAW,YAAW,GAAO,OAAU,CAAC,EAAO,SAAiB,EAAO,OAAU,QAAQ,GAAY,EAAO,OAAU,SAAU,GAAqB,KAAc,aAAsB,CAAC,GAAmB,GAAK,GAAqB,IAAY,aAAkB,CAAI,GAA8B,GAAqB,IAAY,aAAsB,CAAI,GAA8B,IAAc,IAAK,aAAkB,CAAC,GAAG,CAAA,EAA8B,CAAA,GAAG,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,QAAQ,GAAa,EAAO,QAAW,SAAU,GAAqB,KAAe,YAAqB,EAAG,CAAC,GAAa,QAAQ,GAAI,YAAsB,EAAG,CAAC,GAAc,QAAQ,GAAI,GAAI,IAAgB,EAAM,GAAqB,KAAS,GAAsB,KAAK,YAA0B,EAAG,CAAC,GAAO,CAAC,EAAuB,uDAAuD,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAkB,YAA6B,EAAG,CAA0G,GAAzG,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAoB,IAAiB,GAAM,MAAuB,MAAM,eAAc,IAAsB,GAAqB,MAAQ,IAAsB,CAAC,GAAI,GAAS,GAAsB,GAAsB,KAAK,KAAa,EAAO,gBAAmB,GAAG,EAAO,gBAAmB,GAAG,YAAe,EAAK,CAAI,EAAO,SAAY,EAAO,QAAW,GAAS,GAAuB,QAAQ,MAAM,uBAAwB,GAAI,SAAO,OAAO,GAAM,GAAG,EAAI,GAAM,GAAM,GAAK,GAAW,EAAE,EAAK,SAAS,EAAK,+CAA+C,GAAI,GAAE,GAAI,aAAY,aAAa,GAAM,KAAA,GAAmB,GAAS,EAAE,YAAmB,EAAI,EAAO,CAAC,MAAO,QAAO,UAAU,WAAW,EAAI,WAAW,GAAQ,EAAI,QAAQ,KAAU,EAAE,GAAI,IAAc,wCAAwC,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAc,UAAU,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAe,uCAA2C,GAAU,KAAiB,IAAe,EAAW,KAAgB,YAAmB,EAAK,CAAC,GAAG,CAAC,GAAG,GAAM,IAAgB,GAAY,MAAO,IAAI,YAAW,IAAY,GAAG,EAAY,MAAO,GAAW,GAAW,KAAK,wDAAyD,EAAzD,CAA8D,GAAM,IAAM,aAA2B,CAAC,GAAG,CAAC,IAAa,IAAoB,GAAuB,CAAC,GAAG,MAAO,QAAQ,YAAY,CAAC,GAAU,IAAiB,MAAO,OAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,EAAS,CAAC,GAAG,CAAC,EAAS,GAAO,KAAK,uCAAuC,GAAe,IAAI,MAAO,GAAS,gBAAmB,MAAM,UAAU,CAAC,MAAO,IAAU,MAAuB,GAAG,EAAW,MAAO,IAAI,SAAQ,SAAS,EAAQ,EAAO,CAAC,EAAU,GAAe,SAAS,EAAS,CAAC,EAAQ,GAAI,YAAW,KAAY,KAAY,MAAO,SAAQ,UAAU,KAAK,UAAU,CAAC,MAAO,IAAU,MAAkB,aAAqB,CAAC,GAAI,GAAK,CAAC,EAAI,IAAe,WAAyB,GAAS,GAAO,CAAC,GAAI,IAAQ,GAAS,QAA6E,GAArE,EAAO,IAAO,GAAQ,GAAU,EAAO,IAAO,EAAK,GAAW,GAAU,CAAC,EAAuB,CAAC,GAAI,IAAiB,GAAQ,cAAc,OAAO,GAAQ,cAAc,QAAQ,SAAS,GAAE,CAAC,GAAQ,uBAAuB,GAAE,UAAU,CAAK,EAAE,IAAiB,GAAoB,yBAA6B,GAAwB,GAAiB,oBAAoB,WAAmC,GAAO,CAAC,EAAgB,GAAO,SAAY,GAAO,QAAW,WAAgC,GAAS,CAAC,MAAO,MAAmB,KAAK,SAAS,GAAO,CAAC,MAAO,aAAY,YAAY,GAAO,KAAQ,KAAK,GAAS,SAAS,GAAO,CAAC,EAAI,0CAA0C,IAAQ,GAAM,MAAU,aAA2B,CAAC,MAAG,CAAC,IAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,GAAU,KAAiB,CAAC,GAAU,KAAiB,MAAO,QAAQ,WAAmB,MAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,GAAS,CAAC,GAAI,IAAO,YAAY,qBAAqB,GAAS,GAAM,MAAO,IAAO,KAAK,EAA0B,SAAS,GAAO,CAAC,MAAA,GAAI,kCAAkC,IAAQ,EAAI,6CAAoD,EAAuB,OAA2C,EAAuB,GAA4B,GAAG,EAAO,gBAAoB,GAAG,CAAC,GAAI,IAAQ,EAAO,gBAAmB,EAAK,GAAiB,MAAO,UAAc,GAAd,CAAiB,MAAA,GAAI,sDAAsD,IAAU,GAAO,MAAA,MAAmB,MAAM,GAA0B,GAAG,GAAI,IAAW,CAAC,KAAK,SAAS,EAAG,EAAG,CAAC,WAAW,UAAU,CAAC,GAAmC,EAAG,IAAK,KAAK,aAAyB,CAAC,GAAQ,cAAc,YAA8B,EAAU,CAAC,KAAM,EAAU,OAAO,GAAE,CAAC,GAAI,GAAS,EAAU,QAAQ,GAAG,MAAO,IAAU,WAAW,CAAC,EAAS,GAAQ,SAAS,GAAI,GAAK,EAAS,KAAQ,MAAO,IAAO,SAAa,EAAS,MAAM,OAAW,GAAU,IAAI,KAAa,GAAU,IAAI,GAAM,EAAS,KAAW,EAAK,EAAS,MAAM,OAAU,KAAK,EAAS,MAAO,YAAgC,EAAK,EAAM,CAAC,GAAG,GAAM,GAAG,EAAK,IAAmB,QAAQ,EAAK,IAAM,EAAM,EAAE,MAAM,IAAI,GAAG,GAAO,EAAE,MAAO,GAAK,GAAO,YAAW,GAAM,UAAS,GAAI,GAAsB,QAAQ,KAAK,IAAoB,IAAgC,GAAO,EAAgB,EAAE,GAAG,GAAuB,EAAK,CAAC,GAAI,IAAW,QAAQ,gBAAgB,IAAoB,IAAgC,EAAE,EAAsB,GAAG,GAAG,IAAY,GAAuB,GAAE,EAAM,EAAgB,EAAK,GAAO,GAAE,MAAO,GAAG,GAAI,IAAI,QAAQ,OAAO,IAAoB,GAAM,EAAE,GAAO,GAAG,IAAK,EAAE,MAAO,IAAI,EAAgB,KAAK,+CAA+C,GAAI,EAAO,uBAA0B,GAAuB,YAAoB,EAAY,CAAC,GAAG,EAAuB,KAAK,qFAAqF,GAAG,CAAC,EAAY,KAAK,kDAAkD,IAAoB,EAAY,IAAI,GAAG,EAAE,GAAI,GAAQ,GAAQ,SAAS,GAAa,EAAQ,OAAO,YAAY,GAAQ,eAAe,GAAS,GAAQ,eAAe,OAAO,GAAQ,eAAe,QAAQ,EAAQ,QAAQ,GAAG,EAAQ,OAAO,QAAQ,OAAU,YAAsB,EAAY,CAAC,GAAG,EAAuB,KAAK,uFAAuF,GAAG,CAAC,EAAY,KAAK,oDAAoD,GAAI,GAAQ,GAAQ,SAAS,GAAa,EAAQ,OAAO,YAAY,CAAC,IAAM,WAAW,YAAuB,EAAY,CAAC,GAAG,EAAuB,KAAK,wFAAwF,GAAG,CAAC,EAAY,KAAK,qDAAqD,IAAoB,EAAY,IAAI,GAAG,EAAE,GAAI,GAAQ,GAAQ,SAAS,GAAa,GAAG,EAAQ,CAAC,GAAI,GAAO,EAAQ,OAAO,GAAQ,mBAAmB,IAAS,GAAI,IAAQ,CAAC,cAAc,GAAG,eAAe,GAAG,oBAAoB,UAAU,CAAuB,OAAlB,GAAgB,EAAU,EAAE,EAAE,EAAE,EAAgB,EAAE,EAAG,GAAQ,wBAAyB,YAAY,UAAU,CAAqB,OAAhB,GAAG,GAAQ,KAAa,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAoB,EAAG,EAAE,GAAG,EAAE,IAAoB,EAAG,IAAI,GAAG,EAAG,GAAI,GAAQ,EAAG,IAAI,IAAoB,GAAS,GAAG,EAAmC,OAAvB,GAAU,GAAQ,KAAa,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAoB,EAAU,EAAE,GAAG,EAAE,QAAQ,MAAM,IAAoB,EAAG,KAAK,EAAE,GAAW,QAAQ,MAAM,IAAoB,EAAG,IAAI,EAAE,GAAI,GAAyB,EAAG,CAAC,EAAsB,GAAG,GAA4C,IAAK,WAAW,UAAU,GAAG,SAAS,GAAG,mBAAmB,GAAG,gBAAgB,UAAU,GAAG,gBAAgB,UAAU,CAAC,KAAM,GAAQ,mBAAmB,OAAO,GAAG,GAAQ,mBAAmB,QAAW,GAAwB,MAAgB,MAA4B,WAAW,SAAS,EAAS,CAAC,GAAI,GAAG,KAAmB,GAAI,SAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,GAAU,QAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,GAAG,QAAQ,MAAM,IAAoB,EAAG,IAAI,EAAE,GAAG,QAAQ,MAAM,IAAoB,EAAG,IAAI,EAAE,GAAG,GAAQ,kBAAkB,GAAuB,EAAG,EAAE,YAAY,GAAyB,EAAE,EAAE,GAAM,GAAwB,YAAY,CAAC,IAAM,WAAY,aAAa,UAAU,CAAC,GAAQ,kBAAkB,GAAI,GAAG,KAAgB,QAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,IAAI,QAAQ,MAAM,IAAoB,EAAG,GAAG,EAAE,GAAG,GAAuB,EAAG,EAAE,YAAY,GAAyB,EAAE,EAAE,GAAG,YAAY,CAAC,IAAM,gBAAgB,oBAAoB,UAAU,CAAC,OAAQ,KAAK,IAAQ,SAAS,CAAC,GAAI,GAAQ,GAAQ,SAAS,GAAM,GAAS,EAAQ,QAAQ,GAAQ,mBAAmB,EAAQ,QAAS,GAAQ,SAAS,GAAG,OAAQ,GAAE,EAAE,EAAE,GAAQ,cAAc,OAAO,EAAE,EAAE,CAAC,GAAI,GAAO,GAAQ,cAAc,GAAG,EAAO,YAAY,GAAQ,cAAc,GAAG,OAAQ,GAAE,EAAE,EAAE,GAAQ,eAAe,OAAO,EAAE,EAAE,CAAC,GAAI,GAAO,GAAQ,eAAe,GAAO,EAAQ,EAAO,QAAQ,GAAQ,eAAe,GAAS,EAAO,YAAY,GAAQ,eAAe,IAAI,eAAe,SAAS,EAAQ,CAAC,GAAI,EAAe,CAAA,GAAG,EAAQ,iBAAiB,CAAC,GAAI,GAAU,IAAoB,EAAQ,iBAAiB,KAAK,GAAG,IAAoB,EAAQ,iBAAiB,KAAK,GAAG,EAAE,GAAM,GAAW,GAAM,EAAQ,kBAAkB,EAAQ,iBAAiB,EAAK,EAAQ,mBAAmB,EAAQ,WAAU,GAAM,EAAQ,WAAW,EAAQ,UAAU,EAAK,EAAQ,QAAO,GAAQ,OAAO,QAAQ,QAAM,mBAAmB,SAAS,EAAO,CAAC,GAAQ,gCAAgC,UAAU,CAAC,MAAO,IAAQ,SAAS,EAAO,QAAQ,kBAAkB,GAAQ,cAAc,KAAK,GAAQ,GAAQ,eAAe,OAAO,GAAQ,eAAe,QAAQ,GAAQ,GAAG,GAAQ,eAAe,EAAO,SAAS,EAAO,QAAQ,UAAa,gCAAgC,SAAS,EAAK,CAAC,IAAoB,IAA8C,GAAG,EAAE,GAAG,CAAC,WAAA,CAAe,IAAoB,IAA8C,GAAG,IAAI,sBAAsB,SAAS,EAAK,GAAG,uBAAuB,SAAS,EAAO,EAAkB,CAAC,EAAO,UAAU,SAAS,EAAE,CAAC,GAAI,GAAE,EAAE,KAAY,GAAI,EAAE,IAAqG,GAA3F,EAAO,SAAQ,IAAQ,oCAAoC,EAAO,QAAQ,kBAAoB,EAAE,cAAiB,EAAE,cAAiB,KAAgB,CAAC,GAAI,IAAO,GAAQ,SAAS,EAAE,cAAiB,GAAQ,GAAO,OAAO,YAAY,EAAE,KAAK,EAAE,cAAsB,QAAQ,MAAM,0CAA0C,GAAI,uBAAuB,EAAE,aAAgB,uCAAuC,GAAQ,oCAAoC,OAAU,OAAO,GAAG,KAAM,8BAA+B,aAAuD,KAAM,cAAe,GAAY,EAAE,cAAc,KAAM,gBAAiB,GAAc,EAAE,gBAAmB,KAAM,aAAc,GAAW,EAAE,gBAAmB,KAAM,eAAgB,GAAa,EAAE,gBAAmB,KAAM,SAAU,EAAO,OAAO,GAAQ,GAAkB,EAAkB,GAAW,EAAO,YAAY,GAAO,aAAa,MAAO,GAAO,oBAAoB,KAAM,QAAS,EAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,KAAM,WAAY,EAAI,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,KAAM,QAAS,MAAM,UAAU,EAAE,SAAY,KAAK,EAAE,cAAiB,KAAM,OAAO,CAAC,GAAI,IAAS,EAAO,SAAS,QAAQ,KAAK,IAAoB,EAAO,QAAQ,iBAAiB,IAAI,GAAM,IAAU,GAAQ,mBAAmB,WAAiB,KAAM,cAAe,GAAG,CAAC,GAAK,EAAE,kBAAqB,GAArB,CAAwB,GAAG,aAAa,IAAW,OAAO,KAAM,QAAW,MAAM,aAAc,GAAQ,mBAAmB,GAAgB,KAAM,iBAAkB,GAAQ,sBAAsB,EAAE,MAAc,EAAE,KAAK,SAAS,eAAgB,EAAO,YAAY,EAAE,MAAW,EAAI,kCAAkC,IAAK,GAAQ,oCAAoC,QAAW,EAAO,QAAQ,SAAS,EAAE,CAAC,EAAI,0BAA0B,EAAE,SAAS,IAAI,EAAE,OAAO,KAAK,EAAE,UAAa,GAAqB,GAAO,GAAG,UAAU,SAAS,EAAK,CAAC,EAAO,UAAU,CAAC,KAAK,MAAS,EAAO,GAAG,QAAQ,SAAS,EAAK,CAAC,EAAO,QAAQ,KAAQ,EAAO,GAAG,OAAO,SAAS,EAAK,KAAI,EAAO,YAAY,CAAC,IAAM,OAAO,UAAY,EAAO,qBAAwB,EAAW,WAAa,EAAW,WAAa,MAAc,qBAAqB,UAAU,CAAC,GAAI,GAAc,EAAW,6CAA6C,GAAQ,cAAc,KAAK,GAAI,QAAO,KAAiB,aAAa,UAAU,CAA6H,MAAzH,IAAQ,cAAc,QAAQ,GAAG,IAAQ,uBAAuB,GAAQ,uBAAuB,GAAQ,cAAc,KAAO,GAAQ,cAAc,OAAO,EAAS,GAAQ,cAAc,MAAkB,MAAM,aAAa,SAAS,EAAM,CAA+B,OAA1B,GAAE,YAAY,MAAM,EAAY,YAAY,MAAM,GAAE,IAAK,YAA6B,EAAS,EAAS,CAAC,GAA6B,EAAS,GAAU,GAAa,GAAU,EAAO,oBAAuB,GAAoB,aAA2B,CAAC,MAAO,IAAc,EAAO,iBAAoB,GAAiB,YAA0B,EAAI,EAAI,CAAC,MAAO,IAAU,IAAI,GAAK,GAAK,EAAO,iBAAoB,GAAiB,YAAwB,EAAU,EAAS,EAAK,EAAK,CAAC,GAAM,qBAAqB,GAAa,GAAW,SAAS,CAAC,EAAS,GAAa,GAAU,mBAAmB,EAAK,EAAK,GAAa,GAAM,qBAAqB,YAAsB,EAAK,EAAK,CAAC,GAAI,GAAW,MAAM,EAAK,GAAM,GAAI,IAAuB,EAAqB,GAAoB,UAAU,CAAC,GAAI,GAAE,QAAQ,SAAY,MAAO,GAAE,GAAG,IAAI,EAAE,GAAG,KAAa,EAAwB,GAAoB,UAAU,CAAC,MAAO,aAAY,MAAM,EAAO,+BAA0C,MAAO,UAAU,YAAa,GAAoB,QAAa,GAAoB,UAAU,CAAC,MAAO,aAAY,OAAO,YAAkB,EAAM,CAAC,MAAA,KAAoB,MAAqB,GAAG,EAAa,EAAM,YAAiB,EAAK,EAAI,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,EAAK,GAAK,YAA0C,EAAe,EAAa,CAAC,GAAG,GAAgB,EAAc,YAAY,CAAC,IAAM,wCAAwC,EAAwB,YAAY,CAAC,aAAe,EAAe,IAAM,2BAA2B,CAAC,GAAI,GAAQ,GAAQ,SAAS,GAAoB,EAAO,GAAS,EAAQ,OAAO,GAAG,CAAC,EAAQ,OAAO,EAAO,YAAY,CAAC,IAAM,uBAAuB,MAAO,GAAE,aAAiB,CAAC,KAAQ,YAAmC,EAAK,EAAO,EAAO,CAAC,GAAI,GAAK,GAAiB,EAAO,GAAQ,MAAO,IAAW,GAAM,MAAM,KAAK,GAAM,YAA2D,EAAe,EAAU,EAAE,YAAgC,EAAK,EAAI,EAAQ,CAAC,GAAG,GAAM,GAAG,EAAK,IAAmB,QAAQ,EAAK,GAAK,MAAM,IAAI,GAAI,EAAgO,CAAC,GAAG,QAAQ,KAAK,IAAoB,GAAM,IAAI,EAAK,MAAM,GAA8I,OAAvI,GAAK,YAAY,MAAU,GAAK,EAAK,EAAY,GAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,KAAc,CAAwB,GAAvB,EAAK,YAAY,MAAS,EAAK,GAAM,MAAA,IAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,GAAS,IAAuF,GAAnF,GAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,GAAM,IAAU,EAAG,MAAqD,GAA/C,KAAkD,QAAQ,KAAK,IAAoB,GAAM,IAAI,EAAK,MAAM,GAAG,GAAS,QAAQ,SAAS,IAAoB,IAAgC,EAAE,GAAM,MAAO,OAAj1B,CAAC,GAAI,IAAI,QAAQ,KAAK,IAAoB,GAAM,EAAE,EAAI,GAAS,GAAG,KAAM,YAAY,MAAM,IAAI,GAAG,KAAM,YAAY,MAAM,GAAG,GAAG,KAAM,KAAK,MAAO,GAAE,KAAK,6CAA6C,IAA+oB,YAAgC,EAAK,EAAI,EAAI,CAAC,IAAmB,WAAW,EAAK,EAAI,EAAI,GAAK,aAAwC,CAAC,MAAG,GAAmC,AAAA,cAAM,OAAO,OAAc,UAAU,oBAAuB,YAA6C,EAAM,EAAK,CAA2J,OAAtJ,GAAY,UAAU,OAAO,EAAM,EAAM,KAAgB,GAAsB,EAAgB,GAAK,GAAW,GAAsB,GAAO,GAAE,IAAM,EAAU,GAAE,EAAE,GAAE,EAAY,KAAI,CAAC,GAAI,IAAI,UAAU,EAAE,IAAG,IAAoB,GAAE,IAAG,GAAI,GAAI,IAAI,GAA0C,EAAM,GAAsB,GAAK,GAAM,MAAA,IAAa,GAAc,GAAI,GAAI,IAA+C,GAAO,GAAsB,GAAG,YAA0B,EAAO,EAAI,CAAC,GAAsB,OAAO,EAAE,GAAI,GAAW,IAAR,IAAM,EAAQ,EAAG,IAAmB,MAAU,CAAC,GAAI,GAAO,EAAG,IAAO,GAAQ,EAAI,GAAE,IAAM,GAAsB,KAAK,EAAO,IAAoB,KAAO,GAAG,IAAoB,IAAM,EAAE,EAAI,MAAO,IAAsB,YAA+C,EAAM,EAAY,EAAK,CAAC,GAA+C,OAAO,EAA0B,OAAV,GAAE,GAAM,EAAU,GAAE,EAAE,GAAE,EAAY,KAAK,GAA+C,IAAG,IAAoB,EAAE,IAAG,GAAI,IAAa,EAAM,EAAM,GAAM,GAAyC,GAAW,CAAC,EAAM,GAA9C,GAAqB,GAA4B,MAAO,IAAK,MAAM,KAAK,IAAgD,aAAoC,CAAC,MAAO,KAAmB,OAAO,YAAmC,EAAK,CAAC,GAAG,CAAC,MAAA,GAAW,KAAK,EAAK,GAAO,WAAW,QAAQ,IAAI,GAA2B,EAAW,QAAe,QAAQ,EAAR,GAAa,YAAiC,EAAc,CAAC,GAAI,GAAQ,KAA4B,GAAG,GAAe,EAAS,MAAO,GAAM,GAAI,GAAY,WAAW,GAAG,EAAc,EAAa,MAAO,GAAM,OAAQ,GAAQ,EAAE,GAAS,EAAE,GAAS,EAAE,CAAC,GAAI,IAAkB,EAAS,GAAE,GAAG,GAAS,GAAkB,KAAK,IAAI,GAAkB,EAAc,WAAW,GAAI,IAAQ,KAAK,IAAI,EAAY,GAAQ,KAAK,IAAI,EAAc,IAAmB,QAAY,GAAY,GAA0B,IAAS,GAAG,GAAa,MAAO,GAAM,MAAO,GAAM,GAAI,IAAS,CAAC,eAAe,EAAE,wBAAwB,UAAU,CAAC,OAAQ,GAAE,GAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,EAAG,GAAS,eAAe,GAAG,GAAS,cAAc,GAAG,GAAS,cAAc,IAAI,6BAA6B,UAAU,CAAK,GAAS,gCAAgC,IAAW,KAAK,GAAS,yBAAyB,GAAS,+BAA+B,KAAO,cAAc,GAAG,UAAU,SAAS,EAAe,EAAW,EAAS,CAAC,WAAgC,GAAK,GAAK,CAAC,GAAG,GAAK,QAAQ,GAAK,OAAO,MAAO,GAAM,OAAQ,MAAK,IAAM,GAAG,GAAK,KAAI,GAAK,IAAG,MAAO,GAAM,MAAO,GAAK,OAAQ,MAAK,IAAS,cAAc,CAAC,GAAI,IAAK,GAAS,cAAc,IAAG,GAAG,GAAK,gBAAgB,GAAgB,EAAuB,GAAK,SAAS,GAAW,OAAQ,GAAS,cAAc,KAAK,CAAC,eAAe,EAAe,WAAW,EAAW,SAAS,IAAW,GAAS,cAAc,KAAK,SAAS,GAAE,GAAE,CAAC,MAAO,IAAE,WAAW,GAAE,cAAc,oBAAoB,SAAS,EAAe,CAAC,OAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAM,GAAS,cAAc,GAAG,gBAAgB,GAAgB,IAAS,cAAc,OAAO,EAAE,GAAG,EAAE,IAAK,+BAA+B,UAAU,CAAC,MAAO,IAAS,gBAAgB,GAAS,oBAAoB,qBAAqB,iBAAiB,UAAU,CAAC,GAAI,GAAS,iCAAyC,OAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAE,CAAC,GAAI,GAAK,GAAS,cAAc,GAAG,GAAS,cAAc,OAAO,EAAE,GAAG,EAAE,EAAE,EAAK,eAAe,MAAM,KAAK,EAAK,YAAY,cAAc,GAAG,0BAA0B,SAAS,EAAO,EAAgB,CAAC,OAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAM,GAAS,cAAc,GAAG,QAAQ,GAAS,EAAC,GAAiB,GAAiB,GAAS,cAAc,GAAG,kBAAkB,GAAS,eAAe,MAAQ,eAAe,SAAS,EAAE,CAAC,GAAI,GAAE,GAAS,cAAc,GAAG,EAAE,OAAO,oBAAoB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,GAAS,cAAc,OAAO,EAAE,IAAI,wBAAwB,SAAS,EAAa,CAAC,GAAI,GAAe,SAAwB,EAAM,CAAC,EAAE,GAAS,eAAe,GAAS,oBAAoB,EAAa,GAAS,mBAAmB,EAAa,YAAY,GAAO,GAAS,mBAAmB,EAAE,GAAS,gBAAgB,GAAG,EAAa,aAAc,EAAa,kBAAkB,EAAe,EAAa,OAAO,iBAAiB,EAAa,gBAAgB,EAAe,EAAa,YAAY,GAAS,cAAc,KAAK,GAAc,GAAS,mCAAoC,QAAQ,GAAE,EAAE,EAAE,GAAS,cAAc,OAAO,EAAE,EAAM,GAAS,cAAc,GAAG,QAAQ,EAAa,QAAQ,GAAS,cAAc,GAAG,iBAAiB,EAAa,iBAAiB,GAAS,eAAe,MAAS,+BAA+B,SAAS,EAAa,EAAiB,EAAY,EAAU,GAAS,CAAC,GAAI,IAAS,KAAgB,GAAQ,GAAW,IAAI,IAAoB,IAAS,GAAG,EAAY,IAAoB,GAAQ,GAAG,GAAG,EAAU,IAAoB,GAAQ,GAAG,GAAG,GAAS,GAA4B,EAAE,EAAa,UAAU,EAAiB,EAAU,IAAS,GAAa,KAAW,gCAAgC,SAAS,EAAa,CAAC,OAAO,OAAmB,GAAE,MAAO,OAAO,GAAE,MAAO,IAAQ,4CAA4C,MAAO,KAAe,qBAAqB,SAAS,EAAO,CAAC,MAAI,GAAmB,GAAQ,OAAa,UAAa,GAAQ,OAAa,UAAiB,GAAQ,EAAO,SAAS,EAAO,SAAS,GAAtH,IAA0H,kBAAkB,UAAU,CAAC,MAAO,UAAS,mBAAmB,SAAS,0BAA0B,YAAyB,EAAS,CAAC,GAAI,GAAO,GAAgB,GAAU,EAAM,EAAQ,GAAQ,GAAQ,MAAA,IAAa,EAAS,EAAQ,GAAe,EAAQ,YAAkE,EAAa,EAAa,EAAM,EAAO,CAAC,GAAI,IAAS,KAAgB,GAAQ,GAAW,IAAQ,GAAgB,EAAK,GAAc,IAAgB,GAAgB,IAAc,IAAoB,IAAS,GAAG,GAAgB,IAAoB,GAAQ,GAAG,GAAG,EAAM,IAAoB,GAAQ,GAAG,GAAG,EAAO,GAA4B,EAAE,EAAa,UAAU,EAAE,GAAgB,IAAS,GAAa,IAAU,YAA+D,EAAa,EAAa,EAAM,EAAO,CAAC,EAAa,EAAa,GAAa,GAAc,GAAG,GAAyD,EAAa,EAAa,EAAM,GAAQ,YAAgC,EAAQ,CAAC,MAAO,GAAQ,EAAE,GAAa,GAAS,EAAQ,GAAI,IAAmB,CAAC,EAAE,MAAO,WAAW,YAAY,SAAS,EAAE,MAAO,SAAS,YAAY,OAAO,GAAG,YAAyB,EAAO,CAAC,EAAO,GAAuB,GAAQ,GAAI,GAAW,GAAmB,IAAU,OAAO,WAAW,YAAY,SAAS,cAAc,GAAQ,QAAW,MAAO,GAAW,YAA+B,EAAO,CAAC,MAAO,IAAgB,GAAQ,YAA4D,EAAO,EAAM,EAAO,CAAC,GAAI,GAAO,GAAsB,GAAQ,GAAG,CAAC,EAAO,MAAM,GAA2I,GAArI,EAAO,iBAAiB,KAAoB,EAAO,iBAAiB,GAAG,EAAM,IAAoB,EAAO,gBAAgB,GAAG,GAAG,GAAU,EAAO,iBAAiB,CAAC,EAAO,4BAA4B,CAAI,EAAO,iBAAgB,GAAO,EAAO,iBAAgB,GAAI,IAAmB,GAAM,GAAG,EAAO,aAAa,EAAO,YAAY,MAAM,CAAC,GAAI,IAAa,EAAO,YAAY,MAAM,aAAa,MAAM,GAAmB,GAAa,KAAK,GAAG,GAAa,KAAK,GAAG,GAAa,KAAK,EAAO,OAAO,GAAa,KAAK,EAAO,OAAO,EAAO,MAAM,EAAM,EAAO,OAAO,EAAU,IAAoB,EAAO,YAAY,MAAM,SAAS,EAAE,EAAE,EAAM,WAAiB,EAAO,gBAAgB,CAAC,GAAI,IAAa,IAAoB,EAAO,gBAAgB,GAAG,GAAG,MAAA,IAAsD,GAAa,EAAO,EAAM,GAAe,MAAO,OAAM,GAAG,MAAO,GAAE,YAAyD,EAAO,EAAM,EAAO,CAAC,MAAG,GAA8B,GAAoC,EAAE,EAAE,EAAO,EAAM,GAAe,GAAmD,EAAO,EAAM,GAAQ,YAA6C,EAAO,EAAM,EAAO,CAAC,GAAI,GAAO,GAAsB,GAAQ,MAAG,GAAe,GAAmD,EAAO,EAAM,GAAoB,GAAgD,EAAO,EAAM,GAAS,YAA+C,EAAU,EAAE,YAAqC,EAAS,EAAK,EAAE,YAA+C,EAAI,CAAC,GAAI,GAAI,EAAI,aAAa,0BAA0B,GAAG,EAAK,MAAA,GAAI,oBAAuB,SAAS,EAAM,EAAQ,CAAC,EAAI,yBAA4B,EAAM,IAAU,EAAI,oBAAuB,SAAS,EAAK,EAAM,GAAM,GAAU,CAAC,EAAI,yBAA4B,EAAK,EAAM,GAAM,KAAY,EAAI,sBAAyB,SAAS,EAAK,EAAM,GAAK,GAAQ,GAAU,CAAC,EAAI,2BAA8B,EAAK,EAAM,GAAK,GAAQ,KAAmB,EAAG,YAAgD,EAAI,CAAC,GAAI,GAAI,EAAI,aAAa,2BAA2B,GAAG,EAAK,MAAA,GAAI,kBAAqB,UAAU,CAAC,MAAO,GAAI,wBAA2B,EAAI,kBAAqB,SAAS,EAAI,CAAC,EAAI,qBAAwB,IAAM,EAAI,gBAAmB,SAAS,EAAI,CAAC,EAAI,mBAAsB,IAAM,EAAI,cAAiB,SAAS,EAAI,CAAC,MAAO,GAAI,iBAAoB,IAAa,EAAG,YAA2C,EAAI,CAAC,GAAI,GAAI,EAAI,aAAa,sBAAsB,GAAG,EAAK,MAAA,GAAI,YAAe,SAAS,EAAE,EAAK,CAAC,EAAI,iBAAoB,EAAE,IAAc,EAAG,YAAyC,EAAI,CAAC,MAAM,CAAC,CAAE,GAAI,eAAe,EAAI,aAAa,qBAAqB,GAAI,IAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,aAAa,GAAG,YAAY,GAAG,gBAAgB,EAAE,YAAY,SAAqB,EAAU,CAAK,GAAG,WAAW,IAAG,UAAU,IAAY,SAAS,SAAS,EAAM,CAAsB,OAAjB,GAAI,GAAG,UAAkB,EAAE,EAAM,OAAO,EAAE,EAAI,IAAK,EAAM,GAAG,KAAK,MAAO,IAAK,UAAU,SAAS,EAAO,EAAM,EAAO,EAAO,CAAe,OAAV,IAAO,GAAW,GAAE,EAAE,GAAE,EAAM,EAAE,GAAE,CAAC,GAAI,IAAI,EAAO,IAAoB,EAAO,GAAE,GAAG,GAAG,GAAG,IAAQ,GAAa,IAAoB,EAAO,GAAE,GAAG,GAAG,GAAI,EAAE,OAAU,IAAK,MAAO,KAAQ,cAAc,SAAS,EAAO,EAAuB,CAAC,GAAI,GAAI,EAAO,WAAW,QAAQ,GAAwB,GAAG,CAAC,EAAI,MAAO,GAAE,GAAI,GAAO,GAAG,gBAAgB,EAAI,GAAwB,MAAO,IAAQ,gBAAgB,SAAS,EAAI,EAAuB,CAAC,GAAI,GAAO,GAAQ,GAAG,IAAoB,EAAO,GAAG,GAAG,KAAgB,GAAI,GAAQ,CAAC,OAAO,EAAO,WAAW,EAAuB,QAAQ,EAAuB,aAAa,MAAM,GAAK,MAAG,GAAI,QAAO,GAAI,OAAO,YAAY,GAAQ,GAAG,SAAS,GAAQ,EAAW,OAAO,GAAuB,2BAA4B,aAAa,EAAuB,4BAA2B,GAAG,eAAe,GAAgB,GAAQ,mBAAmB,SAAS,EAAc,CAAC,MAAA,IAAG,eAAe,GAAG,SAAS,GAAe,EAAO,IAAI,GAAM,GAAG,gBAAgB,GAAG,eAAe,MAAY,CAAE,IAAe,CAAC,KAAQ,WAAW,SAAS,EAAc,CAAC,MAAO,IAAG,SAAS,IAAgB,cAAc,SAAS,EAAc,CAAI,GAAG,iBAAiB,GAAG,SAAS,IAAe,IAAG,eAAe,MAAQ,MAAO,KAAW,UAAS,GAAS,0BAA0B,GAAG,SAAS,GAAe,MAAM,QAAW,GAAG,SAAS,IAAgB,GAAG,SAAS,GAAe,MAAM,QAAO,IAAG,SAAS,GAAe,MAAM,OAAO,YAAY,QAAU,GAAM,GAAG,SAAS,GAAe,QAAQ,GAAG,SAAS,GAAe,MAAM,eAAe,SAAS,EAAQ,CAAuC,GAAlC,GAAQ,GAAQ,GAAG,gBAAkB,CAAA,EAAQ,mBAA0B,CAAA,EAAQ,mBAAmB,GAAK,GAAI,GAAM,EAAQ,MAAM,GAAsC,GAAO,GAAuC,GAAO,GAAkC,GAAO,EAAM,sBAAsB,EAAM,aAAa,4BAA4B,GAAgC,GAAO,GAAI,GAAK,EAAM,0BAA0B,GAAG,EAAK,QAAQ,SAAS,EAAI,CAAI,EAAI,QAAQ,gBAAgB,GAAG,EAAI,QAAQ,SAAS,GAAG,EAAM,aAAa,OAAS,qBAAqB,SAAS,EAAQ,CAAkO,OAA7N,GAAE,GAAG,SAAS,GAAa,EAAO,GAAG,aAAa,GAAS,CAAC,SAAS,GAAG,iBAAiB,EAAE,mBAAmB,GAAG,0BAA0B,IAAQ,EAAO,EAAO,SAAa,GAAY,GAAM,oBAAoB,EAAE,OAAe,GAAE,EAAE,GAAE,GAAY,EAAE,GAAE,CAAC,GAAI,IAAE,GAAM,iBAAiB,EAAE,IAAO,GAAK,GAAE,KAAK,EAAO,iBAAiB,KAAK,IAAI,EAAO,iBAAiB,GAAK,OAAO,GAAM,GAAK,MAAM,KAAK,KAAK,IAAK,GAAK,MAAM,EAAE,GAAK,YAAY,OAAM,GAAI,IAAI,GAAM,mBAAmB,EAAE,IAAM,GAAG,GAAI,CAAC,GAAI,IAAG,GAAG,SAAS,GAAG,UAAU,EAAO,IAAM,CAAC,GAAE,KAAK,IAAI,GAAG,SAAS,IAAI,GAAI,OAAQ,IAAE,EAAE,GAAE,GAAE,KAAK,EAAE,GAAE,CAAC,GAAI,IAAE,GAAK,IAAI,GAAE,IAAI,GAAI,GAAM,mBAAmB,EAAE,IAAG,GAAG,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,IAAI,QAAa,GAAqC,CAAC,UAAU,YAAY,oBAAoB,YAA6C,EAAO,EAAW,CAAC,GAAI,GAAE,GAAY,EAAM,EAAgB,IAAoB,EAAG,KAAI,IAAQ,GAAkB,CAAC,MAAQ,CAAC,CAAC,IAAoB,EAAG,IAAG,IAAI,MAAQ,CAAC,CAAC,IAAoB,EAAG,IAAG,IAAI,QAAU,CAAC,CAAC,IAAoB,EAAG,IAAG,IAAI,UAAY,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,mBAAqB,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,sBAAwB,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,gBAAkB,GAAqC,GAAiB,6BAA+B,CAAC,CAAC,IAAoB,EAAG,KAAI,IAAI,aAAa,IAAoB,EAAG,KAAI,IAAI,aAAa,IAAoB,EAAG,KAAI,IAAI,0BAA0B,IAAoB,EAAG,KAAI,IAAI,oBAAoB,IAAoB,EAAG,KAAI,IAAI,yBAAyB,IAAoB,EAAG,KAAI,IAAI,6BAA6B,IAAoB,EAAG,KAAI,KAAS,GAAO,GAAsB,GAA6B,GAAlB,CAAC,IAAoB,GAAkB,oBAAqB,MAAO,GAAE,GAAI,IAAc,GAAG,cAAc,GAAO,IAAmB,MAAO,IAAc,YAA0C,EAAG,EAAG,CAAC,MAAO,IAAoC,EAAG,GAAI,GAAI,IAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,SAAS,EAAO,EAAK,CAAC,GAAI,GAAO,GAAS,QAAQ,GAAW,IAAO,GAAG,IAAO,GAAK,MAAS,EAAE,EAAI,GAAK,GAAkB,EAAO,IAAI,EAAO,OAAO,GAAO,EAAO,KAAK,IAAQ,QAAQ,OAAU,IAAI,UAAU,CAAC,GAAS,SAAS,EAAE,GAAI,GAAI,IAAoB,GAAS,QAAQ,GAAG,GAAG,MAAO,IAAK,OAAO,SAAS,EAAI,CAAC,GAAI,GAAI,GAAa,GAAK,MAAO,IAAK,MAAM,SAAS,EAAI,EAAK,CAAC,MAAO,KAAM,YAAmB,EAAG,CAAC,MAAG,GAA8B,GAAoC,EAAE,EAAE,GAAW,EAAE,YAAkB,EAAG,EAAW,EAAY,EAAO,GAAU,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,EAAG,EAAW,EAAY,EAAO,IAAW,YAAmB,EAAG,EAAI,EAAO,EAAK,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,EAAG,EAAI,EAAO,GAAgB,OAAN,IAAI,EAAU,GAAE,EAAE,GAAE,EAAO,KAAI,CAAqF,OAAhF,IAAI,IAAoB,EAAI,GAAE,GAAG,GAAO,GAAI,IAAoB,EAAK,IAAE,EAAE,IAAI,GAAW,GAAE,EAAE,GAAE,GAAI,KAAK,GAAS,UAAU,EAAG,IAAmB,GAAI,KAAI,IAAK,GAAI,MAAA,KAAoB,GAAM,GAAG,GAAW,EAAE,YAA8B,EAAQ,CAAC,GAAI,GAAQ,GAAQ,mBAAmB,MAAS,GAAQ,IAAU,YAA+B,EAAQ,EAAI,CAAC,GAAQ,mBAAmB,KAAK,UAAU,CAAC,GAAU,IAAI,GAAS,KAAO,YAAqB,EAAa,CAAC,GAAG,EAAuB,KAAK,sFAAsF,GAAI,GAAO,GAAQ,eAAe,GAAG,EAAO,UAAU,OAAU,KAAK,kBAAkB,GAAG,CAAC,EAAa,YAAY,KAAK,kCAAkC,GAAQ,eAAe,KAAK,GAAqC,OAAzB,GAAU,GAAQ,IAAI,GAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAG,IAAoB,EAAU,EAAE,GAAG,GAAG,EAAE,GAAI,IAAU,EAAa,UAAU,EAAa,UAAc,GAAQ,GAAQ,SAAS,EAAa,aAAa,CAAC,OAAO,EAAO,UAAU,EAAa,UAAU,UAAU,EAAa,UAAU,kBAAkB,EAAa,kBAAkB,iBAAiB,EAAa,aAAiB,GAAI,GAAQ,kBAAkB,EAAE,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,EAAa,UAAU,QAAQ,MAAM,IAAoB,GAAK,MAAK,GAAG,GAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,GAAQ,kBAAkB,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,EAAa,WAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,IAAW,QAAQ,MAAM,IAAoB,GAAK,MAAK,GAAG,EAAa,WAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,GAAG,GAAG,IAAW,QAAQ,MAAM,IAAoB,GAAK,KAAI,IAAI,GAAG,EAAa,UAAU,GAAI,IAAY,KAAkC,GAAc,GAAY,GAAG,QAAQ,MAAM,IAAoB,GAAK,MAAK,GAAG,IAAe,EAAO,QAAQ,GAAQ,GAAI,IAAI,CAAC,IAAM,MAAM,cAAgB,EAAa,aAAa,IAAM,EAAa,IAAI,iBAAmB,EAAa,YAAY,UAAY,EAAa,UAAU,UAAY,EAAa,WAAW,EAAO,WAAW,UAAU,CAAC,GAAI,KAAK,YAAY,MAAM,EAAO,YAAY,GAAI,EAAa,eAAkB,EAAO,QAAQ,GAAO,aAAa,MAAO,GAAO,YAAY,YAAyB,EAAY,EAAK,EAAc,EAAI,CAAC,GAAG,MAAO,oBAAoB,YAAa,MAAA,GAAI,uFAA8F,EAAE,GAAG,CAAC,EAAa,MAAA,GAAI,qDAA4D,GAAG,GAAI,IAAa,GAAO,GAAM,EAAE,GAAG,GAAyB,IAAa,SAAS,GAAG,IAAQ,MAAO,IAAsC,UAAU,EAAY,EAAK,EAAc,GAAK,GAAG,GAAM,MAAO,IAAM,GAAI,IAAU,EAAM,GAAU,EAAM,GAAS,EAAK,GAAM,GAAM,GAAI,IAAU,IAAoB,GAAM,GAAG,IAAW,MAAM,GAAU,IAAoB,EAAK,GAAG,GAAG,GAAS,IAAoB,EAAK,IAAI,KAAK,GAAO,GAAU,QAAQ,GAAI,IAAkB,IAAW,EAAK,GAAmB,GAAU,GAAU,GAAG,IAAgB,KAAW,GAAU,GAAO,GAAU,IAAqC,OAA9B,IAAiB,GAAQ,KAAa,GAAE,EAAE,GAAE,KAAK,EAAE,EAAE,GAAE,IAAqB,KAAkB,GAAG,IAAG,EAAE,IAAoB,GAAa,GAAG,GAAiB,IAAoB,GAAiB,IAAI,GAAG,GAAiB,GAAI,IAAQ,GAAiB,IAAI,IAAoB,IAAS,GAAG,GAAQ,GAAI,IAAa,CAAC,UAAU,GAAU,UAAU,GAAU,kBAAkB,GAAkB,SAAS,GAAS,aAAa,EAAc,YAAY,GAAiB,IAAI,EAAI,aAAa,IAAc,MAAG,GAAwB,IAAa,IAAI,cAAc,YAAY,GAAa,KAAmB,GAAY,IAAqB,EAAE,YAAkB,EAAK,CAAC,GAAG,EAAuB,MAAO,IAAoC,EAAE,EAAE,GAAM,OAAO,OAAW,IAAG,MAAO,WAAW,IAAG,GAAI,GAAY,WAAW,MAAO,GAAY,UAAW,SAAS,SAAS,QAAQ,SAAS,SAAS,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,SAAS,SAAS,OAAO,QAAQ,QAAQ,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,QAAQ,IAAG,MAAO,YAAY,QAAQ,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,SAAS,SAAS,SAAS,QAAQ,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,QAAQ,IAAG,MAAM,OAAQ,SAAS,SAAS,OAAO,SAAS,OAAO,SAAS,SAAS,SAAS,QAAQ,QAAQ,SAAS,SAAS,SAAS,QAAQ,IAAG,MAAO,OAAO,QAAQ,QAAQ,QAAQ,QAAQ,GAAE,MAAO,UAAU,QAAQ,QAAQ,IAAG,MAAO,QAAQ,QAAQ,QAAQ,IAAG,MAAO,gBAAgB,QAAQ,GAAE,MAAO,WAAW,QAAQ,IAAG,MAAO,QAAQ,QAAQ,IAAG,MAAO,UAAU,GAAE,MAAO,aAAa,GAAE,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,WAAW,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,IAAG,MAAO,SAAS,GAAE,MAAO,SAAS,KAAI,MAAO,QAAQ,IAAG,MAAO,QAAQ,GAAE,MAAO,QAAQ,GAAE,MAAO,OAAO,IAAG,MAAO,OAAO,IAAI,MAAG,OAAO,YAAY,UAAgB,UAAU,qBAAwB,EAAY,MAAA,IAAS,IAAU,GAAO,GAAuB,GAAQ,sBAAsB,GAAI,IAAU,GAAqB,CAAC,KAAK,GAAQ,GAAgD,GAAU,GAAS,GAAU,IAAc,GAAc,CAAC,EAAI,GAAe,EAAI,GAAa,EAAI,GAAiC,EAAI,GAAO,EAAI,GAA0B,EAAI,GAAkD,EAAI,GAAuB,EAAI,GAAuB,EAAI,GAAoB,EAAI,GAAuB,EAAI,GAA8B,EAAI,GAAsC,EAAI,GAAwB,EAAI,GAAoC,EAAI,GAAsC,EAAI,GAA4B,EAAI,GAAiC,EAAI,GAAU,EAAI,GAAS,EAAI,GAAU,EAAI,GAAe,EAAI,GAAY,EAAO,WAAc,EAAI,GAAqB,EAAI,GAAsB,EAAI,GAAgB,EAAI,IAAc,GAAI,KAAiB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAiB,EAAO,iBAAoB,UAAU,CAAC,MAAO,IAAiB,EAAO,iBAAoB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAuB,EAAO,uBAA0B,UAAU,CAAC,MAAO,IAAuB,EAAO,uBAA0B,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,EAAO,EAAO,OAAU,UAAU,CAAC,MAAO,GAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAsB,EAAO,sBAAyB,UAAU,CAAC,MAAO,IAAsB,EAAO,sBAAyB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAY,EAAO,YAAe,UAAU,CAAC,MAAO,IAAY,EAAO,YAAe,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAkB,EAAO,kBAAqB,UAAU,CAAC,MAAO,IAAkB,EAAO,kBAAqB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAkB,EAAO,kBAAqB,UAAU,CAAC,MAAO,IAAkB,EAAO,kBAAqB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA4B,EAAO,4BAA+B,UAAU,CAAC,MAAO,IAA4B,EAAO,4BAA+B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAyB,EAAO,yBAA4B,UAAU,CAAC,MAAO,IAAyB,EAAO,yBAA4B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA6C,EAAO,6CAAgD,UAAU,CAAC,MAAO,IAA6C,EAAO,6CAAgD,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAgD,EAAO,gDAAmD,UAAU,CAAC,MAAO,IAAgD,EAAO,gDAAmD,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA4C,EAAO,4CAA+C,UAAU,CAAC,MAAO,IAA4C,EAAO,4CAA+C,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAmC,EAAO,mCAAsC,UAAU,CAAC,MAAO,IAAmC,EAAO,mCAAsC,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAsC,EAAO,sCAAyC,UAAU,CAAC,MAAO,IAAsC,EAAO,sCAAyC,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA0C,EAAO,0CAA6C,UAAU,CAAC,MAAO,IAA0C,EAAO,0CAA6C,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA4B,EAAO,4BAA+B,UAAU,CAAC,MAAO,IAA4B,EAAO,4BAA+B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAyB,EAAO,yBAA4B,UAAU,CAAC,MAAO,IAAyB,EAAO,yBAA4B,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA6B,EAAO,6BAAgC,UAAU,CAAC,MAAO,IAA6B,EAAO,6BAAgC,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAA6C,EAAO,6CAAgD,KAAS,GAA+B,EAAO,+BAAkC,MAAM,EAAO,MAAS,GAAM,EAAO,QAAW,GAAQ,EAAO,QAAW,GAAQ,EAAO,WAAc,EAAW,EAAO,WAAc,GAAW,GAAI,IAAU,YAAoB,EAAO,CAAC,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,EAAO,IAAI,KAAK,OAAO,EAAO,GAAsB,YAAoB,CAAK,IAAU,KAAU,IAAU,IAAsB,IAAW,YAAa,EAAK,CAAuB,GAAtB,EAAK,GAAM,EAAc,GAAgB,EAAG,OAAO,GAAG,EAAuB,CAAC,EAAoB,GAAQ,YAAY,CAAC,IAAM,WAAW,OAAgB,GAAT,KAAY,GAAgB,EAAG,OAAO,YAAgB,CAAI,IAAiB,IAAU,GAAK,EAAO,UAAa,GAAQ,CAAA,IAAa,MAAc,KAAU,EAAoB,GAAW,EAAO,sBAAwB,EAAO,uBAA0B,OAAa,EAAO,UAAc,GAAO,UAAa,cAAc,WAAW,UAAU,CAAC,WAAW,UAAU,CAAC,EAAO,UAAa,KAAK,GAAG,KAAS,IAAQ,IAAS,EAAO,IAAO,GAAI,YAAc,EAAO,EAAS,CAAC,GAAG,CAAA,IAAU,IAAe,IAAS,GAAU,CAAA,GAAG,CAAC,GAAa,EAAwB,KAAA,aAAY,CAAC,IAAM,cAAc,WAAa,IAAe,GAAI,IAAW,GAAkB,IAAqB,IAAQ,sBAAsB,GAAW,EAAO,KAAiB,EAAO,QAAU,EAAO,OAAU,GAAQ,GAAM,IAAK,EAAM,EAAO,GAAI,IAAW,KAAS,GAAG,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,OAAO,GAAG,EAAO,QAAW,QAAS,MAAG,IAAwB,IAAc,GAAM,GAAQ,cAAa,KAGj+8D,EAA8B,UAInC,MAAO,IAAY,UAAY,MAAO,IAAW,SACnD,EAAO,QAAU,EACV,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,UAAW,CAAE,MAAO,KACxB,MAAO,IAAY,UAC1B,GAAQ,8BAAmC,KCpB7C,GAAA,GAAA,CAAA,EAAA,IAAA,CACA,GAAI,GAAqB,UAAW,CAClC,GAAI,GAAa,MAAO,WAAa,aAAe,SAAS,cAAgB,SAAS,cAAc,IAAM,OAC1G,MAAI,OAAO,aAAe,aAAa,GAAa,GAAc,YAEpE,SAAS,EAAmB,CAC1B,EAAoB,GAAqB,GAE3C,GAAI,GAAO,MAAO,IAAoB,YAAY,EAAkB,GAAO,EAAoB,EAAmB,EAAO,MAAS,GAAI,SAAQ,SAAS,EAAQ,GAAO,CAAC,EAAoB,EAAQ,EAAmB,KAAS,GAAI,GAAgB,GAAO,EAAI,IAAI,IAAO,GAAW,EAAO,eAAe,IAAM,GAAgB,GAAK,EAAO,IAAM,GAAI,GAAW,GAAO,EAAY,iBAAqB,EAAM,SAAS,EAAO,GAAQ,CAAC,KAAM,KAAa,EAAmB,GAAU,EAAsB,GAAU,EAAoB,GAAU,EAAqB,GAAM,EAAmB,MAAO,SAAS,SAAS,EAAsB,MAAO,gBAAgB,WAAW,EAAoB,MAAO,UAAU,UAAU,MAAO,SAAQ,UAAW,UAAU,MAAO,SAAQ,SAAS,MAAO,SAAS,EAAqB,CAAC,GAAoB,CAAC,GAAqB,CAAC,EAAsB,GAAI,GAAgB,GAAG,WAAoB,EAAK,CAAC,MAAG,GAAO,WAAsB,EAAO,WAAc,EAAK,GAAwB,EAAgB,EAAK,GAAI,GAAM,EAAU,EAAW,EAAmB,EAAW,EAAY,EAAwB,GAAuB,EAAwB,KAAQ,QAAQ,GAAiB,IAAS,EAAgB,UAAU,IAAI,EAAM,SAAoB,EAAS,GAAO,CAAC,MAAI,IAAO,GAAe,eAAU,GAAS,GAAiB,MAAQ,EAAS,EAAS,UAAa,GAAiB,EAAO,aAAgB,EAAS,GAAO,KAAK,SAAS,EAAW,SAAoB,EAAS,CAAC,GAAI,IAAI,EAAM,EAAS,IAAM,MAAI,IAAI,QAAQ,IAAI,GAAI,YAAW,KAAK,EAAO,GAAI,QAAe,IAAQ,QAAQ,KAAQ,OAAO,GAAG,GAAY,QAAQ,KAAQ,GAAG,QAAQ,MAAM,MAAK,EAAW,QAAQ,KAAQ,MAAM,GAAG,QAAQ,GAAM,oBAAoB,SAAS,EAAG,CAAC,GAAG,CAAE,aAAc,KAAa,KAAM,KAAM,QAAQ,GAAM,qBAAqB,IAAO,EAAM,SAAS,EAAO,CAAC,QAAQ,KAAQ,IAAS,EAAO,QAAW,UAAU,CAAC,MAAM,+BAAsC,EAAyB,OAAO,OAAM,aAAa,GAAM,SAAoB,EAAE,CAAC,MAAO,MAAK,KAAI,EAAW,SAAoB,EAAE,CAAC,GAAI,IAAK,MAAG,OAAO,aAAa,WAAmB,GAAI,YAAW,WAAW,IAAI,IAAK,KAAK,EAAE,UAAU,EAAO,MAAO,KAAO,UAAiB,KAAS,MAAO,aAAY,YAAa,EAAW,WAAmB,MAAO,YAAW,aAAa,GAAW,WAAa,MAAO,OAAO,YAAY,GAAM,SAAS,EAAO,CAAC,KAAK,KAAY,MAAO,QAAQ,aAAgB,OAAO,UAAU,aAAY,SAAQ,IAAG,QAAQ,IAAI,MAAM,QAAQ,KAAK,QAAQ,MAAM,MAAO,WAAW,YAAY,SAAS,QAAe,IAAoB,IAA0B,GAAuB,EAAgB,KAAK,SAAS,KAAa,MAAO,WAAW,aAAa,SAAS,eAAe,GAAgB,SAAS,cAAc,KAAO,GAAY,GAAgB,GAAc,EAAgB,QAAQ,WAAW,EAAG,EAAgB,EAAgB,OAAO,EAAE,EAAgB,YAAY,KAAK,GAAQ,EAAgB,GAAI,EAAM,SAAS,EAAI,CAAC,GAAI,IAAI,GAAI,gBAAe,MAAA,IAAI,KAAK,MAAM,EAAI,IAAO,GAAI,KAAK,MAAa,GAAI,cAAiB,GAAuB,GAAW,SAAS,EAAI,CAAC,GAAI,IAAI,GAAI,gBAAe,MAAA,IAAI,KAAK,MAAM,EAAI,IAAO,GAAI,aAAa,cAAc,GAAI,KAAK,MAAa,GAAI,YAAW,GAAI,YAAW,EAAU,SAAS,EAAI,GAAO,GAAQ,CAAC,GAAI,IAAI,GAAI,gBAAe,GAAI,KAAK,MAAM,EAAI,IAAM,GAAI,aAAa,cAAc,GAAI,OAAO,UAAU,CAAC,GAAG,GAAI,QAAQ,KAAK,GAAI,QAAQ,GAAG,GAAI,SAAS,CAAC,GAAO,GAAI,UAAU,OAAO,MAAW,GAAI,QAAQ,GAAQ,GAAI,KAAK,OAAO,EAAe,SAAS,EAAM,CAAC,SAAS,MAAM,IAAa,GAAI,GAAI,EAAO,OAAU,QAAQ,IAAI,KAAK,SAAa,EAAI,EAAO,UAAa,QAAQ,KAAK,KAAK,SAAS,IAAI,IAAO,GAAoB,EAAgB,eAAe,IAAM,GAAO,GAAK,EAAgB,IAAM,EAAgB,KAAQ,EAAO,WAAa,GAAW,EAAO,WAAgB,EAAO,aAAe,GAAY,EAAO,aAAkB,EAAO,MAAQ,GAAM,EAAO,MAAQ,GAAI,GAAc,EAAO,YAAc,GAAW,EAAO,YAAc,GAAI,GAAc,EAAO,eAAkB,GAAQ,MAAO,cAAc,UAAU,GAAM,mCAAmC,GAAI,GAAe,EAAM,GAAU,EAAW,WAAgB,EAAU,GAAK,CAAK,GAAW,GAAM,qBAAqB,IAAO,WAAkB,EAAM,CAAC,GAAI,IAAK,EAAO,IAAI,GAAO,MAAA,GAAO,GAAK,gCAAgC,EAAM,8BAAqC,GAAK,YAAe,EAAM,GAAW,GAAS,GAAK,GAAK,CAAC,GAAI,IAAI,CAAC,OAAS,SAAS,GAAI,CAAC,GAAI,IAAI,EAAE,GAAG,IAAM,MAAuB,KAAM,EAAE,CAAC,GAAI,IAAK,IAAI,QAAQ,GAAG,EAAE,GAAI,GAAW,IAAK,GAAa,GAAI,GAAI,IAAK,MAAO,KAAK,MAAQ,SAAS,GAAI,CAAC,GAAI,IAAI,GAAW,GAAI,QAAQ,MAAA,IAAmB,GAAI,IAAY,KAAM,YAA4B,GAAI,CAAC,MAAG,MAAa,SAAgB,GAAa,IAAQ,KAAa,UAAiB,QAAQ,IAAY,GAAI,GAAI,IAAK,EAAS,GAAW,GAAM,GAAO,GAAM,EAAE,GAAG,GAAM,OAAQ,IAAE,EAAE,GAAE,GAAK,OAAO,KAAI,CAAC,GAAI,IAAU,GAAI,GAAS,KAAO,GAAc,MAAQ,GAAE,IAAM,MAAY,GAAM,IAAG,GAAU,GAAK,MAAS,GAAM,IAAG,GAAK,IAAK,GAAI,IAAI,GAAK,MAAM,KAAK,IAAO,MAAA,IAAI,GAAmB,IAAQ,KAAQ,GAAE,GAAa,IAAc,GAAI,WAAe,EAAM,GAAW,GAAS,GAAK,CAAC,GAAS,IAAU,GAAG,GAAI,IAAY,GAAS,MAAM,SAAS,GAAK,CAAC,MAAO,MAAO,WAAe,GAAW,KAAa,SAAS,MAAG,KAAY,IAAa,CAAC,GAAa,EAAS,GAAc,UAAU,CAAC,MAAO,IAAM,EAAM,GAAW,GAAS,UAAU,KAAO,GAAI,IAAY,MAAO,cAAc,YAAY,GAAI,aAAY,QAAQ,OAAU,YAA2B,EAAK,GAAI,GAAe,CAA8C,OAAzC,IAAO,GAAI,GAAmB,GAAO,GAAU,EAAK,KAAS,CAAE,KAAQ,KAAQ,EAAE,GAAO,GAAG,GAAO,GAAI,IAAI,EAAK,UAAU,GAAa,MAAO,IAAY,OAAO,EAAK,SAAS,GAAI,KAAyB,OAAP,IAAI,GAAS,GAAI,IAAO,CAAC,GAAI,IAAG,EAAK,MAAO,GAAG,CAAE,IAAG,KAAK,CAAC,IAAK,OAAO,aAAa,IAAI,SAAS,GAAI,IAAG,EAAK,MAAO,GAAG,GAAI,IAAG,MAAM,IAAI,CAAC,IAAK,OAAO,aAAc,IAAG,KAAK,EAAE,IAAI,SAAS,GAAI,IAAG,EAAK,MAAO,GAA4F,GAArF,IAAG,MAAM,IAAK,GAAI,IAAG,KAAK,GAAG,IAAI,EAAE,GAAQ,GAAI,IAAG,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,EAAK,MAAO,GAAM,GAAG,MAAO,IAAK,OAAO,aAAa,QAAQ,CAAC,GAAI,IAAG,GAAG,MAAM,IAAK,OAAO,aAAa,MAAM,IAAI,GAAG,MAAM,GAAG,OAAQ,MAAO,IAAI,YAAsB,EAAI,GAAe,CAAC,MAAO,GAAI,GAAkB,GAAO,EAAI,IAAgB,GAAG,WAA2B,EAAI,GAAK,GAAO,GAAgB,CAAC,GAAG,CAAE,IAAgB,GAAG,MAAO,GAA0D,OAApD,IAAS,GAAW,GAAO,GAAO,GAAgB,EAAU,GAAE,EAAE,GAAE,EAAI,OAAO,EAAE,GAAE,CAAC,GAAI,IAAE,EAAI,WAAW,IAAG,GAAG,IAAG,OAAO,IAAG,MAAM,CAAC,GAAI,IAAG,EAAI,WAAW,EAAE,IAAG,GAAE,MAAQ,KAAE,OAAO,IAAI,GAAG,KAAK,GAAG,IAAG,IAAI,CAAC,GAAG,IAAQ,GAAO,MAAM,GAAK,MAAU,WAAU,IAAG,KAAK,CAAC,GAAG,GAAO,GAAG,GAAO,MAAM,GAAK,MAAU,IAAI,IAAG,EAAE,GAAK,MAAU,IAAI,GAAE,WAAW,IAAG,MAAM,CAAC,GAAG,GAAO,GAAG,GAAO,MAAM,GAAK,MAAU,IAAI,IAAG,GAAG,GAAK,MAAU,IAAI,IAAG,EAAE,GAAG,GAAK,MAAU,IAAI,GAAE,OAAO,CAAC,GAAG,GAAO,GAAG,GAAO,MAAM,GAAK,MAAU,IAAI,IAAG,GAAG,GAAK,MAAU,IAAI,IAAG,GAAG,GAAG,GAAK,MAAU,IAAI,IAAG,EAAE,GAAG,GAAK,MAAU,IAAI,GAAE,IAAI,MAAA,IAAK,IAAQ,EAAS,GAAO,GAAS,YAAsB,EAAI,GAAO,GAAgB,CAAC,MAAO,GAAkB,EAAI,GAAO,GAAO,IAAiB,YAA4B,EAAM,GAAO,CAAC,GAAM,IAAI,EAAM,IAAQ,YAAiB,EAAE,GAAS,CAAC,MAAG,GAAE,GAAS,GAAG,IAAG,GAAS,EAAE,IAAgB,EAAE,GAAI,IAAO,GAAM,GAAO,GAAO,GAAQ,GAAO,GAAQ,GAAQ,GAAQ,YAAoC,EAAI,CAAC,GAAO,EAAI,EAAO,MAAS,GAAM,GAAI,WAAU,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,OAAU,GAAO,GAAI,YAAW,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,aAAY,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,EAAO,QAAW,GAAQ,GAAI,cAAa,GAAK,GAAI,IAAe,EAAO,gBAAmB,SAAa,GAAc,GAAa,GAAO,GAAW,GAAO,GAAW,GAAO,GAAc,GAAO,GAAmB,GAAM,GAAW,KAAK,CAAC,KAAK,UAAU,CAAC,QAAwB,aAAiB,CAAC,GAAG,EAAO,OAAsF,IAAxE,MAAO,GAAO,QAAW,YAAW,GAAO,OAAU,CAAC,EAAO,SAAiB,EAAO,OAAU,QAAQ,GAAY,EAAO,OAAU,SAAU,GAAqB,IAAc,aAAsB,CAAC,GAAmB,GAAK,GAAqB,IAAY,aAAkB,CAAC,GAAqB,IAAY,aAAkB,CAAC,GAAG,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,QAAQ,GAAa,EAAO,QAAW,SAAU,GAAqB,IAAe,YAAqB,EAAG,CAAC,GAAa,QAAQ,GAAI,YAAsB,EAAG,CAAC,GAAc,QAAQ,GAAI,GAAI,IAAgB,EAAM,GAAqB,KAAS,GAAsB,KAAK,YAA0B,EAAG,CAAC,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAkB,YAA6B,EAAG,CAA0G,GAAzG,KAAqB,EAAO,wBAA2B,EAAO,uBAA0B,IAAoB,IAAiB,GAAM,MAAuB,MAAM,eAAc,IAAsB,GAAqB,MAAQ,IAAsB,CAAC,GAAI,IAAS,GAAsB,GAAsB,KAAK,MAAa,EAAO,gBAAmB,GAAG,EAAO,gBAAmB,GAAG,YAAe,EAAK,CAAI,EAAO,SAAY,EAAO,QAAW,GAAM,GAAM,GAAG,EAAI,GAAM,EAAM,GAAK,EAAW,EAAE,EAAK,SAAS,EAAK,+CAA+C,GAAI,IAAE,GAAI,aAAY,aAAa,GAAM,KAAA,GAAmB,IAAS,GAAE,YAAmB,EAAI,GAAO,CAAC,MAAO,QAAO,UAAU,WAAW,EAAI,WAAW,IAAQ,EAAI,QAAQ,MAAU,EAAE,GAAI,IAAc,wCAAwC,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAc,UAAU,YAAmB,EAAS,CAAC,MAAO,IAAU,EAAS,IAAe,GAAI,IAAe,yBAA6B,GAAU,KAAiB,IAAe,EAAW,KAAgB,YAAmB,EAAK,CAAC,GAAG,CAAC,GAAG,GAAM,IAAgB,EAAY,MAAO,IAAI,YAAW,GAAY,GAAG,EAAY,MAAO,GAAW,GAAW,KAAK,wDAAyD,GAAzD,CAA8D,GAAM,KAAM,aAA2B,CAAC,GAAG,CAAC,GAAa,IAAoB,GAAuB,CAAC,GAAG,MAAO,QAAQ,YAAY,CAAC,GAAU,IAAiB,MAAO,OAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,EAAS,CAAC,GAAG,CAAC,EAAS,GAAO,KAAK,uCAAuC,GAAe,IAAI,MAAO,GAAS,gBAAmB,MAAM,UAAU,CAAC,MAAO,IAAU,MAAuB,GAAG,EAAW,MAAO,IAAI,SAAQ,SAAS,EAAQ,GAAO,CAAC,EAAU,GAAe,SAAS,GAAS,CAAC,EAAQ,GAAI,YAAW,MAAY,MAAY,MAAO,SAAQ,UAAU,KAAK,UAAU,CAAC,MAAO,IAAU,MAAkB,aAAqB,CAAC,GAAI,GAAK,CAAC,EAAI,IAAe,YAAyB,GAAS,GAAO,CAAC,GAAI,IAAQ,GAAS,QAAQ,EAAO,IAAO,GAAQ,EAAW,EAAO,IAAO,EAAK,GAA2B,EAAW,QAAQ,GAAU,EAAO,IAAO,EAAK,GAAoB,oBAAoB,GAAiB,oBAAoB,YAAmC,GAAO,CAAC,GAAgB,GAAO,UAAa,YAAgC,GAAS,CAAC,MAAO,MAAmB,KAAK,SAAS,GAAO,CAAC,MAAO,aAAY,YAAY,GAAO,KAAQ,KAAK,GAAS,SAAS,GAAO,CAAC,EAAI,0CAA0C,IAAQ,GAAM,MAAU,aAA2B,CAAC,MAAG,CAAC,GAAY,MAAO,aAAY,sBAAuB,YAAY,CAAC,GAAU,KAAiB,CAAC,GAAU,KAAiB,MAAO,QAAQ,WAAmB,MAAM,GAAe,CAAC,YAAY,gBAAgB,KAAK,SAAS,GAAS,CAAC,GAAI,IAAO,YAAY,qBAAqB,GAAS,GAAM,MAAO,IAAO,KAAK,GAA0B,SAAS,GAAO,CAAC,MAAA,GAAI,kCAAkC,IAAQ,EAAI,6CAAoD,GAAuB,QAA2C,GAAuB,IAA4B,GAAG,EAAO,gBAAoB,GAAG,CAAC,GAAI,IAAQ,EAAO,gBAAmB,EAAK,IAAiB,MAAO,UAAc,GAAd,CAAiB,MAAA,GAAI,sDAAsD,IAAU,GAAO,MAAA,MAAmB,MAAM,GAA0B,GAAG,YAA8B,EAAU,CAAC,KAAM,EAAU,OAAO,GAAE,CAAC,GAAI,IAAS,EAAU,QAAQ,GAAG,MAAO,KAAU,WAAW,CAAC,GAAS,GAAQ,SAAS,GAAI,IAAK,GAAS,KAAQ,MAAO,KAAO,SAAa,GAAS,MAAM,OAAW,GAAU,IAAI,MAAa,GAAU,IAAI,IAAM,GAAS,KAAW,GAAK,GAAS,MAAM,OAAU,KAAK,GAAS,MAAO,aAAiB,CAAC,KAAQ,YAAgC,EAAK,GAAI,GAAI,CAAC,GAAO,WAAW,EAAK,GAAI,GAAI,IAAK,aAAoC,CAAC,MAAO,IAAO,OAAO,YAAmC,EAAK,CAAC,GAAG,CAAC,MAAA,GAAW,KAAK,EAAK,GAAO,WAAW,QAAQ,IAAI,GAA2B,EAAW,QAAe,QAAQ,GAAR,GAAa,YAAiC,EAAc,CAAC,GAAI,IAAQ,KAAgC,GAAY,WAAW,GAAG,EAAc,GAAa,MAAO,GAAM,OAAQ,IAAQ,EAAE,IAAS,EAAE,IAAS,EAAE,CAAC,GAAI,IAAkB,GAAS,GAAE,GAAG,IAAS,GAAkB,KAAK,IAAI,GAAkB,EAAc,WAAW,GAAI,IAAQ,KAAK,IAAI,GAAY,GAAQ,KAAK,IAAI,EAAc,IAAmB,QAAY,GAAY,GAA0B,IAAS,GAAG,GAAa,MAAO,GAAM,MAAO,GAAM,GAAI,IAAS,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,GAAG,IAAI,UAAU,SAAS,EAAO,GAAK,CAAC,GAAI,IAAO,GAAS,QAAQ,GAAW,KAAO,GAAG,KAAO,GAAK,MAAS,EAAE,EAAI,GAAK,GAAkB,GAAO,IAAI,GAAO,OAAO,GAAO,GAAO,KAAK,KAAQ,QAAQ,OAAU,IAAI,UAAU,CAAC,GAAS,SAAS,EAAE,GAAI,GAAI,GAAO,GAAS,QAAQ,GAAG,GAAG,MAAO,IAAK,OAAO,SAAS,EAAI,CAAC,GAAI,IAAI,GAAa,GAAK,MAAO,KAAK,MAAM,SAAS,EAAI,GAAK,CAAC,MAAO,KAAM,YAAmB,EAAG,CAAC,MAAO,GAAE,YAAkB,EAAG,GAAW,GAAY,GAAO,GAAU,EAAE,YAAmB,EAAG,GAAI,GAAO,GAAK,CAAW,OAAN,IAAI,EAAU,GAAE,EAAE,GAAE,GAAO,KAAI,CAA2D,OAAtD,IAAI,GAAO,GAAI,GAAE,GAAG,GAAO,GAAI,GAAO,GAAK,IAAE,EAAE,IAAI,GAAW,GAAE,EAAE,GAAE,GAAI,KAAK,GAAS,UAAU,EAAG,GAAO,GAAI,KAAI,IAAK,GAAI,MAAA,IAAO,IAAM,GAAG,GAAW,EAAE,GAAI,IAAc,CAAC,EAAI,GAAO,EAAI,GAAuB,EAAI,GAAwB,EAAI,GAAU,EAAI,GAAS,EAAI,IAAe,GAAI,KAAiB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAiB,EAAO,iBAAoB,UAAU,CAAC,MAAO,IAAiB,EAAO,iBAAoB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAuB,EAAO,uBAA0B,UAAU,CAAC,MAAO,IAAuB,EAAO,uBAA0B,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAe,EAAO,eAAkB,UAAU,CAAC,MAAO,IAAe,EAAO,eAAkB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAsB,EAAO,sBAAyB,UAAU,CAAC,MAAO,IAAsB,EAAO,sBAAyB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAY,EAAO,YAAe,UAAU,CAAC,MAAO,IAAY,EAAO,YAAe,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,GAAM,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAqB,EAAO,qBAAwB,UAAU,CAAC,MAAO,IAAqB,EAAO,qBAAwB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAgB,EAAO,gBAAmB,UAAU,CAAC,MAAO,IAAgB,EAAO,gBAAmB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAkB,EAAO,kBAAqB,UAAU,CAAC,MAAO,IAAkB,EAAO,kBAAqB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAO,EAAO,OAAU,UAAU,CAAC,MAAO,IAAO,EAAO,OAAU,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAS,EAAO,SAAY,UAAU,CAAC,MAAO,IAAS,EAAO,SAAY,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAmB,EAAO,mBAAsB,UAAU,CAAC,MAAO,IAAmB,EAAO,mBAAsB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAK,EAAO,KAAQ,UAAU,CAAC,MAAO,IAAK,EAAO,KAAQ,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAc,EAAO,cAAiB,UAAU,CAAC,MAAO,IAAc,EAAO,cAAiB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAQ,EAAO,QAAW,UAAU,CAAC,MAAO,IAAQ,EAAO,QAAW,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAM,EAAO,MAAS,UAAU,CAAC,MAAO,IAAM,EAAO,MAAS,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAU,EAAO,UAAa,UAAU,CAAC,MAAO,IAAU,EAAO,UAAa,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAa,EAAO,aAAgB,UAAU,CAAC,MAAO,IAAa,EAAO,aAAgB,EAAO,IAAO,IAAO,MAAM,KAAK,YAAgB,GAAW,EAAO,WAAc,UAAU,CAAC,MAAO,IAAW,EAAO,WAAc,EAAO,IAAO,IAAO,MAAM,KAAK,YAAY,EAAO,MAAS,EAAM,GAAI,IAAU,YAAoB,EAAO,CAAC,KAAK,KAAK,aAAa,KAAK,QAAQ,gCAAgC,EAAO,IAAI,KAAK,OAAO,EAAO,GAAsB,YAAoB,CAAK,IAAU,KAAU,IAAU,IAAsB,IAAW,YAAa,EAAK,CAA6D,GAA5D,EAAK,GAAM,EAAc,GAAgB,GAAU,MAAY,GAAgB,GAAG,OAAO,aAAgB,CAAI,IAAiB,IAAU,GAAK,EAAO,UAAa,GAAQ,CAAA,GAAa,MAAc,KAAU,EAAoB,GAAW,EAAO,sBAAwB,EAAO,uBAA0B,OAAa,EAAO,UAAc,GAAO,UAAa,cAAc,WAAW,UAAU,CAAC,WAAW,UAAU,CAAC,EAAO,UAAa,KAAK,GAAG,MAAS,IAAQ,KAA2B,GAAlB,EAAO,IAAO,GAAO,EAAO,QAA0F,IAA3E,MAAO,GAAO,SAAY,YAAW,GAAO,QAAW,CAAC,EAAO,UAAkB,EAAO,QAAW,OAAO,GAAG,EAAO,QAAW,QAAS,MAAA,MAG/6yB,EAAkB,UAIvB,MAAO,IAAY,UAAY,MAAO,IAAW,SACnD,EAAO,QAAU,EACV,MAAO,SAAW,YAAc,OAAO,IAC9C,OAAO,GAAI,UAAW,CAAE,MAAO,KACxB,MAAO,IAAY,UAC1B,GAAQ,kBAAuB,KCpBjC,GAAA,GAAA,CAAA,EAAA,IAAA,CA2BC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAc,EAAM,CAClB,GAAI,GAAK,KAAM,EAAO,IAEtB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,QAAU,EAAG,GAAK,EAAG,EAAI,sBACjC,MAAA,GAAG,GAAK,EAAG,GACX,EAAG,GAAK,EAAG,GACJ,EAAG,GAAK,EAAK,GAAG,EAAI,EAAI,IAIjC,EAAG,EAAI,EACP,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,GAAK,EAAK,KACb,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAG,IAAM,EAAK,GACV,EAAG,GAAK,GAAK,GAAG,IAAM,GAC1B,EAAO,KAGT,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACT,EAAE,GAAK,EAAE,GACF,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAK,GACd,EAAQ,GAAQ,EAAK,MACrB,EAAO,EAAG,KACd,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAQ,GAAG,OAAS,WAAe,GAC7D,EAAK,OAAS,UAAW,CACvB,MAAO,KAAU,KAAS,QAAW,GAAK,uBAE5C,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGT,YAAgB,CACd,GAAI,GAAI,WAEJ,EAAO,SAAS,EAAM,CACxB,EAAO,EAAK,WACZ,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAK,EAAK,WAAW,GACrB,GAAI,GAAI,mBAAsB,EAC9B,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EACL,EAAI,IAAM,EACV,GAAK,EACL,GAAK,EAAI,WAEX,MAAQ,KAAM,GAAK,uBAGrB,MAAO,GAIL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,KAAO,IAIZ,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9GnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAEzB,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGP,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAK,EAAG,GAAK,GACxB,MAAA,GAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACV,EAAG,EAAI,EAAG,EACH,EAAG,GAAM,EAAG,IAAM,GAAM,EAAK,IAAM,GAGxC,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC7EnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAGC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAK,EAAG,EAAK,EAAG,IAAM,EAC1B,MAAA,GAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAI,EAAG,EACzC,GAAG,EAAK,EAAG,EAAI,OAAS,GAC5B,GAAG,EAAK,EAAG,EAAK,EAAG,GAAK,EAAO,GAAK,GAAK,IAAO,GAGtD,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAEH,IAAU,GAAO,GAEnB,EAAG,EAAI,EAGP,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAC5B,GAAK,EAAQ,QACf,GAAG,EAAI,EAAG,GAAK,GAAK,EAAG,IAAM,GAE/B,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UClFnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAKC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CAEnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAAG,EAC9B,MAAA,GAAI,EAAE,GAAI,GAAM,IAAM,EAAI,EAAI,EAAK,GAAK,GACxC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,GACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,IAAM,EACpC,EAAI,EAAG,EAAI,EAAK,GAAI,GAAK,EAAK,GAAK,EACnC,EAAI,EAAG,EAAI,EAAK,GAAI,EAAI,EAAK,GAAK,GAAK,GAAK,EAAK,GAAK,EACtD,EAAE,GAAK,EACP,EAAG,EAAK,EAAI,EAAK,EACV,GAGT,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAI,GAEd,GAAI,IAAU,GAAO,GAEnB,EAAI,EAAE,GAAK,MAIX,KADA,EAAO,GAAK,EACP,EAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,EAAE,EAAI,GAAM,EAAE,EAAI,IAAM,GACnB,EAAK,WAAW,GAAK,EAAG,EAAI,EAAK,IAAM,GAIhD,KAAO,EAAE,OAAS,GAAG,EAAE,KAAK,GAC5B,IAAK,EAAI,EAAG,EAAI,GAAK,EAAE,KAAO,EAAG,EAAE,EAAE,CAOrC,IANI,GAAK,EAAG,EAAI,EAAE,GAAK,GAAS,EAAI,EAAE,GAEtC,EAAG,EAAI,EACP,EAAG,EAAI,EAGF,EAAI,IAAK,EAAI,EAAG,EAAE,EACrB,EAAG,OAIP,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EAAE,QACV,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,UAAY,IAIjB,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UC9FnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAyBC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAGT,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAG,EAE3B,MAAA,GAAG,EAAI,EAAK,EAAI,WAAc,EAE9B,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GAEX,EAAI,EAAE,GAAK,EAAI,EACf,EAAG,EAAI,EAEC,EAAK,GAAK,IAAM,IAAQ,GAGlC,WAAc,EAAI,EAAM,CACtB,GAAI,GAAG,EAAG,EAAG,EAAG,EAAG,EAAI,GAAI,EAAQ,IAYnC,IAXI,IAAU,GAAO,GAEnB,GAAI,EACJ,EAAO,MAGP,GAAO,EAAO,KACd,EAAI,EACJ,EAAQ,KAAK,IAAI,EAAO,EAAK,SAG1B,EAAI,EAAG,EAAI,IAAK,EAAI,EAAO,EAAE,EAE5B,GAAM,IAAK,EAAK,WAAY,GAAI,IAAM,EAAK,SAE3C,IAAM,GAAG,GAAI,GACjB,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,GAAK,EACV,GAAK,IAAM,GACP,GAAK,GACP,GAAK,EAAI,WAAc,EACvB,EAAK,EAAE,EAAI,MAAS,EAAI,EACxB,EAAU,GAAL,EAAU,EAAI,EAAI,GAW3B,IAPI,GAAK,KACP,GAAG,IAAQ,EAAK,QAAU,GAAK,KAAO,IAKxC,EAAI,IACC,EAAI,EAAI,IAAK,EAAI,EAAG,EAAE,EACzB,EAAI,EAAG,EAAI,GAAM,KACjB,EAAI,EAAE,EAAM,EAAI,EAAK,KACrB,GAAK,GAAK,GACV,GAAK,GAAK,GACV,GAAK,IAAM,GACX,GAAK,IAAM,GACX,EAAE,GAAK,EAAI,EAGb,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,EAGT,EAAK,EAAI,GAGX,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAGT,WAAc,EAAM,EAAM,CACpB,GAAQ,MAAM,GAAO,CAAE,GAAI,OAC/B,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,GAAM,GAAG,EAAK,EAAO,GACzB,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,QAAU,IAIf,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UChJnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAIC,AAAA,UAAS,EAAQ,EAAQ,EAAQ,CAElC,WAAgB,EAAM,CACpB,GAAI,GAAK,KAAM,EAAU,GAGzB,EAAG,KAAO,UAAW,CACnB,GAAI,GAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACzC,MAAA,GAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAK,GAAK,GAAO,IAAM,EAAK,EAC5B,EAAK,EAAI,EAAK,EACd,EAAG,EAAI,EAAK,GAAK,GAAO,IAAM,GAAM,EACpC,EAAG,EAAI,EAAK,EAAI,EAAK,EACrB,EAAG,EAAK,GAAK,GAAO,IAAM,GAAM,EACzB,EAAG,EAAK,EAAI,EAAK,GAmB1B,EAAG,EAAI,EACP,EAAG,EAAI,EACP,EAAG,EAAI,WAAa,EACpB,EAAG,EAAI,WAEH,IAAS,KAAK,MAAM,GAEtB,GAAG,EAAK,EAAO,WAAe,EAC9B,EAAG,EAAI,EAAO,GAGd,GAAW,EAIb,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAS,GAAI,IACvC,EAAG,GAAK,EAAQ,WAAW,GAAK,EAChC,EAAG,OAIP,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACD,EAGT,WAAc,EAAM,EAAM,CACxB,GAAI,GAAK,GAAI,GAAO,GAChB,EAAQ,GAAQ,EAAK,MACrB,EAAO,UAAW,CAAE,MAAQ,GAAG,SAAW,GAAK,YACnD,MAAA,GAAK,OAAS,UAAW,CACvB,EACE,IAAI,GAAM,EAAG,SAAW,GACpB,EAAO,GAAG,SAAW,GAAK,WAC1B,EAAU,GAAM,GAAQ,IAAK,UAC1B,IAAW,GACpB,MAAO,IAET,EAAK,MAAQ,EAAG,KAChB,EAAK,MAAQ,EACT,GACE,OAAO,IAAU,UAAU,EAAK,EAAO,GAC3C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAI,MAErC,EAGL,GAAU,EAAO,QACnB,EAAO,QAAU,EACR,GAAU,EAAO,IAC1B,EAAO,UAAW,CAAE,MAAO,KAE3B,KAAK,OAAS,IAId,EACC,MAAO,IAAW,UAAY,EAC9B,MAAO,SAAW,YAAc,UCnGnC,GAAA,GAAA,CAAA,EAAA,IAAA,CAwBC,AAAA,UAAU,EAAM,EAAM,CAOvB,GAAI,GAAU,GAAG,MAAM,QACnB,EAAQ,IACR,EAAS,EACT,EAAS,GACT,EAAU,SACV,EAAa,EAAK,IAAI,EAAO,GAC7B,EAAe,EAAK,IAAI,EAAG,GAC3B,EAAW,EAAe,EAC1B,EAAO,EAAQ,EACf,EAMJ,WAAoB,EAAM,EAAS,EAAU,CAC3C,GAAI,GAAM,GACV,EAAW,GAAW,GAAQ,CAAE,QAAS,IAAU,GAAW,GAG9D,GAAI,GAAY,EAAO,EACrB,EAAQ,QAAU,CAAC,EAAM,EAAS,IACjC,GAAQ,KAAQ,IAAa,EAAM,GAAI,GAGtC,EAAO,GAAI,GAAK,GAIhB,EAAO,UAAW,CAIpB,OAHI,GAAI,EAAK,EAAE,GACX,EAAI,EACJ,EAAI,EACD,EAAI,GACT,EAAK,GAAI,GAAK,EACd,GAAK,EACL,EAAI,EAAK,EAAE,GAEb,KAAO,GAAK,GACV,GAAK,EACL,GAAK,EACL,KAAO,EAET,MAAQ,GAAI,GAAK,GAGnB,MAAA,GAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,GAC7C,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAE,GAAK,YAC7C,EAAK,OAAS,EAGd,EAAO,EAAS,EAAK,GAAI,GAGjB,GAAQ,MAAQ,GACpB,SAAS,EAAM,EAAM,EAAc,EAAO,CAUxC,MATI,IAEE,GAAM,GAAK,EAAK,EAAO,GAE3B,EAAK,MAAQ,UAAW,CAAE,MAAO,GAAK,EAAM,MAK1C,EAAgB,GAAK,GAAW,EAAa,GAIrC,IAElB,EACA,EACA,UAAY,GAAU,EAAQ,OAAU,MAAQ,EAChD,EAAQ,OAEV,EAAK,OAAS,GAAW,EAYzB,WAAc,EAAK,CACjB,GAAI,GAAG,EAAS,EAAI,OAChB,EAAK,KAAM,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,EAAG,EAAI,GAMtD,IAHK,GAAU,GAAM,CAAC,MAGf,EAAI,GACT,EAAE,GAAK,IAET,IAAK,EAAI,EAAG,EAAI,EAAO,IACrB,EAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,EAAI,EAAI,GAAW,GAAI,EAAE,KAClD,EAAE,GAAK,EAIR,AAAA,GAAG,EAAI,SAAS,EAAO,CAItB,OAFI,GAAG,EAAI,EACP,EAAI,EAAG,EAAG,EAAI,EAAG,EAAG,EAAI,EAAG,EACxB,KACL,EAAI,EAAE,EAAI,EAAQ,EAAI,GACtB,EAAI,EAAI,EAAQ,EAAE,EAAS,GAAE,GAAK,EAAE,EAAI,EAAQ,EAAI,IAAQ,GAAE,GAAK,IAErE,MAAA,GAAG,EAAI,EAAG,EAAG,EAAI,EACV,IAIN,GAOL,WAAc,EAAG,EAAG,CAClB,MAAA,GAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EACR,EAAE,EAAI,EAAE,EAAE,QACH,EAOT,WAAiB,EAAK,EAAO,CAC3B,GAAI,GAAS,GAAI,EAAO,MAAO,GAAM,EACrC,GAAI,GAAS,GAAO,SAClB,IAAK,IAAQ,GACX,GAAI,CAAE,EAAO,KAAK,EAAQ,EAAI,GAAO,EAAQ,UAAc,EAAd,EAGjD,MAAQ,GAAO,OAAS,EAAS,GAAO,SAAW,EAAM,EAAM,KAQjE,WAAgB,EAAM,EAAK,CAEzB,OADI,GAAa,EAAO,GAAI,EAAO,EAAI,EAChC,EAAI,EAAW,QACpB,EAAI,EAAO,GACT,EAAS,IAAS,EAAI,EAAO,GAAK,IAAM,EAAW,WAAW,KAElE,MAAO,GAAS,GAQlB,YAAoB,CAClB,GAAI,CACF,GAAI,GACJ,MAAI,IAAe,GAAM,EAAW,aAElC,EAAM,EAAI,GAEV,GAAM,GAAI,YAAW,GACpB,GAAO,QAAU,EAAO,UAAU,gBAAgB,IAE9C,EAAS,SACT,EADS,CAEhB,GAAI,GAAU,EAAO,UACjB,EAAU,GAAW,EAAQ,QACjC,MAAO,CAAC,CAAC,GAAI,MAAM,EAAQ,EAAS,EAAO,OAAQ,EAAS,KAQhE,WAAkB,EAAG,CACnB,MAAO,QAAO,aAAa,MAAM,EAAG,GAgBtC,GANA,EAAO,EAAK,SAAU,GAMjB,MAAO,IAAW,UAAY,EAAO,QAAS,CACjD,EAAO,QAAU,EAEjB,GAAI,CACF,EAAqB,WACd,EADc,OAEb,OAAO,SAAW,YAAc,OAAO,KACjD,OAAO,UAAW,CAAE,MAAO,OAK3B,GACA,QCxPF,GAAA,GAAA,CAAA,EAAA,IAAA,CAYA,GAAI,GAAe,KAKf,EAAiB,KAKjB,EAAiB,KAQjB,EAAoB,KASpB,EAAkB,KAOlB,EAAiB,KAIjB,EAAa,KAEjB,EAAG,KAAO,EACV,EAAG,OAAS,EACZ,EAAG,OAAS,EACZ,EAAG,UAAY,EACf,EAAG,QAAU,EACb,EAAG,OAAS,EAEZ,EAAO,QAAU,IC3DjB,GAAA,GAAA,IAAA,IAAA,GAAA,QAAA,GAAA,QAAA,GAAA,QAAA,GAAA,QAAA,GAAA,QCoBa,GAAkB,KAClB,GAAkB,KAwBzB,GAAA,KAAkB,CAItB,YAAoB,EAAgC,EAAoB,CAApD,KAAA,QAAA,EAAgC,KAAA,UAAA,EAH5C,KAAA,KAAO,GAAI,SACX,KAAA,aAAe,EAIvB,IAAI,EAAc,CAChB,MAAK,MAAK,KAAK,IAAI,IACjB,KAAK,UAAU,SAAS,KAAK,QAAS,GAEjC,KAAK,KAAK,IAAI,GAGvB,IAAI,EAAgB,EAAQ,CAC1B,KAAK,eACL,KAAK,KAAK,IAAI,EAAQ,GAGxB,IAAI,EAAc,CAChB,MAAO,MAAK,KAAK,IAAI,GAGvB,OAAO,EAAc,CACnB,MAAA,MAAK,eACE,KAAK,KAAK,OAAO,GAG1B,YAAU,CACR,MAAO,MAAK,eAyBV,GAAA,KAAoB,CACxB,SAAS,EAAc,CACrB,MAAO,IAAkB,YAE3B,OAAO,EAAc,CACnB,MAAO,IAAkB,UAE3B,gBAAc,CACZ,MAAO,GAET,KAAK,EAAa,CAChB,MAAO,IAAkB,QAE3B,KAAK,EAAc,CACjB,MAAO,IAAkB,QAE3B,SAAS,EAAc,CACrB,MAAO,IAAkB,YAE3B,YAAU,CACR,MAAO,IAAkB,cAE3B,YAAY,EAAgB,EAAe,CACzC,MAAO,IAAkB,eAE3B,MAAM,EAAuB,EAAiB,EAAe,CAC3D,MAAO,IAAkB,SAE3B,KACI,EAAgB,EAAuB,EAAiB,EACxD,EAAgB,CAClB,MAAO,IAAkB,QAE3B,QAAM,CACJ,MAAO,IAAkB,UAG3B,gBAAc,CACZ,MAAO,IAAkB,kBAG3B,SAAO,CACL,MAAO,MAAK,mBAAqB,GAAK,GAAkB,GAE1D,SAAO,CACL,MAAO,IAAkB,aAI7B,YAA2B,EAAkB,CAC3C,KAAM,IAAI,OACN,IAAI,6HCpHJ,YAAkB,EACY,CAClC,GAAI,GAAU,EAAM,OAChB,EAAO,EACP,EAAQ,EAEZ,KAAO,EAAU,GAEf,EAAS,KAAK,SAAW,EAAW,EAEpC,IAEA,EAAO,EAAM,GACb,EAAM,GAAW,EAAM,GACvB,EAAM,GAAS,EAqBb,YAAuB,EAEP,EAAiD,CAErE,GAAI,EAAM,SAAW,EAAO,OAC1B,KAAM,IAAI,OACR,yEAC0B,EAAM,iCACL,EAAO,UAEtC,GAAI,GAAU,EAAM,OAChB,EAAM,EACN,EAAQ,EAEZ,KAAO,EAAU,GAEf,EAAS,KAAK,SAAW,EAAW,EAEpC,IAEA,EAAO,EAAM,GACb,EAAQ,EAAO,GACf,EAAM,GAAW,EAAM,GACvB,EAAO,GAAW,EAAO,GACzB,EAAM,GAAS,EACf,EAAO,GAAS,EAKd,YAAgB,EAAa,EAAW,EAAW,CACvD,MAAO,MAAK,IAAI,EAAK,KAAK,IAAI,EAAG,IAG7B,YAA4B,EAAW,CAC3C,MAAO,GAAM,GAAM,EAAI,EAAM,EAAM,EAG/B,YAAc,EAAa,CAC/B,GAAI,GAAM,EACV,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAC9B,GAAO,EAAI,GAEb,MAAO,GAUH,YAAsB,EAAW,EAAS,CAC9C,GAAM,GAAI,KAAK,SACf,MAAQ,GAAI,EAAM,GAAI,GAAK,EAIvB,YAAsB,EAAe,EAAa,CACtD,GAAI,GAAS,EACb,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,IAAK,CACjC,GAAM,GAAO,OAAO,EAAE,IAAM,OAAO,EAAE,IACrC,GAAU,EAAO,EAEnB,MAAO,GAkBH,WAAiB,EAAe,EAAiB,CACrD,GAAI,CAAC,EACH,KAAM,IAAI,OAAM,MAAO,IAAQ,SAAW,EAAM,KAI9C,YACF,EAAkB,EAAkB,EAAqB,GAAE,CAC7D,EACI,GAAY,EAAQ,GACpB,IAAM,EAAqB,WAAW,SAAc,gBAGpD,YAAwB,EAAa,CACzC,EACI,GAAK,KACL,IAAM,iEAsBN,YAEF,EAA0B,EAAc,GAAI,EAAiB,GAAK,CAIpE,GAHI,GAAU,MACZ,GAAS,IAEP,MAAM,QAAQ,IAAQ,GAAa,IAAQ,CAAC,EAC9C,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAE,EAChC,GAAQ,EAAI,GAAI,EAAQ,OAG1B,GAAO,KAAK,GAEd,MAAO,GAcH,YAAwB,EAAe,CAC3C,GAAI,EAAM,SAAW,EAEnB,MAAO,GAET,GAAI,GAAO,EAAM,GACjB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,GAAQ,EAAM,GAEhB,MAAO,GAGH,YAAwB,EAAe,CAC3C,MAAO,GAAM,SAAW,EAGpB,YAAsB,EAAgB,EAAc,CACxD,GAAI,IAAO,EACT,MAAO,GAMT,GAJI,GAAM,MAAQ,GAAM,MAIpB,EAAG,SAAW,EAAG,OACnB,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,GAAI,EAAG,KAAO,EAAG,GACf,MAAO,GAGX,MAAO,GAGH,YAAgB,EAAS,CAC7B,MAAO,GAAI,GAAM,EAGb,YAAe,EAAS,CAE5B,GAAK,KAAa,MAAQ,KAExB,MAAQ,MAAa,KAAK,GAE5B,GAAI,IAAM,SACR,MAAO,GACF,GAAI,IAAM,UACf,MAAO,GACF,CACL,GAAM,GAAM,KAAK,IAAI,EAAI,GACzB,MAAQ,GAAM,GAAM,GAAM,IAIxB,YAA8B,EAAY,CAC9C,GAAM,GAAQ,KAAK,KAAK,KAAK,KAAK,IAClC,MAAO,CAAC,EAAO,KAAK,KAAK,EAAO,IAe5B,YAAgC,EAAS,CAC7C,GAAM,GAAkB,GAAI,aAAY,GACxC,OAAS,GAAI,EAAG,EAAI,EAAG,EAAE,EACvB,EAAgB,GAAK,EAEvB,MAAA,IAAQ,GACD,EAGH,YAAmB,EAAW,EAAY,CAC9C,MAAI,IAAQ,EAAE,OACL,EAEF,EAAI,IAAI,OAAO,EAAO,EAAE,QAG3B,YACF,EAAwB,EAAW,GAAoB,EACvD,EAAmB,CACrB,MAAO,IAAI,SAAc,CAAC,EAAS,IAAU,CAC3C,GAAI,GAAW,EAET,EAAQ,IAAK,CACjB,GAAI,IAAW,CACb,IACA,OAGF,IAEA,GAAM,GAAc,EAAQ,GAE5B,GAAI,GAAc,MAAQ,GAAY,EAAY,CAChD,IACA,OAEF,WAAW,EAAO,IAGpB,MAaE,YACF,EAAiB,EAAY,CAC/B,GAAI,GAAY,EACZ,EAAc,GAElB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAClC,GAAI,EAAM,IAAM,EACd,GAAa,EAAM,WACV,EAAM,KAAO,GAAI,CAC1B,GAAI,IAAgB,GAClB,KAAM,OACF,yDACmB,aAAuB,KAEhD,EAAc,UACL,EAAM,GAAK,EACpB,KAAM,OAAM,gCAAgC,EAAM,aAAa,KAInE,GAAI,IAAgB,GAAI,CACtB,GAAI,EAAO,GAAK,IAAS,EACvB,KAAM,OAAM,QAAQ,sCAAyC,KAE/D,MAAO,GAGT,GAAI,IAAc,EAChB,KAAM,OACF,qCAAqC,gCAG3C,GAAI,EAAO,GAAc,EACvB,KAAM,OACF,wDACO,OAAU,KAGvB,GAAM,GAAW,EAAM,QACvB,MAAA,GAAS,GAAe,EAAO,EACxB,EAGH,YACF,EAAuB,EAAe,CACxC,GAAM,GAAO,EAAM,OAGnB,MAAA,GAAO,GAAQ,KAAO,EAAM,IAAI,CAAC,EAAG,IAAM,GAAK,GAAG,OAAO,GAGzD,EACI,EAAK,MAAM,GAAM,GAAM,CAAC,GAAQ,EAAK,GACrC,IACI,+CAA+C,MAAS,mBAC5C,KAGpB,EACI,EAAK,MAAM,GAAM,GAAM,IACvB,IAAM,0DACU,KAGb,EAAK,IAAI,GAAK,EAAI,EAAI,EAAO,EAAI,GAIpC,YAAuB,EAAiB,EAAe,CAE3D,GAAM,GAAqB,GACrB,EAAqB,GACrB,EAAe,GAAQ,MAAQ,MAAM,QAAQ,IAAS,EAAK,SAAW,EACtE,EAAQ,GAAQ,MAAQ,EAC1B,KACA,GAAe,EAAM,GAAO,OAC5B,EAAI,EACR,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,GAAI,GAAQ,KAAM,CAChB,GAAI,EAAK,KAAO,GAAK,EAAM,KAAO,EAChC,KAAM,IAAI,OACN,sBAAsB,oBAAoB,EAAM,gBAEjD,AAAA,GAAK,IAAM,MAAQ,EAAK,GAAK,IAAM,EAAM,KAAO,GACnD,GAAS,KAAK,EAAM,IACpB,EAAS,KAAK,IAEZ,EAAK,IAAM,GACb,IAGA,EAAM,KAAO,GACf,GAAS,KAAK,EAAM,IACpB,EAAS,KAAK,IAGlB,MAAO,CAAC,SAAA,EAAU,SAAA,GAGd,YACF,EAAU,EAAY,CACxB,GAAI,GAAS,KACb,GAAI,GAAS,MAAQ,IAAU,UAC7B,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,OAExB,MAAM,IAAI,OAAM,qBAAqB,KAEvC,MAAO,GAGH,YACF,EAAU,EAAY,CACxB,GAAI,GAAS,KACb,GAAI,GAAS,MAAQ,IAAU,UAC7B,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,WACf,IAAU,SACnB,EAAS,GAAI,OAAgB,OAE7B,MAAM,IAAI,OAAM,qBAAqB,KAEvC,MAAO,GAGH,YACF,EAA+B,EAAQ,CACzC,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAM,EAAK,GACjB,GAAI,MAAM,IAAQ,CAAC,SAAS,GAC1B,KAAM,OAAM,oBAAoB,6BAAiC,OAMjE,YAAuB,EAAe,CAC1C,MAAO,KAAU,QAAU,IAAU,aAAe,IAAU,WAC1D,IAAU,SAAW,IAAU,SAO/B,YAA0B,EAAmB,EAAiB,CAUlE,MATI,CAAA,KAAY,aAGZ,IAAY,WAAa,IAAY,aAGrC,IAAY,SAAW,IAAY,WAAa,IAAY,aAG5D,IAAY,QAAU,IAAY,QAMlC,YAAuB,EAAK,CAChC,MAAO,aAAa,eAAgB,YAAa,aAC7C,YAAa,YAGb,YAA0B,EAAe,CAC7C,GAAI,IAAU,WAAa,IAAU,QACnC,MAAO,GACF,GAAI,IAAU,YACnB,MAAO,GACF,GAAI,IAAU,OACnB,MAAO,GAEP,KAAM,IAAI,OAAM,iBAAiB,KAU/B,YAA+B,EAAiB,CACpD,GAAI,GAAO,KACT,MAAO,GAET,GAAI,GAAQ,EACZ,MAAA,GAAI,QAAQ,GAAK,GAAS,EAAE,QACrB,EAIH,YAAmB,EAAS,CAChC,MAAO,OAAO,IAAU,UAAY,YAAiB,QAGjD,YAAoB,EAAS,CACjC,MAAO,OAAO,IAAU,UAGpB,YAAmB,EAAS,CAChC,MAAO,OAAO,IAAU,SAGpB,YAAqB,EAAkB,CAC3C,MAAI,OAAM,QAAQ,GACT,GAAW,EAAO,IAEvB,YAAkB,cACb,UACE,YAAkB,aAAc,YAAkB,YACpD,QACE,GAAS,GACX,UACE,GAAS,GACX,SACE,GAAU,GACZ,OAEF,UAGH,YAAqB,EAAW,CACpC,MAAO,CAAC,CAAE,IAAK,EAAE,aAAe,EAAE,MAAQ,EAAE,OAGxC,YAAyB,EAAc,EAAa,CACxD,OAAS,GAAI,EAAO,EAAI,EAAM,EAAE,EAC9B,GAAI,EAAO,GAAM,EACf,MAAO,GAGX,MAAO,GAGH,YAAyB,EAAe,CAC5C,GAAM,GAAO,EAAM,OACnB,GAAI,EAAO,EACT,MAAO,GAKT,GAAM,GAAU,GAAI,OAAM,EAAO,GACjC,EAAQ,EAAO,GAAK,EAAM,EAAO,GACjC,OAAS,GAAI,EAAO,EAAG,GAAK,EAAG,EAAE,EAC/B,EAAQ,GAAK,EAAQ,EAAI,GAAK,EAAM,EAAI,GAE1C,MAAO,GAGT,YAA2B,EAAgB,EAAiB,EAAa,CACvE,GAAM,GAAM,GAAI,OAChB,GAAI,EAAM,SAAW,EAAG,CACtB,GAAM,GAAI,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAI,GAAK,EAAE,EAAS,OAEjB,CACL,GAAM,GAAI,EAAM,GACV,EAAO,EAAM,MAAM,GACnB,EAAM,EAAK,OAAO,CAAC,EAAK,IAAM,EAAM,GAC1C,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAI,GAAK,GAAkB,EAAS,EAAI,EAAK,EAAM,GAGvD,MAAO,GAIH,YAAwB,EAAiB,EAAa,CAC1D,GAAI,EAAM,SAAW,EAEnB,MAAO,GAAE,GAEX,GAAM,GAAO,EAAM,OAAO,CAAC,EAAK,IAAM,EAAM,GAC5C,GAAI,IAAS,EAEX,MAAO,GAET,GAAI,IAAS,EAAE,OACb,KAAM,IAAI,OAAM,IAAI,oCAAwC,EAAE,WAGhE,MAAO,IAAkB,EAAG,EAAO,GAG/B,YACF,EAAc,EAAQ,CACxB,GAAM,GAAQ,GAAoB,EAAM,GACxC,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAM,GAAK,EAEb,MAAO,GAGH,YACF,EAAc,EAAQ,CACxB,GAAI,GAAS,MAAQ,IAAU,WAAa,IAAU,YACpD,MAAO,IAAI,cAAa,GACnB,GAAI,IAAU,QACnB,MAAO,IAAI,YAAW,GACjB,GAAI,IAAU,OACnB,MAAO,IAAI,YAAW,GAEtB,KAAM,IAAI,OAAM,qBAAqB,KASnC,YACF,EAAiB,EAAQ,CAC3B,GAAM,GAAO,EAAM,OAAO,CAAC,EAAM,IAAS,EAAO,EAAM,GACvD,GAAI,GAAS,MAAQ,IAAU,UAC7B,MAAO,IAAc,EAAO,GAAI,cAAa,IACxC,GAAI,IAAU,QACnB,MAAO,IAAc,EAAO,GAAI,YAAW,IACtC,GAAI,IAAU,OACnB,MAAO,IAAc,EAAO,GAAI,YAAW,IAE3C,KAAM,IAAI,OAAM,qBAAqB,KAInC,YAA6C,EAAe,CAChE,EAAM,QAAQ,GAAU,CACtB,EACI,OAAO,UAAU,IAAY,GAAW,EACxC,IACI,0EACU,SAYhB,YACF,EAAgB,EAAc,EAAiB,CACjD,GAAI,IAAS,EACX,MAAO,GACF,GAAI,IAAS,EAClB,MAAO,GAAK,GAEd,GAAI,GAAQ,EAAK,EAAK,OAAS,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,GAAS,EAAQ,GAAK,EAAK,GAE7B,MAAO,GAWH,YACF,EAAe,EAAc,EAAiB,CAChD,GAAI,IAAS,EACX,MAAO,GACF,GAAI,IAAS,EAClB,MAAO,CAAC,GAEV,GAAM,GAAiB,GAAI,OAAM,GACjC,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,EAAK,GAAK,KAAK,MAAM,EAAQ,EAAQ,IACrC,GAAS,EAAK,GAAK,EAAQ,GAE7B,MAAA,GAAK,EAAK,OAAS,GAAK,EACjB,EAQH,YAAoB,EAAW,CAOnC,MAAO,IAAU,EAAO,MAAQ,MAAO,GAAO,MAAS,WCntBzD,GAAM,IAA4B,YAmB5B,GAAA,KAAkB,CAUtB,YAAmB,EAAW,CAAX,KAAA,OAAA,EATX,KAAA,MAAe,GACf,KAAA,aAAwD,GAExD,KAAA,SAAkB,GAOxB,KAAK,mBAGP,YAAY,EAAsB,EAAkB,CAC9C,KAAK,UAAY,MACnB,QAAQ,KACJ,YAAY,KAAK,oEACgB,MAEvC,KAAK,aAAe,EACpB,KAAK,SAAW,EAGlB,aACI,EAAkB,EAClB,EAAoC,CAKtC,GAJA,KAAK,aAAa,GAAY,CAAC,aAAA,EAAc,QAAA,GAIzC,KAAK,SAAS,IAAa,KAAM,CACnC,GAAM,GAAY,KAAK,SAAS,GAChC,QAAQ,KACJ,qCAAqC,MAAa,MACtD,KAAK,IAAI,EAAU,SAIjB,UAAS,EAAgB,CAC7B,MAAI,KAAY,MAAK,MACZ,KAAK,MAAM,GAGpB,MAAK,MAAM,GAAY,KAAM,MAAK,aAAa,GACxC,KAAK,MAAM,IAGpB,IAAI,EAAgB,CAClB,GAAI,IAAY,MAAK,MACnB,MAAO,MAAK,MAAM,GAGpB,GAAM,GAAY,KAAK,aAAa,GACpC,GAAI,GAAU,GACZ,KAAM,IAAI,OACN,QAAQ,uEAId,MAAA,MAAK,MAAM,GAAY,EAEhB,KAAK,MAAM,GAGpB,UAAU,EAAgB,CACxB,MAAO,MAAK,IAAI,GAGlB,QAAQ,EAAgB,CACtB,MAAO,MAAK,IAAI,GAGlB,UAAQ,CACN,MAAO,MAAK,SAGV,WAAQ,CACV,MAAO,MAAK,MAGd,IAAI,EAAkB,EAAgB,CACpC,GAAI,KAAK,aAAa,IAAa,KACjC,KAAM,IAAI,OACN,mBAAmB,oCAEzB,KAAK,MAAM,GAAY,EACnB,KAAK,aAAa,GAAU,SAAW,MACzC,KAAK,aAAa,GAAU,QAAQ,GAIhC,aAAa,EAAgB,CACnC,GAAI,KAAK,aAAa,IAAa,KACjC,KAAM,IAAI,OACN,yBAAyB,qCAE/B,MAAO,MAAK,aAAa,GAAU,eAGrC,SAAS,EAAY,CACnB,KAAK,MAAQ,OAAO,OAAO,GAAI,GAGjC,OAAK,CACH,KAAK,MAAQ,GACb,KAAK,SAAW,GAChB,KAAK,mBAGC,kBAAgB,CACtB,GAAI,MAAO,MAAK,QAAW,aACvB,MAAO,MAAK,OAAO,UAAa,aAChC,MAAO,MAAK,OAAO,SAAS,QAAW,YACzC,OAGF,GAAM,GAAY,GAAe,KAAK,OAAO,SAAS,QAClD,KAA6B,IACb,EAAU,IAA2B,MAAM,KACnD,QAAQ,GAAW,CAC3B,GAAM,CAAC,EAAK,GAAS,EAAS,MAAM,KACpC,KAAK,SAAS,GAAO,GAAW,EAAK,OAMvC,YAAyB,EAAmB,CAChD,GAAM,GAAS,GACf,MAAA,GAAY,QAAQ,8BAA+B,CAAC,KAAM,IACxD,IAAY,EAAQ,EAAE,GAAI,EAAE,IACrB,EAAE,KAAK,OAET,EAGT,YACI,EAAiC,EAAc,EAAc,CAC/D,EAAO,mBAAmB,IAAS,mBAAmB,GAAS,IAGjE,YAAoB,EAAkB,EAAa,CAEjD,GADA,EAAQ,EAAM,cACV,IAAU,QAAU,IAAU,QAChC,MAAO,KAAU,OACZ,GAAI,GAAG,CAAE,MAAY,EAC1B,MAAO,CAAC,EAEV,KAAM,IAAI,OACN,oCAAoC,cAAkB,MAWtD,YAAa,CACjB,MAAO,IAGF,GAAI,IAAmB,KACxB,YAA+B,EAAwB,CAC3D,GAAM,EC1LR,GAAI,IAEE,aAA4B,CAChC,GAAI,IAAmB,KAAM,CAE3B,GAAI,GACJ,GAAI,MAAQ,SAAY,YACtB,EAAK,eACI,MAAQ,SAAY,YAC7B,EAAK,eACI,MAAQ,UAAa,YAC9B,EAAK,gBACI,MAAQ,OAAU,YAC3B,EAAK,SAEL,MAAM,IAAI,OAAM,kCAElB,GAAkB,EAEpB,MAAO,IAIT,aAAqB,CACnB,GAAM,GAAK,KACX,MAAI,GAAG,YAAc,MACnB,GAAG,WAAa,GAAI,MAEf,EAAG,WAUN,YAAuB,EAAa,EAAa,CACrD,GAAM,GAAY,KAClB,GAAI,EAAU,IAAI,GAChB,MAAO,GAAU,IAAI,GAChB,CACL,GAAM,GAAY,IAClB,MAAA,GAAU,IAAI,EAAK,GACZ,EAAU,IAAI,ICzClB,GAAM,IAAM,MAGN,GAAO,OAGP,GAAQ,QAGR,GAAM,MAGN,GAAO,OAGP,GAAM,MAON,GAAM,MAON,GAAS,SAMT,GAAS,SAMT,GAAO,OAGP,GAAQ,QAGR,GAAO,OAGP,GAAQ,QAGR,GAAQ,QAGR,GAAU,UASV,GAAc,cAQd,GAAY,YAUZ,GAAgB,gBAShB,GAAc,cAOd,GAAiB,iBASjB,GAAW,WAMX,GAAc,cAOd,GAAO,OAMP,GAAO,OAGP,GAAc,cAOd,GAAU,UAGV,GAAa,aAGb,GAAS,SAMT,GAAS,SAUT,GAAuB,uBAUvB,GAAsB,sBAUtB,GAAS,SAST,GAAyB,yBASzB,GAAwB,wBASxB,GAAM,MAGN,GAAO,OAGP,GAAS,SAQT,GAAgB,gBAShB,GAAgB,gBAOhB,GAAe,eAOf,GAAwB,wBAWxB,GACT,sCAWS,GACT,qCAWS,GAAO,OAGP,GAAa,aAQb,GAA0B,0BAI1B,GAA2B,2BAI3B,GAAU,UAGV,GAAM,MAGN,GAAU,UAGV,GAAM,MAGN,GAAQ,QAGR,GAAM,MAGN,GAAa,aAMb,GAAQ,QAGR,GAAM,MAGN,GAAO,OAOP,GAAgB,gBAGhB,GAAQ,QAGR,GAAW,WAGX,GAAiB,iBAOjB,GAAW,WAOX,GAAW,WAGX,GAAU,UAGV,GAAe,eAGf,GAAW,WAGX,GAAO,OAGP,GAAO,OAGP,GAAW,WAGX,GAAQ,QAGR,GAAQ,QAGR,GAAY,YAMZ,GAAO,OAGP,GAAY,YAGZ,GAAW,WAMX,GAAM,MAGN,GAAQ,QAGR,GAAa,aAGb,GAAa,aAGb,GAAY,YAGZ,GAAa,aAMb,GAAM,MASN,GAAU,UASV,GAAM,MAON,GAAU,UAGV,GAAU,UASV,GAAc,cASd,GAAY,YAUZ,GAAgB,gBAUhB,GAAoB,oBASpB,GAAO,OAOP,GAAM,MAON,GAAU,UAGV,GAAY,YAOZ,GAAM,MAGN,GAAc,cAQd,GAAW,WAGX,GAAM,MAGN,GAAW,WAGX,GAAsB,sBAStB,GAAsB,sBAUtB,GAAsB,sBAUtB,GAAW,WAGX,GAAS,SAQT,GAAO,OAMP,GAAQ,QAOR,GAAO,OAGP,GAAM,MAGN,GAAQ,QAGR,GAAO,OAOP,GAAQ,QAQR,GAAO,OAGP,GAAa,aAGb,GAAO,OAGP,GAAU,UAMV,GAAwB,wBAQxB,GAA4B,4BAK5B,GAAiB,iBAQjB,GAAqB,qBAIrB,GAAQ,QAGR,GAAU,UAMV,GAAQ,QAGR,GAAQ,QAGR,GAAY,YAMZ,GAAS,SAGT,GAAO,OAGP,GAAQ,QAMR,GAAM,MAGN,GAAO,OAGP,GAAO,OAGP,GAAU,UAGV,GAAW,WAGX,GAAO,OAGP,GAAM,MAON,GAAiB,iBAOjB,GAAS,SAOT,GAAU,UAMV,GAAoB,oBAGpB,GAAS,SAGT,GAAM,MAGN,GAAgB,gBAOhB,GAAe,eAaf,GAAM,MAGN,GAAO,OAGP,GAAO,OAMP,GAAO,OAOP,GAAY,YASZ,GAAY,YAMZ,GAAS,SAQT,GAAS,SAMT,GAAqB,qBAOrB,GAAY,YAMZ,GAAO,OAMP,GAAa,aASb,GAAmB,mBAQnB,GAAe,eAgBf,GAAc,cAiBd,GAAuB,uBCr3B9B,GACF,GAAU,iBAAkB,IAAM,GAAI,MACpC,GACF,GAAU,eAAgB,IAAM,GAAI,MAoElC,YACF,EAAoB,EAAmB,CACzC,GAAM,GAAM,GAAQ,EAAY,GAChC,MAAO,IAAe,IAAI,GAOtB,YAAsB,EAAkB,CAC5C,MAAO,IAAa,IAAI,GAGpB,YAA+B,EAAmB,CACtD,GAAM,GAAK,GAAe,UACpB,EAAyB,GAE/B,OAAa,CACX,GAAM,CAAC,KAAA,EAAM,MAAA,GAAS,EAAG,OACzB,GAAI,EACF,MAEF,GAAM,CAAC,EAAK,GAAU,EAChB,CAAC,GAAa,EAAI,MAAM,KAC1B,IAAY,GACd,EAAO,KAAK,GAGhB,MAAO,GAcH,YAAyB,EAAoB,CACjD,GAAM,CAAC,WAAA,EAAY,YAAA,GAAe,EAC5B,EAAM,GAAQ,EAAY,GAC5B,GAAe,IAAI,IACrB,QAAQ,KACJ,eAAe,mBACX,4BAEV,GAAe,IAAI,EAAK,GAWpB,YAA2B,EAAkB,CACjD,GAAM,CAAC,WAAA,GAAc,EAEjB,GAAa,IAAI,IAGf,IAAM,QAAQ,UAChB,QAAQ,KAAK,gCAAgC,MAGjD,GAAa,IAAI,EAAY,GAUzB,YACF,EAAoB,EAAmB,CACzC,GAAM,GAAM,GAAQ,EAAY,GAChC,GAAI,CAAC,GAAe,IAAI,GACtB,KAAM,IAAI,OACN,eAAe,mBACX,wBAEV,GAAe,OAAO,GAIlB,YAA6B,EAAkB,CACnD,GAAI,CAAC,GAAa,IAAI,GACpB,KAAM,IAAI,OACN,iBAAiB,oCAEvB,GAAa,OAAO,GAShB,YACF,EAA+B,EAAsB,CACvC,GAAqB,GAC7B,QAAQ,GAAe,CAC7B,GAAM,GACF,OAAO,OAAO,GAAI,EAAc,CAAC,YAAa,IAClD,GAAe,KAInB,YAAiB,EAAoB,EAAmB,CACtD,MAAO,GAAG,KAAe,ICrN3B,GAAA,GAAA,GAAA,GAAA,EAAA,CAAA,YAAA,IAAA,GAAA,OAAA,IAAA,EAAA,mCAAA,IAAA,GAAA,cAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,yBAAA,IAAA,GAAA,MAAA,IAAA,GAAA,eAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,YAAA,IAAA,GAAA,aAAA,IAAA,GAAA,MAAA,IAAA,GAAA,QAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,WAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,UAAA,IAAA,GAAA,WAAA,IAAA,GAAA,MAAA,IAAA,GAAA,SAAA,IAAA,GAAA,UAAA,IAAA,GAAA,cAAA,IAAA,GAAA,SAAA,IAAA,GAAA,aAAA,IAAA,GAAA,aAAA,IAAA,GAAA,WAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,0BAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,eAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,IAAA,IAAA,GAAA,eAAA,IAAA,GAAA,YAAA,IAAA,GAAA,YAAA,IAAA,GAAA,SAAA,IAAA,GAAA,QAAA,IAAA,GAAA,aAAA,IAAA,GAAA,cAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,IAAA,IAAA,GAAA,KAAA,IAAA,GAAA,cAAA,IAAA,GAAA,aAAA,IAAA,KAyBM,YACF,EAAiB,EAAe,CAClC,MAAI,KAAU,SACL,GAAa,GAGf,GAAa,CAAC,GAAQ,GAG/B,YAA4B,EAAe,EAAe,CACxD,MAAQ,aAAa,eAAgB,IAAU,WAC1C,YAAa,aAAc,IAAU,SACrC,YAAa,aAAc,IAAU,OAGtC,YAAuB,EAAe,EAAe,CACzD,GAAI,IAAU,SACZ,KAAM,IAAI,OAAM,6CASlB,GAPI,MAAM,QAAQ,IAChB,GAAS,GAAQ,IAGf,IAAM,QAAQ,UACX,GAAyB,EAAe,GAE3C,GAAmB,EAAG,GACxB,MAAO,GAET,GAAI,GAAS,MAAQ,IAAU,WAAa,IAAU,YACpD,MAAO,IAAI,cAAa,GACnB,GAAI,IAAU,QACnB,MAAO,IAAI,YAAW,GACjB,GAAI,IAAU,OAAQ,CAC3B,GAAM,GAAO,GAAI,YAAY,EAAe,QAC5C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAC7B,KAAK,MAAO,EAAe,MAAQ,GACrC,GAAK,GAAK,GAGd,MAAO,OAEP,MAAM,IAAI,OAAM,qBAAqB,KAenC,aAAa,CACjB,MAAO,KAAM,SAAS,MAmBlB,YACF,EAAc,EAA0B,CAC1C,MAAO,KAAM,SAAS,MAAM,EAAM,GAW9B,YAAuB,EAAW,EAAW,QAAO,CACxD,MAAA,GAAW,GAAY,QAChB,IAAM,SAAS,OAAO,EAAG,GAW5B,YAAuB,EAAmB,EAAW,QAAO,CAChE,MAAA,GAAW,GAAY,QAChB,IAAM,SAAS,OAAO,EAAO,GClGhC,GAAA,IAAA,KAAe,CACnB,YAAoB,EAAoC,EAAe,CAAnD,KAAA,aAAA,EAAoC,KAAA,OAAA,EAClD,GAAU,MACZ,MAAK,OAAS,GAAI,KAItB,cAAc,EAAoB,EAAwB,EAAiB,CAEzE,GAAI,GACE,EAAsB,IAAK,CAC/B,EAAU,KAER,EACE,EAAa,KACnB,GAAI,KAAK,aAAa,iBACpB,EAAQ,KAAK,aAAa,KAAK,OAC1B,CACL,IACA,OAAW,KAAU,GACnB,EAAO,WAET,EAAQ,QAAQ,QAAQ,CAAC,SAAe,KAAQ,IAElD,GAAI,IAAM,QAAQ,gCAChB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAM,GAAS,EAAQ,GAGvB,EAAO,OAAO,KAAK,GAAa,CAC9B,GAA0B,EAAY,EAAO,MAAO,KAe1D,MAVsB,CACpB,WAAA,EACA,QAAA,EACA,OAAA,EACA,OAAQ,EAAM,KAAK,GAAU,EAAO,UACpC,UAAW,EAAM,KACb,GAAU,EAAO,qBAAuB,KACpC,EAAO,sBACP,KAKZ,iBAAiB,EAA4B,CAC3C,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,OAAA,EAAQ,OAAA,EAAQ,UAAA,GAAa,EAEzD,EAAQ,QAAQ,GAAS,CACvB,QAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,IAAY,KAAK,GAAiB,CACpE,KAAK,OAAO,iBACR,EAAY,EAAQ,EAAe,GAAI,EAAe,GAAI,EAC1D,EAAe,UAMrB,YACF,EAAsB,EAAU,EAAkB,CACpD,GAAI,IAAU,UAEZ,MAAO,GAET,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAM,EAAK,GACjB,GAAI,MAAM,IAAQ,CAAC,SAAS,GAE1B,MAAA,SAAQ,KAAK,SAAS,uBAAyB,MACxC,GAGX,MAAO,GAGH,GAAA,IAAA,KAAa,CACjB,iBACI,EAAc,EAAgB,EAC9B,EAAgC,EAChC,EAAkB,CACpB,GAAM,GAAO,MAAO,IAAW,SAAgB,GAAS,GAAG,MAAY,GAC7B,EAAO,MAC3C,EAAkB,GAAS,EAAM,IACjC,EAAO,EAAO,KACd,EAAO,EAAO,KACd,EAAa,GAAS,EAAO,MAAM,WAAY,IACjD,EAAyB,GAE7B,OAAW,KAAQ,GAAQ,CACzB,GAAM,GAAQ,EAAO,GACrB,GAAI,GAAS,KAAM,CAGjB,GAAM,GAAa,EAAM,OAAS,EAAO,MACnC,EAAY,EAAW,OAC7B,GACI,GAAG,MAAS,MAAc,EAAY,EAAI,EAAa,OAI/D,QAAQ,IACJ,KAAK,OAAiB,OAAW,MAAS,OAAY,OAClD,OAA6B,IACjC,mBAAoB,YAAa,aAAc,gBAC/C,eAAgB,sBChGlB,YACF,EAAkB,EAAc,EAAS,CAG3C,GAAM,GAA8C,GAC9C,EAA0C,GAChD,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,EAAa,EAAG,GAAG,IAAM,GAG3B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAO,EAAK,GACZ,EAAa,EAAK,OACxB,OAAW,KAAa,GAAY,CAClC,GAAM,GAAQ,EAAW,GAErB,EAAgB,GACpB,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,IAC7B,GAAI,EAAa,EAAM,IAAK,CAC1B,EAAK,QAAQ,QAAQ,GAAU,EAAa,EAAO,IAAM,IACzD,EAAgB,GAChB,EAAW,EAAK,IAAM,GACtB,MAIJ,GAAI,EACF,OAMN,GAAM,GAAgD,GACtD,EAAe,EAAE,IAAM,GACvB,GAAM,GAAwC,GAE9C,OAAS,GAAI,EAAK,OAAS,EAAG,GAAK,EAAG,IAAK,CACzC,GAAM,GAAO,EAAK,GACZ,EAAa,EAAK,OAGxB,OAAS,GAAI,EAAG,EAAI,EAAK,QAAQ,OAAQ,IACvC,GAAI,EAAe,EAAK,QAAQ,GAAG,IAAK,CACtC,OAAW,KAAa,GACtB,EAAe,EAAW,GAAW,IAAM,GAC3C,EAAS,EAAK,IAAM,GAEtB,OAMN,GAAM,GAA2B,GACjC,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAO,EAAK,GAElB,GAAI,EAAW,EAAK,KAAO,EAAS,EAAK,IAAK,CAE5C,GAAM,GAA8C,GACpD,OAAW,KAAa,GAAK,OAAQ,CACnC,GAAM,GAAY,EAAK,OAAO,GAC1B,EAAa,EAAU,KACzB,GAAa,GAAa,GAK9B,GAAM,GAAa,OAAO,OAAO,GAAI,GACrC,EAAW,OAAS,EACpB,EAAW,QAAU,EAAK,QAE1B,EAAa,KAAK,IAItB,MAAO,GAUH,YACF,EACA,EAA0B,EAC1B,EAAqC,CAEvC,OAAS,GAAI,EAAa,OAAS,EAAG,GAAK,EAAG,IAAK,CACjD,GAAM,GAAO,EAAa,GAEpB,EAAgB,GAYtB,GAXA,EAAK,QAAQ,QAAQ,GAAI,CACvB,GAAM,GAAa,EAA6B,EAAE,IAC9C,GAAc,KAChB,EAAI,KAAK,GAIT,EAAI,KAAK,QAIT,EAAK,UAAY,KACnB,KAAM,IAAI,OACN,4DACO,EAAK,eAIlB,GAAM,GAAiB,EAAK,SAAS,GAErC,OAAW,KAAa,GAAK,OAAQ,CACnC,GAAI,CAAE,KAAa,IACjB,KAAM,IAAI,OACN,iCAAiC,iCACH,OAAO,KAAK,OAIhD,GAAM,GAAK,EAAK,IAAM,EAAe,MACrC,GAAI,EAAG,QAAU,UACf,KAAM,IAAI,OACN,4BACI,EAAK,qCACN,yCAAiD,EAAG,UAE7D,GAAM,GAAI,EAAK,OAAO,GACtB,GAAI,CAAM,GAAY,EAAG,MAAO,EAAE,OAChC,KAAM,IAAI,OACN,4BACI,EAAK,sCACL,iBAAyB,EAAG,wDACL,EAAE,UAGnC,GAAI,EAA6B,EAAE,KAAO,KACxC,EAA6B,EAAE,IAAM,MAChC,CACL,GAAM,GAAc,EAA6B,EAAE,IACnD,EAA6B,EAAE,IAAM,EAAI,EAAa,GACtD,EAAY,aCvKpB,GAAM,IAAwB,GAExB,GAA6B,EAE7B,GAAwB,EAExB,YACF,EAA2B,EAAiB,EAC5C,EAAgB,CAClB,GAAM,GAAU,GAAe,GACzB,EAAY,GAAwB,EAAM,EAAO,EAAO,GACxD,EAAO,EAAM,OACb,EAAY,GAAkB,EAAM,EAAO,EAAO,EAAS,GAC3D,EAAQ,CAAC,UACf,MAAI,IACF,GAAM,KAAK,YAAY,KACvB,EAAM,KAAK,WAAW,KACtB,EAAM,KAAK,aAAa,MACxB,EAAM,KAAK,cAEb,EAAM,KAAK,EAAU,IAAI,GAAK,OAAS,GAAG,KAAK;IACxC,EAAM,KAAK;GAGpB,YACI,EAA2B,EAAiB,EAC5C,EAAiB,CACnB,GAAM,GAAI,GAAc,GAClB,EAAU,EAAQ,EAAQ,OAAS,GACnC,EAAY,GAAI,OAAM,GAAS,KAAK,GACpC,EAAO,EAAM,OACb,EACF,IAAU,YAAc,GAAoB,GAAQ,EAExD,GAAI,EAAO,EACT,OAAS,GAAM,EAAG,EAAM,EAAI,EAAS,IAAO,CAC1C,GAAM,GAAS,EAAM,EACrB,OAAS,GAAI,EAAG,EAAI,EAAS,IAC3B,EAAU,GAAK,KAAK,IAChB,EAAU,GACV,GAAY,EAAe,EAAS,GAAI,EAAG,GAAO,QAI5D,MAAO,GAGT,YACI,EAAqC,EAAa,EAAe,CACnE,GAAI,GACJ,MAAI,OAAM,QAAQ,GAChB,EAAS,GAAG,WAAW,EAAI,GAAG,QAAQ,UAC/B,WAAW,EAAI,GAAG,QAAQ,QACxB,GAAS,GAClB,EAAS,IAAI,KACJ,IAAU,OACnB,EAAS,GAAgB,GAEzB,EAAS,WAAW,EAAI,QAAQ,KAAwB,WAGnD,GAAS,EAAQ,GAG1B,YAAyB,EAAS,CAChC,MAAO,KAAM,EAAI,QAAU,OAG7B,YACI,EAA2B,EAAiB,EAC5C,EAAmB,EAAqB,EAAS,GAAI,CACvD,GAAM,GAAoB,IAAU,YAAc,EAAI,EAEhD,EAAO,EAAM,GACb,EAAO,EAAM,OACnB,GAAI,IAAS,EAAG,CACd,GAAI,IAAU,YAAa,CACzB,GAAM,GAAe,GAAoB,GACzC,MAAO,CAAC,GAAY,EAAa,GAAI,EAAG,IAE1C,MAAI,KAAU,OACL,CAAC,GAAgB,EAAK,KAExB,CAAC,EAAK,GAAG,YAGlB,GAAI,IAAS,EAAG,CACd,GAAI,EAAO,GAAuB,CAChC,GAAM,GAAgB,GAA6B,EAE/C,EAAY,MAAM,KAClB,EAAK,MAAM,EAAG,IACd,EAAW,MAAM,KAAqC,EAAK,MAC1D,GAAO,IAA8B,EACtC,EAAO,IACX,MAAI,KAAU,aACZ,GAAY,GAAoB,GAChC,EAAW,GAAoB,IAE1B,CACL,IACA,EAAU,IAAI,CAAC,EAAG,IAAM,GAAY,EAAG,EAAU,GAAI,IAChD,KAAK,MACV,UACA,EACK,IACG,CAAC,EAAG,IAAM,GACN,EAAG,EAAU,EAAO,GAA6B,GAAI,IAC5D,KAAK,MACV,KAGJ,GAAM,GACF,IAAU,YAAc,GAAoB,GACpB,MAAM,KAAoB,GAEtD,MAAO,CACL,IACA,EAAY,IAAI,CAAC,EAAG,IAAM,GAAY,EAAG,EAAU,GAAI,IAClD,KAAK,MACV,KAKJ,GAAM,GAAW,EAAM,MAAM,GACvB,EAAa,EAAQ,MAAM,GAC3B,EAAS,EAAQ,GAAK,EACtB,EAAkB,GACxB,GAAI,EAAO,GAAuB,CAChC,OAAS,GAAI,EAAG,EAAI,GAA4B,IAAK,CACnD,GAAM,GAAQ,EAAI,EACZ,EAAM,EAAQ,EACpB,EAAM,KAAK,GAAG,GACV,EAAK,MAAM,EAAO,GAAM,EAAU,EAAO,EAAY,EACrD,KAEN,EAAM,KAAK,OACX,OAAS,GAAI,EAAO,GAA4B,EAAI,EAAM,IAAK,CAC7D,GAAM,GAAQ,EAAI,EACZ,EAAM,EAAQ,EACpB,EAAM,KAAK,GAAG,GACV,EAAK,MAAM,EAAO,GAAM,EAAU,EAAO,EAAY,EACrD,IAAM,EAAO,SAGnB,QAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAM,GAAQ,EAAI,EACZ,EAAM,EAAQ,EACpB,EAAM,KAAK,GAAG,GACV,EAAK,MAAM,EAAO,GAAM,EAAU,EAAO,EAAY,EACrD,IAAM,EAAO,IAGrB,GAAM,GAAM,IAAS,EAAI,IAAM,GAC/B,EAAM,GAAK,IAAM,EAAM,GAAK,EAC5B,OAAS,GAAI,EAAG,EAAI,EAAM,OAAS,EAAG,IACpC,EAAM,GAAK,IAAM,EAAM,GAAK,EAE9B,GAAI,GAAa;EACjB,OAAS,GAAI,EAAG,EAAI,EAAM,IACxB,GAAc;EAEhB,MAAA,GAAM,EAAM,OAAS,GACjB,IAAM,EAAM,EAAM,OAAS,GAAK,IAAO,GAAS,GAAK,GAClD,EAGT,YAA6B,EACU,CACrC,GAAM,GAAyC,GAC/C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,GAAK,EACpC,EAAc,KAAK,CAAC,EAAK,GAAI,EAAK,EAAI,KAExC,MAAO,GC3JH,GAAA,IAAA,KAAmB,CAMvB,YAAY,EAA2B,EAAU,EAAuB,CAItE,GAJqC,KAAA,MAAA,EACrC,KAAK,MAAQ,EAAM,QACnB,KAAK,KAAY,GAAc,GAE3B,GAAU,KAAM,CAClB,GAAM,GAAI,EAAO,OACZ,EACD,IAAM,KAAK,KACX,IAAM,qBAAqB,qDACG,KAAK,UAEzC,GAAI,IAAU,YACZ,KAAM,IAAI,OACN,8JAIN,KAAK,OAAS,GAAe,GAAkB,EAAO,KAAK,MAC3D,KAAK,QAAU,GAAe,GAWhC,IAAI,KAA6B,EAAc,CACzC,EAAK,SAAW,GAClB,GAAO,CAAC,IAEL,EACD,EAAK,SAAW,KAAK,KACrB,IAAM,uCAAuC,EAAK,gCAC3B,KAAK,SAEhC,GAAM,GAAQ,KAAK,WAAW,GAC9B,KAAK,OAAO,GAAS,EAUvB,OAAO,EAAc,CACf,EAAK,SAAW,GAClB,GAAO,CAAC,IAEV,GAAI,GAAI,EACR,OAAW,KAAO,GAAM,CACtB,GAAI,EAAM,GAAK,GAAO,KAAK,MAAM,GAAI,CACnC,GAAM,GAAM,qCAAqC,qBAC3B,KAAK,QAC3B,KAAM,IAAI,OAAM,GAElB,IAEF,GAAI,GAAQ,EAAK,EAAK,OAAS,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,GAAS,KAAK,QAAQ,GAAK,EAAK,GAElC,MAAO,MAAK,OAAO,GAGrB,WAAW,EAAc,CACvB,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,GAAK,GAEd,GAAI,GAAQ,EAAK,EAAK,OAAS,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,GAAS,KAAK,QAAQ,GAAK,EAAK,GAElC,MAAO,GAGT,WAAW,EAAa,CACtB,GAAI,KAAK,OAAS,EAChB,MAAO,GACF,GAAI,KAAK,OAAS,EACvB,MAAO,CAAC,GAEV,GAAM,GAAiB,GAAI,OAAM,KAAK,MAAM,QAC5C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAS,EAAG,EAAE,EACrC,EAAK,GAAK,KAAK,MAAM,EAAQ,KAAK,QAAQ,IAC1C,GAAS,EAAK,GAAK,KAAK,QAAQ,GAElC,MAAA,GAAK,EAAK,OAAS,GAAK,EACjB,KAGL,OAAI,CACN,MAAO,MAAK,MAAM,OAQpB,UAAQ,CACN,MAAO,MAAY,WAAW,KAAK,OAAQ,KAAK,MAAO,KAAK,SAiC5D,GAAiC,KAEjC,GAAuB,KAEvB,GAA8C,KAW5C,YAA2B,EAAuB,CACtD,GAAY,EAQR,YAAuB,EAAkB,CAC7C,GAAY,EAOR,YAAkC,EAAyB,CAC/D,GAAuB,EAuBnB,GAAA,IAAA,KAAa,CA6BjB,YAAY,EAAoB,EAAiB,EAAgB,EAAU,CAX3E,KAAA,KAAO,GAoIG,KAAA,mBAAqB,GAxH7B,KAAK,MAAQ,EAAM,QACnB,KAAK,MAAQ,GAAS,UACtB,KAAK,KAAY,GAAc,GAC/B,KAAK,QAAU,GAAe,GAC9B,KAAK,OAAS,EACd,KAAK,GAAK,EACV,KAAK,SAAY,KAAK,KAAO,EAAI,KAAK,KAAK,WAAa,YAGtD,OAAI,CACN,MAAO,MAAK,MAAM,YAQd,SAAM,CACV,GAAM,GAAO,KAAM,MAAK,OACxB,MAAO,IAAU,OAAO,KAAK,MAAO,KAAK,MAAY,GAOvD,YAAU,CACR,MAAO,IAAU,OAAO,KAAK,MAAO,KAAK,MAAY,KAAK,iBAStD,QAAK,CACT,GAAM,GAAO,KAAM,MAAK,OACxB,MAAO,IAAc,KAAK,MAAO,GASnC,WAAS,CACP,MAAO,IAAc,KAAK,MAAO,KAAK,iBASlC,OAAI,CACR,KAAK,kBACL,GAAM,GAAO,KAAY,KAAK,KAAK,QACnC,GAAI,KAAK,QAAU,SAAU,CAC3B,GAAM,GAAQ,KAAM,GACpB,GAAI,CACF,MAAO,GAAM,IAAI,GAAU,GAAa,UACxC,EADwC,CAExC,KAAM,IAAI,OACN,kGAIR,MAAO,GAST,UAAQ,CACN,KAAK,kBACL,GAAM,GAAO,KAAY,SAAS,KAAK,QACvC,GAAI,KAAK,QAAU,SACjB,GAAI,CACF,MAAQ,GAAsB,IAAI,GAAU,GAAa,UAEzD,EAFyD,CAGzD,KAAM,IAAI,OACN,iGAIR,MAAO,QAIH,QAAK,CACT,KAAK,kBACL,GAAM,GAAO,KAAM,MAAY,KAAK,KAAK,QACzC,MAAI,MAAK,QAAU,SACV,EAEA,GAAI,YAAY,EAAoB,QAS/C,SAAO,CACD,KAAK,YAGT,MAAY,cAAc,MAC1B,KAAK,mBAAqB,OAIxB,aAAU,CACZ,MAAO,MAAK,mBAGd,iBAAe,CACb,GAAI,KAAK,WACP,KAAM,IAAI,OAAM,uBAYpB,MAAM,EAAU,GAAK,CACnB,MAAO,IAAU,MAAM,KAAM,GAO/B,OAAK,CACH,MAAA,MAAK,kBACE,GAAU,MAAM,MAQzB,SAAS,EAAU,GAAK,CACtB,GAAM,GAAO,KAAK,WAClB,MAAO,IAAe,EAAM,KAAK,MAAO,KAAK,MAAO,GAGtD,KAAqB,EAAe,CAClC,MAAA,MAAK,kBACE,GAAU,KAAK,KAAW,GAEnC,SAAS,EAAY,GAAM,EAAe,EAAgB,CACxD,MAAA,MAAK,kBACE,KAAY,aAAa,KAAM,EAAW,EAAM,KAI3D,OAAO,eAAe,GAAQ,OAAO,YAAa,CAChD,MAAQ,GAMC,CAAC,CAAC,GAAY,EAAS,MAAQ,MAAQ,EAAS,UAAY,MAC/D,EAAS,iBAAmB,OAI9B,YAA8B,CAIlC,MAAO,IAAU,SAAU,IAClB,IAKX,IAkCM,GAAA,IAAA,aAA+C,GAAS,CAG5D,YACI,EAAgC,EAAoB,EACpD,EAAgB,CAClB,MACI,EAAa,MAAO,EAAa,MAAO,EAAa,OAAQ,GAH/B,KAAA,UAAA,EAIlC,KAAK,KAAO,EAWd,OAAO,EAAmB,CACxB,GAAI,EAAS,QAAU,KAAK,MAC1B,KAAM,IAAI,OACN,2BAA2B,EAAS,8BACjB,KAAK,qBAE9B,GAAI,CAAM,GAAY,EAAS,MAAO,KAAK,OACzC,KAAM,IAAI,OACN,2BAA2B,EAAS,8BACjB,KAAK,qBAE9B,KAAY,cAAc,MAC1B,KAAK,OAAS,EAAS,OACvB,KAAY,OAAO,KAAM,MAG3B,SAAO,CACL,KAAY,gBAAgB,MAC5B,KAAK,mBAAqB,KAI9B,OAAO,eAAe,GAAU,OAAO,YAAa,CAClD,MAAQ,GACC,YAAoB,KAAU,EAAS,QAAU,MACpD,EAAS,iBAAkB,YChiBnC,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,eAAA,IAAA,GAAA,eAAA,IAAA,KCgEA,GAAY,IAAZ,AAAA,UAAY,EAAI,CACd,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,KACA,EAAA,GAAA,OAPU,IAAA,IAAI,KAqBhB,GAAK,IAAL,AAAA,UAAK,EAAiB,CACpB,EAAA,QAAA,UACA,EAAA,MAAA,QACA,EAAA,KAAA,QACA,EAAA,UAAA,cAJG,IAAA,IAAiB,KAOtB,GAAK,IAAL,AAAA,UAAK,EAAgB,CACnB,EAAA,QAAA,UACA,EAAA,MAAA,QACA,EAAA,KAAA,OACA,EAAA,UAAA,cAJG,IAAA,IAAgB,KAOrB,GAAK,IAAL,AAAA,UAAK,EAAmB,CACtB,EAAA,QAAA,UACA,EAAA,MAAA,UACA,EAAA,KAAA,UACA,EAAA,UAAA,cAJG,IAAA,IAAmB,KAOxB,GAAK,IAAL,AAAA,UAAK,EAAqB,CACxB,EAAA,QAAA,YACA,EAAA,MAAA,YACA,EAAA,KAAA,YACA,EAAA,UAAA,cAJG,IAAA,IAAqB,KAO1B,GAAM,IAAgB,CACpB,QAAW,GACX,MAAS,GACT,KAAQ,GACR,UAAa,IAGT,YAAqB,EAAiB,EAAe,CACzD,GAAI,IAAU,UAAY,IAAU,SAAU,CAC5C,GAAI,IAAU,UAAY,IAAU,SAClC,MAAO,SAET,KAAM,IAAI,OAAM,kBAAkB,UAAc,KAElD,MAAO,IAAc,GAAO,GAIxB,YAAqB,EAAc,CACvC,MAAO,IAAW,EAAM,SD9GpB,YAA2C,EAAM,EAAI,CACzD,GAAI,EAAE,QAAU,EAAE,MAChB,MAAO,CAAC,EAAG,GAEb,GAAM,GAAQ,GAAW,EAAE,MAAO,EAAE,OACpC,MAAO,CAAC,EAAE,KAAK,GAAQ,EAAE,KAAK,IAG1B,YAA2B,EAAW,EAAS,CACnD,EACI,EAAE,QAAU,EAAE,MACd,IAAM,2BAA2B,EAAE,qBACpB,EAAE,2BAGjB,YAAyB,EAAgB,EAAoB,CACjE,MAAO,GAAW,KAAK,GAAK,EAAE,KAAO,EAAO,IAexC,YAAgC,EAAuB,CAC3D,GAAM,GAAiB,GACjB,EAAO,GAAI,KACjB,MAAA,IAAoB,EAAQ,EAAM,GAC3B,EAGT,YACI,EAA4B,EAAgB,EAAkB,CAChE,GAAI,GAAa,KACf,OAEF,GAAI,YAAqB,IAAQ,CAC/B,EAAK,KAAK,GACV,OAEF,GAAI,CAAC,GAAW,GACd,OAGF,GAAM,GAAW,EACjB,OAAW,KAAK,GAAU,CACxB,GAAM,GAAM,EAAS,GAChB,EAAK,IAAI,IACZ,GAAK,IAAI,GACT,GAAoB,EAAK,EAAM,KAMrC,YAAoB,EAAQ,CAC1B,MAAO,OAAM,QAAQ,IAAQ,MAAO,IAAQ,SEe9C,YAEI,EACgC,CAElC,MAAQ,GAAmD,YAAc,KAG3E,GAAA,IAAA,KAAiB,CAAjB,aAAA,CAEE,KAAA,oBAAwC,GAExC,KAAA,eAAiB,EACjB,KAAA,SAAW,EACX,KAAA,WAAa,EACb,KAAA,iBAAmB,EACnB,KAAA,eAAiB,EAMjB,KAAA,cAAgB,EAGhB,KAAA,YAAc,EAId,KAAA,WAA2B,GAK3B,KAAA,kBAA8B,GAC9B,KAAA,YAAc,EAEd,KAAA,WAAa,GAAI,SAOjB,KAAA,UAAY,GACZ,KAAA,cAA6B,CAC3B,SAAU,EACV,WAAY,EACZ,UAAW,EACX,QAAS,GACT,OAAQ,QACJ,cAAW,CAET,MAAO,OAAM,KAAK,GAAI,KAAI,KAAK,QAAQ,IAAI,GAAK,EAAE,UAI1D,SAAO,CACL,OAAW,KAAgB,MAAK,oBAC9B,KAAK,oBAAoB,GAAc,YAKvC,GAAA,KAAa,CAgBjB,YAAmB,EAAgB,CAAhB,KAAA,IAAA,EAbnB,KAAA,SAA0C,GAC1C,KAAA,gBAKI,GAKI,KAAA,qBAAuB,EAG7B,KAAK,MAAQ,GAAI,SAGb,QAAK,CACT,GAAI,KAAK,oBAAsB,KAC7B,MAAO,MAAK,mBAAmB,KAAK,IAAK,IAE3C,GAAI,KAAK,iBAAmB,KAC1B,OAEF,GAAM,GAAiB,KAAK,oBAE5B,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAc,EAAe,GAEnC,GADgB,KAAM,MAAK,kBAAkB,GAAa,QAC7C,CACX,KAAM,MAAK,WAAW,GACtB,QAIJ,KAAM,IAAI,OACN,6EAIF,UAAO,CACT,GAAI,KAAK,oBAAsB,KAC7B,KAAM,IAAI,OACN,YAAY,KAAK,kIAIvB,GAAI,KAAK,iBAAmB,KAAM,CAChC,GAAM,CAAC,KAAA,EAAM,UAAA,GAAa,KAAK,kCAC/B,GAAI,EACF,KAAM,IAAI,OACN,iCAAiC,wHAIvC,KAAK,WAAW,GAElB,MAAO,MAAK,gBAGd,cAAY,CACV,MAAO,QAAO,KAAK,KAAK,iBAG1B,YAAY,EAAmB,CAC7B,GAAI,CAAE,KAAe,MAAK,UAGxB,GAAI,IAAe,MAAK,gBAAiB,CACvC,GAAM,CAAC,UAAA,GAAa,KAAK,kBAAkB,GAC3C,GAAI,EAEF,MAAO,UAGT,OAAO,MAGX,MAAO,MAAK,SAAS,GAGvB,mBAAmB,EAAmB,CAEpC,MAAM,KAAe,MAAK,gBAGnB,KAAK,gBAAgB,GAAa,QAFhC,KAKX,gBACI,EACA,EACA,EAAW,EAAC,CACd,MAAI,KAAe,MAAK,gBACtB,SAAQ,KACJ,GAAG,uEAEA,IAET,MAAK,gBAAgB,GAAe,CAAC,QAAA,EAAS,SAAA,GACvC,SAGH,YAAW,EAAmB,CAClC,GAAI,KAAK,gBAAgB,IAAgB,KACvC,KAAM,IAAI,OAAM,iBAAiB,4BAGnC,GADA,KAAK,YAAc,EACf,KAAK,SAAS,IAAgB,KAAM,CACtC,KAAK,gBAAkB,KACvB,GAAM,CAAC,QAAA,EAAS,UAAA,GAAa,KAAK,kBAAkB,GAEpD,GAAI,CADW,GAAY,KAAM,GAAU,GAEzC,MAAO,GAGX,MAAA,MAAK,gBAAkB,KAAK,SAAS,GACrC,KAAK,yBAEL,KAAK,SAAW,GAAI,IAAS,KAAK,iBAE3B,GAGD,wBAAsB,CACZ,GAAqB,KAAK,aAClC,QAAQ,GAAS,CACnB,EAAO,WAAa,MACtB,EAAO,UAAU,KAAK,mBAKpB,yBAAyB,EAAmB,CAClC,GAAqB,GAC7B,QAAQ,GAAS,CACnB,EAAO,aAAe,MACxB,EAAO,YAAY,KAAK,SAAS,MAW/B,kBAAkB,EAAmB,CAE3C,GAAM,GAAuB,KAAK,gBAAgB,GAClD,GAAI,GAAwB,KAC1B,KAAM,IAAI,OACN,6BAA6B,6BAGnC,GAAI,CACF,GAAM,GAAU,EAAqB,UAMrC,GAAI,GAAW,CAAE,aAAmB,MAChC,MAAO,GAAQ,MAAS,WAAY,CACtC,GAAM,GAAY,EAAE,KAAK,qBACnB,EACF,EACK,KAAK,GAEA,EAAY,KAAK,qBACZ,GAET,MAAK,SAAS,GAAe,EAC7B,KAAK,mBAAqB,KACnB,KAER,MAAM,GAED,GAAY,KAAK,sBAGrB,MAAK,mBAAqB,KAC1B,QAAQ,KACJ,6BAA6B,YACjC,QAAQ,KAAK,EAAI,OAAS,EAAI,UACvB,KAEjB,MAAA,MAAK,mBAAqB,EACnB,CAAC,QAAA,EAAS,UAAW,QAE5B,OAAA,MAAK,SAAS,GAAe,EACtB,CAAC,QAAS,GAAM,UAAW,UAE7B,EAF6B,CAGpC,MAAA,SAAQ,KAAK,6BAA6B,YAC1C,QAAQ,KAAK,EAAI,OAAS,EAAI,SACvB,CAAC,QAAS,GAAO,UAAW,KAIvC,cAAc,EAAmB,CAC/B,GAAI,CAAE,KAAe,MAAK,iBACxB,KAAM,IAAI,OAAM,GAAG,mCAEjB,KAAK,cAAgB,GAAe,KAAK,oBAAsB,MAGjE,KAAK,uBAGH,IAAe,MAAK,UACtB,MAAK,yBAAyB,GAC9B,KAAK,SAAS,GAAa,UAC3B,MAAO,MAAK,SAAS,IAGvB,MAAO,MAAK,gBAAgB,GAGxB,KAAK,cAAgB,GACvB,MAAK,mBAAqB,KAC1B,KAAK,YAAc,KACnB,KAAK,gBAAkB,MAInB,mBAAiB,CACvB,GAAI,OAAO,KAAK,KAAK,iBAAiB,SAAW,EAC/C,KAAM,IAAI,OAAM,iCAElB,MAAO,QAAO,KAAK,KAAK,iBAAiB,KAAK,CAAC,EAAW,IAEjD,KAAK,gBAAgB,GAAG,SAC3B,KAAK,gBAAgB,GAAG,UAIxB,iCAA+B,CAErC,GAAM,GAAiB,KAAK,oBAE5B,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAc,EAAe,GAC7B,CAAC,QAAA,EAAS,UAAA,GAAa,KAAK,kBAAkB,GACpD,GAAI,GAAa,EACf,MAAO,CAAC,KAAM,EAAa,UAAA,GAG/B,KAAM,IAAI,OACN,0EAIN,SAAS,EAAwB,EAAc,CAC7C,GAAM,GAAO,KAAK,MAAM,WAAW,IAAI,GACjC,EAAa,EAAK,QAClB,EAAS,KAAK,SAAS,GACvB,EAAW,EAAW,SAAS,GAGrC,EAAW,YAAY,EAAQ,IAC/B,EAAK,QAAU,EACf,EAAQ,KAAK,EAAQ,EAAQ,EAAK,MAAO,EAAK,MAAO,GACjD,KAAK,0BAGP,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,KAIvE,KAAgC,EAA6B,EAAe,CAE1E,GAAI,GAAe,KACnB,GAAI,GAAM,KAAM,CAEd,GAAI,MAAO,IAAa,WACtB,KAAM,IAAI,OAAM,uCAElB,EAAK,MACA,CAEL,GAAI,MAAO,IAAa,UAAY,CAAE,aAAoB,SACxD,KAAM,IAAI,OACN,kFAGN,GAAI,MAAO,IAAO,WAChB,KAAM,IAAI,OACN,kFAGN,EAAO,EAIT,GAAI,GACJ,MAAO,MAAK,UACR,IAAM,KAAK,WAAW,GAAO,IAAM,KAAK,SAAS,GAAS,IACxD,GAAS,IACL,YAAkB,UACpB,QAAQ,MAAM,2CAET,IAIP,UAAa,EAAmB,EAAiB,EAAU,CACjE,IACA,GAAI,CACF,GAAM,GAAM,IACZ,MAAA,KACO,QACA,EADA,CAEP,KAAA,KACM,GAKF,cAAY,CAClB,MAAO,IAAO,eAIR,gBAAc,CACpB,MAAO,IAAO,iBASR,MAAM,EAAS,CACrB,GAAM,GAAY,EAAO,UAAU,GAAU,CAAC,EAAA,IACxC,EAAS,CAAC,EAAA,GACV,EAAQ,GAAgB,EAC5B,EAAG,IAAK,CACN,GAAM,GAAQ,UACR,EAAa,CAAC,EAAG,GACjB,EAAQ,CAAC,MAAA,GAEf,MAAO,GAAO,UACH,GAAM,EAEN,MAGT,EAAkB,GACxB,MAAA,MAAK,YAAY,KAAK,MAAM,YAAY,KAAM,EAAQ,CAAC,GAAI,EAAM,EAAO,IACjE,EAgBT,UACI,EAAoB,EAAwB,EAAoB,CAElE,GADkB,GAAU,EAAY,KAAK,cAAgB,KAE3D,KAAM,IAAI,OAAM,WAAW,kCACvB,KAAK,gBAEX,MAAO,MAAK,cAAc,CAAC,WAAA,EAAY,OAAA,EAAQ,MAAA,IAGzC,wBAAsB,CAC5B,MAAO,MAAK,IAAI,QAAQ,WAGlB,sBACJ,EAAoB,EACpB,EAAsB,CACxB,GAAM,GAAkB,KAAK,QAAQ,aAGjC,EAAmB,EACvB,EAAS,QAAQ,GAAO,CAGtB,GAAqB,EAAK,QAAU,YAAc,EAAI,IAQxD,GAAM,GACF,KAAK,MAAM,kBAAkB,KAAK,MAAM,kBAAkB,OAAS,GACjE,EACF,EAAkB,EAAmB,EAAmB,EAC5D,GAAI,EAAgB,EAClB,KAAM,IAAI,OACN,YAAY,KAAK,6CACb,8BAA0C,MAS9C,cACJ,EACgC,CAClC,GAAI,GACA,EAAkB,GAChB,EAAW,KAAK,WAEhB,EAAoB,KAAK,MAAM,SAC/B,EAAqB,KAAK,MAAM,WAElC,KAAK,0BACP,KAAK,MAAM,kBAAkB,KAAK,GAGpC,GAAI,GACA,KAAK,aAAe,MAMtB,KAAK,QAGP,GAAI,GAEE,EAAoB,GAA6B,GACnD,EAAa,WACb,KAAK,MAAM,aAAe,KAAO,KAAK,MAAM,YAAY,KAAO,GAMnE,GAAI,GAA6B,GAAe,CAC9C,GAAM,CAAC,WAAA,EAAY,OAAA,EAAQ,MAAA,GAAS,EAChC,KAAK,aAAe,MAMtB,KAAK,QAEP,GAAM,GAAS,GAAU,EAAY,KAAK,aACrC,EACD,GAAU,KACV,IAAM,kCAAkC,mBACpC,KAAK,gBAEb,EAAa,IAAK,CAChB,GAAM,GAAmB,KAAK,QAAQ,aACtC,EAAM,EAAO,WAAW,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAS,KAAK,UACtD,GAAM,GAAW,MAAM,QAAQ,GAAO,EAAM,CAAC,GACzC,KAAK,0BACP,KAAK,sBAAsB,EAAY,EAAkB,GAG3D,GAAM,GAAa,EAAS,IAAK,GAA8B,CAI7D,GAAK,EAAmB,MAAQ,KAC9B,MAAO,GAET,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,MAAA,GAAS,EAC/B,MAAO,MAAK,qBAAqB,EAAQ,EAAO,KAQlD,GAAI,EAAU,CACZ,GAAM,GACF,KAAK,sBAAsB,EAAY,EAAQ,GACnD,EAAQ,KAAK,2BAA2B,GAE1C,MAAO,QAEJ,CACL,GAAM,CAAC,YAAA,GAAe,EAEhB,EAA0B,GAAW,CAIrC,CAAC,GAGL,GAAQ,EAAQ,IAAI,GAAU,KAAK,KAAK,KAAK,MAAM,OAGrD,EAAa,IAAK,CAChB,GAAM,GAAmB,KAAK,QAAQ,aACtC,EAAM,KAAK,KAAK,IAAM,EAAY,KAAK,QAAS,IAChD,GAAM,GAAQ,MAAM,QAAQ,GAAO,EAAM,CAAC,GAC1C,MAAI,MAAK,0BAEP,KAAK,sBAAsB,EAAmB,EAAkB,GAE3D,GAOX,GAAM,CAAC,OAAA,EAAQ,MAAA,GAAS,EAClB,EAAgB,GAA6B,GAC/C,KACA,EAAa,cAEb,EACJ,MAAA,MAAK,UAED,IAAM,KAAK,MAAM,cAAe,IAAM,KAAK,MAAM,cAAe,IAAK,CAC/D,CAAC,KAAK,IAAI,QAAQ,UAAY,CAAC,KAAK,MAAM,UAC5C,EAAU,IAEV,GAAgB,KAAK,SAAS,cAC1B,EAAmB,EAAQ,IAAM,KACjC,KAAK,IAAI,QAAQ,UACnB,KAAK,SAAS,iBAAiB,GAEjC,EAAU,EAAc,WAI5B,GACF,KAAK,YACD,EAAmB,EAAQ,EAAS,EAAe,EAAO,GAG5D,KAAK,MAAM,WACb,KAAK,MAAM,cAAc,QAAQ,KAAK,CACpC,KAAM,EACN,WAAY,KAAK,MAAM,SAAW,EAClC,mBAAoB,KAAK,MAAM,SAC/B,aAAc,KAAK,MAAM,WAAa,EACtC,qBAAsB,KAAK,MAAM,WACjC,YAAa,OAAO,KAAK,GAAQ,IAC7B,GAAO,EAAO,IAAQ,KAAO,EAAO,GAAK,MAAQ,MACrD,aAAc,EAAQ,IAAI,GAAQ,EAAK,OACvC,aAAc,EAAc,OAC5B,UAAW,EAAc,YAGrB,MAAM,QAAQ,GAAO,EAAU,EAAQ,GAQzC,2BAA2B,EAAiB,CAElD,MADc,GAAQ,IAAI,GAAU,KAAK,KAAK,KAAK,MAAM,KAWnD,sBACJ,EAAoB,EACpB,EAAiB,CACnB,GAAM,GAAa,GAAY,GAC/B,GAAI,GAAc,KAAM,CACtB,GAAM,GAAyB,EAAW,cAAgB,GACpD,EAA2B,EAAW,eAAiB,GAIzD,EACA,EAAW,cACR,GACD,MAAM,QAAQ,GACd,IAAM,0DAEV,EAAqB,OAAO,KAAK,GAAQ,IAAK,GAAQ,EAAO,KAE7D,EAAqB,EAAa,IAAK,GAAc,EAAO,IAG9D,GAAM,GACF,EAAQ,OAAO,CAAC,EAAG,IAAM,EAAc,IAE3C,MAAO,GAAmB,OAAO,GAQnC,MAAO,GAQT,WACI,EAAoB,EAAiB,EACrC,EAAuB,CACzB,GAAI,GAAU,KACZ,KAAM,IAAI,OAAM,iDAElB,EAAQ,GAAS,UACjB,EAAU,GAAW,KAAK,QAC1B,GAAI,GAAc,EACd,IAAU,UAAiB,GAAS,EAAO,KAC7C,GAAe,EAAoB,IAAI,GAAU,GAAa,KAEhE,GAAM,GAAS,EAAQ,MAAM,EAAa,EAAO,GAC3C,EAAI,GAAI,IAAO,EAAO,EAAO,EAAQ,KAAK,gBAIhD,GAHA,KAAK,YAAY,EAAG,GAGhB,IAAU,SAAU,CACtB,GAAM,GAAO,KAAK,MAAM,WAAW,IAAI,GACjC,EAAW,GAAqB,GACtC,KAAK,MAAM,UAAY,EAAW,EAAK,MACvC,EAAK,MAAQ,EAEf,MAAO,GAQT,qBACI,EAAgB,EAAiB,EACjC,EAAuB,CACzB,EAAQ,GAAS,UACjB,GAAM,GAAI,GAAI,IAAO,EAAO,EAAO,EAAQ,KAAK,gBAChD,MAAA,MAAK,YAAY,EAAG,GACb,EAGT,aACI,EAAsB,EAAY,GAAM,EACxC,EAAgB,CAClB,EAAO,GAAQ,KAAK,iBAAiB,WACjC,GAAS,MAAQ,IAAU,EAAa,OAC1C,GAAe,EAAa,KAAK,IAEnC,GAAM,GAAI,GAAI,IAAS,EAAc,EAAW,EAAM,KAAK,gBAC3D,GAAI,KAAK,MAAM,oBAAoB,EAAE,OAAS,KAC5C,KAAM,IAAI,OAAM,sBAAsB,EAAE,+BAE1C,MAAA,MAAK,MAAM,oBAAoB,EAAE,MAAQ,EACzC,KAAK,OAAO,EAAG,KAAK,SACb,EAGT,YAAY,EAAW,EAAsB,CAC3C,KAAK,MAAM,aACP,EAAE,QAAU,UACd,KAAK,MAAM,mBAIb,GAAI,GAAQ,EACR,EAAE,QAAU,aAAe,EAAE,QAAU,UACzC,GAAQ,EAAE,KAAY,GAAgB,EAAE,QAE1C,KAAK,MAAM,UAAY,EAElB,KAAK,MAAM,WAAW,IAAI,EAAE,SAC/B,MAAK,MAAM,iBACX,KAAK,MAAM,WAAW,IAAI,EAAE,OAAQ,CAClC,QAAS,GAAW,KAAK,QACzB,MAAO,EAAE,MACT,MAAO,EAAE,MACT,MAAA,KAIE,YAAa,KACjB,KAAK,MAAM,GASf,OAAO,EAAW,EAAsB,CACtC,KAAK,YAAY,EAAG,GACpB,KAAK,QAAQ,OAAO,EAAE,QAGxB,aAAa,EAAgB,EAAsB,CAC7C,KAAK,MAAM,WAAW,IAAI,IAC1B,KAAK,MAAM,WAAW,IAAI,GAAQ,UAAY,GAChD,MAAK,MAAM,WAAW,OAAO,GAC7B,KAAK,MAAM,kBAGf,cAAc,EAAS,CACrB,GAAI,CAAC,KAAK,MAAM,WAAW,IAAI,EAAE,QAC/B,OAEF,GAAM,GAAO,KAAK,MAAM,WAAW,IAAI,EAAE,QASzC,GAPA,KAAK,MAAM,aACP,EAAE,QAAU,UACd,MAAK,MAAM,mBACX,KAAK,MAAM,UAAY,EAAK,OAI1B,EAAE,QAAU,aAAe,EAAE,QAAU,SAAU,CACnD,GAAM,GAAQ,EAAE,KAAY,GAAgB,EAAE,OAC9C,KAAK,MAAM,UAAY,EAIrB,EAAK,QAAQ,YAAY,EAAE,SAC7B,KAAK,aAAa,EAAE,OAAQ,EAAK,SAQrC,kBAAgB,CACd,OAAW,KAAW,MAAK,MAAM,oBAAqB,CACpD,GAAM,GAAI,KAAK,MAAM,oBAAoB,GACzC,KAAK,gBAAgB,IAIzB,gBAAgB,EAAW,CACzB,KAAK,cAAc,GACf,KAAK,MAAM,oBAAoB,EAAE,OAAS,MAC5C,MAAO,MAAK,MAAM,oBAAoB,EAAE,MAI5C,QAAM,CACJ,GAAM,GAAO,KAAK,QAAQ,SAC1B,MAAA,GAAK,WAAa,KAAK,MAAM,WAC7B,EAAK,eAAiB,KAAK,MAAM,eACjC,EAAK,SAAW,KAAK,MAAM,SACvB,KAAK,MAAM,iBAAmB,GAChC,GAAK,WAAa,GACd,EAAK,SAAW,MAClB,GAAK,QAAU,IAEjB,EAAK,QAAQ,KACT,0EAGC,OAGH,SAAQ,EAAyD,CAErE,KAAK,MAAM,UAAY,GAEvB,GAAM,GAAa,KAAK,MAAM,SACxB,EAAkB,KAAK,MAAM,WAEnC,KAAK,MAAM,cAAc,QAAU,GACnC,KAAK,MAAM,cAAc,OAAS,KAAM,KAExC,KAAK,MAAM,UAAY,GAEvB,KAAK,MAAM,cAAc,UAAY,KAAK,IACtC,GAAG,KAAK,MAAM,cAAc,QAAQ,IAAI,GAAK,EAAE,qBACnD,KAAK,MAAM,cAAc,SAAW,KAAK,MAAM,SAAW,EAC1D,KAAK,MAAM,cAAc,WACrB,KAAK,MAAM,WAAa,EAC5B,OAAW,KAAU,MAAK,MAAM,cAAc,QAC5C,EAAO,aAAe,KAAM,GAAO,aACnC,EAAO,UAAY,KAAM,GAAO,UAElC,MAAO,MAAK,MAAM,cAGpB,UAAQ,CACN,MAAO,MAAK,MAAM,cAAgB,GAAK,KAAK,MAAM,cAAgB,EAG5D,YACJ,EAAoB,EAAwB,EAC5C,EAAyB,EAAiB,EAAmB,CAC/D,GAAM,GACF,CAAC,GAAI,KAAK,MAAM,iBAAkB,WAAA,EAAY,OAAA,EAAQ,QAAA,EAAS,MAAA,GAE7D,EAAa,GAAY,GAC3B,GAAc,MAChB,GAAgB,EAAW,UAEzB,GAAiB,MACnB,GAAS,SAAY,GAGnB,GAAM,EAAI,IAAI,CAAC,EAAI,IAAK,CACtB,GAAI,GAAM,KAAM,CACd,GAAM,GAAS,EAAQ,GACjB,EAAY,GAAoB,EAAO,KAAM,EAAO,OAC1D,MAAO,MAAK,WAAW,EAAM,EAAO,MAAO,EAAO,OAEpD,MAAO,KAIF,EAAc,EAAI,OAAS,EAAI,EAAM,EAAI,GAAI,EAAO,KAG/D,KAAK,MAAM,WAAW,KAAK,GAG7B,KAAuB,EAAS,CAC9B,MAAA,GAAO,KAAO,GACP,EAGD,WAAS,CACX,KAAK,MAAM,gBAAkB,GAC/B,MAAK,MAAM,WAAa,IAE1B,KAAK,MAAM,gBAGL,SAAO,CACb,KAAK,MAAM,gBAOb,WAAW,EAAa,CACtB,GAAM,GAAwB,CAC5B,MAAO,GACP,KAAM,gBACN,GAAI,KAAK,MAAM,eAEb,GACF,GAAU,KAAO,GAEnB,KAAK,MAAM,WAAW,KAAK,GAC3B,KAAK,MAAM,YAAc,EAO3B,SAAS,EAAwB,CAC/B,GAAM,GAAyB,GAAsB,GAC/C,EACF,GAAI,KAAI,EAAuB,IAAI,GAAK,EAAE,KAG9C,OAAS,GAAI,EAAG,EAAI,KAAK,MAAM,YAAY,MAAM,OAAQ,IAAK,CAC5D,GAAM,GAAS,KAAK,MAAM,YAAY,MAAM,GACxC,CAAC,EAAO,MAAQ,CAAC,EAA0B,IAAI,EAAO,KACxD,EAAO,UAIX,GAAM,GAAW,KAAK,MAAM,WAAW,MACvC,KAAK,MAAM,YAAc,KAAK,MAAM,WAAW,SAAW,EACtD,KACA,KAAK,MAAM,WAAW,KAAK,MAAM,WAAW,OAAS,GAGzD,EAAuB,QAAQ,GAAS,CAGlC,CAAC,EAAO,MAAQ,EAAO,UAAY,EAAS,IAC9C,KAAK,MAAM,KAWjB,UACI,EAAY,EAAc,EAC1B,EAAmB,GAAK,CAG1B,GAFK,EACD,EAAG,OAAS,EAAG,IAAM,6CACrB,GAAM,MAAQ,EAAG,QAAU,UAC7B,KAAM,IAAI,OAAM,0CAA0C,EAAG,UAG/D,GAAM,GAAI,KAAK,UACX,IAAM,KAAK,YAAa,IAAM,KAAK,UACnC,IAAM,KAAK,KAAK,UAAW,IAE1B,EACD,YAAa,IACb,IAAM,kDAEV,GAAM,GAAe,GAAqB,KAAK,MAAM,WAAY,EAAI,GACrE,GAAI,CAAC,GAAoB,EAAa,SAAW,GAAK,EAAG,OAAS,EAChE,KAAM,IAAI,OACN,uIAKN,MAAO,MAAK,KAAK,WAAY,IAAK,CAChC,GAAM,GAAuD,GAC7D,EAAuB,EAAE,IAAO,GAAM,KAAQ,GAAK,EAAE,OAAS,EAG9D,GACI,EAAwB,EAExB,GAAK,KAAK,KAAK,GAEf,IACJ,GAAM,GAAQ,EAAG,IAAI,GAAK,EAAuB,EAAE,KAEnD,MAAI,MAAK,MAAM,gBAAkB,GAG/B,MAAK,MAAM,WAAW,QAAQ,GAAO,CACnC,OAAW,KAAU,GAAK,MACxB,EAAO,YAGX,KAAK,MAAM,WAAa,MAEnB,CAAC,MAAO,EAAG,MAAA,KAItB,WAA6B,EAAwB,CAEnD,MAAK,GACI,GAAW,GAChB,IAAM,qDACH,IAAI,IAAuB,CAC3B,EACD,EAAO,MAAM,GAAK,YAAa,KAC/B,IAAM,oEAGV,GAAI,GAIE,EAA2B,GACjC,EAAO,QAAQ,CAAC,EAAO,IAAK,CAC1B,EAAS,GAAK,IAGhB,GAAM,GAA8B,CAAC,EAAG,IACtC,GAAM,EAAM,GAAG,EAAQ,GAClB,EACD,EAAI,gBAAiB,IACrB,IAAM,8FAEL,EACI,GAAW,EAAI,UACpB,IAAM,oGAEH,EAAI,OAGP,EAAgB,CAAC,EAAO,IAAmB,CAC/C,GAAM,GAAU,EAAI,SAAS,EAAI,GAC3B,EAAkB,MAAM,QAAQ,GAAW,EAAU,CAAC,GACvD,EACD,EAAM,SAAW,EAAO,OACxB,IAAM,uKAGL,EACD,EAAM,MAAM,GAAK,YAAa,KAC9B,IAAM,wIAGV,GAAM,GAAyC,GAC/C,MAAA,GAAM,QAAQ,CAAC,EAAM,IAAK,CACxB,EAAQ,GAAK,IAAM,IAEd,GAGT,MAAO,MAAK,cAAc,CACxB,YAAA,EACA,cAAA,EACA,OAAQ,KAKd,SAAS,EAAc,CAGrB,MADa,MAAK,MAAM,WAAW,IAAI,GAC3B,QAAQ,SAAS,GAE/B,KAAK,EAAc,CAGjB,MADa,MAAK,MAAM,WAAW,IAAI,GAC3B,QAAQ,KAAK,QAGrB,MAAK,EAAiB,CAC1B,GAAM,GAAQ,KACR,EAAa,KAAM,MAAK,QAAQ,KAAK,GAC3C,MAAA,GAAW,OAAS,KAAQ,EACrB,EASD,MAAwB,EAAS,CACvC,MAAI,MAAK,MAAM,aAAe,MAC5B,GAAO,QAAU,KAAK,MAAM,YAAY,GACxC,KAAK,MAAM,YAAY,MAAM,KAAK,IAG7B,KAGL,sBAAmB,CACrB,MAAO,MAAK,MAAM,oBAOpB,OAAK,CAEH,KAAK,uBAEL,KAAK,MAAM,UACX,KAAK,IAAI,QACT,KAAK,MAAQ,GAAI,IAEjB,OAAW,KAAe,MAAK,SAC7B,KAAK,yBAAyB,GAC9B,KAAK,SAAS,GAAa,UAC3B,MAAO,MAAK,SAAS,GAEvB,KAAK,YAAc,KACnB,KAAK,gBAAkB,KACvB,KAAK,mBAAqB,OA5vBb,GAAA,aAAe,EAKf,GAAA,eAAiB,EA2vBlC,YAAc,EAAe,CAC3B,GAAM,GAAS,GAAmB,GAAc,GAAQ,WACxD,MAAO,GAAO,WAAW,EAAQ,EAAO,WAGpC,aAAyB,CAC7B,GAAM,GAAK,KACX,GAAI,EAAG,WAAa,KAAM,CACxB,GAAM,GAAc,GAAI,IAAY,GACpC,EAAG,UAAY,GAAI,IAAO,GAE5B,MAAA,IAAqB,EAAG,UAAU,KAIlC,GAAiB,IAAM,EAAG,WACnB,EAAG,UAGL,GAAM,GAAS,KAQhB,YAAc,EAAW,EAAS,CAEtC,GAAM,GAAS,CAAC,EAAA,EAAG,EAAA,GACnB,MAAO,GAAO,UAAU,GAAK,GCpwC/B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,UAAA,IAAA,GAAA,SAAA,IAAA,KAkBA,aAA4B,CAC1B,MAAO,OAAO,YAAc,aAAe,WAAa,KAGpD,aAAkB,CACtB,GAAI,KAAuB,CAEzB,GAAM,GAAI,UAAU,WAAa,UAAU,QAAW,OAAe,MAErE,MAAO,2TACK,KAAK,IAEb,0kDACK,KAAK,EAAE,OAAO,EAAG,IAE5B,MAAO,GAGH,aAAmB,CACvB,MAAQ,OAAO,SAAW,aAAe,OAAO,UAAY,MAEvD,MAAO,oBAAsB,YClBpC,GAAM,IAAM,IAOZ,GAAI,aAAa,QAAS,IAAM,GAAO,GAAa,CAC9C,GACF,QAAQ,KACJ,iJAOR,GAAI,aAAa,aAAc,IAAkB,MAGjD,GAAI,aACA,UACA,IAAO,MAAO,UAAY,aACrB,MAAO,SAAQ,UAAa,aAC5B,MAAO,SAAQ,SAAS,MAAS,aAG1C,GAAI,aACA,YACA,IAAM,MAAO,YAAc,aAAe,WAAa,MACnD,UAAU,WAAa,MAAQ,SAAS,KAAK,UAAU,YACvD,aAAa,KAAK,UAAU,SAMpC,GAAI,aAAa,OAAQ,IAAM,IAM/B,GAAI,aACA,qCAAsC,IAAM,GAAI,QAAQ,UAG5D,GAAI,aAAa,+BAAgC,IAAM,IAGvD,GAAI,aAAa,UAAW,IAAM,IAGlC,GAAI,aAAa,+BAAgC,IAAM,IAGvD,GAAI,aAAa,sBAAuB,IAAM,ICtDxC,YAAqB,EAAiB,EAAgB,CAC1D,GAAI,GAAwB,EAE5B,GAAI,GAAa,GACf,MAAO,KAAU,SAAW,GAAK,CAAC,EAAI,QAExC,GAAI,CAAC,MAAM,QAAQ,GACjB,MAAO,GAET,GAAM,GAAkB,GAExB,KAAO,MAAM,QAAQ,IACd,GAAa,IAAc,IAAU,UAC1C,EAAM,KAAK,EAAU,QACrB,EAAY,EAAU,GAExB,MAAI,OAAM,QAAQ,IACd,IAAM,QAAQ,uCAChB,GAA2B,EAAK,EAAO,IAGlC,EAGT,YACI,EAAiB,EAAiB,EAAiB,CAErD,GADA,EAAU,GAAW,GACjB,CAAE,MAAM,QAAQ,IAAS,CAAC,GAAa,GAAM,CAC/C,EACI,EAAM,SAAW,EACjB,IAAM,eAAe,EAAQ,KAAK,+DACU,EAAM,eACtD,OAEF,EACI,EAAM,OAAS,EACf,IAAM,eAAe,EAAQ,KAAK,oDACR,EAAI,mBAClC,EACI,EAAI,SAAW,EAAM,GACrB,IAAM,eAAe,EAAQ,KAAK,sBAAsB,EAAM,wBACrC,EAAI,mBACjC,GAAM,GAAW,EAAM,MAAM,GAC7B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAE,EAChC,GAA2B,EAAI,GAAI,EAAU,EAAQ,OAAO,IAIhE,YACI,EACA,EAAuB,EAAiB,EAAoB,CAC9D,GAAI,IAAkB,oBAGtB,CAAA,GAAI,GAAiB,KACnB,KAAM,IAAI,OAAM,kCAElB,GAAI,IAAkB,WAAa,IAAkB,GACjD,IAAkB,WAAa,IAAgB,SACjD,KAAM,IAAI,OACN,aAAa,iBAAuB,cAC9B,qBAAiC,aAIzC,WACF,EAAiB,EAAiB,EAClC,EAAuD,UAAS,CAClE,GAAI,YAAa,IACf,MAAA,IAAY,EAAc,EAAE,MAAO,EAAS,GACrC,EAET,GAAI,GAAgB,GAAW,GAS/B,GANI,IAAkB,UAClB,CAAC,OAAQ,QAAS,WAAW,QAAQ,IAAiB,GACxD,GAAgB,GAElB,GAAY,EAAc,EAAe,EAAS,GAE7C,GAAK,MACL,CAAC,GAAa,IAAM,CAAC,MAAM,QAAQ,IAAM,MAAO,IAAM,UACtD,MAAO,IAAM,WAAa,MAAO,IAAM,SAAW,CACrD,GAAM,GAAO,GAAK,KAAO,OAAU,EAAS,YAAY,KACxD,KAAM,IAAI,OACN,aAAa,iBAAuB,+CACF,MAExC,GAAM,GAAgB,GAAW,EAAG,GAChC,CAAC,GAAa,IAAM,CAAC,MAAM,QAAQ,IACrC,GAAI,CAAC,IAGP,GAAM,GAAS,IAAkB,SAC7B,GAAa,EAAG,GAChB,GAAQ,EAAe,GAHJ,IAIvB,MAAO,GAAO,WAAW,EAAQ,EAAe,GAG5C,YACF,EAA0B,EAAiB,EAC3C,EAAuD,UAAS,CAClE,GAAI,CAAC,MAAM,QAAQ,GACjB,KAAM,IAAI,OACN,YAAY,eAAqB,gDAIvC,MADgB,GACD,IACX,CAAC,EAAG,IACA,EAAgB,EAAG,GAAG,KAAW,KAAM,EAAc,ICnHxD,GAAM,IAAkB,OAOzB,WAAiC,EAAsB,CAC3D,GAAM,GAAO,OAAO,KAAK,GACzB,GAAI,EAAK,SAAW,EAClB,KAAM,IAAI,OACN,yGAEG,EAAK,gBAGd,GAAI,GAAS,EAAK,GACZ,EAAK,EAAE,GAGT,EAAO,SAAS,MAClB,GAAS,EAAO,UAAU,EAAG,EAAO,OAAS,IAI/C,EAAS,EAAS,GAGlB,GAAM,GAAK,IAAI,IAAe,CAC5B,EAAO,WAAW,GAClB,GAAI,CACF,GAAM,GAAS,EAAG,GAAG,GACrB,MAAI,IAAU,IACZ,QAAQ,MAAM,2CAEhB,EAAO,SAAS,GACT,QACA,EADA,CAEP,KAAA,GAAO,SAAS,MACV,IAGV,MAAA,QAAO,eAAe,EAAI,OAAQ,CAAC,MAAO,EAAQ,aAAc,KAGzD,EClBT,YAAoC,EAAoB,EAAkB,CACxE,GAAM,GAAQ,EAAgB,EAAM,OAAQ,WACtC,EAAQ,EAAgB,EAAM,OAAQ,WACvC,GACD,EAAM,MAAO,EAAM,MACnB,yBAAyB,EAAM,aAAa,EAAM,8CAGtD,GAAM,GAAwB,CAAC,KAAM,EAAO,KAAM,GAClD,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KClCrB,YACF,EAAoB,EAAiB,EACrC,EAAgB,CAIlB,GAHI,GAAS,MACX,GAAQ,GAAW,IAEjB,IAAU,YACZ,KAAM,IAAI,OACN,oFAGN,GAAI,CAAC,GAAa,IAAW,CAAC,MAAM,QAAQ,IACxC,MAAO,IAAW,UAAY,MAAO,IAAW,WAChD,MAAO,IAAW,SACpB,KAAM,IAAI,OACN,4HAGN,GAAI,GAAS,KAAM,CACjB,GAAmC,GAEnC,GAAM,GAAe,GAAc,GAC7B,EAAe,GAAc,GACnC,EACI,IAAiB,EACjB,IACI,iCAAiC,8BAC9B,oBAA+B,KAE1C,OAAS,GAAI,EAAG,EAAI,EAAc,OAAQ,EAAE,EAAG,CAC7C,GAAM,GAAW,EAAc,GACzB,EAAoB,IAAM,EAAc,OAAS,EACnD,IAAa,GAAc,EAAM,MAAM,IACvC,GACJ,EACI,EAAc,KAAO,EAAM,IAAM,CAAC,EAClC,IAAM,gDACE,yCACM,SAItB,MAAI,CAAC,GAAa,IAAW,CAAC,MAAM,QAAQ,IAC1C,GAAS,CAAC,IAGZ,EAAQ,GAAS,EACjB,EAAS,IAAU,SACf,GAAa,EAAQ,GACrB,GAAQ,EAAoB,GAAI,IAC7B,EAAO,WAAW,EAAsB,EAAO,GCtBlD,YACF,EAAoB,EAAqB,EAAgB,CAC3D,GAAM,GAAgB,GAAW,EAAQ,GACzC,MAAO,IAAW,EAAQ,EAAO,EAAe,GCjC3C,GAAM,IAAkD,CAC7D,QAAW,EACX,QAAW,EACX,MAAS,EACT,OAAU,EACV,MAAS,EACT,KAAQ,EACR,UAAa,GCFT,GAA0B,EAmBhC,kBACI,EAAuC,EAAmB,CAG5D,GAAM,GAAgC,GAChC,EAA2C,GAE3C,EAAkB,MAAM,QAAQ,GAClC,EAAQ,IAAI,GAAU,EAAO,MAC7B,OAAO,KAAK,GAEhB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAAG,CACrC,GAAM,GAAO,EAAM,GACb,EAAI,MAAM,QAAQ,GAAW,EAAQ,GAAG,OAAS,EAAQ,GAC/D,GAAI,EAAE,QAAU,WAAa,EAAE,QAAU,SAAW,EAAE,QAAU,QAC5D,EAAE,QAAU,UAAY,EAAE,QAAU,YACtC,KAAM,IAAI,OAAM,gCAAgC,OAAU,EAAE,SAE9D,GAAM,GAA6B,CAAC,KAAA,EAAM,MAAO,EAAE,MAAO,MAAO,EAAE,OACnE,GAAI,EAAE,QAAU,SAAU,CACxB,GAAM,GAAY,GAAI,SAAoB,KAAM,IAAU,CACxD,GAAM,GAAO,KAAM,GAAE,QACf,EAAgB,EAAK,OAAO,CAAC,EAAG,IAAM,EAAI,EAAE,OAAQ,GACtD,GAA0B,EAAK,OAC7B,EAAQ,GAAI,YAAW,GACzB,EAAS,EACb,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAAK,CACpC,GAAM,GAAM,EAAK,GACX,EACF,GAAI,YAAW,GAAI,aAAY,CAAC,EAAI,SAAS,QACjD,EAAM,IAAI,EAAe,GACzB,GAAU,GACV,EAAM,IAAI,EAAK,GACf,GAAU,EAAI,OAEhB,EAAQ,KAEV,EAAa,KAAK,OAElB,GAAa,KAAK,EAAE,QAElB,GAAS,MACX,GAAK,MAAQ,GAEf,EAAM,KAAK,GAGb,GAAM,GAAe,KAAM,SAAQ,IAAI,GACvC,MAAO,CAAC,KAAM,GAAuB,GAAe,MAAA,GAkBhD,YACF,EAAqB,EAA6B,CAEpD,GAAM,GAAsB,GACxB,EACA,EAAS,EACb,OAAW,KAAQ,GAAO,CACxB,GAAM,GAAO,EAAK,KACZ,EAAQ,EAAK,MACb,EAAQ,EAAK,MACb,EAAO,GAAc,GACvB,EAEJ,GAAI,gBAAkB,GAAM,CAC1B,GAAM,GAAe,EAAK,aAC1B,GAAI,EAAa,QAAU,SAAW,EAAa,QAAU,UAC3D,GAAI,CAAE,QAAS,IAAgB,SAAW,IACxC,KAAM,IAAI,OACN,UAAU,EAAK,0BAA0B,EAAa,oEAGnD,EAAa,QAAU,WAChC,GAAI,IAAU,UACZ,KAAM,IAAI,OACN,UAAU,EAAK,0BAA0B,EAAa,yDACH,UAGzD,MAAM,IAAI,OACN,UAAU,EAAK,uCACO,EAAa,+EAIzC,GAAM,GAAyB,GAAqB,EAAa,OAC3D,EACF,EAAO,MAAM,EAAQ,EAAS,EAAO,GACnC,EAAkB,EAAa,QAAU,QAC3C,GAAI,YAAW,GACf,GAAI,aAAY,GACpB,GAAI,IAAU,UACZ,GAAI,EAAa,QAAU,SAAW,EAAa,QAAU,SAAU,CACrE,EAAS,GAAI,cAAa,EAAe,QACzC,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAI,EAAe,GACzB,EAAO,GAAK,EAAI,EAAa,MAAQ,EAAa,aAE3C,EAAa,QAAU,UAC5B,IAAkB,QACpB,GAAgB,MAElB,EAAS,EAAc,OAEvB,MAAM,IAAI,OACN,iCAAiC,EAAa,0CAG3C,IAAU,QAAS,CAC5B,GAAI,EAAa,QAAU,SAAW,EAAa,QAAU,SAC3D,KAAM,IAAI,OACN,iCAAiC,EAAa,gCAGpD,EAAS,GAAI,YAAW,EAAe,QACvC,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAI,EAAe,GACzB,EAAO,GAAK,KAAK,MAAM,EAAI,EAAa,MAAQ,EAAa,UAG/D,MAAM,IAAI,OAAM,gCAAgC,OAAU,KAE5D,GAAU,EAAO,UACR,IAAU,SAAU,CAC7B,GAAM,GAAO,GAAc,EAAK,OAChC,EAAS,GACT,OAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAM,GAAa,GAAI,aACnB,EAAO,MAAM,EAAQ,EAAS,KAA0B,GAC5D,GAAU,GACV,GAAM,GAAQ,GAAI,YAAW,EAAO,MAAM,EAAQ,EAAS,IAC1D,EAAwB,KAAK,GAC9B,GAAU,OAEP,CACL,GAAM,GAAc,GAAqB,GACnC,EAAa,EAAO,MAAM,EAAQ,EAAS,EAAO,GAExD,GAAI,IAAU,UACZ,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,WACf,IAAU,YAAa,CAChC,EAAS,GAAI,cAAa,GAC1B,GAAM,GAAO,GAAI,cAAa,EAAO,OAAS,GACxC,EAAQ,GAAI,cAAa,EAAO,OAAS,GAC/C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAK,GAAK,EAAO,EAAI,GACrB,EAAM,GAAK,EAAO,EAAI,EAAI,GAE5B,GAAM,GAAa,GAAO,EAAM,EAAO,WACjC,EAAc,GAAO,EAAO,EAAO,WACzC,EAAI,GAAQ,GAAQ,EAAY,GAChC,EAAW,UACX,EAAY,cAEZ,MAAM,IAAI,OAAM,gCAAgC,OAAU,KAE5D,GAAU,EAAO,EAEf,IAAU,aACZ,GAAI,GAAQ,GAAO,EAAQ,EAAO,IAGtC,MAAO,GAMH,YAAiC,EAAgB,CAErD,GAAI,IAAO,KACT,KAAM,IAAI,OAAM,wBAAwB,KAAK,UAAU,MAGzD,GAAI,GAAkB,EAShB,EAA6B,GACnC,EAAG,QAAS,GAAiB,CAM3B,GALA,GAAmB,EAAE,WAErB,EAAa,KACT,EAAE,aAAe,EAAE,OAAO,WAAa,EACA,GAAK,GAAE,YAAoB,IAClE,CAAE,aAAoB,eAAgB,YAAoB,aACxD,YAAoB,aACxB,KAAM,IAAI,OAAM,mCAAmC,EAAE,YAAY,UAKrE,GAAM,GAAI,GAAI,YAAW,GACrB,EAAS,EACb,MAAA,GAAa,QAAS,GAAiB,CACrC,EAAE,IAAI,GAAI,YAAW,EAAE,QAAS,GAChC,GAAU,EAAE,aAGP,EAAE,OAIX,GAAM,IAAgB,MAAO,SAAW,aACnC,OAAO,OAAS,aAAe,MAAO,OAAS,aAC/C,MAAO,OAAS,aAWf,YAA2B,EAAW,CAC1C,MAAI,IACK,OAAO,WAAW,GAEpB,GAAI,MAAK,CAAC,IAAM,KASnB,YAAoC,EAAmB,CAC3D,GAAI,GACF,MAAO,QAAO,KAAK,GAAQ,SAAS,UAEtC,GAAM,GAAM,GAAI,YAAW,GACvB,EAAI,GACR,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,EAAI,EAAG,IACrC,GAAK,OAAO,aAAa,EAAI,IAE/B,MAAO,MAAK,GASR,YAAoC,EAAW,CACnD,GAAI,GAAe,CACjB,GAAM,GAAM,OAAO,KAAK,EAAK,UAC7B,MAAO,GAAI,OAAO,MAAM,EAAI,WAAY,EAAI,WAAa,EAAI,YAE/D,GAAM,GAAI,KAAK,GACT,EAAS,GAAI,YAAW,EAAE,QAChC,OAAS,GAAI,EAAG,EAAI,EAAE,OAAQ,EAAE,EAC9B,EAAO,IAAI,CAAC,EAAE,WAAW,IAAK,GAEhC,MAAO,GAAO,OASV,YAAkC,EAAsB,CAC5D,GAAI,EAAQ,SAAW,EACrB,MAAO,GAAQ,GAGjB,GAAI,GAAkB,EACtB,EAAQ,QAAS,GAAuB,CACtC,GAAmB,EAAO,aAG5B,GAAM,GAAO,GAAI,YAAW,GACxB,EAAS,EACb,MAAA,GAAQ,QAAS,GAAuB,CACtC,EAAK,IAAI,GAAI,YAAW,GAAS,GACjC,GAAU,EAAO,aAEZ,EAAK,OAUR,YAAmB,EAAY,CACnC,GAAM,GAAY,IAElB,IADA,EAAO,EAAK,OACL,EAAK,SAAS,IACnB,EAAO,EAAK,MAAM,EAAG,EAAK,OAAS,GAErC,GAAM,GAAQ,EAAK,MAAM,GACzB,MAAO,GAAM,EAAM,OAAS,GAQxB,YAAuC,EAA8B,CAEzE,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OAAM,uDAGlB,MAAO,CACL,UAAW,GAAI,MACf,kBAAmB,OACnB,mBAAoB,EAAe,eAAiB,KAChD,EACA,GAAiB,KAAK,UAAU,EAAe,gBACnD,iBAAkB,EAAe,aAAe,KAC5C,EACA,GAAiB,KAAK,UAAU,EAAe,cACnD,gBAAiB,EAAe,YAAc,KAC1C,EACA,EAAe,WAAW,YAUlC,aAAmC,CACjC,GAAM,GAAmB,GAAqB,CAC5C,GAAI,GAAI,GAAK,GACT,EAAI,EAER,KAAQ,GAAI,UAAgB,GAC1B,GAAK,QACL,IAAM,EAER,MAAA,IAAK,CAAC,QACN,GAAK,UAEE,EAAI,GAGP,EAAe,GAAI,aAAY,MAErC,EAAa,GAAK,EAClB,OAAS,GAAI,EAAG,EAAI,KAAM,IACxB,EAAa,GAAK,EAAgB,GAEpC,OAAS,GAAI,KAAM,EAAI,KAAM,IAC3B,EAAa,GAAK,UAAe,GAAI,MAAS,IAGhD,MAAO,GAST,aAAoC,CAClC,GAAM,GAAgB,GAAI,aAAY,IAEtC,EAAc,GAAK,EACnB,EAAc,IAAM,WACpB,EAAc,IAAM,WACpB,EAAc,IAAM,WACpB,OAAS,GAAI,EAAG,EAAI,GAAI,IACtB,EAAc,GAAK,GAAK,GAE1B,OAAS,GAAI,GAAI,EAAI,GAAI,IACvB,EAAc,GAAK,WAAe,GAAI,IAAO,IAG/C,MAAO,GAST,aAAkC,CAChC,GAAM,GAAc,GAAI,aAAY,IAEpC,OAAS,GAAI,EAAG,EAAI,GAAI,IACtB,EAAY,GAAK,KAEnB,MAAA,GAAY,GAAK,EAAY,IAAM,EAE5B,EAUH,aAA2B,CAK/B,GAAM,GAAe,KACf,EAAgB,KAChB,EAAc,KAEpB,MAAQ,IAA+B,CACrC,GAAM,GAAS,GAAI,aAAY,EAAI,EAAe,QAC5C,EAAmB,GAAI,aAAY,GACzC,OAAS,GAAQ,EAAG,EAAQ,EAAe,OAAQ,IAAS,CAC1D,GAAM,GAAc,EAAe,GAC7B,EACF,EAAa,EAAY,GAAe,IAAO,GAAc,OAC7D,EAAc,GAAe,IACjC,EAAiB,GAAS,EAE5B,MAAO,IAAI,cAAa,IC5dtB,GAAA,IAAA,KAAuB,CAO3B,aAAA,CACE,KAAK,YAAc,GACnB,KAAK,YAAc,SAGN,cAAW,CACxB,MAAI,IAAiB,UAAY,MAC/B,IAAiB,SAAW,GAAI,KAE3B,GAAiB,eASnB,oBAAmB,EAAoB,CAC5C,GAAiB,cAAc,YAAY,KAAK,SAS3C,oBAAmB,EAAoB,CAC5C,GAAiB,cAAc,YAAY,KAAK,SAW3C,iBAAgB,EAAoB,CACzC,MAAO,IAAiB,YAAY,EAAK,cAWpC,iBAAgB,EAAsB,EAAyB,CAEpE,MAAO,IAAiB,YAAY,EAAK,OAAQ,SAGpC,aACX,EAAsB,EACtB,EAAyB,CAC3B,GAAM,GAA6B,GAInC,MAHgB,KAAgB,OAC5B,GAAiB,cAAc,YAC/B,GAAiB,cAAc,aAC3B,QAAQ,GAAS,CACvB,GAAM,GAAU,EAAO,EAAK,GACxB,IAAY,MACd,EAAc,KAAK,KAGhB,IAIE,GAAsB,GAC/B,GAAiB,mBAAmB,GAC3B,GAAsB,GAC/B,GAAiB,mBAAmB,GAC3B,GAAmB,GAC5B,GAAiB,gBAAgB,GACxB,GACT,CAAC,EAAsB,IACnB,GAAiB,gBAAgB,EAAK,GCtFxC,GAAgB,eAChB,GAAmB,EAKnB,GAAmB,eAInB,GAAkB,mBAexB,aAA4B,CAC1B,GAAI,CAAC,IAAM,QAAQ,cAIjB,KAAM,IAAI,OACN,2FAIN,GAAM,GAAiB,MAAO,SAAW,YAAc,KAAO,OACxD,EAAU,EAAU,WAAa,EAAU,cAC7C,EAAU,iBAAmB,EAAU,aACvC,EAAU,cACd,GAAI,GAAW,KACb,KAAM,IAAI,OACN,6DAEN,MAAO,GAGT,YAAuB,EAAuB,CAC5C,GAAM,GAAK,EAAY,OACvB,EAAG,kBAAkB,GAAkB,CAAC,QAAS,cACjD,EAAG,kBAAkB,GAAiB,CAAC,QAAS,cAQ5C,GAAA,IAAA,KAAuB,CAM3B,YAAY,EAAiB,CAG3B,GAFA,KAAK,UAAY,KAEb,GAAa,MAAQ,CAAC,EACxB,KAAM,IAAI,OACN,kEAEN,KAAK,UAAY,OAGb,MAAK,EAA8B,CAEvC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAIN,MAAO,MAAK,eAAe,KAAK,UAAW,QAIvC,OAAI,CACR,MAAO,MAAK,eAAe,KAAK,WAiB1B,eAAe,EAAmB,EAA+B,CAEvE,MAAO,IAAI,SAAmC,CAAC,EAAS,IAAU,CAChE,GAAM,GAAc,KAAK,UAAU,KAAK,GAAe,IACvD,EAAY,gBAAkB,IAAM,GAAc,GAElD,EAAY,UAAY,IAAK,CAC3B,GAAM,GAAK,EAAY,OAEvB,GAAI,GAAkB,KAAM,CAE1B,GAAM,GAAU,EAAG,YAAY,GAAkB,YAE3C,EADa,EAAQ,YAAY,IACT,IAAI,KAAK,WACvC,EAAW,UAAY,IAAK,CAC1B,GAAI,EAAW,QAAU,KACvB,MAAA,GAAG,QACI,EAAO,GAAI,OACd,gCAAgC,KAAK,6BAGzC,EAAQ,EAAW,OAAO,iBAG9B,EAAW,QAAU,GACnB,GAAG,QACI,EAAO,EAAW,QAE3B,EAAQ,WAAa,IAAM,EAAG,YACzB,CAEL,GAAM,GACF,GAA6B,GAE3B,EAAS,EAAG,YAAY,GAAiB,aAC3C,EAAY,EAAO,YAAY,IAC7B,EACF,EAAU,IAAI,CAAC,UAAW,KAAK,UAAW,mBAAA,IAC1C,EACJ,EAAe,UAAY,IAAK,CAE9B,EAAU,EAAG,YAAY,GAAkB,aAE3C,GAAM,GADa,EAAQ,YAAY,IACJ,IAAI,CACrC,UAAW,KAAK,UAChB,eAAA,EACA,mBAAA,IAEF,EAAgB,UAAY,IAAM,EAAQ,CAAC,mBAAA,IAC3C,EAAgB,QAAU,GAAQ,CAGhC,EAAY,EAAO,YAAY,IAC/B,GAAM,GAAoB,EAAU,OAAO,KAAK,WAChD,EAAkB,UAAY,IAC5B,GAAG,QACI,EAAO,EAAgB,QAEhC,EAAkB,QAAU,GAC1B,GAAG,QACI,EAAO,EAAgB,UAIpC,EAAe,QAAU,GACvB,GAAG,QACI,EAAO,EAAe,QAE/B,EAAO,WAAa,IAAK,CACnB,GAAW,KACb,EAAG,QAEH,EAAQ,WAAa,IAAM,EAAG,WAKtC,EAAY,QAAU,GAAS,EAAO,EAAY,WAvHtC,GAAA,WAAa,eA4HxB,GAAM,IAA6B,GACnC,IAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,IAAQ,EAAI,WAAW,GAAiB,YAClD,GAAiB,EAAI,MAAM,GAAiB,WAAW,SAHzD,KASX,GAAiB,mBAAmB,IACpC,GAAiB,mBAAmB,IAmB9B,YAA2B,EAAiB,CAChD,MAAO,IAAI,IAAiB,GAG9B,YAA0B,EAAW,CACnC,MAAO,GAAI,WAAW,GAAiB,YACnC,EAAI,MAAM,GAAiB,WAAW,QACtC,EAGA,GAAA,IAAA,KAA8B,CAGlC,aAAA,CACE,KAAK,UAAY,UAGb,aAAU,CACd,MAAO,IAAI,SACP,CAAC,EAAS,IAAU,CAClB,GAAM,GACF,KAAK,UAAU,KAAK,GAAe,IACvC,EAAY,gBAAkB,IAAM,GAAc,GAElD,EAAY,UAAY,IAAK,CAC3B,GAAM,GAAK,EAAY,OACjB,EAAK,EAAG,YAAY,GAAiB,YAUrC,EATQ,EAAG,YAAY,IASY,SACzC,EAAkB,UAAY,IAAK,CACjC,GAAM,GAA4C,GAClD,OAAW,KAAQ,GAAkB,OACnC,EAAI,EAAK,WAAa,EAAK,mBAE7B,EAAQ,IAEV,EAAkB,QAAU,GAC1B,GAAG,QACI,EAAO,EAAkB,QAElC,EAAG,WAAa,IAAM,EAAG,SAE3B,EAAY,QAAU,GAAS,EAAO,EAAY,cAIpD,aAAY,EAAY,CAC5B,MAAA,GAAO,GAAiB,GACjB,GAAI,SAA4B,CAAC,EAAS,IAAU,CACzD,GAAM,GAAc,KAAK,UAAU,KAAK,GAAe,IACvD,EAAY,gBAAkB,IAAM,GAAc,GAElD,EAAY,UAAY,IAAK,CAC3B,GAAM,GAAK,EAAY,OACjB,EAAS,EAAG,YAAY,GAAiB,aACzC,EAAY,EAAO,YAAY,IAE/B,EAAiB,EAAU,IAAI,GACjC,EACJ,EAAe,UAAY,IAAK,CAC9B,GAAI,EAAe,QAAU,KAC3B,MAAA,GAAG,QACI,EAAO,GAAI,OACd,gCAAgC,qBAE/B,CAEL,GAAM,GAAoB,EAAU,OAAO,GACrC,EAAkB,IAAK,CAE3B,EAAU,EAAG,YAAY,GAAkB,aAE3C,GAAM,GADa,EAAQ,YAAY,IACD,OAAO,GAC7C,EAAmB,UAAY,IAC3B,EAAQ,EAAe,OAAO,oBAClC,EAAmB,QAAU,GACzB,EAAO,EAAe,QAI5B,EAAkB,UAAY,EAC9B,EAAkB,QAAU,GAC1B,KACA,EAAG,QACI,EAAO,EAAe,UAInC,EAAe,QAAU,GACvB,GAAG,QACI,EAAO,EAAe,QAG/B,EAAO,WAAa,IAAK,CACnB,GAAW,KACb,EAAG,QAEH,EAAQ,WAAa,IAAM,EAAG,UAIpC,EAAY,QAAU,GAAS,EAAO,EAAY,WCrUlD,GAAiB,IACjB,GAAc,sBACd,GAAc,OACd,GAAwB,iBACxB,GAAsB,eACtB,GAAqB,cACrB,GAAwB,iBA8B9B,YAAsB,EAAY,CAOhC,MAAO,CACL,KAAM,CAAC,GAAa,EAAM,IAAa,KAAK,IAC5C,SAAU,CAAC,GAAa,EAAM,IAAuB,KAAK,IAC1D,YAAa,CAAC,GAAa,EAAM,IAAqB,KAAK,IAC3D,WAAY,CAAC,GAAa,EAAM,IAAoB,KAAK,IACzD,cACI,CAAC,GAAa,EAAM,IAAuB,KAAK,KAWxD,YAA6B,EAAW,CACtC,GAAM,GAAQ,EAAI,MAAM,IACxB,GAAI,EAAM,OAAS,EACjB,KAAM,IAAI,OAAM,uBAAuB,KAEzC,MAAO,GAAM,MAAM,EAAG,EAAM,OAAS,GAAG,KAAK,IAG/C,YAA0B,EAAW,CACnC,MAAO,GAAI,WAAW,GAAoB,YACtC,EAAI,MAAM,GAAoB,WAAW,QACzC,EAgBA,GAAA,IAAA,KAA0B,CAO9B,YAAY,EAAiB,CAC3B,GAAI,CAAC,IAAM,QAAQ,eAAiB,MAAO,SAAW,aAClD,MAAO,QAAO,cAAiB,YAKjC,KAAM,IAAI,OACN,2DAIN,GAFA,KAAK,GAAK,OAAO,aAEb,GAAa,MAAQ,CAAC,EACxB,KAAM,IAAI,OACN,sEAEN,KAAK,UAAY,EACjB,KAAK,KAAO,GAAa,KAAK,gBAY1B,MAAK,EAA8B,CACvC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,4FAEC,CACL,GAAM,GAAW,KAAK,UAAU,EAAe,eACzC,EAAc,KAAK,UAAU,EAAe,aAE5C,EACF,GAA6B,GAEjC,GAAI,CACF,KAAK,GAAG,QAAQ,KAAK,KAAK,KAAM,KAAK,UAAU,IAC/C,KAAK,GAAG,QAAQ,KAAK,KAAK,SAAU,GACpC,KAAK,GAAG,QAAQ,KAAK,KAAK,YAAa,GACvC,KAAK,GAAG,QACJ,KAAK,KAAK,WACV,GAA0B,EAAe,aAC7C,GAAM,GAAyB,CAC7B,OAAQ,EAAe,OACvB,YAAa,EAAe,YAC5B,YAAa,EAAe,aAE9B,MAAI,GAAe,WAAa,MAC9B,GAAO,UAAY,EAAe,WAEhC,EAAe,qBAAuB,MACxC,GAAO,oBAAsB,EAAe,qBAE1C,EAAe,kBAAoB,MACrC,GAAO,iBAAmB,EAAe,kBAE3C,KAAK,GAAG,QAAQ,KAAK,KAAK,cAAe,KAAK,UAAU,IAEjD,CAAC,mBAAA,SACD,EADC,CAGR,KAAA,MAAK,GAAG,WAAW,KAAK,KAAK,MAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,UAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,aAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,YAC7B,KAAK,GAAG,WAAW,KAAK,KAAK,eAEvB,GAAI,OACN,yBAAyB,KAAK,kHAER,EAAmB,wCACrB,EAAmB,qCACpB,EAAmB,2BAa1C,OAAI,CACR,GAAM,GACF,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,OACzC,GAAI,GAAQ,KACV,KAAM,IAAI,OACN,kDAAkD,KAAK,cAG7D,GAAI,EAAK,oBAAsB,OAC7B,KAAM,IAAI,OACN,6EAIN,GAAM,GAAsB,GAGtB,EAAW,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,WACtD,GAAI,GAAY,KACd,KAAM,IAAI,OACN,4CAA4C,KAAK,0BAGvD,EAAI,cAAgB,EAGpB,GAAM,GAAc,KAAK,MAAM,KAAK,GAAG,QAAQ,KAAK,KAAK,cACzD,GAAI,GAAe,KACjB,KAAM,IAAI,OACN,gDAAgD,KAAK,2BAG3D,EAAI,YAAc,EAGlB,GAAM,GAAiB,KAAK,GAAG,QAAQ,KAAK,KAAK,eACjD,GAAI,GAAkB,KAAM,CAC1B,GAAM,GAAW,KAAK,MAAM,GAC5B,EAAI,OAAS,EAAS,OACtB,EAAI,YAAc,EAAS,YAC3B,EAAI,YAAc,EAAS,YACvB,EAAS,WAAgB,MAC3B,GAAI,UAAY,EAAS,WAEvB,EAAS,qBAA0B,MACrC,GAAI,oBAAsB,EAAS,qBAEjC,EAAS,kBAAuB,MAClC,GAAI,iBAAmB,EAAS,kBAKpC,GAAM,GAAmB,KAAK,GAAG,QAAQ,KAAK,KAAK,YACnD,GAAI,GAAoB,KACtB,KAAM,IAAI,OACN,wDACI,KAAK,2BAEf,MAAA,GAAI,WAAa,GAA0B,GAEpC,IA1JO,GAAA,WAAa,kBA8JxB,GAAM,IAAgC,GACtC,IAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,IAAQ,EAAI,WAAW,GAAoB,YACrD,GACH,EAAI,MAAM,GAAoB,WAAW,SAJxC,KAUX,GAAiB,mBAAmB,IACpC,GAAiB,mBAAmB,IA0B9B,YAA8B,EAAiB,CACnD,MAAO,IAAI,IAAoB,GAG3B,GAAA,IAAA,KAAiC,CAGrC,aAAA,CACE,EACI,IAAM,QAAQ,cACd,IAAM,4CACV,EACI,MAAO,SAAW,aACd,MAAO,QAAO,cAAiB,YACnC,IAAM,2DACV,KAAK,GAAK,OAAO,kBAGb,aAAU,CACd,GAAM,GAA4C,GAC5C,EAAS,GAAc,GACvB,EAAS,GAAiB,GAChC,OAAS,GAAI,EAAG,EAAI,KAAK,GAAG,OAAQ,EAAE,EAAG,CACvC,GAAM,GAAM,KAAK,GAAG,IAAI,GACxB,GAAI,EAAI,WAAW,IAAW,EAAI,SAAS,GAAS,CAClD,GAAM,GAAY,GAAoB,GACtC,EAAI,GAAa,KAAK,MAAM,KAAK,GAAG,QAAQ,KAGhD,MAAO,QAGH,aAAY,EAAY,CAC5B,EAAO,GAAiB,GACxB,GAAM,GAAO,GAAa,GAC1B,GAAI,KAAK,GAAG,QAAQ,EAAK,OAAS,KAChC,KAAM,IAAI,OAAM,8BAA8B,MAEhD,GAAM,GAAO,KAAK,MAAM,KAAK,GAAG,QAAQ,EAAK,OAE7C,MAAA,MAAK,GAAG,WAAW,EAAK,MACxB,KAAK,GAAG,WAAW,EAAK,UACxB,KAAK,GAAG,WAAW,EAAK,aACxB,KAAK,GAAG,WAAW,EAAK,YACjB,ICrUL,GAAoB,MAEpB,GAAA,KAAgC,CAMpC,aAAA,CACE,KAAK,SAAW,SAGH,cAAW,CACxB,MAAI,IAA0B,UAAY,MACxC,IAA0B,SAAW,GAAI,KAEpC,GAA0B,eAS5B,iBAAgB,EAAgB,EAA0B,CAC/D,EAAO,GAAU,KAAM,IAAM,yCACzB,EAAO,SAAS,KAClB,GAAS,EAAO,MAAM,EAAG,EAAO,QAAQ,MAE1C,EAAO,EAAO,OAAS,EAAG,IAAM,uCAChC,GAAM,GAAW,GAA0B,cAC3C,EACI,EAAS,SAAS,IAAW,KAC7B,IAAM,2DACF,OACR,EAAS,SAAS,GAAU,QAGvB,YAAW,EAAc,CAC9B,GAAM,GAAU,KAAK,cAAc,SAAS,GAC5C,GAAI,GAAW,KACb,KAAM,IAAI,OAAM,yCAAyC,MAE3D,MAAO,SAGF,aAAU,CACf,MAAO,QAAO,KAAK,KAAK,cAAc,YAY1C,YAAkB,EAAW,CAC3B,GAAI,EAAI,QAAQ,MAAuB,GACrC,KAAM,IAAI,OACN,6EAEG,GAA0B,aAAa,KAAK,QAErD,MAAO,CACL,OAAQ,EAAI,MAAM,IAAmB,GACrC,KAAM,EAAI,MAAM,IAAmB,IAIvC,kBACI,EAAmB,EACnB,EAAe,GAAK,CACtB,EACI,IAAc,EACd,IAAM,wCAAwC,MAElD,GAAM,GAAe,GAAiB,gBAAgB,GACtD,EACI,EAAa,OAAS,EACtB,IAAM,kEACF,MACR,EACI,EAAa,OAAS,EACtB,IAAM,yCAAyC,EAAa,wCACxB,MACxC,GAAM,GAAc,EAAa,GAE3B,EAAe,GAAiB,gBAAgB,GACtD,EACI,EAAa,OAAS,EACtB,IAAM,uEACK,MACf,EACI,EAAa,OAAS,EACtB,IAAM,yCAAyC,EAAa,6CACnB,MAC7C,GAAM,GAAc,EAAa,GAE3B,EAAe,GAAS,GAAW,OACnC,EAAa,GAAS,GAAW,KACjC,EAAa,IAAiB,GAAS,GAAW,OAElD,EAAiB,KAAM,GAAY,OAKrC,GAAgB,GAClB,KAAM,IAA0B,WAAW,GACtC,YAAY,GAGnB,GAAM,GAAa,KAAM,GAAY,KAAK,GAK1C,MAAI,IAAgB,CAAC,GACnB,KAAM,IAA0B,WAAW,GACtC,YAAY,GAGZ,EAAW,mBAsCpB,mBAAyB,CACvB,GAAM,GAAU,GAA0B,aACpC,EAA2C,GACjD,OAAW,KAAU,GAAS,CAC5B,GAAM,GACF,KAAM,IAA0B,WAAW,GAAQ,aACvD,OAAW,KAAQ,GAAW,CAC5B,GAAM,GAAM,EAAS,GAAoB,EACzC,EAAI,GAAO,EAAU,IAGzB,MAAO,GAoCT,kBAA2B,EAAW,CACpC,GAAM,GAAgB,GAAS,GAE/B,MADgB,IAA0B,WAAW,EAAc,QACpD,YAAY,EAAc,MAkD3C,kBACI,EAAmB,EAAe,CAEpC,MAAO,IAAmB,EAAW,EADhB,IAkDvB,kBACI,EAAmB,EAAe,CAEpC,MAAO,IAAmB,EAAW,EADhB,ICrUjB,GAAA,IAAA,KAAsB,CAK1B,MAAM,EAAc,EAAkB,CACpC,MAAO,OAAM,EAAM,GAGrB,KAAG,CACD,MAAO,aAAY,MAGrB,OAAO,EAAc,EAAgB,CACnC,GAAI,IAAa,SAAW,IAAa,OACvC,KAAM,IAAI,OACN,kDAAkD,KAExD,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAAI,cAElB,KAAK,YAAY,OAAO,GAEjC,OAAO,EAAmB,EAAgB,CACxC,MAAO,IAAI,aAAY,GAAU,OAAO,KAI5C,GAAI,IAAM,IAAI,cAAe,CAC3B,IAAM,YAAY,UAAW,GAAI,KAGjC,GAAI,CACF,GAA0B,gBACtB,GAAoB,WAAY,GAAI,WACjC,EADiC,EAK1C,GAAI,CACF,GAA0B,gBACtB,GAAiB,WAAY,GAAI,WAC9B,EAD8B,GC9ClC,GAAM,IAAe,CAE1B,YAAa,IAAc,MAIzB,GAaE,GAAA,KAAmB,CAKvB,aAAA,CAEE,KAAK,KAAe,gBAGpB,KAAK,YAAc,GAAI,MAAK,KAAK,YAGnC,MAAM,EAAc,EAA0B,CAC5C,MAAI,KAAM,OAAO,OAAS,KACjB,IAAM,OAAO,MAAM,EAAM,GAG9B,KAAe,MACjB,IAAc,GAAa,eAEtB,GAAY,EAAM,IAG3B,KAAG,CACD,GAAM,GAAO,QAAQ,SACrB,MAAO,GAAK,GAAK,IAAO,EAAK,GAAK,IAGpC,OAAO,EAAc,EAAgB,CACnC,GAAI,IAAa,SAAW,IAAa,OACvC,KAAM,IAAI,OACN,sDAAsD,KAE5D,MAAO,MAAK,YAAY,OAAO,GAEjC,OAAO,EAAmB,EAAgB,CACxC,MAAI,GAAM,SAAW,EACZ,GAEF,GAAI,MAAK,KAAK,YAAY,GAAU,OAAO,KAIlD,IAAM,IAAI,YACZ,IAAM,YAAY,OAAQ,GAAI,KCtC1B,YACF,EAAoB,EAAW,UAC/B,EAAuB,CACzB,MAAA,GAAQ,GAAS,UACZ,GAAmC,GACjC,GAAI,IAAmB,EAAO,EAAO,GCb9C,YAAiC,EAAiB,EAAe,CAC/D,GAAM,GAAK,EAAgB,EAAG,IAAK,QAGnC,GAAI,CAAM,GAAa,GACrB,KAAM,IAAI,OAAM,mCAAmC,KAErD,GAAI,IAAU,UAAY,EAAG,QAAU,UACnC,IAAU,UAAY,EAAG,QAAU,SACrC,KAAM,IAAI,OAAM,yCAGlB,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,MAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAO,EAAG,CAAC,MAAA,KClBxB,YAAkC,EAAe,CAE/C,GAAM,GAAyB,CAAC,EADrB,EAAgB,EAAG,IAAK,QAAS,sBAK5C,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCjBnB,YAAkC,EAAM,EAAU,GAAK,CAC3D,QAAQ,IAAI,EAAE,SAAS,ICZzB,KAcA,GAAM,IAAuB,CAC3B,OAAA,GACA,KAAA,GACA,MAAA,GACA,MAAA,IAEF,GAAa,ICzCb,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,aAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,UAAA,IAAA,GAAA,cAAA,IAAA,GAAA,cAAA,IAAA,GAAA,WAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,6BAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,KAAA,IAAA,GAAA,aAAA,IAAA,GAAA,WAAA,IAAA,GAAA,YAAA,IAAA,GAAA,UAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,YAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,gBAAA,IAAA,KC6BA,GAAM,IAA2B,QAC3B,GAA8B,QAC9B,GAAqC,eAE3C,YAAkB,EAAU,CAC1B,MAAO,IAAI,SAAQ,GAAW,WAAW,IAAU,KAAK,GAGpD,GAAA,IAAA,KAAuB,CAQ3B,YAAY,EAAuB,CACjC,GAAI,CAAC,IAAM,QAAQ,cAGjB,KAAM,IAAI,OACN,uFAIF,EAAe,WAAW,GAAiB,aAC7C,GAAiB,EAAe,MAAM,GAAiB,WAAW,SAEhE,IAAkB,MAAQ,EAAe,SAAW,IACtD,GAAiB,IAGnB,KAAK,sBAAwB,EAAiB,GAC9C,KAAK,mBACD,EAAiB,QAGjB,MAAK,EAA8B,CACvC,GAAI,MAAQ,WAAc,YACxB,KAAM,IAAI,OACN,2FAGN,GAAM,GAAa,OAAO,IAAI,gBAAgB,GAAI,MAC9C,CAAC,EAAe,YAAa,CAAC,KAAM,8BAExC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,yFAEC,CACL,GAAM,GAAyC,CAAC,CAC9C,MAAO,CAAC,KAAO,KAAK,oBACpB,QAAS,EAAe,cAEpB,EAA4C,CAChD,cAAe,EAAe,cAC9B,OAAQ,EAAe,OACvB,YAAa,EAAe,YAC5B,YAAa,EAAe,YAC5B,gBAAA,GAEE,EAAe,WAAa,MAC9B,GAA+B,UAAY,EAAe,WAExD,EAAe,qBAAuB,MACxC,GAA+B,oBAC3B,EAAe,qBAEjB,EAAe,kBAAoB,MACrC,GAA+B,iBAC3B,EAAe,kBAErB,GAAM,GACF,OAAO,IAAI,gBAAgB,GAAI,MAC3B,CAAC,KAAK,UAAU,IAChB,CAAC,KAAM,sBAIT,EAAa,KAAK,YAAc,KAAO,SAAS,cAAc,KACvB,KAAK,WAQlD,GAPA,EAAW,SAAW,KAAK,sBAC3B,EAAW,KAAO,EAIlB,KAAM,IAAM,IAAM,EAAW,cAAc,GAAI,YAAW,WAEtD,EAAe,YAAc,KAAM,CACrC,GAAM,GAAmB,KAAK,kBAAoB,KAC9C,SAAS,cAAc,KACvB,KAAK,iBACT,EAAiB,SAAW,KAAK,mBACjC,EAAiB,KAAO,EACxB,KAAM,IACF,IAAM,EAAiB,cAAc,GAAI,YAAW,WAG1D,MAAO,CAAC,mBAAoB,GAA6B,OArF7C,GAAA,WAAa,eA0F/B,GAAA,IAAA,KAAkB,CAGhB,YAAY,EAAa,CACvB,GAAI,GAAS,MAAQ,EAAM,OAAS,EAClC,KAAM,IAAI,OACN,wEACgB,KAEtB,KAAK,MAAQ,OAGT,OAAI,CACR,GAAM,GAAW,KAAK,MAAM,GACtB,EAAc,KAAK,MAAM,MAAM,GAErC,MAAO,IAAI,SAAwB,CAAC,EAAS,IAAU,CACrD,GAAM,GAAa,GAAI,YACvB,EAAW,OAAU,GAAgB,CAEnC,GAAM,GAAY,KAAK,MAAO,EAAM,OAAe,QAC7C,EAAgB,EAAU,cAChC,GAAI,GAAiB,KAAM,CACzB,EAAO,GAAI,OACP,4CAA4C,EAAS,SACzD,OAGE,EAAY,SAAW,GACzB,EAAQ,CAAC,cAAA,IAGX,GAAM,GAAkB,EAAU,gBAClC,GAAI,GAAmB,KAAM,CAC3B,EAAO,GAAI,OACP,6CAA6C,EAAS,SAC1D,OAGF,GAAI,GACJ,GAAI,CACF,EACI,KAAK,4BAA4B,EAAiB,SAC/C,EAD+C,CAEtD,EAAO,GACP,OAGF,GAAM,GAAsC,GACtC,EAAkB,GAClB,EAAgC,GACtC,EAAgB,QAAQ,GAAe,CACrC,EAAa,MAAM,QAAQ,GAAO,CAChC,EAAM,KAAK,GACX,EAAe,KAAK,QAEtB,EAAY,KAAK,GAAG,EAAa,WAGnC,EAAgB,QAAQ,GAAe,CACrC,EAAa,MAAM,QAAQ,GAAO,CAChC,GAAM,GAAmB,GAAI,YAC7B,EAAiB,OAAU,GAAgB,CAEzC,GAAM,GAAc,EAAM,OAAe,OACnC,EAAQ,EAAM,QAAQ,GAE5B,GADA,EAAe,GAAS,EACpB,EAAe,QAAQ,QAAU,GAAI,CACvC,GAAM,GAAyB,CAC7B,cAAA,EACA,YAAA,EACA,WAAY,GAAwB,GACpC,OAAQ,EAAU,OAClB,YAAa,EAAU,YACvB,YAAa,EAAU,aAErB,EAAU,WAAa,MACzB,GAAO,UAAY,EAAU,WAE3B,EAAU,qBAAuB,MACnC,GAAO,oBAAsB,EAAU,qBAErC,EAAU,kBAAoB,MAChC,GAAO,iBAAmB,EAAU,kBAEtC,EAAQ,KAGZ,EAAiB,QAAU,GACvB,EAAO,6CAA6C,OACxD,EAAiB,kBAAkB,EAAW,SAIpD,EAAW,QAAU,GAAS,EAC1B,sEACc,EAAS,6EAE3B,EAAW,WAAW,KAOlB,4BACJ,EAAiC,EAAa,CAChD,GAAM,GAAsB,GACtB,EAAY,EAAM,IAAI,GAAQ,GAAS,EAAK,OAC5C,EAAqC,GAC3C,OAAW,KAAS,GAClB,EAAM,MAAM,QAAQ,GAAO,CACzB,GAAM,GAAe,GAAS,GAC9B,GAAI,EAAU,QAAQ,KAAkB,GACtC,KAAM,IAAI,OACN,uDACI,MAGV,GADA,EAAU,KAAK,GACX,EAAU,QAAQ,KAAkB,GACtC,KAAM,IAAI,OACN,8BAA8B,uBAElC,EAAW,GAAQ,EAAM,EAAU,QAAQ,MAKjD,GAAI,EAAU,SAAW,EAAM,OAC7B,KAAM,IAAI,OACN,wDACI,EAAU,oDACV,EAAM,YAEhB,MAAO,KAIE,GAAoC,GAC1C,IAAM,QAAQ,eAGb,CAAC,MAAM,QAAQ,IAAQ,EAAI,WAAW,GAAiB,YAClD,GAAiB,EAAI,MAAM,GAAiB,WAAW,SAHzD,KASX,GAAiB,mBAAmB,IAyC9B,YAA2B,EAAiB,QAAO,CACvD,MAAO,IAAI,IAAiB,GA2CxB,YAAuB,EAAa,CACxC,MAAO,IAAI,IAAa,GCnVpB,YACF,EAAmC,EACnC,EAAwB,EAAoB,CAC9C,EAAc,GACd,EAAgB,GAAiB,KAAO,EAAI,EAC5C,EAAc,GAAe,KAAO,EAAI,EACxC,EAAc,EAAe,GAC7B,GAAI,GAAkB,EAEhB,EAAmB,GACvB,GAAQ,KAAK,GAAQ,CACnB,GAAM,GAAW,EACb,GAAE,EAAkB,EAAS,OAAU,GAAc,GAEzD,MAAA,GAAW,GACJ,IAEF,GAGT,WAAuB,EAAiC,CACtD,EACI,GAAY,MAAQ,MAAM,QAAQ,IAAa,EAAS,OAAS,EACjE,IAAM,uCAGZ,WAAuB,EAAuB,EAAmB,CAC/D,EACI,GAAiB,GAAK,GAAiB,EACvC,IAAM,oEACmB,KAC7B,EACI,GAAe,GAAK,GAAe,EACnC,IAAM,kEACiB,KAC3B,EACI,GAAe,EACf,IAAM,yEACmB,qBAClB,KAGb,MAAO,SAAQ,IAAI,EAAS,IAAI,ICnClC,kBACI,EAAqB,EAAyB,CAC5C,GAAe,MACjB,GAAc,IAGhB,GAAM,GAAY,EAAY,WAAa,KAAO,IAAM,SAAS,MACf,EAAY,UAGxD,EAAW,EAAU,IACvB,GACI,EAAU,EAAU,EAAY,YAAa,CAAC,SAAU,MAE1D,EAAqB,EACrB,EAAmB,GAQnB,EANY,GAAY,YAAc,KACxC,KAAM,SAAQ,IAAI,GAClB,KAAM,IACF,EAAU,EAAY,WAAY,EAClC,IAEyB,IAAI,GAAY,EAAS,eAEpD,EAAsB,GACtB,EAAoB,EAO1B,MALgB,GAAY,YAAc,KACtC,KAAM,SAAQ,IAAI,GAClB,KAAM,IACF,EAAgB,EAAY,WAAY,EACxC,GAaV,kBACI,EAAiC,EAAiB,GAClD,EACA,EAAyB,CAW3B,MAFoB,IAFE,GAClB,GAAyB,EAAW,CAAC,YAAA,KAGtB,EAAU,EAAgB,GA2BzC,YACF,EAAqE,CAGvE,MAAO,OACI,EAAiC,EAAiB,GAClD,IAAmD,CAG5D,GAAM,GAAyB,EAAS,IAAI,IAAM,IAC5C,EAKF,GACE,EACF,GAAe,KAAO,EAAY,IAAI,IAAM,IAAS,GACnD,EAAmC,GAwCzC,GAvCA,EAAS,QAAQ,CAAC,EAAqB,IAAc,CACnD,GAAI,GAAc,EAClB,EAAoB,QAAQ,QAAQ,GAAe,CACjD,GAAM,GAAY,gBAAkB,GAChC,EAAa,aAAa,MAC1B,EAAa,MAEX,EAAe,GAAqB,GACjC,GAAc,EAAa,OAE9B,EAA8B,IAAK,CACvC,EAAuB,GAAc,GACjC,EAAoB,IAAe,MACrC,GAAoB,GAAc,IAGpC,EAAoB,GAAY,KAAK,CACnC,cAAe,EACf,YAAA,EACA,UAAW,KAIX,GAAe,KACjB,EAAY,QAAQ,CAAC,EAAY,IAAe,CAC1C,IAAe,EAAa,MAC9B,KACA,EAAa,GAAe,MAIhC,IAGF,EAAuB,KAAK,EAAa,MACzC,GAAe,MAIf,CAAC,EAAa,MAAM,GAAS,GAAQ,CACvC,GAAM,GAAkB,EAAY,OAAO,CAAC,EAAG,IAAM,CAAC,EAAa,IACnE,KAAM,IAAI,OACN,kDACG,EAAgB,KAAK;wCAErB,EAAuB,KAAK,UAKrC,GAAM,GACF,EAAuB,OAAO,CAAC,EAAa,EAAa,IACnD,IACF,EAAY,KAAK,GAEZ,GACN,IAED,EAAsB,GAC5B,EAAoB,QAAQ,GAAI,CAC9B,EAAS,GAAG,MAAM,QAAQ,GAAW,CACnC,GAAM,GAAW,EACX,GAAe,SAAS,KAAa,GAAN,KAAY,EACjD,EAAU,KAAK,OAGnB,GAAM,GAAU,KAAM,GAAqB,GAErC,EAAmC,GACrC,EAAoB,EACxB,MAAA,GAAoB,QAAQ,GAAI,CAC9B,GAAM,GAAa,EAAS,GAAG,MAAM,OAEjC,EAAa,EACjB,OAAS,GAAI,EAAG,EAAI,EAAY,IAC9B,GAAc,EAAQ,EAAoB,GAAG,WAI/C,GAAM,GAAc,GAAI,aAAY,GAC9B,EAAkB,GAAI,YAAW,GACnC,EAAoB,EACxB,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAM,GAAS,GAAI,YAAW,EAAQ,EAAoB,IAC1D,EAAgB,IAAI,EAAQ,GAC5B,GAAqB,EAAO,WAGP,EAAoB,GAC5B,QAAQ,GAAe,CACpC,GAAM,GAAa,EAAY,MAC3B,EAAa,YACb,EAAa,YAAc,EAAa,WACtC,EACF,GAAc,EAAY,CAAC,EAAa,gBAC5C,OAAW,KAAQ,GACjB,EAAiB,GAAQ,EAAgB,KAI7C,GAAqB,IAGhB,GCrNX,GAAM,IAAyB,2BACzB,GAAY,mBACZ,GAAA,KAAkB,CActB,YAAY,EAAc,EAAyB,CAgCjD,GAvCO,KAAA,eAAiB,OAQpB,GAAe,MACjB,GAAc,IAEhB,KAAK,iBAAmB,EAAY,iBACpC,KAAK,WAAa,EAAY,WAC9B,KAAK,mBAAqB,EAAY,mBAElC,EAAY,WAAa,KAC3B,GACI,MAAO,GAAY,WAAc,WACjC,IAAM,+HAGV,KAAK,MAAQ,EAAY,WAEzB,KAAK,MAAQ,IAAM,SAAS,MAG9B,EACI,GAAQ,MAAQ,EAAK,OAAS,EAC9B,IAAM,2DAGN,MAAM,QAAQ,IAChB,EACI,EAAK,SAAW,EAChB,IAAM,iEACmB,EAAK,YAEpC,KAAK,KAAO,EAER,EAAY,aAAe,MAC3B,EAAY,YAAY,MAAQ,KAClC,KAAM,IAAI,OACN,sEAEN,KAAK,YAAc,EAAY,aAAe,QAG1C,MAAK,EAA8B,CACvC,GAAI,EAAe,wBAAyB,aAC1C,KAAM,IAAI,OACN,2FAIN,GAAM,GAAO,OAAO,OAAO,CAAC,OAAQ,KAAK,gBAAiB,KAAK,aAC/D,EAAK,KAAO,GAAI,UAEhB,GAAM,GAAyC,CAAC,CAC9C,MAAO,CAAC,uBACR,QAAS,EAAe,cAEpB,EAA4C,CAChD,cAAe,EAAe,cAC9B,OAAQ,EAAe,OACvB,YAAa,EAAe,YAC5B,YAAa,EAAe,YAC5B,gBAAA,GAEE,EAAe,WAAa,MAC9B,GAA+B,UAAY,EAAe,WAExD,EAAe,qBAAuB,MACxC,GAA+B,oBAC3B,EAAe,qBAEjB,EAAe,kBAAoB,MACrC,GAA+B,iBAC3B,EAAe,kBAGrB,EAAK,KAAK,OACN,aACA,GAAI,MACA,CAAC,KAAK,UAAU,IAChB,CAAC,KAAM,KACX,cAEA,EAAe,YAAc,MAC/B,EAAK,KAAK,OACN,oBACA,GAAI,MAAK,CAAC,EAAe,YAAa,CAAC,KAAM,KAC7C,qBAGN,GAAM,GAAW,KAAM,MAAK,MAAM,KAAK,KAAM,GAE7C,GAAI,EAAS,GACX,MAAO,CACL,mBAAoB,GAA6B,GACjD,UAAW,CAAC,IAGd,KAAM,IAAI,OACN,gEACG,EAAS,gBAYd,OAAI,CACR,GAAM,GAAqB,KAAM,MAAK,MAAM,KAAK,KAAM,KAAK,aAE5D,GAAI,CAAC,EAAmB,GACtB,KAAM,IAAI,OACN,cAAc,KAAK,gCAChB,EAAmB,iFAG5B,GAAI,GACJ,GAAI,CACF,EAAc,KAAM,GAAmB,aAChC,EADgC,CAEvC,GAAI,GAAU,+CAA+C,KAAK,QAGlE,KAAI,MAAK,KAAK,SAAS,OACrB,GAAW,+UAOX,GAAW,uEAGP,GAAI,OAAM,GAElB,GAAM,GAAgB,EAAY,cAC5B,EAAkB,EAAY,gBAC9B,EAAc,EAAY,YAC1B,EAAc,EAAY,YAC1B,EAAS,EAAY,OACrB,EAAY,EAAY,UACxB,EAAsB,EAAY,oBAGxC,GAAI,GAAiB,MAAQ,GAAmB,KAC9C,KAAM,IAAI,OACN,2BAA2B,KAAK,iEAItC,GAAI,GACA,EACA,GAAmB,MAErB,EAAC,EAAa,GADE,KAAM,MAAK,YAAY,IAIzC,GAAM,GAA4B,CAChC,cAAA,EACA,YAAA,EACA,WAAA,EACA,YAAA,EACA,YAAA,EACA,OAAA,GAGE,GAAa,MACf,GAAU,UAAY,GAEpB,GAAuB,MACzB,GAAU,oBAAsB,GAGlC,GAAM,GAAc,EAAY,iBAChC,MAAI,IACF,GAAU,iBAAmB,GAGxB,OAGK,aAAY,EAAsC,CAE9D,GAAM,GAAa,MAAM,QAAQ,KAAK,MAAQ,KAAK,KAAK,GAAK,KAAK,KAC5D,CAAC,EAAQ,GAAU,GAAS,GAC5B,EAAa,KAAK,kBAAoB,EAEtC,EAAc,GACpB,OAAW,KAAS,GAClB,EAAY,KAAK,GAAG,EAAM,SAG5B,GAAM,GAAsB,GACtB,EAAsC,GAC5C,OAAW,KAAgB,GACzB,OAAW,KAAQ,GAAa,MAC1B,KAAK,oBAAsB,KAC7B,EAAY,KAAK,KAAK,mBAAmB,IAEzC,EAAU,KAAK,EAAa,EAAO,GAKrC,KAAK,oBACP,EAAU,KAAK,GAAG,KAAM,SAAQ,IAAI,IAGtC,GAAM,GAAU,KAAM,IAAyB,EAAW,CACxD,YAAa,KAAK,YAClB,UAAW,KAAK,MAChB,WAAY,KAAK,aAEnB,MAAO,CAAC,EAAa,GAAwB,MA7N/B,GAAA,iBAAmB,eA4O/B,YAAmB,EAAW,CAClC,GAAM,GAAY,EAAI,YAAY,KAC5B,EAAkB,EAAI,YAAY,KAClC,EAAS,EAAI,UAAU,EAAG,GAC1B,EACF,EAAkB,EAAY,EAAI,UAAU,GAAmB,GACnE,MAAO,CAAC,EAAS,IAAK,GAGlB,YAAuB,EAAW,CACtC,MAAO,GAAI,MAAM,GAAY,mBAAqB,KAG7C,GAAM,IACT,CAAC,EAAa,IAA6B,CACzC,GAAI,MAAO,QAAU,aAChB,IAAe,MAAQ,EAAY,WAAa,MAInD,MAAO,MACF,CACL,GAAI,GAAS,GAMb,GALI,MAAM,QAAQ,GAChB,EAAS,EAAI,MAAM,GAAW,GAAa,IAE3C,EAAS,GAAa,GAEpB,EACF,MAAO,IAAK,EAAK,GAGrB,MAAO,OAEb,GAAiB,mBAAmB,IACpC,GAAiB,mBAAmB,IAwE9B,YAAe,EAAc,EAAyB,CAC1D,MAAO,IAAI,IAAY,EAAM,GAQzB,YACF,EAAc,EAAyB,CACzC,MAAO,IAAK,EAAM,GCrXpB,GAAA,IAAA,KAAuB,CACrB,YAA6B,EAA+B,CAA/B,KAAA,eAAA,OAEvB,OAAI,CACR,MAAO,MAAK,iBAIhB,GAAA,KAAsB,CACpB,YACqB,EACqC,CADrC,KAAA,YAAA,OAGf,MAAK,EAA8B,CACvC,MAAO,MAAK,YAAY,KAyBtB,YACF,EAAmC,EACnC,EAA0B,EAA+B,CAC3D,MAAI,WAAU,SAAW,EAElB,EAAkC,eAAiB,MACnD,EAAkC,aAAe,KAE7C,GAAI,IAAkB,GAI7B,SAAQ,KACJ,yNAIG,GAAI,IAAkB,CAAC,cAAe,KAK/C,SAAQ,KACJ,yNAIG,GAAI,IAAkB,CAC3B,cAAe,EACf,YAAA,EACA,WAAA,EACA,eAAA,KAoBA,YACF,EACuB,CACzB,MAAO,IAAI,IAAiB,GCpH9B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,gBAAA,IAAA,KC2CA,YACI,EAAsB,EAAsB,EAAa,GACzD,EAAa,GAAK,CACpB,GAAI,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAK,EAAgB,EAAG,IAAK,UACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAA4B,CAAC,EAAO,EAAG,GACvC,EAA0B,CAAC,WAAA,EAAY,WAAA,GAE7C,MAAO,GAAO,UACV,GAAa,EAAgC,GAG5C,GAAM,IAAS,EAAG,CAAC,QAAA,KCX1B,YACI,EAA4B,EAAe,EAAU,EACrD,EAAW,EAAC,CACd,GAAI,EAAQ,EACV,KAAM,IAAI,OAAM,iDAAiD,KAInE,GAAM,GAAuB,CAAC,QAFb,EAAgB,EAAS,UAAW,SAAU,UAGzD,EAAqB,CAAC,MAAA,EAAO,QAAA,EAAS,SAAA,GAE5C,MAAO,GAAO,UACV,GAAQ,EACR,GAGC,GAAM,IAAS,EAAG,CAAC,QAAA,KCf1B,YAAsC,EAAiB,EAAe,CACpE,GAAM,GAAK,EAAgB,EAAG,IAAK,aAgBnC,GAdI,GAAQ,MACV,GAAO,EAAG,MAAM,IAAI,CAAC,EAAG,IAAM,GAAG,WAE9B,EACD,EAAG,OAAS,EAAK,OACjB,IAAM,qCAAqC,EAAG,kCACb,MACrC,EAAK,QAAQ,GAAO,CACb,EACD,GAAQ,GAAK,EAAO,EAAG,KACvB,IAAM,+CAA+C,EAAG,KAAO,aAC/C,OAGlB,EAAG,MAAQ,EACb,MAAO,GAAG,QAGZ,GAAM,GAA0B,CAAC,EAAG,GAC9B,EAAwB,CAAC,KAAA,GAE/B,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KClBvB,YACF,EAA6B,EAC7B,EAAkB,CACpB,GAAM,GAAU,EAAgB,EAAQ,SAAU,mBAC5C,EACF,EAAgB,EAAa,cAAe,mBAE3C,EACD,GAAc,MAAQ,EAAa,GAAK,OAAO,UAAU,GACzD,IAAM,+DACS,KACd,EACD,EAAQ,OAAS,EACjB,IAAM,gDAAgD,EAAQ,QAC7D,EACD,EAAa,OAAS,EACtB,IAAM,qDACS,EAAa,QAC3B,EACD,EAAQ,MAAM,KAAO,EAAa,MAAM,GACxC,IAAM,uCACC,EAAQ,MAAM,UAAU,EAAa,MAAM,uEAEjD,EACD,EAAa,GAAK,OAAO,UAAU,GACnC,IAAM,4DACC,KAIX,GAAM,GAAe,GAAO,GAAK,EAAS,SAAU,GAC9C,EACF,GAAO,GAAK,EAAc,SAAU,GAClC,EAA0B,GAAU,GACpC,EAAoB,GAAO,EAAe,GAChD,MAAO,IAAK,EAAS,SAGhB,GAAM,IAAkB,EAAG,CAAC,iBAAA,KC/FnC,GAAA,GAAA,GAAA,GAAA,CAAA,WAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,SAAA,IAAA,KC+CM,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,mDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,oEAEN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GDlClD,GAAI,IA2BJ,YACI,EAEA,EAAc,EAAC,CAEjB,GAAI,EAAc,EAChB,KAAM,IAAI,OACN,kEAEN,GAAI,GAAU,KACZ,KAAM,IAAI,OAAM,4DAElB,GAAI,GAAc,GACd,EAAc,GACd,EAAU,GACV,EAAU,GACV,EAAe,GACf,EAAgB,GACpB,GAAK,EAAqB,eAAgB,YACxC,EAAc,WAEZ,MAAQ,YAAe,aAAe,YAAkB,WAC1D,EAAc,WAEZ,MAAQ,mBAAsB,aAC9B,YAAkB,kBACpB,EAAU,WAER,MAAQ,mBAAsB,aAC9B,YAAkB,kBACpB,EAAU,WAEA,EAAe,YAAc,KACvC,EAAe,WAEb,MAAQ,cAAiB,aAAe,YAAkB,aAC5D,EAAgB,OAEhB,MAAM,IAAI,OACN,qPAIY,EAAc,YAAY,QAE5C,GAAI,EAAS,CACX,GAAM,GAAgC,EACtC,GAAI,GACC,EAA4B,WACzB,EACN,KAAM,IAAI,OACN,yGAOR,GADe,GAAU,GAAY,EAAO,cAC9B,KAAM,CAClB,GAAM,GAA2B,CAAC,OAAA,GAC5B,EAAyB,CAAC,YAAA,GAChC,MAAO,GAAO,UACV,GAAY,EACZ,GAGN,GAAM,CAAC,EAAO,GAAU,EACpB,CACG,EAA4B,WAC5B,EAA4B,aAE/B,CAAC,EAAO,MAAO,EAAO,QACtB,EAEA,EACF,EAEK,EAAe,WAAW,MAAM,aAAa,EAAG,EAAG,EAAO,GAAQ,KAC9D,GAAe,EACxB,EAAQ,EAAiC,KAChC,IAAW,GAAW,IAC3B,KAAuB,MACzB,IAAsB,SAAS,cAAc,UAAU,WAAW,OAEpE,GAAoB,OAAO,MAAQ,EACnC,GAAoB,OAAO,OAAS,EACpC,GAAoB,UAChB,EAA4B,EAAG,EAAG,EAAO,GAC7C,EAAO,GAAoB,aAAa,EAAG,EAAG,EAAO,GAAQ,MAE/D,GAAI,GACJ,GAAI,IAAgB,EAClB,EAAS,GAAI,YAAW,OACnB,CACL,GAAM,GAAY,EAAQ,EAC1B,EAAS,GAAI,YAAW,EAAY,GACpC,OAAS,GAAI,EAAG,EAAI,EAAW,IAC7B,OAAS,GAAU,EAAG,EAAU,EAAa,EAAE,EAC7C,EAAO,EAAI,EAAc,GAAW,EAAK,EAAI,EAAI,GAKvD,MAAO,IAAS,EAD2B,CAAC,EAAQ,EAAO,GACzB,SAKpC,YAAqB,EAEW,CAC9B,MAAQ,IAAU,MAAW,EAAqB,eAAgB,YAGpE,aAAoC,CAClC,MAAO,OAAO,SAAW,aACrB,MAAQ,cAAiB,aACzB,OAAO,eAAe,qBAG5B,YAA0B,EAC8C,CACtE,MAAO,IAAU,MAAQ,EAAO,QAAU,GAAK,EAAO,SAAW,EAGnE,YAAoC,EAE4B,CAC9D,MAAO,OAAiC,CAAE,aAAkB,eACxD,GAAiB,IAAW,CAAC,GAAY,GA6B/C,kBACI,EAEA,EAAc,EAAC,CACjB,GAAI,GAC+B,KAInC,GAAI,IAAM,QAAQ,wBACd,GAA2B,GAAS,CAGtC,GAAI,GAEJ,GAAI,CAKF,EAAc,KAAO,mBACjB,EAA6B,CAAC,iBAAkB,eAC7C,EAD6C,CAEpD,EAAc,KASZ,GAAe,MAAQ,EAAY,QAAU,EAAO,OACpD,EAAY,SAAW,EAAO,OAChC,EAAS,EAET,EAAS,MAGX,GAAS,EAGX,MAAO,IAAY,EAAQ,GAuB7B,kBACI,EACA,EAA0B,CAC5B,GAAI,GAAO,EAAgB,EAAK,MAAO,YACvC,GAAI,CAAE,aAAe,KAAS,CAE5B,GAAM,GAAoB,EAC1B,EAAO,GAAK,EAAmB,SAC/B,EAAkB,UAEpB,GAAI,EAAK,OAAS,GAAK,EAAK,OAAS,EACnC,KAAM,IAAI,OACN,wDAAwD,EAAK,SAEnE,GAAM,CAAC,EAAQ,GAAS,EAAK,MAAM,MAAM,EAAG,GACtC,EAAQ,EAAK,OAAS,EAAI,EAAI,EAAK,MAAM,GAE/C,GAAI,EAAQ,GAAK,IAAU,EACzB,KAAM,IAAI,OACN,0DACqB,KAG3B,GAAI,EAAK,QAAU,WAAa,EAAK,QAAU,QAC7C,KAAM,IAAI,OACN,kCAAkC,EAAK,+CAI7C,GAAM,GAAO,KAAM,GAAK,OAClB,EAAa,EAAK,QAAU,UAAY,IAAM,EAC9C,EAAQ,GAAI,mBAAkB,EAAQ,EAAS,GAErD,OAAS,GAAI,EAAG,EAAI,EAAS,EAAO,EAAE,EAAG,CACvC,GAAM,GAAO,CAAC,EAAG,EAAG,EAAG,KAEvB,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAQ,EAAK,EAAI,EAAQ,GAE/B,GAAI,EAAK,QAAU,WACjB,GAAI,EAAQ,GAAK,EAAQ,EACvB,KAAM,IAAI,OACN,mFACiC,cAE9B,EAAK,QAAU,SACpB,GAAQ,GAAK,EAAQ,KACvB,KAAM,IAAI,OACN,mFACmC,MAIvC,IAAU,EACZ,GAAK,GAAK,EAAQ,EAClB,EAAK,GAAK,EAAQ,EAClB,EAAK,GAAK,EAAQ,GAElB,EAAK,GAAK,EAAQ,EAItB,GAAM,GAAI,EAAI,EACd,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAC/B,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAC/B,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAC/B,EAAM,EAAI,GAAK,KAAK,MAAM,EAAK,IAGjC,GAAI,GAAU,KAAM,CAClB,EAAO,MAAQ,EACf,EAAO,OAAS,EAChB,GAAM,GAAM,EAAO,WAAW,MACxB,EAAY,GAAI,WAAU,EAAO,EAAO,GAC9C,EAAI,aAAa,EAAW,EAAG,GAEjC,MAAI,KAAS,GACX,EAAK,UAEA,EAGF,GAAM,IAAa,EAAG,CAAC,YAAA,KEzV9B,GAAA,GAAA,GAAA,GAAA,CAAA,mBAAA,IAAA,KAUM,YAA6B,EAAoB,EAAmB,CAExE,GAAM,GAAa,EAAO,MAAM,OAC1B,EAAc,EAAQ,MAAM,OAClC,GAAI,EAAa,EACf,KAAM,IAAI,OACN,4EACqB,MAE3B,GAAI,EAAc,EAChB,KAAM,IAAI,OACN,8EACqB,MAE3B,GAAI,EAAQ,QAAU,QACpB,KAAM,IAAI,OACN,yEACsB,EAAQ,UAEpC,GAAI,EAAQ,MAAM,EAAc,GAAK,EACnC,KAAM,IAAI,OACN,iEACG,EAAQ,MAAM,EAAc,UAAU,KAG/C,GAAI,GAAc,EAAO,SAAW,EAClC,KAAM,IAAI,OACN,mEACiB,EAAO,UAG9B,GAAM,GAAe,EAAQ,MACvB,EAAY,EAAa,EAAa,OAAS,GAIjD,EAAU,EACd,OAAS,GAAI,EAAG,EAAI,EAAa,OAAS,EAAG,EAAE,EAC7C,GAAW,EAAa,GAG1B,GAAM,GAAa,EAAO,MAEpB,EAAc,EAAa,QACjC,EAAY,MAEZ,GAAI,GAAY,EAChB,OAAS,GAAI,EAAW,EAAI,EAAY,EAAE,EACxC,GAAa,EAAW,GACxB,EAAY,KAAK,EAAW,IAG9B,GAAM,GACF,CAAC,GAAG,GAAe,EAAO,OAAO,IAAI,GAAU,EAAS,GACvD,GAAG,MAAM,EAAG,GAEjB,MAAO,CAAC,EAAa,EAAS,EAAW,GCjE3C,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,gBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,oBAAA,IAAA,KAQM,YACF,EAAiB,EAAiB,EAAe,CACnD,GAAM,GAAY,EAAQ,KAAO,EAAK,EAAQ,MAAM,EAAQ,KAAO,GAAK,EAClE,EAAY,EAAQ,KAAO,EAAK,EAAQ,KAAO,EAAI,EAEnD,EAAa,6FACyB,EAAQ,yBAC5B,EAAQ,iBAAiB,gBAC9B,oBAA2B,KAE9C,GAAI,EAAQ,KAAO,EACjB,KAAM,IAAI,OAAM,EAAa,kBAAkB,OAEjD,GAAI,EAAM,OAAS,EAAY,GAAQ,KAAO,GAC5C,KAAM,IAAI,OACN,EACA,0BAA0B,EAAY,GAAQ,KAAO,MAE3D,GAAI,EAAQ,OAAS,EAAW,EAAM,OAAS,EAC7C,KAAM,IAAI,OACN,EAAa,mBAAmB,EAAW,EAAM,OAAS,KAEhE,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,GAAI,EAAQ,MAAM,KAAO,EAAQ,MAAM,GACrC,KAAM,IAAI,OACN,EACA,kBAAkB,OAAO,EAAQ,MAAM,wBAAwB,OAC3D,EAAQ,MAAM,QAG1B,OAAS,GAAI,EAAG,EAAI,EAAQ,KAAO,EAAU,EAAE,EAC7C,GAAI,EAAQ,MAAM,EAAI,KAAc,EAAM,EAAI,GAC5C,KAAM,IAAI,OACN,EACA,kBAAkB,EAAI,OAClB,EAAQ,MAAM,EAAI,gBAAuB,EAAI,OAC7C,EAAM,EAAI,OAmBlB,YACF,EAAiB,EAAiB,EAAe,CACnD,GAAI,EAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,EAAQ,SAEnC,GAAI,EAAQ,KAAO,EACjB,KAAM,IAAI,OACN,+EACqB,EAAQ,SAEnC,GAAI,EAAQ,QAAU,QACpB,KAAM,IAAI,OAAM,0DACZ,EAAQ,SAEd,GAAI,EAAM,OAAS,EACjB,KAAM,IAAI,OACN,6DAA6D,KAGnE,GAAI,EAAM,SAAW,EAAG,CACtB,GAAI,EAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,EAAQ,SAEd,GAAI,EAAQ,OAAS,EACnB,KAAM,IAAI,OAAM,sDACZ,EAAQ,SAIhB,GAAoB,EAAO,EAAS,GAYhC,YACF,EAAqB,EACrB,EAAe,CAEjB,GAAM,GAAc,EAAQ,MAAM,OAC5B,EAAa,EAAc,EAAK,EAAQ,MAAM,EAAc,GAAK,EAKjE,EAAU,EAAM,OAElB,EAAY,EAChB,OAAS,GAAI,EAAW,EAAI,EAAS,EAAE,EACrC,GAAa,EAAM,GAGrB,GAAM,GAAgB,EAAY,EAAK,EAAI,EACrC,EAAa,GAAc,EAAQ,OAAS,EAE5C,EAAU,CAAC,GAAG,GAAe,EAAM,MAAM,EAAG,IAAa,GACzD,EAAa,GAAc,GACjC,MAAO,CAAC,UAAA,EAAW,WAAA,EAAY,UAAA,EAAW,QAAA,EAAS,WAAA,GCnJrD,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,UAAA,IAAA,GAAA,aAAA,IAAA,GAAA,2BAAA,IAAA,GAAA,YAAA,IAAA,GAAA,0BAAA,IAAA,GAAA,eAAA,IAAA,GAAA,sBAAA,IAAA,KA8BM,YACF,EAAmB,EAAiB,EAAc,CACpD,GAAM,GAAY,EAAM,MAAM,OACzB,EACD,IAAc,EAAM,OACpB,IAAM,iBAAiB,uBAA+B,uCAClB,OACnC,EACD,IAAc,EAAK,OACnB,IAAM,iBAAiB,sBAA8B,uCACjB,OAExC,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC1B,EACD,EAAM,GAAK,EAAK,IAAM,EAAM,MAAM,GAClC,IAAM,iBAAiB,aAAqB,aAAa,OACjD,EAAM,GAAK,EAAK,kCAAkC,OAChD,EAAM,MAAM,OAKxB,YAAqB,EAAY,CACrC,GAAM,GAAO,GACT,EAAO,EACX,KAAO,EAAO,GACR,EAAO,GACT,EAAK,KAAK,GAEZ,GAAQ,EACR,IAEF,MAAO,GAIH,YACF,EAAiB,EAAe,EAAiB,CACnD,GAAM,GAAO,GACb,OAAS,GAAO,EAAG,EAAO,EAAM,OAAQ,IACtC,EAAK,GAAQ,KAAK,KAAM,GAAI,GAAQ,EAAM,IAAS,EAAQ,IAE7D,MAAO,GAKH,YACF,EAAmB,EAAgC,EACnD,EAAoB,CACtB,GAAM,GAAa,CAAC,GAAG,GACvB,OAAS,GAAI,EAAW,OAAQ,EAAI,EAAW,OAAQ,IACrD,EAAW,KAAK,GAElB,OAAS,GAAI,EAAG,EAAI,EAAe,IAC7B,IAAM,EACR,EAAW,GAA0B,EAErC,GAAW,OACP,EAAwB,EACxB,GACJ,EAAW,OAGf,MAAO,GAGT,YACI,EAAgC,EAChC,EAAsB,CACxB,MAAI,IAAkB,EACb,EAGF,EAAkB,GAAgB,GAG3C,YAAuB,EAAuB,EAA8B,CAC1E,GAAM,GAAa,GACnB,OAAS,GAAI,EAAG,EAAI,EAAe,IACjC,EAAW,KAAK,EAAyB,GAE3C,MAAO,GAIH,YACF,EAAsB,EAAwB,EAC9C,EAAiB,EAAe,EAAmB,EACnD,EACA,EAAoB,CACtB,GAAM,GAAY,EAAW,OACzB,EAAkB,GAAI,OAAM,GAC5B,EAAgB,GAAI,OAAM,GAC1B,EAAoB,GAAI,OAAM,GAClC,GAAI,EAAa,QAAU,EAAsB,EAAG,CAClD,GAAM,GAAY,EAAa,GAIzB,EAAgB,EAAsB,EAC5C,EAAkB,GACd,EAAW,EAAW,EAAe,EAAO,GAChD,EAAgB,GACZ,EAAS,EAAW,EAAe,EAAK,GAC5C,EACI,GAAsB,EAAS,EAAW,EAAe,OAE7D,QAAS,GAAO,EAAG,EAAO,EAAW,IACnC,EAAgB,GAAQ,GACpB,EAAW,EAAO,EAAS,EAAY,EAAM,GACjD,EAAc,GACV,GAAY,EAAS,EAAK,EAAS,EAAY,EAAM,GACzD,EAAkB,GAAQ,GAAe,EAAS,EAAM,GAI5D,MAAO,CACL,MAAO,EACP,IAAK,EACL,QAAS,GAMP,YACF,EAAmB,EAAgC,EACnD,EAAyB,EAAoB,CAC/C,GAAM,GAAa,CAAC,GAAG,GACjB,EAAa,GAAc,EAAe,GAEhD,OAAS,GAAO,EAAG,EAAO,EAAW,OAAQ,IAC3C,GAAI,EAAW,QAAQ,GAAQ,GAC7B,EAAW,GAAQ,MACd,CACL,GAAM,GACF,GAAgB,EAAwB,EAAe,GACvD,EAAgB,EAAc,GAC9B,EAAY,GAAK,GACnB,GAAgB,GAGlB,EAAW,GAAQ,EAGvB,MAAO,GAKH,YACF,EAAiB,EAAgC,EACjD,EAAuB,EAAoB,CAC7C,GAAM,GAAa,CAAC,GAAG,GACjB,EAAa,GAAc,EAAe,GAEhD,OAAS,GAAO,EAAG,EAAO,EAAW,OAAQ,IAC3C,GAAI,EAAW,QAAQ,GAAQ,GAC7B,EAAW,GAAQ,OAAO,qBACrB,CACL,GAAM,GACF,GAAgB,EAAwB,EAAe,GACvD,EAAgB,EAAY,GAC5B,EAAU,GAAK,GACjB,GAAgB,OAAO,kBAEzB,EAAW,GAAQ,EAIvB,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,IAAK,CAE1C,GAAM,GAAW,EAAW,GACxB,EAAW,GAAK,GAClB,GAAW,IAAM,GAEnB,EAAW,GAAU,GAAM,EAAG,EAAW,GAAI,EAAW,IAE1D,MAAO,GAGH,YACF,EAAmB,EAAc,EAAoB,CACvD,GAAI,GAAS,EAAQ,GACrB,MAAI,GAAgB,GAAK,GAAS,GAAU,OAC1C,GAAS,GAGJ,EAGH,YACF,EAAmB,EAAwB,EAC3C,EAAsB,EAAc,EAAoB,CAE1D,GAAI,GAAQ,EAAa,GACnB,EAAS,EAAQ,IAAS,EAI5B,AAAA,GAAY,GAAK,GAAQ,EAAe,GAAK,GAAQ,GAAS,OAC5D,GAAS,EAIX,EAAQ,OAAO,iBAGf,EAAQ,OAAO,kBAKnB,GAAM,GAAW,EAAW,GAC5B,MAAI,GAAQ,GACV,IAAS,GAIX,EAAa,GAAM,EAAG,EAAO,EAAW,GAEjC,EAGH,YACF,EAAiB,EAAuB,EACxC,EAAsB,EAAc,EAAoB,CAE1D,GAAI,GAAO,EAAY,GACjB,EAAS,EAAQ,IAAS,EAI5B,AAAA,GAAW,GAAK,GAAS,EAAgB,GAAK,GAAS,GAAQ,OAC7D,GAAS,EAGX,EAAO,OAAO,iBAGd,EAAO,OAAO,kBAKlB,GAAM,GAAW,EAAW,GAC5B,MAAI,GAAO,GACT,IAAQ,GAMN,EAAS,EAEX,EAAY,GAAM,EAAG,EAAM,GAG3B,EAAY,GAAM,GAAI,EAAM,EAAW,GAGlC,EAOH,YACF,EAAiB,EAAiB,EAAc,CAElD,GAAI,GAAkB,EAAK,OAC3B,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,GAAI,EAAK,GAAK,EAAG,CACf,EAAkB,EAClB,MAIJ,OAAS,GAAI,EAAkB,EAAG,EAAI,EAAK,OAAQ,IACjD,GAAI,EAAM,GAAK,GAAK,EAAK,KAAO,EAAM,GACpC,MAAO,GAGX,MAAO,GAGH,YAA4B,EAAiB,EAAiB,CAClE,GAAI,GAAa,EAAM,OAAS,EAAI,EAAM,EAAM,OAAS,GAAK,EAC9D,OAAS,GAAI,EAAG,EAAI,EAAM,OAAS,EAAG,IACpC,GAAc,EAAM,GAAK,EAAQ,GAEnC,MAAO,GAGH,YACF,EAAe,EAAwB,EAAsB,CAE/D,GAAI,GACE,EAAQ,EAAE,MAAM,OAClB,MAAO,IAAU,SACnB,EAAS,CAAC,EAAO,GAAG,GAAI,OAAM,EAAQ,GAAG,KAAK,IACrC,EAAM,OAAS,EACxB,EAAS,EAAM,OAAO,GAAI,OAAM,EAAQ,EAAM,QAAQ,KAAK,IAE3D,EAAS,EAAM,QAEjB,EAAO,QAAQ,GAAI,CACZ,EACD,IAAM,GAAI,IAAM,uDAEtB,GAAI,GACJ,MAAI,IAAQ,KACV,EAAQ,GAAI,OAAM,GAAO,KAAK,IACrB,MAAO,IAAS,SACzB,EAAQ,CAAC,EAAM,GAAG,GAAI,OAAM,EAAQ,GAAG,KAAK,KACnC,EAAK,OAAS,EACvB,EAAQ,EAAK,OAAO,GAAI,OAAM,EAAQ,EAAK,QAAQ,KAAK,KAExD,EAAQ,EAEV,EAAQ,EAAM,IAAI,CAAC,EAAG,IAChB,GAAK,EACA,EAEF,GACD,IAAM,GACN,IAAM,qDACC,mCAAmC,MACvC,EAAE,MAAM,GAAK,EAAO,KAGxB,CAAC,EAAQ,GAGZ,YACF,EAAkB,EAAiB,EAAe,EAClD,EAAmB,EAAiB,EACpC,EAAqB,EAAsB,CAE7C,GAAI,GAAS,EAAM,QACf,EAAO,EAAI,QACX,EAAW,EAEX,GAAW,MACb,GAAW,GAAI,OAAM,EAAO,SAG9B,GAAM,GAAe,GAAW,GAChC,GAAI,EAAa,OAAS,EACxB,KAAM,IAAI,OAAM,8CAGlB,GAAI,IAAiB,GAAK,IAAgB,EACxC,KAAM,IAAI,OACN,iEAGN,GAAI,IAAiB,GAAK,IAAmB,EAC3C,KAAM,IAAI,OACN,oEAGN,GAAM,GAAsB,EAAO,OAAS,EAAO,OAG7C,EAAa,GAAW,GACxB,EAAW,EAAO,QACxB,EAAW,QAAQ,GAAO,CACxB,EAAO,GAAQ,EACf,EAAK,GAAQ,EACb,EAAS,OAAO,EAAM,EAAG,KAG3B,GAAM,CACJ,MAAO,EACP,IAAK,EACL,QAAS,GAEP,GACI,EAAU,EAAc,EAAqB,EAAQ,EAAM,EAC3D,EAAW,EAAS,GAC5B,EAAS,EACT,EAAO,EACP,EAAW,EAEX,GAAM,GAAa,GAAW,GAE9B,EAAW,QAAQ,GAAO,CACxB,EAAK,GAAQ,EAAO,GAAQ,EAC5B,EAAS,GAAQ,IAInB,GAAM,GAAO,GAAgB,EAAQ,EAAM,GAErC,EAAW,EAAK,OAAO,CAAC,EAAG,IAAS,EAAW,QAAQ,KAAU,IAIvE,MAAO,CAAC,WAFW,EAAS,MAAM,GAAK,IAAM,GAEzB,OAAA,EAAQ,KAAA,EAAM,SAAA,EAAU,KAAA,EAAM,SAAA,EAAU,SAAA,GC/a9D,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,cAAA,IAAA,KA8DM,GAAA,IAAA,KAA4B,CAYhC,cAAY,CACV,MAAQ,MAAK,YACR,gBAiBA,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,KAWb,GAAA,KAAuB,CAO3B,aAAA,CACE,KAAK,aAAe,SAMf,SAAM,CACX,MAAI,IAAiB,UAAY,MAC/B,IAAiB,SAAW,GAAI,KAE3B,GAAiB,eAMnB,UAAiC,EAA+B,CACrE,GAAiB,SAAS,aAAa,EAAI,WACvC,CAAC,EAAK,EAAI,cA4BZ,YACF,EAA+B,CACjC,EACI,EAAI,WAAa,KACjB,IAAM,+EAEV,EACI,MAAO,GAAI,WAAc,SACzB,IAAM,sDACF,MAAO,GAAI,WACnB,EACI,EAAI,UAAU,OAAS,EACvB,IAAM,qFAGV,GAAiB,SAAS,GC/K5B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,qBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,YAAA,IAAA,KAsBA,GAAM,IAAuB,KAChB,GAAuB,GAE9B,YACF,EACA,EAAoD,EAAgB,CACtE,MAAI,IAAW,MACb,GAAU,MAEL,GACH,EAAQ,EAAU,CAAC,EAAG,IAAM,GAAS,EAAa,EAAa,IAG/D,aAAqB,CACzB,MAAO,GAAO,QAAQ,mBAAqB,GAAK,GACA,GAGlD,YACI,EAAoB,EACpB,EAAoC,CACtC,GAAI,GAAiB,GAOrB,GANI,IAAa,IAAW,GAAa,KACvC,GAAiB,IAEf,GAAa,IAAW,GAAa,IACvC,GAAiB,IAEf,EAAgB,CAClB,GAAM,GAAQ,EAAO,YAAY,KAC3B,EAAQ,EAAS,YAAY,KAEnC,GAAI,IAAU,EACZ,KAAM,IAAI,OACN,yCAAyC,gBAC5B,KAIrB,GAAI,MAAM,QAAQ,IAAW,MAAM,QAAQ,GAAW,CACpD,GAAM,GAAc,GAAW,GACzB,EAAgB,GAAW,GACjC,GAAI,CAAC,GAAY,EAAa,GAC5B,KAAM,IAAI,OACN,0CACY,kBAA4B,MAIhD,GAAM,GACF,GAAa,GAAU,EAAS,GAAQ,GACtC,EAAe,GAAa,GAC9B,EACA,GAAQ,GAEZ,GAAI,EAAW,SAAW,EAAa,OACrC,KAAM,IAAI,OACN,yCAAyC,EAAW,uBACvC,EAAa;YACb;YACA,MAEnB,OAAS,GAAI,EAAG,EAAI,EAAa,OAAQ,EAAE,EAAG,CAC5C,GAAM,GAAI,EAAW,GACf,EAAI,EAAa,GAEvB,GAAI,CAAC,EAAU,EAAG,GAChB,KAAM,IAAI,OACN,yBAAyB,QAAQ,eAAe,QAAQ;YAC3C;YACA,OAUjB,YAA8B,EAAuB,EAAY,CACrE,IAAK,KAAK,IAAM,EAAK,OAAQ,IAAM,KAG/B,YAA4B,EAAoB,EAAoB,CACxE,GAAM,GAAM,MAAO,IAAa,UAAY,MAAO,IAAa,UACxD,MAAO,IAAa,UACxB,CAAC,GACD,EACJ,MAAI,IAAS,IAAW,GAAU,EAAoB,KAClD,GAAS,IAAa,GAAU,EAAsB,IAEjD,GAAsB,EAAQ,EAAK,CAAC,EAAG,IAAM,GAAK,GAEpD,GACH,EAAQ,EAAU,CAAC,EAAG,IAAM,GAAS,EAAa,EAAa,IAG/D,YAA6B,EAAW,EAAW,EAAgB,CAIvE,GAHI,GAAW,MACb,GAAU,MAER,CAAC,GAAS,EAAG,EAAG,GAClB,KAAM,IAAI,OAAM,8BAA8B,mBAAmB,KAIrE,YAAkB,EAAW,EAAW,EAAe,CACrD,MAAI,CAAC,SAAS,IAAM,CAAC,SAAS,GACrB,GAEL,CAAA,OAAM,IAAM,MAAM,IAAM,KAAK,IAAI,EAAI,GAAK,GAM1C,YACF,EAA6B,EAAa,EAAY,CACxD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,GAAI,EAAO,GAAK,GAAO,EAAO,GAAK,EACjC,KAAM,IAAI,OACN,sBAAsB,EAAO,WAAW,YAAc,KAK1D,YACF,EAAqB,EAAqB,CAG5C,OAAO,GAAI,cAAa,IAAS,QAAQ,GAAI,cAAa,IAItD,YAAwB,EAAqB,CAEjD,OAAS,GAAI,EAAG,EAAK,EAAgB,OAAQ,IAAK,CAChD,GAAM,GAAM,EAAE,GACV,MAAM,QAAQ,GAChB,GAAc,GAEd,EAAE,GAAK,GAAa,GAGxB,MAAO,GCpKT,GAAM,IAAU,QC6BV,aAAwB,CAC5B,IAAM,IAAI,OAAQ,IAiBd,aAAyB,CAC7B,IAAM,IAAI,QAAS,IAIf,aAAoC,CACxC,IAAM,IAAI,+BAAgC,IAC1C,QAAQ,KAAK,0DAIT,YAA0B,EAAW,CACrC,IAAM,QAAQ,iCAChB,QAAQ,KACJ,EAAM,+EAId,GAAwB,IAOlB,aAA0B,CAC9B,EAAO,mBAQH,aAAgB,CACpB,MAAO,GAwBH,aAAgB,CACpB,MAAO,GAAO,SAkCV,YAAkB,EAAqD,CAE3E,MAAO,GAAO,QAAQ,GA2ClB,WACF,EAA6B,EAAe,CAC9C,MAAO,GAAO,KAAK,EAAU,GAczB,YAAkB,EAA0B,CAChC,GAAsB,GAC9B,QAAQ,GAAU,EAAO,WAmC7B,YAAiC,EAAS,CAC9C,MAAO,GAAO,KAAK,GA4Bf,YAAe,EAAa,CAChC,MAAO,GAAO,KAAK,GAkBf,YAAqB,EAAmB,CAC5C,MAAO,GAAO,WAAW,GAUrB,aAAe,CACnB,MAAO,GAAO,QASV,aAAoB,CACxB,MAAO,GAAO,YAQV,YAAwB,EAAY,CACxC,EAAO,cAAc,GAOjB,YAAsB,EAAY,CACtC,MAAO,GAAO,YAAY,GAQtB,YAA6B,EAAY,CAE7C,MAAO,GAAO,mBAAmB,GAkB7B,YACF,EAAc,EACd,EAAW,EAAC,CACd,MAAO,GAAO,gBAAgB,EAAM,EAAS,GAWzC,aAAiB,CACrB,MAAO,GAAO,QASV,YAAsB,EAAsB,EAAkB,CAClE,IAAM,YAAY,EAAc,GC7UlC,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAoB,CAAC,EAAG,EAAI,EAAG,GAErC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCNvB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,YAC7B,EAAK,EAAgB,EAAG,IAAK,YACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAyB,CAAC,EAAG,EAAI,EAAG,GAE1C,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCZ5B,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OAGjC,GAFA,CAAC,EAAI,GAAM,GAAe,EAAI,GAE1B,EAAG,QAAU,SAAW,EAAG,QAAU,QACvC,MAAO,IAAS,EAAI,GAGtB,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GACnC,EAAQ,GAGd,MAAO,GAAO,UAAU,GAAS,EAAgC,GAG5D,GAAM,IAAM,EAAG,CAAC,KAAA,KChBvB,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAyB,CAAC,EAAG,EAAI,EAAG,GAE1C,MAAO,GAAO,UAAU,GAAU,GAE7B,GAAM,GAAM,EAAG,CAAC,KAAA,KCvBvB,YAAgC,EAAe,CAC7C,GAAM,GAAK,EAAgB,EAAG,IAAK,OAEnC,GAAI,EAAG,QAAU,YAAa,CAC5B,GAAM,GAA2B,CAAC,EAAG,GACrC,MAAO,GAAO,UAAU,GAAY,OAC/B,CACL,GAAM,GAAoB,CAAC,EAAG,GAC9B,MAAO,GAAO,UAAU,GAAK,IAI1B,GAAM,IAAM,EAAG,CAAC,KAAA,KCdvB,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCHxB,YAAkC,EAAe,CAE/C,GAAM,GAAsB,CAAC,EADlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCNzB,YAAiC,EAA4B,CACtD,EACD,MAAM,QAAQ,GACd,IAAM,8DACL,EACD,EAAQ,QAAU,EAClB,IAAM,uDACC,EAAQ,UAEnB,GAAM,GACF,EAAQ,IAAI,CAAC,EAAG,IAAM,EAAgB,EAAG,UAAU,IAAK,SAEtD,EAAc,EAAS,GAC7B,EAAS,QAAQ,GAAI,CACnB,GAAI,EAAE,QAAU,EAAY,MAC1B,KAAM,IAAI,OACN,8DAIR,EAAS,QAAQ,GAAI,CACnB,GAAI,CAAM,GAAY,EAAE,MAAO,EAAY,OACzC,KAAM,IAAI,OACN,8DAIR,GAAM,GAAqB,EAE3B,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCfxB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,MAAO,SAGpC,EAAkB,CAAC,KAAA,EAAM,SAAA,GAE/B,MAAO,GAAO,UACV,GAAK,EAAgC,GAGpC,GAAM,IAAM,EAAG,CAAC,KAAA,KCXvB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,MAAO,SAGpC,EAAkB,CAAC,KAAA,EAAM,SAAA,GAE/B,MAAO,GAAO,UACV,GAAK,EAAgC,GAIpC,GAAM,IAAM,EAAG,CAAC,KAAA,KCjBvB,YAAmC,EAAsB,EAAO,EAAC,CAG/D,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,WAG7B,EAAqB,CAAC,KAAA,GAE5B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCV1B,YAAmC,EAAsB,EAAO,EAAC,CAG/D,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,WAG7B,EAAqB,CAAC,KAAA,GAE5B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCxB1B,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCJxB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCRzB,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCFxB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAK,EAAgB,EAAG,IAAK,SACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAsB,CAAC,EAAG,EAAI,EAAG,GAEvC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCfzB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCmDnB,YACF,EACA,EAAuC,EACvC,EAA4B,EAAqB,OACjD,EAAkC,CAKpC,GAAM,GAAgB,EAAW,GAC3B,EACF,CAAC,GAAG,EAAa,GACf,EAAc,GAAwB,GAE5C,MAAO,IACH,EAAY,EAAc,EAAS,EAAW,EAC9C,KAAyB,KAAsB,GAG/C,YACF,EACA,EAAqC,EACrC,EAAoC,EACpC,EACA,EAA6C,eAAc,CAC7D,GAAM,CAAC,EAAc,GAAe,GAAgB,GAEhD,EACJ,GAAI,IAAe,eACjB,EAAc,CAAC,EAAc,EAAa,EAAQ,GAAI,EAAQ,YACrD,IAAe,gBACxB,EAAc,CAAC,EAAc,EAAa,EAAQ,GAAI,EAAQ,QAE9D,MAAM,IAAI,OAAM,sBAAsB,KAGxC,MAAO,IACH,EAAS,EAAa,EAAS,EAAW,EAAK,EAAc,GAC7D,GAMA,YACF,EACA,EACA,EACA,EAA4C,EAC5C,EACA,EAA8B,QAAO,CACvC,GAAM,CAAC,EAAa,EAAc,GAAe,GAAiB,GAE9D,EACA,EACJ,GAAI,IAAe,QACjB,EAAc,eACd,EACI,CAAC,EAAa,EAAc,EAAa,EAAQ,GAAI,EAAQ,YACxD,IAAe,QACxB,EAAc,gBACd,EACI,CAAC,EAAa,EAAc,EAAa,EAAQ,GAAI,EAAQ,QAEjE,MAAM,IAAI,OAAM,sBAAsB,KAGxC,MAAO,IACH,EAAS,EAAa,EAAS,EAAW,EAAK,GAAO,EACtD,GAOA,YACF,EACA,EACA,EAAkC,EAClC,EACA,EAAuC,EAAY,GACnD,EAA6C,eAAc,CAC7D,GAAI,CAAC,EAAW,EAAU,EAAS,GAAc,CAAC,GAAI,GAAI,GAAI,IAC9D,GAAI,IAAe,eACjB,CAAC,EAAW,EAAU,EAAS,GAAc,UACpC,IAAe,gBACxB,CAAC,EAAW,EAAY,EAAU,GAAW,MAE7C,MAAM,IAAI,OAAM,sBAAsB,KAGxC,GAAM,CAAC,EAAc,EAAY,CAAG,GAAkB,EAChD,CAAC,EAAc,GAAe,GAAgB,GAC9C,CAAC,EAAgB,GAAiB,GAAgB,GAElD,EACF,GAAuB,EAAc,GACnC,EACF,GAAuB,EAAa,GAClC,CAAC,QAAA,EAAS,UAAA,EAAW,SAAA,GAAY,GACnC,EAAK,EAAU,EAAS,EAAc,EAAa,EACnD,EAAsB,EAAc,GAElC,EAAc,EAAY,EAAiB,EAAa,EAE1D,EACJ,MAAI,KAAe,gBACjB,EAAW,CAAC,EAAW,EAAa,EAAW,GACtC,IAAe,gBACxB,GAAW,CAAC,EAAW,EAAW,EAAU,IAGvC,CACL,UAAA,EACA,WAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,YAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,sBAAA,EACA,qBAAA,EACA,eAAA,EACA,cAAA,EACA,QAAA,EACA,SAAA,EACA,YAAA,GA0CE,YACF,EACA,EACA,EACA,EAA4C,EAC5C,EAAY,GACZ,EAA6C,eAC7C,EAAqC,CACvC,GAAI,CAAC,EAAW,EAAS,EAAU,EAAS,GACxC,CAAC,GAAI,GAAI,GAAI,GAAI,IACrB,GAAI,IAAe,eACjB,CAAC,EAAW,EAAS,EAAU,EAAS,GAAc,UAC7C,IAAe,gBACxB,CAAC,EAAW,EAAY,EAAS,EAAU,GAAW,MAEtD,MAAM,IAAI,OAAM,sBAAsB,KAGxC,GAAM,CAAC,EAAa,EAAc,EAAY,CAAG,GAC7C,EACE,CAAC,EAAa,EAAc,GAAe,GAAiB,GAC5D,CAAC,EAAe,EAAgB,GAClC,GAAiB,GAEf,EACF,GAAuB,EAAa,GAClC,EACF,GAAuB,EAAc,GACnC,EACF,GAAuB,EAAa,GAClC,CAAC,QAAA,EAAS,SAAA,EAAU,UAAA,EAAW,SAAA,GAAY,GAC7C,EAAK,EAAS,EAAU,EAAS,EAAa,EAAc,EAC5D,EAAsB,EAAuB,EAC7C,GAEE,EAAc,EAAY,EAAiB,EAAa,EAE1D,EACJ,MAAI,KAAe,gBACjB,EAAW,CAAC,EAAW,EAAa,EAAU,EAAW,GAChD,IAAe,gBACxB,GAAW,CAAC,EAAW,EAAU,EAAW,EAAU,IAGjD,CACL,UAAA,EACA,WAAA,EACA,QAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,SAAA,EACA,UAAA,EACA,SAAA,EACA,YAAA,EACA,QAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,qBAAA,EACA,sBAAA,EACA,qBAAA,EACA,cAAA,EACA,eAAA,EACA,cAAA,EACA,QAAA,EACA,SAAA,EACA,YAAA,GAIJ,YACI,EAA2B,EAAmB,EAC9C,EAAkB,EAAqC,CACrD,GAAW,MACb,GAAU,GAAkB,EAAS,EAAW,IAElD,GAAM,GAAY,EAAQ,GACpB,EAAY,EAAQ,GAEpB,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GACxD,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GAE9D,MAAO,CAAC,EAAY,GAGtB,YACI,EAA2C,EAC3C,EAAqB,EAAgB,EACrC,EAAqC,CACnC,GAAW,MACb,GAAU,GAAkB,EAAS,EAAW,IAElD,GAAM,GAAa,EAAQ,GACrB,EAAY,EAAQ,GACpB,EAAY,EAAQ,GAEpB,EACF,GAAO,GAAa,EAAY,EAAI,GAAW,EAAS,EAAG,GACzD,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GACxD,EACF,GAAO,GAAY,EAAY,EAAI,GAAW,EAAS,EAAG,GAE9D,MAAO,CAAC,EAAc,EAAY,EAAY,GAG1C,YACF,EACA,EAAmB,EAAgB,EAAW,EAAC,CACjD,GAAM,GAAqB,GAAuB,EAAW,GAC7D,MAAO,MAAK,MACP,GAAW,GAAM,GAAS,GAAK,EAAS,GAAsB,GAGrE,YAAyB,EAAsB,CAC7C,MAAI,OAAO,IAAU,SACZ,CAAC,EAAO,EAAO,GAEpB,EAAM,SAAW,EACZ,CAAC,EAAM,GAAI,EAAM,GAAI,GAEvB,EAGT,YAA0B,EAAsC,CAE9D,MAAO,OAAO,IAAU,SAAW,CAAC,EAAO,EAAO,GAAS,EAc7D,YAAgC,EAAoB,EAAgB,CAClE,MAAI,IAAY,EACP,EAGF,EAAc,GAAa,GAAM,GAAW,GAGrD,YACI,EAA4C,EAC5C,EAAiB,EAAsB,EACvC,EAAsB,EACtB,EACA,EACc,CAChB,GAAI,GACA,EACA,EAEJ,GAAI,MAAO,IAAQ,SAAU,CAE3B,EAAU,CAAC,IAAK,EAAK,OAAQ,EAAK,KAAM,EAAK,MAAO,EAAK,KADxC,IAAQ,EAAK,QAAU,UAExC,GAAM,GAAW,GACb,CAAC,EAAU,GAAU,EAAc,EAAc,EAAK,GAC1D,EAAY,EAAS,GACrB,EAAW,EAAS,WACX,IAAQ,OAAQ,CACzB,EAAY,KAAK,KAAK,EAAW,GACjC,EAAW,KAAK,KAAK,EAAU,GAC/B,GAAM,GACF,KAAK,IAAI,EAAI,GAAY,GAAK,EAAe,EAAe,GAC1D,EACF,KAAK,IAAI,EAAI,GAAW,GAAK,EAAc,EAAc,GACvD,EAAM,KAAK,MAAM,EAAiB,GAClC,EAAS,EAAiB,EAC1B,EAAO,KAAK,MAAM,EAAgB,GAClC,EAAQ,EAAgB,EAC9B,EAAU,CAAC,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,MAAA,EAAO,KAAM,gBAClC,IAAQ,QACjB,EAAU,CAAC,IAAK,EAAG,OAAQ,EAAG,KAAM,EAAG,MAAO,EAAG,KAAM,SACvD,EAAY,KAAK,KAAM,GAAW,EAAe,GAAK,GACtD,EAAW,KAAK,KAAM,GAAU,EAAc,GAAK,WAC1C,MAAO,IAAQ,SAAU,CAClC,GAAM,GAAM,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GACzD,EAAS,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GAC5D,EAAO,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GAC1D,EAAQ,IAAe,eAAiB,EAAI,GAAG,GAAK,EAAI,GAAG,GAIjE,EAAU,CAAC,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,MAAA,EAAO,KAHpB,IAAQ,GAAK,IAAW,GAAK,IAAS,GAAK,IAAU,EAClE,QACA,YAEJ,EAAY,GACP,GAAW,EAAe,EAAM,GAAU,EAAe,EAC1D,GACJ,EAAW,GACN,GAAU,EAAc,EAAO,GAAS,EAAc,EAAG,OAE9D,MAAM,OAAM,8BAA8B,KAE5C,MAAO,CAAC,QAAA,EAAS,UAAA,EAAW,SAAA,GAG9B,YACI,EAA4B,EAAiB,EAC7C,EAAiB,EAAqB,EACtC,EAAqB,EAAqB,EAC1C,EAAqB,EAAqC,CAM5D,GAAI,GACA,EACA,EACA,EAEJ,GAAI,MAAO,IAAQ,SAAU,CAE3B,EAAU,CACR,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,KAAM,EACN,KARe,IAAQ,EAAK,QAAU,UAUxC,GAAM,GAAW,GACb,CAAC,EAAS,EAAU,EAAS,GAAI,EAAa,EAAG,EAAa,EAC9D,GACJ,EAAW,EAAS,GACpB,EAAY,EAAS,GACrB,EAAW,EAAS,WACX,IAAQ,OAAQ,CACzB,EAAW,KAAK,KAAK,EAAU,GAC/B,EAAY,KAAK,KAAK,EAAW,GACjC,EAAW,KAAK,KAAK,EAAU,GAC/B,GAAM,GAAiB,GAAW,GAAK,EAAc,EAAc,EAC7D,EACD,GAAY,GAAK,EAAe,EAAe,EAC9C,EAAiB,GAAW,GAAK,EAAc,EAAc,EAC7D,EAAQ,KAAK,MAAM,EAAgB,GACnC,EAAO,EAAgB,EACvB,EAAM,KAAK,MAAM,EAAiB,GAClC,EAAS,EAAiB,EAC1B,EAAO,KAAK,MAAM,EAAgB,GAClC,EAAQ,EAAgB,EAE9B,EAAU,CAAC,IAAA,EAAK,OAAA,EAAQ,KAAA,EAAM,MAAA,EAAO,MAAA,EAAO,KAAA,EAAM,KAAM,gBAC/C,IAAQ,QACjB,EAAU,CACR,IAAK,EACL,OAAQ,EACR,KAAM,EACN,MAAO,EACP,MAAO,EACP,KAAM,EACN,KAAM,SAER,EAAW,KAAK,KAAM,GAAU,EAAc,GAAK,GACnD,EAAY,KAAK,KAAM,GAAW,EAAe,GAAK,GACtD,EAAW,KAAK,KAAM,GAAU,EAAc,GAAK,OAEnD,MAAM,OAAM,8BAA8B,KAE5C,MAAO,CAAC,QAAA,EAAS,SAAA,EAAU,UAAA,EAAW,SAAA,GASxC,YAAe,EAAe,EAAqC,CACjE,GAAI,CAAC,EACH,MAAO,MAAK,MAAM,GAEpB,OAAQ,OACD,QAEH,MAAO,MAAK,MAAM,OACf,OAEH,MAAO,MAAK,KAAK,OACd,QACH,MAAO,MAAK,MAAM,WAElB,KAAM,IAAI,OAAM,wBAAwB,MAIxC,YAA4B,EAAsB,CACtD,GAAM,CAAC,EAAM,EAAM,GAAQ,GAAgB,GAC3C,MAAO,KAAS,GAAK,IAAS,GAAK,IAAS,EAGxC,YACF,EAA0B,EAA0B,CACtD,MAAO,IAAkB,IAAY,GAAkB,GAUnD,YAAkC,EAAyB,CAE/D,GAAI,IAAe,OACjB,MAAO,eACF,GAAI,IAAe,OACxB,MAAO,gBAEP,KAAM,IAAI,OAAM,sBAAsB,KC9hB1C,YACI,EAAsB,EAAkB,CAG1C,GAAM,GAAwB,CAAC,EAFpB,EAAgB,EAAG,IAAK,UAAW,sBAGxC,EAAsB,CAAC,MAAA,GAC7B,MAAO,GAAO,UACV,GAAS,EAAgC,GAExC,GAAM,GAAU,EAAG,CAAC,SAAA,KCX3B,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAAW,WACxC,EAAY,EAEb,EACS,GAA+B,EAAS,GAClD,IAAM,wEACa,oBAA0B,MAEjD,GAAI,GAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACD,EAAI,OAAS,EACb,IAAM,mDAAmD,EAAI,SAE7D,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,wEACiB,iBAA+B,MAG5D,GAAM,GAAwB,CAAC,EAAG,GAE5B,EAAsB,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAGnD,EAAM,EAAO,UACH,GAAS,EACT,GAId,MAFA,GAAM,GAAK,EAAK,EAAG,OAEf,EACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,EAGF,GAAM,IAAU,EAAG,CAAC,SAAA,KCjC3B,YACI,EAAiB,EACjB,EAA0C,EAC1C,EACA,EAA8B,QAAO,CACvC,GAAM,GAAK,EAAgB,EAAG,IAAK,YAAa,WAE5C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGnE,EACD,EAAI,OAAS,EACb,IAAM,qDAAqD,EAAI,SAC9D,EACD,IAAe,QACf,IAAM,gFACuB,KAE7B,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,0EACiB,iBAA+B,MAG5D,GAAM,GAA0B,CAAC,EAAG,GAE9B,EACe,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAG7D,EAAM,EAAO,UACH,GAAW,EACX,GAId,MAFA,GAAM,GAAK,EAAK,EAAI,OAEhB,EACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAIhE,EAGF,GAAM,IAAY,EAAG,CAAC,WAAA,KChD7B,YAAmC,EAA8B,EAAO,EAAC,CACvE,EAAO,EAAQ,QAAU,EAAG,IAAM,sCAElC,GAAM,GACF,GAAqB,EAAS,UAAW,SAAU,qBAWvD,GATI,EAAS,GAAG,QAAU,aACxB,EAAS,QAAQ,GAAS,CACxB,GAAI,EAAO,QAAU,YACnB,KAAM,IAAI,OAAM;uBACD,EAAO,aAKxB,EAAS,SAAW,EACtB,MAAO,IAAM,EAAS,IAGxB,GAAM,GAAuB,EACvB,EAAoB,CAAC,KAAA,GAE3B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCxD1B,YAAoC,EAAe,CAGjD,GAAM,GAAwB,CAAC,EAFpB,EAAgB,EAAG,IAAK,YAInC,MAAO,GAAO,UAAU,GAAS,GAE5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCgB3B,YACI,EAAiB,EAAwB,EAAsB,CACjE,GAAM,GAAK,EAAgB,EAAG,IAAK,QAAS,qBAE5C,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OAAM,kCAGlB,GAAM,GAAsB,CAAC,EAAG,GAC1B,EAAoB,CAAC,MAAA,EAAO,KAAA,GAElC,MAAO,GAAO,UACV,GAAO,EAAgC,GAGtC,GAAM,IAAQ,EAAG,CAAC,OAAA,KCtCzB,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCCxB,YACI,EAA+B,EAC/B,EAA+B,EAC/B,EAAwB,EAAsB,CAChD,GAAM,GACF,EAAgB,EAAY,aAAc,iBACxC,EACF,EAAgB,EAAY,aAAc,iBACxC,EAAY,EAAgB,EAAU,WAAY,iBAClD,EAAQ,EAAgB,EAAM,OAAQ,iBACtC,EAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAK,EAAgB,EAAG,IAAK,iBAE7B,EAAW,GAAO,CAAC,EAAO,GAAK,GAC/B,EAAW,GAAO,EAAU,GAC5B,EAAgB,GAAI,EAAU,GAG9B,EAAY,EAAI,MAAM,GACtB,EAAY,EAAI,MAAM,GAAK,EAC3B,EAA8B,CAAC,EAAW,GAC1C,EAAI,GAAM,EAAK,CAAC,EAAG,GAAI,GACvB,EAAI,GAAM,EAAK,CAAC,EAAG,GAAY,GAC/B,EAAI,GAAM,EAAK,CAAC,EAAG,EAAY,GAAI,GACnC,EAAI,GAAM,EAAK,CAAC,EAAG,EAAY,GAAI,GAEnC,EACF,GAAI,EAAI,GAAQ,GAAI,GAAK,IACrB,EAAI,EAAI,GAAQ,GAAI,EAAa,MACnC,EAAiB,EAAI,GAAK,GAAO,GAAQ,IAC/C,MAAO,CAAC,EAAM,GAGT,GAAM,IAAgB,EAAG,CAAC,eAAA,KCHjC,YACI,EAAiB,EAAsB,EAAiB,CAC1D,GAAM,GAAK,EAAgB,EAAG,IAAK,kBAC7B,EAAO,EAAW,OAAO,CAAC,EAAG,IAAM,EAAI,GAExC,EACD,EAAG,MAAQ,EAAI,EAAW,OAC1B,IAAM,iBAAiB,EAAG,+CACtB,EAAW,UAEd,EACD,EAAM,SAAW,EAAW,OAC5B,IAAM,mBACF,EAAM,oDACN,EAAW,UAEd,EACD,EAAG,MAAM,GAAK,GAAS,EACvB,IAAM,yBACI,EAAG,MAAM,wEACe,EAAW,KAAK,cAAc,KAEpE,GAAM,GAA+B,CAAC,EAAG,GACnC,EAA6B,CAAC,WAAA,EAAY,MAAA,GAEhD,MAAO,GAAO,UACV,GAAgB,EAChB,GAGC,GAAM,IAAiB,EAAG,CAAC,gBAAA,KCtF5B,YAAgC,EAAY,CAChD,GAAI,GACJ,MAAI,GAAE,OAAS,GAAK,EAAE,OAAS,EAC7B,EAAM,EAAQ,EAAG,CAAC,EAAG,EAAG,EAAG,EAAE,OACpB,EAAE,OAAS,EACpB,EAAM,EAAQ,EAAG,CAAC,EAAG,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,KACnC,EAAE,OAAS,EACpB,EAAM,EAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,KAErD,EAAM,EAGD,ECwBT,YACI,EAAyB,EACzB,EACA,EACA,EACA,EAAwB,CACtB,GAAmB,MACrB,GAAkB,MAEpB,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACA,GAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAGzC,EACD,EAAM,OAAS,EAAU,KACzB,IAAM,gFAEL,EACD,GAAW,MAAQ,EAAM,OAAS,EAAQ,KAC1C,IAAM,8EAEL,EACD,GAAU,MAAQ,EAAM,OAAS,EAAO,KACxC,IAAM,6EAKV,GAAM,GAA+B,CACnC,EAHoB,GAAM,GAI1B,MAAO,EACP,OAAQ,EACR,KAAM,EACN,SAAU,GAGN,EAA6B,CAAC,gBAAA,GAG9B,EAAM,EAAO,UACH,GAAgB,EAChB,GAEhB,MAAO,GAAQ,EAAK,EAAG,OAGlB,GAAM,IAAY,EAAG,CAAC,WAAA,KC3E7B,YACI,EAAwB,EACxB,EACA,EAAuC,EACvC,EAAwB,CAC1B,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACJ,MAAI,IAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAEzC,EACD,EAAG,OAAS,EACZ,IAAM,uDACC,EAAG,SACT,EACD,EAAM,OAAS,GAAK,EAAM,OAAS,EACnC,IAAM,oEACU,EAAM,SACrB,EACD,EAAU,OAAS,GAAK,EAAU,OAAS,EAC3C,IAAM,wEACc,EAAU,SAC9B,GAAU,MACP,EACD,EAAO,OAAS,GAAK,EAAO,OAAS,EACrC,IAAM,qEACc,EAAO,SAE7B,GAAW,MACR,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,sEACc,EAAQ,SAG3B,GAAU,EAAI,EAAO,EAAW,EAAS,EAAQ,GAGnD,GAAM,IAAc,EAAG,CAAC,aAAA,KC5C/B,YACI,EAAwB,EACxB,EACA,EAAuC,EACvC,EAAwB,CAC1B,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACJ,MAAI,IAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAEzC,EACD,EAAG,OAAS,EACZ,IAAM,uDACC,EAAG,SACT,EACD,EAAM,OAAS,GAAK,EAAM,OAAS,EACnC,IAAM,oEACU,EAAM,SACrB,EACD,EAAU,OAAS,GAAK,EAAU,OAAS,EAC3C,IAAM,wEACc,EAAU,SAC9B,GAAU,MACP,EACD,EAAO,OAAS,GAAK,EAAO,OAAS,EACrC,IAAM,qEACc,EAAO,SAE7B,GAAW,MACR,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,sEACc,EAAQ,SAG3B,GAAU,EAAI,EAAO,EAAW,EAAS,EAAQ,GAGnD,GAAM,IAAc,EAAG,CAAC,aAAA,KC5C/B,YACI,EAAwB,EACxB,EACA,EAAuC,EACvC,EAAwB,CAC1B,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAQ,EAAgB,EAAM,OAAQ,aACtC,EAAY,EAAgB,EAAU,WAAY,aACpD,EACA,GAAS,MACX,GAAS,EAAgB,EAAO,QAAS,cAE3C,GAAI,GACJ,MAAI,IAAU,MACZ,GAAU,EAAgB,EAAQ,SAAU,cAEzC,EACD,EAAG,OAAS,EACZ,IAAM,uDACC,EAAG,SACT,EACD,EAAM,OAAS,GAAK,EAAM,OAAS,EACnC,IAAM,oEACU,EAAM,SACrB,EACD,EAAU,OAAS,GAAK,EAAU,OAAS,EAC3C,IAAM,wEACc,EAAU,SAC9B,GAAU,MACP,EACD,EAAO,OAAS,GAAK,EAAO,OAAS,EACrC,IAAM,qEACc,EAAO,SAE7B,GAAW,MACR,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,sEACc,EAAQ,SAE3B,GAAU,EAAI,EAAO,EAAW,EAAS,EAAQ,GAGnD,GAAM,IAAc,EAAG,CAAC,aAAA,KCjC/B,YACI,EAAiB,EAAuB,EAAY,CACtD,GAAM,GAAK,EAAgB,EAAG,IAAK,YAC7B,EAAW,EAAgB,EAAS,UAAW,YAEhD,EACD,EAAG,QAAU,QACb,IAAM,yDAC8B,EAAG,SACtC,EAAO,GAAQ,EAAG,IAAM,sCAAsC,MAC9D,EACD,EAAS,OAAS,EAAG,MAAQ,EAAS,OAAS,EAC/C,IAAM,gGACgC,EAAG,yBAClC,EAAS,UAEpB,GAAM,GAAyB,CAAC,EAAG,EAAI,QAAS,GAC1C,EAAuB,CAAC,KAAA,GAE9B,MAAO,GAAO,UACV,GAAU,EAAgC,GAGzC,GAAM,IAAW,EAAG,CAAC,UAAA,KCzB5B,YACI,EAAsB,EAAkB,CAC1C,GAAI,GAAQ,EAAgB,EAAG,cAAe,KACxC,EAAS,EAAM,MAErB,GAAI,EAAM,KAAK,GAAK,CAAE,GAAI,IAAM,EAAI,GAAM,GACxC,KAAM,IAAI,OAAM,2CAA2C,OAG7D,GAAI,EAAM,OAAS,EAAM,KACvB,KAAM,IAAI,OAAM,+BAA+B,EAAM,uBACjD,EAAM,SAGZ,GAAI,EAAM,OAAS,EAAM,KAAM,CAC7B,GAAM,GAAW,EAAM,MAAM,QAC7B,KAAO,EAAS,OAAS,EAAM,QAC7B,EAAS,QAAQ,GAEnB,EAAQ,EAAQ,EAAO,GAGzB,GAAM,GAAa,EAAM,MACnB,EAAiB,MAAM,KAAK,GAClC,OAAS,GAAI,EAAM,OAAS,EAAG,GAAK,EAAG,IACrC,GAAI,EAAW,KAAO,EAAM,GAC1B,EAAK,GAAK,UACD,EAAM,MAAM,KAAO,EAC5B,KAAM,IAAI,OACN,mBAAmB,8BAAmC,OAK9D,GAFa,EAAK,IAAI,CAAC,EAAG,IAAM,EAAI,EAAI,EAAI,IAAI,OAAO,GAAK,GAAK,GAExD,SAAW,EAClB,MAAO,IAAM,GAIf,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,KAAA,GAC1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAc,EAAG,CAAC,aAAA,KClD/B,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCHxB,YACI,EAAiB,EAAsB,EAAoB,CAC7D,GAAM,GAAK,EAAgB,EAAG,IAAK,eAC9B,EACA,GAAgB,EACjB,IAAM,uBAAuB,yCACK,OAEtC,GAAM,GAA4B,CAAC,EAAG,GAChC,EAA0B,CAAC,aAAA,EAAc,aAAA,GAE/C,MAAO,GAAO,UACV,GAAa,EAAgC,GAG5C,GAAM,IAAc,EAAG,CAAC,aAAA,KCvB/B,YAAmB,EAAmC,CACpD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KCY5B,YACI,EAAqC,EAAY,CACnD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KCD5B,YACI,EAAqC,EAAY,CACnD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KC5B5B,YACI,EAAqC,EAAY,CACnD,MAAO,IAAO,EAAS,GAGlB,GAAM,IAAW,EAAG,CAAC,UAAA,KC0B5B,YACI,EAAiB,EACjB,EACA,EACA,EAA4B,OAC5B,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACD,EAAQ,OAAS,EACjB,IAAM,wDACC,EAAQ,SACf,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,uEACiB,iBAA+B,MAG5D,GAAM,GAAU,IAAe,OAAS,EAAI,MAAM,GAAK,EAAI,MAAM,GAC5D,EACD,IAAY,EAAQ,MAAM,GAC1B,IAAM,oCAAoC,wCACZ,EAAQ,MAAM,OAC3C,EACS,GAA+B,EAAS,GAClD,IAAM,uEACa,oBAA0B,MAEjD,GAAM,GAAuB,CAAC,EAAG,EAAK,OAAQ,GACxC,EACY,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,GAGlD,EAAM,EAAO,UACH,GAAQ,EACR,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAS,EAAG,CAAC,QAAA,KChE1B,YACI,EAAiB,EAA6B,EAC9C,EACA,EAA0B,MAAO,EAAW,EAC5C,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,MAGzC,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACD,EAAQ,OAAS,EACjB,IAAM,wDACC,EAAQ,SACf,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,uEACiB,iBAA+B,MAGvD,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,oCAAoC,EAAI,MAAM,yCACtB,EAAQ,MAAM,OAC3C,EACS,GAA+B,EAAQ,GACjD,IAAM,oEACY,mBAAwB,MACzC,EACD,IAAe,MACf,IAAM,sCACF,0CAER,GAAM,GAAW,EACb,EAAS,CAAC,EAAG,EAAQ,MAAM,GAAI,EAAQ,MAAM,GAAI,EAAQ,MAAM,KAC7D,EAAU,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAG,EAAI,MAAM,GAAI,EAAI,MAAM,KAMjE,EAAM,GACP,EAAuB,EANM,CAAC,EAAG,GAMsB,EAHnC,OAFW,CAAC,EAAG,GAMP,GAEjC,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,KAGxC,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,GAAM,IAAS,EAAG,CAAC,QAAA,KChE1B,YACI,EAAmE,EACnE,EAAkB,EAClB,EACA,EAA4B,OAC5B,EAAwC,CACrC,EACD,EAAO,SAAW,EAAG,KACrB,IAAM,sBACE,EAAO,2BAA2B,EAAG,oBAEjD,GAAI,GAAW,EACX,EAAO,EACP,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,KAC1D,EAAW,CAAC,EAAG,EAAO,GAAI,EAAO,GAAI,EAAO,KAGzC,EACD,EAAS,SAAW,EACpB,IACI,qEACG,EAAS,WACf,EACD,EAAK,OAAS,EACd,IAAM,4DACM,EAAK,QAChB,EACD,EAAO,OAAS,EAChB,IAAM,gEACM,EAAO,QACvB,GAAM,GAAU,IAAe,OAAS,EAAS,GAAK,EAAS,GACzD,EAAW,IAAe,OAAS,EAAK,MAAM,GAAK,EAAK,MAAM,GAC/D,EACD,IAAY,EAAO,MAAM,GACzB,IAAM,4CAA4C,wCACd,EAAO,MAAM,OAChD,EACD,IAAa,EAAO,MAAM,GAC1B,IAAM,6CAA6C,yCACd,EAAO,MAAM,OAClD,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,+EACiB,iBAA+B,MAG5D,GAAM,GAAoC,CAAC,GAAI,EAAM,OAAA,GAE/C,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,EAAiB,WAAY,GAGtD,EAAM,EAAO,UACH,GAAqB,EACrB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAsB,EAAG,CAAC,qBAAA,KC1EvC,YACI,EAAiB,EACjB,EACA,EAAkC,EAClC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAElD,MAAO,IACH,EAAa,EAAI,EAAS,EAAS,EAAK,OAAQ,GAG/C,GAAM,IAAkB,EAAG,CAAC,iBAAA,KCMnC,YACI,EAAiB,EACjB,EAA0C,EAC1C,EAA8B,QAC9B,EAA6C,CAAC,EAAG,EAAG,GAAE,CACxD,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEnE,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACD,EAAQ,OAAS,EACjB,IAAM,wDACC,EAAQ,SACd,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,oCAAoC,EAAI,MAAM,yCACtB,EAAQ,MAAM,OAC3C,EACD,GAA+B,EAAS,GACxC,IAAM,uEACa,oBAA0B,MAC5C,EACD,IAAe,QACf,IAAM,sCACF,4CAER,GAAM,GAAuB,CAAC,EAAG,EAAK,OAAQ,GAExC,EAAqB,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,GAGhD,EAAM,EAAO,UACH,GAAQ,EACR,GAEhB,MAAI,GACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGhE,EAGF,GAAM,IAAS,EAAG,CAAC,QAAA,KCrE1B,YACI,EAGA,EAAO,EAAkB,EACzB,EAAmB,CAChB,EACD,EAAO,SAAW,EAAG,KACrB,IAAM,sBACE,EAAO,2BAA2B,EAAG,oBAEjD,GAAI,GAAW,EACX,EAAO,EACP,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,KACvE,EAAW,CAAC,EAAG,EAAO,GAAI,EAAO,GAAI,EAAO,GAAI,EAAO,KAGzD,GAAM,GAAU,EAAS,GACnB,EAAW,EAAK,MAAM,GACvB,EACD,EAAS,SAAW,EACpB,IACI,qEACG,EAAS,WACf,EACD,EAAK,OAAS,EACd,IAAM,4DACM,EAAK,QAChB,EACD,EAAO,OAAS,EAChB,IAAM,gEACM,EAAO,QAClB,EACD,IAAY,EAAO,MAAM,GACzB,IAAM,4CAA4C,wCACd,EAAO,MAAM,OAChD,EACD,IAAa,EAAO,MAAM,GAC1B,IAAM,6CAA6C,yCACd,EAAO,MAAM,OAEtD,GAAM,GAAsC,CAAC,GAAI,EAAM,OAAA,GAEjD,EAC2B,CAAC,IAAA,EAAK,QAAA,EAAS,WAAY,GAGtD,EAAM,EAAO,UACH,GAAuB,EACvB,GAEhB,MAAI,GACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGhE,EAGF,GAAM,IAAsB,EAAG,CAAC,qBAAA,KChEvC,YACI,EAAiB,EACjB,EAGA,EAA0C,EAAmB,CAC/D,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAElD,MAAO,IAAoB,EAAa,EAAI,EAAS,EAAS,GAGzD,GAAM,IAAkB,EAAG,CAAC,iBAAA,KChBnC,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCPvB,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCMxB,YACI,EAAsB,EAAO,EAAG,EAAY,GAAO,EAAU,GAAK,CAGpE,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,WAG7B,EAAqB,CAAC,KAAA,EAAM,UAAA,EAAW,QAAA,GAE7C,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAS,EAAG,CAAC,QAAA,KCd1B,YACI,EAAiB,EAAuB,EACxC,EAAe,GAAK,CACtB,GAAM,GAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAW,EAAgB,EAAS,UAAW,iBAEhD,EACD,EAAG,QAAU,QACb,IAAM,8DAC8B,EAAG,SACtC,EACD,EAAG,MAAQ,EACX,IAAM,sEACM,EAAG,SACd,EAAO,GAAQ,EAAG,IAAM,sCAAsC,MAC9D,EACD,EAAS,OAAS,EAAG,MAAQ,EAAS,OAAS,EAC/C,IACI,+FAC8B,EAAG,yBAC9B,EAAS,UAEpB,GAAM,GAA8B,CAAC,EAAG,EAAI,QAAS,GAC/C,EAA4B,CAAC,KAAA,EAAM,aAAA,GAEzC,MAAO,GAAO,UACV,GAAe,EACf,GAGC,GAAM,IAAgB,EAAG,CAAC,eAAA,KCZjC,YACI,EAA0B,EAC1B,EAA4B,OAAM,CACpC,GAAM,GAAK,EAAgB,EAAG,IAAK,gBAE7B,EAAe,IAAe,OAAU,EAAG,MAAM,GAAK,EAAG,MAAM,GAC/D,EAAc,IAAe,OAAU,EAAG,MAAM,GAAK,EAAG,MAAM,GAC9D,EAAc,IAAe,OAAU,EAAG,MAAM,GAAK,EAAG,MAAM,GAE/D,EACD,EAAc,GAAa,EAC3B,IAAM;MACN,SAAmB;MACnB,EAAG,SAEF,EACD,EAAa,GAAa,EAC1B,IAAM;MACN,SAAkB;UACd,EAAG,SAEN,EACA,EAAc,GAAY,IAAe,EAC1C,IAAM,8CACF,EAAY,YACZ,uCAAgD,EAAG,SAE3D,GAAM,GAA6B,CAAC,EAAG,GACjC,EAA2B,CAAC,UAAA,EAAW,WAAA,GAE7C,MAAO,GAAO,UACV,GAAc,EACd,GAGC,GAAM,IAAe,EAAG,CAAC,cAAA,KC3BhC,YACI,EAAiB,EACjB,EAAkC,EAClC,EAA4B,OAC5B,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAE9C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEtD,EACD,EAAI,OAAS,EACb,IAAM,gEACM,EAAI,SACf,EACD,EAAQ,OAAS,EACjB,IAAM,iEACC,EAAQ,SACd,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,uDACE,EAAI,MAAM,qDACJ,EAAQ,MAAM,OAE5B,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,gFACiB,iBAA+B,MAG5D,GAAM,GAAsC,CAAC,EAAG,EAAK,OAAQ,GACvD,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,GAGpC,EAAM,EAAO,UACH,GAAuB,EACvB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAkB,EAAG,CAAC,iBAAA,KC9EnC,YAAe,EAAS,CAGtB,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCMxB,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAqC,CAAC,EAAG,GACzC,EAAqB,OAAM,CAC7B,GAAM,GAAK,EAAgB,EAAG,IAAK,cAC7B,EAAU,EAAgB,EAAQ,SAAU,cAE7C,EACD,EAAG,OAAS,GAAK,EAAG,OAAS,EAC7B,IAAM,gEACC,EAAG,SACT,EACD,EAAQ,OAAS,EACjB,IAAM,4DACC,EAAQ,SACd,EACD,IAAe,OACf,IAAM,gFACuB,KAEjC,GAAI,GAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,KACzD,EAAe,IAGjB,GAAM,GAA2B,CAAC,EAAG,EAAK,OAAQ,GAC5C,EAAyB,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAGxC,EAAM,EAAO,UACH,GAAY,EACZ,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,EAGF,GAAM,IAAa,EAAG,CAAC,YAAA,KC9ExB,YACF,EAAmB,EAAkB,CACvC,GAAM,GAAS,EAAQ,OACjB,EAAiB,GACvB,OAAS,GAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,GAAM,GAAM,EAAS,EAAI,EACnB,EAAI,EAAQ,IAAQ,EAChB,AAAA,GAAS,EAAS,OAAS,EAAI,IAAM,GACvC,GAAK,IAAM,GACjB,EAAK,QAAQ,GAGjB,MAAO,GAOH,YACF,EAAmB,EAAkB,CACvC,GAAM,GAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACxC,GAAM,GAAQ,EAAQ,EAAQ,OAAS,EAAI,GACrC,EAAU,EAAS,OAAS,EAAI,EAChC,EAAS,EAAS,GACpB,AAAA,IAAS,MAAS,IAAU,GAAK,EAAS,IAC5C,EAAO,QAAQ,GAGnB,MAAO,GAGH,YACF,EAAkB,EAAgB,CACpC,GAAM,GAAmB,GACnB,EAAI,KAAK,IAAI,EAAO,OAAQ,EAAO,QAEzC,OAAS,GAAI,EAAG,EAAI,EAAG,IAAK,CAC1B,GAAI,GAAI,EAAO,EAAO,OAAS,EAAI,GAC/B,GAAK,MACP,GAAI,GAEN,GAAI,GAAI,EAAO,EAAO,OAAS,EAAI,GAInC,GAHI,GAAK,MACP,GAAI,GAEF,IAAM,EACR,EAAO,QAAQ,WACN,IAAM,EACf,EAAO,QAAQ,WACN,IAAM,EAAG,CAClB,GAAM,GAAS,wDACR,SAAc,KACrB,KAAM,OAAM,OAEZ,GAAO,QAAQ,GAGnB,MAAO,GC3CT,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAK,EAAgB,EAAG,IAAK,SACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAsB,CAAC,EAAG,EAAI,EAAG,GAEvC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCHzB,YACI,EAA8B,EAAiB,EAAe,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAK,EAAgB,EAAG,IAAK,SAC7B,EAAa,EAAgB,EAAW,YAAa,QAAS,QAI9D,EAAiB,GAA2B,EAAG,MAAO,EAAG,OACzD,EAAgB,GAAY,EAAI,GAChC,EAAgB,GAAY,EAAI,GAClC,EAAW,OAAS,GAGtB,EACI,EAAW,MAAM,KAAO,EAAG,MAAM,GACjC,IAAM,kEAGR,EAAW,OAAS,GAEtB,GACI,EAAW,MAAO,EAAc,MAAO,oBAG7C,GAAM,GAAuB,CAC3B,UAAW,EACX,EAAG,EACH,EAAG,GAEL,MAAO,GAAO,UAAU,GAAQ,GAG3B,GAAM,IAAQ,EAAG,CAAC,OAAA,KC9CzB,YAAsC,EAAe,CAEnD,GAAM,GAA0B,CAAC,EADtB,EAAgB,EAAG,IAAK,cAEnC,MAAO,GAAO,UAAU,GAAW,GAE9B,GAAM,IAAY,EAAG,CAAC,WAAA,KCc7B,YACI,EAAsB,EAAoB,CAE5C,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAY,GAAI,EAAI,GACpB,EAAQ,GAAU,GAClB,EAAc,GAAM,EAAI,GAC9B,MAAO,IAAM,EAAa,EAAO,GAG5B,GAAM,IAAW,EAAG,CAAC,UAAA,KC5B5B,YAAc,EAAuB,EAAqB,CACxD,GAAM,GAAM,EAAgB,EAAI,KAAM,OAChC,EAAM,EAAgB,EAAI,KAAM,OAEjC,EACA,GAAI,OAAS,GAAK,EAAI,OAAS,IAAO,GAAI,OAAS,GAAK,EAAI,OAAS,GACtE,IAAM,+DACC,EAAI,YAAY,EAAI,SAE/B,GAAM,GAAW,EAAI,OAAS,EAAI,EAAI,KAAO,EAAI,MAAM,GACjD,EAAW,EAAI,OAAS,EAAI,EAAI,KAAO,EAAI,MAAM,GAOvD,GALK,EACD,IAAY,EACZ,IAAM,gEACC,SAAe,MAEtB,EAAI,OAAS,GAAK,EAAI,OAAS,EAAG,CACpC,GAAM,GAAO,EAAQ,EAAK,CAAC,EAAG,KACxB,EAAO,EAAQ,EAAK,CAAC,GAAI,IACzB,EAAO,GAAO,EAAM,GAC1B,MAAO,GAAQ,EAAM,YACZ,EAAI,OAAS,GAAK,EAAI,OAAS,EAAG,CAC3C,GAAM,GAAO,EAAQ,EAAK,CAAC,EAAG,KACxB,EAAO,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,KAC7C,EAAO,GAAO,EAAM,GAC1B,MAAO,GAAQ,EAAM,CAAC,EAAK,eAClB,EAAI,OAAS,GAAK,EAAI,OAAS,EAAG,CAC3C,GAAM,GAAO,EAAQ,EAAK,CAAC,GAAI,IACzB,EAAO,GAAO,EAAK,GACzB,MAAO,GAAQ,EAAM,CAAC,EAAK,WACtB,CACL,GAAM,GAAO,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,KAEnD,MADa,IAAO,EAAK,IAKtB,GAAM,IAAM,EAAG,CAAC,KAAA,KC3CvB,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCLvB,YAAgC,EAAe,CAC7C,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC5B,EACD,EAAG,QAAU,SAAW,EAAG,QAAU,UACrC,IAAM,6CAEN,EAAG,QAAU,SACf,GAAK,GAAK,EAAI,YAGhB,GAAM,GAAoB,CAAC,EAAG,GAC9B,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KChBvB,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAGnC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCAvB,YAAuC,EAAsB,EAAO,EAAC,CACnE,GAAM,GAAK,EAAgB,EAAG,IAAK,aAAc,qBAE5C,EAAO,GAAQ,EAAG,KAAM,IAAM,sCAEnC,GAAM,GAA2B,CAAC,MAAO,GACnC,EAAyB,CAAC,IAAK,GAErC,MAAO,GAAO,UACV,GAAY,EAAgC,GAG3C,GAAM,IAAa,EAAG,CAAC,YAAA,KCjB9B,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCQzB,YAAiC,EAAiB,EAAc,CAC9D,GAAM,GAAK,EAAgB,EAAG,IAAK,OAAQ,qBACtC,EACD,EAAG,OAAS,EAAK,OACjB,IAAM,qCAAqC,EAAG,kCACb,MAErC,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,KAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EACN,GAGC,GAAM,IAAO,EAAG,CAAC,MAAA,KC5BxB,YACI,EAAiB,EACjB,EAKA,EAAkB,UAAS,CACzB,GAAc,MAChB,GAAa,GAEf,GAAM,GAAO,GAAO,CAAC,EAAS,GAAa,GACrC,EAAI,GAAW,EAAa,EAAU,EAC5C,OAAS,GAAI,EAAG,EAAI,EAAG,EAAE,EACvB,EAAK,IAAI,EAAG,EAAG,GAEjB,GAAM,GAAgB,EAAQ,EAAK,WAAY,CAAC,EAAS,IACzD,GAAI,GAAc,KAChB,MAAO,GAEP,GAAI,EAAW,SAAW,EACxB,MAAO,IAAK,GAAW,EAAK,GAAI,CAAC,EAAW,GAAI,EAAG,IAC9C,GAAI,EAAW,SAAW,EAE/B,MAAO,IACI,GAAW,GAAW,EAAK,GAAI,GAC/B,CAAC,EAAW,GAAI,EAAW,GAAI,EAAG,IACxC,GAAI,EAAW,SAAW,EAE/B,MAAO,IAAK,GAAW,GAAW,GAAW,EAAK,GAAI,GAAI,GAAI,CACrD,EAAW,GAAI,EAAW,GAAI,EAAW,GAAI,EAAG,IAGzD,KAAM,IAAI,OACN,qEAE8B,EAAmB,YAKpD,GAAM,IAAM,EAAG,CAAC,KAAA,KC5CvB,YACI,EAAoB,EAAsB,EAAgB,CAC5D,GAAM,GAAmB,CAAC,MAAA,EAAO,MAAA,EAAO,MAAA,GAExC,MAAO,GAAO,UAAU,GAAM,GAAI,GCJpC,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCUzB,YACI,EAAiB,EAA4B,EAAO,EAAG,EAAY,EAAC,CACtE,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAW,EAAgB,EAAS,UAAW,SAAU,SAEzD,EAAyB,CAAC,EAAG,EAAI,QAAS,GAC1C,EAAuB,CAAC,KAAA,EAAM,UAAA,GAEpC,MAAO,GAAO,UACV,GAAU,EAAgC,GAGzC,GAAM,IAAS,EAAG,CAAC,QAAA,KCvB1B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAK,EAAgB,EAAG,IAAK,WACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GAEzC,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCb3B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,gBAC7B,EAAK,EAAgB,EAAG,IAAK,gBACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA6B,CAAC,EAAG,EAAI,EAAG,GAE9C,MAAO,GAAO,UAAU,GAAc,GAGjC,GAAM,IAAe,EAAG,CAAC,cAAA,KCjBhC,YAAiC,EAAmB,CAGlD,GAAM,GAAqB,CAAC,MAFb,EAAgB,EAAO,QAAS,SAG/C,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCPxB,YAAqC,EAAe,CAGlD,GAAM,GAAyB,CAAC,EAFrB,EAAgB,EAAG,IAAK,aAInC,MAAO,GAAO,UAAU,GAAU,GAE7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCP5B,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCPzB,YAAkC,EAAe,CAE/C,GAAM,GAAsB,CAAC,EADlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCAzB,YAAsC,EAAiB,EAAQ,GAAG,CAGhE,GAAM,GAA0B,CAAC,EAFtB,EAAgB,EAAG,IAAK,cAG7B,EAAwB,CAAC,MAAA,GAE/B,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KCb7B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,QAC7B,EAAK,EAAgB,EAAG,IAAK,QACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAqB,CAAC,EAAG,EAAI,EAAG,GAEtC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCZxB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAK,EAAgB,EAAG,IAAK,aACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA0B,CAAC,EAAG,EAAI,EAAG,GAE3C,MAAO,GAAO,UAAU,GAAW,GAG9B,GAAM,IAAY,EAAG,CAAC,WAAA,KCrBvB,YAAmB,EAAe,EAAc,EAAW,CAC/D,GAAI,GAAO,EACT,KAAM,IAAI,OAAM,4CAGlB,GAAM,GAAuB,CAAC,MAAA,EAAO,KAAA,EAAM,IAAA,GAC3C,MAAO,GAAO,UAAU,GAAU,GAAI,GCIxC,YACI,EAAiB,EAAc,EAAG,EAAO,EAAG,EAAQ,EAAG,EAAO,GAAG,CACnE,GAAM,GAAK,EAAgB,EAAG,IAAK,8BAC9B,EACD,EAAG,OAAS,GAAK,EAAG,OAAS,EAC7B,IAAM;sBACU,EAAG,SAClB,EACI,GAAM,GACX,IAAM,2FAC6B,MAEvC,GAAI,GAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAG3D,GAAM,GAAoB,CAAC,EAAG,GAExB,EAAkB,CAAC,YAAA,EAAa,KAAA,EAAM,MAAA,EAAO,KAAA,GAG7C,EAAM,EAAO,UACH,GAAK,EACL,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEpD,EAIJ,GAAM,IAA6B,EAAG,CAAC,4BAAA,KCzC9C,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAGnC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCLvB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCazB,YAAc,EAAwB,CAEpC,MAAK,GACI,GAAW,GAAI,IAAM,8CACvB,CAAC,EAAsB,IAAkC,CAE9D,GAAM,GAAK,EAAgB,EAAG,IAAK,UAAW,qBACxC,EACD,GAAM,KAAQ,EAAgB,EAAI,KAAM,WAAa,KAC1D,MAAO,GAAO,KAAK,IAAK,CACtB,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,IAAM,EAAE,GAAK,CAAC,GAAK,GAC3D,MAAI,IAAO,MACJ,GACD,EAAM,MAAO,EAAI,MACjB,kFAGN,GAAW,GACJ,EAAM,MAkCnB,YAAe,EAAgC,CAE7C,MAAK,GACI,GAAW,GAAI,IAAM,+CACvB,CAAC,EAAgC,IAAoC,CACrE,EACD,MAAM,QAAQ,GACd,IAAM,oFAGV,GAAM,GACF,GAAqB,EAAM,OAAQ,WAAY,qBAC7C,EACD,GAAM,KAAQ,EAAgB,EAAI,KAAM,YAAc,KAC3D,MAAO,GAAO,KAAK,IAAK,CACtB,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,IAAM,EAAE,GAAG,GAAQ,EAAO,GAClE,MAAI,IAAO,MACJ,GACD,EAAM,MAAO,EAAI,MACjB,iGAGN,GAAW,GACJ,KA8Bb,YAA0D,EAAc,CAKtE,MAAK,GACI,GAAW,GAChB,IAAM,sDACH,CAAC,EAAM,IAAU,CACjB,EACD,YAAa,IACb,IAAM,uDACL,EACD,GAAM,MAAQ,YAAc,IAC5B,IAAM,4DACV,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,IAAM,EAAE,GAAI,CAAC,GAAI,GACzD,MAAA,IAAW,GACJ,CAAC,KAAM,EAAM,GAAS,MAAA,IAmCjC,YAAyC,EAA2B,CAKlE,MAAK,GACI,GAAW,GAChB,IAAM,uDACH,CAAC,EAAgB,IAAU,CAC3B,EACD,MAAM,QAAQ,IAAS,EAAK,MAAM,GAAO,YAAe,KACxD,IAAM,sEAEL,EACD,GAAM,MAAQ,YAAc,IAC5B,IAAM,gEACV,GAAM,GAAM,EAAO,UAAU,IAAM,EAAE,GAAG,GAAO,EAAM,GACrD,MAAI,IAAM,MACH,GACD,EAAI,MAAM,MAAO,EAAG,MACpB,yGAGN,GAAW,EAAI,OACR,GAkCX,YAAuB,EAAiB,EAAoB,CAErD,EACI,GAAW,GAChB,IAAM,uDACL,EACD,GAAW,MACP,MAAM,QAAQ,IAAY,EAAQ,MAAM,GAAK,YAAa,KAC9D,IACI,iFAGR,GAAM,GAAmB,GAAW,KACpC,GAAI,CAAC,EAAkB,CAErB,EAAU,GACV,OAAW,KAAW,GAAO,oBAC3B,EAAQ,KAAK,EAAO,oBAAoB,IAI5C,GAAM,GACF,EAAmB,EAAQ,OAAO,GAAY,CAAC,EAAS,WAAa,KAGnE,EAAmB,EAAQ,OACjC,EAAU,EAAQ,OAAO,GAAY,EAAS,WACzC,EACD,EAAQ,OAAS,EACjB,IAAM,gGAC+B,6BAGzC,GAAM,GAAmB,GACnB,CAAC,MAAA,EAAO,MAAA,GAAS,EAAO,UAAU,EAAG,EAAS,KAAM,GAErD,EACD,EAAM,KAAK,GAAK,GAAK,MACrB,IAAM,gMAGL,EACD,EAAM,OAAS,EACf,IAAM,iFACiB,EAAM,eAEjC,GAAM,GAA6B,GACnC,MAAA,GAAQ,QAAQ,CAAC,EAAG,IAAK,CACnB,EAAM,IAAM,MACd,GAAW,EAAE,MAAQ,EAAM,MAG3B,GAAyB,MAG3B,EAAsB,QAAQ,GAAK,EAAW,EAAE,MAAQ,MAEnD,CAAC,MAAA,EAAO,MAAO,GA2CxB,YAAsC,EAAwB,CAE5D,MAAO,GAAO,WAAW,GAG3B,YAAoB,EAAe,CAEjC,GADyB,EAAM,OAAO,GAAK,GAAK,MAAM,OAC/B,EACrB,KAAM,IAAI,OACN;sECvVR,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAGnC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCPvB,YAAqC,EAAe,CAGlD,GAAM,GAAyB,CAAC,EAFrB,EAAgB,EAAG,IAAK,aAGnC,MAAO,GAAO,UAAU,GAAU,GAE7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCH5B,YAAuC,EAAe,CACpD,GAAM,GAAK,EAAgB,EAAG,IAAK,cAkBnC,MAbiB,IAAY,GAUpB,EAAC,MANM,GAAI,GAAS,GAAI,KAMhB,SAJG,GACH,EAAI,EAAI,GAAQ,GAAI,QAMrB,GAEX,GAAM,IAAa,EAAG,CAAC,YAAA,KCN9B,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAG7B,EAAkB,CAAC,iBAAkB,EAAM,SAAA,GAEjD,MAAO,GAAO,UACV,GAAK,EAAgC,GAGpC,GAAM,IAAM,EAAG,CAAC,KAAA,KClBvB,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAoB,CAAC,EAAG,EAAI,EAAG,GAErC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCFvB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CACtE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAG,QAAU,QACf,GAAK,GAAK,EAAI,UAGhB,GAAM,GAAoB,CAAC,EAAG,GACxB,EAAkB,CAAC,KAAA,EAAM,SAAA,GAE/B,MAAO,GAAO,UACV,GAAK,EAAgC,GAGpC,GAAM,IAAM,EAAG,CAAC,KAAA,KCjBvB,YAAuC,EAAsB,EAAO,GAAE,CACpE,GAAM,GAAU,EAAgB,EAAQ,SAAU,cAKlD,GAHI,IAAS,IACX,GAAO,EAAQ,KAAO,GAEpB,IAAS,EAAQ,KAAO,EAC1B,KAAM,OACF,gFACmB,EAAQ,qBAAqB,KAgCtD,MAjBiB,IAAW,CAAC,EAAgB,IAAsB,CACjE,GAAM,GAAW,GACX,EAAO,GAAI,EAAQ,EAAM,IACzB,EAAU,GAAI,EAAQ,GACtB,EACF,GAAI,GAAK,EAAS,WAAY,GAAI,GAAI,GAAI,GAAU,EAAM,KAC9D,MAAA,GAAK,CAAC,IAQC,CAAC,MAAA,EAAO,SANE,CAAC,EAAY,IAAmB,CAC/C,GAAM,CAAC,GAAS,EACV,EAAW,GACX,EAAU,GAAI,GACpB,MAAO,IAAI,EAAI,EAAI,GAAI,EAAI,EAAM,GAAW,QAKhC,GAUX,GAAM,IAAa,EAAG,CAAC,YAAA,KClFxB,YAA+B,EAAgB,EAAY,CAC/D,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EACjC,GAAI,EAAK,EAAK,OAAS,EAAI,KAAO,EAAO,EAAI,EAC3C,MAAO,GAGX,MAAO,GAGH,YACF,EAAqB,EAAqB,EAAc,CAC1D,GAAM,GAAO,EAAU,OAAS,EAAU,OACpC,EAAM,GACR,EAAS,EACT,EAAY,EACd,OAAS,GAAM,EAAG,EAAM,EAAM,IAC1B,EAAK,QAAQ,KAAS,GACxB,EAAI,KAAK,EAAU,MAEnB,EAAI,KAAK,EAAU,MAGvB,MAAO,GAGH,YACF,EAAkB,EAAc,CAClC,GAAM,GAAW,GACX,EAAO,EAAO,OACpB,OAAS,GAAM,EAAG,EAAM,EAAM,IACxB,EAAK,QAAQ,KAAS,IACxB,EAAS,KAAK,EAAO,IAGzB,GAAM,GAAc,EAAK,IAAI,GAAO,EAAO,IAC3C,MAAO,CAAC,EAAU,GAGd,YACF,EAAiB,EAAc,CACjC,GAAM,GAAiB,EAAK,IAAI,GAAK,GACrC,MAAO,IAAiB,EAAO,EAAgB,GAG3C,YACF,EAAa,EAAgB,EAAY,CACtC,EACD,GAAqB,EAAM,GAC3B,IAAM,GAAG,qDACO,cAAiB,YAQjC,YAA6B,EAAgB,EAAY,CAE7D,GAAI,GAAqB,EAAM,GAC7B,MAAO,MAET,GAAM,GAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAM,EAAE,EACtB,EAAK,QAAQ,KAAO,IACtB,EAAO,KAAK,GAGhB,MAAA,GAAK,QAAQ,GAAQ,EAAO,KAAK,IAC1B,EAIH,YAAiC,EAAc,CACnD,MAAO,GAAK,IAAI,CAAC,EAAM,IAAM,CAAC,EAAG,IAC5B,KAAK,CAAC,EAAG,IAAM,EAAE,GAAK,EAAE,IACxB,IAAI,GAAK,EAAE,IAGZ,YAA2B,EAAiB,EAAY,CAC5D,GAAM,GAAgB,GACtB,OAAS,GAAI,EAAO,EAAS,EAAI,EAAM,EAAE,EACvC,EAAI,KAAK,GAEX,MAAO,GC9CT,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CACtE,GAAM,GAAK,EAAgB,EAAG,IAAK,aAE7B,EAAO,GAAe,EAAM,EAAG,OAC/B,EAAO,GAAI,EAAI,EAAM,IACrB,EAAI,GAAI,EAAI,GACZ,EAAI,GAAI,GACR,EAAI,GAAI,EAAG,GACX,EAAI,GAAI,GACR,EAAM,GAAI,EAAQ,EAAM,EAAE,OAAQ,GAExC,GAAI,EAAU,CACZ,GAAM,GAAW,GAAqB,EAAI,MAAO,GACjD,MAAO,GAAQ,EAAK,GAEtB,MAAO,GAGF,GAAM,IAAY,EAAG,CAAC,WAAA,KCvC7B,YACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,aAAc,QAC3C,EAAK,EAAgB,EAAG,IAAK,aAAc,QACjD,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA2B,CAAC,EAAG,EAAI,EAAG,GAE5C,MAAO,GAAO,UAAU,GAAY,GAG/B,GAAM,IAAa,EAAG,CAAC,YAAA,KCd9B,YAAuC,EAAe,CAEpD,GAAM,GAA2B,CAAC,EADvB,EAAgB,EAAG,IAAK,aAAc,SAEjD,MAAO,GAAO,UAAU,GAAY,GAG/B,GAAM,IAAa,EAAG,CAAC,YAAA,KCJ9B,YACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,YAAa,QAC1C,EAAK,EAAgB,EAAG,IAAK,YAAa,QAChD,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAA0B,CAAC,EAAG,EAAI,EAAG,GAC3C,MAAO,GAAO,UAAU,GAAW,GAE9B,GAAM,IAAY,EAAG,CAAC,WAAA,KCP7B,YACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,aAAc,QAC3C,EAAK,EAAgB,EAAG,IAAK,aAAc,QACjD,MAAA,IAA2B,EAAG,MAAO,EAAG,OAGjC,GAAW,GAAU,EAAG,GAAI,GAAW,GAAW,EAAG,KAGvD,GAAM,IAAa,EAAG,CAAC,YAAA,KCG9B,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAwC,CAC1C,GAAM,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAY,EAEd,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACD,EAAI,OAAS,EACb,IAAM,uDAAuD,EAAI,SAChE,EACS,GAA+B,EAAS,GAClD,IAAM,wEACa,oBAA0B,MAC7C,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,wEACiB,iBAA+B,MAG5D,GAAM,GAAwB,CAAC,EAAG,GAE5B,EAAsB,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAGjD,EAAM,EAAO,UACH,GAAS,EACT,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAU,EAAG,CAAC,SAAA,KClC3B,YACI,EAAiB,EAA8C,CAAC,EAAG,EAAG,GACtE,EAA0C,EAC1C,EACA,EAA8B,QAAO,CACvC,GAAM,GAAK,EAAgB,EAAG,IAAK,aAE/B,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGnE,EACD,EAAI,OAAS,EACb,IAAM,qDAAqD,EAAI,SAC9D,EACD,IAAe,QACf,IAAM,gFACuB,KAC7B,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,0EACiB,iBAA+B,MAG5D,GAAM,GAA0B,CAAC,EAAG,GAE9B,EACe,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAG3D,EAAM,EAAO,UACH,GAAW,EACX,GAEhB,MAAI,GACK,EACI,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAIhE,EAGF,GAAM,IAAY,EAAG,CAAC,WAAA,KCnD7B,YACI,EAAiB,EACjB,EAAkC,EAClC,EAAsB,GAAK,CAG7B,GAAM,GAAkC,CAAC,EAF9B,EAAgB,EAAG,IAAK,sBAG7B,EACuB,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,oBAAA,GAGlD,EAAS,EAAO,UACH,GAAmB,EACnB,GAEnB,MAAO,CAAC,OAAQ,EAAO,GAAI,QAAS,EAAO,IAGtC,GAAM,IAAoB,EAAG,CAAC,mBAAA,KCtBrC,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAK,EAAgB,EAAG,IAAK,WACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE1B,EAAG,QAAU,QACf,GAAK,GAAK,EAAI,SACd,EAAK,GAAK,EAAI,UAEhB,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GAEzC,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCjB3B,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAG7B,EAAmB,CAAC,KAAA,EAAM,SAAA,GAEhC,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAO,EAAG,CAAC,MAAA,KCZxB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CAGtE,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAG7B,EAAkB,CAAC,KAAA,EAAM,SAAA,GAG/B,MAAO,GAAO,UACH,GAAK,EACL,GAGN,GAAM,IAAM,EAAG,CAAC,KAAA,KCZvB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,WAC7B,EAAK,EAAgB,EAAG,IAAK,WACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE1B,EAAG,QAAU,QACf,GAAK,GAAK,EAAI,SACd,EAAK,GAAK,EAAI,UAGhB,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAwB,CAAC,EAAG,EAAI,EAAG,GAEzC,MAAO,GAAO,UAAU,GAAS,GAG5B,GAAM,IAAU,EAAG,CAAC,SAAA,KCrB3B,YACI,EAAiB,EACjB,EAA2B,CACxB,EACD,IAAS,WAAa,IAAS,YAC/B,IAAM,+DACK,MAEf,GAAM,GAAK,EAAgB,EAAG,IAAK,aACnC,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OACN,kEAGD,EACD,EAAS,SAAW,EAAG,KACvB,IAAM,wCAAwC,EAAG,aACtC,EAAS,WACxB,GAAM,GAAc,IAAS,UAAY,EAAI,EAC7C,OAAS,GAAI,EAAG,EAAI,EAAG,KAAM,IACtB,EACD,EAAS,GAAG,SAAW,EACvB,IAAM,yDACL,EACD,EAAS,GAAG,IAAM,GAAK,EAAS,GAAG,IAAM,EAAG,MAAM,GAAK,GACnD,EAAS,GAAG,IAAM,GAAK,EAAS,GAAG,IAAM,EAAG,MAAM,GAAK,EAC3D,IAAM,wBAAwB,wCACpB,EAAG,MAAM,GAAK,uCACX,EAAG,SAGtB,GAAM,GAAwB,CAAC,SAAA,EAAU,KAAA,GACnC,EAA0B,CAAC,EAAG,GACpC,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KCnC7B,YAAgC,EAAsB,EAAoB,CACxE,GAAI,GAAK,EAAgB,EAAG,IAAK,OAC7B,EAAK,EAAgB,EAAG,IAAK,OACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GAAoB,CAAC,EAAG,EAAI,EAAG,GAErC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KC9BvB,YAAmC,EAAe,CAChD,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAQ,GACd,MAAO,GAAO,UAAU,SAAU,CAAC,EAAG,GAAK,GAGtC,GAAM,IAAS,EAAG,CAAC,QAAA,KCG1B,YACI,EAAsB,EAAwB,KAC9C,EAAW,GAAK,CAClB,EAAI,EAAgB,EAAG,IAAK,WAC5B,GAAM,GAAO,GAAe,EAAM,EAAE,OAC9B,EAAQ,GAAK,EAAG,EAAM,GACxB,EAAgB,EAAM,MACrB,GACH,GAAgB,GAAqB,EAAM,MAAO,IAEpD,GAAM,GACF,GAAO,GAAI,GAAK,EAAG,WAAY,EAAQ,EAAO,KAC5C,EAAW,GAAK,EAAY,EAAM,GACxC,MAAO,CAAC,KAAM,EAAO,SAAA,GAGhB,GAAM,IAAU,EAAG,CAAC,SAAA,KChB3B,YACI,EAA2B,EAC3B,EACA,EAA6B,CAC/B,GAAM,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,EAAK,GAAqB,EAAG,IAAK,gBAClC,EAAK,GAAqB,EAAG,IAAK,gBAEpC,EAAQ,EACN,EAAY,GAClB,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,IAAK,CACzC,GAAM,GAAS,EAAU,GAAG,EAAO,EAAG,GAAI,EAAG,IAC7C,EAAU,KAAK,EAAO,IACtB,EAAU,KAAK,EAAO,IACtB,EAAQ,EAAO,GAEjB,GAAM,GAAmB,GACnB,EAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAU,OAAQ,GAAK,EACzC,EAAK,KAAK,EAAU,IACpB,EAAK,KAAK,EAAU,EAAI,IAE1B,MAAO,CAAC,EAAM,GAET,GAAM,IAAe,EAAG,CAAC,cAAA,KCpBhC,YACI,EAAsC,EAAoB,EAC1D,EAAa,GAAK,CACpB,GAAM,GAAU,EAAgB,EAAQ,SAAU,eAC5C,EAAc,EAAQ,KACtB,EAAW,EAAQ,KACzB,GAAI,EAAc,EAChB,KAAM,IAAI,OACN,+DACG,MAET,GAAI,EAAW,EACb,KAAM,IAAI,OAAM,gDAAgD,KAIlE,EAAO,GAAQ,KAAK,SAMpB,GAAM,GAA4B,CAAC,OAF/B,IAAa,EAAI,EAAQ,EAAS,CAAC,EAAG,KAAO,GAG3C,EAA0B,CAAC,WAAA,EAAY,KAAA,EAAM,WAAA,GAG7C,EAAM,EAAO,UACH,GAAa,EACb,GAGhB,MAAO,KAAa,EAAI,EAAQ,EAAK,CAAC,EAAI,OAAqB,EAG1D,GAAM,IAAc,EAAG,CAAC,aAAA,KCzC/B,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,YAC7B,EAAK,EAAgB,EAAG,IAAK,YACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAyB,CAAC,EAAG,EAAI,EAAG,GAE1C,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCjBtB,YACF,EAAoB,EAAkB,UAAS,CACjD,GAAI,IAAU,YAAa,CACzB,GAAM,GAAO,GAAM,EAAO,WACpB,EAAO,GAAM,EAAO,WAC1B,MAAO,IAAQ,EAAM,GAEvB,GAAM,GAAS,GAAoB,GAAc,GAAQ,GACzD,MAAO,GAAO,WAAW,EAAQ,EAAO,GCPpC,YACF,EAAoB,EAAkB,UAAS,CACjD,GAAI,IAAU,YAAa,CACzB,GAAM,GAAO,GAAK,EAAO,WACnB,EAAO,GAAM,EAAO,WAC1B,MAAO,IAAQ,EAAM,GAEvB,GAAM,GAAS,GAAmB,GAAc,GAAQ,GACxD,MAAO,GAAO,WAAW,EAAQ,EAAO,GCR1C,YAAqC,EAAe,CAGlD,GAAM,GAAyB,CAAC,EAFrB,EAAgB,EAAG,IAAK,aAGnC,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KCN5B,YACI,EAAyB,EAAuB,CAClD,GAAM,GAAM,EAAgB,EAAI,KAAM,gBAChC,EAAM,EAAgB,EAAI,KAAM,gBAEjC,EACD,EAAI,OAAS,GAAK,EAAI,OAAS,EAC/B,IAAM,+DACC,EAAI,YAAY,EAAI,SAE/B,GAAM,GAAO,EAAQ,EAAK,CAAC,GAAI,IACzB,EAAO,EAAQ,EAAK,CAAC,EAAG,KAC9B,MAAO,IAAO,EAAM,GAGf,GAAM,IAAe,EAAG,CAAC,cAAA,KCFhC,YACI,EAAiB,EAAmC,EAAgB,EAAC,CACvE,GAAM,GAAK,EAAgB,EAAG,IAAK,OACnC,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAGlB,GAAM,GAAoB,CAAC,SAAA,EAAU,cAAA,GAC/B,EAAsB,CAAC,EAAG,GAChC,MAAO,GAAO,UACV,GAAO,EACP,GAGC,GAAM,IAAM,EAAG,CAAC,KAAA,KCzCvB,YACI,EAAwB,EACxB,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,EACpB,IAAM,oDACH,GAAI,EAAG,CAAC,GAAW,GAGrB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCTzB,YACI,EAAwB,EACxB,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,GAAK,EAAS,GAAG,SAAW,GAC5C,EAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,GAAI,EAAG,EAAU,GAGnB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCVzB,YACI,EACA,EACA,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,GAAK,EAAS,GAAG,SAAW,GAC5C,EAAS,GAAG,SAAW,GAAK,EAAS,GAAG,SAAW,EACvD,IAAM,yDACH,GAAI,EAAG,EAAU,GAGnB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCXzB,YACI,EACA,EAIA,EAAgB,EAAC,CACnB,MAAA,GACI,EAAS,SAAW,GAAK,EAAS,GAAG,SAAW,GAC5C,EAAS,GAAG,SAAW,GAAK,EAAS,GAAG,SAAW,GACnD,EAAS,GAAG,SAAW,EAC3B,IAAM,yDACH,GAAI,EAAG,EAAU,GAGnB,GAAM,IAAQ,EAAG,CAAC,OAAA,KCoCzB,YACI,EAAiB,EAAsB,EAAoB,CAC7D,GAAM,GAAK,EAAgB,EAAG,IAAK,kBAE9B,EACD,EAAG,MAAQ,EAAI,EAAW,OAC1B,IAAM,cAAc,EAAG,sCACnB,EAAW,UAEd,EACD,EAAS,SAAW,EAAW,OAC/B,IAAM,qBACF,EAAS,wCAAwC,EAAW,UAE/D,EACD,EAAG,MAAM,OACL,CAAC,EAAG,EAAG,IACD,EAAI,GAAK,GAAK,EAAW,OACpB,GACD,GAAI,EAAS,EAAI,GAAG,GAAK,EAAS,EAAI,GAAG,IACtC,EAAW,EAAI,IACnB,EAEA,EAET,IACJ,IAAM,4BAA4B,EAAG,MAAM,MAAM,oBAC7C,EAAS,+CACT,EAAW,cAEnB,GAAM,GAA+B,CAAC,EAAG,GACnC,EAA6B,CAAC,WAAA,EAAY,SAAA,GAEhD,MAAO,GAAO,UACV,GAAgB,EAChB,GAGC,GAAM,IAAiB,EAAG,CAAC,gBAAA,KC1DlC,YACI,EAAqB,EACrB,EAA0B,EAC1B,EAAqC,EAAiC,CACpE,GAAa,MACf,GAAY,CAAC,EAAG,IAEd,GAAW,MACb,GAAU,GAER,IAAQ,GACV,GAAM,SAGR,GAAM,GAAK,EAAgB,EAAO,IAAK,WACnC,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGtD,EACS,GAA+B,EAAS,GAClD,IAAM,qEACa,oBAA0B,MAEjD,GAAM,GAAqB,GACvB,EAAI,MAAO,EAAa,EAAS,EAAW,GAC1C,EACF,CAAC,EAAS,eAAgB,EAAS,eAOnC,EACA,IAAQ,OACV,EAAc,GACV,CAAC,EAAS,aAAc,EAAS,aAAc,GAEnD,EAAc,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,IAG7B,GAAM,GAAgB,EAAS,KAAO,GAAK,EAAS,KAAO,EACrD,CAAC,EAAiB,GAAiB,GACrC,CAAC,EAAS,SAAU,EAAS,SAAU,EAAU,GAC/C,EAAe,EAAgB,EAAM,QACrC,EACF,EAAgB,EAAM,GAAe,EAAK,EAAU,GAKlD,EAHY,KAAgB,MAC9B,IAAM,GAAQ,EAAY,EAAa,EAAS,GAChD,IAAM,GAAQ,EAAY,EAAa,EAAS,MAG9C,EAAM,EAAgB,EAAI,GAAe,EAAG,EAAU,GAE5D,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAGtD,EAMT,YACI,EAA8B,EAC9B,EAAuB,CACzB,GAAM,GAAW,EAAY,IAAI,GAAK,EAAE,IAClC,EAAa,EAAY,IAAI,GAAK,EAAE,IACpC,EAAiB,EAAW,OAAO,EAAU,GAC7C,EAAc,EAAW,IAAI,CAAC,EAAG,IAAO,GAAI,EAAe,GAAK,GAAK,GACrE,EAAS,EAAW,IAAI,CAAC,EAAG,IAAM,EAAI,EAAY,IAClD,EAAW,EAAW,IAAI,CAAC,EAAG,IAAM,CAAC,EAAS,GAAI,EAAO,KACzD,EAAQ,EAAW,IAAI,CAAC,EAAG,IAAM,CAAC,EAAG,EAAY,KACvD,MAAO,CAAC,EAAU,GAMpB,YACI,EAA+B,EAA0B,CAM3D,GAAM,GAHqB,EAAY,IAAI,CAAC,EAAG,IACtC,EAAK,GAAI,GAAM,GAAS,GAAK,IAEG,IAAI,GAAK,EAAI,GAIhD,EAAgB,EAAc,IAAI,GAAK,KAAK,MAAM,EAAI,IACtD,EAAc,EAAc,IAAI,CAAC,EAAG,IAAM,EAAI,EAAc,IAClE,MAAO,GAAc,IAAI,CAAC,EAAG,IACpB,CAAC,EAAc,GAAI,EAAY,KAInC,GAAM,IAAO,EAAG,CAAC,MAAA,KC1GxB,YACI,EAAyB,EAAsB,CACjD,GAAI,GAAQ,EAAgB,EAAM,OAAQ,OACtC,EAAO,EAAgB,EAAK,MAAO,OACvC,CAAC,EAAO,GAAQ,GAAe,EAAO,GAEtC,GAAM,GAAoB,CAAC,EAAG,EAAO,EAAG,GAExC,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCvBvB,YAAkC,EAAiB,EAAmB,CACpE,GAAM,GAAK,EAAgB,EAAG,IAAK,SAC7B,EAAS,EAAgB,EAAO,QAAS,SAEzC,EAAsB,CAAC,EAAG,EAAI,MAAO,GAC3C,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCQzB,YACI,EAAsB,EAAwB,KAAM,EAAW,GAAK,CACtE,GAAI,GAAK,EAAgB,EAAG,IAAK,QAE7B,EAAG,QAAU,QAEf,GAAK,GAAK,EAAI,UAGhB,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,KAAA,EAAM,SAAA,GAEhC,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAO,EAAG,CAAC,MAAA,KCzCxB,YACI,EAAoB,EACpB,EAAgB,CAClB,GAAM,GAAO,GAAc,GACvB,EAAS,KACb,GAAI,GAAS,MAAQ,IAAU,UAC7B,EAAS,GAAI,cAAa,WACjB,IAAU,QACnB,EAAS,GAAI,YAAW,WACf,IAAU,OACnB,EAAS,GAAI,YAAW,OAExB,MAAM,IAAI,OAAM,qBAAqB,KAEvC,OAAS,GAAI,EAAG,EAAI,EAAM,IACxB,EAAO,GAAK,IAEd,MAAO,GAAO,WAAW,EAAQ,EAAO,GAGnC,GAAM,IAAO,EAAG,CAAC,MAAA,KCpCxB,GAA4B,GAAA,MAwBtB,GAAA,KAAkB,CAUtB,YACI,EAAc,EAAsB,EACpC,EAAqB,EAAa,CACpC,KAAK,KAAO,EACZ,KAAK,OAAS,EACd,KAAK,MAAQ,EACb,KAAK,QAAU,IACf,KAAK,UAAY,EACb,KAAK,WACP,MAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,EACvC,KAAK,MAAQ,KAAK,KAAO,KAAK,OAAS,GAEzC,GAAM,GAAY,GAAc,KAAK,SACrC,KAAK,OAAoB,GAAA,KAAK,EAAU,YAInC,WAAS,CACd,GAAI,CAAC,MAAM,KAAK,SAAU,CACxB,GAAM,GAAQ,KAAK,QACnB,MAAA,MAAK,QAAU,IACR,EAGT,GAAI,GAAiB,EACjB,EAAU,GACd,KAAO,CAAC,GAAS,CACf,GAAI,GAAY,EAAY,EAC5B,EACE,GAAK,EAAI,KAAK,SAAW,EACzB,EAAK,EAAI,KAAK,SAAW,EACzB,EAAI,EAAK,EAAK,EAAK,QACZ,GAAK,GAAK,IAAM,GAEzB,GAAM,GAAM,KAAK,KAAK,GAAO,KAAK,IAAI,GAAK,GAC3C,EAAU,KAAK,KAAO,KAAK,OAAS,EAAK,EACzC,EAAU,KAAK,KAAO,KAAK,OAAS,EAAK,EAErC,EAAC,KAAK,WAAa,KAAK,iBAAiB,KAC3C,GAAU,IAId,MAAI,EAAC,KAAK,WAAa,KAAK,iBAAiB,KAC3C,MAAK,QAAU,KAAK,aAAa,IAE5B,KAAK,aAAa,GAInB,aAAa,EAAa,CAChC,MAAI,MAAK,OAAS,MAAQ,KAAK,QAAU,UAChC,EAEF,KAAK,MAAM,GAIZ,iBAAiB,EAAa,CACpC,MAAO,IAAS,KAAK,OAAS,GAAS,KAAK,QAM1C,GAAA,KAAgB,CASpB,YACI,EAAe,EAAc,EAC7B,EAAa,CACf,KAAK,MAAQ,EACb,KAAK,KAAO,EAAI,EAChB,KAAK,MAAQ,EAEb,GAAM,GAAY,GAAc,KAAK,SACrC,KAAK,MAAmB,GAAA,KAAK,EAAU,YACvC,KAAK,MAAQ,GAAI,IAAY,EAAG,EAAG,EAAO,GAAO,KAAK,SAElD,EAAQ,EACV,KAAK,EAAI,EAAS,EAAI,EAEtB,KAAK,EAAI,EAAS,EAAI,EAExB,KAAK,EAAI,EAAI,KAAK,KAAK,EAAI,KAAK,GAI3B,WAAS,CACd,GAAI,GAAY,EAAY,EAAY,EAAW,EAAW,EAC9D,OAAa,CACX,EACE,GAAI,KAAK,MAAM,YACf,EAAI,EAAK,KAAK,EAAI,QACX,GAAK,GAMd,GALA,GAAK,EAAI,EACT,EAAK,EAAI,EACT,EAAK,EAAK,KAAQ,EAAK,EACvB,EAAM,GAAM,EAAO,KAAK,EAAK,GAAI,EAAI,KAAK,IAAI,IAC9C,EAAI,KAAK,QACL,EAAI,GAAM,KAAK,IAAI,GAAK,EAC1B,MAGJ,MAAA,GAAK,EAAI,KAAK,KAAQ,KAAK,EAAI,EAC3B,KAAK,MAAQ,GACf,IAAK,KAAK,IAAI,KAAK,QAAS,EAAI,KAAK,QAEhC,KAAK,aAAa,GAGnB,aAAa,EAAa,CAChC,MAAI,MAAK,QAAU,UACV,EAEF,KAAK,MAAM,KAIhB,GAAA,KAAoB,CAMxB,YACI,EAAM,EAAG,EAAM,EAAG,EAClB,EAAoB,CAWtB,GAQM,KAAA,eAAiB,IACpB,KAAK,OAAS,MAAQ,KAAK,QAAU,UAnBxC,KAAK,IAAM,EACX,KAAK,MAAQ,EAAM,EACnB,KAAK,MAAQ,EACT,GAAQ,MACV,GAAO,KAAK,UAEV,MAAO,IAAS,UAClB,GAAO,EAAK,YAGV,CAAC,KAAK,kBAAoB,KAAK,OAAS,EAC1C,KAAM,IAAI,OACN,0BAA0B,OAAS,iCAEzC,KAAK,OAAoB,GAAA,KAAK,GAOxB,aAAa,EAAa,CAChC,MAAI,MAAK,iBACA,EAEF,KAAK,MAAM,GAGpB,WAAS,CACP,MAAO,MAAK,aAAa,KAAK,IAAM,KAAK,MAAQ,KAAK,YC9K1D,YACI,EAAoB,EAAe,EAAO,EAC1C,EAA2B,UAAW,EAAa,CAOrD,GANI,GAAQ,MACV,GAAO,GAEL,GAAS,MACX,GAAQ,WAEN,IAAU,WAAa,IAAU,QACnC,KAAM,IAAI,OAAM,yBAAyB,KAE3C,GAAM,GAAS,GAAI,IAAU,EAAO,EAAM,EAAO,GAC3C,EAAM,GAAO,EAAO,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAO,YAEzB,MAAO,GAAI,WAGN,GAAM,IAAc,EAAG,CAAC,aAAA,KCrB/B,YACI,EAAoB,EAAO,EAAG,EAAS,EAAG,EAC1C,EAAa,CACf,GAAI,GAAS,MAAS,IAAuB,OAC3C,KAAM,IAAI,OAAM,yBAAyB,KAE3C,GAAM,GACF,GAAI,IAAY,EAAM,EAAQ,EAAO,GAAuB,GAC1D,EAAM,GAAO,EAAO,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAU,YAE5B,MAAO,GAAI,WAGN,GAAM,IAAe,EAAG,CAAC,cAAA,KCVhC,YACI,EAAoB,EAAS,EAAG,EAAS,EAAG,EAAkB,UAC9D,EAAoB,CACtB,GAAM,GAAM,GAAO,EAAO,GACpB,EAAS,GAAI,IAAc,EAAQ,EAAQ,KAAM,GACvD,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAO,YAEzB,MAAO,GAAI,WAGN,GAAM,IAAgB,EAAG,CAAC,eAAA,KCd3B,YACF,EAAe,EAAc,EAAO,EACpC,EAA2B,UAAS,CACtC,GAAI,IAAS,EACX,KAAM,IAAI,OAAM,8BAGlB,GAAM,GAAoB,CAAC,MAAA,EAAO,KAAA,EAAM,KAAA,EAAM,MAAA,GAE9C,MAAO,GAAO,UAAU,GAAO,GAAiB,GCVlD,YAAiC,EAAmB,CAGlD,GAAM,GAAqB,CAAC,MAFb,EAAgB,EAAO,QAAS,SAG/C,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCTxB,YAAuC,EAAe,CAGpD,GAAM,GAA2B,CAAC,EAFvB,EAAgB,EAAG,IAAK,eAGnC,MAAO,GAAO,UAAU,GAAY,GAE/B,GAAM,IAAa,EAAG,CAAC,YAAA,KCL9B,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCRxB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCWzB,YACI,EAAiB,EAAsB,CAGzC,GAAM,GAAwB,CAAC,EAFpB,EAAgB,EAAG,IAAK,YAG7B,EAAsB,CAAC,KAAM,GAEnC,MAAO,GAAO,UACV,GAAS,EAAgC,GAGxC,GAAM,IAAU,EAAG,CAAC,SAAA,KCxC3B,YAAoB,EAAsB,CACxC,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCN7B,YAAoB,EAAwB,EAAsB,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCR7B,YAAoB,EAAwB,EAAsB,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCR7B,YAAoB,EAAwB,EAAsB,CAChE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IAAM,qDAAqD,EAAG,SAC3D,GAAQ,EAAI,GAGd,GAAM,IAAY,EAAG,CAAC,WAAA,KCA7B,YAAkC,EAAe,CAE/C,GAAM,GAAsB,CAAC,EADlB,EAAgB,EAAG,IAAK,UAGnC,MAAO,GAAO,UAAU,GAAO,GAG1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCPzB,YAAkC,EAAe,CAG/C,GAAM,GAAsB,CAAC,EAFlB,EAAgB,EAAG,IAAK,UAInC,MAAO,GAAO,UAAU,GAAO,GAE1B,GAAM,IAAQ,EAAG,CAAC,OAAA,KCTnB,YACF,EAAyC,EAAgB,CAC3D,GAAM,IAAa,IAAU,IAAU,UAAa,MAAM,QAAQ,KAC9D,IAAU,YACZ,KAAM,IAAI,OACN,kFAGN,GAAI,IAAU,UAAY,GAAa,IACnC,CAAE,aAAiB,aACrB,KAAM,IAAI,OACN,6EAKN,MAAO,IAAW,EAFM,GACQ,GACe,GCbjD,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCuBxB,YACI,EAAiB,EACjB,EAAsC,EACtC,EAAqB,EAAoC,CAAC,EAAG,GAC7D,EAA4B,OAAM,CACpC,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EACF,EAAgB,EAAiB,kBAAmB,mBAClD,EACF,EAAgB,EAAiB,kBAAmB,mBAEpD,EAAM,EACN,EAAe,GAMnB,GALI,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAGvD,IAAe,OACjB,KAAM,IAAI,OACN,sFAID,EACD,EAAI,OAAS,EACb,IAAM,gEACM,EAAI,SACf,EACD,EAAiB,OAAS,EAC1B,IAAM,2EACU,EAAiB,SAChC,EACD,EAAiB,OAAS,EAC1B,IAAM,2EACU,EAAiB,SAChC,EACD,EAAiB,MAAM,KAAO,EAC9B,IACI,yFACuB,EAAiB,MAAM,OACjD,EACD,EAAiB,MAAM,KAAO,EAC9B,IAAM,yFAC2B,EAAiB,MAAM,OAE5D,GAAM,GAAa,EAAiB,MAAM,GACpC,EAAoB,EAAiB,MAAM,GAC5C,EACD,EAAiB,MAAM,KAAO,EAAa,EAC3C,IACI,6EACW,EAAa,cACb,EAAiB,MAAM,OAE1C,GAAM,GAAY,GACd,EAAK,EAAkB,EAAS,EAAK,EAAY,GAE/C,EACF,GAAO,EAAW,EAFE,EAEiC,QAAS,GAElE,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAkB,EAAG,CAAC,iBAAA,KCxFnC,kBACI,EAAsB,EAAoB,CAC5C,GAAM,GAAK,EAAgB,EAAG,IAAK,aAC7B,EAAK,EAAgB,EAAG,IAAK,aAE9B,EACD,EAAG,QAAU,EAAG,MAChB,IAAM,kDACF,EAAG,iBAAiB,EAAG,WAE1B,EACD,EAAG,OAAS,EAAG,IAAM,qCAAqC,EAAG,WAE5D,EACD,EAAG,OAAS,EAAG,IAAM,qCAAqC,EAAG,WAEjE,GAAM,GAAQ,KAAM,GAAG,OACjB,EAAQ,KAAM,GAAG,OACjB,EAAO,GAAI,KAAI,GAEjB,EAAa,EACjB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAC3B,EAAK,IAAI,EAAM,KAClB,IAIJ,GAAM,GAAS,GAAI,IAAa,CAAC,GAAa,EAAG,OAC3C,EAAU,GAAI,IAAa,CAAC,GAAa,SAC/C,OAAS,GAAI,EAAG,EAAI,EAAG,EAAI,EAAM,OAAQ,IAClC,EAAK,IAAI,EAAM,KAClB,GAAO,OAAO,GAAK,EAAM,GACzB,EAAQ,OAAO,GAAK,EACpB,KAGJ,MAAO,CAAC,EAAO,WAAY,EAAQ,YAE9B,GAAM,IAAiB,GClD9B,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAEnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCLxB,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCPvB,YAAiC,EAAe,CAE9C,GAAM,GAAqB,CAAC,EADjB,EAAgB,EAAG,IAAK,SAGnC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCfxB,YACI,EAAwB,EAAe,EAAY,CACrD,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,CAAC,GAAQ,CAAC,IAEtB,GAAM,IAAU,EAAG,CAAC,SAAA,KCT3B,YACI,EAAwB,EACxB,EAAsB,CACxB,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,EAAO,GAEnB,GAAM,IAAU,EAAG,CAAC,SAAA,KCV3B,YACI,EAAwB,EACxB,EAA8B,CAChC,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,EAAO,GAEnB,GAAM,IAAU,EAAG,CAAC,SAAA,KCV3B,YACI,EAAwB,EACxB,EAAsC,CACxC,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAK,GACD,EAAG,OAAS,EACZ,IACI,mDAAmD,EAAG,eACvD,GAAM,EAAI,EAAO,GAEnB,GAAM,IAAU,EAAG,CAAC,SAAA,KCS3B,YAAoC,EAAsB,EAAM,GAAE,CAChE,GAAM,GAAU,EAAgB,EAAQ,SAAU,UAAW,WAK7D,GAHI,IAAQ,IACV,GAAM,EAAQ,KAAO,GAEnB,IAAQ,EAAQ,KAAO,EACzB,KAAM,OACF,4EACmB,EAAQ,oBAAoB,KAGrD,GAAM,GAAwB,CAAC,OAAQ,GACjC,EAAsB,CAAC,IAAA,GAE7B,MAAO,GAAO,UACV,GAAS,EAAgC,GAGxC,GAAM,IAAU,EAAG,CAAC,SAAA,KC1B3B,YAAc,EAAa,CACzB,EACI,EAAM,QAAU,YAChB,IAAM,6DACS,EAAM,UAEzB,GAAM,GAAoB,CAAC,MAAA,GAE3B,MAAO,GAAO,UAAU,GAAK,GAGxB,GAAM,IAAM,EAAG,CAAC,KAAA,KCXvB,YAAe,EAAa,CAC1B,EACI,EAAM,QAAU,YAChB,IAAM,8DACS,EAAM,UAEzB,GAAM,GAAqB,CAAC,MAAA,GAE5B,MAAO,GAAO,UAAU,GAAM,GAGzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCJxB,YAAgB,EAAa,CAC3B,GAAM,GAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACtD,EAAQ,EAAM,KAAO,EACvB,EACJ,GAAI,GAAsB,EAAG,CAC3B,GAAM,GAAe,EAAQ,EAAO,CAAC,EAAO,IAC5C,EAAM,GAAK,OACN,CAGL,GAAM,GAAc,CAAC,EAAO,EAAK,GAAqB,IAChD,EAAY,EAAQ,GAAK,GAAQ,CAAC,EAAO,IACzC,EAAY,EAAQ,GAAK,GAAQ,CAAC,EAAO,IAEzC,EACF,GAAQ,GAAM,EAAW,CAAC,EAAG,GAAI,CAAC,EAAO,EAAqB,IAAK,GACjE,EAA0B,EAC5B,GAAQ,GAAM,EAAW,CAAC,EAAG,GAAI,CAAC,EAAO,EAAqB,IAAK,GACnE,GAAO,KAEL,EAAI,GAAO,CAAC,EAAW,GAAgB,GACvC,EAAI,GAAO,CAAC,EAAW,GAAgB,GACvC,EACF,EAAQ,GAAQ,EAAG,GAAI,CAAC,EAAY,GAAI,EAAY,KACxD,EAAM,GAAK,GAIb,GAFA,EAAM,GAAK,GAEP,EAAM,OAAS,GAAK,EAAM,MAAM,KAAO,EAAG,CAC5C,GAAM,GAAO,EACP,EAAQ,EAAM,MAAM,GAC1B,EAAM,EAAQ,EAAK,CAAC,EAAO,EAAI,MAAM,GAAK,EAAO,EAAI,MAAM,KAC3D,EAAK,UAEP,MAAO,GAGF,GAAM,IAAQ,EAAG,CAAC,OAAA,KCxBzB,YACI,EAAsB,EAAkC,EAAO,EAAC,CAGlE,GAAM,GAAuB,CAAC,EAFnB,EAAgB,EAAG,IAAK,UAG7B,EAAoB,CAAC,gBAAA,EAAiB,KAAA,GAE5C,MAAO,GAAO,UACH,GAAQ,EACR,GAGN,GAAM,IAAQ,EAAG,CAAC,OAAA,KC1BzB,YAAe,EAAe,EAAkB,CAC9C,EACI,EAAM,QAAU,UAChB,IAAM,mDAAmD,EAAM,SAEnE,GAAI,GAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACpD,EAAQ,EAAM,KAAO,EAEvB,EACJ,GAAI,GAAa,MAAQ,EAAY,EAAoB,CAEvD,GAAM,GAAQ,EAAM,MAAM,IAAI,GAAK,GAC7B,EAAO,EAAM,MAAM,IAAI,GAAK,GAClC,EAAK,EAAM,MAAM,OAAS,GAAK,EAC/B,EAAgB,GAAM,EAAO,EAAO,GACpC,EAAqB,UACZ,GAAa,MAAQ,EAAY,EAAoB,CAE9D,GAAM,GAAa,EAAM,MAAM,IAAI,GAAK,GACxC,EAAW,EAAM,MAAM,OAAS,GAAK,EAAY,EACjD,EAAgB,GAAO,CAAC,EAAO,GAAM,IAAc,EAAM,MAAM,OAAS,GACxE,EAAqB,MAErB,GAAgB,EAIlB,GAAM,GAAa,GAAU,GACvB,EACF,EAAQ,GAAQ,EAAe,GAAa,CAAC,EAAO,IAElD,EAAM,GAAI,GAGV,EAAO,KAAK,MAAM,EAAqB,GAAK,EAC5C,EAAa,GAAK,GAClB,EAAa,GAAK,GAClB,EAAuB,GACzB,EAAY,CAAC,EAAM,EAAqB,GACxC,EAAW,MAAM,OAAS,GACxB,EAAuB,GACzB,EAAY,CAAC,EAAM,EAAqB,GACxC,EAAW,MAAM,OAAS,GAExB,EAAc,EAAc,MAAM,QACxC,MAAA,GAAY,EAAc,MAAM,OAAS,GAAK,EAEvC,EACH,GAAQ,EAAqB,GAAI,EAAqB,IAAK,GAG1D,GAAM,IAAO,EAAG,CAAC,MAAA,KC5DxB,YAAiC,EAAe,CAG9C,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAInC,MAAO,GAAO,UAAU,GAAM,GAEzB,GAAM,IAAO,EAAG,CAAC,MAAA,KCOxB,YACI,EAAsB,EAAoB,CAC5C,GAAI,GAAK,EAAgB,EAAG,IAAK,qBAC7B,EAAK,EAAgB,EAAG,IAAK,qBACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAA2B,EAAG,MAAO,EAAG,OAExC,GAAM,GAAkC,CAAC,EAAG,EAAI,EAAG,GAC7C,EAAQ,GAEd,MAAO,GAAO,UACV,GAAmB,EAAqC,GAGvD,GAAM,IAAoB,EAAG,CAAC,mBAAA,KC3BrC,YAAoC,EAAsB,EAAe,CACvE,GAAM,GAAK,EAAgB,EAAG,IAAK,WACnC,MAAO,GAAQ,EAAI,GAAa,EAAG,MAAO,GAAM,UAG3C,GAAM,IAAU,EAAG,CAAC,SAAA,KCF3B,YACI,EAA8B,EAAO,EAAC,CACxC,GAAM,GACF,GAAqB,EAAS,UAAW,QAAS,qBAEjD,EACD,EAAS,QAAU,EAAG,IAAM,wCAE5B,EAAS,OAAS,GACf,EACD,GAAQ,EAAS,GAAG,KAAM,IAAM,sCAGtC,GAAM,GAAqB,EACrB,EAAmB,CAAC,KAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAGrC,GAAM,IAAQ,EAAG,CAAC,OAAA,KCvBzB,YAAiC,EAAiB,EAAQ,EAAG,CAG3D,GAAM,GAAqB,CAAC,EAFjB,EAAgB,EAAG,IAAK,SAG7B,EAAmB,CAAC,MAAA,GAE1B,MAAO,GAAO,UACV,GAAM,EAAgC,GAErC,GAAM,IAAO,EAAG,CAAC,MAAA,KCWxB,YACI,EAAsB,EAAiB,EAAe,EACtD,EAAY,EAAG,EAAU,EAAG,EAAe,EAAG,EAAc,EAC5D,EAAiB,EAAC,CAGpB,GAAM,GAA6B,CAAC,EAFzB,EAAgB,EAAG,IAAK,iBAG7B,EAA2B,CAC/B,MAAA,EACA,IAAA,EACA,QAAA,EACA,UAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,GAGF,MAAO,GAAO,UACV,GAAc,EACd,GAGC,GAAM,IAAe,EAAG,CAAC,cAAA,KC7ChC,YAAgC,EAAe,CAG7C,GAAM,GAAoB,CAAC,EAFhB,EAAgB,EAAG,IAAK,QAInC,MAAO,GAAO,UAAU,GAAK,GAExB,GAAM,IAAM,EAAG,CAAC,KAAA,KCLjB,YAAmB,EAAsB,EAAgB,CAC7D,GAAc,GACd,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,EAC3B,KAAM,IAAI,OAAM,sDAGlB,MAAO,IAAW,EADM,KACS,EAAe,GCA5C,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,kEAEN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,gFAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GCjB5C,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,sEAEN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GCjB5C,YACF,EAAsB,EACtB,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,kDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,wEAGN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAO,IAAW,EAAQ,EAAO,EAAe,GClB5C,YACF,EACA,EACA,EAAgB,CAElB,GADA,GAAc,GACV,GAAS,MAAQ,EAAM,SAAW,EACpC,KAAM,IAAI,OAAM,iDAElB,GAAM,GAAgB,GAAW,EAAQ,GACzC,GAAI,EAAc,SAAW,GAAK,EAAc,SAAW,EACzD,KAAM,IAAI,OACN,0EAGN,GAAI,EAAc,SAAW,GAAK,GAAS,KACzC,KAAM,IAAI,OACN,2EAGN,MAAA,GAAQ,GACJ,EACG,GAAW,EAAQ,EAAO,EAAe,GCjBlD,YACI,EAAiB,EAAI,EAAG,EAAS,GAAI,CACvC,GAAM,GAAK,EAAgB,EAAG,IAAK,QACnC,GAAI,EAAG,OAAS,EACd,KAAM,IAAI,OAAM,sDAElB,GAAM,GAAU,EAAG,MAAM,EAAG,MAAM,OAAS,GAC3C,GAAI,EAAI,EACN,KAAM,IAAI,OACN,uDAAuD,cAC5C,KAGjB,GAAM,GAAqB,CAAC,EAAG,GACzB,EAAmB,CAAC,EAAA,EAAG,OAAA,GAEvB,CAAC,EAAQ,GAAW,EAAO,UAC7B,GAAM,EAAgC,GAE1C,MAAO,CAAC,OAAA,EAAQ,QAAA,GAGX,GAAM,IAAO,EAAG,CAAC,MAAA,KC7BxB,YACI,EAAoB,EAAO,EAAG,EAAS,EAAG,EAC1C,EAAa,CACf,GAAI,GAAS,MAAS,IAAuB,OAC3C,KAAM,IAAI,OAAM,qCAElB,GAAM,GACF,GAAI,IAAY,EAAM,EAAQ,EAAO,GAAsB,GACzD,EAAM,GAAO,EAAO,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAI,OAAO,OAAQ,IACrC,EAAI,OAAO,GAAK,EAAU,YAE5B,MAAO,GAAI,WAGN,GAAM,IAAkB,EAAG,CAAC,iBAAA,KCkBnC,YACI,EAAiB,EAAO,EAAC,CAC3B,GAAM,GAAK,EAAgB,EAAG,IAAK,SAAU,qBAC7C,EAAO,EAAG,KAAO,EAAG,IAAM,wCAE1B,GAAM,GAAuB,CAAC,EAAG,GAC3B,EAAqB,CAAC,KAAA,GACtB,CAAC,EAAQ,GAAW,EAAO,UACH,GAAQ,EACR,GAC9B,MAAO,CAAC,OAAA,EAAQ,QAAA,GAGX,GAAM,IAAS,EAAG,CAAC,QAAA,KC5C1B,YACI,EAAiB,EAAiC,EAAmB,CACvE,GAAM,GAAK,EAAgB,EAAG,IAAK,sBAC7B,EACF,EAAgB,EAAY,aAAc,qBAAsB,SACpE,EAAO,GAAM,GAAc,IAAM,oCAEjC,GAAM,GAAmC,CAAC,EAAG,EAAI,WAAY,GACvD,EAAiC,CAAC,YAAA,GAExC,MAAO,GAAO,UACV,GAAoB,EACpB,GAGC,GAAM,IAAqB,EAAG,CAAC,oBAAA,KCnBtC,YAAkB,EAAsB,EAAO,EAAC,CAC9C,GAAM,GAAK,EAAgB,EAAG,IAAK,UAAW,qBACzC,EACD,GAAQ,CAAC,EAAG,MAAM,QAAU,EAAO,EAAG,MAAM,OAC5C,IACI,UAAU,iBAAoB,EAAG,MAAM,WAAW,EAAG,MAAM,WAEnE,GAAM,GAAuB,CAAC,MAAO,GAC/B,EAAqB,CAAC,KAAA,GAE5B,MAAO,GAAO,UACV,GAAQ,EAAgC,GAGvC,GAAM,IAAU,EAAG,CAAC,SAAA,KCnBrB,YACF,EAAyB,EAAY,GAAM,EAC3C,EAAgB,CAClB,MAAO,GAAO,aAAa,EAAc,EAAW,EAAM,GCjBtD,YAAoB,EAAqB,EAAoB,CACjE,GAAM,GAAU,GAChB,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IAC/B,EAAS,IACX,EAAQ,KAAK,GAIjB,GAAM,GAAW,GAAO,EAAW,SAE7B,EAAM,GAAO,CAAC,EAAQ,OAAQ,EAAU,QAAS,SACvD,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAM,GAAM,EAAS,WAAW,EAAQ,IAClC,EAAS,EAAI,EAAU,OAC7B,EAAI,OAAO,IAAI,EAAK,GAEtB,MAAO,GAAI,WCEb,kBAA2B,EAA4B,CACrD,GAAM,GACF,EAAgB,EAAW,YAAa,aAAc,QACpD,EAAO,KAAM,GAAW,OACxB,EAAM,GAAU,EAAW,MAAO,GACxC,MAAI,KAAc,GAChB,EAAW,UAEN,EAGF,GAAM,IAAa,GCP1B,kBACI,EAA2B,EAC3B,EAAa,CACf,GAAM,GAAU,EAAgB,EAAQ,SAAU,YAC5C,EAAQ,EAAgB,EAAM,OAAQ,WAAY,QAElD,EAAW,GAAQ,KAAO,EAAI,EAC9B,EAAU,EAAM,KAChB,EAAc,EAAQ,MAEvB,EAAO,EAAU,EAAG,IAAM,yBAC1B,GACD,EAAY,MAAM,EAAU,EAAW,GAAU,EAAM,MACvD,qEAEJ,GAAI,GAAc,EAClB,OAAS,GAAI,EAAU,EAAI,EAAW,EAAS,IAC7C,GAAe,EAAY,GAE7B,GAAM,GACF,EAAY,MAAM,EAAG,GAChB,OAAO,CAAC,GAAc,EAAY,MAAM,EAAW,IACtD,EAAiB,EAAQ,EAAS,GAClC,EAAe,EAAQ,EAAO,CAAC,KAC/B,EAAoB,KAAM,IAAW,GACrC,EAAU,GAAQ,EAAmB,CAAC,IAEtC,EAAM,GAAO,EAAgB,EAAS,GAG5C,MAAI,KAAW,GACb,EAAQ,UAEN,IAAS,GACX,EAAM,UAER,EAAQ,UACR,EAAe,UACf,EAAa,UACb,EAAkB,UAEX,EAGF,GAAM,IAAmB,GCjBhC,YACI,EAAsB,EAAgC,YACtD,EAAwB,KAAM,EAAW,GAAK,CAChD,EAAI,EAAgB,EAAG,IAAK,QAE5B,GAAM,GAAO,GAAS,EAAG,EAAK,GAC1B,EAAgB,EAAK,MACzB,GAAI,EAAU,CACZ,GAAM,GAAO,GAAe,EAAM,EAAE,OACpC,EAA0B,GAAqB,EAAK,MAAO,GAE7D,MAAO,GAAQ,EAAM,GAGvB,YACI,EAAW,EAAkB,EAAwB,KAAI,CAC3D,GAAI,EAAE,OAAS,EACb,MAAO,IAAI,GAIb,GAAI,EAAE,OAAS,GAAK,IAAS,KAC3B,MAAO,IAAS,EAAQ,EAAG,CAAC,KAAM,EAAG,GAIvC,GAAI,EAAE,OAAS,GAAK,MAAO,IAAS,UAChC,MAAM,QAAQ,IAAS,EAAK,SAAW,EAAG,CAC5C,GAAI,IAAM,EACR,MAAO,IAAI,GAAI,GAAI,GAErB,GAAI,IAAM,SACR,MAAO,IAAI,GAAI,GAAI,GAErB,GAAI,IAAM,UACR,MAAO,IAAI,GAAI,GAAI,GAErB,GAAI,IAAM,aAAe,IAAM,EAE7B,MAAO,IAAK,GAAI,GAAI,GAAI,GAAI,GAAO,EAAG,UAAW,IAGnD,KAAM,IAAI,OAAM,qCAAqC,KAIvD,GAAI,MAAM,QAAQ,IAAS,EAAK,SAAW,EAAG,CAC5C,GAAI,IAAM,EACR,MAAO,IAAI,GAAI,GAAI,GAAI,EAAK,IAAK,EAAK,GAAK,GAE7C,GAAI,IAAM,SACR,MAAO,IAAI,GAAI,GAAI,GAAI,EAAK,IAAK,EAAK,IAExC,GAAI,IAAM,UACR,MAAO,IAAI,GAAI,GAAI,GAAI,EAAK,IAAK,EAAK,IAExC,GAAI,IAAM,OAAS,IAAM,YAEvB,MAAO,IAAK,GAAI,GAAO,GAAI,IAG7B,KAAM,IAAI,OAAM,qCAAqC,KAGvD,KAAM,IAAI,OAAM,gCAAgC,KAG3C,GAAM,IAAO,EAAG,CAAC,MAAA,KChFxB,YACI,EAAiB,EAAiB,EAClC,EAAsB,EAAa,GAAI,CACzC,GAAM,GAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAK,EAAgB,EAAG,IAAK,iBAC7B,EAAS,EAAgB,EAAO,QAAS,iBAE/C,GAAiB,EAAI,GAChB,EACI,GAAY,EAAG,MAAO,EAAG,OAAQ,IAAM,6BAEhD,GAAM,GAAM,GAAO,GACb,EAAgB,GAAI,EAAK,GAE3B,EAAS,EAAI,GAAI,EAAI,GAAK,GAC9B,GAAI,EAAY,CACT,EACD,GAAQ,KAAM,IAAM,kDACxB,GAAM,GAAQ,EAAgB,EAAM,OAAQ,iBAC5C,EAAS,GAAI,EAAQ,GAAI,EAAK,GAAI,EAAQ,KAE5C,MAAO,IAAI,EAAI,GAGV,GAAM,IAAgB,EAAG,CAAC,eAAA,KCpCjC,YACI,EAA4B,EAC5B,EAAkB,CACpB,GAAM,GAAW,EAAgB,EAAS,UAAW,YAAa,SAC5D,EAAW,EAAgB,EAAS,UAAW,aACrC,GAAc,EAAU,EAAU,GAElD,GAAM,GAA0B,CAAC,QAAS,EAAU,QAAS,GACvD,EAAwB,CAAC,MAAA,GAG/B,MAAO,GAAO,UACH,GAAW,EACX,GAGN,GAAM,IAAY,EAAG,CAAC,WAAA,KChCvB,YACF,EAAuB,EAAsB,EAC7C,EAAqB,CACvB,GAAI,EAAc,QAAU,QAC1B,KAAM,IAAI,OACN,8EACsB,EAAc,UAE1C,GAAI,EAAc,KAAO,EACvB,KAAM,IAAI,OACN,sEACkB,EAAc,UAGtC,GAAM,GAAW,EAAc,KAAO,EAAI,EAAc,MAAM,GAAK,EAC7D,EAAU,EAAc,KAAO,EAAI,EAAc,MAAM,GAAK,EAElE,GAAI,EAAY,SAAW,EACzB,KAAM,IAAI,OACN,kDACI,EAAY,sBAAsB,MAG5C,GAAM,GAAY,EAAa,KAC/B,GAAI,CAAE,GAAa,OAAS,GACtB,EAAa,OAAS,GAAK,IAAc,GAC7C,KAAM,IAAI,OACN,oCACG,EAAa,2BAA2B,MAGjD,GAAI,EAAa,QAAU,EAAc,MACvC,KAAM,IAAI,OAAM,qDCGpB,YACI,EAAkC,EAClC,EAA0B,EAAkC,EAAC,CAC/D,GAAM,GACF,EAAgB,EAAe,gBAAiB,gBAAiB,SAC/D,EACF,EAAgB,EAAc,eAAgB,iBAC5C,EAAgB,EAClB,EAAc,eAAgB,gBAAiB,EAAc,OAEjD,GACZ,EAAgB,EAAe,EAAa,GAEhD,GAAM,GAA8B,CAClC,cAAe,EACf,aAAc,EACd,aAAc,GAGV,EAA4B,CAAC,YAAA,GAEnC,MAAO,GAAO,UACV,GAAe,EACf,GAGC,GAAM,IAAgB,EAAG,CAAC,eAAA,KC9BjC,YAAmB,EAAsB,EAA0B,CACjE,GAAM,GAAW,EAAgB,EAAS,UAAW,WAAY,SAG3D,EAAyB,CAAC,OAFrB,EAAgB,EAAG,IAAK,YAES,QAAS,GAErD,MAAO,GAAO,UAAU,GAAU,GAG7B,GAAM,IAAW,EAAG,CAAC,UAAA,KC3CtB,YAAwB,EAAW,EAAqB,CAC5D,GAAI,GAAc,KAChB,MAAO,GAAE,MAAM,QAEjB,GAAS,GAAY,EAAE,MAAO,GAC5B,MAAO,GAET,GAAI,EAAE,MAAM,SAAW,EAAW,OAAQ,CACxC,GAAM,GAAyB,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAE,MAAM,OAAQ,IAC9B,EAAW,IAAM,MAAQ,EAAE,MAAM,IAAM,KACzC,EAAa,KAAK,EAAE,MAAM,IAE1B,EAAa,KAAK,EAAW,IAGjC,MAAO,GAGT,MAAO,GCKT,YACI,EAAsB,EAAc,EACpC,EAAoB,CACtB,GAAM,GAAK,EAAgB,EAAG,IAAK,WAUnC,GARK,EACD,EAAG,QAAU,UACb,IAAM,gFACmB,EAAG,yBAC3B,EACD,GAAQ,GAAK,EAAO,EACpB,IAAM,qDAAqD,MAE3D,IAAS,EACX,MAAO,aAAa,IAAS,EAAG,QAAU,EAG5C,GAAM,GAAc,GAAc,EAAI,GAChC,EAAW,EAAI,EACf,EAAa,GACf,GAAM,GAAI,GAAc,EAAa,EAAG,EAAG,UAAW,GAAO,IAC7D,GAEJ,MAAO,GAAI,EAAI,GAGV,GAAM,IAAU,EAAG,CAAC,SAAA,KC1DrB,YAA8B,EAAa,CAE/C,MAAO,MAAK,MAAM,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,IAAI,GAAS,KAAK,IAAI,MAG/D,YACF,EAAsB,EAAW,EAAS,CAC5C,GAAM,GAAO,EAAI,EAAe,EAC1B,EAAY,GAAI,cAAa,GACnC,OAAS,GAAI,EAAG,EAAI,EAAc,EAAE,EAAG,CACrC,GAAM,GAAU,EAAM,KAAK,GAAK,EAAM,GAAe,EAAO,GAC5D,EAAU,GAAK,EAAI,EAAI,KAAK,IAAI,GAElC,MAAO,IAAS,EAAW,WCO7B,kBACI,EAA2B,EAAuB,EAAI,EAAC,CACzD,GAAM,GAAe,EAAgB,EAAa,cAAe,UAC3D,EAAW,EAAgB,EAAS,UAAW,UAErD,EACI,EAAa,KAAO,EACpB,IAAM,uEACS,EAAa,QAChC,EACI,EAAa,KAAO,IAAM,EAAS,KACnC,IAAM,mFAEC,EAAa,yBAAyB,EAAS,QAC1D,GACI,EAAa,MAAM,MAAM,EAAG,EAAa,MAAM,OAAS,GACxD,EAAS,MACT,2FAEJ,GAAM,GAAU,EAAa,MAAM,EAAa,MAAM,OAAS,GAC/D,EACI,EAAI,GAAK,GAAK,EACd,IAAM,4EACY,eAAqB,KAE3C,GAAM,GAAkB,KAAM,GAAa,OACrC,EAAc,KAAM,GAAS,OAI7B,CAAC,EAAO,GAAQ,CAAC,EAAgB,OAAS,EAAS,GACnD,EAAY,GAAuB,OAAQ,GAEjD,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAS,EAAI,EACb,EAAO,EAAgB,SAAS,EAAQ,EAAS,GACjD,EAAmD,GACzD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAU,KAAK,CAAC,MAAO,EAAK,GAAI,MAAO,IAEzC,EAAU,KAAK,CAAC,EAAG,IAAM,EAAE,MAAQ,EAAE,OAErC,EAAU,GAAK,EACf,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,GAAI,EAAU,GAAG,QAAU,EAAY,GAAI,CACzC,EAAU,GAAK,EACf,OAKN,MAAI,KAAgB,GAClB,EAAa,UAEX,IAAY,GACd,EAAS,UAIJ,GAAO,EAAW,EAAS,MAAO,QAGpC,GAAM,IAAc,GCtG3B,GAAA,GAAA,GAAA,GAAA,CAAA,OAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,OAAA,IAAA,KC+CA,YACI,EAAM,EAAO,EACb,EACA,EACA,EAA4B,OAC5B,EAAwC,CAC1C,GAAI,GAAM,EACN,EAAE,OAAS,GACb,GAAM,EAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,GAAI,GAAO,EACP,EAAK,OAAS,GAChB,GAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEvD,EACD,EAAI,OAAS,EACb,IAAM,iEACC,EAAI,UACV,EACD,EAAK,OAAS,EACd,IAAM,8DACC,EAAK,UACX,EACD,EAAY,SAAW,EACvB,IAAM,mEACC,MACX,GAAM,GAAU,IAAe,OAAS,EAAI,MAAM,GAAK,EAAI,MAAM,GAC3D,EAAW,IAAe,OAAS,EAAK,MAAM,GAAK,EAAK,MAAM,GAC/D,EACD,IAAY,EAAY,GACxB,IAAM,4CAA4C,wCACd,EAAY,OAC/C,EACD,IAAa,EAAY,GACzB,IAAM,0CAA0C,0CACV,EAAY,QAClD,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,gFACiB,iBAA+B,MAG5D,GAAM,GAAqC,CAAC,EAAG,EAAK,GAAI,GAClD,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,EAAiB,YAAA,GAGhD,MAAO,GAAO,UACH,GAAsB,EACtB,GAGN,GAAM,IAAuB,EAAG,CAAC,sBAAA,KCpElC,YACF,EAAY,EAAW,EAAsB,CAC/C,GAAI,GAAc,MAAQ,IAAe,SACvC,MAAO,GAET,GAAI,IAAe,OACjB,MAAO,GAAI,EAAI,GAAK,IAEtB,KAAM,IAAI,OACN,gDAAgD,MAIhD,YACF,EAAc,EAAoB,CACpC,GAAI,GAAM,EACJ,EACa,GAAiB,EAAK,MAAO,EAAa,OAC7D,MAAI,GAAW,OAAS,GACtB,GAAM,GAAI,EAAK,IAEV,EAAQ,EAAK,EAAK,OAGrB,YACF,EAAW,EAAwB,EACnC,EAAuB,CACzB,GAAI,IAAe,SACjB,MAAO,GACF,GAAI,IAAe,OACxB,MAAO,IAAK,GACP,GAAI,IAAe,MACxB,MAAO,IAAI,GACN,GAAI,IAAe,QACxB,MAAO,IAAM,GACR,GAAI,IAAe,QACxB,MAAO,IAAM,EAAG,GACX,GAAI,IAAe,YACxB,MAAO,IAAU,EAAG,GAEtB,KAAM,IAAI,OAAM,4BAA4B,MAIvC,GAAM,IAAa,CAAC,EAAuB,IAEzC,CADc,GAAgB,IACb,IAAe,SCiBzC,YAAmD,CACjD,EAAA,EACA,OAAA,EACA,QAAA,EACA,IAAA,EACA,WAAA,EAAa,OACb,UAAA,EAAY,CAAC,EAAG,GAChB,gBAAA,EACA,KAAA,EACA,WAAA,EAAa,SACb,uBAAA,EACA,eAAA,GAaD,CAGC,GAFA,EAAa,GAAc,SAEvB,GAAW,EAAO,MAAM,cAAe,KAAgB,GAAO,CAChE,GAAI,GAAS,GACT,EAAG,EAAQ,EAAS,EAAK,EAAY,EAAW,GACpD,MAAI,IAAQ,MACV,GAAS,GAAI,EAAQ,IAGhB,GACI,EAAQ,EAAY,EAAwB,GAGzD,GAAM,GAAK,EAAgB,EAAG,IAAK,UAC7B,EAAU,EAAgB,EAAQ,SAAU,UAE9C,EAAM,EACN,EAAe,GAEf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEtD,EACD,EAAI,OAAS,EACb,IAAM,6DACC,EAAI,SACV,EACD,EAAQ,OAAS,EACjB,IAAM,8DACC,EAAQ,SACf,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,6EACiB,iBAA+B,MAGvD,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,oCAAoC,EAAI,MAAM,yCACtB,EAAQ,MAAM,OAC3C,EACS,GAA+B,EAAS,GAClD,IAAM,uEACa,oBAA0B,MAC5C,EACD,IAAe,OACf,IAAM,sCACF,2CAER,GAAM,GAAqB,GACvB,EAAI,MAAO,EAAQ,MAAO,EAAS,EAAW,EAAK,GAEnD,EACA,GAAQ,MACV,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,CAAC,GAAS,GAAe,EAAO,GAEjB,GAA2B,EAAS,SAAU,EAAM,QAGrE,GAAI,GACA,GAA0B,MAC5B,GAA0B,EACtB,EAAwB,gBAAiB,iBAG/C,GAAM,GAAO,CAAC,EAAc,IAAmB,CAC7C,GAAM,CAAC,EAAS,EAAK,EAAG,GACpB,EAEE,EAAe,GAAqB,EAAI,EAAG,GAE5C,EACS,GAAkB,GAC5B,IAAM,uHAEoD,MAE9D,GAAM,GACF,GAAoB,EAAI,MAAO,EAAc,EAAS,EAAS,GAC7D,EACF,GAAqB,EAAK,EAAc,EAAQ,MAAO,EAAS,GAC9D,EAAgB,CAAC,EAAM,GAE7B,GAAI,GAAS,KAAM,CACjB,GAAM,GAAU,GAAqB,EAAO,GAC5C,EAAI,KAAK,GAEX,MAAO,IAGH,EAA4B,CAChC,EAAG,EACH,OAAQ,EACR,KAAM,EACN,uBAAwB,GAGpB,EAA0B,CAC9B,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GAKF,MAAI,IAAQ,KAEN,GAAW,CAAC,EAAe,EAAkB,IAAsB,CACjE,GAAI,GAEA,EAAO,UACH,GAAa,EACb,GAER,MAAA,GAAK,CAAC,EAAQ,EAAK,IAEf,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAEpB,EAAK,GAEI,GACrB,CAAC,EAAe,EAAkB,EAAc,IAAsB,CACpE,GAAI,GAAyB,EAAO,UAChC,GAAa,EACb,GAEJ,MAAA,GAAK,CAAC,EAAQ,EAAK,EAAK,IAEpB,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAGZ,EAAK,EAAS,GAGnC,GAAM,IAAS,EAAG,CAAC,aAAA,KCxP1B,YACI,EAAM,EAAO,EACb,EAAkC,EAClC,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAI,GAAM,EACN,EAAE,OAAS,GACb,GAAM,EAAQ,EAAG,CAAC,EAAG,EAAE,MAAM,GAAI,EAAE,MAAM,GAAI,EAAE,MAAM,MAEvD,GAAI,GAAO,EACP,EAAK,OAAS,GAChB,GAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAG5D,GAAM,GAAoD,CAAC,EAAG,EAAK,GAAI,GACjE,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,UAAA,EAAW,YAAA,GAG/C,MAAO,GAAO,UACH,GACA,EAAgC,GAItC,GAAM,IACT,EAAG,CAAC,qCAAA,KC1BR,YACI,EAA0C,EAAO,EACjD,EAAkC,EAClC,EAAqC,CAAC,EAAG,GACzC,EAAwC,CAC1C,GAAI,GAAO,EACP,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAO,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAG5D,GAAM,GAAmD,CAAC,GAAI,EAAM,OAAA,GAC9D,EACF,CAAC,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,UAAA,EAAW,WAAY,GAErD,EAEF,EAAO,UACH,GAAoC,EACpC,GAER,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IACT,EAAG,CAAC,oCAAA,KCoCR,YAA4D,CAC1D,EAAA,EACA,OAAA,EACA,QAAA,EACA,IAAA,EACA,WAAA,EAAa,OACb,UAAA,EAAY,CAAC,EAAG,GAChB,gBAAA,EACA,KAAA,EACA,WAAA,EAAa,SACb,uBAAA,EACA,eAAA,GAaD,CACC,GAAI,GAAW,EAAO,MAAM,cAAe,KAAgB,GAAO,CAChE,GAAI,GAAS,GACT,EAAG,EAAQ,EAAS,EAAK,EAAY,EAAW,GACpD,MAAI,IAAQ,MACV,GAAS,GAAI,EAAQ,IAGhB,GACI,EAAQ,EAAY,EAAwB,GAGzD,GAAM,GAAK,EAAgB,EAAG,IAAK,mBAC7B,EAAU,EAAgB,EAAQ,SAAU,mBAE9C,EAAM,EACN,EAAe,GACf,EAAG,OAAS,GACd,GAAe,GACf,EAAM,EAAQ,EAAI,CAAC,EAAG,EAAG,MAAM,GAAI,EAAG,MAAM,GAAI,EAAG,MAAM,MAEtD,EACD,EAAI,OAAS,EACb,IAAM,sEACM,EAAI,SACf,EACD,EAAQ,OAAS,EACjB,IAAM,uEACc,EAAQ,SAC3B,EACD,EAAI,MAAM,KAAO,EAAQ,MAAM,GAC/B,IAAM,6DACE,EAAI,MAAM,qDACJ,EAAQ,MAAM,OAC5B,GAAa,MACf,GAAY,CAAC,EAAG,IAEb,EACS,GAA+B,EAAS,GAClD,IACI,sFACqB,oBAA0B,MAEnD,GAAmB,MAChB,EACI,GAAM,GACX,IAAM,qFACuB,iBAA+B,MAGlE,GAAM,GAAqB,GACvB,EAAI,MAAO,EAAQ,MAAO,EAAS,EAAW,EAAK,EACnD,IAEA,EACA,GAAQ,MACV,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,CAAC,GAAS,GAAe,EAAO,GAEjB,GAA2B,EAAS,SAAU,EAAM,QAGrE,GAAI,GACA,GAA0B,MAC5B,GAA0B,EACtB,EAAwB,gBAAiB,0BAG/C,GAAM,GAAO,CAAC,EAAc,IAAmB,CACxC,EACS,GAAkB,GAC5B,IAAM,mHAEE,MACZ,GAAM,CAAC,EAAS,EAAK,EAAG,GAAQ,EAE1B,EAAe,GAAqB,EAAI,EAAG,GAE3C,EAAO,GACR,EAAiB,MAAO,EAAc,EAAqB,EAC5D,EAAK,EAAW,GACd,EAAY,GACd,EAAiB,EAAe,EAAqB,MAAO,EAC5D,EAAK,EAAW,GAEpB,GAAI,GAAQ,KAAM,CAChB,GAAM,GAAU,GAAqB,EAAO,GAC5C,MAAO,CAAC,EAAM,EAAW,GAE3B,MAAO,CAAC,EAAM,IAGV,EAAqC,CACzC,EAAG,EACH,OAAQ,EACR,KAAM,EACN,uBAAwB,GAEpB,EAAmC,CACvC,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GAKF,MAAI,IAAQ,KAEN,GAAW,CAAC,EAAe,EAAkB,IAAsB,CAEjE,GAAI,GAAyB,EAAO,UAChC,GAAsB,EACtB,GAEJ,MAAA,GAAK,CAAC,EAAQ,EAAK,IAEf,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAEpB,EAAK,GAEI,GACrB,CAAC,EAAe,EAAkB,EAAc,IAAsB,CAEpE,GAAI,GAAyB,EAAO,UAChC,GAAsB,EACtB,GAEJ,MAAA,GAAK,CAAC,EAAQ,EAAK,EAAK,IAEpB,GAEF,GAAM,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,MAIrD,CAAC,MAAO,EAAK,SAAU,KAGZ,EAAK,EAAS,GAGnC,GAAM,IAAkB,EAAG,CAAC,sBAAA,KChNnC,YAAwC,CACtC,EAAA,EACA,EAAA,EACA,WAAA,EAAa,GACb,WAAA,EAAa,GACb,KAAA,EACA,WAAA,EAAa,SACb,uBAAA,EACA,eAAA,GAUD,CACG,GAAI,GAAW,EAAO,MAAM,cAAe,KAAgB,GAAO,CAChE,GAAI,GAAS,GAAc,EAAG,EAAG,EAAY,GAC7C,MAAI,IAAQ,MACV,GAAS,GAAI,EAAQ,IAGhB,GACI,EAAQ,EAAY,EAAwB,GAIzD,GAAI,GAAK,EAAgB,EAAG,IAAK,gBAC7B,EAAK,EAAgB,EAAG,IAAK,gBACjC,CAAC,EAAI,GAAM,GAAe,EAAI,GAE9B,GAAM,GACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GACtD,EACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GAEtD,EACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GACtD,EACF,EAAa,EAAG,MAAM,EAAG,KAAO,GAAK,EAAG,MAAM,EAAG,KAAO,GAEtD,EAAa,EAAG,MAAM,MAAM,EAAG,IAC/B,EAAa,EAAG,MAAM,MAAM,EAAG,IAC/B,EAAiB,GAAc,GAC/B,EAAiB,GAAc,GAEhC,EACD,EAAG,MAAQ,GAAK,EAAG,MAAQ,GAAK,EAAG,OAAS,EAAG,KAC/C,IAAM,kFACoB,EAAG,YAAY,EAAG,SAE3C,EACI,GAAY,EAAY,GAC7B,IAAM,4CAA4C,WAC3C,6BAAsC,EAAG,aACzC,EAAG,qBAET,EACD,IAAgB,EAChB,IAAM,wCAAwC,WACvC,6BAAuC,EAAG,aAC1C,EAAG,wBAAwB,oBACX,iBAE3B,GAAM,GAAW,EAAG,MAAM,MAAM,EAAG,IAAI,OAAO,CAAC,EAAa,IAEtD,EAAgB,EAClB,EAAQ,EAAI,CAAC,EAAW,EAAa,IACrC,EAAQ,EAAI,CAAC,EAAW,EAAa,IACnC,EAAgB,EAClB,EAAQ,EAAI,CAAC,EAAW,EAAa,IACrC,EAAQ,EAAI,CAAC,EAAW,EAAa,IAErC,EACA,GAAQ,MACV,GAAQ,EAAgB,EAAM,OAAQ,gBACtC,CAAC,GAAS,GAAe,EAAO,GAEjB,GAA2B,EAAU,EAAM,QAG5D,GAAI,GACA,GAA0B,MAC5B,GAA0B,EACtB,EAAwB,gBAAiB,iBAG/C,GAAM,GAAO,CAAC,EAAc,IAAmB,CAC7C,GAAM,CAAC,EAAK,EAAK,EAAG,GAAS,EAIvB,EACF,GAAqB,EAAQ,EAAI,EAAE,OAAQ,EAAG,GAC9C,EACA,GAgBJ,GAdI,CAAC,GAAc,CAAC,EAClB,GAAO,GAAc,EAAc,EAAK,GAAO,IAC/C,GAAO,GAAc,EAAK,EAAc,GAAM,KACrC,CAAC,GAAc,EACxB,GAAO,GAAc,EAAc,EAAK,GAAO,IAC/C,GAAO,GAAc,EAAc,EAAK,GAAM,KACrC,GAAc,CAAC,EACxB,GAAO,GAAc,EAAK,EAAc,GAAO,IAC/C,GAAO,GAAc,EAAK,EAAc,GAAO,KAE/C,GAAO,GAAc,EAAK,EAAc,GAAM,IAC9C,GAAO,GAAc,EAAc,EAAK,GAAM,KAG5C,GAAQ,KAAM,CAChB,GAAM,GAAU,GAAqB,EAAO,GAC5C,MAAO,CAAC,EAAM,GAAM,OAEpB,OAAO,CAAC,EAAM,KAIZ,EAA6B,CACjC,EAAG,EACH,EACA,KAAM,EACN,uBAAwB,GAEpB,EACF,CAAC,WAAA,EAAY,WAAA,EAAY,WAAA,EAAY,eAAA,GAIzC,MAAI,IAAQ,KAEN,GAAW,CAAC,EAAe,EAAe,IAAsB,CAC9D,GAAM,GAEF,EAAO,UACH,GAAc,EACd,GAER,MAAA,GAAK,CAAC,EAAK,EAAK,IAET,CAAC,MAAO,EAAQ,EAAK,GAAW,SAAU,KAEvC,EAAK,GAEI,GACrB,CAAC,EAAe,EAAe,EAAe,IAAsB,CAClE,GAAM,GAEF,EAAO,UACH,GAAc,EACd,GAER,MAAA,GAAK,CAAC,EAAK,EAAK,EAAK,IAEd,CAAC,MAAO,EAAQ,EAAK,GAAW,SAAU,KAG/B,EAAK,EAAK,GAI/B,GAAM,IAAS,EAAG,CAAC,aAAA,KC7L5B,YAAwB,EAAoB,CAC1C,MAAO,IAAa,EAAc,IAAM,KAEnC,GAAM,IAAgB,EAAG,CAAC,eAAA,KCHjC,YAAqB,EAAoB,CACvC,MAAO,IAAa,EAAc,GAAK,IAGlC,GAAM,IAAa,EAAG,CAAC,YAAA,KCI9B,YACI,EAAkB,EAAqB,EAAmB,EAAS,GACnE,EAAW,EAAC,CACd,GAAI,GAAQ,EACN,EAAmB,GACzB,KAAO,EAAQ,GAAe,EAAO,MACnC,EAAO,KAAK,GAAM,EAAQ,EAAO,IACjC,GAAS,EAGX,GAAI,EACF,KAAO,EAAQ,EAAO,MAAM,CAC1B,GAAM,GAAU,EAAQ,EAAe,EAAO,KACxC,EAAM,GAAO,CACjB,GAAM,EAAQ,EAAO,EAAc,GAAS,GAAK,CAAC,GAAS,KAE7D,EAAO,KAAK,GACZ,GAAS,EAIb,MAAI,GAAO,SAAW,EACb,GAAS,GAAI,CAAC,EAAG,IAGnB,EAAQ,GAAO,GAAS,CAAC,EAAO,OAAQ,IAE1C,GAAM,IAAQ,EAAG,CAAC,OAAA,KCxBzB,YACI,EAAkB,EAAqB,EACvC,EACA,EAAyC,GAAU,CACjD,GAAa,MACf,GAAY,GAAoB,IAElC,GAAM,GAAe,GAAM,EAAQ,EAAa,GAC1C,EAAiB,EAAI,EAAc,EAAS,IAC5C,EAAmB,GACzB,OAAS,GAAI,EAAG,EAAI,EAAa,MAAM,GAAI,IACzC,EAAO,KACH,GAAK,GAAM,EAAgB,CAAC,EAAG,GAAI,CAAC,EAAG,IAAe,IAE5D,MAAO,IAAO,GAET,GAAM,IAAO,EAAG,CAAC,MAAA,KCTxB,YACI,EACA,EACA,EACA,EACA,EAA+B,WAC/B,EAAqB,EAAC,CAExB,GAAM,GAAS,EAAgB,EAAO,QAAS,iBACzC,EAAS,EAAgB,EAAO,QAAS,gBAAiB,WAC1D,EAAU,EAAgB,EAAQ,SAAU,gBAAiB,SAE7D,EAAW,EAAO,MAAM,GAEzB,EACD,EAAO,OAAS,EAChB,IAAM,6DACc,EAAO,SAC1B,EACD,EAAO,OAAS,GAAK,EAAO,MAAM,KAAO,EACzC,IAAM,oDAAoD,sBACrC,EAAO,UAC3B,EACD,EAAQ,OAAS,GAAK,EAAQ,MAAM,KAAO,EAC3C,IAAM,qDAAqD,oBACtC,EAAO,UAC3B,EACD,EAAS,SAAW,EACpB,IAAM,wEACQ,EAAS,WACtB,EACD,EAAS,IAAM,GAAK,EAAS,IAAM,EACnC,IAAM,2CAA2C,KAChD,EACD,IAAW,YAAc,IAAW,UACpC,IAAM,+CAA+C,KAEzD,GAAM,GACoB,CAAC,MAAO,EAAQ,MAAO,EAAQ,OAAQ,GAC3D,EAA4B,CAAC,OAAA,EAAQ,mBAAA,EAAoB,SAAA,GAI/D,MAHY,GAAO,UACf,GAAe,EACf,GAIC,GAAM,IAAgB,EAAG,CAAC,eAAA,KChEjC,YAAwB,EAA0B,CAChD,GAAM,GAAS,EAAgB,EAAO,QAAS,gBAAiB,WAE3D,EACD,EAAO,OAAS,EAChB,IAAM,6DACc,EAAO,SAE/B,GAAM,GAA8B,CAAC,MAAO,GAG5C,MADI,GAAO,UAAU,GAAe,EAAgC,IAI/D,GAAM,IAAgB,EAAG,CAAC,eAAA,KCHjC,YACI,EAA4B,EAC5B,EAA6C,EAC7C,EAAkC,GAAG,CACvC,GAAM,GAAS,EAAgB,EAAO,QAAS,mBAAoB,WAE9D,EACD,EAAO,OAAS,EAChB,IAAM,gEACc,EAAO,SAE/B,GAAM,GAAiC,CAAC,MAAO,GACzC,EAA+B,CAAC,QAAA,EAAS,UAAA,EAAW,OAAA,GAI1D,MAHY,GAAO,UACf,GAAkB,EAClB,GAIC,GAAM,IAAmB,EAAG,CAAC,kBAAA,KC3CpC,YACI,EAAiB,EAAkB,EACnC,EAAsB,EAAwB,EAAqB,CAMjE,GAAgB,MAClB,GAAe,IAEb,GAAkB,MACpB,GAAiB,OAAO,mBAEtB,GAAgB,MAClB,GAAe,GAGjB,GAAM,GAAW,EAAM,MAAM,GAC7B,MAAA,GAAgB,KAAK,IAAI,EAAe,GAEnC,EACD,GAAK,GAAgB,GAAgB,EACrC,IAAM,4CAA4C,MACjD,EACD,EAAM,OAAS,EACf,IAAM,+CAA+C,EAAM,SAC1D,EACD,EAAM,MAAM,KAAO,EACnB,IACI,oDAAoD,EAAM,MAAM,MACnE,EAAO,EAAO,OAAS,EAAG,IAAM,8BAChC,EACD,EAAO,MAAM,KAAO,EACpB,IAAM,sDAAsD,cAC7C,EAAO,MAAM,MAC3B,EACD,GAAK,GAAgB,GAAgB,EACrC,IAAM,4CAA4C,MAC/C,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,aAAA,GCfvD,YACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBAAiB,CAC3C,GAAM,GAAS,EAAgB,EAAO,QAAS,qBACzC,EAAU,EAAgB,EAAQ,SAAU,qBAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,GAClD,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eAExB,GAAM,GAAQ,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,GAC5C,MAAO,GAAO,UACV,GAAqB,CAAC,MAAO,EAAQ,OAAQ,GAAU,GAGtD,GAAM,IAAoB,EAAG,CAAC,mBAAA,KChC/B,YACF,EAAU,EAAY,EAAmC,CAC3D,GAAM,GAAQ,GAAa,EAAK,EAAS,GACnC,EAAiB,EAAQ,EAAI,CAAE,GAAQ,GAAK,EAClD,EAAI,OAAO,EAAgB,EAAG,GAkB1B,YACF,EAAU,EAAW,EAAmC,CAC1D,MAAO,IAAc,EAAK,EAAQ,GAAc,IAUlD,YAA8B,EAAM,EAAI,CACtC,MAAO,GAAI,EAAI,EAAI,EAAI,EAAI,GAAK,EAGlC,YACI,EAAU,EAAW,EAAkC,CACzD,GAAI,GAAO,EACP,EAAQ,EAAI,OACZ,EAAS,EACT,EAAQ,GACZ,KAAO,EAAO,GAAO,CACnB,EAAS,EAAS,GAAQ,IAAU,GACpC,GAAM,GAAgB,EAAW,EAAQ,EAAI,IACzC,EAAgB,EAClB,EAAO,EAAS,EAEhB,GAAQ,EAGR,EAAQ,CAAC,GAIb,MAAO,GAAQ,EAAO,CAAC,EAAO,ECpD1B,YACF,EAAmB,EAAoB,EACvC,EAAsB,EAAsB,CAC9C,MAAO,IACH,EAAO,EAAQ,EAAe,EAAc,EAC5C,GAGA,YACF,EAAmB,EAAoB,EACvC,EAAsB,EACtB,EAA2B,CAC7B,MAAO,IACH,EAAO,EAAQ,EAAe,EAAc,EAC5C,EAAsB,GACtB,EAA6C,IAI7C,YACF,EAAmB,EAAoB,EACvC,EAAsB,EACtB,EAAoB,CACtB,MAAO,IACH,EAAO,EAAQ,EAAe,EAAc,EAAgB,EAC5D,IAGN,YACI,EAAmB,EAAoB,EACvC,EAAsB,EAAwB,EAC9C,EAAqB,GAAO,EAAqB,GACjD,EAAqB,GAAK,CAG5B,GAAM,GAAa,GAEnB,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IAC7B,EAAO,GAAK,GACd,EAAW,KAAK,CAAC,MAAO,EAAO,GAAI,SAAU,EAAG,mBAAoB,IAIxE,EAAW,KAAK,IAIhB,GAAM,GAAQ,EAAe,EAAK,IAAO,EAAgB,EAEnD,EAA4B,GAC5B,EAA2B,GAEjC,KAAO,EAAgB,OAAS,GAAiB,EAAW,OAAS,GAAG,CACtE,GAAM,GAAY,EAAW,MACvB,CAAC,MAAO,EAAe,SAAA,EAAU,mBAAA,GAAsB,EAE7D,GAAI,EAAgB,EAClB,MASF,GAAI,GAAkB,GACtB,OAAS,GAAI,EAAgB,OAAS,EAAG,GAAK,EAAoB,EAAE,EAAG,CACrE,GAAM,GAAM,GAAsB,EAAO,EAAU,EAAgB,IAEnE,GAAI,GAAO,EAAc,CACvB,EAAkB,GAClB,MAMF,GAHA,EAAU,MACN,EAAU,MAAQ,GAAe,EAAc,EAAO,GAEtD,EAAU,OAAS,EACrB,MAWJ,EAAU,mBAAqB,EAAgB,OAE1C,GAGC,GAAU,QAAU,EACtB,GAAgB,KAAK,GACrB,EAAe,KAAK,EAAU,QACrB,EAAU,MAAQ,GAG3B,GAAa,EAAY,EAAW,KAM1C,GAAM,GAAe,EAAgB,OAC/B,EAAa,EAAgB,EAE/B,GAAsB,EAAa,GACrC,GAAgB,KAAK,GAAG,GAAI,OAAM,GAAY,KAAK,IACnD,EAAe,KAAK,GAAG,GAAI,OAAM,GAAY,KAAK,KAGpD,GAAM,GAAkC,CAAC,gBAAA,GAEzC,MAAI,IACF,GAAO,eAAoB,GAGzB,GACF,GAAO,aAAkB,GAGpB,EAGT,YAA+B,EAAmB,EAAW,EAAS,CACpE,GAAM,GAAS,EAAM,SAAS,EAAI,EAAG,EAAI,EAAI,GACvC,EAAS,EAAM,SAAS,EAAI,EAAG,EAAI,EAAI,GACvC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAQ,KAAK,IAAI,EAAO,GAAI,EAAO,IACnC,EAAS,GAAQ,GAAU,GAAQ,GACnC,EAAS,GAAQ,GAAU,GAAQ,GACzC,GAAI,GAAS,GAAK,GAAS,EACzB,MAAO,GAET,GAAM,GAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAO,GACnC,EAAmB,KAAK,IAAI,EAAmB,EAAkB,GACnE,KAAK,IAAI,EAAmB,EAAkB,GAClD,MAAO,GAAoB,GAAQ,EAAQ,GAO7C,YAAwB,EAAsB,EAAe,EAAW,CACtE,GAAM,GAAS,KAAK,IAAI,EAAQ,EAAM,GACtC,MAAO,IAAO,EAAe,EAAS,EAGxC,YAA6B,EAAe,EAAa,CAKvD,MAAQ,GAAG,MAAQ,EAAG,OAChB,EAAG,QAAU,EAAG,OAAW,EAAG,SAAW,EAAG,SC/JpD,kBACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBAAiB,CAC3C,GAAM,GAAS,EAAgB,EAAO,QAAS,0BACzC,EAAU,EAAgB,EAAQ,SAAU,0BAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,GAClD,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eAExB,GAAM,GAAiB,KAAM,SAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,SAC3D,EAAY,EAAe,GAC3B,EAAa,EAAe,GAK5B,CAAC,gBAAA,GAAmB,GACtB,EAAW,EAAY,EAAe,EAAc,GACxD,MAAI,KAAW,GACb,EAAO,UAEL,IAAY,GACd,EAAQ,UAGH,GAAS,EAAiB,SAG5B,GAAM,IAAyB,GCnBtC,YACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAe,EAAG,CACpB,GAAM,GAAS,EAAgB,EAAO,QAAS,qBACzC,EAAU,EAAgB,EAAQ,SAAU,qBAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,GACJ,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eACxB,EAAe,EAAO,aAEtB,GAAM,GAAoC,CAAC,MAAO,EAAQ,OAAQ,GAC5D,EACF,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,aAAA,GAG5C,EAAS,EAAO,UACH,GAAqB,EACrB,GAEnB,MAAO,CAAC,gBAAiB,EAAO,GAAI,eAAgB,EAAO,IAGtD,GAAM,IAA6B,EAAG,CAAC,4BAAA,KChC9C,kBACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAe,EAAG,CACpB,GAAM,GAAS,EAAgB,EAAO,QAAS,0BACzC,EAAU,EAAgB,EAAQ,SAAU,0BAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,GACJ,EAAgB,EAAO,cACvB,EAAe,EAAO,aACtB,EAAiB,EAAO,eACxB,EAAe,EAAO,aAEtB,GAAM,GAAiB,KAAM,SAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,SAC3D,EAAY,EAAe,GAC3B,EAAa,EAAe,GAK5B,CAAC,gBAAA,EAAiB,eAAA,GAAkB,GACtC,EAAW,EAAY,EAAe,EAAc,EACpD,GAEJ,MAAI,KAAW,GACb,EAAO,UAEL,IAAY,GACd,EAAQ,UAGH,CACL,gBAAiB,GAAS,EAAiB,SAC3C,eAAgB,GAAS,IAItB,GAAM,IAAkC,GC1C/C,YACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAqB,GAAK,CAC5B,GAAM,GAAS,EAAgB,EAAO,QAAS,qBACzC,EAAU,EAAgB,EAAQ,SAAU,qBAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,MACE,EAAiB,EAAO,cACxB,EAAgB,EAAO,aACvB,EAAkB,EAAO,eAEzB,EAAoC,CAAC,MAAO,EAAQ,OAAQ,GAC5D,EAAkC,CACtC,cAAe,EACf,aAAc,EACd,eAAgB,EAChB,mBAAA,GAII,EAAS,EAAO,UACH,GAAqB,EACrB,GAEnB,MAAO,CAAC,gBAAiB,EAAO,GAAI,aAAc,EAAO,IAGpD,GAAM,IAA0B,EAAG,CAAC,yBAAA,KClC3C,kBACI,EAA4B,EAC5B,EAAuB,EAAe,GACtC,EAAiB,OAAO,kBACxB,EAAqB,GAAK,CAC5B,GAAM,GAAS,EAAgB,EAAO,QAAS,0BACzC,EAAU,EAAgB,EAAQ,SAAU,0BAE5C,EAAS,GACX,EAAQ,EAAS,EAAe,EAAc,EAC9C,MACE,EAAiB,EAAO,cACxB,EAAgB,EAAO,aACvB,EAAkB,EAAO,eAEzB,CAAC,EAAW,GACd,KAAM,SAAQ,IAAI,CAAC,EAAO,OAAQ,EAAQ,SAKxC,CAAC,gBAAA,EAAiB,aAAA,GAAgB,GACpC,EAAW,EAAY,EAAgB,EAAe,EACtD,GAEJ,MAAI,KAAW,GACb,EAAO,UAEL,IAAY,GACd,EAAQ,UAGH,CACL,gBAAiB,GAAS,EAAiB,SAC3C,aAAc,GAAO,EAAc,UAIhC,GAAM,IAA+B,GCxC5C,YACI,EAAsB,EAAwB,EAAe,GAC7D,EAAmB,GAAK,CAC1B,GAAM,GAAU,EAAgB,EAAQ,SAAU,kBAE7C,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,gEACM,EAAQ,SACnB,EACD,EAAK,SAAW,EAChB,IAAM,6DACC,MACN,EACD,IAAqB,IAAS,IAAiB,GAC/C,IAAM,qFAGV,GAAI,GAAc,EACd,EAAe,GACf,EAAQ,OAAS,GACnB,GAAe,GACf,EAAc,EACV,EAAS,CAAC,EAAG,EAAQ,MAAM,GAAI,EAAQ,MAAM,GAAI,EAAQ,MAAM,MAGrE,GAAM,GAAK,EAEL,EAA+B,CAAC,OAAQ,GACxC,EAA6B,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAG9D,EAAM,EAAO,UACH,GAAgB,EAChB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAiB,EAAG,CAAC,gBAAA,KCzClC,YACI,EAAsB,EAAwB,EAAe,GAC7D,EAAmB,GAAK,CAC1B,GAAM,GAAU,EAAgB,EAAQ,SAAU,yBAE7C,EACD,EAAQ,OAAS,GAAK,EAAQ,OAAS,EACvC,IAAM,uEACM,EAAQ,SACnB,EACD,EAAK,SAAW,EAChB,IACI,oEACG,MACN,EACD,EAAQ,QAAU,WAAa,EAAQ,QAAU,QACjD,IAAM,oDACL,EACD,IAAqB,IAAS,IAAiB,GAC/C,IAAM,4FAEV,GAAI,GAAc,EACd,EAAe,GACf,EAAQ,OAAS,GACnB,GAAe,GACf,EAAc,EACV,EAAS,CAAC,EAAG,EAAQ,MAAM,GAAI,EAAQ,MAAM,GAAI,EAAQ,MAAM,MAErE,GAAM,GAAK,EAEL,EAAsC,CAAC,OAAQ,GAC/C,EAC2B,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAG5D,EAAM,EAAO,UACH,GAAuB,EACvB,GAEhB,MAAI,GACK,EAAQ,EAAK,CAAC,EAAI,MAAM,GAAI,EAAI,MAAM,GAAI,EAAI,MAAM,KAEtD,EAGF,GAAM,IAAwB,EAAG,CAAC,uBAAA,KCnCzC,YACI,EAA4B,EAC5B,EAAsC,UACtC,EAAkD,WAAY,EAAY,EAC1E,EAA8B,CAChC,GAAM,GAAS,EAAgB,EAAO,QAAS,YAAa,WACtD,EACF,EAAgB,EAAY,aAAc,YAAa,WAEtD,EACD,EAAO,OAAS,EAChB,IAAM,yDACc,EAAO,SAE1B,EACD,EAAY,OAAS,GAChB,GAAY,MAAM,KAAO,EAAO,MAAM,IACtC,EAAY,MAAM,KAAO,IAC1B,EAAY,MAAM,KAAO,EAC7B,IAAM,oEAEL,EACD,GAAe,MAAQ,EAAY,SAAW,EAC9C,IACI,4EACW,MAEnB,GAAM,GAA0B,CAAC,MAAO,EAAQ,WAAY,GACtD,EACe,CAAC,cAAA,EAAe,SAAA,EAAU,UAAA,EAAW,YAAA,GAE1D,MAAO,GAAO,UACV,GAAW,EAAgC,GAG1C,GAAM,IAAY,EAAG,CAAC,WAAA,KCnB7B,YACI,EAAiB,EAAkB,EAAgB,CACrD,EACI,EAAW,GAAM,EACjB,IAAM,gDAAgD,MAC1D,EACI,EAAW,GAAM,EACjB,IAAM,gDAAgD,MAE1D,GAAM,GAAK,EAAgB,EAAG,IAAK,YAEnC,EACI,EAAG,MAAQ,EACX,IAAM,4CAA4C,EAAG,SAEzD,GAAM,GAAQ,EAAG,MACX,CAAC,EAAG,GAAK,EAAG,MAAM,MAAM,IAE9B,GAAI,CAAE,IAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,mDACwB,OAEvD,GAAI,CAAE,IAAY,GAChB,KAAM,IAAI,OACN,yBAAyB,sDAC2B,OAGtD,EAAW,GACb,GAAW,GAET,EAAW,GACb,GAAW,GAGb,GAAM,GAAI,EAAQ,GAAM,EAAG,EAAG,EAAG,SAAU,CAAC,GAAI,IAC1C,EAAI,GAAM,EAAG,EAAG,EAAG,SACnB,EAAK,GAAI,EAAG,GAEZ,EAAS,GACX,GAAU,EAAI,GAAO,CAAC,EAAU,UAChC,GAAa,EAAI,GAAO,CAAC,EAAU,WAEjC,EAAO,GAAM,CAAC,EAAG,GAAI,EAAG,OAE9B,MAAO,GACI,GAAM,GAAQ,EAAQ,EAAI,CAAC,GAAI,EAAG,KACvB,IAAI,GAAO,GAAM,EAAQ,EAAK,KACzC,GAGN,GAAM,IAAW,EAAG,CAAC,UAAA,KClE5B,YAAsB,EAAuB,CAC3C,GAAI,GACJ,GAAI,MAAM,QAAQ,GAAK,CACrB,EAAkB,GAClB,EACI,GAAM,MAAQ,EAAG,OAAS,EAC1B,IAAM,qEAEV,GAAM,GAAM,EAAG,GAAG,MAAM,GACxB,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,EAAE,EAC/B,EACI,EAAG,GAAG,MAAM,KAAO,EACnB,IACI,iEACK,EAAkB,GAAG,MAAM,UAAU,UAGpD,GAAkB,GAClB,EAAK,GAAM,EAAI,EAAG,MAAM,GAAI,GAAG,IAAI,GAAK,GAAQ,EAAG,CAAC,KAGtD,EACI,EAAG,QAAU,EAAG,GAAG,MAAM,GACzB,IAAM,oCACK,EAAkB,yCACC,EAAkB,GAAG,MAAM,QAE7D,GAAM,GAAiB,GACjB,EAAO,EACb,OAAS,GAAI,EAAG,EAAI,EAAG,OAAQ,EAAE,EAC/B,EAAG,KAAK,EAAO,KAAK,IAAK,CACvB,GAAI,GAAI,EAAK,GACb,GAAI,EAAI,EACN,OAAS,GAAI,EAAG,EAAI,EAAG,EAAE,EAAG,CAC1B,GAAM,GAAO,EAAI,GAAI,EAAI,EAAG,GAAI,IAAK,EAAG,IACxC,EAAI,GAAI,EAAG,GAGf,MAAO,IAAI,EAAG,GAAK,EAAG,iBAI1B,MAAI,GACK,GAAM,EAAI,GAEV,EAIJ,GAAM,IAAc,EAAG,CAAC,aAAA,KCzB/B,YAAa,EAAW,EAAe,GAAK,CAM1C,GALA,EACI,EAAE,MAAQ,EACV,IAAM,gEACF,EAAE,QAEN,EAAE,OAAS,EACb,MAAO,IAAK,EAAe,GACtB,CAKL,GAAM,GAAgB,EAAE,MAAM,MAAM,EAAG,EAAE,MAAM,OAAS,GAC7B,OAAO,CAAC,EAAO,IAAS,EAAQ,GACrD,EAAO,GACT,EACI,EACA,CACE,EAAe,EAAE,MAAM,EAAE,MAAM,OAAS,GACxC,EAAE,MAAM,EAAE,MAAM,OAAS,KAE/B,GACE,EAAmB,GACnB,EAAmB,GACzB,EAAK,QAAQ,GAAM,CACjB,GAAM,CAAC,EAAK,GAAO,GAAK,EAAiB,GACzC,EAAK,KAAK,GACV,EAAK,KAAK,KAEZ,GAAM,GAAI,EAAQ,GAAM,EAAM,GAAI,EAAE,OAC9B,EAAI,EAAQ,GAAM,EAAM,GAAI,EAAE,OACpC,MAAO,CAAC,EAAG,IAIf,YAAc,EAAa,EAAe,GAAK,CAC7C,MAAO,GAAO,KAAK,IAAK,CACtB,EACI,EAAE,MAAM,SAAW,EACnB,IAAM,0CACF,EAAE,MAAM,mBAEhB,GAAM,GAAI,EAAE,MAAM,GACZ,EAAI,EAAE,MAAM,GAEd,EAAI,GAAI,GACR,EAAI,GAAM,GAER,EAAQ,GAAS,CAAC,CAAC,IAAK,CAAC,EAAG,IAC9B,EAAc,GAAM,GAElB,EAAQ,GAAK,EAAI,EAAI,EAC3B,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAAG,CAG9B,GAAM,GAAQ,EACR,EAAQ,EACR,EAAQ,EACd,CAAC,EAAG,EAAG,GAAK,EAAO,KAAK,IAAqC,CAE3D,GAAM,GAAS,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,IAClC,EAAQ,GAAK,GACb,EAAM,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAG3B,EAAI,GAAM,GAAQ,EAAK,GAAI,GAAS,CAAC,CAAC,MAAO,GAAS,CAAC,CAAC,MAExD,EAAK,GAAI,EAAK,EAAI,EAAG,IACrB,EAAO,GAAI,EAAQ,GACrB,EAAK,MAAM,KAAO,EACpB,EAAI,GAAM,GAEV,EAAI,GACA,CACE,EACA,GAAM,EAAM,CAAC,EAAG,GAAI,CAAC,EAAK,MAAM,GAAK,EAAG,EAAK,MAAM,MAGrD,GAEN,GAAM,GAAM,GAAI,GAAI,GAAO,EAAG,GAAK,IAG7B,EAAW,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAI,EAAG,IACpC,EAAsB,EAAI,EAAK,GAC/B,EAAe,GAAU,GAC/B,GAAI,IAAM,EACR,EAAI,GAAI,EAAU,GAAO,EAAW,GAAO,EAAI,SAC1C,CACL,GAAM,GACF,GAAI,EAAU,GAAO,EAAW,GAAO,EAAI,KAC/C,EAAI,GAAO,CAAC,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,GAAY,GAEpD,GAAM,GAAuB,GAAU,GACjC,EAAW,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,EAAE,MAAM,GAAK,IACnD,GAAI,IAAM,EACR,EAAI,GAAI,EAAU,GAAO,GAAO,EAAU,GAAI,QACzC,CACL,GAAM,GACF,GAAI,EAAU,GAAO,GAAO,EAAU,GAAI,IAC9C,EAAI,GAAO,CAAC,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IAAK,GAAY,GAEpD,MAAO,CAAC,EAAG,EAAG,KAEhB,GAAQ,CAAC,EAAO,EAAO,IAGzB,MAAI,CAAC,GAAgB,EAAI,GACvB,GAAI,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,IACzB,EAAI,GAAM,EAAG,CAAC,EAAG,GAAI,CAAC,EAAG,KAGpB,CAAC,EAAG,KAIR,GAAM,IAAK,EAAG,CAAC,IAAA,KCvLV,GAAZ,AAAA,UAAY,EAAS,CACnB,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,IAAA,GAAA,MACA,EAAA,EAAA,uBAAA,GAAA,2BAJU,IAAA,IAAS,KCyBrB,YACI,EAAsB,EACtB,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,uBAC9C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,wBAGjD,GAAM,GAAgB,GAAY,KAAQ,EAAU,EAAI,EAAS,GAEjE,GAAI,IAAc,GAAU,KAC1B,MAAO,GAET,GAAI,IAAc,GAAU,IAC1B,MAAO,IAAI,GAEb,GAAI,IAAc,GAAU,KAAM,CAChC,GAAI,GAAY,KACd,MAAO,IAAK,GACP,CACL,GAAM,GAAkB,EAAQ,KAAO,EAAS,KAC1C,EAAS,GAAI,GAAI,GAAe,GAAI,IAC1C,MAAO,GAAkB,EAAI,GAAI,EAAQ,GAAO,IACnB,GAGjC,GAAI,IAAc,GAAU,uBAAwB,CAClD,GAAI,GAAY,KACd,MAAO,IAAI,GAAI,GAAe,GAAO,EAAQ,OACxC,CACL,GAAM,GAAqB,EAAI,EAAU,GAAK,EAAQ,QAEhD,EACF,GAAK,GAAI,GAAS,EAAoB,GAAO,KAAM,WACvD,MAAO,IAAI,GAAI,GAAe,IAIlC,KAAM,OAAM,sBAAsB,KAE7B,GAAM,IAAsB,EAAG,CAAC,qBAAA,KCxCvC,YACI,EAAsB,EACtB,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,sBAC5C,EACF,EAAgB,EAAa,cAAe,sBAC5C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,uBAEjD,GACI,EAAQ,MAAO,EAAa,MAAO,iCAEvC,GAAM,GAAS,GAAI,GAAI,EAAS,IAChC,MAAO,IAAoB,EAAQ,EAAU,GAGxC,GAAM,IAAqB,EAAG,CAAC,oBAAA,KChBtC,YACI,EAAsB,EAA2B,EACjD,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,kBAC5C,EACF,EAAgB,EAAa,cAAe,kBAC5C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,mBAEjD,GACI,EAAQ,MAAO,EAAa,MAAO,6BAEvC,GAAM,GAAM,GAAO,GACb,EAAS,GAAI,EAAK,GAAI,EAAI,EAAS,GAAe,EAAM,KAC9D,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAiB,EAAG,CAAC,gBAAA,KCnBlC,YACI,EAAsB,EACtB,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAI,GAAU,EAAgB,EAAQ,SAAU,aAC1C,EAAe,EAAgB,EAAa,cAAe,aAC7D,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,cAEjD,GAAkB,EAAQ,MAAO,EAAa,MAAO,wBAErD,GAAM,GAAM,GAAO,GAEnB,EAAU,GAAI,EAAI,GAAO,GAAI,GAAU,GACvC,GAAM,GAAS,GAAK,GAAI,EAAK,EAAI,EAAS,KAC1C,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAY,EAAG,CAAC,WAAA,KCb7B,YACI,EAAsB,EACtB,EAA6B,EAAQ,EACrC,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,aAC5C,EAAe,EAAgB,EAAa,cAAe,aAC7D,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,cAEjD,GAAkB,EAAQ,MAAO,EAAa,MAAO,wBAErD,GAAM,GAAc,GAAO,GACrB,EAAQ,GAAI,GAAI,EAAc,IAC9B,EAAY,GAAQ,EAAO,GAC3B,EAAS,GAAI,EAAO,GAEpB,EACF,GAAI,EAAI,GAAO,IAAM,GAAO,IAAa,EAAI,EAAa,IAC9D,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAY,EAAG,CAAC,WAAA,KCtB7B,YACI,EAAsB,EACtB,EAA6B,EAAU,KACvC,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,WAC5C,EAAe,EAAgB,EAAa,cAAe,WAC7D,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,YAEjD,GAAkB,EAAQ,MAAO,EAAa,MAAO,sBAErD,GAAM,GAAM,GAAO,GACb,EAAgB,GAAO,GAEvB,EAAK,GAAI,EAAI,EAAS,GAAI,GAAI,EAAc,MAC5C,EACF,EAAI,GAAI,EAAK,GAAU,GAAI,GAAI,GAAI,EAAK,GAAe,KACrD,EAAS,GAAI,EAAI,GACvB,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAU,EAAG,CAAC,SAAA,KC3B3B,YACI,EAAsB,EACtB,EACA,EAAY,GAAU,uBAAsB,CAC9C,GAAM,GAAU,EAAgB,EAAQ,SAAU,oBAC5C,EACF,EAAgB,EAAa,cAAe,oBAC5C,EAAmB,KACnB,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,qBAEjD,GACI,EAAQ,MAAO,EAAa,MAAO,+BAEvC,GAAM,GAAS,GAAkB,EAAS,GAC1C,MAAO,IAAoB,EAAQ,EAAU,GAExC,GAAM,IAAmB,EAAG,CAAC,kBAAA,KCxBpC,YACI,EAAsB,EAAoB,CAC5C,GAAM,GACF,EAAgB,EAAQ,SAAU,iCAChC,EACF,EAAgB,EAAQ,SAAU,iCACtC,GACI,EAAQ,MAAO,EAAQ,MAAO,4CAsBlC,GAAM,GAAY,GAAK,GACjB,EAAgB,EAAI,EAAS,GAC7B,EAAgB,GAAM,GAAI,GAAI,GAAI,MAExC,MAAO,IAAI,GAAI,EAAW,GAAgB,GAwB5C,YACI,EAAgC,EAChC,EAA6B,EAAiB,EAC9C,EAAY,GAAU,uBAAsB,CAC9C,GAAI,GAAoB,EACpB,EAAkB,mBAAoB,uBACpC,EAAU,EAAgB,EAAQ,SAAU,uBAC9C,EAAmB,KAOvB,GANI,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,wBAEjD,GACI,EAAkB,MAAO,EAAQ,MAAO,kCAExC,EAAiB,EAAG,CACtB,GAAM,GAAuB,GAAO,GAC9B,EAAM,GAAO,GACb,EAAO,GAAO,IAEpB,EACI,GAAI,EAAI,EAAmB,GAAI,EAAK,IAChC,EAAI,EAAM,IAEpB,GAAM,GAAS,GAA+B,EAAmB,GAEjE,MAAO,IAAoB,EAAQ,EAAU,GAGxC,GAAM,IAAsB,EAAG,CAAC,qBAAA,KCzDvC,YACI,EAAW,EAAW,EAAM,GAAE,CAKhC,GAJI,IAAQ,IACV,GAAM,EAAO,KAAO,GAGlB,IAAQ,EAAO,KAAO,EACxB,KAAM,OACF,mGACuC,EAAO,oBAC/B,KA6BrB,MAzBI,IAAW,CAAC,EAAgB,EAAgB,IAAsB,CAKhE,GAAM,GAAM,GAAU,EAAQ,CAAC,GADd,IAEX,EAAY,GAAI,GAAK,EAAQ,WAAY,GAC/C,EAAK,CAAC,EAAQ,IAEd,GAAM,GAAa,GAAI,EAAI,EAAW,IAatC,MAAO,CAAC,MAZS,GAAI,EAAY,CAAC,IAYnB,SAVE,CAAC,EAAO,IAAmB,CAC1C,GAAM,CAAC,EAAQ,GAAa,EACtB,EAAU,GAAqB,EAAG,MAAO,CAAC,IAChD,MAAO,CACL,EAAI,EAAQ,EAAI,GACZ,GAAI,GAAK,EAAQ,WAAY,GAAI,KACrC,EAAI,EAAQ,EAAI,GACZ,GAAI,GAAI,GAAY,GAAK,EAAQ,kBAM/B,EAAQ,GAsB1B,YACI,EAA4B,EAC5B,EAA6B,EAAiB,EAC9C,EAAY,GAAU,uBAAsB,CAC9C,GAAI,GACA,EAAgB,EAAc,eAAgB,uBAC5C,EAAU,EAAgB,EAAQ,SAAU,uBAC9C,EAAmB,KASvB,GAPI,GAAW,MACb,GAAW,EAAgB,EAAS,UAAW,wBAGjD,GACI,EAAc,MAAO,EAAQ,MAAO,kCAEpC,EAAiB,EAAG,CACtB,GAAM,GAAuB,GAAO,GAC9B,EAAM,GAAO,GACb,EAAa,GAAO,EAAc,MAAM,IAE9C,EACI,GAAI,EAAI,EAAe,GAAI,EAAK,IAC5B,GAAI,EAAsB,IAGpC,GAAM,GAAS,GAA+B,EAAe,GAE7D,MAAO,IAAoB,EAAQ,EAAU,GAGxC,GAAM,IAAsB,EAAG,CAAC,qBAAA,KC6DjC,GAAW,CACf,IAAA,GACA,KAAA,GACA,KAAA,GACA,MAAA,IASI,GAAS,CACb,cAAA,GACA,WAAA,GACA,MAAA,GACA,KAAA,IAgBI,GAAQ,CACZ,cAAA,GACA,sBAAA,GACA,eAAA,GACA,iBAAA,GACA,cAAA,GACA,kBAAA,GACA,uBAAA,GACA,2BAAA,GACA,gCAAA,GACA,wBAAA,GACA,6BAAA,GACA,UAAA,IAOI,GAAS,CACb,SAAA,GACA,YAAA,GACA,GAAA,IAaI,GAAS,CACb,mBAAA,GACA,oBAAA,GACA,eAAA,GACA,UAAA,GACA,UAAA,GACA,QAAA,GACA,iBAAA,GACA,oBAAA,GACA,oBAAA,IC5PI,GAAA,aAAkC,GAAY,CAiBlD,SAAS,EAAiB,EAAa,GAAO,EAAoB,CAEhE,GAAM,CAAC,MAAA,EAAO,MAAA,GAAS,KAAK,iBAAiB,EAAG,GAEhD,GAAI,GAAW,KAAM,CACnB,GAAM,GACF,EAAQ,IAAI,GAAM,EAAC,KAAM,EAAE,KAAM,OAAQ,EAAM,EAAE,SACrD,KAAK,eAAe,OAEpB,MAAK,eAAe,GAMtB,MAFA,IAAQ,GAEJ,EACK,EAEP,GAAM,UACC,SAOP,aAAU,CACZ,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,KAAK,YAGJ,qBAAmB,CAC3B,KAAK,YAAc,KAAK,WAAa,EAgBvC,iBAAiB,EAAiB,EAAoB,CAEpD,MAAO,IAAc,EAAG,GAgB1B,SAAO,CACD,KAAK,aAAe,MACtB,GAAQ,KAAK,kBAIX,iBAAc,CAClB,MAAI,MAAK,aAAe,MACtB,MAAK,YAAc,GAEd,CACL,KAAM,OAEN,OAAQ,GAAO,KAAK,YAAa,eAI/B,aAAU,CACd,KAAM,IAAI,OAAM,gEAGZ,YAAW,EAA2B,CAC1C,KAAM,IAAI,OACN,4DACG,KAAK,uBAUE,mBAAkB,EAA2B,CAE3D,MAAA,MAAK,YAAe,MAAM,GAAa,GAAG,OAAO,QAAQ,GAClD,EAAa,MAAM,KAI9B,OAAO,eAAe,GAAW,OAAO,YAAa,CACnD,MAAQ,GACC,EAAS,UAAY,MAAQ,EAAS,kBAAoB,MAC7D,EAAS,gBAAkB,OC3I7B,GAAA,IAAA,aAAiC,GAAS,CAM9C,YACc,EAAgC,EAChC,EAAkB,KAAI,CAClC,QAFY,KAAA,aAAA,EAAgC,KAAA,IAAA,EAChC,KAAA,QAAA,EALN,KAAA,iBAAwC,GACxC,KAAA,mBAA0C,GAO5C,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAIlC,eAAe,EAAiD,CACxC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,iBAAiB,IAAM,MAC9B,MAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,eACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,cACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAInD,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAkB,KAAK,iBAAiB,GAAG,SAC3C,EAAoB,KAAK,mBAAmB,GAAG,SAErD,EAAK,IAAK,CACR,GAAM,GACF,GAAI,EAAI,EAAiB,KAAK,KAC1B,EAAI,GAAO,GAAW,EAAI,KAAK,MAEjC,EACF,EAAI,GAAI,GAAK,GAAI,EAAmB,KAAK,UACjC,GAAK,GAAI,EAAiB,KAAK,WACnC,GAEF,EACF,GAAI,EAAI,EAAmB,KAAK,KAC5B,EAAI,GAAO,GAAU,EAAI,KAAK,MAEtC,EAAgB,OAAO,GACvB,EAAkB,OAAO,GAEzB,GAAM,GAAW,GAAI,EAAI,EAAS,CAAC,KAAK,cAAe,GACvD,EAAM,OAAO,OAGjB,KAAK,sBAGP,SAAO,CACD,KAAK,oBAAsB,MAC7B,IAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,WACzC,GAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,iBAIzC,aAAU,CAEd,GAAM,GACF,CAAC,GAAG,KAAK,iBAAkB,GAAG,KAAK,oBACvC,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,EAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GAAgB,EAAa,OAAS,EACtC,EAAY,GAClB,KAAK,iBACD,EAAa,MAAM,EAAG,GAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,MAEnD,KAAK,mBACD,EAAa,MAAM,EAAe,EAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,MAI7C,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,IAAO,KAAK,IACZ,QAAW,KAAK,eAKb,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,EAAO,aAAiB,EAAO,IAAQ,EAAO,WAjHxD,GAAA,UAAY,WAoHrB,GAAc,ICtHR,GAAA,IAAA,aAAgC,GAAS,CAM7C,YACc,EAA8B,EAA0B,GAAG,CACvE,QADY,KAAA,aAAA,EAA8B,KAAA,wBAAA,EAHpC,KAAA,iBAAwC,GAOhD,eAAe,EAAiD,CACxC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACzC,GAAI,KAAK,iBAAiB,IAAM,KAAM,CACpC,GAAM,GAAY,GAClB,KAAK,iBAAiB,GAAK,CACzB,aAAc,GAAG,gBACjB,SAAU,EACN,IAAM,GAAK,EAAM,MAAO,KAAK,yBAClB,SAAS,KAI5B,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAkB,KAAK,iBAAiB,GAAG,SAEjD,EAAK,IAAK,CACR,GAAM,GAAqB,GAAI,EAAiB,GAAO,IACvD,EAAgB,OAAO,GAEvB,GAAM,GAAW,GACb,EAAI,GAAI,EACA,GAAK,GAAI,EAAoB,EAAO,QAAQ,aAChD,CAAC,KAAK,cACV,GACJ,EAAM,OAAO,OAGjB,KAAK,sBAGP,SAAO,CACD,KAAK,kBAAoB,MAC3B,GAAQ,KAAK,iBAAiB,IAAI,GAAK,EAAE,gBAIvC,aAAU,CAEd,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,iBAAiB,IAC9D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GAAY,GAClB,KAAK,iBAAmB,EAAa,IACjC,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,MAG/D,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,wBAA2B,KAAK,+BAK7B,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,EAAO,aAAiB,EAAO,2BA/EzC,GAAA,UAAY,UAkFrB,GAAc,ICjFR,GAAA,IAAA,aAA6B,GAAS,CAS1C,YACc,EAAgC,EAChC,EAAyB,EAAkB,KAAI,CAC3D,QAFY,KAAA,aAAA,EAAgC,KAAA,MAAA,EAChC,KAAA,MAAA,EAAyB,KAAA,QAAA,EAL/B,KAAA,uBAA8C,GAC9C,KAAA,wBAA+C,GAMrD,EAAK,IAAK,CAER,KAAK,SAAW,GAAO,GAAO,WAC9B,KAAK,SAAW,GAAO,GAAO,aAG5B,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAIlC,eAAe,EAAiD,CAC9D,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,GAChB,EAAK,IAAK,CACR,GAAM,GAAmB,GAAI,EAAG,KAAK,UAC/B,EAAmB,GAAI,EAAG,KAAK,UAErC,EAAS,QAAQ,CAAC,EAAM,IAAK,CAC3B,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,MACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,wBAAwB,IAAM,MACrC,MAAK,wBAAwB,GAAK,CAChC,aAAc,GAAG,MACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAInD,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAc,KAAK,uBAAuB,GAAG,SAC7C,EAAe,KAAK,wBAAwB,GAAG,SAE/C,EACF,GAAI,EAAI,EAAa,KAAK,OAAQ,EAAI,EAAU,EAAI,KAAK,QACvD,EACF,GAAI,EAAI,EAAc,KAAK,OACvB,EAAI,GAAO,GAAW,EAAI,KAAK,QAEjC,EAA2B,GAAI,EAAgB,GAC/C,EACF,GAAI,EAAiB,GAEzB,EAAY,OAAO,GACnB,EAAa,OAAO,GAEpB,GAAM,GACF,GAAI,EAAI,GAAI,EACA,GAAI,GAAK,GAA4B,KAAK,UAC9C,CAAC,KAAK,cACV,GACR,EAAM,OAAO,KAGf,KAAK,SAAS,OAAO,EAAI,KAAK,SAAU,KAAK,QAC7C,KAAK,SAAS,OAAO,EAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,SAAO,CACL,KAAK,SAAS,UACd,KAAK,SAAS,UAEV,KAAK,wBAA0B,MACjC,GAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,yBAA2B,MAClC,GAAQ,KAAK,wBAAwB,IAAI,GAAK,EAAE,gBAI9C,aAAU,CAEd,GAAM,GACF,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,yBAC7C,MAAO,CAAC,KAAM,MAAK,kBAAkB,OACjC,EAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,EAAK,IAAK,CACR,KAAK,SAAS,OAAO,GAAI,KAAK,MAAO,KAAK,YAAc,IACxD,KAAK,SAAS,OAAO,GAAI,KAAK,MAAO,KAAK,YAAc,MAG1D,GAAM,GAAgB,EAAa,OAAS,EACtC,EAAY,GAClB,KAAK,uBACD,EAAa,MAAM,EAAG,GAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,MAEnD,KAAK,wBACD,EAAa,MAAM,EAAe,EAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,MAI7C,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,eAKb,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,MAAU,EAAO,MAChD,EAAO,WA5IN,GAAA,UAAY,OA+IrB,GAAc,IClJR,GAAA,IAAA,aAA+B,GAAS,CAS5C,YACc,EAAgC,EAChC,EAAyB,EAAkB,KAC3C,EAAQ,EAAG,CACvB,QAHY,KAAA,aAAA,EAAgC,KAAA,MAAA,EAChC,KAAA,MAAA,EAAyB,KAAA,QAAA,EACzB,KAAA,MAAA,EANN,KAAA,uBAA8C,GAC9C,KAAA,2BAAkD,GAQxD,EAAK,IAAK,CACR,KAAK,UAAY,GAAO,GAAG,WAC3B,KAAK,SAAW,GAAO,GAAO,aAG5B,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAIlC,eAAe,EAAiD,CAC9D,GAAM,GAAgB,MAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,GAEhB,EAAK,IAAK,CACR,GAAM,GAAmB,GAAI,EAAG,KAAK,UAC/B,EACF,GAAI,CAAC,KAAK,aAAc,GAAI,EAAI,KAAK,UAAW,KAAK,OAAQ,IAEjE,EAAc,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,MACjB,SAAU,GAAU,GAAO,SAAS,KAGpC,KAAK,2BAA2B,IAAM,MACxC,MAAK,2BAA2B,GAAK,CACnC,aAAc,GAAG,MACjB,SAAU,GAAU,GAAO,SAAS,KAIxC,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAc,KAAK,uBAAuB,GAAG,SAC7C,EAAkB,KAAK,2BAA2B,GAAG,SAErD,EACF,GAAI,EAAI,EAAa,KAAK,OAAQ,EAAI,EAAU,EAAI,KAAK,QAEvD,EAAM,EAAI,EAAiB,KAAK,OAChC,EAAM,GAAI,GAEV,EAAqB,GAAQ,EAAK,GAExC,EAAY,OAAO,GACnB,EAAgB,OAAO,GAEvB,GAAM,GACF,GAAI,EAAI,GAAI,EAAI,GACR,GAAI,EAAgB,GAAI,EAAoB,KAAK,WACrD,GAER,EAAM,OAAO,KAGf,KAAK,UAAU,OAAO,GAAI,KAAK,UAAW,IAC1C,KAAK,SAAS,OAAO,EAAI,KAAK,SAAU,KAAK,UAE/C,KAAK,sBAGP,SAAO,CACL,KAAK,SAAS,UACd,KAAK,UAAU,UAEX,KAAK,wBAA0B,MACjC,GAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,4BAA8B,MACrC,GAAQ,KAAK,2BAA2B,IAAI,GAAK,EAAE,gBAIjD,aAAU,CACd,KAAM,IAAI,OAAM,wDAGZ,YAAW,EAA2B,CAC1C,KAAM,IAAI,OAAM,mDAGlB,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,MAAS,KAAK,MACd,QAAW,KAAK,QAChB,MAAS,KAAK,aAKX,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,MAAU,EAAO,MAChD,EAAO,QAAY,EAAO,SAvHzB,GAAA,UAAY,SA0HrB,GAAc,IChIR,GAAA,IAAA,aAA4B,GAAS,CAKzC,YAAsB,EAAoB,CACxC,QADoB,KAAA,aAAA,EAEpB,KAAK,gBAAgB,GAGvB,eAAe,EAA+C,CAC3C,AAAA,OAAM,QAAQ,GAC3B,EAAkB,IAAI,GAAK,EAAE,MAC7B,OAAO,KAAK,IACP,QAAQ,CAAC,EAAM,IAAK,CAC3B,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAEF,GAAM,GAAQ,EAAO,oBAAoB,GACzC,EAAK,IAAK,CACR,GAAM,GAAW,GAAI,EAAI,KAAK,EAAG,GAAW,GAC5C,EAAM,OAAO,OAGjB,KAAK,sBAMP,gBAAgB,EAAoB,CAClC,KAAK,aAAe,EAChB,KAAK,GAAK,MACZ,KAAK,EAAE,UAET,KAAK,EAAI,GAAK,GAAO,CAAC,IAGxB,SAAO,CACL,KAAK,EAAE,eAGH,aAAU,CACd,MAAO,CAAC,KAAM,MAAK,uBAGf,YAAW,EAA2B,CAE1C,GADA,EAAe,KAAM,MAAK,kBAAkB,GACxC,EAAa,SAAW,EAC1B,KAAM,IAAI,OAAM,iDAIpB,WAAS,CACP,MAAO,CAAC,aAAgB,KAAK,oBAIxB,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GAAI,EAAO,gBA7DjB,GAAA,UAAY,MAgErB,GAAc,IChER,GAAA,IAAA,aAAiC,GAAY,CAMjD,YACc,EAA8B,EAChC,EAAc,GAAK,CAC7B,MAAM,GAFM,KAAA,aAAA,EAA8B,KAAA,SAAA,EAChC,KAAA,YAAA,EAJJ,KAAA,cAAqC,GAM3C,KAAK,EAAI,GAAO,KAAK,UAGvB,eAAe,EAAiD,CACxC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACzC,GAAI,KAAK,cAAc,IAAM,KAAM,CACjC,GAAM,GAAY,GAClB,KAAK,cAAc,GAAK,CACtB,aAAc,GAAG,aACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,KAInD,GAAM,GAAe,KAAK,cAAc,GAAG,SACrC,EAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GAClB,GAAY,MAIhB,EAAK,IAAK,CACR,GAAI,GACE,EAAkB,GAAI,EAAI,KAAK,EAAG,GAAe,GACnD,KAAK,YACP,EAAW,GACP,EAAI,KAAK,EAAG,GAAI,EAAU,EAAI,EAAiB,KAAK,KAAM,GAE9D,EAAW,GAAI,EAAI,KAAK,EAAG,GAAkB,GAE/C,EAAa,OAAO,GACpB,EAAM,OAAO,OAGjB,KAAK,sBAGP,SAAO,CACL,KAAK,EAAE,UACH,KAAK,eAAiB,MACxB,GAAQ,KAAK,cAAc,IAAI,GAAK,EAAE,WAS1C,YAAY,EAAgB,CAC1B,KAAK,SAAW,OAGZ,aAAU,CAEd,MAAO,CAAC,KAAM,MAAK,kBAAkB,OAAO,KAAK,cAAc,IAC3D,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGvC,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GAAY,GAClB,KAAK,cAAgB,EAAa,IAC9B,GAAM,EAAC,aAAc,EAAE,KAAM,SAAU,EAAE,OAAO,SAAS,MAG/D,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,SAAY,KAAK,SACjB,YAAe,KAAK,mBAKjB,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,SAAa,EAAO,eA3FlD,GAAA,UAAY,WA8FrB,GAAc,IC/FR,GAAA,IAAA,aAAgC,GAAS,CAS7C,YACc,EAAgC,EAAQ,GACxC,EAAW,EAAe,EAAkB,KACtD,EAAW,GAAK,CAClB,QAOA,GAVY,KAAA,aAAA,EAAgC,KAAA,MAAA,EAChC,KAAA,SAAA,EAA0B,KAAA,QAAA,EANhC,KAAA,uBAA8C,GAC9C,KAAA,mBAA0C,GAC1C,KAAA,qBAA4C,GAQlD,KAAK,SAAW,EAEZ,GAAW,MACb,MAAK,QAAU,EAAO,QAAQ,WAE5B,GAAgB,KAClB,KAAM,IAAI,OAAM,sDAIpB,eAAe,EAA+C,CACtC,AAAA,OAAM,QAAQ,GAChC,EAAkB,IAAI,GAAQ,EAAK,MACnC,OAAO,KAAK,IAEF,QAAQ,CAAC,EAAM,IAAK,CAChC,GAAM,GAAQ,EAAO,oBAAoB,GACnC,EAAY,GACd,KAAK,uBAAuB,IAAM,MACpC,MAAK,uBAAuB,GAAK,CAC/B,aAAc,GAAG,QACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,mBAAmB,IAAM,MAChC,MAAK,mBAAmB,GAAK,CAC3B,aAAc,GAAG,aACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAG/C,KAAK,qBAAqB,IAAM,MAAQ,KAAK,UAC/C,MAAK,qBAAqB,GAAK,CAC7B,aAAc,GAAG,OACjB,SAAU,EAAK,IAAM,GAAU,GAAO,SAAS,MAInD,GAAM,GAAW,MAAM,QAAQ,GAC3B,EAAkB,GAAG,OACrB,EAAkB,GACtB,GAAI,GAAY,KACd,OAGF,GAAM,GAAwB,KAAK,uBAAuB,GAAG,SACvD,EAAqB,KAAK,mBAAmB,GAAG,SACtD,EAAK,IAAK,CACR,GAAM,GACF,GAAI,EAAI,EAAuB,KAAK,OAChC,EAAI,GAAO,GAAW,EAAI,KAAK,QAEvC,GAAI,KAAK,SAAU,CACjB,GAAM,GAAsB,KAAK,qBAAqB,GAAG,SAEnD,EACF,GAAI,EAAI,EAAqB,KAAK,OAC9B,EAAI,EAAU,EAAI,KAAK,QAEzB,EACF,GAAI,EAAI,EAAU,KAAK,cACnB,GACI,GAAI,EACA,GAAI,GAAO,GAAyB,KAAK,YACnD,EACF,GAAI,EAAI,EAAoB,KAAK,UAAW,GAEhD,EAAsB,OAAO,GAC7B,EAAoB,OAAO,GAC3B,EAAmB,OAAO,GAE1B,GAAM,GAAW,GAAI,EAAO,GAC5B,EAAM,OAAO,OACR,CAEL,GAAM,GACF,GAAI,EAAI,EAAuB,KAAK,OAChC,EAAI,GAAO,GAAW,EAAI,KAAK,QAEjC,EACF,GAAI,EAAI,EAAoB,KAAK,UAC7B,GAAI,EAAI,EAAU,KAAK,cACnB,GAAK,GAAI,EAA0B,KAAK,YAEpD,EAAsB,OAAO,GAC7B,EAAmB,OAAO,GAE1B,GAAM,GAAW,GAAI,EAAO,GAC5B,EAAM,OAAO,QAInB,KAAK,sBAGP,SAAO,CACD,KAAK,wBAA0B,MACjC,GAAQ,KAAK,uBAAuB,IAAI,GAAK,EAAE,WAE7C,KAAK,sBAAwB,MAAQ,KAAK,UAC5C,GAAQ,KAAK,qBAAqB,IAAI,GAAK,EAAE,WAE3C,KAAK,oBAAsB,MAC7B,GAAQ,KAAK,mBAAmB,IAAI,GAAK,EAAE,gBAIzC,aAAU,CAEd,GAAM,GACF,CAAC,GAAG,KAAK,uBAAwB,GAAG,KAAK,oBAC7C,MAAI,MAAK,UACP,EAAU,KAAK,GAAG,KAAK,sBAElB,CAAC,KAAM,MAAK,kBAAkB,OACjC,EAAU,IAAI,GAAM,EAAC,KAAM,EAAE,aAAc,OAAQ,EAAE,kBAGrD,YAAW,EAA2B,CAC1C,EAAe,KAAM,MAAK,kBAAkB,GAC5C,GAAM,GACF,KAAK,SAAW,EAAa,OAAS,EAAI,EAAa,OAAS,EAC9D,EAAY,GAClB,KAAK,uBACD,EAAa,MAAM,EAAG,GAAe,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SACf,MAEnD,KAAK,mBACD,EAAa,MAAM,EAAe,EAAgB,GAC7C,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,MAEvC,KAAK,UACP,MAAK,qBACD,EAAa,MAAM,EAAgB,EAAG,EAAgB,GACjD,IAAI,GAAM,EACJ,aAAc,EAAE,KAChB,SAAU,EAAE,OAAO,SAAS,OAK/C,WAAS,CACP,MAAO,CACL,aAAgB,KAAK,aACrB,MAAS,KAAK,MACd,SAAY,KAAK,SACjB,QAAW,KAAK,QAChB,SAAY,KAAK,gBAKd,YACH,EAAiC,EAAkB,CACrD,MAAO,IAAI,GACP,EAAO,aAAiB,EAAO,MAAU,EAAO,SAChD,EAAO,QAAY,EAAO,YA5KzB,GAAA,UAAY,UA+KrB,GAAc,ICxLR,GAAA,IAAA,KAA4B,OAsCzB,KAAI,EAAoB,CAC7B,MAAO,IAAI,IAAa,SAkBnB,UAAS,EAAsB,EAAkB,EAAc,GAAK,CAEzE,MAAO,IAAI,IAAkB,EAAc,EAAU,SAuBhD,SACH,EAAsB,EAAQ,GAAI,EAAW,EAAK,EAAkB,KACpE,EAAW,GAAK,CAClB,MAAO,IAAI,IACP,EAAc,EAAO,EAAU,EAAS,SAevC,MACH,EAAe,KAAO,EAAQ,GAAK,EAAQ,KAC3C,EAAkB,KAAI,CACxB,MAAO,IAAI,IAAc,EAAc,EAAO,EAAO,SAehD,UAAS,EAAe,KAAM,EAAM,IAAK,EAAkB,KAAI,CAEpE,MAAO,IAAI,IAAkB,EAAc,EAAK,SAgB3C,QACH,EAAe,KAAO,EAAQ,GAAK,EAAQ,KAAO,EAAkB,KACpE,EAAQ,EAAG,CACb,MAAO,IAAI,IAAgB,EAAc,EAAO,EAAO,EAAS,SAmB3D,SAAQ,EAAsB,EAA0B,GAAG,CAEhE,MAAO,IAAI,IAAiB,EAAc,KC3JjC,GAAQ,CACnB,IAAK,GAAsB,IAC3B,SAAU,GAAsB,SAChC,SAAU,GAAsB,SAChC,QAAS,GAAsB,QAC/B,QAAS,GAAsB,QAC/B,OAAQ,GAAsB,OAC9B,KAAM,GAAsB,MCrBxB,GAA2B,KAC3B,MAAO,wBAA0B,YAC5B,sBACE,MAAO,eAAiB,YAC1B,aAED,GAAgB,OAa1B,aAAkB,CAChB,MAAO,IAAI,SAAc,GAAW,GAAc,IAAM,MCrC1D,GAAA,GAAA,GAAA,GAAA,EAAA,CAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,OAAA,IAAA,GAAA,MAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,2BAAA,IAAA,GAAA,2BAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,yBAAA,IAAA,GAAA,0BAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,+BAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,SAAA,IAAA,GAAA,UAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,eAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,YAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,YAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,IAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,aAAA,IAAA,GAAA,WAAA,IAAA,GAAA,WAAA,IAAA,GAAA,uBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,WAAA,IAAA,GAAA,cAAA,IAAA,GAAA,oBAAA,IAAA,GAAA,KAAA,IAAA,KCmBM,YAAiC,EAAoB,EAAY,CACrE,GAAM,GAAO,EAAO,GAAG,OACvB,EAAO,QAAQ,CAAC,EAAO,IAAK,CACrB,EACD,EAAM,SAAW,EACjB,IACI,kBAAkB,uBAA0B,gDAChB,QAGjC,EACD,GAAQ,GAAK,EAAO,EACpB,IAAM,kBAAkB,kCAAqC,EAAO,MAExE,GAAM,GAAa,EAAO,GAC1B,EAAO,QAAQ,CAAC,EAAO,IAAK,CAC1B,OAAS,GAAI,EAAG,EAAI,EAAM,IACnB,EACA,IAAM,GAAU,EAAM,KAAO,EAAW,GACzC,IAAM,kBAAkB,wBAA2B,OAAO,4CACb,sCACN,QAK3C,YAA0B,EAAoB,EAAY,CAC9D,GAAM,GAAc,EAAO,GAAG,QAC9B,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAY,IAAS,EAAO,GAAG,GAEjC,MAAO,GC3BF,GAAM,IAAwB,GAS/B,YAAmC,EAAc,CACrD,MAAI,IAAU,GACL,EAEF,GAAe,EAAQ,KAAK,MAAM,KAAK,KAAK,KClB/C,YACF,EAAiC,EACjC,EAAkB,CACpB,GAAM,GACF,EAAc,OAAO,IAAW,SAAW,EAAS,EAAO,IACzD,EACF,EAAe,OAAO,IAAW,SAAW,EAAS,EAAO,IAChE,MAAO,CAAC,EAAS,GCAb,YACF,EAAsB,EAAsB,EAC5C,EAAe,GAAI,CACrB,GAAI,GAAqB,GACzB,GAAI,EACF,EAAW,EAAS,OAAO,EAAW,MAAM,IAC5C,EAAS,KAAK,EAAW,GAAK,GAC9B,EAAW,EAAS,OAAO,EAAW,MAAM,QACvC,CACL,EAAW,EAAS,OAAO,EAAW,IACtC,GAAM,GAAgB,EAAW,OACjC,OAAS,GAAI,EAAG,EAAI,EAAe,EAAE,EACnC,EACI,EAAS,OAAO,CAAC,EAAW,EAAI,GAAK,EAAW,GAAI,EAAW,KAErE,EAAW,EAAS,OAAO,EAAW,MAAM,EAAgB,IAE9D,MAAO,GAYH,YACF,EAAsB,EACtB,EAAe,GAAI,CACrB,GAAM,GAAW,GACjB,GAAI,EAAc,CAChB,EAAS,KAAK,GACd,OAAS,GAAI,EAAiB,EAAG,EAAI,EAAc,EAAE,EAC/C,GAAK,EAAI,EACX,GAAS,KAAK,GACd,EAAS,KAAK,EAAK,GAAiB,KAEpC,EAAS,KAAK,OAGb,CACL,GAAM,GAAsB,GACtB,EAAqB,GAC3B,OAAS,GAAI,EAAG,EAAI,EAAc,EAAE,EAC9B,GAAK,EAAiB,EAAI,GAAK,EAAI,GAAM,EAC3C,EAAmB,KAAK,GAExB,EAAoB,KAAK,GAG7B,EAAS,KAAK,GAAG,GACjB,EAAS,KAAK,GACd,EAAS,KAAK,GAAG,GAEnB,MAAO,GAYH,YACF,EAAsB,EAAsB,EAC5C,EAAe,GAAI,CACrB,GAAM,GAAmB,GAErB,EACF,EAAiB,KAAK,EAAW,GAAK,GAEtC,EAAiB,KAAK,EAAW,GAAK,GAGxC,OAAS,GAAI,EAAG,EAAI,EAAW,OAAQ,EAAE,EACnC,GAAK,EAAW,OACd,EACF,EAAiB,KAAK,EAAW,EAAI,GAAK,EAAW,IAErD,EAAiB,KAAK,EAAW,GAAK,EAAW,EAAI,IAGvD,EAAiB,KAAK,EAAW,IAIrC,MAAO,GAOH,YACF,EAAmB,EAAkB,CACvC,GAAM,GAAmB,CAAC,GAC1B,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,EAAiB,KAAK,EAAM,GAAG,IAEjC,MAAO,GAcH,YACF,EAA0B,EAAmB,EAAkB,CACjE,GAAM,GAAY,EAAe,MAAM,EAAG,GAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,EAAU,KAAK,EAAe,EAAI,GAAK,EAAM,GAAG,GAAK,EAAM,GAAG,IAGhE,MAAO,GCtIF,GAAM,IAAkB,mBAClB,GAAa,mBCDb,GAAQ,SACR,GAAS,WACT,GAAS,YACT,GAAS,YACT,GAAS,aACT,GAAS,YCHhB,eAAkB,EAAc,CAC/B,IAAM,QAAQ,YACjB,QAAQ,KAAK,GAAG,GAId,eAAiB,EAAc,CAC9B,IAAM,QAAQ,YACjB,QAAQ,IAAI,GAAG,GCKb,YACF,EAAoB,EAAkB,CACxC,GAAI,EAAK,SAAW,EAAK,OACvB,KAAM,IAAI,OACN,gEACG,EAAK,iBAAiB,EAAK,WAEpC,GAAM,GAAS,GAAI,cAAa,EAAK,OAAS,GAC9C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,GAAK,EACtC,EAAO,GAAK,EAAK,EAAI,GACrB,EAAO,EAAI,GAAK,EAAK,EAAI,GAE3B,MAAO,GAiBH,YAAiC,EAAqB,CAE1D,GAAM,GAAO,GAAI,cAAa,EAAQ,OAAS,GACzC,EAAO,GAAI,cAAa,EAAQ,OAAS,GAC/C,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,GAAK,EACvC,EAAK,EAAI,GAAK,EAAQ,GACtB,EAAK,EAAI,GAAK,EAAQ,EAAI,GAE5B,MAAO,CAAC,KAAA,EAAM,KAAA,GAOV,YAA+B,EAAqB,CAExD,GAAM,GAAM,KAAK,KAAK,EAAQ,OAAS,GACjC,EAAO,GAAI,cAAa,GACxB,EAAO,GAAI,cAAa,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,GAAK,EACvC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,GAClC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,EAAI,GAExC,MAAO,CAAC,KAAA,EAAM,KAAA,GAOV,YAA8B,EAAqB,CAEvD,GAAM,GAAM,KAAK,MAAM,EAAQ,OAAS,GAClC,EAAO,GAAI,cAAa,GACxB,EAAO,GAAI,cAAa,GAC9B,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,GAAK,EACvC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,GAClC,EAAK,KAAK,MAAM,EAAI,IAAM,EAAQ,EAAI,GAExC,MAAO,CAAC,KAAA,EAAM,KAAA,GAQV,YACF,EAAuB,EAAa,CACtC,GAAM,GAAO,EAAQ,EAAQ,GACvB,EAAO,EAAQ,EAAQ,EAAI,GACjC,MAAO,CAAC,KAAA,EAAM,KAAA,GASV,YACF,EAAkB,EAAc,EAAc,EAAa,CAC7D,EAAK,EAAQ,GAAK,EAClB,EAAK,EAAQ,EAAI,GAAK,EAMlB,YACF,EAAW,EAAgB,CAC7B,GAAM,GAAO,GAAI,cAAa,EAAI,GAC5B,EAAO,GAAI,cAAa,EAAI,GAClC,OAAS,GAAI,EAAG,EAAI,KAAK,KAAK,EAAI,GAAI,IAAK,CACzC,GAAM,GAAK,GAAU,EAAI,IAAM,KAAK,GAAM,GAAI,GAC9C,EAAK,GAAK,KAAK,IAAI,GACnB,EAAK,GAAK,KAAK,IAAI,GAErB,MAAO,CAAC,KAAA,EAAM,KAAA,GAMV,YACF,EAAW,EAAW,EAAgB,CACxC,GAAM,GAAK,GAAU,EAAI,IAAM,KAAK,GAAM,GAAI,GACxC,EAAO,KAAK,IAAI,GAChB,EAAO,KAAK,IAAI,GACtB,MAAO,CAAC,KAAA,EAAM,KAAA,GC9HV,YACF,EAAsB,EACtB,EAAO,EAAC,CACV,GAAI,GAAa,GACjB,GAAI,MAAQ,IAAqB,SAC/B,EACI,EAAE,MAAM,GAAQ,GAAoB,EACpC,IAAM,iDACV,EACI,GAAI,OAAM,GAAiB,KAAK,EAAE,MAAM,GAAQ,OAC/C,CACL,GAAM,GAAY,EAAgB,OAAO,CAAC,EAAO,IAC3C,KAAU,IACZ,IAAS,GAEJ,GACN,GACH,EACI,GAAa,EACb,IAAM,2DACV,GAAM,GAAW,EAAgB,QAAQ,IAGzC,GAAI,IAAa,GAAI,CACnB,GAAM,GAAQ,EAAgB,OAAO,CAAC,EAAG,IAAM,EAAI,EAAI,EAAI,EAAI,GAC/D,EAAgB,GAAY,EAAE,MAAM,GAAQ,EAE9C,EACI,EAAE,MAAM,KAAU,EAAgB,OAAO,CAAC,EAAG,IAAM,EAAI,GACvD,IAAM,+DACV,EAAa,EAGf,MAAO,GC1DT,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,yBAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,8BAAA,IAAA,KA6BM,YACF,EAAgB,EAAmB,CACrC,GAAI,GAAO,GACP,EASJ,IAPI,GAAU,GACZ,GAAM,EACN,EAAO,IAEP,EAAM,GAAe,EAAQ,KAAK,MAAM,KAAK,KAAK,KAG7C,CAAC,GACF,EAAM,GAAe,IAAQ,EAC/B,EAAO,GAEP,EAAM,GAAe,EAAQ,EAAM,GAGvC,MAAO,GAGH,YACF,EAAkB,EAAc,EAAmB,CACrD,GAAM,GAAW,GACX,EAAO,EAAO,OACpB,OAAS,GAAM,EAAG,EAAM,EAAM,IACxB,IAAQ,EACV,EAAS,KAAK,EAAO,IAErB,EAAS,KAAK,GAGlB,MAAO,GAWH,YACF,EAAe,EAAqB,EACpC,EAAiB,CACnB,GAAM,GAAc,EAAQ,MAAM,OAC5B,EAAQ,EAAE,MAAM,OAEtB,GAAI,IAAc,GACZ,GAAY,CAAC,GAAe,EAAY,GAC1C,KAAM,IAAI,OAAM,sCAAsC,MAClD,eAAyB,KAQjC,GAJI,EAAY,GACd,IAAa,GAGX,EAAY,EACd,KAAM,IAAI,OAAM,cAAc;MAC5B,OAGJ,GAAI,EAAO,EACT,KAAM,IAAI,OAAM,cACZ,0CAAkD,OAGxD,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,GAAI,EAAE,MAAM,KAAO,EAAQ,MAAM,GAC/B,KAAM,IAAI,OACN,WAAW,OAAO,EAAE,MAAM,uCACtB,OAAO,EAAQ,MAAM,OAGjC,GAAM,GAAU,EAAE,MAAM,GAElB,EAAwB,GAC1B,EAAY,EACZ,EAAY,EACZ,EAAY,EAEhB,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,EAAY,KAAK,EAAE,MAAM,IACzB,GAAa,EAAE,MAAM,GAGvB,OAAS,GAAI,EAAW,EAAI,EAAM,IAChC,EAAY,KAAK,EAAE,MAAM,IACzB,GAAa,EAAE,MAAM,GAGvB,OAAS,GAAI,EAAW,EAAI,EAAa,IACvC,EAAY,KAAK,EAAQ,MAAM,IAGjC,OAAS,GAAI,EAAO,EAAG,EAAI,EAAO,IAChC,EAAY,KAAK,EAAE,MAAM,IACzB,GAAa,EAAE,MAAM,GAGvB,MAAO,CAAC,UAAA,EAAW,UAAA,EAAW,UAAA,EAAW,QAAA,EAAS,YAAA,GVtF9C,YAAiC,EAAkB,CACvD,GAAI,CAEF,MAAO,GAAK,IAAI,GAAO,GAAa,UAC7B,EAD6B,CAEpC,KAAM,IAAI,OACN,4DAA4D,MAI9D,YAAiC,EAAiB,CACtD,MAAO,GAAQ,IAAI,GAAK,GAAa,IW1DvC,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,wBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,UAAA,IAAA,KEmBM,YACF,EAAiC,EAAc,CAC5C,MAAM,QAAQ,IACjB,GAAS,CAAC,IAEZ,EAAO,QAAQ,GAAI,CACb,GAAK,MACP,EAAK,OACD,EAAE,QAAU,YACZ,IAAM,GACF,8DCVd,GAAM,IAAY,GAAa,UAiBzB,GAAA,aAA8B,GAAa,CAU/C,aAAA,CACE,QAVK,KAAA,UAAY,GAGX,KAAA,SAAW,GAQjB,KAAK,KAAO,GAAI,IAAY,KAAM,MAN5B,YAAU,CAChB,MAAO,IAAe,aAQxB,MAAM,EAAoC,EAAiB,EAAe,CAEpE,KAAK,UACP,MAAK,SAAW,GACZ,IAAM,IAAI,YACZ,EAAa,KACT;;;gCAYR,GAAM,GAAS,CAAC,GAAI,KAAK,cAEzB,MAAA,MAAK,KAAK,IAAI,EAAQ,CAAC,OAAA,EAAQ,MAAA,EAAO,SAAU,IAEzC,EAST,eACI,EAAiB,EACjB,EAA4C,CAC9C,GAAI,GACJ,GAAI,IAAU,UAAY,GAAU,MAAQ,EAAO,OAAS,GACxD,EAAK,SAAS,EAAO,IAAK,CAC5B,GAAM,GACD,EAA0B,IAAI,GAAK,EAAK,aAAa,IAE1D,EAAQ,KAAK,MAAM,EAAe,EAAO,OAEzC,GAAQ,KAAK,MAAM,EAAsB,EAAO,GAGlD,MAAO,CAAC,OAAQ,EAAO,MAAA,EAAO,MAAA,GAIhC,SAAS,EAAc,CACrB,MAAI,MAAK,KAAK,IAAI,GACG,KAAK,KAAK,IAAI,GACf,SAEb,EAIT,OAAO,EAAc,CACnB,GAAM,GAAa,KAAK,KAAK,IAAI,GACjC,EAAW,WAIb,OAAO,EAAc,CACnB,GAAI,KAAK,KAAK,IAAI,GAAS,CACzB,GAAM,GAAa,KAAK,KAAK,IAAI,GACjC,EAAW,YAIf,KACI,EAAgB,EAAoC,EACpD,EAAiB,EAAgB,CACnC,KAAK,KAAK,IAAI,EAAQ,CAAC,OAAA,EAAQ,MAAA,EAAO,SAAA,IAGxC,YAAU,CACR,MAAO,MAAK,KAAK,kBAGb,MAAK,EAAc,CACvB,MAAO,MAAK,SAAS,GAEvB,SAAS,EAAc,CACrB,GAAM,CAAC,MAAA,EAAO,mBAAA,GAAsB,KAAK,KAAK,IAAI,GAElD,GAAI,IAAU,YAAa,CACzB,GAAM,GACF,KAAK,SAAS,EAAmB,KAAK,QACpC,EACF,KAAK,SAAS,EAAmB,KAAK,QAC1C,MAAO,GAAa,uBAAuB,EAAY,GAGzD,MAAO,MAAK,KAAK,IAAI,GAAQ,OAG/B,WAA2B,EAAa,CACtC,GAAM,GAAO,KAAK,SAAS,EAAE,QACzB,EAAc,EAClB,GAAI,EAAE,QAAU,SACd,GAAI,CAEF,EAAe,EAAsB,IAAI,GAAK,EAAK,aAAa,UAChE,EADgE,CAEhE,KAAM,IAAI,OAAM,oDAGpB,MAAO,IAAO,EAAE,MAAsB,EAAE,MAAO,GAIjD,WACI,EAAoC,EAAiB,EAAe,CACtE,GAAM,GAAS,KAAK,MAAM,EAAQ,EAAO,GACzC,MAAO,MAAS,qBAAqB,EAAQ,EAAO,EAAO,MAU7D,YAAY,EAAgB,EAAQ,GAAK,CACvC,GAAI,KAAK,KAAK,IAAI,GAAS,CAEzB,GADA,KAAK,KAAK,IAAI,GAAQ,WAClB,CAAC,GAAS,KAAK,KAAK,IAAI,GAAQ,SAAW,EAC7C,MAAO,GAGT,GAAM,CAAC,mBAAA,GAAsB,KAAK,KAAK,IAAI,GAEvC,GAAsB,MACxB,MAAK,YAAY,EAAmB,KAAK,OAAQ,IACjD,KAAK,YAAY,EAAmB,KAAK,OAAQ,KAGnD,KAAK,KAAK,OAAO,GAEnB,MAAO,GAGT,8BAA8B,EAAsB,CAClD,KAAK,YAAY,EAAW,aAGxB,MAAK,EAAa,CACtB,GAAM,GAAQ,EAAK,MACnB,MAAA,KAEO,CAAC,SADS,EAAK,MAAQ,GAIhC,QAAM,CACJ,MAAO,CAEL,WAAY,GACZ,QACI,CAAC,uHAKT,MAAM,EAAiB,CACrB,GAAiB,CAAC,GAAY,SAE9B,GAAM,GAAW,KAAK,SAAS,EAAU,QACzC,MAAO,IAAU,EAAU,MAAO,GAGpC,SAAO,EAEP,gBAAc,CACZ,MAAO,IAIT,SAAO,CACL,MAAO,OAAM,YA/LA,GAAA,WAAa,ECzC9B,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,aAAA,IAAA,GAAA,mBAAA,IAAA,GAAA,SAAA,IAAA,GAAA,WAAA,IAAA,GAAA,QAAA,IAAA,GAAA,UAAA,IAAA,GAAA,UAAA,IAAA,GAAA,aAAA,IAAA,GAAA,YAAA,IAAA,GAAA,SAAA,IAAA,GAAA,aAAA,IAAA,GAAA,QAAA,IAAA,GAAA,QAAA,IAAA,GAAA,YAAA,IAAA,GAAA,YAAA,IAAA,GAAA,aAAA,IAAA,GAAA,QAAA,IAAA,GAAA,aAAA,IAAA,GAAA,SAAA,IAAA,GAAA,UAAA,IAAA,GAAA,UAAA,IAAA,GAAA,cAAA,IAAA,GAAA,UAAA,IAAA,GAAA,sBAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,QAAA,IAAA,GAAA,SAAA,IAAA,GAAA,SAAA,IAAA,GAAA,cAAA,IAAA,GAAA,WAAA,IAAA,KCsBM,YAAwB,EAAgB,CAC5C,GAAM,GAAe,GAAI,cAAa,EAAK,QAC3C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EACjC,EAAa,GAAK,KAAK,IAAI,EAAK,IAElC,MAAO,GAGF,GAAM,IAAO,GAAsD,CACxE,GAAM,CAAC,EAAA,GAAK,EAAK,OACX,EAAa,EAAK,QAExB,GAAiB,EAAG,OAEpB,GAAI,GAAe,GAAI,cAAa,EAAK,cAAc,EAAE,QACnD,EAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OAC7C,MAAA,GAAe,GAAc,GAEtB,EAAW,WAAW,EAAc,EAAE,MAAO,YAGzC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YAAuC,EAAyB,CAEpE,MAAO,CAAC,EAAkB,EAAkB,EACpC,EAAmB,IAA2C,CACpE,GAAM,GAAW,EAAa,2BAA2B,EAAQ,GAE3D,EAAa,EAAS,OACtB,EAAgB,EAAK,eAAe,GACpC,EAAa,EAAK,cAAc,GAEhC,EACF,EAAK,uBAAuB,EAA0B,GAEpD,EAAQ,EAAO,OACf,EAAQ,EAAO,OAEf,EAAW,EAAK,eAAe,GAC/B,EAAW,EAAK,eAAe,GAE/B,EAAiB,EAAa,iBAAiB,EAAQ,GACvD,EAAiB,EAAa,iBAAiB,EAAQ,GAE7D,GAAI,EAAe,OAAS,EAAe,SAAW,EACpD,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAO,GAAK,EAAG,EAAM,EAAI,EAAM,QAAS,EAAM,EAAI,EAAM,aAG1D,QAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAM,EAAK,WAAW,EAAG,EAAY,GAErC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAEtC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAE5C,EAAO,GAAK,EAAG,EAAM,GAAS,EAAM,IAIxC,MAAO,CAAC,EAAQ,IC7Cd,YAAkB,EAAsD,CAE5E,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,KAAA,EAAM,KAAA,GAAQ,EAEf,EAAW,EAAQ,KAAK,IAAI,EAAK,QAAQ,OACzC,EAAW,EAAQ,KAAK,IAAI,EAAK,QAAQ,OAEzC,EAAc,EAAQ,eAAe,EAAK,MAAO,aAEjD,EAAU,EAAQ,KAAK,IAAI,EAAY,QAK7C,MAAA,GAAQ,mBAAqB,CAC3B,KAAM,EAAQ,eAAe,EAAK,MAAO,UAAW,GACpD,KAAM,EAAQ,eAAe,EAAK,MAAO,UAAW,IAG/C,EAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICpBR,YACF,EAAyB,EACzB,EAAkB,UAAS,CAC7B,GAAI,IAAU,YAAa,CACzB,GAAM,GAAO,GAAM,EAAS,EAAO,WAC7B,EAAO,GAAM,EAAS,EAAO,WAEnC,MAAO,IAAQ,CAAC,OAAQ,CAAC,KAAA,EAAM,KAAA,GAAO,QAAA,IAGxC,GAAM,GAAS,EAAK,oBAAoB,EAAK,cAAc,GAAQ,GAEnE,MAAO,GAAQ,eAAe,EAAO,EAAO,GClBxC,YACF,EAAuD,CACzD,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,MAAA,GAAQ,OAAO,EAAE,QAEV,CAAC,OAAQ,EAAE,OAAQ,MAAO,EAAE,MAAO,MAAO,EAAE,OAG9C,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICbR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAO,EAAQ,KAAK,IAAI,EAAM,QAAQ,mBAAmB,KACzD,EAAU,EAAQ,KAAK,IAAI,EAAK,QAAQ,OAK9C,MAAO,GAAQ,eAAe,EAAK,MAAO,EAAK,MAAO,GAGjD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICZR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,GAAS,EAGhB,GAAI,IAAU,YAAa,CACzB,GAAI,EAAE,QAAU,YACd,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IAGhC,GAAM,GAAkB,GAAM,EAAS,EAAE,MAAO,EAAE,OAC5C,EAAS,GAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,aAEpD,EACF,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAQ,KAAM,GAAkB,QAAA,IAE5D,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAIT,GAAI,EAAE,QAAU,YAAa,CAC3B,GAAM,GAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAS,GAAK,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,EAAS,MAAO,CAAC,MAAA,KAE7D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,GAAI,CAAC,EAAK,gBAAgB,EAAE,MAAO,GAAQ,CAGzC,GAAM,GAAS,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACtC,MAAO,CAAC,OAAQ,EAAO,OAAQ,MAAO,EAAO,MAAO,MAAA,GAGtD,GAAI,IAAU,QAAS,CACrB,GAAM,GAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,EAAe,WAAW,KAAK,GACrC,MAAO,GAAQ,eAAe,EAAE,MAAO,QAAS,GAGlD,GAAI,IAAU,OAAQ,CAIpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAO,EAAK,aAAa,CAAC,GAAI,EAAE,OAEhC,CAAC,EAAY,GAAe,GAC9B,CAAC,EAAG,IAAO,IAAM,EAAK,EAAI,GAAG,EAAE,MAAO,GAAI,EAAO,EAAM,QAE3D,MAAO,GAAQ,eAAe,EAAa,OAAQ,GAGrD,KAAM,IAAI,OAAM,iCAAiC,EAAE,YAAY,KAG1D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICxDR,YACF,EAAc,EACd,EAAuC,EAAgB,CACzD,MAAI,IAAe,KACV,CAAC,CAAC,OAAA,EAAQ,QAAA,KAAY,CAC3B,GAAM,CAAC,IAAG,EAAA,GAAK,EACT,EAAa,EAEnB,GAAiB,CAAC,EAAG,GAAI,GAEzB,GAAM,GAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OACtC,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OAEtC,EAAS,GAAS,EAAE,MAEpB,CAAC,EAAY,GACf,EAAW,EAAE,MAAO,EAAE,MAAO,EAAO,EAAO,GAE/C,MAAO,GAAW,eAAe,EAAa,EAAQ,IAInD,CAAC,CAAC,OAAA,EAAQ,QAAA,KAAY,CAC3B,GAAM,CAAC,IAAG,EAAA,GAAK,EACT,EAAa,EAEnB,GAAI,EAAE,QAAU,aAAe,EAAE,QAAU,YAAa,CACtD,GAAM,GAAY,GACd,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAS,EAAY,MAAO,CAAC,MAAO,eAEnD,EAAgB,EAAW,KAAK,IAAI,EAAU,QAE9C,EAAQ,EAAc,mBAAmB,KACzC,EAAQ,EAAc,mBAAmB,KAEzC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAChC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEhC,EAAY,GACd,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAS,EAAY,MAAO,CAAC,MAAO,eAEnD,EAAgB,EAAW,KAAK,IAAI,EAAU,QAE9C,EAAQ,EAAc,mBAAmB,KACzC,EAAQ,EAAc,mBAAmB,KAEzC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAChC,EACF,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEhC,CAAC,EAAgB,EAAgB,GAAe,EAClD,EAAE,MAAO,EAAE,MAAO,EAAW,EAAW,EAAW,GAEjD,EACF,EAAW,eAAe,EAAa,UAAW,GAEhD,EACF,EAAW,eAAe,EAAa,UAAW,GAEhD,EAAS,GACX,CAAC,OAAQ,CAAC,KAAM,EAAY,KAAM,GAAa,QAAS,IAE5D,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAElC,MACF,CACL,GAAM,GAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OACtC,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OAEtC,EAAS,GAAS,EAAE,MAEpB,CAAC,EAAY,GACf,EAAW,EAAE,MAAO,EAAE,MAAO,EAAO,EAAO,GAE/C,MAAO,GAAW,eAAe,EAAa,EAAQ,KAStD,YAAwC,EAA0B,CAEtE,MAAO,CAAC,EAAkB,EAAkB,EACpC,EAAyB,EACzB,IAA+D,CACrE,GAAM,GAAc,EAAa,2BAA2B,EAAQ,GAC9D,EAAa,EAAK,cAAc,GAChC,EAAa,EAAY,OACzB,EAAgB,EAAK,eAAe,GAEpC,EAAiB,EAAK,uBAAuB,UAAW,GACxD,EAAiB,EAAK,uBAAuB,UAAW,GAExD,EAAiB,EAAa,iBAAiB,EAAQ,GACvD,EAAiB,EAAa,iBAAiB,EAAQ,GAEvD,EAAQ,EAAa,uBAAuB,EAAW,GACvD,EAAQ,EAAa,uBAAuB,EAAW,GAEvD,EAAQ,EAAO,OACf,EAAW,EAAK,eAAe,GAE/B,EAAQ,EAAO,OACf,EAAW,EAAK,eAAe,GAErC,GAAI,EAAe,OAAS,EAAe,SAAW,EACpD,OAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAO,EAAI,EAAM,OACjB,EAAO,EAAI,EAAM,OAEjB,EACF,EAAG,EAAM,EAAO,GAAI,EAAM,EAAO,EAAI,GAAI,EAAM,EAAO,GACnD,EAAM,EAAO,EAAI,IAExB,EAAe,GAAK,EAAO,KAC3B,EAAe,GAAK,EAAO,SAG7B,QAAS,GAAI,EAAG,EAAI,EAAe,OAAQ,IAAK,CAC9C,GAAM,GAAM,EAAK,WAAW,EAAG,EAAY,GAErC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAEtC,EAAO,EAAI,MAAM,CAAC,GACxB,EAAe,QAAQ,GAAK,EAAK,GAAK,GACtC,GAAM,GAAS,EAAK,WAAW,EAAM,EAAO,GAEtC,EACF,EAAG,EAAM,EAAS,GAAI,EAAM,EAAS,EAAI,GAAI,EAAM,EAAS,GACzD,EAAM,EAAS,EAAI,IAE1B,EAAe,GAAK,EAAS,KAC7B,EAAe,GAAK,EAAS,KAGjC,MAAO,CAAC,EAAgB,EAAgB,ICjKrC,GAAM,IAAU,GAA8B,CAAC,EAAG,IAAM,EAAI,GACtD,GACT,GAA+B,CAAC,EAAO,EAAO,EAAO,IAC5C,EAAC,KAAM,EAAQ,EAAO,KAAM,EAAQ,KAGpC,GAAM,GAAiB,GAAK,GAAS,IAErC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICdR,YACF,EAAmB,EAAyB,EAC5C,EAAwB,EAAY,CACtC,GAAM,GAAc,EAAK,cAAc,GACjC,EAAU,EAAK,oBAAoB,EAAM,GAE/C,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAAK,CACrC,GAAM,GAAQ,EAAM,GACpB,GAAI,EAAQ,EACV,KAAM,IAAI,OAAM,iCAGd,GAAS,GAIT,GAAc,EAChB,EAAQ,IAAU,EAAY,GAE9B,EAAQ,IAAU,GAItB,MAAO,GAGH,YACF,EAAuB,EAA6B,EACpD,EAAe,GAAK,CACtB,GAAM,GAAU,EAAK,MAAM,GACrB,EAAU,EAAK,MAAM,GAErB,EAAS,GAAO,CAAC,EAAS,GAAO,EAAW,OAElD,OAAS,GAAI,EAAG,EAAI,EAAS,IAC3B,OAAS,GAAI,EAAG,EAAI,EAAS,IAAK,CAChC,GAAM,GAAQ,EAAK,IAAI,EAAG,GAC1B,GAAI,EAAQ,EACV,KAAM,IAAI,OAAM,iCAGd,GAAS,GAIT,GACF,EAAO,IAAI,EAAG,EAAG,GAEb,EAAW,KAAO,EACpB,EAAO,IAAI,EAAO,IAAI,EAAG,GAAS,EAAW,IAAI,EAAG,GAAI,EAAG,GAE3D,EAAO,IAAI,EAAO,IAAI,EAAG,GAAS,EAAG,EAAG,IAMhD,MAAO,GCpDH,YAAgC,EAAwB,CAE5D,MAAO,CAAC,EAAQ,EAAO,IAAS,CAC9B,GAAM,GACF,EAAK,uBAAuB,EAA0B,EAAO,QACjE,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EACnC,EAAU,GAAK,EAAG,EAAO,GAAI,GAE/B,MAAO,ICAL,YACF,EAAc,EAA0B,EAAgB,CAC1D,MAAO,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CAClC,GAAM,CAAC,EAAA,GAAK,EAEZ,GADA,GAAiB,EAAG,GAChB,EAAE,QAAU,UAAY,IAAU,SACpC,KAAM,IAAI,OAAM,wDAGlB,GAAM,GAAa,EACb,EAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAQ,EAAK,cAAc,EAAE,OAC7B,EAAS,GAAS,EAAE,MACpB,EAAY,EAAK,kBAAkB,EAAQ,GACjD,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAC3B,EAAU,GAAK,EAAG,EAAO,GAAI,GAE/B,MAAO,GAAW,eAAe,EAAE,MAAO,EAAQ,IAahD,YACF,EAAc,EAA4B,EAAgB,CAC5D,MAAO,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CAClC,GAAM,CAAC,EAAA,GAAK,EAEZ,GADA,GAAiB,EAAG,GAChB,EAAE,QAAU,UAAY,IAAU,SACpC,KAAM,IAAI,OAAM,wDAGlB,GAAM,GAAa,EACb,EAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAS,GAAS,EAAE,MACpB,EAAY,EAAU,EAAQ,EAAQ,GAC5C,MAAO,GAAW,eAAe,EAAE,MAAO,EAAQ,ICrD/C,GAAM,IAAW,GAAuB,GAAO,KAAK,KAAK,IACnD,GAAO,GAAwB,GAAM,IAErC,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EAAuD,EACvD,EAAiB,EAAqB,CACxC,GAAM,GAAU,EAAK,kBAAkB,EAAO,EAAK,cAAc,IAEjE,GAAI,GAAgB,IAAU,SAAU,CAEtC,GAAI,GAAS,EACb,EAAO,QAAQ,GAAQ,CACrB,GAAM,GAAO,EAAK,cAAc,EAAM,OAErC,EAAuB,IAAI,EAAM,KAAoB,GACtD,GAAU,QAEP,CACL,GAAI,GAAY,EAEhB,EAAO,QAAQ,GAAQ,CACrB,GAAM,GAAc,IAAU,SAC1B,EAAa,uBAAuB,EAAM,MAC1C,EAAM,KAEN,EAAO,EAEX,OAAS,GAAM,EAAG,EAAM,EAAM,MAAM,GAAI,EAAE,EAAK,CAC7C,GAAM,GAAS,EAAM,EAAS,GAAK,EACnC,OAAS,GAAM,EAAG,EAAM,EAAM,MAAM,GAAI,EAAE,EACxC,EAAQ,EAAS,GAAO,EAAY,KAIxC,GAAa,EAAM,MAAM,KAI7B,MAAO,GChCF,GAAM,IAAU,GAAuB,GAAO,KAAK,IAAI,IACjD,GAAM,GAAwB,GAAK,IAEnC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GAAY,GAAuB,GAAO,KAAK,MAAM,IACrD,GAAQ,GAAwB,GAAO,IAEvC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GAAY,GAAuB,GAAO,KAAK,MAAM,IACrD,GAAQ,GAAwB,GAAO,IAEvC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EAA0B,EAC1B,EAA4B,CAC9B,GAAM,GAAS,GAAO,EAAoB,EAAK,OAC/C,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,EAAE,EAAG,CAGpC,GAAM,GAFS,EAAO,WAAW,GAEI,QAC/B,EAAW,EAAY,GACvB,EAAa,EAAY,GACzB,EAAe,EAAW,WAAW,CAAC,EAAU,IACtD,EAAY,GAAK,EAAW,OAAO,GAEnC,GAAM,GAAgB,EAAK,WAAW,GACtC,EAAO,OAAO,GAAK,EAAK,OAAO,GAGjC,MAAO,GCdF,GAAM,IACT,GAA6B,CAAC,EAAW,IAAe,EAAI,EAAK,EAAI,GAC5D,GACT,GAAiB,GAAS,GAAa,KAAwB,QAEtD,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICRD,GACT,GAA6B,CAAC,EAAW,IAAe,EAAI,EAAK,EAAI,GAC5D,GACT,GAAiB,GAAM,GAAU,KAAwB,QAEhD,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICXR,YACF,EAAe,EAAc,EAAW,CAC1C,GAAM,GAAQ,GAAO,GAAU,GAAM,GAE/B,EAAS,EAAK,oBAAoB,EAAK,WAC7C,EAAO,GAAK,EACZ,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAO,EAAI,GAAK,EAG9B,MAAO,GCPF,GAAM,IAAU,GAAuB,GAAO,KAAK,IAAI,IACjD,GAAM,GAAwB,GAAK,IAEnC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EAAmB,EAAoB,EACvC,EAAe,CACjB,GAAM,GAAO,EAAK,uBACd,EAA0B,EAAK,cAAc,IAEjD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,GAGV,EAAK,GAAK,EAEZ,MAAO,GCdF,GAAM,IAAc,GACtB,CAAC,EAAQ,IAAW,KAAK,IAAI,EAAQ,IAC7B,GAAU,GAAiB,GAAS,IAEpC,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICPD,GAAc,GACtB,CAAC,EAAQ,IAAW,KAAK,IAAI,EAAQ,IAC7B,GAAU,GAAiB,GAAS,IAEpC,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICRD,GACT,GAA8B,CAAC,EAAQ,IAAW,EAAS,GAClD,GACT,GAA+B,CAAC,EAAO,EAAO,EAAO,IAC5C,EACL,KAAM,EAAQ,EAAQ,EAAQ,EAC9B,KAAM,EAAQ,EAAQ,EAAQ,KAIzB,GACT,GAAiB,GAAU,GAAc,IAEhC,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICdR,YAAkB,EAAmB,EAAkB,EAAgB,CAE3E,GAAM,GACF,EAAK,kBAAkB,GAAuB,GAClD,MAAO,IAAa,GAAI,EAAQ,EAAU,EAAO,GAG7C,YAAc,EAAoD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,GAAiB,EAAG,OAEpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,CAAC,EAAK,GAAY,GAAQ,EAAO,EAAE,MAAO,EAAE,OAElD,MAAO,GAAQ,eAAe,EAAU,EAAE,MAAO,GAG5C,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICxBD,GACT,GAA8B,CAAC,EAAG,IAAO,IAAM,EAAK,EAAI,GAC/C,GACT,GAAiB,GAAU,GAAc,KAAsB,QAEtD,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICVR,YACF,EAAmB,EAAkB,EAAiB,EACtD,EAAkB,CACpB,GAAM,GAAQ,EAAO,OACf,EAAQ,EAAK,cAAc,GAC3B,EAAW,EAAK,eAAe,GAC/B,EAAa,EAAK,eAAe,GAEjC,EAAS,EAAK,uBAChB,EAA0B,EAAK,cAAc,IAEjD,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAAG,CAC9B,GAAM,GAAM,EAAK,WAAW,EAAG,EAAO,GAGhC,EAAmB,GAAI,OAAM,EAAI,QACvC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAI,EAAK,IAGvB,GAAM,GAAW,EAAK,WAAW,EAAQ,EAAO,GAChD,EAAO,GAAY,EAAM,GAE3B,MAAO,GCnBH,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,GAAW,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,aAEpB,GAAM,GAAQ,EAAE,MAAM,OAEhB,EAAqB,GAAI,OAAM,GACrC,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAS,GAAK,EAAE,MAAM,EAAK,IAG7B,GAAM,GAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,EAAS,GAAc,EAAQ,EAAE,MAAO,EAAE,MAAO,EAAM,GAG7D,MAAO,CAAC,OADO,EAAQ,MAAM,EAAQ,EAAU,EAAE,OACjC,MAAO,EAAU,MAAO,EAAE,OAGrC,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC7BR,YACF,EAAkB,EAAkB,EACpC,EAAuB,CAEzB,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAQ,GAC7C,EAAW,GAAW,EAAQ,SAC9B,EAAU,EAAK,oBACD,EAAK,cAAc,GAAW,GAC5C,EAAa,EAAK,cAAc,GAEtC,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,EAAE,EAAG,CACvC,GAAM,GAAS,EAAI,EACf,EAAO,EACX,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,GAAQ,EAAM,EAAS,GAEzB,EAAQ,GAAK,EAGf,MAAO,CAAC,QAAA,EAAS,SAAA,EAAU,SAAA,GAGvB,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,QAEpB,GAAM,GAAQ,EAAE,MAAM,OAChB,EAAO,EAAK,eAAe,EAAM,EAAE,OAEnC,EAAc,EAAa,mBAAmB,EAAM,GACtD,EAAgB,EAChB,EAAY,EACV,EAA0B,GAC5B,GAAe,MACjB,GAAY,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KAC3D,EAAwB,KAAK,GAC7B,EAAgB,EAAa,iBAAiB,EAAc,OAAQ,IAGtE,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAU,QAAQ,OAC3C,CAAC,QAAA,EAAS,SAAA,EAAU,SAAA,GACtB,GAAS,EAAU,MAAO,EAAU,MAAO,EAAO,GAElD,EAAc,EAClB,MAAI,IACF,GAAc,EAAa,qBAAqB,EAAU,IAG5D,EAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAAQ,eAAe,EAAa,EAAU,GAGhD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICnER,YACF,EAAe,EAAc,EAC7B,EAAwB,CAC1B,GAAM,GAAgB,IAAU,EAC1B,EAA8B,EAAQ,GAAQ,EAAO,EACrD,EAA8B,EAAO,GAAS,EAAO,EAE3D,GAAI,GAAiB,GACjB,EACF,MAAO,GAAK,oBAAoB,EAAG,GAGrC,GAAM,GAAc,KAAK,IAAI,KAAK,KAAM,GAAO,GAAS,IAClD,EAAS,EAAK,oBAAoB,EAAa,GAEjD,EAAO,GAAS,IAAS,GAG3B,GAAO,IAGT,EAAO,GAAK,EACZ,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAO,EAAI,GAAK,EAE9B,MAAO,GCtBF,GAAM,IAAY,GAAuB,GAAO,EAAI,KAAK,KAAK,IACxD,GAAQ,GAAwB,GAAO,IAEvC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICNR,YACF,EAAqB,EAAiB,EAAgB,EACtD,EAAe,CACjB,GAAM,GAAc,GAAW,iBAAiB,EAAO,EAAO,GACxD,EAAS,EAAK,cAAc,GAC5B,EAAW,EAAK,eAAe,GAErC,GAAI,EAAa,CACf,GAAM,GAAa,GAAW,kBAAkB,EAAO,GAEvD,MAAI,KAAU,SACJ,EAAsB,MAAM,EAAY,EAAa,GAGvD,EAAoB,SAAS,EAAY,EAAa,GAGhE,GAAM,GAAc,IAAU,SAC1B,EAAa,uBAAuB,GACpC,EAEE,EAAQ,GAAO,EAAO,EAAO,GAC7B,EAAS,GAAO,EAAM,GAC5B,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,EAAE,EAAG,CACpC,GAAM,GAAS,EAAO,WAAW,GAC3B,EAAQ,EAAO,IAAI,CAAC,EAAa,IAAM,EAAM,EAAM,IACzD,EAAO,IAAI,EAAM,IAAI,GAAG,GAAQ,GAAG,GAGrC,MAAI,KAAU,SACL,EAAa,uBAAuB,EAAO,QAE7C,EAAO,OAGV,YACF,EAAuE,CAEzE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,EAAO,KAAA,GAAQ,EAEtB,GAAiB,EAAG,SAEpB,GAAM,CAAC,EAAQ,GAAS,GAAW,iBAAiB,EAAG,EAAO,GAC9D,GAAW,kBAAkB,EAAG,EAAQ,GAExC,GAAM,GAAO,EAAQ,KAAK,IAAI,EAAE,QAAQ,OAClC,EAAU,GAAU,EAAM,EAAQ,EAAO,EAAE,MAAO,EAAE,OAC1D,MAAO,GAAQ,eAAe,EAAO,EAAE,MAAO,GAGzC,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICvDD,GAAwB,GAA8B,CAAC,EAAG,IAAK,CAC1E,GAAM,GAAO,EAAI,EACjB,MAAO,GAAO,IAEH,GACT,GAAiB,GAAmB,IAE3B,GAAwC,CACnD,WAAY,GACZ,YAAa,MACb,WAAY,ICbR,YACF,EAAoB,EAAuB,EAC3C,EAAe,CACjB,GAAM,GAAS,GAAO,EAAU,EAAK,OAErC,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACpC,GAAM,GAAM,EAAO,WAAW,GAExB,EAAmB,GAAI,OAAM,EAAI,QACvC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,EAAO,GAAK,EAAI,GAAK,EAAQ,GAAK,EAAM,GAE1C,EAAO,IAAI,EAAK,IAAI,GAAG,GAAS,GAAG,GAGrC,MAAO,GCZF,GAAM,IACT,GAA8B,CAAC,EAAQ,IAAW,EAAS,GAClD,GACT,GAA+B,CAAC,EAAO,EAAO,EAAO,IAC5C,EAAC,KAAM,EAAQ,EAAO,KAAM,EAAQ,KAEpC,GAAM,GAAiB,GAAK,GAAS,IAErC,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,YACF,EACA,EAAc,CAChB,GAAM,GAAqB,GAAI,OAAM,EAAK,MAC1C,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAS,GAAK,EAAK,MAAM,GAAK,EAAK,GAErC,GAAM,GAAS,GAAO,EAAU,EAAK,OACrC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAO,OAAQ,EAAE,EAAG,CAC7C,GAAM,GAAS,EAAO,WAAW,GAE3B,EAAwB,GAAI,OAAM,EAAK,MAC7C,OAAS,GAAI,EAAG,EAAI,EAAY,OAAQ,IACtC,EAAY,GAAK,EAAO,GAAK,EAAK,MAAM,GAG1C,GAAM,GAAgB,EAAK,WAAW,GAEtC,EAAO,OAAO,GAAK,EAAK,OAAO,GAEjC,MAAO,GCvBH,YACF,EAAe,EAAkB,EAAyB,EAC1D,EAAe,CAGjB,GAAM,GAAU,EAAO,EAAO,OAAS,GACjC,CAAC,EAAO,GAAQ,CAAC,EAAE,OAAS,EAAS,GACrC,EAAc,EAAK,uBAAuB,EAAQ,EAAQ,GAC1D,EAAiB,EAAK,uBAAuB,QAAS,EAAQ,GAEpE,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAS,EAAI,EACb,EAAO,EAAE,SAAS,EAAQ,EAAS,GACnC,EAAmD,GACzD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,IAC/B,EAAU,KAAK,CAAC,MAAO,EAAK,GAAI,MAAO,IAEzC,EAAU,KAAK,CAAC,EAAG,IAAM,EAAE,MAAQ,EAAE,OAErC,GAAM,GAAY,EAAI,EAChB,EAAW,EAAY,SAAS,EAAW,EAAY,GACvD,EAAc,EAAe,SAAS,EAAW,EAAY,GACnE,OAAS,GAAI,EAAG,EAAI,EAAG,IACrB,EAAS,GAAK,EAAU,GAAG,MAC3B,EAAY,GAAK,EAAU,GAAG,MAKlC,GAAM,GAAc,EAAO,QAC3B,MAAA,GAAY,EAAY,OAAS,GAAK,EAE/B,CACL,GAAO,EAA4B,EAAQ,GAC3C,GAAO,EAA4B,QAAS,ICpC1C,YACF,EAAuB,EAAc,EAAiB,EAAe,CAMvE,GAAM,GAAQ,EAAK,eAAe,EAAM,GAAO,GAyDzC,EAAW,CAAC,EAAG,EAAM,GAAI,GAC/B,OAAS,GAAI,EAAG,EAAI,EAAO,IACzB,EAAS,IAAM,EAAM,GAEvB,EAAS,GAAK,EAAM,GACpB,OAAS,GAAI,EAAQ,EAAG,EAAI,EAAM,OAAQ,IACxC,EAAS,IAAM,EAAM,GAKvB,GAAM,GAA0C,GAG1C,EAAU,GAAI,YAAW,EAAM,IAE/B,EAAc,GAAI,IAAa,EAAU,EAAO,GAGhD,EAA0B,GAC1B,EAAa,EAAS,KAAO,GAAK,EAAS,KAAO,EACxD,OAAS,GAAI,EAAG,EAAI,EAAM,GAAQ,IAAK,CAErC,GAAI,GACJ,GAAI,EAEF,EAAU,EAAO,GAAG,eACf,CACL,GAAM,GAAa,GACnB,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,EAAW,KAAK,EAAY,IAAI,EAAG,EAAG,IAG1C,EAAU,EAAW,KAAK,KAI5B,GAAI,EAAe,KAAa,OAC9B,EAAQ,GAAK,EAAe,OACvB,CACL,GAAM,GAAc,OAAO,KAAK,GAAgB,OAChD,EAAe,GAAW,EAC1B,EAAQ,GAAK,EACb,EAAc,KAAK,IAOvB,GAAM,GAAiB,EAAS,QAChC,EAAe,GAAK,OAAO,KAAK,GAAgB,OAChD,GAAM,GAAe,GAAI,IAAa,EAAgB,GACtD,EAAc,QAAQ,CAAC,EAAoB,IAAK,CAC9C,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,OAAS,GAAI,EAAG,EAAI,EAAS,GAAI,IAC/B,EAAa,IAAI,EAAY,IAAI,EAAG,EAAoB,GAAI,EAAG,EAAG,KAOxE,GAAM,GAAc,EAAM,QAC1B,MAAA,GAAY,GAAS,EAAe,GAE7B,CACL,aAAc,EAAa,OAC3B,YAAA,EACA,QAAA,GCtJJ,GAAM,IAAU,QC2BhB,GAAgB,MAAO,IAAM,GAAI,IAAkB,GCT5C,GAAM,IACT,GAAgB,GAAM,GAAO,GAAM,EAAI,EAAM,KAAK,IAAI,GAAM,GAEnD,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,GAAS,EAEhB,GAAiB,CAAC,GAAI,aAEtB,GAAM,GAAQ,EAAK,cAAc,EAAE,OAC7B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAU,EAAK,uBAAuB,UAAW,GAEvD,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAQ,GAAK,EAAM,GAAK,EAAI,EAAQ,EAAM,GAAK,EAAM,GAGvD,MAAO,GAAQ,eAAe,EAAE,MAAO,UAAW,GAG7C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICxBR,GAAY,GACd,CAAC,EAAgB,IAAmB,EAAS,EAAI,EAAS,EAAS,GAEjE,YAAgB,EAAoD,CAExE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,EAAG,MAAA,GAAS,EAEnB,GAAiB,CAAC,EAAG,GAAQ,SAE7B,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAEvC,CAAC,EAAY,GACf,GAAU,EAAE,MAAO,EAAM,MAAO,EAAO,EAAO,EAAE,OAEpD,MAAO,GAAQ,eAAe,EAAa,EAAE,MAAO,GAG/C,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICxBD,GAAO,GAAgB,GAAO,GAAO,KAAK,IAAI,EAAG,IAEjD,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GACT,GAAgB,GAAQ,GAAO,KAAK,IAAI,KAAK,IAAI,EAAG,GAAK,IAEhD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICAR,YACF,EAAyB,EAAe,EACxC,EAAqC,EAAuB,CAC9D,GAAI,IAAe,SACjB,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACzB,GAAI,IAAe,OACxB,MAAO,IAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACrB,GAAI,IAAe,MACxB,MAAO,IAAI,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACpB,GAAI,IAAe,QACxB,MAAO,IAAM,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IACtB,GAAI,IAAe,QACxB,MAAO,IAAM,CAAC,OAAQ,CAAC,EAAA,EAAG,MAAO,GAAyB,QAAA,IACrD,GAAI,IAAe,YACxB,MAAO,IAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAEzD,KAAM,IAAI,OACN,cAAc,mDCvBd,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,MAAA,GAAS,EAEV,EAAQ,EAAK,cAAc,EAAE,OAC7B,EAAS,EAAK,uBAAuB,EAAO,GAC5C,EAAS,EAAK,cAAc,GAElC,EAAK,OACD,IAAU,EACV,IAAM,kBAAkB,UAAe,iCACzB,EAAE,cAAc,kFAGlC,EAAQ,OAAO,EAAE,QAEjB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAEjC,GAAI,EAAM,oBAAsB,KAAM,CACpC,GAAM,GAAO,EAAM,mBAAmB,KAChC,EAAO,EAAM,mBAAmB,KAEtC,EAAK,MAAQ,EACb,EAAK,MAAQ,EAGf,MAAO,CAAC,OAAQ,EAAE,OAAQ,MAAO,EAAQ,MAAO,EAAE,OAG7C,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAG,EAAA,GAAK,EACT,CAAC,WAAA,EAAY,WAAA,GAAc,EAEjC,GAAiB,CAAC,EAAG,GAAI,UAEzB,GAAM,GAAQ,EAAE,MAAM,OAChB,EAAQ,EAAE,MAAM,OAEhB,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAChE,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAEhE,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAChE,EAAc,EAAa,EAAE,MAAM,EAAQ,GAAK,EAAE,MAAM,EAAQ,GAEhE,EAAa,EAAE,MAAM,MAAM,EAAG,IAC9B,EAAa,EAAE,MAAM,MAAM,EAAG,IAE9B,EAAY,EAAK,cAAc,GAC/B,EAAY,EAAK,cAAc,GAE/B,EACF,IAAc,GAAa,IAAc,GAAK,IAAc,EAEhE,EAAK,OACD,GAAS,GAAK,GAAS,GAAK,EAC5B,IAAM,uJAEsB,WAAoB,OAIpD,GAAM,GADF,GAAY,EAAY,EAAE,MAAM,MAAM,EAAG,IAAM,EAAE,MAAM,MAAM,EAAG,KACjC,OAAO,CAAC,EAAa,IAExD,EAAK,OACD,IAAgB,EAChB,IAAM,kCAAkC,WACjC,6BAAuC,EAAE,aACzC,EAAE,wBAAwB,oBACV,iBAE3B,GAAM,GAAW,EAAa,CAAC,EAAW,EAAa,GACzB,CAAC,EAAW,EAAa,GACjD,EAAW,EAAa,CAAC,EAAW,EAAa,GACzB,CAAC,EAAW,EAAa,GAGjD,EAAM,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KACvD,EAAM,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAEvD,EAAY,EAAa,EAAI,MAAM,GAAK,EAAI,MAAM,GAClD,EAAU,EAAa,EAAI,MAAM,GAAK,EAAI,MAAM,GAChD,EAAW,EAAa,EAAI,MAAM,GAAK,EAAI,MAAM,GACjD,EAAW,KAAK,IAAI,EAAW,GAE/B,EAAY,EAAQ,KAAK,IAAI,EAAI,QAAQ,OACzC,EAAY,EAAQ,KAAK,IAAI,EAAI,QAAQ,OAEzC,EAAa,EAAK,eAAe,EAAI,OACrC,EAAa,EAAK,eAAe,EAAI,OAErC,CAAC,EAAQ,EAAY,IAAc,EACrC,CAAC,EAAW,GAAI,EAAG,EAAW,IAC9B,CAAC,EAAW,GAAI,EAAW,GAAI,GAC7B,CAAC,EAAY,GAAY,IAAU,EACrC,CAAC,EAAG,EAAW,GAAI,EAAW,IAC9B,CAAC,EAAW,GAAI,EAAG,EAAW,IAE5B,GAAO,EAAU,EACjB,EAAS,GAAO,CAAC,EAAU,EAAS,GAAW,EAAI,OAEnD,GAAU,EAAO,OACjB,GAAY,EAAQ,UAE1B,OAAS,IAAK,EAAG,GAAK,EAAU,KAC9B,OAAS,IAAK,EAAG,GAAK,EAAS,IAAM,GACnC,OAAS,IAAK,EAAG,GAAK,EAAU,IAAM,GACpC,OAAS,IAAK,EAAG,GAAK,EAAW,IAAM,GAAW,CAEhD,GAAM,IAAS,KAAK,IAAI,GAAK,GAAW,GAClC,GAAS,KAAK,IAAI,GAAK,GAAW,GAClC,GAAS,KAAK,IAAI,GAAK,GAAW,GAExC,OAAS,IAAI,GAAI,GAAI,GAAQ,KAC3B,OAAS,IAAI,GAAI,GAAI,GAAQ,KAAK,CAChC,GAAI,IAAM,EAEV,OAAS,IAAI,GAAI,GAAI,GAAQ,KAAK,CAChC,GAAM,IAAe,KAAK,IAAI,GAAI,EAAY,GAAK,EAC7C,GAAe,KAAK,IAAI,GAAI,EAAY,GAAK,GAC7C,GACF,EAAU,GAAe,GAAI,EAAa,GAAI,IAC5C,GACF,EAAU,GAAI,EAAa,GAAI,GAAa,IAChD,IAAO,GAAO,GAEhB,GAAQ,GAAK,GAAQ,IAAI,EAAW,MAAO,IAQvD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAG/B,EAAQ,eACX,EAAU,EAAO,MAAO,EAAO,QAG9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,ICvHR,YAAuB,EAI5B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAG,EAAA,EAAG,KAAA,EAAM,uBAAA,GAA0B,EACvC,CAAC,WAAA,EAAY,WAAA,EAAY,WAAA,EAAY,eAAA,GAAkB,EAEzD,EACA,EACA,EAEE,EAA8B,GAIpC,EADI,GAAY,CAAC,OAAQ,CAAC,EAAG,EAAA,GAAI,MAAO,CAAC,WAAA,EAAY,WAAA,GAAa,QAAA,IAG9D,GACF,GAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAS,EAAG,GAAO,QAAA,IAC7C,EAAc,KAAK,GACnB,EAAU,GAER,GACF,GAAgB,GACZ,EAAS,EAAS,EAAY,EAAwB,GAC1D,EAAc,KAAK,GACnB,EAAU,GAGZ,OAAW,KAAK,GACd,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,IC7CD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICJR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,EAAU,EAEhB,GAAiB,EAAQ,QAEzB,GAAM,GACF,EAAQ,IAAI,GAAK,EAAQ,KAAK,IAAI,EAAE,QAAQ,QAC1C,EAAS,GAAO,EAAQ,GAAG,MAAO,EAAQ,GAAG,OAC7C,EAAU,EAAO,OACvB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAAK,CACvC,GAAM,GAAW,EAAK,GACtB,OAAS,GAAI,EAAG,EAAI,EAAQ,OAAQ,IAClC,EAAQ,IAAM,EAAS,GAI3B,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAK,eAAe,EAAM,EAAE,OACzC,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACL,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAE,MAAM,SAG5D,EAAa,2BAA2B,MAAO,EAAM,EAAG,MAAM,QAC9D,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAC/C,EAAa,EAAK,cAAc,GAChC,EAAO,EAAK,oBAAoB,EAAK,cAAc,GAAW,EAAG,OAEjE,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GAC7B,EAAM,GAAO,EAEf,EAAK,GAAK,EAGR,GAAgB,MAClB,EAAQ,8BAA8B,GAGxC,GAAM,GAAS,EAAQ,eAAe,EAAU,EAAG,MAAO,GAE1D,GAAI,EAAU,CACZ,GAAM,GAAgB,EAAa,qBAAqB,EAAU,GAC5D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICzDR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAK,eAAe,EAAM,EAAE,OACzC,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACL,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAE,MAAM,SAG5D,EAAa,2BAA2B,MAAO,EAAM,EAAG,MAAM,QAC9D,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAC/C,EAAa,EAAK,cAAc,GAChC,EAAO,EAAK,oBAAoB,EAAK,cAAc,GAAW,EAAG,OAEjE,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAS,EAAM,GACnB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GAC7B,EAAS,GAAU,EAErB,EAAK,GAAK,EAGR,GAAgB,MAClB,EAAQ,8BAA8B,GAGxC,GAAM,GAAS,EAAQ,eAAe,EAAU,EAAG,MAAO,GAE1D,GAAI,EAAU,CACZ,GAAM,GAAgB,EAAa,qBAAqB,EAAU,GAC5D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IC1DR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,UAEpB,GAAI,GAAO,EAAK,eAAe,EAAM,EAAE,OACjC,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACH,EAA0B,GAC5B,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAwB,KAAK,GAC7B,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAG,MAAM,SAG7D,EAAO,CAAC,EAAK,IACb,EAAa,2BAA2B,SAAU,EAAM,EAAG,MAAM,QACjE,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAE/C,EAAU,EAAK,cAAc,GAC7B,EAAO,EAAK,oBAAoB,EAAS,SACzC,EAAa,EAAK,cAAc,GAEhC,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GACZ,EAAW,EACf,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,EACN,EAAW,GAGf,EAAK,GAAK,EAGZ,MAAA,GAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAAQ,eAAe,EAAU,QAAS,GAG5C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICpDR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,UAEpB,GAAI,GAAO,EAAK,eAAe,EAAM,EAAE,OACjC,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACH,EAA0B,GAC5B,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAwB,KAAK,GAC7B,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAG,MAAM,SAG7D,EAAO,CAAC,EAAK,IACb,EAAa,2BAA2B,SAAU,EAAM,EAAG,MAAM,QACjE,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAE/C,EAAU,EAAK,cAAc,GAC7B,EAAO,EAAK,oBAAoB,EAAS,SACzC,EAAa,EAAK,cAAc,GAEhC,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GACZ,EAAW,EACf,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,EACN,EAAW,GAGf,EAAK,GAAK,EAGZ,MAAA,GAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAAQ,eAAe,EAAU,QAAS,GAG5C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICtDD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAY,GACrB,CAAC,EAAQ,IAAW,KAAK,MAAM,EAAQ,IAE9B,GAAQ,GAAiB,GAAO,IAEhC,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICRD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICPR,YACF,EAAqB,EAAkB,EAAiB,EACxD,EACA,EAAqB,CACvB,GAAM,GAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAE3B,EACD,IAAa,MAAQ,OAAO,kBACP,OAAO,kBAE3B,EAAS,GAAO,EAAS,SAAU,GACnC,EAAa,EAAO,OAEpB,EACF,EAAS,SAAS,GAAK,EAAS,SAAS,GAAK,EAAS,SAAS,GAC9D,EAAmB,EAAS,SAAS,GAAK,EAAS,SAAS,GAC5D,EAAmB,EAAS,SAAS,GAE3C,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EAAG,CAC3C,GAAM,GAAoB,EAAI,EACxB,EAAmB,EAAI,EAAQ,GACrC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAK,EAAG,EAAK,EAAS,UAAW,EAAE,EAAI,CAC9C,GAAM,GAAW,EAAK,EAAe,EAC/B,EAAQ,KAAK,IAAI,EAAG,GACpB,EACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GAClD,EAAkB,EAAoB,EAAK,EACjD,OAAS,GAAK,EAAG,EAAK,EAAS,SAAU,EAAE,EAAI,CAC7C,GAAM,GAAW,EAAK,EAAc,EAC9B,EAAQ,KAAK,IAAI,EAAG,GACpB,EACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAClD,EAAc,EACd,GAAW,EACX,EAAQ,EACZ,OAAS,IAAK,EAAO,GAAK,EAAO,IAAM,EAAgB,CACrD,GAAM,IAAW,EAAmB,GAAK,EAAQ,GACjD,OAAS,GAAK,EAAO,EAAK,EAAO,GAAM,EAAe,CACpD,GAAM,IAAW,GAAW,EAAK,EAAQ,GACnC,GAAQ,EAAQ,GAAW,GAC5B,IAAa,OAAS,GAAQ,EACjC,EAAc,GACL,IAAa,OACtB,KAAY,GACZ,KAGJ,GAAI,MAAM,GACR,MAGJ,GAAM,IAAe,EAAkB,EAAK,EAAmB,EAC/D,EAAW,IACP,IAAa,MAAQ,GAAW,EAAQ,IAKpD,MAAO,GAGH,YACF,EAAqB,EAAkB,EACvC,EAAmC,EAAmB,GACtD,EAAsB,GAAK,CAC7B,GAAM,GAAe,GAAO,EAAS,SAAU,SACzC,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAE3B,EAAO,GAAO,EAAQ,EAAO,GACnC,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EACxC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAK,EAAG,EAAK,EAAS,UAAW,EAAE,EAAI,CAC9C,GAAM,GAAW,EAAK,EAAe,EACjC,EAAQ,EACZ,KAAO,EAAQ,GACb,GAAS,EAGX,GAAM,GACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GACxD,OAAS,GAAK,EAAG,EAAK,EAAS,SAAU,EAAE,EAAI,CAC7C,GAAM,GAAW,EAAK,EAAc,EAChC,EAAQ,EACZ,KAAO,EAAQ,GACb,GAAS,EAEX,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAClD,EAAW,OAAO,kBAClB,EAAc,GAElB,OAAS,GAAK,EAAO,EAAK,EAAO,GAAM,EAAgB,CACrD,GAAM,GAAK,EAAK,EAChB,OAAS,GAAK,EAAO,EAAK,EAAO,GAAM,EAAe,CACpD,GAAM,GAAK,EAAK,EACV,EAAQ,EAAK,IAAI,EAAG,EAAI,EAAI,GAC9B,EAAQ,GACV,GAAW,EACP,EACF,EAAc,EACR,IAAI,EAAS,SAAW,GAAM,EAAS,QAAU,GAC3C,EAAS,WACb,EACH,GAAK,EAAS,QAAU,GAAM,EAAS,WAAa,EAEzD,EAAc,EAAK,EAAuB,IAKlD,EAAa,IAAI,EAAa,EAAG,EAAI,EAAI,IAKjD,MAAO,GAGH,YACF,EAAqB,EAAkB,EAAiB,EACxD,EACA,EAAqB,CACvB,GAAM,GAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAS,QAAQ,MAC5B,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAE3B,EACD,IAAa,MAAQ,OAAO,kBACP,OAAO,kBAE3B,EAAS,GAAO,EAAS,SAAU,GACnC,EAAa,EAAO,OAEpB,EAAqB,EAAS,SAAS,GAAK,EAAS,SAAS,GAChE,EAAS,SAAS,GAAK,EAAS,SAAS,GACvC,EACF,EAAS,SAAS,GAAK,EAAS,SAAS,GAAK,EAAS,SAAS,GAC9D,EAAmB,EAAS,SAAS,GAAK,EAAS,SAAS,GAC5D,EAAmB,EAAS,SAAS,GAE3C,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAAO,CACvD,GAAM,GAAoB,EAAQ,EAC5B,EAAmB,EAAQ,EAAQ,GACzC,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAS,EAAG,EAAS,EAAS,SAAU,EAAE,EAAQ,CACzD,GAAM,GAAe,EAAS,EAAc,EACxC,EAAY,EAChB,KAAO,EAAY,GACjB,GAAa,EAEf,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAChD,EACF,EAAoB,EAAS,EACjC,OAAS,IAAO,EAAG,GAAO,EAAS,UAAW,EAAE,GAAM,CACpD,GAAM,GAAa,GAAO,EAAe,EACrC,GAAU,EACd,KAAO,GAAU,GACf,IAAW,EAEb,GAAM,IACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GAClD,GAAkB,EAAoB,GAAO,EACnD,OAAS,GAAO,EAAG,EAAO,EAAS,SAAU,EAAE,EAAM,CACnD,GAAM,IAAa,EAAO,EAAc,EACpC,GAAU,GACd,KAAO,GAAU,GACf,IAAW,EAEb,GAAM,IACF,KAAK,IAAI,EAAS,QAAS,EAAuB,IAEhD,GAAkB,GAAkB,EAAO,EAC7C,GAAc,EACd,GAAW,EACX,GAAQ,EACZ,OAAS,IAAS,EAAW,GAAS,EACjC,IAAU,EAAe,CAC5B,GAAM,IAAe,EAAmB,GAAS,EAAQ,GACzD,OAAS,IAAO,GAAS,GAAO,GAAS,IAAQ,EAAgB,CAC/D,GAAM,IAAa,GAAe,GAAO,EAAQ,GACjD,OAAS,IAAO,GAAS,GAAO,GAC3B,IAAQ,EAAe,CAC1B,GAAM,IAAa,GAAa,GAAO,EAAQ,GACzC,GAAQ,EAAQ,GAAa,GAOnC,GANK,IAAa,OAAS,GAAQ,GACjC,GAAc,GACL,IAAa,OACtB,KAAY,GACZ,MAEE,MAAM,IACR,MAGJ,GAAI,MAAM,IACR,MAGJ,GAAI,MAAM,IACR,MAGJ,GAAM,IAAe,GAAkB,EACvC,EAAW,IACP,IAAa,MAAQ,GAAW,GAAQ,MAOtD,MAAO,GAGH,YACF,EACA,EAAiC,CACnC,GAAM,GAAe,GAAO,EAAS,SAAU,SACzC,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAS,QAAQ,MAC5B,EAAS,EAAS,QAAQ,IAC1B,EAAU,EAAS,QAAQ,KAEjC,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAChD,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAS,EAAG,EAAS,EAAS,SAAU,EAAE,EAAQ,CACzD,GAAM,GAAe,EAAS,EAAc,EACxC,EAAY,EAChB,KAAO,EAAY,GACjB,GAAa,EAEf,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GACtD,OAAS,GAAO,EAAG,EAAO,EAAS,UAAW,EAAE,EAAM,CACpD,GAAM,GAAa,EAAO,EAAe,EACrC,EAAU,EACd,KAAO,EAAU,GACf,GAAW,EAEb,GAAM,GACF,KAAK,IAAI,EAAS,SAAU,EAAwB,GACxD,OAAS,GAAO,EAAG,EAAO,EAAS,SAAU,EAAE,EAAM,CACnD,GAAM,GAAa,EAAO,EAAc,EACpC,EAAU,EACd,KAAO,EAAU,GACf,GAAW,EAEb,GAAM,GACF,KAAK,IAAI,EAAS,QAAS,EAAuB,GAGlD,EAAW,OAAO,kBAClB,EAAc,GAElB,OAAS,GAAS,EAAW,EAAS,EACjC,GAAU,EAAe,CAC5B,GAAM,GAAS,EAAS,EACxB,OAAS,GAAO,EAAS,EAAO,EAAS,GAAQ,EAAgB,CAC/D,GAAM,IAAO,EAAO,EACpB,OAAS,GAAO,EAAS,EAAO,EAC3B,GAAQ,EAAe,CAC1B,GAAM,IAAO,EAAO,EACd,GAAQ,EAAK,IAAI,EAAO,EAAQ,EAAM,EAAM,GAC9C,IAAS,GACX,GAAW,GACX,EACI,EAAS,EAAwB,EACjC,GAAO,EAAwB,MAM3C,EAAa,IAAI,EAAa,EAAO,EAAQ,EAAM,EAAM,KAOnE,MAAO,GCrTH,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACZ,GAAiB,EAAG,WACpB,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAC9C,EAAY,EAElB,EAAK,OACD,EAAa,+BAA+B,EAAS,GACrD,IAAM,wEACa,oBAA0B,MAEjD,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAW,EAAK,GAChB,EAEJ,GAAI,EAAS,cAAgB,GAAK,EAAS,eAAiB,GACxD,EAAK,YAAY,EAAS,QAAS,EAAS,UAC9C,EAAM,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,QACxB,CACL,GAAM,GAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAK,eAAe,EAAE,OAChC,EAAS,GAAK,EAAS,EAAE,MAAO,EAAE,MAAO,EAAS,EAAU,OAClE,EAAM,EAAQ,eACV,EAAS,SAAU,EAAE,MAAO,EAAO,QAEzC,MAAO,GAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICpCR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAAc,EAEhE,GAAiB,EAAG,aAEpB,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAAmD,EAAY,EACjE,EAAmB,EAAK,EAAiB,GAEvC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAS,GACX,EAAS,EAAE,MAAO,EAAE,MAAO,EAAK,eAAe,EAAE,OAAQ,EAAU,OAEvE,MAAO,GAAQ,eAAe,EAAO,MAAO,UAAW,EAAO,QAGzD,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC1BR,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,GAAS,EACd,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAEpD,GAAiB,CAAC,EAAI,GAAQ,iBAE9B,GAAM,GAAW,EAAa,kBAC1B,EAAM,MAAmD,EACzD,EAAS,EAAmB,EAAK,GAE/B,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAuB,EAAI,EAAS,QAAQ,MACvD,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EAAK,GAAO,EAAM,MAAO,WAEzB,EAAgB,EAAK,GAAc,EAAe,GAElD,EAAQ,EAAQ,WAAW,GAEjC,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAChD,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAU,EAAG,EAAU,EAAS,QAAS,EAAE,EAClD,OAAS,GAAQ,EAAG,EAAQ,EAAS,SAAU,EAAE,EAC/C,OAAS,GAAQ,EAAG,EAAQ,EAAS,QAAS,EAAE,EAAO,CAErD,GAAM,IAAgB,EAAU,EAC1B,EAAc,EAAQ,EACtB,GAAc,EAAQ,EACxB,GAAU,EACd,OAAS,IAAS,EAAG,GAAS,EACzB,IAAU,EAAe,CAC5B,GAAM,GAAW,IAAgB,IAAU,EAC3C,GAAI,CAAA,GAAU,GAAK,GAAW,EAAS,UACnC,KAAK,MAAM,KAAa,GAG5B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAgB,CAC3B,GAAM,IAAS,GAAc,IAAQ,EACrC,GAAI,CAAA,IAAQ,GAAK,IAAS,EAAS,WAC/B,KAAK,MAAM,MAAW,IAG1B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAe,CAC1B,GAAM,IAAS,IAAc,IAAQ,EACrC,AAAI,GAAQ,GAAK,IAAS,EAAS,UAC/B,KAAK,MAAM,MAAW,IAM1B,KADI,EAAM,IAAI,EAAO,EAAS,GAAO,GAAO,MAKlD,EAAG,IACC,GAAU,EAAe,EAAO,EAAS,EAAO,EAAO,GAOrE,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,ICzFR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,GAAS,EACd,EAAI,EACV,GAAiB,CAAC,EAAI,GAAQ,eAC9B,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,GAAO,EAE7B,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAmB,GACjB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EACF,GAAgB,EAAE,MAA2C,WAE3D,EAAgB,EAAK,GAAe,GAEpC,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACrC,EAAQ,GACV,EAAG,MAA2C,UAAW,GAE7D,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EACxC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAM,EAAG,EAAM,EAAS,SAAU,EAAE,EAC3C,OAAS,GAAM,EAAG,EAAM,EAAS,QAAS,EAAE,EAAK,CAE/C,GAAM,GAAY,EAAM,EAClB,EAAY,EAAM,EACpB,EAAU,EACd,OAAS,GAAK,EAAG,EAAK,EAAuB,GAAM,EAAgB,CACjE,GAAM,GAAO,GAAY,GAAM,EAC/B,GAAI,CAAA,GAAM,GAAK,GAAO,EAAS,WAC3B,KAAK,MAAM,KAAS,GAGxB,OAAS,IAAK,EAAG,GAAK,EAAsB,IAAM,EAAe,CAC/D,GAAM,GAAO,GAAY,IAAM,EAC/B,AAAI,EAAM,GAAK,GAAO,EAAS,UAC3B,KAAK,MAAM,KAAS,GAKxB,IADc,EAAM,IAAI,EAAG,EAAK,EAAK,KAIzC,EAAG,IAAI,EAAU,EAAe,EAAG,EAAK,EAAK,GAKrD,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,ICpER,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,MAAA,EAAO,OAAA,EAAQ,KAAA,EAAM,SAAA,GAAY,EAE3C,EAAK,OACD,EAAK,MAAM,SAAW,EAAS,MAAM,OACrC,IAAM,gFAEV,EAAK,OACD,GAAU,MAAQ,EAAK,MAAM,SAAW,EAAO,MAAM,OACrD,IAAM,8EAEV,EAAK,OACD,GAAS,MAAQ,EAAK,MAAM,SAAW,EAAM,MAAM,OACnD,IAAM,6EAGV,GAAiB,CAAC,EAAG,EAAM,EAAU,EAAO,GAAS,aAErD,GAAI,CAAC,gBAAA,GAAmB,EACpB,GAAmB,MACrB,GAAkB,MAGpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAK,QAAQ,OACtC,EAAU,EAAQ,KAAK,IAAI,EAAS,QAAQ,OAC5C,EAAQ,EAAQ,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC/B,GAAI,cAAa,CAAC,IAClC,EAAU,EACZ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAChC,GAAI,cAAa,CAAC,IAChB,EAAU,GAAI,cAAa,EAAM,QAEjC,EAAgB,EAAQ,OACxB,EAAc,EAAM,OACpB,EAAgB,EAAQ,OACxB,EAAc,EAAM,OAEtB,EAAO,EACP,EAAK,EACL,EAAK,EACL,EAAK,EACT,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,EAAE,EAClC,EAAQ,GAAK,EAAQ,KAChB,GAAM,GAAK,EAAM,MAAS,EAAM,KAC7B,KAAK,KAAK,EAAQ,KAAQ,GAC9B,GAAQ,GACV,GAAO,GAEL,GAAM,GACR,GAAK,GAEH,GAAM,GACR,GAAK,GAEH,GAAM,GACR,GAAK,GAGT,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,GAG3C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICnER,YAAyB,EAI9B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,MAAA,GAAS,EAE5B,GAAiB,CAAC,GAAI,kBAEtB,GAAM,GAAO,EAAW,OAAO,CAAC,EAAG,IAAM,EAAI,GAEvC,EAAW,EAAa,YAAY,EAAE,MAAO,EAAY,GACzD,EAAW,EAAa,YAAY,EAAS,OAAQ,EAAW,QAChE,EACF,EAAa,oBAAoB,EAAE,MAAO,EAAY,GACpD,EACF,EAAa,oBAAoB,EAAO,EAAW,QACjD,EACF,EAAa,aAAa,EAAkB,EAAO,EAAW,QAE5D,EAAY,GAAQ,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAC1D,EACF,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAY,QAAA,EAAS,MAAO,CAAC,KAAM,KACxD,EAAsB,GACxB,CAAC,OAAQ,CAAC,EAAG,GAAc,QAAA,EAAS,MAAO,CAAC,MAAO,KACjD,EAAS,GAAM,CACnB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,EAAkB,KAAM,KAGzC,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAAqC,CAChD,WAAY,GACZ,YAAa,MACb,WAAY,IC9CR,YAAmB,EAIxB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,QAAA,GAAW,EACf,CAAC,KAAA,GAAQ,EAET,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAc,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAE/C,EACF,GAAa,EAAO,EAAa,EAAQ,MAAO,EAAQ,MAAO,GAEnE,MAAO,GAAQ,eAAe,CAAC,GAAO,EAAQ,MAAO,GAGhD,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICtBD,GAAO,GAAgB,GAAa,CAAC,EAAI,IAAS,CAC7D,GAAM,GAAY,EAClB,MAAI,GAAK,EAAU,aACV,EAAU,aAEZ,EAAK,EAAU,aAAe,EAAU,aAAe,IAGnD,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICXD,GACR,GAA6D,CAC5D,GAAM,CAAC,EAAA,GAAK,EAAK,OACX,EAAa,EAAK,QAClB,EAAe,GAAI,cAAa,EAAK,cAAc,EAAE,QACrD,EAAc,EAAW,KAAK,IAAI,EAAE,QACpC,EAAO,EAAY,mBAAmB,KACtC,EAAO,EAAY,mBAAmB,KACtC,EAAW,EAAW,KAAK,IAAI,EAAK,QAAQ,OAC5C,EAAW,EAAW,KAAK,IAAI,EAAK,QAAQ,OAClD,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IAAK,CACxC,GAAM,GAAO,EAAS,GAChB,EAAO,EAAS,GACtB,EAAa,GAAK,KAAK,MAAM,EAAM,GAGrC,MAAO,GAAW,WAAW,EAAc,EAAE,MAAO,YAG7C,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAO,EAAQ,KAAK,IAAI,EAAM,QAAQ,mBAAmB,KACzD,EAAU,EAAQ,KAAK,IAAI,EAAK,QAAQ,OAK9C,MAAO,GAAQ,eAAe,EAAK,MAAO,EAAK,MAAO,GAGjD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICVR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,KAAA,GAAQ,EAET,EAAQ,EAAK,eAAe,EAAM,EAAO,GAAG,OAAO,GACrD,EAAW,EAAa,gBAAgB,EAAO,IAAI,GAAK,EAAE,OAAQ,GAEtE,GAAI,EAAK,cAAc,KAAc,EACnC,MAAO,GAAQ,eAAe,EAAU,EAAO,GAAG,MAAO,IAI3D,GAAM,GAAU,EAAO,OAAO,GAAK,EAAK,cAAc,EAAE,OAAS,GACjE,GAAI,EAAQ,SAAW,EACrB,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAG,EAAQ,IAAK,QAAA,IAG5C,GAAM,GAAS,EAAQ,IAAI,GAAK,EAAE,OAGlC,GAFA,EAAa,uBAAuB,EAAQ,GAExC,EAAQ,GAAG,QAAU,YAAa,CACpC,GAAM,GAAQ,EAAQ,IAAK,GAAM,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,KACrD,EAAQ,EAAQ,IAAK,GAAM,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,KAErD,EAAe,GAAO,CAAC,OAAQ,EAAO,QAAA,EAAS,MAAO,CAAC,KAAM,KAC7D,EAAe,GAAO,CAAC,OAAQ,EAAO,QAAA,EAAS,MAAO,CAAC,KAAM,KAE7D,EACF,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAc,KAAM,GAAe,QAAA,IAE/D,MAAA,GAAM,QAAQ,GAAK,EAAQ,8BAA8B,IACzD,EAAM,QAAQ,GAAK,EAAQ,8BAA8B,IACzD,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAUT,GAAM,GAAW,EAAQ,IAAI,GAAI,CAC/B,GAAM,GAAY,EAAK,cAAc,EAAE,MAAM,MAAM,IAEnD,MAAO,IAAQ,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,MADnC,CAAC,GAAI,QAIf,EAAkB,EAAS,IAAI,GAC5B,EAAC,KAAM,EAAQ,KAAK,IAAI,EAAE,QAAQ,OAAQ,MAAO,EAAE,SAI5D,EACI,EAAa,gBAAgB,EAAS,IAAI,GAAK,EAAE,OAAQ,GAC7D,GAAM,GAAe,EAAS,GAAG,MAAM,KAAO,EACxC,EACF,GAAW,EAAiB,EAAU,EAAO,GAAG,MAAO,GAErD,EACF,EAAa,gBAAgB,EAAQ,IAAI,GAAK,EAAE,OAAQ,GAEtD,EACF,EAAQ,eAAe,EAAe,EAAO,GAAG,MAAO,GAE3D,MAAA,GAAS,QAAQ,GAAK,EAAQ,8BAA8B,IAErD,EAGF,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICpFR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,GAAmB,EAE/D,GAAiB,CAAC,EAAG,GAAS,UAE9B,GAAM,GAAc,EAAa,wBAAwB,GACnD,EAAW,EAAa,kBAC1B,EAAE,MACF,EAAO,MAA2C,EAAS,EAAW,EACtE,EAAiB,GAAuB,GAEtC,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAU,EAAS,QAAQ,KAC3B,EAAS,EAAS,QAAQ,IAC1B,EAAiB,EAAS,aAAe,eAEzC,EAAI,GAAI,IAAa,EAAS,SAAU,EAAE,OAE1C,EAAW,EAAK,eAAe,EAAE,OACjC,EAAgB,EAAK,eAAe,EAAO,OAE3C,EAAe,EAAS,GACxB,EAAa,EAAiB,EAAS,GAAK,EAAS,GACrD,EAAa,EAAiB,EAAS,GAAK,EAC5C,EAAiB,EAAiB,EAAI,EAAS,GAC/C,EAAe,EAAE,QAAQ,GACzB,EAAa,EAAiB,EAAE,QAAQ,GAAK,EAAE,QAAQ,GACvD,EAAa,EAAiB,EAAE,QAAQ,GAAK,EAC7C,EAAiB,EAAiB,EAAI,EAAE,QAAQ,GAEhD,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OACxC,EAAQ,EAAE,OAEhB,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GAAG,CAC3C,GAAM,GAAW,GAAI,EACf,GAAW,GAAI,EACrB,OAAS,IAAK,EAAG,GAAK,EAAS,UAAW,EAAE,GAAI,CAC9C,GAAM,IAAW,GAAW,GAAK,EAC3B,EAAW,GAAK,EAAS,aAAe,EAC9C,OAAS,IAAK,EAAG,GAAK,EAAc,EAAE,GAAI,CACxC,GAAM,IAAK,EAAW,GAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,SAC3B,SAEF,GAAM,IAAW,GAAK,EAAc,GAC9B,GAAW,EAAW,GAAK,EACjC,OAAS,IAAK,EAAG,GAAK,EAAS,SAAU,EAAE,GAAI,CAC7C,GAAM,IAAW,GAAW,GAAK,EAC3B,GAAW,GAAK,EAAS,YAAc,EAC7C,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAK,GAAW,GAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,GAAW,GAAK,EAAc,GACzC,GAAW,GAAW,GAAK,EAC7B,GAAW,GACf,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAO,EAAM,GAAW,GAAK,GACnC,OAAS,IAAK,EAAG,GAAK,EAAS,YAAa,EAAE,GAC5C,EAAM,GAAW,GAAK,IAClB,GAAO,EAAM,GAAW,IAE9B,IAAY,EAAS,iBAQjC,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,GAG3C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICrFR,YAA+B,EAIpC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,GAAA,GAAM,EACV,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,EAAiB,YAAA,GAAe,EAEjE,GAAiB,CAAC,EAAG,GAAK,wBAE1B,GAAM,GAAc,EAAa,wBAAwB,GACnD,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAa,EAC1D,EAAmB,EAAK,EAAiB,GACzC,GAEE,CAAC,aAAA,EAAc,YAAA,EAAa,aAAA,EAAc,YAAA,GAAe,EACzD,EAAiB,EAAS,aAAe,eACzC,EAAK,GAAI,IAAa,EAAS,YAAa,WAE5C,EAAU,EAAS,QAAQ,KAC3B,EAAS,EAAS,QAAQ,IAC1B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAErC,EAAO,GAAI,IAAa,EAAE,MAAO,EAAE,MAAO,GAC1C,EAAQ,GAAI,IAAa,EAAG,MAAO,EAAG,MAAO,GAEnD,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAS,GAAM,IAC9C,EAAQ,KAAK,IACf,EAAS,UAAY,GAAS,SAAW,EAAS,GAAM,GAE5D,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAU,GAAM,IAC/C,EAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,EAAU,GAAM,GAE3D,OAAS,GAAK,EAAG,EAAK,EAAS,WAAY,EAAE,EAC3C,OAAS,GAAK,EAAG,EAAK,EAAS,YAAa,EAAE,EAAI,CAChD,GAAI,GAAU,EACd,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GACxC,OAAS,GAAK,EAAO,EAAK,EAAO,EAAE,EAAI,CACrC,GAAM,IAAK,EAAK,EAAK,EAAe,EACpC,OAAS,IAAK,EAAO,GAAK,EAAO,EAAE,GAAI,CACrC,GAAM,IAAK,EAAK,GAAK,EAAc,EAC/B,EACF,GAAY,EAAK,IAAI,GAAG,GAAI,GAAI,GAC3B,EAAM,IAAI,GAAG,EAAI,GAAI,GAE1B,GAAY,EAAK,IAAI,GAAG,EAAI,GAAI,IAC3B,EAAM,IAAI,GAAG,EAAI,EAAI,KAKlC,EAAG,IAAI,EAAS,EAAI,EAAI,EAAI,KAMpC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA2C,CACtD,WAAY,GACZ,YAAa,MACb,WAAY,ICrER,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,OAAA,GAAU,EACf,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,gBAAA,GAAmB,EAEhE,GAAiB,CAAC,EAAI,GAAS,uBAE/B,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,EAAY,EAAK,eAAe,EAAG,OAErC,EAAc,EAAa,wBAAwB,GACjD,EAAW,EAAa,kBAC1B,EAAY,EAAO,MAA2C,EAC9D,EAAmB,EAAK,EAAiB,GAAO,GAE9C,EAAK,GAAI,IAAa,EAAS,QAAS,WACxC,EAAW,EAAG,OACd,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,EAAY,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC5C,CAAC,EAAO,EAAO,GAAS,EACxB,CACJ,UAAA,EACA,aAAA,EACA,YAAA,EACA,WAAA,EACA,SAAA,EACA,QAAA,EACA,YAAA,EACA,UAAA,EACA,SAAA,EACA,aAAA,EACA,YAAA,GACE,EACJ,EAAc,EAAS,WACvB,GAAM,GAAS,EAAe,EAAI,EAAS,QAAQ,IAC7C,GAAU,EAAc,EAAI,EAAS,QAAQ,KAE7C,EAAiB,IAAgB,eACjC,GAAe,EAAG,QAAQ,GAC1B,GAAa,EAAiB,EAAG,QAAQ,GAAK,EAAG,QAAQ,GACzD,GAAa,EAAiB,EAAG,QAAQ,GAAK,EAC9C,EAAiB,EAAiB,EAAI,EAAG,QAAQ,GACjD,GAAe,EAAU,GACzB,GAAa,EAAiB,EAAU,GAAK,EAAU,GACvD,GAAa,EAAiB,EAAU,GAAK,EAC7C,GAAiB,EAAiB,EAAI,EAAU,GAEtD,OAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAC/B,OAAS,IAAK,EAAG,GAAK,EAAY,EAAE,GAClC,OAAS,IAAK,EAAG,GAAK,EAAU,EAAE,GAAI,CACpC,GAAM,IAAW,GAAK,EAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,IACzC,GACF,KAAK,IAAI,EAAY,GAAe,IAAY,GAEpD,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,IACzC,GACF,KAAK,IAAI,EAAW,GAAc,IAAY,GAE9C,GAAU,EACd,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,EAAe,GAE/B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,EAAc,GACxB,GACF,GAAe,GAAI,GAAa,GAAK,GAAa,GAChD,GAAY,EAAS,GAAe,EAAI,IAC1C,EAAS,GAAc,EAAI,IAAM,EAAQ,GAE7C,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,EAAS,GAAW,GAAiB,IAC7C,GAAS,EAAU,GAAY,IACrC,IAAW,GAAQ,KAIzB,GAAM,IAAW,GAAe,GAAI,GAAa,GAC7C,GAAa,GAAK,EAAiB,GACvC,EAAS,IAAY,IAM7B,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,ICjGR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAElC,GAAiB,CAAC,EAAG,GAAS,UAE9B,GAAM,GAAW,EAAa,kBAC1B,EAAE,MACF,EAAO,MAAmD,EAC1D,EAAW,GAET,CACJ,YAAA,EACA,aAAA,EACA,YAAA,EACA,cAAA,EACA,eAAA,EACA,cAAA,EACA,QAAA,GACE,EACE,EAAW,EAAQ,MACnB,EAAU,EAAQ,KAClB,EAAS,EAAQ,IACjB,EAAI,GAAI,IAAa,EAAS,SAAU,EAAE,OAE1C,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OACxC,EAAQ,EAAE,OAEV,EAAW,EAAK,eAAe,EAAE,OACjC,EAAgB,EAAK,eAAe,EAAO,OAEjD,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EAAG,CAC3C,GAAM,GAAW,EAAI,EAAS,GACxB,EAAW,EAAI,EAAE,QAAQ,GAC/B,OAAS,GAAK,EAAG,EAAK,EAAS,SAAU,EAAE,EAAI,CAC7C,GAAM,GAAW,EAAW,EAAK,EAAE,QAAQ,GACrC,EAAW,EAAK,EAAS,YAAc,EAC7C,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,GAAK,EAAW,EAAK,EAC3B,GAAI,EAAK,GAAK,GAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,EAAK,EAAc,GAC9B,EAAW,EAAW,EAAK,EAAS,GAE1C,OAAS,IAAK,EAAG,GAAK,EAAS,UAAW,EAAE,GAAI,CAC9C,GAAM,IAAW,EAAW,GAAK,EAAE,QAAQ,GACrC,GAAW,GAAK,EAAS,aAAe,EAC9C,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,IAAK,GAAW,EAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,SAC3B,SAEF,GAAM,IAAW,GAAW,EAAK,EAAc,GACzC,GAAW,EAAW,GAAK,EAAS,GAC1C,OAAS,IAAK,EAAG,GAAK,EAAS,SAAU,EAAE,GAAI,CAC7C,GAAM,IAAW,GAAW,GAAK,EAAS,YACpC,GAAW,GAAK,EAAS,YAAc,EAC7C,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAK,GAAW,GAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,GAAW,GAAK,EAAc,GACzC,GAAW,GAAW,GAAK,EAAS,WACtC,GAAW,GACf,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAO,EAAM,GAAW,IAC9B,OAAS,IAAK,EAAG,GAAK,EAAS,YAAa,EAAE,GAC5C,EAAM,GAAW,KAAO,GAAO,EAAM,GAAW,IAElD,IAAY,EAAS,mBAUrC,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,EAAE,QAG7C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IC3FR,YAAiC,EAItC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,GAAA,GAAM,EACV,CAAC,QAAA,EAAS,IAAA,EAAK,YAAA,GAAe,EAEpC,GAAiB,CAAC,EAAG,GAAK,0BAE1B,GAAM,GAAW,EAAK,eAAe,EAAE,OACjC,EAAY,EAAK,eAAe,EAAG,OAEnC,EAAW,EAAa,kBAC1B,EAAE,MAAmD,EAAa,EAClE,EAAmB,GAEjB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YAEvB,EAAK,GAAI,IAAa,EAAS,YAAa,WAC5C,EAAW,EAAG,OACd,CAAC,EAAM,EAAM,EAAM,GAAQ,EAAG,QAC9B,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,CAAC,EAAM,EAAM,EAAM,GAAQ,EAC3B,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,CAAC,EAAK,EAAK,EAAK,GAAO,EAEvB,GAAW,EAAS,QAAQ,MAC5B,EAAU,EAAS,QAAQ,KAC3B,GAAS,EAAS,QAAQ,IAEhC,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,IAAW,IAAM,IAChD,EAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,GAAW,IAAM,GACtD,GAAW,GAAK,EAEtB,OAAS,IAAK,EAAG,GAAK,EAAc,EAAE,GAAI,CACxC,GAAM,IAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,IAAS,IAAM,IAC9C,GAAQ,KAAK,IACf,EAAS,UAAY,GAAS,SAAW,GAAS,IAAM,GACtD,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,EAAG,GAAK,EAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAU,IAAM,IAC/C,GAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,EAAU,IAAM,GACrD,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,EAAG,GAAK,EAAS,YAAa,EAAE,GAAI,CAChD,GAAI,IAAU,EACd,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GAAG,CAC3C,GAAM,IAAW,GAAI,EACf,GAAW,GAAI,EAErB,OAAS,IAAK,GAAO,GAAK,EAAO,EAAE,GAAI,CAErC,GAAM,IADK,IAAK,GAAK,EAAc,IACb,EAAM,GACtB,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CAErC,GAAM,IADK,IAAK,GAAK,EAAe,IACd,EAAM,GACtB,GAAW,GAAK,EAAO,GAE7B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CAErC,GAAM,IADK,IAAK,GAAK,EAAc,GACb,EAAM,GACtB,GAAW,GAAK,EAAO,GAE7B,IAAW,EAAQ,GAAW,IAAM,EAAS,GAAW,OAKhE,EAAS,GAAW,IAAM,OAOpC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA6C,CACxD,WAAY,GACZ,YAAa,MACb,WAAY,ICjGR,YAAgC,EAIrC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,OAAA,GAAU,EACf,CAAC,IAAA,EAAK,QAAA,EAAS,WAAA,GAAc,EAEnC,GAAiB,CAAC,GAAK,yBAEvB,GAAM,GAAY,EAAK,eAAe,EAAG,OACnC,EAAgB,EAAK,eAAe,EAAO,OAE3C,EAAW,EAAa,kBAC1B,EAAY,EAAO,MACnB,EAAS,EAAmB,GAE1B,EAAK,GAAI,IAAa,EAAS,QAAS,WACxC,EAAW,EAAG,OACd,CAAC,EAAM,EAAM,EAAM,GAAQ,EAAG,QAC9B,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,CAAC,EAAM,EAAM,EAAM,GAAQ,EAC3B,EAAY,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC5C,CAAC,EAAO,EAAO,EAAO,GAAS,EAC/B,CACJ,UAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,WAAA,EACA,QAAA,EACA,SAAA,GACA,QAAA,EACA,YAAA,GACA,SAAA,GACA,UAAA,GACA,SAAA,EACA,YAAA,GACA,aAAA,GACA,YAAA,IACE,EACE,GAAW,EAAc,EAAI,EAAS,QAAQ,MAC9C,GAAS,EAAe,EAAI,EAAS,QAAQ,IAC7C,GAAU,EAAc,EAAI,EAAS,QAAQ,KAEnD,OAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAC/B,OAAS,IAAK,EAAG,GAAK,EAAY,EAAE,GAElC,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,GAAW,GAAc,IAAY,IAGlD,OAAS,IAAK,EAAG,GAAK,GAAU,EAAE,GAAI,CACpC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,GAAY,GAAe,IAAY,IAEpD,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,EAAW,GAAc,IAAY,IAE9C,GAAU,EACd,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAc,GAE9B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAe,GAE/B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAc,GACxB,GAAW,EAAO,GAAI,EAAO,GAAK,EAAO,GAAK,EAAO,GACrD,GAAY,EAAS,GAAc,EAAI,IACzC,EAAS,GAAe,EAAI,IAC5B,EAAS,GAAc,EAAI,IAAM,EAAQ,GAE7C,OAAS,IAAK,EAAG,GAAK,GAAa,EAAE,GAAI,CACvC,GAAM,IAAQ,EAAS,GAAW,IAC5B,GAAS,EAAU,GAAY,IACrC,IAAW,GAAQ,MAK3B,EAAS,EAAO,GAAI,EAAO,GAAK,EAAO,GAAK,EAAO,GAAK,IACpD,KAOd,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA4C,CACvD,WAAY,GACZ,YAAa,MACb,WAAY,ICzGD,GAAM,GAAgB,GAAM,GAAO,KAAK,IAAI,IAE5C,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICLR,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,MAAA,EAAO,OAAA,GAAU,EACzB,CAAC,SAAA,EAAU,OAAA,EAAQ,mBAAA,GAAsB,EAEzC,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MACtD,EAAW,EAAM,MAAM,GAEvB,CAAC,EAAY,GAAa,EAC1B,EACF,GAAO,CAAC,EAAU,EAAY,EAAW,GAAc,WAErD,EAAU,EAAQ,KAAK,IAAI,EAAM,QAAQ,OACzC,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC7C,EAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAE3C,EACF,EAAK,eAAe,EAAM,OACxB,EAAY,EAAK,eACnB,EAAO,OAKX,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAW,EAAI,EACf,EAAK,EAAQ,GACb,EAAK,EAAQ,EAAW,GACxB,EAAK,EAAQ,EAAW,GACxB,EAAK,EAAQ,EAAW,GAExB,EAAe,EAAW,GAChC,GAAI,GAAQ,EACV,SAGF,GAAM,GACD,EAAa,EAAM,GAAK,GAAO,GAAc,GAAM,GAAa,GAAK,EACpE,EACD,EAAY,EAAM,GAAK,GAAO,GAAa,GAAM,GAAY,GAAK,EAEvE,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAM,GAAgB,EAAa,EAC/B,EAAM,GAAc,GAAK,EAAK,EAC9B,GAAO,GAAK,GAAO,GAAc,GAErC,GAAI,EAAO,GAAK,EAAO,EAAc,EAAG,CACtC,OAAS,IAAI,EAAG,GAAI,EAAW,KAC7B,OAAS,GAAI,EAAG,EAAI,EAAa,IAAK,CACpC,GAAM,IACF,EAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,IAAO,EAGzB,SAGF,GAAI,IAAW,WAAY,CACzB,GAAM,IAAS,KAAK,MAAM,GACpB,EAAY,KAAK,KAAK,GACtB,GAAQ,EAAO,GAErB,OAAS,IAAI,EAAG,GAAI,EAAW,KAAK,CAClC,GAAM,IAAQ,EAAY,EACtB,EAAM,GAAa,GAAK,GAAI,EAC5B,GAAO,GAAK,GAAO,GAAa,GAEpC,GAAI,GAAO,GAAK,GAAO,EAAa,EAAG,CACrC,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAM,IACF,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,IAAO,EAEvB,SAGF,GAAM,GAAU,KAAK,MAAM,IACrB,GAAW,KAAK,KAAK,IACrB,GAAQ,GAAO,EAErB,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAI,IAAM,GAAI,EAAU,EAAS,GAAK,GAAS,EAAS,GACpD,EAAO,EAAS,GACd,GAAU,EAAU,IAE1B,GAAM,GAAI,GAAW,EAAS,GAAK,GAAS,EAAS,GACjD,EAAO,EAAS,GACpB,GAAM,IAAW,EAAU,IAE3B,GAAM,GAAI,EAAU,EAAS,GAAK,EAAY,EAAS,GACnD,EAAO,EAAS,GACpB,GAAM,IAAa,EAAU,IAE7B,GAAM,GAAI,GAAW,EAAS,GAAK,EAAY,EAAS,GACpD,EAAO,EAAS,GACpB,GAAM,IAAc,EAAU,IAExB,GAAM,GAAW,IAAW,IAAW,GACvC,GAAS,GAAc,IAAc,IAAc,GAEzD,GAAM,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC9D,EAAO,OAAO,IAAO,GAAQ,IAAS,IAAO,SAIjD,QAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAAG,CAClC,GAAM,GAAQ,EAAY,EACtB,EAAM,GAAa,GAAK,GAAI,EAC5B,GAAO,GAAK,GAAO,GAAa,GAEpC,GAAI,EAAO,GAAK,EAAO,EAAa,EAAG,CACrC,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAM,GACF,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,GAAO,EAEvB,SAGF,GAAM,IAAW,KAAK,MAAM,GACtB,GAAW,KAAK,MAAM,GAC5B,OAAS,IAAI,EAAG,GAAI,EAAa,KAAK,CACpC,GAAM,GAAQ,GAAI,GAAW,EAAS,GAAK,GAAW,EAAS,GAC3D,EAAO,EAAS,GACd,GACF,GAAI,GAAI,EAAU,GAAK,EAAI,EAAU,GAAK,EAAI,EAAU,GAC5D,EAAO,OAAO,IAAU,EAAU,MAO5C,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,IC7IR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,UAAA,EAAW,QAAA,GAAW,EAEnC,GAAiB,EAAG,UAEpB,GAAM,GAAc,EAAa,mBAAmB,CAAC,GAAO,EAAE,MAAM,QAChE,EAAK,EACL,GAAe,MACjB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,MAEtD,GAAM,GAAe,EAAa,iBAAiB,EAAG,EAAE,MAAM,QAAQ,GAEtE,GAAI,IAAiB,EAAG,MAAM,OAAS,EACrC,KAAM,IAAI,OACN,oDACQ,EAAG,MAAM,OAAS,kBAAkB,KAGlD,GAAM,GAAc,GAAW,EAAG,MAAO,SACnC,EAAO,EAAK,oBACD,EAAK,cAAc,EAAG,OAAQ,GAEzC,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACpC,EAAW,EAAG,MAAM,EAAG,MAAM,OAAS,GACtC,EAAgB,EAClB,CAAC,EAAW,IAAc,EAAI,EAAW,EAAI,EAC7C,CAAC,EAAW,IAAc,EAAI,EAClC,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,GAAK,EACrC,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAM,EAAc,EAAG,GAC7B,GAAI,IAAM,EACR,EAAK,GAAO,EAAY,EAAI,EAAM,OAC7B,CACL,GAAM,GAAU,EAAc,EAAG,EAAI,GACrC,EAAK,GAAO,EAAY,EAAM,GAAW,EAAK,GACtB,EAAM,GAAO,EAAK,IAKhD,GAAM,GAAS,EAAQ,eAAe,EAAG,MAAO,EAAa,GAE7D,GAAI,GAAe,KAAM,CACvB,GAAM,GAAqB,EAAa,uBAAuB,GACzD,EAA0B,GAC5B,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,KAAM,KAEjD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IChER,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,QAAA,GAAW,EACf,CAAC,KAAA,EAAM,aAAA,GAAgB,EAE7B,GAAI,EAAE,MAAM,SAAW,EAAG,CACxB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAc,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAE/C,EACF,GAAa,EAAO,EAAa,EAAQ,MAAO,EAAQ,MAAO,GAEnE,MAAO,GAAQ,eAAe,CAAC,GAAO,EAAQ,MAAO,WAC5C,EAAE,MAAM,SAAW,EAAG,CAC/B,GAAM,GAAO,EAAQ,WAAW,GAC1B,EAAa,EAAQ,WAAW,GAEhC,EAAS,GAAmB,EAAM,EAAY,EAAM,GAE1D,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAQ,MAAO,EAAO,QAGpE,KAAM,IAAI,OACN,qEACG,EAAE,MAAM,WAGV,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,ICnCR,YAAuB,EAI5B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,UAAA,EAAW,WAAA,GAAc,EAEhC,EAAK,OACD,IAAe,OACf,IAAM,+DACF,KACR,EAAK,OACD,EAAY,EACZ,IAAM,sDAAsD,KAEhE,GAAM,GAAY,EAAE,MAAM,GACpB,EAAc,EAAE,MAAM,GACtB,EAAa,EAAE,MAAM,GACrB,EAAa,EAAE,MAAM,GAErB,EAAe,EAAc,EAC7B,EAAc,EAAa,EAC3B,EAAc,EAAc,GAAY,GAExC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EACF,GAAI,cAAa,EAAY,EAAe,EAAc,GAE1D,EAAY,EAChB,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAI,EAAG,EAAI,EAAc,EAAE,EAAG,CACrC,GAAM,GAAM,KAAK,MAAM,EAAI,GACrB,EAAW,EAAI,EACrB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,GAAM,KAAK,MAAM,EAAI,GACrB,EAAW,EAAI,EACf,EAAW,GAAU,EAAY,GAAW,EAClD,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CAEpC,GAAM,GADM,EAAI,EAEN,EAAc,GAAM,EAAc,GAAM,EAAc,IAChE,EAAO,KAAe,EAAQ,KAMtC,MAAO,GAAQ,eACX,CAAC,EAAW,EAAc,EAAa,GAAc,EAAE,MAAO,GAG7D,GAAM,IAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,ICvDR,YAAgC,EAIrC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,EAAW,gBAAA,GAAmB,EAEnD,GAAiB,CAAC,EAAG,GAAS,yBAE9B,GAAM,GAAW,EAAK,eAAe,EAAE,OACjC,EAAgB,EAAK,eAAe,EAAO,OAE7C,EAAa,EACb,GAAc,MAChB,GAAa,CAAC,EAAG,IAGnB,EAAK,OACD,EAAa,+BAA+B,EAAS,GACrD,IAAM,gFACgB,oBAA0B,MAEpD,GAAM,GAAW,EAAa,kBAC1B,EAAE,MACF,EAAO,MAA2C,EAAS,EAC3D,EAAK,EAAiB,IAEpB,CAAC,aAAA,EAAc,YAAA,EAAa,eAAA,EAAgB,cAAA,EAAe,QAAA,GAC7D,EACE,EAAU,EAAQ,KAClB,EAAS,EAAQ,IACjB,EAAQ,EAAS,YAAc,EAAS,WACxC,EAAI,GAAI,IAAa,EAAS,SAAU,EAAE,OAC1C,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAQ,KAAK,IAAI,EAAO,QAAQ,OACxC,EAAQ,EAAE,OAEhB,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EAAG,CAC3C,GAAM,GAAW,EAAI,EAAS,GACxB,EAAW,EAAI,EAAE,QAAQ,GAC/B,OAAS,GAAK,EAAG,EAAK,EAAS,UAAW,EAAE,EAAI,CAC9C,GAAM,GAAW,EAAW,EAAK,EAAE,QAAQ,GACrC,EAAW,EAAK,EAAS,aAAe,EAC9C,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,GAAK,EAAW,EAAK,EAC3B,GAAI,EAAK,GAAK,GAAM,EAAS,SAC3B,SAEF,GAAM,IAAW,EAAK,EAAc,GAC9B,EAAW,EAAW,EAAK,EAAS,GAC1C,OAAS,IAAK,EAAG,GAAK,EAAS,SAAU,EAAE,GAAI,CAC7C,GAAM,IAAW,EAAW,GAAK,EAAE,QAAQ,GACrC,GAAW,GAAK,EAAS,YAAc,EAC7C,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,IAAK,GAAW,EAAK,EAC3B,GAAI,GAAK,GAAK,IAAM,EAAS,QAC3B,SAEF,GAAM,IAAW,GAAW,EAAK,EAAc,GACzC,GAAW,EAAW,GAAK,EAAS,WACtC,GAAW,GACX,GAAW,GACf,OAAS,IAAK,EAAG,GAAK,EAAS,WAAY,EAAE,GAAI,CAC/C,GAAM,IAAO,EAAM,GAAW,IAC9B,OAAS,IAAI,EAAG,GAAI,EAAO,EAAE,GAC3B,EAAM,GAAW,KAAM,GAAO,EAAM,GAAW,IAEjD,IAAY,EACZ,IAAY,OAQxB,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,EAAE,QAG7C,GAAM,IAA4C,CACvD,WAAY,GACZ,YAAa,MACb,WAAY,ICpFR,YAA8C,EAInD,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,GAAA,GAAM,EACV,CAAC,QAAA,EAAS,UAAA,EAAW,IAAA,EAAK,gBAAA,EAAiB,YAAA,GAAe,EAEhE,GAAiB,CAAC,EAAG,GAAK,uCAE1B,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAa,EAC1D,EAAW,EAAK,EAAiB,IAE/B,CAAC,aAAA,EAAc,YAAA,EAAa,aAAA,EAAc,YAAA,GAAe,EAEzD,EAAK,GAAI,IAAa,EAAS,YAAa,WAE5C,EAAU,EAAS,QAAQ,KAC3B,EAAS,EAAS,QAAQ,IAC1B,EAAQ,EAAS,YAAc,EAAS,WAExC,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAO,GAAI,IAAa,EAAE,MAAO,EAAE,MAAO,GAC1C,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACrC,EAAQ,GAAI,IAAa,EAAG,MAAO,EAAG,MAAO,GACnD,OAAS,GAAK,EAAG,EAAK,EAAc,EAAE,EAAI,CACxC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAS,GAAM,IAC9C,EAAQ,KAAK,IACf,EAAS,UAAY,GAAS,SAAW,EAAS,GAAM,GAE5D,OAAS,GAAK,EAAG,EAAK,EAAa,EAAE,EAAI,CACvC,GAAM,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAM,GAAU,GAAM,IAC/C,EAAQ,KAAK,IACf,EAAS,SAAW,GAAS,QAAU,EAAU,GAAM,GAE3D,OAAS,GAAK,EAAG,EAAK,EAAS,YAAa,EAAE,EAAI,CAChD,GAAM,GAAK,KAAK,MAAM,EAAK,GACrB,EAAK,EAAK,EAEZ,EAAU,EACd,OAAS,IAAI,EAAG,GAAI,EAAS,UAAW,EAAE,GACxC,OAAS,GAAK,EAAO,EAAK,EAAO,EAAE,EAAI,CACrC,GAAM,IAAK,EAAK,EAAK,EAAe,EACpC,OAAS,IAAK,EAAO,GAAK,EAAO,EAAE,GAAI,CACrC,GAAM,IAAK,EAAK,GAAK,EAAc,EACnC,GAAY,EAAK,IAAI,GAAG,GAAI,GAAI,GAC3B,EAAM,IAAI,GAAG,EAAI,GAAI,IAIhC,EAAG,IAAI,EAAS,EAAI,EAAI,EAAI,KAKlC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAA0D,CACrE,WAAY,GACZ,YAAa,MACb,WAAY,IC/DR,YAA6C,EAIlD,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,OAAA,GAAU,EACf,CAAC,QAAA,EAAS,UAAA,EAAW,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAAc,EAE/D,GAAiB,CAAC,EAAI,GAAS,sCAE/B,GAAM,GAAY,EAAK,eAAe,EAAG,OACnC,EAAgB,EAAK,eAAe,EAAO,OAE3C,EAAW,EAAa,kBAC1B,EAAY,EAAO,MAA2C,EAC9D,EAAW,EAAK,EAAiB,IAE/B,EAAK,GAAI,IAAa,EAAS,QAAS,WACxC,EAAW,EAAG,OACd,CAAC,EAAM,EAAM,GAAQ,EAAG,QACxB,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,CAAC,EAAM,EAAM,GAAQ,EACrB,EAAY,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC5C,CAAC,EAAO,EAAO,GAAS,EACxB,CACJ,UAAA,EACA,aAAA,EACA,YAAA,EACA,WAAA,EACA,SAAA,EACA,QAAA,EACA,YAAA,EACA,UAAA,GACA,SAAA,EACA,aAAA,GACA,YAAA,IACE,EACE,GAAS,EAAe,EAAI,EAAS,QAAQ,IAC7C,EAAU,EAAc,EAAI,EAAS,QAAQ,KAC7C,GAAQ,EAAc,EAE5B,OAAS,IAAI,EAAG,GAAI,EAAW,EAAE,GAC/B,OAAS,IAAK,EAAG,GAAK,EAAY,EAAE,GAClC,OAAS,IAAK,EAAG,GAAK,EAAU,EAAE,GAAI,CACpC,GAAM,IAAW,GAAK,GAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,GAAY,GAAe,IAAY,IAEpD,OAAS,IAAK,EAAG,GAAK,EAAS,EAAE,GAAI,CACnC,GAAM,IAAW,GAAK,EAChB,GAAQ,KAAK,IAAI,EAAG,KAAK,KAAK,GAAW,KACzC,GACF,KAAK,IAAI,EAAW,GAAc,IAAY,IAE9C,GAAU,EACd,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAe,GAE/B,OAAS,IAAK,GAAO,GAAK,GAAO,EAAE,GAAI,CACrC,GAAM,IAAK,GAAK,GAAc,GACxB,GAAW,EAAO,GAAI,EAAO,GAAK,EAAO,GACzC,GAAY,EAAS,GAAe,EAAI,IAC1C,EAAS,GAAc,EAAI,IAAM,EAAQ,GAE7C,OAAS,IAAK,EAAG,GAAK,GAAO,EAAE,GAAI,CACjC,GAAM,IAAK,GAAK,GAAQ,GAClB,GAAQ,EAAS,GAAW,IAC5B,GAAS,EAAU,GAAY,IACrC,IAAW,GAAQ,KAIzB,EAAS,EAAO,GAAI,EAAO,GAAK,EAAO,GAAK,IAAM,IAM1D,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAyD,CACpE,WAAY,GACZ,YAAa,MACb,WAAY,ICvFR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEN,EAAQ,EAAK,cAAc,EAAE,OAE7B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAS,GAAO,CAAC,EAAO,GAAQ,EAAE,OAClC,EAAO,EAAO,OACpB,OAAS,GAAI,EAAG,EAAI,EAAM,OAAQ,IAChC,EAAK,EAAI,EAAQ,GAAK,EAAM,GAG9B,GAAM,GAAW,CAAC,GAAG,EAAE,MAAO,GAAG,EAAE,OAEnC,MAAO,GAAQ,eAAe,EAAU,EAAO,MAAO,EAAO,QAGxD,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBD,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,KAAU,CACvC,GAAM,CAAC,EAAA,EAAG,OAAA,GAAU,EACd,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAC5B,EAAa,EAEb,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OACtC,EAAQ,EAAE,MAAM,OAEhB,EAAa,EAAW,KAAK,IAAI,EAAO,QAAQ,OAChD,EAAa,EAAO,MAAM,OAE1B,CACJ,UAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,EACA,cAAA,EACA,SAAA,GAEE,EAAa,sBACT,EAAE,MACF,EAAO,MAAmC,EAAS,EACnD,OAAyB,GAE3B,EAAU,EAAK,cAAc,GAC7B,EAAU,EAAS,OACnB,EAAa,EAAK,kBAAkB,EAAE,MAAO,GAMnD,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EAAM,CAC3C,GAAM,GAAO,EAAO,EAAe,EAAQ,IAC3C,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EAAM,CAC1C,GAAM,IAAO,EAAO,EAAc,EAAQ,KAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAI,IAAS,OAAO,iBACpB,OAAS,IAAI,EAAG,GAAI,EAAc,EAAE,GAAG,CACrC,GAAM,GAAM,EAAO,GAAI,EACvB,GAAI,GAAO,GAAK,EAAM,EACpB,OAAS,IAAI,EAAG,GAAI,EAAa,EAAE,GAAG,CACpC,GAAM,IAAM,GAAO,GAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EAAS,CAC7B,GAAM,IAAS,EAAK,WAChB,CAAC,EAAG,EAAK,GAAK,GAAI,EAAO,EAAK,eAAe,EAAE,QAC7C,GAAc,EAAK,WACrB,CAAC,GAAG,GAAG,GAAI,EACX,EAAK,eAAe,EAAO,QACzB,GAAM,EAAM,IAAU,EAAW,IACnC,GAAM,IACR,IAAS,MAMnB,GAAM,IAAc,EAAK,WACrB,CAAC,EAAG,EAAM,EAAM,GAAI,EAAS,EAAK,eAAe,IACrD,EAAW,IAAe,KASlC,MAAO,CAAC,OAHO,EAAW,MACtB,EAAK,aAAa,EAAY,EAAE,OAAQ,EAAU,EAAE,OAExC,MAAO,EAAU,MAAO,EAAE,SC/EjC,GAA+C,CAC1D,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,KAAU,CACvC,GAAM,CAAC,EAAA,EAAG,OAAA,EAAQ,GAAA,GACd,EACE,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAC5B,EAAa,EAEb,EACF,EAAK,cACD,EAAE,MAAO,EAAW,KAAK,IAAI,EAAE,QAAQ,QAGzC,EAAU,EAAK,cACD,EAAO,MACP,EAAW,KAAK,IAAI,EAAO,QAAQ,QAGjD,CACJ,UAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,EACA,cAAA,EACA,SAAA,GAEE,EAAa,sBACT,EAAE,MACF,EAAO,MAAmC,EAAS,EACnD,OAAyB,GAEjC,EAAK,OACD,EAAG,OAAS,EAAS,OACrB,IAAM,YAAY,4CACuB,EAAS,mBAC3C,EAAG,QAEd,GAAM,GACF,EAAK,cACD,EAAU,EAAW,KAAK,IAAI,EAAG,QAAQ,QAK3C,EAAY,EAAK,0BACD,EAAO,MAAO,EAAO,OAO3C,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EAAM,CAC3C,GAAM,GAAO,EAAO,EAAe,EAAQ,IAC3C,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EAAM,CAC1C,GAAM,GAAO,EAAO,EAAc,EAAQ,KAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAI,IAAS,OAAO,iBAChB,EAAO,EACP,GAAO,EACX,OAAS,IAAI,EAAG,GAAI,EAAc,EAAE,GAAG,CACrC,GAAM,IAAM,EAAO,GAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EACpB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,IAAM,EAAO,EAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EAAS,CAC7B,GAAM,IAAM,EAAG,GAAG,IAAK,IAAK,GAAK,EAAQ,IAAG,GAAG,GAC3C,GAAM,IACR,IAAS,GACT,EAAO,GACP,GAAO,KAMjB,EAAU,GAAM,IAAM,IAAM,EAAI,GAAG,GAAM,GAAM,KASvD,MAAO,CAAC,OAHO,EAAW,MACtB,EAAK,aAAa,EAAW,EAAE,OAAQ,EAAO,MAAO,EAAO,OAEhD,MAAO,EAAO,MAAO,MAAO,EAAO,SC/F1C,GAA8C,CACzD,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,KAAU,CACvC,GAAM,CAAC,EAAA,EAAG,OAAA,EAAQ,GAAA,GACd,EACE,CAAC,QAAA,EAAS,IAAA,EAAK,UAAA,GAAa,EAC5B,EAAa,EAEb,EACF,EAAK,cACD,EAAE,MAAO,EAAW,KAAK,IAAI,EAAE,QAAQ,QAGzC,EAAU,EAAK,cACD,EAAO,MACP,EAAW,KAAK,IAAI,EAAO,QAAQ,QAGjD,CACJ,UAAA,EACA,SAAA,EACA,QAAA,EACA,WAAA,EACA,UAAA,EACA,SAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,EACA,cAAA,EACA,SAAA,GAEE,EAAa,sBACT,EAAE,MACF,EAAO,MAAmC,EAAS,EACnD,OAAyB,GAEjC,EAAK,OACD,EAAG,OAAS,EAAS,OACrB,IAAM,YAAY,4CACuB,EAAS,mBAC3C,EAAG,QAEd,GAAM,GACF,EAAK,cACD,EAAU,EAAW,KAAK,IAAI,EAAG,QAAQ,QAK3C,EACF,EAAK,0BAA0B,EAAE,MAAO,EAAE,OAO9C,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAC/B,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EAAM,CAC3C,GAAM,GAAO,EAAO,EAAe,EAAQ,IAC3C,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EAAM,CAC1C,GAAM,GAAO,EAAO,EAAc,EAAQ,KAC1C,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAI,IAAS,OAAO,iBAChB,EAAU,EAAO,EAAK,EAAI,EAC1B,GAAU,EAAO,EAAK,EAAI,EAC9B,OAAS,IAAI,EAAG,GAAI,EAAc,EAAE,GAAG,CACrC,GAAM,IAAM,EAAO,GAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EACpB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,IAAM,EAAO,EAAI,EACvB,GAAI,IAAO,GAAK,GAAM,EAAS,CAC7B,GAAM,IAAM,EAAG,GAAG,IAAK,IAAK,GAAK,EAAQ,IAAG,GAAG,GAC3C,GAAM,IACR,IAAS,GACT,EAAS,GACT,GAAS,MAMnB,EAAU,GAAG,GAAQ,IAAQ,IAAM,EAAI,GAAG,GAAM,GAAM,KAS9D,MAAO,CAAC,OAHO,EAAW,MACtB,EAAK,aAAa,EAAW,EAAE,OAAQ,EAAE,MAAO,EAAE,OAEtC,MAAO,EAAE,MAAO,MAAO,EAAE,SC/FvC,YAAkB,EAAsD,CAE5E,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,GAAA,EAAI,EAAA,GAAK,EAEhB,GAAiB,CAAC,EAAI,GAAI,WAE1B,GAAM,GAAe,GAAI,cAAa,EAAK,cAAc,EAAE,QACrD,EAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC7C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAI,EAAO,GACb,GAAK,EACP,EAAa,GAAK,EAAS,GAE3B,EAAa,GAAK,EAAS,GAAM,GAAI,GAIzC,MAAO,GAAQ,eAAe,EAAE,MAAO,UAAW,GAG7C,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICzBD,GACT,GAA6B,CAAC,EAAW,IAAe,IAAM,EAAK,EAAI,GAC9D,GACT,GAAiB,GAAO,GAAW,KAAwB,QAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICTR,GAAI,EAAa,MACjB,GAAK,EAAa,OAClB,GAAK,EAAa,OAClB,GAAK,EAAa,OAClB,GAAK,EAAa,OAClB,GAAK,EAAa,OAEX,GAAM,GACf,GACC,GAAM,CACL,GAAM,GAAO,KAAK,KAAK,GACjB,EAAI,KAAK,IAAI,GACb,EAAI,EAAO,GAAM,GAAI,GAC3B,MAAO,GACF,GACK,OAAK,EAAI,IAAM,EAAK,IAAM,EAAI,IAAM,EAAI,IAAM,EAC/C,KAAK,IAAI,CAAC,EAAI,MAIhB,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YAAqB,EAI1B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,GAAS,EACV,CAAC,IAAA,GAAO,EAER,EAAY,EAAM,MAAM,OACxB,EAAW,EAAM,MAAM,QACzB,EAAO,EACX,MAAI,GAAM,GAER,GAAK,OACD,CAAE,GAAY,IAAM,EACpB,IAAM,iCAAiC,CAAG,GAAY,OAClD,MACR,EAAO,EAAY,EAAM,GAE3B,EAAS,OAAO,EAAM,EAAG,GAElB,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAQ,QAAA,EAAS,MAAO,CAAC,MAAO,KAGvD,GAAM,IAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,IC5BD,GACT,GAA6B,CAAC,EAAW,IAAc,EAAI,GAClD,GAAM,GAAiB,GAAS,IAEhC,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICKR,YACF,EAAmB,EACnB,EAA0B,CAC5B,GAAM,GAAa,EAAM,MACnB,EAAQ,EAAW,GACnB,EAAW,EAAW,GAEtB,EAAY,EAAW,KAAK,IAAI,EAAM,QAEtC,EAAS,EAAU,mBAAmB,KACtC,EAAS,EAAU,mBAAmB,KAGtC,EAAc,CAAC,EAAO,GACtB,EAAa,EAAK,cAAc,GAChC,EAAa,EAAK,uBAAuB,UAAW,GACpD,EAAa,EAAK,uBAAuB,UAAW,GAE1D,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAE9B,GAAM,GAAI,GAAM,CACd,OAAQ,CAAC,EAAG,GACZ,QAAS,EACT,MAAO,CAAC,MAAO,CAAC,EAAG,GAAI,KAAM,CAAC,EAAG,MAE7B,EAAI,GAAM,CACd,OAAQ,CAAC,EAAG,GACZ,QAAS,EACT,MAAO,CAAC,MAAO,CAAC,EAAG,GAAI,KAAM,CAAC,EAAG,MAG7B,EAAQ,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAS,IAGtD,CAAC,KAAA,EAAM,KAAA,GAAQ,GAAQ,EAAO,EAAS,GACvC,EAAM,EAAa,uBAAuB,EAAM,GAEtD,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAI,EAAa,oBAAoB,EAAK,GAChD,EAAW,EAAI,EAAW,GAAK,EAAE,KACjC,EAAW,EAAI,EAAW,GAAK,EAAE,KAGnC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAG3C,GAAM,GACF,EAAW,eAAe,EAAa,UAAW,GAChD,EACF,EAAW,eAAe,EAAa,UAAW,GAEhD,EAAS,GACX,CAAC,OAAQ,CAAC,KAAM,EAAW,KAAM,GAAY,QAAS,IAE1D,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAElC,EAGH,YACF,EAAmB,EACnB,EAA0B,CAC5B,GAAM,GAAY,EAAK,cAAc,EAAM,OAErC,EAAY,EAAW,KAAK,IAAI,EAAM,QAEtC,EACF,EAAW,KAAK,IAAI,EAAU,mBAAmB,KAAK,QAAQ,OAG5D,EACF,EAAW,KAAK,IAAI,EAAU,mBAAmB,KAAK,QAAQ,OAGlE,GAAI,GAAc,GAAY,CAC5B,GAAM,GACF,GAAU,EAAU,EAAU,EAAW,EAAS,GAEhD,EAAc,CAAC,EAAM,MAAM,GAAI,EAAM,MAAM,IAEjD,GAAI,EAAS,CACX,GAAM,GACF,EAAW,eAAe,EAAa,UAAW,EAAO,MACvD,EACF,EAAW,eAAe,EAAa,UAAW,EAAO,MAEvD,EAAuB,EAAW,eACpC,GAAI,UACJ,EAAK,kBAAkB,EAA8B,YACnD,EACF,GAAS,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAS,IAExC,EACF,GAAc,WACV,CAAC,OAAQ,CAAC,EAAG,EAAU,EAAG,GAAW,QAAS,IAEhD,EACF,GAAc,WACV,CAAC,OAAQ,CAAC,EAAG,EAAU,EAAG,GAAe,QAAS,IAGpD,EACF,EAAW,KAAK,IAAI,EAAY,QAAQ,OACtC,EACF,EAAW,KAAK,IAAI,EAAY,QAAQ,OAE5C,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GAElC,CAAC,KAAM,EAAa,KAAM,GAGnC,MAAO,OACF,CACL,GAAM,GAAO,EAAa,uBAAuB,EAAU,GAErD,EACF,GAAyB,EAAM,EAAW,GAE9C,MAAO,GAAa,uBAAuB,IAI/C,YAAuB,EAAY,CACjC,MAAQ,GAAO,EAAO,IAAO,EAI/B,YACI,EAAwB,EAAwB,EAChD,EACA,EAA0B,CAC5B,GAAI,IAAS,EACX,MAAO,CAAC,KAAM,EAAU,KAAM,GAGhC,GAAM,GAAO,EAAa,uBAAuB,EAAU,GAErD,EAAO,EAAO,EAEd,EAAc,EAAa,qBAAqB,GAEhD,EAAe,EAAY,KAC3B,EAAe,EAAY,KAE3B,EAAY,CAAC,EAAa,QAE1B,EACF,EAAW,eAAe,EAAW,UAAW,GAC9C,EACF,EAAW,eAAe,EAAW,UAAW,GAE9C,EAAiB,GACnB,CAAC,OAAQ,CAAC,KAAM,EAAc,KAAM,GAAe,QAAS,IAE1D,EAAa,EAAa,oBAAoB,GAE9C,EAAc,EAAW,KACzB,EAAc,EAAW,KAEzB,EAAW,CAAC,EAAY,QAExB,EACF,EAAW,eAAe,EAAU,UAAW,GAC7C,EACF,EAAW,eAAe,EAAU,UAAW,GAE7C,EAAgB,GAClB,CAAC,OAAQ,CAAC,KAAM,EAAa,KAAM,GAAc,QAAS,IAGxD,EACF,GAAU,EAAc,EAAc,EAAM,EAAS,GAEnD,EAAgB,EAAa,KAC7B,EAAgB,EAAa,KAE7B,EAAa,CAAC,EAAc,QAE5B,EACF,EAAW,eAAe,EAAY,UAAW,GAC/C,EACF,EAAW,eAAe,EAAY,UAAW,GAE/C,EAAkB,GAAQ,CAC9B,OAAQ,CAAC,KAAM,EAAe,KAAM,GACpC,QAAS,IAGL,EACF,GAAU,EAAa,EAAa,EAAM,EAAS,GAEjD,EAAe,EAAY,KAC3B,EAAe,EAAY,KAE3B,EAAY,CAAC,EAAa,QAE1B,EACF,EAAW,eAAe,EAAW,UAAW,GAC9C,EACF,EAAW,eAAe,EAAW,UAAW,GAE9C,GAAiB,GACnB,CAAC,OAAQ,CAAC,KAAM,EAAc,KAAM,GAAe,QAAS,IAE1D,EAAI,EAAa,UAAU,EAAM,GACjC,GAAS,CAAC,EAAE,KAAK,QAEjB,GAAY,EAAW,eAAe,GAAQ,UAAW,EAAE,MAC3D,GAAY,EAAW,eAAe,GAAQ,UAAW,EAAE,MAE3D,EAAc,GAChB,CAAC,OAAQ,CAAC,KAAM,GAAW,KAAM,IAAY,QAAS,IAEpD,GACF,GACI,CAAC,OAAQ,CAAC,EAAG,EAAa,EAAG,IAAiB,QAAS,IAGzD,GAAU,GAAI,CACF,OAAQ,CAAC,EAAG,EAAiB,EAAG,IAChC,QAAS,IAErB,GAAU,GAAI,CACF,OAAQ,CAAC,EAAG,EAAiB,EAAG,IAChC,QAAS,IAGrB,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IACvD,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IAEvD,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IACvD,GAAc,GAAK,CAAC,OAAQ,CAAC,MAAO,IAAU,QAAS,IAEvD,GAAQ,GAAO,CACnB,OAAQ,CAAC,GAAuB,IAChC,QAAS,EACT,MAAO,CAAC,KAAM,KAEV,GAAQ,GAAO,CACnB,OAAQ,CAAC,GAAuB,IAChC,QAAS,EACT,MAAO,CAAC,KAAM,KAGV,GAAY,EAAW,KAAK,IAAI,GAAM,QAAQ,OAC9C,GAAY,EAAW,KAAK,IAAI,GAAM,QAAQ,OAEpD,MAAA,GAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,GACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IACzC,EAAW,8BAA8B,IAElC,CAAC,KAAM,GAAW,KAAM,IAIjC,YACI,EAAkB,EAAc,EAAgB,CAClD,GAAM,GAAM,GAAI,cAAa,EAAO,GAEpC,OAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAI,GAAO,EACP,EAAO,EACX,OAAS,GAAI,EAAG,EAAI,EAAM,IAAK,CAC7B,GAAM,GAAI,EAAa,SAAS,EAAI,EAAG,EAAM,GACvC,EAAO,EAAa,oBAAoB,EAAsB,GACpE,GAAQ,EAAK,KAAO,EAAE,KAAO,EAAK,KAAO,EAAE,KAC3C,GAAQ,EAAK,KAAO,EAAE,KAAO,EAAK,KAAO,EAAE,KAEzC,GACF,IAAQ,EACR,GAAQ,GAEV,EAAa,mBAAmB,EAAK,EAAM,EAAM,GAEnD,MAAO,GC1TH,YAAc,EAAkD,CAEpE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAY,EAAK,cAAc,EAAM,OAGrC,EAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACtD,EAAQ,EAAY,EAEpB,EAAU,GAAQ,CACtB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,CAAC,EAAO,MAGnB,EAAS,GAAS,EAAS,GAAO,GAElC,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,EAAM,SAEhE,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCR,YAAe,EAAiD,CAEpE,GAAM,CAAC,QAAA,EAAS,MAAA,GAAS,EACnB,CAAC,MAAA,EAAO,MAAA,EAAO,MAAA,GAAS,EAExB,EAAS,GAAS,EAAK,WAAW,GAClC,EAAS,EAAK,kBAAkB,EAAQ,EAAK,cAAc,IACjE,MAAA,IAAW,EAAQ,EAAO,GAEnB,EAAQ,eAAe,EAAO,EAAQ,GAGxC,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IAGd,YACI,EAAoB,EAAsB,EAAe,CAExD,EAAoB,KAAK,GCpBvB,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CACvC,GAAM,CAAC,MAAA,GAAS,EACV,EAAa,EAEb,EAAS,EAAK,uBAChB,EAAM,MAA0B,EAAK,cAAc,EAAM,QACvD,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MAEtD,EAAY,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEpD,OAAS,GAAW,EAAG,EAAW,EAAO,IAAY,CACnD,GAAM,GAAc,EAAW,EAAa,EAAc,EAE1D,OAAS,GAAM,EAAG,EAAM,EAAa,IAAO,CAC1C,GAAM,GAAY,EAAO,GAAa,GAEtC,OAAS,GAAM,EAAG,EAAM,EAAY,IAAO,CACzC,GAAM,GAAY,EAAM,EAExB,OAAS,GAAU,EAAG,EAAU,EAAa,IAAW,CAGtD,GAAM,GAFS,CAAC,EAAO,EAAK,EAAK,GAEhB,GAEX,EAAS,KAAK,MAAM,EAAa,GACjC,EAAS,EAAc,EAAY,EAAY,EAEjD,EAAc,EAAU,GAE5B,GAAI,GAAU,GAAK,EAAS,EAAY,CAEtC,GAAM,GAAmB,EAAS,EAC5B,EACF,EAAc,EAAY,EAAmB,EACjD,EAAc,EAAU,GAE1B,EAAO,GAAU,KAOzB,MAAO,CAAC,OADO,EAAW,MAAM,EAAQ,EAAM,MAAO,EAAM,OAC3C,MAAO,EAAM,MAAO,MAAO,EAAM,SC9CxC,GACT,GAA6B,CAAC,EAAW,IAAc,KAAK,MAAM,EAAI,IAC7D,GACT,GAAiB,GAAU,GAAc,KAAwB,SAExD,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICNR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,EAAQ,KAAA,EAAM,uBAAA,GAA0B,EAC5C,CACJ,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GACE,EAEA,EAAS,GAAO,CAClB,OAAQ,CAAC,EAAA,EAAG,OAAA,GACZ,QAAA,EACA,MAAO,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,KAG/C,GAAI,EAAM,CACR,GAAM,GAAY,EAClB,EAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAQ,EAAG,GAAO,QAAA,IAC5C,EAAQ,8BAA8B,GAGxC,GAAI,EAAY,CACd,GAAM,GAAY,EAClB,EAAS,GACL,EAAS,EAAQ,EAAY,EAAwB,GACzD,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,IC1CR,YAA+B,EAIpC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,OAAA,EAAQ,KAAA,EAAM,uBAAA,GAA0B,EAC5C,CACJ,QAAA,EACA,IAAA,EACA,WAAA,EACA,UAAA,EACA,gBAAA,EACA,WAAA,EACA,eAAA,GACE,EAEA,EAAS,GAAsB,CACjC,OAAQ,CAAC,EAAA,EAAG,OAAA,GACZ,QAAA,EACA,MAAO,CAAC,QAAA,EAAS,IAAA,EAAK,WAAA,EAAY,UAAA,EAAW,gBAAA,KAG/C,GAAI,EAAM,CACR,GAAM,GAAY,EAClB,EAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAQ,EAAG,GAAO,QAAA,IAC5C,EAAQ,8BAA8B,GAExC,GAAI,EAAY,CACd,GAAM,GAAY,EAClB,EAAS,GACL,EAAS,EAAQ,EAAY,EAAwB,GACzD,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAA2C,CACtD,WAAY,GACZ,YAAa,MACb,WAAY,IC5CR,YACF,EAAuD,CACzD,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,OAAA,EAAQ,QAAA,GAAW,EAEpB,EAAa,EAAK,cAAc,EAAO,OAEvC,EAAe,EAAQ,MACvB,EAAY,EAAa,EAAa,OAAS,GAE/C,CAAC,EAAa,EAAW,EAAW,GACtC,EAAa,mBAAmB,EAAQ,GAC5C,GAAI,IAAc,EAChB,MAAO,GAAQ,eAAe,EAAa,EAAO,MAAO,IAG3D,GAAM,GAAS,GAAO,CAAC,EAAW,GAAY,EAAO,OAC/C,EAAc,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAC/C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAEnD,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAQ,GACV,EAAe,EACnB,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAM,EAAY,EAAI,EAAY,GACxC,GAAgB,EAAM,EAAQ,GAC9B,EAAM,KAAK,GAEb,GAAI,EAAe,GAAK,GAAgB,EAAa,EACnD,KAAM,IAAI,OACN,oBAAoB,yBAA6B,EAAO,SAG9D,OAAS,GAAI,EAAG,EAAI,EAAW,IAC7B,EAAO,OAAO,EAAI,EAAY,GAC1B,EAAW,EAAe,EAAY,GAI9C,MAAO,GAAQ,eAAe,EAAa,EAAO,MAAO,EAAO,QAG3D,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IC1CR,YAAmB,EAIxB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,QAAA,GAAW,EACf,CAAC,KAAA,EAAM,UAAA,GAAa,EAE1B,GAAiB,CAAC,EAAG,GAAU,YAE/B,GAAI,GAAa,EAEb,GAAa,MACf,GAAa,GAGf,GAAM,GAAc,EAAK,cAAc,EAAQ,OAEzC,EAAa,EAAK,eAAe,EAAM,EAAE,OAAO,GAChD,EAAY,EAAa,aAAa,yBACxC,EAAG,EAAS,EAAY,GAEtB,EAAW,GAAQ,CACvB,OAAQ,CAAC,EAAA,GACT,QAAA,EACA,MAAO,CACL,MAAO,CACL,EAAU,UAAW,EAAU,UAAW,EAAU,QACpD,EAAU,cAKV,EAAe,GAAQ,CAC3B,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,CAAC,EAAU,UAAW,EAAc,EAAU,cAGzD,EAAqB,CACzB,EAAU,UAAW,EAAU,UAAW,EAAc,EAAU,UAClE,EAAU,WAGN,EAAa,EAAQ,WAAW,GAChC,EAAO,EAAQ,WAAW,GAC1B,EAAS,GAAa,EAAM,EAAY,GAE9C,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAAQ,eACX,EAAU,YAAa,EAAO,MAAO,EAAO,QAG3C,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IC7DD,GACT,GAA6B,CAAC,EAAW,IAAe,GAAK,EAAK,EAAI,GAC7D,GAAe,GACxB,GAAc,GAAkB,KAAwB,QAE/C,GAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,ICPR,YAAe,EAAmD,CAEtE,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,MAAA,GAAS,EAEV,EAAY,EAAK,cAAc,EAAM,OAGrC,EAAqB,EAAM,MAAM,EAAM,MAAM,OAAS,GACtD,EAAQ,EAAY,EAEpB,EAAU,GAAQ,CACtB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,MAAO,CAAC,EAAO,MAGnB,EAAS,GAAS,EAAS,GAAM,GAEjC,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,EAAM,SAEhE,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCD,GACT,GAAgB,GAAW,GAAO,OAAO,SAAS,GAAM,EAAI,EAAG,QAEtD,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GACT,GAAgB,GAAQ,GAAO,KAAK,IAAI,KAAQ,SAAW,EAAI,EAAG,QAEzD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GACT,GAAgB,GAAQ,GAAO,OAAO,MAAM,GAAM,EAAI,EAAG,QAEhD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GACT,GAA6B,CAAC,EAAW,IAAe,GAAK,EAAK,EAAI,GAC7D,GACT,GAAiB,GAAW,GAAe,KAAwB,QAE1D,GAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICRR,YAAmB,EAAqD,CAE5E,GAAM,CAAC,QAAA,EAAS,MAAA,GAAS,EACnB,CAAC,MAAA,EAAO,KAAA,EAAM,IAAA,GAAO,EAErB,EAAU,GAAa,EAAO,EAAM,GAE1C,MAAO,GAAQ,eAAe,CAAC,EAAQ,QAAS,UAAW,GAGtD,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,ICdD,GAAQ,GAAgB,GAAQ,GAAO,KAAK,MAAM,IAElD,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICJD,GACT,GAA6B,CAAC,EAAW,IAAc,GAAK,GACnD,GAAa,GACtB,GAAY,GAAgB,KAAwB,QAE3C,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICTD,GACT,GAAgB,GAAa,GAAO,EAAK,EAAI,EAAG,QAEvC,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GACT,GAA6B,CAAC,EAAW,IAAc,GAAK,GACnD,GACT,GAAiB,GAAW,GAAe,KAAwB,QAE1D,GAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICRR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,YAAA,EAAa,KAAA,EAAM,MAAA,EAAO,KAAA,GAAQ,EAEzC,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAE,MAAM,GACnB,EAAO,EAAW,EAClB,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAO,EAAK,cAAc,EAAE,OAC5B,EAAS,GAAI,cAAa,GAEhC,WAA2B,EAAc,CACvC,GAAM,GAAiB,EAAS,EAC5B,EACA,EAAS,EAAiB,KAAK,IAAI,EAAG,EAAiB,GACrD,EACF,EAAS,EAAiB,KAAK,IAAI,EAAiB,EAAa,GAEjE,EAAM,EACV,KAAO,GAAkB,EAAc,IAAkB,CACvD,GAAM,GAAI,EAAQ,GAClB,GAAO,EAAI,EAEb,MAAO,GAGT,OAAS,GAAS,EAAG,EAAS,EAAM,IAAU,CAC5C,GAAM,GAAM,EAAkB,GACxB,EAAM,EAAQ,GAAU,KAAK,IAAI,EAAO,EAAQ,EAAK,CAAC,GAC5D,EAAO,GAAU,EAGnB,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAE,MAAO,GAG3C,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IC1CR,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,EAAA,EAAG,GAAA,GAAM,EACb,CAAC,YAAA,EAAa,KAAA,EAAM,MAAA,EAAO,KAAA,GAAQ,EAEzC,GAAiB,EAAI,WAErB,GAAM,GAAS,EAAK,cAAc,EAAG,OAE/B,EAAW,EAAG,MAAM,GACpB,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACvC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAS,GAAI,cAAa,GAC1B,EAAO,EAEb,OAAS,GAAS,EAAG,EAAS,EAAM,IAAU,CAC5C,GAAM,GAAiB,EAAS,EAC1B,EACD,EAAS,EAAkB,KAAK,IAAI,EAAG,EAAiB,GACvD,EAAY,EAAS,EACvB,KAAK,IAAI,EAAU,EAAiB,EAAc,GAElD,EAAO,EACX,OAAS,GAAI,EAAY,EAAI,EAAU,IACrC,GAAQ,KAAK,IAAI,EAAQ,GAAI,GAE/B,EAAO,EAAQ,EAAO,EAEtB,OAAS,GAAI,EAAY,EAAI,EAAU,IAAK,CAC1C,GAAI,GAAM,GAAK,EAAQ,EAAO,EAAQ,GAAK,EAAQ,GAAU,EACzD,IAAW,GACb,IAAO,KAAK,IAAI,EAAM,CAAC,IAEzB,GAAO,EAAS,GAChB,EAAO,IAAM,GAIjB,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAE,MAAO,GAG5C,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,IC3CR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,iBAAA,EAAkB,SAAA,GAAY,EAC/B,EAAa,EACf,EAAS,EAAE,MACT,EAAQ,EAAO,OAEf,EAAW,EAAK,eAAe,EAAkB,GACnD,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,GACvD,EAAQ,EAAW,KAAK,IAAI,EAAE,QAAQ,OAC1C,GAAI,GAAgB,KAAM,CACxB,GAAM,GAAqB,GAAI,OAAM,GACrC,OAAS,GAAI,EAAG,EAAI,EAAS,OAAQ,IACnC,EAAS,GAAK,EAAO,EAAa,IAGpC,EAAQ,GAAc,EAAO,EAAQ,EAAE,MAAO,EAAc,GAC5D,EAAO,EAAa,iBAAiB,EAAK,OAAQ,GAElD,EAAS,EAGX,GAAiB,EAAG,OACpB,EAAa,2BAA2B,MAAO,EAAM,GACrD,GAAM,CAAC,EAAa,GAChB,EAAa,0BAA0B,EAAQ,GAE7C,EAAa,EAAK,cAAc,GAEhC,EAAS,GAAQ,EAAO,EAAY,EAAa,EAAE,OACnD,EAAS,EAAW,MAAM,EAAQ,EAAa,EAAE,OAEnD,EAAW,EACf,MAAI,IAGF,GADiB,EAAa,qBAAqB,EAAa,IAI3D,CAAC,OAAA,EAAQ,MAAO,EAAU,MAAO,EAAE,OAGrC,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICrDR,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACZ,GAAiB,EAAG,WACpB,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAC9C,EAAY,EAElB,EAAK,OACD,EAAa,+BAA+B,EAAS,GACrD,IAAM,wEACa,oBAA0B,MAEjD,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAW,EAAK,GAChB,EAEJ,GAAI,EAAS,cAAgB,GAAK,EAAS,eAAiB,GACxD,EAAK,YAAY,EAAS,QAAS,EAAS,UAC9C,EAAM,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,QACxB,CACL,GAAM,GAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAK,eAAe,EAAE,OAChC,EAAS,GAAK,EAAS,EAAE,MAAO,EAAE,MAAO,EAAS,EAAU,OAClE,EAAM,EAAQ,eACV,EAAS,SAAU,EAAE,MAAO,EAAO,QAEzC,MAAO,GAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICpCR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,EAAiB,WAAA,GAAc,EAEhE,GAAiB,EAAG,aAEpB,GAAM,GAAW,EAAa,kBAC1B,EAAE,MAAmD,EAAY,EACjE,EAAmB,EAAK,EAAiB,GAEvC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAS,GACX,EAAS,EAAE,MAAO,EAAE,MAAO,EAAK,eAAe,EAAE,OAAQ,EAAU,OAEvE,MAAO,GAAQ,eAAe,EAAO,MAAO,UAAW,EAAO,QAGzD,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICzBR,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,GAAS,EACd,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAEpD,GAAiB,CAAC,EAAI,GAAQ,iBAE9B,GAAM,GAAW,EAAa,kBAC1B,EAAM,MAAmD,EACzD,EAAS,EAAmB,EAAK,GAE/B,EAAW,EAAQ,WAAW,GAC9B,EAAY,GAAmB,EAAU,GACzC,EAAc,EAAS,YACvB,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAgB,EAAS,cACzB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAuB,EAAS,qBAChC,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAW,EAAuB,EAAI,EAAS,QAAQ,MACvD,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EAAK,GAAO,EAAM,MAAO,WAEzB,EAAQ,EAAQ,WAAW,GAEjC,OAAS,GAAQ,EAAG,EAAQ,EAAS,UAAW,EAAE,EAChD,OAAS,GAAU,EAAG,EAAU,EAAS,WAAY,EAAE,EACrD,OAAS,GAAU,EAAG,EAAU,EAAS,QAAS,EAAE,EAClD,OAAS,GAAQ,EAAG,EAAQ,EAAS,SAAU,EAAE,EAC/C,OAAS,GAAQ,EAAG,EAAQ,EAAS,QAAS,EAAE,EAAO,CAErD,GAAM,GAAgB,EAAU,EAC1B,EAAc,EAAQ,EACtB,GAAc,EAAQ,EACxB,EAAU,EACd,OAAS,IAAS,EAAG,GAAS,EACzB,IAAU,EAAe,CAC5B,GAAM,IAAW,GAAgB,IAAU,EAC3C,GAAI,CAAA,IAAU,GAAK,IAAW,EAAS,UACnC,KAAK,MAAM,MAAa,IAG5B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAgB,CAC3B,GAAM,GAAS,GAAc,IAAQ,EACrC,GAAI,CAAA,GAAQ,GAAK,GAAS,EAAS,WAC/B,KAAK,MAAM,KAAW,GAG1B,OAAS,IAAO,EAAG,GAAO,EACrB,IAAQ,EAAe,CAC1B,GAAM,IAAS,IAAc,IAAQ,EACrC,GAAI,GAAQ,GAAK,IAAS,EAAS,UAC/B,KAAK,MAAM,MAAW,GACxB,SAGF,GAAM,IAAS,EAAuB,EAC9B,EACJ,EACC,EAAU,IAAI,EAAO,GAAS,EAAO,GAAO,GAE3C,GACF,GAAS,EAAwB,EACjC,GAAO,EAAuB,GAE5B,GAAO,KAAW,GAAS,EAAI,EACrC,AAAI,KAAS,GAMb,IADI,EAAM,IAAI,EAAO,GAAS,EAAO,GAAO,GACzB,MAIzB,EAAG,IAAI,EAAS,EAAO,EAAS,EAAO,EAAO,GAOxD,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,ICnGR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,GAAA,EAAI,MAAA,EAAO,OAAA,GAAU,EACtB,EAAI,EACV,GAAiB,CAAC,EAAO,GAAS,eAClC,GAAM,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,gBAAA,GAAmB,EAE9C,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,EAAmB,EAAK,GACtB,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAY,GACd,EAAS,SAAU,EAAE,MACrB,GAAiB,EAAS,EAAE,MAAO,EAAE,MAAO,GAAU,QACpD,EAAe,EAAS,aACxB,EAAc,EAAS,YACvB,EAAiB,EAAS,eAC1B,EAAgB,EAAS,cACzB,EAAwB,EAAS,sBACjC,EAAuB,EAAS,qBAChC,EAAU,EAAuB,EAAI,EAAS,QAAQ,KACtD,EAAS,EAAwB,EAAI,EAAS,QAAQ,IACtD,EACF,GAAgB,EAAE,MAA2C,WAE3D,EAAS,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACrC,EAAQ,GACV,EAAG,MAA2C,UAAW,GAE7D,OAAS,GAAI,EAAG,EAAI,EAAS,UAAW,EAAE,EACxC,OAAS,GAAI,EAAG,EAAI,EAAS,WAAY,EAAE,EACzC,OAAS,GAAM,EAAG,EAAM,EAAS,SAAU,EAAE,EAC3C,OAAS,GAAM,EAAG,EAAM,EAAS,QAAS,EAAE,EAAK,CAE/C,GAAM,GAAY,EAAM,EAClB,EAAY,EAAM,EACpB,EAAU,EACd,OAAS,GAAK,EAAG,EAAK,EAAuB,GAAM,EAAgB,CACjE,GAAM,IAAO,GAAY,GAAM,EAC/B,GAAI,CAAA,IAAM,GAAK,IAAO,EAAS,WAC3B,KAAK,MAAM,MAAS,IAGxB,OAAS,GAAK,EAAG,EAAK,EAAsB,GAAM,EAAe,CAC/D,GAAM,IAAO,GAAY,GAAM,EAC/B,GAAI,GAAM,GAAK,IAAO,EAAS,UAC3B,KAAK,MAAM,MAAS,GACtB,SAEF,GAAM,IAAS,EAAwB,EAAuB,EACzD,EAAU,IAAI,EAAG,GAAK,GAAK,GAC1B,GAAS,EAAK,EAAuB,EAErC,EAAO,KAAW,GAAS,EAAI,EACrC,AAAI,IAAS,GAKb,IADc,EAAM,IAAI,EAAG,GAAK,GAAK,GAClB,IAGvB,EAAG,IAAI,EAAS,EAAG,EAAK,EAAK,GAKrC,MAAO,GAAQ,eAAe,EAAG,MAAO,EAAG,MAAO,EAAG,QAGhD,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,IChFR,YACF,EAAqB,EAAkB,EACvC,EAA8B,EAAiC,CACjE,GAAM,GAAU,EAAK,eAAe,GAC9B,EAAW,GAAK,EAAS,EAAQ,EAAO,EAAS,EAAU,OAC3D,EAAe,GACjB,EAAS,EAAQ,EAAO,EAAU,GAAM,GAE5C,MAAO,CAAC,EAAS,OAAQ,EAAa,QCHjC,GAAM,IAAwC,CACnD,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CACvC,GAAM,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,QAAA,EAAS,IAAA,EAAK,oBAAA,GAC7B,EACE,EAAa,EACnB,GAAiB,EAAG,qBAEpB,GAAM,GAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAW,EAAa,kBAC1B,EAAE,MAA2C,EAAY,EACzD,CAAC,EAAG,GAAI,GACN,CAAC,EAAQ,GAAW,GACtB,EAAQ,EAAE,MAAO,EAAE,MAAO,EAAqB,GAE7C,EACF,EAAW,MAAM,EAAwB,EAAS,SAAU,EAAE,OAC5D,EACF,EAAW,MAAM,EAAuB,EAAS,SAAU,EAAE,OACjE,MAAO,CACL,CAAC,OAAQ,EAAc,MAAO,EAAS,SAAU,MAAO,EAAE,OAC1D,CAAC,OAAQ,EAAe,MAAO,EAAS,SAAU,MAAO,YCpBzD,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAI,GACA,EAAE,QAAU,OACd,EAAK,GAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,WAEhD,EAAK,GAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IAG9B,GAAM,GAAQ,EAAG,MAAM,OACjB,EAAO,EAAK,eAAe,EAAM,EAAG,OACpC,EAAc,EAAa,mBAAmB,EAAM,GAEtD,EAAgB,EAChB,EAAY,EACZ,GAAe,MACjB,GACI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KACvD,EAAgB,EAAa,iBAAiB,EAAc,OAAQ,IAGtE,EAAa,2BACT,MAAO,EAAe,EAAU,MAAM,QAE1C,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAU,MAAO,GACtD,EAAc,EAAa,WAAW,EAAU,MAAO,SACzD,EAAS,GAAM,EAAS,EAAU,GAChC,EAAa,EAAK,cAAc,GAChC,EAAO,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAEvC,EAAQ,EAAQ,KAAK,IAAI,EAAU,QAAQ,OACjD,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EACV,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAChC,GAAO,EAAM,EAAS,GAExB,EAAK,GAAK,EAGZ,GAAI,EAAU,CACZ,GAAM,GAAW,EAAa,qBAAqB,EAAO,MAAO,GAC3D,EAAY,EAClB,EAAS,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAC/D,EAAQ,8BAA8B,GAGxC,MAAA,GAAQ,8BAA8B,GAElC,GAAe,MACjB,EAAQ,8BAA8B,GAGjC,EAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICtER,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEnB,EAAO,EAAK,eAAe,EAAM,EAAE,OAEnC,EADS,EAAa,0BAA0B,EAAE,MAAO,GACpC,GACrB,EAAa,EAAK,cAAc,GAChC,EAAY,GACZ,EACF,EAAQ,eAAe,GAAI,UAAW,GAAI,cAAa,CAAC,KAC5D,EAAU,KAAK,GAEf,GAAM,GAAK,GAAK,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,aACtD,EAAU,KAAK,GAEf,GAAM,GACF,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAI,EAAG,GAAmB,QAAA,IAC/C,EAAU,KAAK,GAEf,GAAM,GAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAM,QAAA,EAAS,MAAO,CAAC,KAAA,EAAM,SAAA,KAE7D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IAEtD,EAGF,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICjCR,YACF,EAAmE,CAErE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,EAAM,SAAA,GAAY,EAEzB,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAK,eAAe,EAAM,EAAE,OACzC,EAAO,EACL,EAAe,EAAa,mBAAmB,EAAM,EAAE,MAAM,QAC/D,EAAK,EACL,GAAgB,MAClB,GAAK,GAAU,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,KACpD,EAAO,EAAa,iBAAiB,EAAK,OAAQ,EAAE,MAAM,SAG5D,EAAa,2BAA2B,MAAO,EAAM,EAAG,MAAM,QAC9D,GAAM,CAAC,EAAU,GACb,EAAa,0BAA0B,EAAG,MAAO,GAC/C,EAAa,EAAK,cAAc,GAChC,EAAO,EAAK,oBAAoB,EAAK,cAAc,GAAW,EAAG,OAEjE,EAAQ,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAC1C,OAAS,GAAI,EAAG,EAAI,EAAK,OAAQ,EAAE,EAAG,CACpC,GAAM,GAAS,EAAI,EACf,EAAM,EAAM,GAChB,OAAS,GAAI,EAAG,EAAI,EAAY,EAAE,EAAG,CACnC,GAAM,GAAQ,EAAM,EAAS,GACzB,EAAQ,GACV,GAAM,GAGV,EAAK,GAAK,EAGR,GAAgB,MAClB,EAAQ,8BAA8B,GAGxC,GAAM,GAAS,EAAQ,eAAe,EAAU,EAAG,MAAO,GAE1D,GAAI,EAAU,CACZ,GAAM,GAAgB,EAAa,qBAAqB,EAAU,GAC5D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GAE/B,EAGT,MAAO,GAGF,GAAM,IAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IC7DR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,SAAA,EAAU,KAAA,GAAQ,EAEzB,GAAiB,EAAG,aAEpB,GAAM,GAAW,EAAS,IACtB,CAAC,EAAG,IAAM,EAAE,GAAqB,EAAE,MAAM,GAAK,EAAE,IAE9C,EAAQ,EAAS,IAAI,GAAK,EAAE,IAC5B,EAAM,EAAS,IAAI,CAAC,EAAG,IAAM,EAAE,GAAK,EAAE,MAAM,IAC5C,EAAS,IAAS,UAAY,EAAI,EAElC,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAE,MAAM,OAChB,EAAW,EAAK,eAAe,EAAE,OAEjC,EAAa,EAAK,cAAc,GAChC,EAAa,EAAS,OACtB,EAAgB,EAAK,eAAe,GACpC,EACF,EAAK,uBAAuB,EAAE,MAA0B,GAE5D,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAI,GAAS,EAAK,WAAW,EAAG,EAAY,GAC5C,OAAS,GAAI,EAAG,EAAI,EAAY,IAC1B,EAAO,GAAK,EAAM,GACpB,EAAO,GAAK,EAAM,GAAK,EAAI,EAAO,GAAK,EAC9B,EAAO,IAAM,EAAI,IAC1B,GAAO,GAAM,GAAI,GAAK,GAAK,EAAI,EAAO,GAAK,GAG/C,EAAS,EAAO,IAAI,CAAC,EAAG,IAAM,EAAI,EAAM,IAExC,GAAM,GAAU,EAAK,WAAW,EAAQ,EAAO,GAE/C,EAAQ,GAAK,EAAM,GAKrB,MAAO,CAAC,OAFM,EAAQ,MAAM,EAAS,EAAU,EAAE,OAE1B,MAAO,EAAU,MAAO,EAAE,OAG5C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,ICpDD,GAAU,GAA8B,CAAC,EAAQ,IAAU,CACtE,GAAM,GAAM,EAAS,EACrB,MAAK,GAAS,GAAK,EAAS,GAAO,GAAU,GAAK,GAAU,EACnD,EAEC,GAAM,GAAU,IAIf,GAAM,GAAiB,GAAK,IAE5B,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,IClBd,GAA4B,GAAA,MCUtB,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,IAAA,GAAO,EAER,EAAa,EAAO,MAAM,OAE5B,EAAO,EAIX,GAHI,IAAS,IACX,GAAO,EAAa,GAElB,IAAS,EAAa,EACxB,KAAM,OACF,4EACmB,iBAA0B,KAGnD,GAAM,GAAO,EAAK,eAAe,CAAC,GAAO,EAAO,OAC1C,EAAW,GAAI,CACnB,OAAQ,CAAC,EAAG,GACZ,QAAA,EACA,MAAO,CAAC,iBAAkB,EAAM,SAAU,MAEtC,EAAgB,EAAa,qBAAqB,EAAS,MAAO,GAElE,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,EAAS,MAAO,CAAC,MAAO,KACtD,EACF,GAAI,CAAC,OAAQ,CAAC,EAAW,EAAG,GAAmB,QAAA,IAC7C,EAAI,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,IACzB,EACF,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAI,QAAA,EAAS,MAAO,CAAC,KAAM,EAAM,SAAU,MAC1D,EACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAEpD,EAAS,GAAI,CAAC,OAAQ,CAAC,EAAG,EAAG,EAAG,GAAc,QAAA,IAEpD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,IDxDR,YAAsB,EAI3B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,WAAA,EAAY,KAAA,EAAM,WAAA,GAAc,EAEvC,GAAiB,EAAQ,eAEzB,GAAM,GAAgB,EAClB,EACA,GAAQ,CAAC,OAAQ,CAAC,OAAA,GAAS,QAAA,EAAS,MAAO,CAAC,IAAK,MAE/C,EAAY,EAAc,MAAM,GAChC,EAAY,EAAc,MAAM,GAChC,EAAW,EAAQ,KAAK,IAAI,EAAc,QAAQ,OAClD,EAAW,CAAC,EAAW,GACvB,EACF,EAAK,oBAAoB,EAAK,cAAc,GAAW,SAE3D,OAAS,GAAI,EAAG,EAAI,EAAW,EAAE,EAAG,CAClC,GAAM,GAAS,EAAI,EAGb,EAAM,GAAI,cAAa,EAAY,GACzC,EAAI,GAAK,EAAS,GAClB,OAAS,GAAQ,EAAG,EAAQ,EAAI,OAAQ,EAAE,EACxC,EAAI,GAAS,EAAI,EAAQ,GAAK,EAAS,EAAS,GAGlD,GAAM,GAAoB,GAAA,KAAK,EAAK,YAC9B,EAAY,EAAI,EACtB,OAAS,GAAW,EAAG,EAAW,EAAY,EAAE,EAAU,CACxD,GAAM,GAAI,IAGV,EAAQ,EAAY,GAAY,EAAI,OAEpC,OAAS,GAAQ,EAAG,EAAQ,EAAI,OAAQ,IACtC,GAAI,EAAI,EAAI,GAAQ,CAClB,EAAQ,EAAY,GAAY,EAChC,QAMR,MAAK,IACH,EAAQ,8BAA8B,GAGjC,EAAQ,eAAe,EAAU,QAAS,GAG5C,GAAM,IAAkC,CAC7C,WAAY,GACZ,YAAa,MACb,WAAY,IEjER,GAA0B,GAAa,wBAKvC,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,OAAA,GAAU,EAClB,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,GAAkB,EAEtD,GAAiB,EAAO,qBAExB,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAE7C,CAAC,gBAAA,GAAmB,GACtB,EAAW,EAAY,EAAe,EAAc,GAExD,MAAO,GAAQ,eACX,CAAC,EAAgB,QAAS,QAAS,GAAI,YAAW,IAGjD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,IC7BR,GAA0B,GAAa,wBAIvC,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,OAAA,GAAU,EAClB,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,mBAAA,GAChD,EAEJ,GAAiB,EAAO,2BAExB,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAE7C,CAAC,gBAAA,EAAiB,aAAA,GAAgB,GACpC,EAAW,EAAY,EAAe,EAAc,EACpD,GAEJ,MAAO,CACL,EAAQ,eACJ,CAAC,EAAgB,QAAS,QAAS,GAAI,YAAW,IACtD,EAAQ,eAAe,GAAI,QAAS,GAAI,YAAW,CAAC,MAGjD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,IChCR,GAA0B,GAAa,wBAIvC,YAA8B,EAInC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,EAAO,OAAA,GAAU,EAClB,CAAC,cAAA,EAAe,aAAA,EAAc,eAAA,EAAgB,aAAA,GAAgB,EAEpE,GAAiB,EAAO,8BAExB,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EAAa,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAE7C,EAAmB,EACnB,EAAkB,EAClB,EAAoB,EACpB,EAAkB,EAElB,CAAC,gBAAA,EAAiB,eAAA,GAAkB,GACtC,EAAW,EAAY,EAAkB,EACzC,EAAmB,GAEvB,MAAO,CACL,EAAQ,eACJ,CAAC,EAAgB,QAAS,QAAS,GAAI,YAAW,IACtD,EAAQ,eACJ,CAAC,EAAe,QAAS,UAAW,GAAI,cAAa,KAItD,GAAM,IAA0C,CACrD,WAAY,GACZ,YAAa,MACb,WAAY,ICnCR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,QAAA,GAAW,EACZ,CAAC,MAAA,EAAO,QAAA,EAAS,SAAA,GAAY,EAEnC,GAAiB,EAAS,UAE1B,GAAM,GAAc,EAAK,cAAc,EAAQ,OAEzC,EAAM,GAAI,cAAa,EAAc,GAC3C,EAAI,KAAK,GACT,GAAM,GAAa,EAAQ,KAAK,IAAI,EAAQ,QAAQ,OAEpD,OAAS,GAAQ,EAAG,EAAQ,EAAa,EAAE,EACrC,EAAW,IAAU,GAAK,EAAW,GAAS,GAChD,GAAI,EAAQ,EAAQ,EAAW,IAAU,GAI7C,MAAO,GAAQ,eAAe,CAAC,GAAG,EAAQ,MAAO,GAAQ,QAAS,GAG7D,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICvBR,YACF,EAAwD,CAC1D,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,GAAI,EAAE,QAAU,SACd,KAAM,IAAI,OAAM,iDACX,GAAI,EAAE,QAAU,YAAa,CAClC,GAAM,GAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IACtC,EAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IAEtC,EAAS,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAA,IAEpD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,MAEP,OAAO,IAAK,CAAC,QAAA,EAAS,MAAO,CAAC,MAAO,EAAE,MAAO,MAAO,EAAG,MAAO,EAAE,SAI9D,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC7BR,YACF,EAAuD,CACzD,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,EAAA,GAAK,EAEZ,GAAI,EAAE,QAAU,SACd,KAAM,IAAI,OAAM,gDACX,GAAI,EAAE,QAAU,YAAa,CAClC,GAAM,GAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAS,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IACrC,EAAW,GAAK,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,IACrC,EAAI,GAAU,CAAC,OAAQ,CAAC,EAAG,GAAW,QAAA,IAEtC,EAAS,GAAQ,CAAC,OAAQ,CAAC,KAAM,EAAG,KAAM,GAAI,QAAA,IAEpD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,MAEP,OAAO,IAAK,CAAC,QAAA,EAAS,MAAO,CAAC,MAAO,EAAE,MAAO,MAAO,EAAG,MAAO,EAAE,SAI9D,GAAM,IAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IChCR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,KAAA,GAAQ,EAEf,GAAI,EAAO,SAAW,EACpB,MAAO,IACH,CAAC,OAAQ,CAAC,MAAO,EAAO,IAAK,QAAA,EAAS,MAAO,CAAC,IAAK,KAGzD,GAAM,GAAQ,EAAO,GAAG,MAClB,EAAQ,EAAO,GAAG,MAExB,EAAO,QAAQ,GAAI,CACjB,EAAK,kBACD,EAAO,EAAE,MACT,yDACJ,EAAK,OACD,IAAU,EAAE,MACZ,IAAM,2DAGZ,GAAM,GAAwC,GACxC,EAAkB,EAAO,IAAI,GAAI,CACrC,GAAM,GACF,GAAW,CAAC,OAAQ,CAAC,MAAO,GAAI,QAAA,EAAS,MAAO,CAAC,IAAK,KAC1D,MAAA,GAAwB,KAAK,GACtB,IAGH,EAAS,GAAO,CAAC,OAAQ,EAAiB,QAAA,EAAS,MAAO,CAAC,KAAA,KAEjE,MAAA,GAAwB,QACpB,GAAK,EAAQ,8BAA8B,IAExC,EAGF,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IC3CR,YACF,EAAuE,CAEzE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,SAAA,EAAU,cAAA,GAAiB,EAElC,GAAiB,EAAG,OAEpB,GAAM,GAAW,EAAS,IACtB,CAAC,EAAG,IAAM,EAAE,GAAqB,EAAE,MAAM,GAAK,EAAE,IAE9C,EAAQ,EAAS,IAAI,GAAK,EAAE,IAE5B,EAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,EAAQ,EAAK,cAAc,EAAE,OAC7B,EAAQ,EAAE,MAAM,OAChB,EAAW,EAAK,eAAe,EAAE,OAEjC,EAAa,EAAK,cAAc,GAChC,EAAa,EAAS,OACtB,EAAgB,EAAK,eAAe,GACpC,EACF,EAAK,uBAAuB,EAAE,MAA0B,GAExD,IAAkB,GACpB,EAAQ,KAAK,GAGf,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAE9B,GAAM,GADS,EAAK,WAAW,EAAG,EAAO,GAChB,IAAI,CAAC,EAAG,IAAM,EAAI,EAAM,IAC3C,EAAW,EAAK,WAAW,EAAW,EAAY,GAExD,EAAQ,GAAY,EAAM,GAK5B,MAAO,CAAC,OAFM,EAAQ,MAAM,EAAS,EAAU,EAAE,OAE1B,MAAO,EAAU,MAAO,EAAE,OAG5C,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,IC7CD,GACT,GAA6B,CAAC,EAAW,IAAc,KAAK,IAAI,EAAG,IAC1D,GAAM,GAAiB,GAAK,IAE5B,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICPR,YAAgB,EAAkD,CAEtE,GAAM,CAAC,QAAA,EAAS,MAAA,GAAS,EACnB,CAAC,MAAA,EAAO,KAAA,EAAM,MAAA,EAAO,KAAA,GAAQ,EAE7B,EAAS,GAAU,EAAO,EAAM,EAAM,GAC5C,MAAO,GAAQ,eAAe,CAAC,EAAO,QAAS,EAAO,GAGjD,GAAM,IAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICbD,GAAa,GAAgB,GAAa,GAAO,EAAI,GAErD,GAAiC,CAC5C,WAAY,GACZ,YAAa,MACb,WAAY,ICJR,YAAyB,EAI9B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAAQ,EAE/C,GAAiB,EAAQ,kBAEzB,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,CAAC,EAAW,GAAY,EAExB,CAAC,EAAO,EAAW,EAAU,GAAe,EAAO,MACnD,EAAU,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC1C,EAAS,GAAI,cACf,EAAK,cAAc,CAAC,EAAO,EAAW,EAAU,KAE9C,EAAuC,CAC1C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAG5C,EAAwC,CAC3C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAE9C,EAAY,EACV,EAAwB,EAAmB,GAAK,EAAoB,GACpE,EAAwB,EAAmB,GAAK,EAAoB,GAC1E,OAAS,GAAI,EAAG,EAAI,EAAO,IACzB,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAI,GACA,EACF,EAAgB,EAAyB,GAAI,IAAO,GAEpD,EAAgB,EAAwB,EAG1C,GAAM,GAAiB,KAAK,IAAI,EAAG,KAAK,MAAM,IACxC,EAAU,EAAgB,EAC1B,EAAgB,KAAK,IAAI,EAAY,EAAG,KAAK,KAAK,IAClD,EACF,EAAI,EAAc,GAAK,EAAiB,EAAc,GACpD,EACF,EAAI,EAAc,GAAK,EAAgB,EAAc,GACzD,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAI,GACA,EACF,EAAgB,EAAyB,GAAI,IAAO,GAEpD,EAAgB,EAAwB,EAE1C,GAAM,GAAiB,KAAK,IAAI,EAAG,KAAK,MAAM,IACxC,EAAU,EAAgB,EAC1B,GAAgB,KAAK,IAAI,EAAW,EAAG,KAAK,KAAK,IACjD,EAAgB,EAAe,EAAiB,EAAc,GAC9D,GAAgB,EAAe,EAAiB,EAAc,GAC9D,GAAiB,EAAe,GAAgB,EAAc,GAC9D,GAAiB,EAAe,GAAgB,EAAc,GACpE,OAAS,GAAI,EAAG,EAAI,EAAa,IAAK,CAIpC,GAAM,IAAU,EAAQ,EAAgB,GAClC,GAAa,EAAQ,GAAgB,GACrC,GAAW,EAAQ,GAAiB,GACpC,GAAc,EAAQ,GAAiB,GAEvC,GAAM,GAAW,IAAW,IAAW,EACvC,GAAS,GAAc,IAAc,IAAc,EACnD,GAAW,GAAO,IAAS,IAAO,EAExC,EAAO,KAAe,KAM9B,MAAO,GAAQ,eACX,CAAC,EAAO,EAAW,EAAU,GAAc,UAAW,GAGrD,GAAM,IAAqC,CAChD,WAAY,GACZ,YAAa,MACb,WAAY,ICvFR,YAA6B,EAIlC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,EAAQ,GAAA,GAAM,EACf,CAAC,aAAA,GAAgB,EAEvB,GAAiB,CAAC,EAAI,GAAS,sBAE/B,GAAM,GAAgB,EAAK,eAAe,EAAO,OAE3C,CAAC,EAAO,EAAS,EAAQ,GAAS,EAAO,MACzC,CAAC,CAAE,EAAS,GAAU,EAAG,MAEzB,EAAS,GAAI,cAAa,EAAQ,EAAU,EAAS,GAOrD,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAc,EAAe,GAAK,EAAe,GACjD,EAAa,EAAe,GAAK,EAAe,GAKhD,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OACzC,EAAS,EACb,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAU,EAAI,EAAc,GAClC,OAAS,GAAI,EAAG,EAAI,EAAS,IAAK,CAChC,GAAM,GAAM,EAAI,EACV,EAAc,KAAK,MAAM,GACzB,EAAiB,KAAK,IAAI,KAAK,KAAK,GAAM,EAAU,GAEpD,EAAe,EAAU,EAAc,EAAc,GACrD,EAAkB,EAAU,EAAiB,EAAc,GAE3D,EAAU,EAAM,EAChB,EAAiB,EAAM,EAC7B,OAAS,GAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,GAAM,GAAM,EAAI,EACV,EAAe,KAAK,MAAM,GAC1B,GAAgB,KAAK,IAAI,KAAK,KAAK,GAAM,EAAS,GAClD,EAAU,EAAM,EAChB,GAAiB,EAAM,EAEvB,GAAkB,EAAe,EAAe,EAAc,GAC9D,GACF,EAAe,GAAgB,EAAc,GAC3C,EACF,EAAkB,EAAe,EAAc,GAC7C,GACF,EAAkB,GAAgB,EAAc,GAE9C,GACF,EAAiB,GACf,GAA6B,EAAiB,EAC9C,GAA6B,EAAU,GACvC,GAAsB,EAAU,EACtC,OAAS,IAAI,EAAG,GAAI,EAAO,KAAK,CAC9B,GAAM,IAAQ,EAAS,KACvB,EAAO,GAAkB,KACrB,GAAQ,GACZ,EAAO,GAAmB,KAAM,GAAQ,GACxC,EAAO,EAAqB,KAAM,GAAQ,GAC1C,EAAO,GAAsB,KAAM,GAAQ,MAMnD,MAAO,GAAQ,eACX,CAAC,EAAO,EAAQ,EAAS,GAAQ,UAAW,GAG3C,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC5FR,YAAgC,EAIrC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,GAAU,EACX,CAAC,aAAA,EAAc,iBAAA,EAAkB,KAAA,GAAQ,EAE/C,GAAiB,EAAQ,yBAEzB,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,CAAC,EAAW,GAAY,EAExB,CAAC,EAAO,EAAW,EAAU,GAAe,EAAO,MACnD,EAAU,EAAQ,KAAK,IAAI,EAAO,QAAQ,OAC1C,EAAS,GAAI,cAAa,EAAQ,EAAY,EAAW,GAEzD,EAAuC,CAC1C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAG5C,EAAwC,CAC3C,GAAgB,EAAY,EAAK,EAAY,EAAI,EACjD,GAAgB,EAAW,EAAK,EAAW,EAAI,GAG5C,EAAwB,EAAmB,GAAK,EAAoB,GACpE,EAAwB,EAAmB,GAAK,EAAoB,GAEtE,EAAe,EACnB,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAc,EAAI,EAAc,GACtC,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAgB,EAClB,EAAyB,GAAI,IAC7B,EAAwB,EACxB,EAAmB,KAAK,IACxB,EAAY,EACZ,EAAe,KAAK,MAAM,GAAiB,KAAK,MAAM,IACtD,GACF,GAAmB,KAAK,IAAI,EAAG,IAEjC,GAAM,GAAY,EAAc,EAAmB,EAAc,GACjE,OAAS,GAAI,EAAG,EAAI,EAAU,IAAK,CACjC,GAAM,GAAgB,EAClB,EAAyB,GAAI,IAC7B,EAAwB,EACxB,EAAmB,KAAK,IACxB,EAAW,EACX,EAAe,KAAK,MAAM,GACX,KAAK,MAAM,IAC1B,GACF,GAAmB,KAAK,IAAI,EAAG,IAEjC,GAAM,GAAY,EAAY,EAAmB,EAAc,GAC/D,OAAS,GAAI,EAAG,EAAI,EAAa,IAAK,CAGpC,GAAM,GAAS,EAAQ,EAAY,GACnC,EAAO,KAAkB,KAMjC,MAAO,GAAQ,eACX,CAAC,EAAO,EAAW,EAAU,GAAc,EAAO,MAAO,GAGxD,GAAM,IAA4C,CACvD,WAAY,GACZ,YAAa,MACb,WAAY,IC1ER,YAAoC,EAIzC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,OAAA,EAAQ,GAAA,GAAM,EACf,CAAC,aAAA,GAAgB,EAEvB,GAAiB,CAAC,EAAI,GAAS,6BAE/B,GAAM,GAAgB,EAAK,eAAe,EAAO,OAC3C,EAAY,EAAK,eAAe,EAAG,OACnC,CAAC,EAAO,EAAS,EAAQ,GAAS,EAAO,MACzC,CAAC,CAAE,EAAS,GAAU,EAAG,MAEzB,EAAS,GAAI,cAAa,EAAQ,EAAU,EAAS,GACrD,EAAW,EAAQ,KAAK,IAAI,EAAG,QAAQ,OAKvC,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAmC,CACtC,GAAgB,EAAU,EAAK,EAAU,EAAI,EAC7C,GAAgB,EAAS,EAAK,EAAS,EAAI,GAGxC,EAAc,EAAe,GAAK,EAAe,GACjD,EAAa,EAAe,GAAK,EAAe,GAEhD,EAAiB,EAAI,EACrB,EAAgB,EAAI,EAIpB,EAAa,KAAK,KAAK,GAAkB,EAAK,EAC9C,EAAY,KAAK,KAAK,GAAiB,EAAK,EAGlD,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAM,GAAc,EAAI,EAAc,GACtC,OAAS,GAAI,EAAG,EAAI,EAAS,IAAK,CAChC,GAAM,GAAY,EAAc,EAAI,EAAc,GAG5C,EAAa,KAAK,MAAM,EAAI,GAC5B,EAAW,KAAK,MAAM,EAAc,EAAY,GACtD,OAAS,GAAI,EAAG,EAAI,EAAQ,IAAK,CAC/B,GAAM,GAAY,EAAY,EAAI,EAAc,GAG1C,EAAa,KAAK,MAAM,EAAI,GAC5B,GAAW,KAAK,MAAM,EAAc,EAAW,GAErD,OAAS,GAAI,EAAG,EAAI,EAAO,IAAK,CAC9B,GAAI,IAAQ,EAGZ,OAAS,IAAW,EAAG,GAAW,EAAW,KAAY,CACvD,GAAM,IAAM,GAAW,EAEvB,GAAI,GAAM,GAAK,IAAO,EACpB,SAGF,GAAM,GAAY,EAAc,GAAM,EAAU,GAC1C,GAAgB,GAAM,EACtB,GAAmB,KAAK,IAC1B,EAAU,EACV,EAAe,KAAK,MAAM,IACX,KAAK,MAAM,KAC9B,GAAI,IAAM,GAGV,OAAS,IAAW,EAAG,GAAW,EAAU,KAAY,CACtD,GAAM,IAAM,GAAW,GAEvB,GAAI,GAAM,GAAK,IAAO,EACpB,SAGF,GAAM,IAAY,EAAY,GAAM,EAAU,GACxC,GAAgB,GAAM,EACtB,GAAmB,KAAK,IAC1B,EAAS,EACT,EAAe,KAAK,MAAM,IACX,KAAK,MAAM,KAE1B,IAAM,IACR,KAAS,EAAS,GAAY,KAIpC,EAAO,EAAY,GAAK,MAMhC,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,GAGrD,GAAM,IAAgD,CAC3D,WAAY,GACZ,YAAa,MACb,WAAY,IC7GR,YACF,EACyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,WAEpB,GAAM,GAAQ,EAAE,MAAM,OAEhB,EAAQ,EAAK,eAAe,EAAM,EAAE,OAC1C,GAAI,IAAU,EACZ,MAAO,IAAS,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,IAGhC,GAAM,GAAS,GAAI,IAAa,EAAE,MAAO,EAAE,OACrC,EAAO,EAAQ,WAAW,GAEhC,OAAS,GAAI,EAAG,EAAI,EAAO,KAAM,IAAK,CACpC,GAAM,GAAS,EAAO,WAAW,GAC3B,EAAQ,EAAO,QACrB,EAAM,QAAQ,GAAK,EAAM,GAAK,EAAE,MAAM,GAAK,EAAI,EAAM,IACrD,EAAO,IAAI,EAAK,IAAI,GAAG,GAAQ,GAAG,GAGpC,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,IClCD,GAAuC,CAClD,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,KAAY,CACvC,GAAM,CAAC,MAAA,GAAS,EACV,CAAC,QAAA,EAAS,UAAA,EAAW,OAAA,GAAU,EAC/B,EAAa,EAEb,EAAS,EAAK,uBAChB,EAAM,MAA0B,EAAK,cAAc,EAAM,QACvD,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MAEtD,CAAC,EAAS,GACZ,EAAa,eAAe,EAAQ,EAAa,GAC/C,EAAmB,IAEnB,EAAY,KAAK,IAAI,GACrB,EAAY,KAAK,IAAI,GACrB,EAAY,EAAW,KAAK,IAAI,EAAM,QAAQ,OAEpD,OAAS,GAAW,EAAG,EAAW,EAAO,IAAY,CACnD,GAAM,GAAc,EAAW,EAAa,EAAc,EAE1D,OAAS,GAAM,EAAG,EAAM,EAAa,IAAO,CAC1C,GAAM,GAAY,EAAO,GAAa,GAEtC,OAAS,GAAM,EAAG,EAAM,EAAY,IAAO,CACzC,GAAM,GAAY,EAAM,EAExB,OAAS,GAAU,EAAG,EAAU,EAAa,IAAW,CACtD,GAAM,GAAS,CAAC,EAAO,EAAK,EAAK,GAE3B,EAAI,EAAO,GACX,EAAI,EAAO,GAGb,EAAU,GAAI,GAAW,EAAa,GAAI,GAAW,EACrD,EAAU,GAAI,GAAW,EAAa,GAAI,GAAW,EACzD,EAAS,KAAK,MAAM,EAAS,GAC7B,EAAS,KAAK,MAAM,EAAS,GAE7B,GAAI,GAAc,EAUlB,GATI,MAAO,IAAc,UACnB,KAAY,EACd,EAAc,EAEd,EAAc,EAAU,IAKxB,GAAU,GAAK,EAAS,GAAc,GAAU,GAChD,EAAS,EAAa,CAExB,GAAM,GAAmB,EAAU,GAAa,GAC1C,GAAmB,EAAS,EAC5B,EACF,EAAc,EAAmB,GAAmB,EACxD,EAAc,EAAU,GAG1B,GAAM,GAAS,EAAc,EAAY,EAAY,EACrD,EAAO,GAAU,KAOzB,MAAO,CAAC,OADO,EAAW,MAAM,EAAQ,EAAM,MAAO,EAAM,OAC3C,MAAO,EAAM,MAAO,MAAO,EAAM,SCtExC,GAAQ,GAAgB,GAAQ,GAAM,CAEjD,GAAM,GAAO,KAAK,MAAM,GACxB,MAAI,GAAK,EAAO,GACP,KAAK,MAAM,GACT,EAAK,EAAO,GACd,KAAK,KAAK,GAEb,EAAO,GAAQ,EACV,EAEA,EAAO,IAKP,GAA4B,CACvC,WAAY,GACZ,YAAa,MACb,WAAY,ICtBR,YACF,EAA0B,EAA0B,EACpD,EAAoB,EAAmB,EACvC,EAAmB,EAAmB,EACtC,EAAuB,CACzB,GAAM,GAAe,CAAC,EAAa,EAAW,GAExC,EAAc,EAAQ,OACtB,EAAc,EAAQ,OAE5B,GAAI,IAAe,EACjB,MAAO,IAAO,EAAsB,EAAQ,OAG9C,GAAM,GAAS,GAAO,EAAc,EAAQ,OAC3C,EAAO,OAAsB,KAAK,GAEnC,OAAS,GAAI,EAAG,EAAI,EAAY,IAAK,CACnC,GAAM,GAAQ,GACV,EAAe,EACnB,OAAS,GAAI,EAAG,EAAI,EAAW,IAAK,CAClC,GAAM,GAAM,EAAY,EAAI,EAAY,GACxC,EAAM,KAAK,GACX,GAAgB,EAAM,EAAQ,GAGhC,GAAI,EAAe,GAAK,GAAgB,EAAa,EACnD,KAAM,IAAI,OAAM,oBAAoB,yBAA6B,KAGnE,OAAS,GAAI,EAAG,EAAI,EAAW,IACzB,EACF,EAAO,OAAO,EAAe,EAAY,IACrC,EAAY,EAAI,EAAY,GAEhC,EAAO,OAAO,EAAe,EAAY,GAAK,EAAQ,OAAS,EAC3D,EAAY,GACZ,EAAY,EAAI,EAAY,GAKtC,MAAO,GCtCH,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,QAAA,EAAS,QAAA,GAAW,EACrB,CAAC,MAAA,GAAS,EAEV,CAAC,UAAA,EAAW,WAAA,EAAY,UAAA,EAAW,QAAA,EAAS,WAAA,GAC9C,EAAa,gBAAgB,EAAS,EAAS,GAC7C,EAAiB,GAEjB,EAAa,EAAQ,WAAW,GAChC,EAAa,EAAQ,WAAW,GAEhC,EAAS,GACX,EAAY,EAAY,EAAO,EAAY,EAAW,EACtD,EAAW,EAAS,EAAsB,GAE9C,MAAO,GAAQ,eAAe,EAAO,EAAO,MAAO,EAAO,QAGrD,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IC1BR,YAAiB,EAAqD,CAE1E,GAAM,CAAC,OAAA,EAAQ,QAAA,GAAW,EACpB,CAAC,UAAA,EAAW,EAAA,EAAG,EAAA,GAAK,EAE1B,GAAiB,CAAC,EAAW,EAAG,GAAI,UACpC,GAAM,GAAgB,EAAU,MAAM,OAEhC,EAAS,EAAQ,KAAK,IAAI,EAAU,QAAQ,OAC5C,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAU,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACrC,EAAc,GAAW,EAAE,MAAO,EAAE,OACpC,EACF,EAAK,oBAAoB,EAAK,cAAc,EAAE,OAAQ,GAEtD,EAAQ,EACN,EACF,IAAkB,GAAK,EAAgB,GAAK,EAAE,MAAM,SAAW,EAC/D,EACA,EAAK,cAAc,EAAE,MAAM,MAAM,IAErC,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,IACjC,OAAS,GAAI,EAAG,EAAI,EAAQ,IACtB,EAAO,KAAO,EAChB,EAAU,KAAW,EAAQ,GAE7B,EAAU,KAAW,EAAQ,GAKnC,MAAO,GAAQ,eAAe,EAAE,MAAO,EAAa,GAG/C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICtCR,GAAa,EAAa,gBAC1B,GAAQ,EAAa,WAEd,GAAO,GAAgB,GAAO,GACrC,GAAM,EACD,GAAQ,EAER,GAAc,MAAK,IAAI,GAAM,IAI3B,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICdD,GACT,GAAgB,GAAU,GAAO,EAAK,GAAI,KAAK,IAAI,CAAC,KAE3C,GAA8B,CACzC,WAAY,GACZ,YAAa,MACb,WAAY,ICND,GAAO,GAAgB,GAAO,GACrC,EAAK,EACA,GACE,EAAK,EACP,EAEA,GAIE,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICbD,GAAM,GAAgB,GAAM,GAAO,KAAK,IAAI,IAE5C,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICAR,GAAU,sBACV,GAAY,KAAK,IAAI,IAAW,EAEzB,GAAW,GAAgB,GAAW,GAAM,CAGvD,GAAM,GAAW,EAAK,CAAC,GAIjB,EAAW,EAAK,GAEhB,EAAO,KAAK,IAAI,GAClB,EAEJ,MAAI,GACF,EAAS,EACA,EACT,EAAS,EAET,EAAS,KAAK,IAAI,EAAM,GAEnB,IAGI,GAA+B,CAC1C,WAAY,GACZ,YAAa,MACb,WAAY,IC5BR,YAAyB,EAI9B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,WAAA,EAAY,SAAA,GAAY,EAE/B,GAAiB,CAAC,GAAI,kBAEtB,GAAM,GAAO,EAAK,cAAc,GAE1B,EAA4C,CAAC,CAAC,EAAG,IACvD,EAAiB,KAAK,GAAI,GAE1B,OAAS,GAAI,EAAI,EAAW,OAAQ,EAAI,EAAE,MAAM,OAAQ,EAAE,EACxD,EAAiB,KAAK,CAAC,EAAG,IAG5B,GAAM,GAAU,GAAY,WAAW,CACrC,OAAQ,CAAC,EAAA,GACT,QAAA,EACA,MAAO,CAAC,SAAU,EAAkB,cAAe,KAG/C,EACF,EAAa,YAAY,EAAQ,MAAO,EAAY,EAAM,IAExD,EAAoC,EAAa,YACnD,EAAoB,OAAQ,EAAW,OAAQ,IAE7C,EACF,EAAa,oBAAoB,EAAQ,MAAO,EAAY,EAAM,IAIhE,EACF,GAAQ,CAAC,OAHwB,CAAC,EAAG,GAGL,QAAA,EAAS,MAFV,CAAC,MAAO,KAOrC,EACF,GAAU,CAAC,OAJ0B,CAAC,EAAG,GAIL,QAAA,EAAS,MAF5B,CAAC,KAAM,KAMtB,EAAS,GACX,CAAC,OAHsC,CAAC,EAAG,GAGb,QAAA,EAAS,MAFF,CAAC,MAAO,KAIjD,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAAqC,CAChD,WAAY,GACZ,YAAa,MACb,WAAY,ICjER,YAAwB,EAI7B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,cAAA,EAAe,aAAA,EAAc,aAAA,GAAgB,EAC9C,CAAC,YAAA,GAAe,EAEhB,CAAC,UAAA,EAAW,WAAA,EAAY,UAAA,EAAW,QAAA,EAAS,WAAA,GAC9C,EAAa,gBAAgB,EAAc,EAAe,GACxD,EAAiB,GAEjB,EAAa,EAAQ,WAAW,GAChC,EAAa,EAAQ,WAAW,GAChC,EACF,EAAQ,KAAK,IAAI,EAAa,QAAQ,OAAO,GAE3C,EAAS,GACX,EAAY,EAAY,EAAa,EAAY,EAAW,EAC5D,EAAW,EAAS,EAAe,GAEvC,MAAO,GAAQ,eAAe,EAAa,EAAO,MAAO,EAAO,QAG3D,GAAM,IAAoC,CAC/C,WAAY,GACZ,YAAa,MACb,WAAY,IC3BR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,gBAAA,EAAiB,KAAA,GAAQ,EAE1B,EAAQ,EAAK,eAAe,EAAM,EAAE,OAAO,GAC3C,EAAa,EAAa,iBAAiB,EAAG,EAAiB,GAE/D,EAAQ,GAAI,OAAM,EAAE,MAAM,QAAQ,KAAK,GACvC,EAAO,EAAE,MAAM,QACrB,MAAO,GAAW,IAAI,GAAI,CACxB,GAAM,GAAY,CAAC,GAAG,GACtB,EAAU,GAAS,EACnB,GAAM,GACF,GAAM,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAA,EAAO,KAAM,KACtD,MAAA,GAAM,IAAU,EACT,IAIJ,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IC3BD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICJD,GAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,CAAC,CAAC,OAAA,EAAQ,QAAA,KAAY,CAChC,GAAM,CAAC,EAAA,GAAK,EACN,EAAa,EACnB,GAAiB,EAAG,UAEpB,GAAM,GAAS,EAAW,KAAK,IAAI,EAAE,QAAQ,OACvC,EAAY,GAAI,cAAa,EAAO,QAC1C,OAAS,GAAI,EAAG,EAAI,EAAO,OAAQ,EAAE,EAAG,CACtC,GAAM,GAAQ,EAAO,GACrB,EAAU,GAAK,EAAQ,EAGzB,MAAO,CAAC,OADO,EAAW,MAAM,EAAW,EAAE,MAAO,EAAE,OACtC,MAAO,EAAE,MAAO,MAAO,EAAE,SChBhC,GAAO,GAAgB,GAAM,CAAC,EAAI,IAAS,CACtD,GAAM,GAAY,EAClB,MAAI,OAAM,GACD,IAEA,EAAK,EAAI,EAAI,EAAU,QAIrB,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICRR,YAAuB,EAI5B,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CACJ,MAAA,EACA,IAAA,EACA,QAAA,EACA,UAAA,EACA,QAAA,EACA,aAAA,EACA,YAAA,EACA,eAAA,GACE,EAEJ,GAAiB,EAAG,gBAEpB,GAAM,CAAC,WAAA,EAAY,OAAA,EAAQ,SAAA,EAAU,KAAA,EAAM,SAAA,EAAU,SAAA,GACjD,GAAW,UACP,EAAE,MAAO,EAAO,EAAK,EAAS,EAAW,EAAS,EAClD,EAAa,GAEf,EAAK,GAAQ,CAAC,OAAQ,CAAC,EAAA,GAAI,QAAA,EAAS,MAAO,CAAC,MAAO,KAErD,EACJ,GAAI,EAAY,CACd,GAAM,GACF,GAAM,CAAC,OAAQ,CAAC,EAAG,GAAK,QAAA,EAAS,MAAO,CAAC,MAAO,EAAQ,KAAA,KAC5D,EAAS,GAAQ,CAAC,OAAQ,CAAC,GAAY,QAAA,EAAS,MAAO,CAAC,MAAO,KAE/D,EAAQ,8BAA8B,WAC7B,EAAS,KAAK,GAAQ,IAAS,GACxC,EAAS,EAAQ,eAAe,EAAU,EAAE,MAAO,QAC9C,CACL,GAAM,GAAO,EAAQ,WAAW,GAC1B,EAAS,GAAiB,EAAU,EAAM,EAAU,GAE1D,EAAS,EAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAGrE,GAAM,GACF,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAS,QAAA,EAAS,MAAO,CAAC,MAAO,KAE1D,MAAA,GAAQ,8BAA8B,GACtC,EAAQ,8BAA8B,GAE/B,EAGF,GAAM,IAAmC,CAC9C,WAAY,GACZ,YAAa,MACb,WAAY,IC3DD,GAAM,GAAgB,GAAM,GAAO,KAAK,IAAI,IAE5C,GAA0B,CACrC,WAAY,GACZ,YAAa,MACb,WAAY,ICLD,GAAO,GAAgB,GAAO,GAAO,KAAK,KAAK,IAE/C,GAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,ICHR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,KAAA,GAAQ,EAEf,GAAiB,EAAG,QACpB,GAAM,GAAS,GAAS,EAAQ,WAAW,GAAI,GAE/C,MAAO,GAAQ,eAAe,EAAO,MAAO,EAAO,MAAO,EAAO,QAG5D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IChBR,YACF,EAAqE,CAEvE,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,GAAK,EACN,CAAC,EAAA,EAAG,OAAA,GAAU,EAEpB,GAAiB,EAAG,QAEpB,GAAM,GAAQ,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACnC,CAAC,EAAa,GAChB,GAAS,EAAO,EAAE,MAAO,EAAE,MAA0B,EAAG,GAE5D,MAAO,CACL,EAAQ,eACJ,EAAY,MAAO,EAAY,MAAO,EAAY,QACtD,EAAQ,eACJ,EAAe,MAAO,EAAe,MAAO,EAAe,SAI5D,GAAM,IAA2B,CACtC,WAAY,GACZ,YAAa,MACb,WAAY,IC1BR,YAAoB,EAIzB,CACC,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,GAAW,EAC3B,CAAC,MAAA,EAAO,WAAA,GAAc,EACtB,CAAC,cAAA,EAAe,SAAA,EAAU,UAAA,EAAW,YAAA,GAAe,EAEpD,CAAC,EAAO,EAAa,EAAY,GAAe,EAAM,MACtD,CAAC,EAAW,GACd,GAAe,KAAO,EAAc,CAAC,EAAa,GAChD,EAAW,CAAC,EAAO,EAAW,EAAU,GAExC,EAAU,EAAK,eAAe,EAAM,OACpC,EAAc,EAAQ,GACtB,EAAY,EAAQ,GACpB,EAAY,EAAQ,GAEpB,EAAU,EAAK,uBACjB,EAAM,MAA0B,EAAK,cAAc,IAEvD,EAAQ,KAAK,GAEb,GAAM,GAAY,EAAQ,KAAK,IAAI,EAAM,QAAQ,OAC3C,EACF,EAAQ,KAAK,IAAI,EAAW,QAAQ,OAIxC,OAAS,GAAI,EAAG,EAAI,EAAO,EAAE,EAAG,CAC9B,GAAM,GAAY,EAAW,MAAM,KAAO,EACtC,EACA,EAAc,SAAS,EAAI,EAAG,EAAI,EAAI,GAE1C,OAAS,GAAO,EAAG,EAAO,EAAW,EAAE,EACrC,OAAS,GAAO,EAAG,EAAO,EAAU,EAAE,EACpC,OAAS,GAAU,EAAG,EAAU,EAAa,EAAE,EAAS,CACtD,GAAI,GAEE,EAAa,EAAU,GAAK,EAAO,EAAU,GAAK,EAAO,EAE/D,GAAI,IAAe,EAGjB,SAGF,GAAM,GACD,GAAU,GAAK,EAAO,EAAU,GAAK,EAAO,EAAU,IACvD,EACE,EACD,GAAU,GAAK,EAAO,EAAU,GAAK,EAAO,EAAU,IACvD,EAEE,EAAI,GAAS,EAAK,EAAY,GAC9B,GAAI,GAAS,EAAK,EAAa,GAErC,OAAQ,OACD,UACH,EAAM,GACF,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAG,GAAG,EAAG,EAAS,GACjC,UACG,WACH,EAAM,GACF,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAG,GAAG,EAAG,EAAS,GACjC,cAEA,KAAM,IAAI,OACN,+DACuB,KAG/B,GAAM,GACF,EAAI,EAAc,EAAO,EAAY,EAAO,EAAY,EAE5D,EAAQ,GAAO,EAKrB,MAAO,GAAQ,eAAe,EAAU,EAAM,MAAO,GAIvD,MAAO,CAAC,OADO,EAAQ,MAAM,EAAS,EAAU,EAAM,OACtC,MAAO,EAAM,MAAO,MAAO,EAAM,OAG5C,GAAM,IAAgC,CAC3C,WAAY,GACZ,YAAa,MACb,WAAY,IAGd,YACI,EAAkB,EAClB,EAA2C,CAC7C,OAAQ,OACD,UACH,MAAO,IAAgB,EAAU,OAC9B,OACH,MAAO,IAAa,EAAU,OAC3B,UACH,MAAO,IAAgB,EAAU,OAC9B,mBAEH,MAAO,IAAiB,EAAU,IAIxC,YAAyB,EAAkB,EAAW,CAEpD,GAAI,GAAU,EACd,GAAI,EAAU,EACZ,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAM,EAAI,EACZ,EAAU,GACZ,GAAU,EAAM,KAAK,MAAM,CAAC,EAAU,GAAO,GAE/C,EAAU,EAAU,CAAC,EAAM,EAAU,EAAM,CAAC,EAAU,UAE/C,EAAU,EAAM,EACzB,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAM,EAAI,EAChB,GAAW,EAAM,KAAK,MAAM,EAAU,GAClC,GAAW,GACb,GAAU,EAAM,EAAU,GAMhC,MAAO,GAAK,MAAM,EAAG,EAAS,EAAM,GAGtC,YAAsB,EAAkB,EAAW,CAEjD,GAAI,GAAU,EACd,GAAI,EAAU,EACZ,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAK,EAAM,EACjB,GAAW,EAAO,MAAK,MAAM,CAAC,EAAU,GAAM,WAEvC,EAAU,EAAM,EACzB,GAAI,GAAO,EACT,EAAU,MACL,CACL,GAAM,GAAK,EAAM,EACjB,GAAW,EAAM,KAAK,MAAM,EAAU,GAK1C,MAAO,GAAK,MAAM,EAAG,EAAS,EAAM,GAGtC,YAA0B,EAAkB,EAAW,CACrD,MAAO,GAGT,YAAyB,EAAkB,EAAW,CACpD,MAAO,GAAK,MAAM,EAAG,EAAU,EAAM,GAGvC,YACI,EAAuB,EAAqB,EAC5C,EAAqB,EAAmB,EAAmB,EAC3D,EAAW,EAAW,EAAiB,EAAiB,CAC1D,GAAM,GAAM,EAAQ,EAAc,EAAI,EAAY,EAAI,EAAY,EAClE,MAAI,IAAK,GAAK,EAAI,GAAe,GAAK,GAAK,EAAI,EACtC,EAAU,GAEV,EAIX,YACI,EAAuB,EAAqB,EAC5C,EAAqB,EAAmB,EAAmB,EAC3D,EAAW,EAAW,EAAiB,EAAiB,CAC1D,GAAM,GAAK,KAAK,MAAM,GAChB,EAAK,KAAK,MAAM,GAEtB,MAAO,IACH,EAAW,EAAa,EAAY,EAAa,EAAW,EAC5D,EAAO,EAAI,EAAI,EAAS,GAG9B,YACI,EAAuB,EAAqB,EAC5C,EAAqB,EAAmB,EAAmB,EAC3D,EAAW,EAAW,EAAiB,EAAiB,CAC1D,GAAM,GAAS,KAAK,MAAM,GACpB,EAAS,KAAK,MAAM,GACpB,EAAQ,EAAS,EACjB,EAAQ,EAAS,EAGjB,EACD,GAAQ,GACL,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAQ,EAAQ,EAAS,GAClD,GAAI,GACD,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAQ,EAAO,EAAS,GAGhD,EACD,GAAQ,GACL,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAO,EAAQ,EAAS,GACjD,GAAI,GACD,GACI,EAAW,EAAa,EAAY,EAAa,EACjD,EAAW,EAAO,EAAO,EAAO,EAAS,GAGrD,MAAQ,GAAQ,GAAK,EAAe,GAAI,GAAU,ECjO9C,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,MAAA,EAAO,QAAA,GAAW,EAC3B,CAAC,KAAA,GAAQ,EACT,CAAC,EAAA,GAAK,EACZ,GAAiB,EAAG,UAEpB,GAAM,GAAS,EAAQ,KAAK,IAAI,EAAE,QAAQ,OACpC,CAAC,aAAA,EAAc,YAAA,EAAa,QAAA,GAC9B,GAAW,EAAQ,EAAM,EAAE,MAAO,EAAE,OACxC,MAAO,CACL,EAAQ,eAAe,EAAa,EAAE,MAAO,GAC7C,EAAQ,eAAe,CAAC,EAAQ,QAAS,QAAS,IAI/C,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,ICrBR,YACF,EAAyE,CAE3E,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,MAAA,GAAS,EACZ,CAAC,KAAA,GAAQ,EAET,EAAO,GACT,IAAQ,EAAM,MAAM,QAGtB,GAAM,GAAY,EAAM,MAAM,OAExB,EAAM,EAAM,MAAM,GAClB,EAAqB,GAAI,OAAM,EAAY,GAC7C,EAAW,EACf,OAAS,GAAI,EAAG,EAAI,EAAW,IACzB,IAAM,GACR,GAAS,KAAc,EAAM,MAAM,IAIvC,GAAM,GAAQ,GAAI,OAAM,GAAW,KAAK,GAClC,EAAO,EAAM,MAAM,QACzB,EAAK,GAAQ,EACb,GAAM,GAAM,GAAI,OAAM,GACtB,OAAS,GAAI,EAAG,EAAI,EAAI,OAAQ,IAAK,CACnC,EAAM,GAAQ,EACd,GAAM,GAAU,GAAM,CAAC,OAAQ,CAAC,EAAG,GAAQ,QAAA,EAAS,MAAO,CAAC,MAAA,EAAO,KAAA,KACnE,EAAI,GAAK,GAAQ,CAAC,OAAQ,CAAC,EAAG,GAAU,QAAA,EAAS,MAAO,CAAC,MAAO,KAChE,EAAQ,8BAA8B,GAGxC,MAAO,GAGF,GAAM,IAA6B,CACxC,WAAY,GACZ,YAAa,MACb,WAAY,IClCR,YAA6B,EAIlC,CACC,GAAM,CAAC,OAAA,EAAQ,QAAA,EAAS,MAAA,GAAS,EAC3B,CAAC,EAAA,EAAG,WAAA,GAAc,EAClB,CAAC,YAAA,GAAe,EAEtB,GAAiB,EAAG,sBAEpB,GAAM,GAAQ,EAAE,MAAM,OAChB,EAAiB,EAAW,MAAM,OAClC,EAAM,GACN,EAA8B,GAI9B,EAAW,EAAQ,EACrB,EAAc,EAElB,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAAG,CACjC,GAAM,GAAW,GACb,CAAC,OAAQ,CAAC,MAAO,GAAc,QAAA,EAAS,MAAO,CAAC,IAAK,EAAI,KAC7D,EAAc,EACd,EAAc,KAAK,GAGrB,OAAS,GAAI,EAAG,EAAI,EAAa,EAAE,EAAG,CACpC,GAAM,GAAc,EAAK,kBAAkB,EAAoB,SACzD,EAAY,EAAQ,eAAe,GAAI,QAAS,GAChD,EACF,GAAM,CAAC,OAAQ,CAAC,EAAG,EAAW,EAAG,GAAc,QAAA,IAC7C,EACF,GAAK,CAAC,OAAQ,CAAC,KAAU,QAAA,EAAS,MAAO,CAAC,MAAO,aAC/C,EACF,GAAS,CAAC,OAAQ,CAAC,EAAG,EAAY,EAAG,GAAI,QAAA,IACvC,EACF,GAAI,CAAC,OAAQ,CAAC,EAAG,GAAM,QAAA,EAAS,MAAO,CAAC,KAAM,EAAG,SAAU,MAC/D,EAAI,KAAK,GACT,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GACnB,EAAc,KAAK,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC4FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GE/UjB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,8BAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,yBAAA,IAAA,GAAA,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KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IC6DR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GExTjB,GAAY,IAAZ,AAAA,UAAY,EAAQ,CAClB,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,UAAA,GAAA,cALU,IAAA,IAAQ,KASpB,GAAY,IAAZ,AAAA,UAAY,EAAiB,CAC3B,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,MAA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,EAAiB,IAAuB,CAC/D,GAAM,GAA2B,EAC3B,CAAC,KAAA,GAAQ,EACf,MAAO,CAAC,MAAO,IAAM,GAAM,EAAI,MCItB,GAA2C,CACtD,WAAY,GACZ,aAAc,CAAC,cACf,SAAU,CAAC,EAAY,IAAmB,CACxC,GAAM,CAAC,GAAc,EAKrB,MAAO,CAAC,EAHK,IACJ,GAAoB,EAAI,MAMrC,YAA+C,EAAM,EAAiB,CAIpE,GAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GACvB,EAAa,GAAa,EAAS,GAAO,EAAG,UAC3C,EAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCpOnB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,WAAA,IAAA,GAAA,OAAA,IAAA,GAAA,SAAA,I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BACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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AU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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", + "sourcesContent": ["import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\n// Detect the global object, even if operating in strict mode.\n// http://stackoverflow.com/a/14387057/265298\nvar global = (0, eval)('this'),\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return embedding.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: String, source: String | undefined, embedding: Array }>, threshold = 0): { name: String, source: String | undefined, simmilarity: Number, embedding: Array } {\n return embedding.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = {};\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2): Number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: Array, threshold = 0) {\n let best = { simmilarity: 0, name: '', source: '', embedding: [] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = simmilarity(embedding, f.embedding);\n if (perc > threshold && perc > best.simmilarity) best = { ...f, simmilarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAB5n2q03LfDqqx39y39npmlxbS/TOG5se29tuavzgWzeV4mtui2\nO3RRSY2hdVhqO2MvI36iu9lUsrSrvDHn6spnmSiq5jooyV6tq1VV69RC32byTh43h8otMx+r6I+Z\naK/g8TwX7bXh9Mid4iW+fjl8n1ICWb57xLBOm4zqse20Tbmj8+qKdnS9q8PhcTw5tumSm0/OHMxz\n0Za+uzx3sX1t0Zxurr1ZxvspWiZYWZbsbT0QK7KLrZVZJFaqt5vbezNOTg9J/FaZeJns93wCvLwb\nT/GJn92uGHldIBowAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADuAPA67F9H4l\nqMW20VvO3yRWW97T4fC4rXJHSMtI/WGhVlue3b473K2KzMML4+62tujG9pnozXaOSOVFMnVbmq1t\ntrJRW5E7wwvUxTvCyY6CHOt7moxz6Wh9PxTzYaT61h8x1MbZK/OH0zTf+Fxf6I/htj45vL9WgLMn\nmvbPFvocGWO9L7fq85p5maw9d7VYvE4JkmPu2if3eW0+PasdFNOnxfF1Y2hlykRsmY+LJ0MZjZXa\neq2eyi8oQTO0KLdZWzPRjWu6VaqtHR73g0bcI0sf0Q8Nkq93wqNuFaWP+XDTDDytwBowAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAef9q8HNpcGaI60vtPyl56k9Iew49j8ThGe\nPwxFv0l4zH2U26fDfTYiyJljvsjf4sm6vJ1hrXjq2MkqLdZEVbgbMx0auGdmzNt6iHN1Ub5af6of\nTdPG2nxx6Vj+HzaaTm1+nx/iyVj930ysbViPRrj45vL9SAuyc7j1efguqj+jd4/T33rD3HEcPj8O\n1GP8WOY/Z4TTT7sKadHhbcsZnaCJ3TPZk6VdrKbTutmP0U2nqgrGOsr8deiuI2X09EqKM1dt3uuG\nf/jdN/06/wAPE546S9rwud+Gaaf+XH8NMMPK2wGjAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAABrcRp4nDtRWPPHP8PCYusPoWSvNjtX1iYfPuWaXtX8MzCuvjfw32siu8ptXoxi\n0wy5t4YulReqmazu2skbquURWFInddM7VYRGyL291KFnCcfj8e0le/Lbmn8n0N4b2Ur4nHLWmPsY\n5e5a5+OXyXugBZmiY3iY9Xz7NjnTa3Ph/BeYj5PoTxftFg8Hjk2iOmWkW/Psrr418V5WrWd2faFc\nV2jdnEMXWxntupmN7NiYU27iWML6dVMVnddjgVqMsdHr+CW5uE6f4Rt+7yuSsTDv+zWXn0WTHP3L\n/tK+GHl+O0A1c4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8Dn93W56/wDM\nt/L3z59qp24jn+OS38lnpr4r7ZxHQ2TEstt3PXUrt27K57rr1VT0BjKnJPRbMqMs7QlV2fYvHvrd\nVknyrEfu9m8f7FZI8fVU85iJewbT45NfQBKo817W4eulzxHaZrL0rje09ItwqbfhtBVs3leai8RD\nKLw1sduesL606dWFdsZT1jdhNeq6K9DlhCVUU6s4jZnt1YzAhnM71dH2bycmszY/K1d/0c6OzY4R\nfwuK4p8rTstn6z8k7HrwGzkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHz3\nVxvr80/8y38voTwGpj/F5/8AqT/JfjTx/WVeyY6FPspc9dZPVXaOq2WEwIUTVRmjo2rNfLHRI3vZ\nDJycXtX8dZh7t879nsnhcbwz23tt+r6I2nxyb+gCVBzuPY/E4PqI9K7ui19fTxNBnp60n+Aj5/pJ\n3jZu1aOnnltMNussdfXbm+l3ZM9URHREdZVXTuT1Nk7boQiOkJw28PU47/htEp5eivJPLMTCZ9Vv\nx7mJ3iJ9UqNHk8XR4b+tIXuhxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD\nweqjbWZ4/wCZP8vePCaz/wDIaiP+Zb+UX408f0r9lOxWOifJhXWjfyYWllPRXYQxnrCrJHRd3YZI\n6A1NJecHEsN/S0T+76bE7xE+r5dk93LW3pL6ZpMni6PDf8VIn9m2fjm8s9rgFmQxvHNS0esbMiew\nPnHLyai9fS0w2aNfUTtrs3+uf5bGPqy068fF227KtSsdFlKqNGMV6myyY6sbdIQI8tlOWOi6Jhhk\nj3RD0vA8nicMx9etZmHRcT2Zyb6XNT8N9/2dt0T449T2AJVAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAHhdfG3E9TH9cvdPEcXjk4zqI/q3L8aeP6xr2TsxpLOekMK6mFo6qpXSrm\nOqBixvHSVmzC4OfqK7S9/wAByeLwbTW9K7fo8Fqo6Paeyl+fglI/Da0NcMPK7QC7AAB8313TiOf/\nAKk/y2MHWrX4jG3E9R/1Lfyv0/aFNOrHxuU7LI7MMayGTVlHWUXhNe6Z6wIUsb9d1m20q7dkDpez\nN9tRqKT5xEvRvKez9+Xis1/FSYerb5+OTyf6AFlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAB43j9eXjN/jWJ/Z7J5L2mry8Upb8VIF8f6aGOey2eynHvOy7bowrrYSxZSwQJ2YXZ\n92N4BoanrEvVexmTm4blr+HJ/aHltRHSXofYm/1Wrp5RaJaYY+X49WA0c4AD51xONuKan/qW/lbp\n+0MOLRtxbU/9SU4J7KadWPjep2WQrr2WRPRk1TvsndXMpiRCb9FNu0rbTuqvKBscCjfi9PhWZeue\nV9n434rafTHL1TfPxy+T/QAszAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHmv\navHtfTZfnV6VxPajHzcNrf8ABeJFs/XnMcr4no18c+6vr2YadkY2YM57sEDLyY37Mo7MMnYGlqO0\nvQ+xNfqNVb1tEfs87qZ2rL0/sVX/AHdnt65P7Q0wx8vx6UBo5wAHz/jUbcX1PT78qtO2vaCnJxjP\n8Zif2amnnspp04+OjWejKJ6MKdmcMmyJn4m5ZHzEVPMwtJv0VZLbQDqezcb8RzT6Y/7vUPM+ytZt\nn1OTyiIh6Ztn45N/6AFlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABocbxeLw\nnUR5xXm/Rvq8+OMuDJjntaswEeBxT0bNZ6NatZpNqz3rO0rqsdO3PxlaWEMpY+aqWXkryT0ZT2V3\n7A0dVPuy9f7G124NM/iyT/Z4zWT7sw957MYfB4Fp4/FE2/WWmGHldcBowAAeM9qKcvFeb8VIly9P\n0nq7ntbTbVYL+tJj93CwT76unR4/jo0nozhhTsy3Y1sWljM9Ce7HyQIm3RRlttVbaWrnt0Sh6n2U\nx8vD8mSfv3/h3XN4Bi8Lg2nj8Uc36y6TeOPXugCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAPD8RxeBxXUU26Tbmj8+quro+02Lw+I4ssdslNvzhzazvDPbq8d7GW7Dfqz2VzG\n0s2qd+iu/Zn5Ksk9BVztX1mI8930zh2LwOHabH+HHWP2fNYp4+vwYvxXiP3fUqxtWIjyjZtj45/L\nfaQFmQADzftfj3w6fJ6WmHmsP23rvaqnNwqLfhvEvIYZ+sV038bo0noy36MK9oZQxrdMyrlnMbMZ\nQKrS1M07zEestq/RRjr4utwY/wAV4j91p9V18fQdJj8LR4ccfdpEfsuREbREJbuMAAAAAAAAAAAA\nBAJAAAAEAJEAJQAJQAJEAJQAJQAJEACUJAQlAJEAJQAJQJAAAEAJEAJBAAAJAABAJEJAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwvanDzaPFmjvjv8A\ntLztJ3h7HjGHx+FainnFeaPnHV4vFbeIU038VbHeGF+kso7Mb9mTdhKnLK3dRm7SIrHhGPxeP6Sv\n9cT/AHfSnz72Zx+J7Q45/BWZ/Z9BbZ+OXyfQBZQABzeP4/E4NqI9Ii36S8Ng/wAx9C4jTxOH6ivr\njn+Hz3B/mQi/GvjdCnWNlsdI2V07LIlg6USrt2ZzZXMoFV+zPhGLxeOaavpbm/RVltEN72Yx+Jxm\nb7dKUmf7L5+s9/HtRA2cqRACRACRACRACUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQCQQCRACRACRCQBCQBCQB\nACRACRACRACRACL1i9LVntMbPATTwdRkxT3pea/u+gPE8Xx+DxrPHlaYt+qNfGvjvtXXsi0dOrKk\ndEXjZg6VMtbP2bMtXUdpEV0/Y2nNxbNf8OP+727xvsXH+N1U/wBEfy9k3nxyb+gCVQAGOWvNivX1\nrMPnGGOXNNfOJ2fSZ6w+dZKeHxDPX8N7R+6L8a+L63KdoZ7q6zvEMpnowdKJ6ywmWUyqvIKM0vQ+\nx+D6rU55+9aKx+TzWa36vbezmDwODYenW+95/Nphj5L6dQBo5wAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAEiAAAEoA\nAAAAAAAAAAAAAEAkEAkRuAkQbgkQAkQAkQAkQAl5T2nx8nEMOT8dNv0l6pwfarHvpcGWPu32/WCr\nYvK4mOem6b9mGKd4Z3idmFdka0y1c892zfpMtLPaNpEV6D2Kj/Eauf6YeweQ9ieuTVz8K/3evbT4\n5NfQBKoAA8FxCvJxrUx/XMvevD8Zry8fz/Haf2RfjTx/6RSOnRMyypHu9kXjowrqVSrvPRnZVl6V\nkK0775MsUjvadn0nT4ow6bFijtSsVfPuFYvpPGtNTy54mfy6vorXDm8l9pEC7JIgBIgBIgBIgBIg\nBIgBIhIAgBIhIAgBIgBIIBIAAhIAhIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAAAAAAAAAAAAA\nAAAAAAAAABAJQkAEAAAAAAAAAAjc3BIjdG4Mkbo5kcwMjdhzHMDPc3V8xzAs3N1fMjmBZubq+Y5g\nWbm6vmOYFm5ur5jmBZubq+Y5gWbm6vmOYFm5ur5jmBZubq+Y5gWbm6vmTzAz3N2HMnmBlu5ftFTx\nOEZJ/DMW/d0t2rxKni8N1FPWkiZ9eS08e7Cy8dGGn6UhZaJljXZGnmc3UT3dPP2cnUT78xCIV6j2\nH/8A9c/6f7vXPI+w8bU1U+vL/d63du5NfUiDcVSIAS8b7RV5eOb/AIqRL2TyXtNX/e2KfXH/AHlF\n+NPH/pr4+2xcxx0hFpY11K7R16KM32ZWz3UaidqSgrc9kcPicWyZJjfw6T+727y3sXh2xarN+K0V\nh6lvPjj3e0ASqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJQAAAAAkQAkQAkAAAAAAAAAAAAAAA\nEgAAAAAAAAAAAAAAAAAAAAAgAAABKDcAN0bgkY8xzAyRux5kcwM9zdXNkTcFm6OZXzMeYFvMibKu\nZHMC2bo51U2RuC2bom6rc3BZzom6sBZzI52ADPnOdggFnMc6skFnMc6rc3BbznOp3RzAv50c6nml\nHMC/nOf4qOY5wX85zqOc5wbHOc7X5znBsc6edr85zg2ec52vzpi4NjmY5bROG+/bllVzsNTk5dLl\nn0pP8BHmMHWNmzt0aum8obm08vVjfrtnxztR0mXHzTvaZdjVRMTLkZo6yiFen9iZ2pqY/wBP93rN\n3kPY+/LfPX1rE/u9XzN3HfqzdO6vmTuIZ7m7Hc3Bnu8t7TR/vHBP9E/y9Pu837SV31umn+if5Rfi\n/j/01MMb1hjkrtKzBG0bMsmOZY11tOYamr6Und0LUc7XT7u3rJPqL8er9lcPhcFpbzyWm39v7O00\n+FYvA4Zpsc94xxu227jv1IAgAAAAAAAAABKAAAASgASgBIgBIgBIgBIhIAAAAAAAAAAAAAAAAAAC\nUACUJAAAAAAAAAAAABIAAAAAAAAAAAAAAAAAAAAg3AEbomQZbo3YzLGbAz3RNlc3YzcFs2YzdVN2\nM2Bdzom6nmNwW86JurTAMuY3REJ2BB1ZRVMVBhsbSsiqeUFXLucq3lTygp5TlXcpygp5TlXcpygp\n5TlXcqOUFXKjlXcrGYBXysdlswiYBVMdUTCyY6sZBWxlnMMZgGLGZZSwkDdHMiWO4MuY5mEyjcFn\nN1OdVzHMC3nTzqeY5gX85zqOZPMC+Lqdbk20eb/RKOZr8QybaK/XvtH7iZ9aGlp2luzT3fg19NHS\nOjbmPcYX67XH1XSZ9XIzRvMuzrK7zLkZYmYnciunb9lZ5dTk+OP+71cXeP8AZnJ/ip2nf3J/l6iL\n/Fu5L9bMWZczXi6YuIbEWTzKIuyiwLt3nuO25uI4a/hx7/rLuczg8TicvFLbfdpEK6+NPH/phhjo\nstLGkctUWnoxrrU3j1cnWTzZq1jzl1clo5Zcu8c+txR63iP3Tn6pv4+g4o5cVI9IiGe7CJ2iE7t3\nGyN2O6dwSINwSISAlAAlACRAAlAAlACRACRCQAAAAAAAAAASgASISAAAAAAAAAAAAACQAAAAAAAA\nAAAAAASAAAAAAAAAAAAAAAAIAAAQCAJljuljsCJlhMs9mOwMJYys5TkBVsjZdyHICrZPKt5E8oK4\nqmKrOVOwMIqyirPY2Bjyp2ZbAI2NmSARsbMgEbI2ZAMdjZICNkbMkSCNmOzJEgx2YyzljMAwlhKy\nWEwCuWErJhhMArlhLOWEgxljMpljIImWMyTKJA3N0IBO5vux3NwZbnMx3NwZczT4jf3MdPW27a3a\nfJOq1XNP2KdIRfi+J2trSYfcjeF+Wm1OicVeWIiN9kai8xjY12ORqultnI1Ecsujq79XP1FovWYI\nrTgeq+j8QrWZ+3Mx+r2UXeC0WG2Ti2kiN5mL807eUREvbzbaejefHJv62Iv8WUXa0WTFhVtRdlF2\nrz9WUXBtc7jR9dqc2T1ttHyhvZMvJitb0jdq6XHNcNenWVN3028U99WRj6Kb02be3Tq18/SN2Lpc\n3UdN9nOmZrqKX/DaJ/d0svvTLRzV3jomK6+Pd1vvWJj0ZczT0mXxNJht60hfFnQ4qu3N1cWTEgs3\nTur5k7gz3N2O5uDM3Y7m4MtxBuCQASIASIASAAAAAAACRCQAAAAAAAAEoSAAAAAAAAAAAlAAlCQA\nAAAAAAAAAAASAAAAAAAAAAAAIASgAAAEJAQJQCNkbMgGOyOVnsAw5TlZ7GwMOVPKy2NgY7GzIBGx\nskA2AAAAAAAAAAQkBAEghEskAxYzDPZGwK5hjMLJhjMAqmGEwumrCagomFcw2JqqtUFEsLLrV82F\no7gqljKyYYTGwMZRKUSCAQAboJnaN5Bjkneu0d5W4ccViIiOzHFWbTzNumP1Zarr8eeRMbxDW1Mx\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], + "mappings": "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,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC4FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GE/UjB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,8BAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,yBAAA,IAAA,GAAA,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KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IC6DR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GExTjB,GAAY,IAAZ,AAAA,UAAY,EAAQ,CAClB,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,UAAA,GAAA,cALU,IAAA,IAAQ,KASpB,GAAY,IAAZ,AAAA,UAAY,EAAiB,CAC3B,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,MAA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,EAAiB,IAAuB,CAC/D,GAAM,GAA2B,EAC3B,CAAC,KAAA,GAAQ,EACf,MAAO,CAAC,MAAO,IAAM,GAAM,EAAI,MCItB,GAA2C,CACtD,WAAY,GACZ,aAAc,CAAC,cACf,SAAU,CAAC,EAAY,IAAmB,CACxC,GAAM,CAAC,GAAc,EAKrB,MAAO,CAAC,EAHK,IACJ,GAAoB,EAAI,MAMrC,YAA+C,EAAM,EAAiB,CAIpE,GAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GACvB,EAAa,GAAa,EAAS,GAAO,EAAG,UAC3C,EAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCpOnB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,WAAA,IAAA,GAAA,OAAA,IAAA,GAAA,SAAA,I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BACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,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G,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MAC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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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", "names": [] } diff --git a/dist/human.js b/dist/human.js index 203e46c5..484938e9 100644 --- a/dist/human.js +++ b/dist/human.js @@ -5,31 +5,31 @@ author: ' */ -var Human=(()=>{var f8=Object.create,mh=Object.defineProperty,m8=Object.getPrototypeOf,A8=Object.prototype.hasOwnProperty,y8=Object.getOwnPropertyNames,g8=Object.getOwnPropertyDescriptor;var Z1=e=>mh(e,"__esModule",{value:!0});var Eg=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),er=(e,t)=>{for(var n in t)mh(e,n,{get:t[n],enumerable:!0})},x8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of y8(t))!A8.call(e,r)&&r!=="default"&&mh(e,r,{get:()=>t[r],enumerable:!(n=g8(t,r))||n.enumerable});return e},Ah=e=>x8(Z1(mh(e!=null?f8(m8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var Rg=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},ve=(e,t,n)=>(Rg(e,t,"read from private field"),n?n.call(e):t.get(e)),ea=(e,t,n,r)=>(Rg(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var _6=Eg(w6=>{Z1(w6);er(w6,{MediaPipeFaceMesh:()=>_2,load:()=>Tae});var _2=class{constructor(t,n,r,a){this.facePipeline=new w2(t,n,r),this.config=a}async estimateFaces(t,n){let r=await this.facePipeline.predict(t,n),a=[];for(let s of r||[]){if(s.isDisposedInternal)continue;let i=s.coords?s.coords.arraySync():[],o=i.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),l={};if(i&&i.length>0)for(let h of Object.keys(Gr))l[h]=Gr[h].map(d=>i[d]);let u=s.box?[Math.max(0,s.box.startPoint[0]),Math.max(0,s.box.startPoint[1]),Math.min(t.shape[1],s.box.endPoint[0])-s.box.startPoint[0],Math.min(t.shape[2],s.box.endPoint[1])-s.box.startPoint[1]]:0,c=s.box?[Math.max(0,s.box.startPoint[0]/t.shape[2]),Math.max(0,s.box.startPoint[1]/t.shape[1]),Math.min(t.shape[1],s.box.endPoint[0]-s.box.startPoint[0])/t.shape[2],Math.min(t.shape[2],s.box.endPoint[1]-s.box.startPoint[1])/t.shape[1]]:[];a.push({confidence:s.faceConfidence||s.boxConfidence||0,boxConfidence:s.boxConfidence,faceConfidence:s.faceConfidence,box:u,mesh:i,boxRaw:c,meshRaw:o,annotations:l,image:s.image?s.image.clone():null}),s.coords&&s.coords.dispose(),s.image&&s.image.dispose()}return a}},Mi=[null,null,null];async function Tae(e){Mi=await Promise.all([!Mi[0]&&e.face.enabled?p6(e):null,!Mi[1]&&e.face.mesh.enabled?Ft(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!Mi[2]&&e.face.iris.enabled?Ft(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new _2(Mi[0],Mi[1],Mi[2],e);return e.face.mesh.enabled&&e.debug&&Ce(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&Ce(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}w6.triangulation=Fi});var g0=Eg(U2=>{Z1(U2);er(U2,{NUM_KEYPOINTS:()=>Mae,connectedPartIndices:()=>Dae,partChannels:()=>zae,partIds:()=>H2,partNames:()=>Fae,poseChain:()=>Oae});var Fae=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],Mae=U2.partNames.length,H2=U2.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),$ae=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Dae=$ae.map(([e,t])=>[H2[e],H2[t]]),Oae=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],zae=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});var rse={};er(rse,{Human:()=>yg,default:()=>yg});function Ce(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function Fg(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var yh={};er(yh,{Abs:()=>Zi,Acos:()=>Yi,Acosh:()=>Ji,AdadeltaOptimizer:()=>Ud,AdagradOptimizer:()=>Hd,AdamOptimizer:()=>jd,AdamaxOptimizer:()=>Gd,Add:()=>Na,AddN:()=>os,All:()=>vh,Any:()=>kh,ArgMax:()=>ls,ArgMin:()=>lu,Asin:()=>Qi,Asinh:()=>eo,Atan:()=>to,Atan2:()=>ro,Atanh:()=>no,AvgPool:()=>us,AvgPool3D:()=>uu,AvgPool3DGrad:()=>Ih,AvgPoolGrad:()=>Nh,BackendWasm:()=>x3,BatchMatMul:()=>cs,BatchToSpaceND:()=>cu,Bincount:()=>Sh,BroadcastTo:()=>qg,Callback:()=>cv,CallbackList:()=>l7,Cast:()=>hs,Ceil:()=>ds,ClipByValue:()=>Ia,Complex:()=>Th,ComplexAbs:()=>hu,Concat:()=>ao,Conv2D:()=>ps,Conv2DBackpropFilter:()=>Ch,Conv2DBackpropInput:()=>fs,Conv3D:()=>du,Conv3DBackpropFilterV2:()=>Eh,Conv3DBackpropInputV2:()=>Rh,Cos:()=>ms,Cosh:()=>so,CropAndResize:()=>io,Cumsum:()=>As,CustomCallback:()=>c7,DataStorage:()=>xh,DenseBincount:()=>Fh,DepthToSpace:()=>oo,DepthwiseConv2dNative:()=>ys,DepthwiseConv2dNativeBackpropFilter:()=>Mh,DepthwiseConv2dNativeBackpropInput:()=>$h,Diag:()=>Dh,Dilation2D:()=>pu,Dilation2DBackpropFilter:()=>zh,Dilation2DBackpropInput:()=>Oh,ENV:()=>fr,EarlyStopping:()=>dv,Elu:()=>lo,EluGrad:()=>Ph,Environment:()=>jg,Equal:()=>co,Erf:()=>uo,Exp:()=>xs,ExpandDims:()=>ho,Expm1:()=>po,FFT:()=>Lh,Fill:()=>fu,FlipLeftRight:()=>fo,Floor:()=>ws,FloorDiv:()=>_s,FromPixels:()=>ed,FusedBatchNorm:()=>bs,FusedConv2D:()=>ei,FusedDepthwiseConv2D:()=>ti,GPGPUContext:()=>up,GatherNd:()=>Ao,GatherV2:()=>mo,GraphModel:()=>Vv,Greater:()=>yo,GreaterEqual:()=>vs,History:()=>u7,IFFT:()=>Wh,Identity:()=>ks,Imag:()=>Bh,InputSpec:()=>Kt,IsFinite:()=>go,IsInf:()=>xo,IsNan:()=>wo,KernelBackend:()=>su,LRN:()=>yu,LRNGrad:()=>Uh,LayerVariable:()=>r7,LayersModel:()=>ha,LeakyRelu:()=>Ns,Less:()=>_o,LessEqual:()=>bo,LinSpace:()=>Vh,Log:()=>Is,Log1p:()=>vo,LogSoftmax:()=>Xg,LogicalAnd:()=>ko,LogicalNot:()=>mu,LogicalOr:()=>Au,MathBackendCPU:()=>Zd,MathBackendWebGL:()=>El,Max:()=>Ss,MaxPool:()=>Cs,MaxPool3D:()=>gu,MaxPool3DGrad:()=>jh,MaxPoolGrad:()=>Hh,MaxPoolWithArgmax:()=>Gh,Maximum:()=>Ts,Mean:()=>Es,Min:()=>Rs,Minimum:()=>Fs,MirrorPad:()=>xu,Mod:()=>No,MomentumOptimizer:()=>qd,Multinomial:()=>qh,Multiply:()=>Ms,Neg:()=>Io,NonMaxSuppressionV3:()=>To,NonMaxSuppressionV4:()=>Co,NonMaxSuppressionV5:()=>Eo,NotEqual:()=>So,OP_SCOPE_SUFFIX:()=>s5,OneHot:()=>$s,OnesLike:()=>Ro,Optimizer:()=>oa,Pack:()=>Fo,PadV2:()=>Ds,Pool:()=>Ck,Pow:()=>Os,Prelu:()=>zs,Prod:()=>Mo,RMSPropOptimizer:()=>Xd,RNN:()=>Hr,Range:()=>wu,Rank:()=>uf,Real:()=>Xh,RealDiv:()=>gs,Reciprocal:()=>$o,Reduction:()=>pn,Relu:()=>Ps,Relu6:()=>Ws,Reshape:()=>Do,ResizeBilinear:()=>Ls,ResizeBilinearGrad:()=>Zh,ResizeNearestNeighbor:()=>_u,ResizeNearestNeighborGrad:()=>Kh,Reverse:()=>Bs,RotateWithOffset:()=>Ko,Round:()=>Vs,Rsqrt:()=>Us,SGDOptimizer:()=>ec,ScatterNd:()=>Oo,Select:()=>zo,Selu:()=>Po,Sequential:()=>Wl,Sigmoid:()=>js,Sign:()=>Bo,Sin:()=>Hs,Sinh:()=>Wo,Slice:()=>Lo,Softmax:()=>Xs,Softplus:()=>Vo,SpaceToBatchND:()=>bu,SparseToDense:()=>Yh,SplitV:()=>Uo,Sqrt:()=>Gs,Square:()=>vu,SquaredDifference:()=>Ks,Step:()=>Ta,StridedSlice:()=>Ho,Sub:()=>Zs,Sum:()=>qs,SymbolicTensor:()=>kr,Tan:()=>jo,Tanh:()=>Ys,Tensor:()=>Ue,TensorBuffer:()=>Ot,Tile:()=>Sa,TopK:()=>Go,Transform:()=>Jh,Transpose:()=>Js,Unique:()=>Qh,Unpack:()=>qo,UnsortedSegmentSum:()=>ku,Variable:()=>Ru,ZerosLike:()=>Xo,_FusedMatMul:()=>Qs,abs:()=>zt,acos:()=>Df,acosh:()=>Of,add:()=>se,addN:()=>Ma,all:()=>dd,any:()=>Ou,argMax:()=>zu,argMin:()=>zf,asin:()=>Pf,asinh:()=>Lf,atan:()=>Wf,atan2:()=>Bf,atanh:()=>Vf,avgPool:()=>Lu,avgPool3d:()=>jf,backend:()=>W5,backend_util:()=>R,basicLSTMCell:()=>oI,batchNorm:()=>li,batchNorm2d:()=>H5,batchNorm3d:()=>j5,batchNorm4d:()=>G5,batchToSpaceND:()=>Wu,bincount:()=>q5,booleanMaskAsync:()=>dC,broadcastTo:()=>Bu,browser:()=>rl,buffer:()=>We,callbacks:()=>Fne,cast:()=>me,ceil:()=>Gf,clipByValue:()=>vn,clone:()=>Rr,complex:()=>Ca,concat:()=>st,concat1d:()=>X5,concat2d:()=>ll,concat3d:()=>K5,concat4d:()=>Z5,constraints:()=>E3,conv1d:()=>fd,conv2d:()=>ra,conv2dTranspose:()=>md,conv3d:()=>Xf,conv3dTranspose:()=>CI,copyRegisteredKernels:()=>Fk,cos:()=>Vu,cosh:()=>Ad,cosineWindow:()=>_m,cumsum:()=>yd,customGrad:()=>$r,data:()=>Uv,denseBincount:()=>J5,deprecationWarn:()=>Mf,depthToSpace:()=>Kf,depthwiseConv2d:()=>ul,deregisterOp:()=>$ne,device_util:()=>Mu,diag:()=>zI,dilation2d:()=>Zf,disableDeprecationWarnings:()=>_N,dispose:()=>Ee,disposeVariables:()=>bN,div:()=>ge,divNoNan:()=>Yf,dot:()=>Q5,dropout:()=>wx,elu:()=>cl,enableDebugMode:()=>wN,enableProdMode:()=>xN,enclosingPowerOfTwo:()=>_x,engine:()=>Fr,env:()=>J,equal:()=>Da,erf:()=>Jf,exp:()=>qn,expandDims:()=>hn,expm1:()=>Qf,eye:()=>em,fft:()=>Ju,fill:()=>Uu,findBackend:()=>$f,findBackendFactory:()=>TN,floor:()=>hl,floorDiv:()=>hd,forceHalfFloat:()=>F_,fused:()=>La,gather:()=>ui,gatherND:()=>xx,gather_util:()=>If,getBackend:()=>IN,getGradient:()=>sf,getKernel:()=>td,getKernelsForBackend:()=>Yo,gpgpu_util:()=>n_,grad:()=>dS,grads:()=>pS,greater:()=>ar,greaterEqual:()=>za,ifft:()=>Al,imag:()=>gd,image:()=>Je,inTopKAsync:()=>vC,initializers:()=>z3,input:()=>Z3,io:()=>bn,irfft:()=>$d,isFinite:()=>ex,isInf:()=>tx,isNaN:()=>nx,keep:()=>Gt,kernel_impls:()=>Pr,layers:()=>K3,leakyRelu:()=>Hu,less:()=>xd,lessEqual:()=>ci,linalg:()=>Mx,linspace:()=>rx,loadGraphModel:()=>Ft,loadLayersModel:()=>Jte,localResponseNormalization:()=>tm,log:()=>Mn,log1p:()=>wd,logSigmoid:()=>sx,logSoftmax:()=>bd,logSumExp:()=>am,logicalAnd:()=>sr,logicalNot:()=>ju,logicalOr:()=>vd,logicalXor:()=>ux,losses:()=>WE,matMul:()=>Ge,math:()=>_5,max:()=>Xn,maxPool:()=>Gu,maxPool3d:()=>sm,maxPoolWithArgmax:()=>cx,maximum:()=>Dr,mean:()=>kt,memory:()=>cd,metrics:()=>ov,min:()=>pl,minimum:()=>fl,mirrorPad:()=>im,mod:()=>om,model:()=>Zte,models:()=>lv,moments:()=>kd,movingAverage:()=>mC,mul:()=>P,multiRNNCell:()=>VS,multinomial:()=>hx,neg:()=>vt,nextFrame:()=>Kd,norm:()=>Pd,notEqual:()=>di,oneHot:()=>nl,ones:()=>Or,onesLike:()=>$n,op:()=>O,outerProduct:()=>qS,pad:()=>aa,pad1d:()=>ZS,pad2d:()=>JS,pad3d:()=>eT,pad4d:()=>nT,pool:()=>dx,pow:()=>sa,prelu:()=>Xu,print:()=>m5,prod:()=>Nd,profile:()=>gr,rand:()=>hT,randomGamma:()=>mT,randomNormal:()=>px,randomUniform:()=>ml,range:()=>Id,ready:()=>NN,real:()=>Ku,reciprocal:()=>cm,registerBackend:()=>sl,registerCallbackConstructor:()=>Qte,registerGradient:()=>Kg,registerKernel:()=>ni,registerOp:()=>Mne,regularizers:()=>uv,relu:()=>zr,relu6:()=>Sd,removeBackend:()=>SN,reshape:()=>G,reverse:()=>Dn,reverse1d:()=>kT,reverse2d:()=>IT,reverse3d:()=>TT,reverse4d:()=>ET,rfft:()=>Qu,round:()=>hm,rsqrt:()=>Td,scalar:()=>be,scatterND:()=>gx,scatter_util:()=>Sf,selu:()=>Cd,separableConv2d:()=>dm,sequential:()=>Yte,serialization:()=>re,setBackend:()=>kN,setPlatform:()=>CN,setWasmPath:()=>qZ,setWasmPaths:()=>XZ,setWebGLContext:()=>sp,setdiff1dAsync:()=>fx,shared:()=>Nm,sigmoid:()=>Fn,sign:()=>pm,signal:()=>LE,sin:()=>Ed,sinh:()=>Rd,slice:()=>Re,slice1d:()=>Fd,slice2d:()=>fm,slice3d:()=>Md,slice4d:()=>Zu,slice_util:()=>cn,softmax:()=>Yu,softplus:()=>dl,spaceToBatchND:()=>qu,sparseToDense:()=>wm,spectral:()=>PE,split:()=>Lt,sqrt:()=>en,square:()=>lt,squaredDifference:()=>Dd,squeeze:()=>Pa,stack:()=>dn,step:()=>yl,stridedSlice:()=>mm,sub:()=>ye,sum:()=>Te,sumOutType:()=>sd,tan:()=>Am,tanh:()=>ol,tensor:()=>yr,tensor1d:()=>on,tensor2d:()=>Nn,tensor3d:()=>ld,tensor4d:()=>nC,tensor5d:()=>rC,tensor6d:()=>aC,tensor_util:()=>mr,test_util:()=>z5,tidy:()=>B,tile:()=>Oa,time:()=>vN,topk:()=>ym,train:()=>fi,transpose:()=>at,truncatedNormal:()=>Od,unique:()=>zd,unregisterGradient:()=>Rk,unregisterKernel:()=>Ek,unsortedSegmentSum:()=>gm,unstack:()=>ir,upcastType:()=>rr,util:()=>v,valueAndGrad:()=>fS,valueAndGrads:()=>mS,variable:()=>mx,variableGrads:()=>ax,version:()=>xae,version_converter:()=>Mre,version_core:()=>gN,version_cpu:()=>uw,version_layers:()=>HA,version_wasm:()=>_3,version_webgl:()=>R_,webgl:()=>hL,webgl_util:()=>Ew,where:()=>kn,whereAsync:()=>xm,zeros:()=>Et,zerosLike:()=>He});var w8=Object.create,gh=Object.defineProperty,_8=Object.getPrototypeOf,b8=Object.prototype.hasOwnProperty,v8=Object.getOwnPropertyNames,k8=Object.getOwnPropertyDescriptor,N8=e=>gh(e,"__esModule",{value:!0}),et=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ze=(e,t)=>{for(var n in t)gh(e,n,{get:t[n],enumerable:!0})},I8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of v8(t))!b8.call(e,r)&&r!=="default"&&gh(e,r,{get:()=>t[r],enumerable:!(n=k8(t,r))||n.enumerable});return e},qi=e=>I8(N8(gh(e!=null?w8(_8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),S8=et(()=>{}),T8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),C8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),E8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),R8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),F8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),M8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y1=et(()=>{}),$8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=T8(),r=C8(),a=E8(),s=R8(),i=F8(),o=M8(),l=$8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),O8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),z8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),P8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),L8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),W8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),B8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),V8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=O8(),r=z8(),a=P8(),s=L8(),i=W8(),o=B8(),l=V8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),au=et(()=>{}),H8=et(()=>{}),j8=et(()=>{}),G8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};function s(){return Q.buffer!=Be&&Jt(Q.buffer),yn}function i(){return Q.buffer!=Be&&Jt(Q.buffer),_t}function o(){return Q.buffer!=Be&&Jt(Q.buffer),gn}function l(){return Q.buffer!=Be&&Jt(Q.buffer),Hn}function u(){return Q.buffer!=Be&&Jt(Q.buffer),un}var c=typeof a!="undefined"?a:{},h,d;c.ready=new Promise(function(N,C){h=N,d=C});var p={},f;for(f in c)c.hasOwnProperty(f)&&(p[f]=c[f]);var m=[],A="./this.program",y=function(N,C){throw C},g=!1,_=!1,b=!1,w=!1;g=typeof window=="object",_=typeof importScripts=="function",b=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!g&&!b&&!_;var x=c.ENVIRONMENT_IS_PTHREAD||!1;x&&(Be=c.buffer);var I="";function S(N){return c.locateFile?c.locateFile(N,I):I+N}var T,M,D,z,W,U;if(b){_?I=au().dirname(I)+"/":I=__dirname+"/",T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C},process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(N){if(!(N instanceof ru))throw N}),process.on("unhandledRejection",Yr),y=function(N){process.exit(N)},c.inspect=function(){return"[Emscripten Module object]"};var H;try{H=H8()}catch(N){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),N}global.Worker=H.Worker}else w?(typeof read!="undefined"&&(T=function(N){return read(N)}),D=function(N){var C;return typeof readbuffer=="function"?new Uint8Array(readbuffer(N)):(C=read(N,"binary"),pe(typeof C=="object"),C)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(y=function(N){quit(N)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(g||_)&&(_?I=self.location.href:typeof document!="undefined"&&document.currentScript&&(I=document.currentScript.src),typeof r!="undefined"&&r&&(I=r),I.indexOf("blob:")!==0?I=I.substr(0,I.lastIndexOf("/")+1):I="",b?(T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C}):(T=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.send(null),C.responseText},_&&(D=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),M=function(N,C,L){var q=new XMLHttpRequest;q.open("GET",N,!0),q.responseType="arraybuffer",q.onload=function(){if(q.status==200||q.status==0&&q.response){C(q.response);return}L()},q.onerror=L,q.send(null)}),z=function(N){document.title=N});b&&typeof performance=="undefined"&&(global.performance=j8().performance);var X=c.print||console.log.bind(console),j=c.printErr||console.warn.bind(console);for(f in p)p.hasOwnProperty(f)&&(c[f]=p[f]);p=null,c.arguments&&(m=c.arguments),c.thisProgram&&(A=c.thisProgram),c.quit&&(y=c.quit);var ee=Atomics.load,Y=Atomics.store,ae=Atomics.compareExchange,te;c.wasmBinary&&(te=c.wasmBinary);var ie=c.noExitRuntime||!0;typeof WebAssembly!="object"&&Yr("no native wasm support detected");var Q,he,oe=!1,fe;function pe(N,C){N||Yr("Assertion failed: "+C)}function ke(N){var C=c["_"+N];return pe(C,"Cannot call unknown function "+N+", make sure it is exported"),C}function Ie(N,C,L,q,de){var le={string:function(_n){var Gi=0;if(_n!=null&&_n!==0){var Cg=(_n.length<<2)+1;Gi=Ui(Cg),nt(_n,Gi,Cg)}return Gi},array:function(_n){var Gi=Ui(_n.length);return Ze(_n,Gi),Gi}};function ue(_n){return C==="string"?$e(_n):C==="boolean"?Boolean(_n):_n}var we=ke(N),rt=[],Ht=0;if(q)for(var $t=0;$t=q);){var le=N[C++];if(!le)return de;if(!(le&128)){de+=String.fromCharCode(le);continue}var ue=N[C++]&63;if((le&224)==192){de+=String.fromCharCode((le&31)<<6|ue);continue}var we=N[C++]&63;if((le&240)==224?le=(le&15)<<12|ue<<6|we:le=(le&7)<<18|ue<<12|we<<6|N[C++]&63,le<65536)de+=String.fromCharCode(le);else{var rt=le-65536;de+=String.fromCharCode(55296|rt>>10,56320|rt&1023)}}return de}function $e(N,C){return N?Oe(i(),N,C):""}function tt(N,C,L,q){if(!(q>0))return 0;for(var de=L,le=L+q-1,ue=0;ue=55296&&we<=57343){var rt=N.charCodeAt(++ue);we=65536+((we&1023)<<10)|rt&1023}if(we<=127){if(L>=le)break;C[L++]=we}else if(we<=2047){if(L+1>=le)break;C[L++]=192|we>>6,C[L++]=128|we&63}else if(we<=65535){if(L+2>=le)break;C[L++]=224|we>>12,C[L++]=128|we>>6&63,C[L++]=128|we&63}else{if(L+3>=le)break;C[L++]=240|we>>18,C[L++]=128|we>>12&63,C[L++]=128|we>>6&63,C[L++]=128|we&63}}return C[L]=0,L-de}function nt(N,C,L){return tt(N,i(),C,L)}function ot(N){for(var C=0,L=0;L=55296&&q<=57343&&(q=65536+((q&1023)<<10)|N.charCodeAt(++L)&1023),q<=127?++C:q<=2047?C+=2:q<=65535?C+=3:C+=4}return C}function Ze(N,C){s().set(N,C)}function pt(N,C){return N%C>0&&(N+=C-N%C),N}var Be,yn,_t,Un,Yt,gn,Hn,Rn,un;function Jt(N){Be=N,c.HEAP8=yn=new Int8Array(N),c.HEAP16=Un=new Int16Array(N),c.HEAP32=gn=new Int32Array(N),c.HEAPU8=_t=new Uint8Array(N),c.HEAPU16=Yt=new Uint16Array(N),c.HEAPU32=Hn=new Uint32Array(N),c.HEAPF32=Rn=new Float32Array(N),c.HEAPF64=un=new Float64Array(N)}var Tr=c.INITIAL_MEMORY||16777216;if(x)Q=c.wasmMemory,Be=c.buffer;else if(c.wasmMemory)Q=c.wasmMemory;else if(Q=new WebAssembly.Memory({initial:Tr/65536,maximum:2147483648/65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),b&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(Be=Q.buffer),Tr=Be.byteLength,Jt(Be);var Jn,Qn=[],Aa=[],Kr=[],ya=[],Di=[],pr=!1,Gc=!1;x||Aa.push({func:function(){lh()}}),x&&(pr=!0);function D0(){if(!x){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Kc(c.preRun.shift());zi(Qn)}}function qc(){pr=!0,zi(Aa)}function O0(){x||zi(Kr)}function Xc(){x||(Gc=!0)}function xn(){if(!x){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)z0(c.postRun.shift());zi(Di)}}function Kc(N){Qn.unshift(N)}function z0(N){Di.unshift(N)}var Zr=0,ga=null,ns=null;function P0(N){pe(!x,"addRunDependency cannot be used in a pthread worker"),Zr++,c.monitorRunDependencies&&c.monitorRunDependencies(Zr)}function L0(N){if(Zr--,c.monitorRunDependencies&&c.monitorRunDependencies(Zr),Zr==0&&(ga!==null&&(clearInterval(ga),ga=null),ns)){var C=ns;ns=null,C()}}c.preloadedImages={},c.preloadedAudios={};function Yr(N){c.onAbort&&c.onAbort(N),x&&console.error("Pthread aborting at "+new Error().stack),N+="",j(N),oe=!0,fe=1,N="abort("+N+"). Build with -s ASSERTIONS=1 for more info.";var C=new WebAssembly.RuntimeError(N);throw d(C),C}function Zc(N,C){return String.prototype.startsWith?N.startsWith(C):N.indexOf(C)===0}var Oi="data:application/octet-stream;base64,";function Yc(N){return Zc(N,Oi)}var W0="file://";function Jc(N){return Zc(N,W0)}var wn="tfjs-backend-wasm-threaded-simd.wasm";Yc(wn)||(wn=S(wn));function B0(N){try{if(N==wn&&te)return new Uint8Array(te);if(D)return D(N);throw"both async and sync fetching of the wasm failed"}catch(C){Yr(C)}}function Qc(){if(!te&&(g||_)){if(typeof fetch=="function"&&!Jc(wn))return fetch(wn,{credentials:"same-origin"}).then(function(N){if(!N.ok)throw"failed to load wasm binary file at '"+wn+"'";return N.arrayBuffer()}).catch(function(){return B0(wn)});if(M)return new Promise(function(N,C){M(wn,function(L){N(new Uint8Array(L))},C)})}return Promise.resolve().then(function(){return B0(wn)})}function V0(){var N={a:F1};function C(ue,we){var rt=ue.exports;if(c.asm=rt,Jn=c.asm.F,he=we,!x){var Ht=Ne.unusedWorkers.length;Ne.unusedWorkers.forEach(function($t){Ne.loadWasmModuleToWorker($t,function(){--Ht||L0("wasm-instantiate")})})}}x||P0("wasm-instantiate");function L(ue){C(ue.instance,ue.module)}function q(ue){return Qc().then(function(we){return WebAssembly.instantiate(we,N)}).then(ue,function(we){j("failed to asynchronously prepare wasm: "+we),Yr(we)})}function de(){return!te&&typeof WebAssembly.instantiateStreaming=="function"&&!Yc(wn)&&!Jc(wn)&&typeof fetch=="function"?fetch(wn,{credentials:"same-origin"}).then(function(ue){var we=WebAssembly.instantiateStreaming(ue,N);return we.then(L,function(rt){return j("wasm streaming compile failed: "+rt),j("falling back to ArrayBuffer instantiation"),q(L)})}):q(L)}if(c.instantiateWasm)try{var le=c.instantiateWasm(N,C);return le}catch(ue){return j("Module.instantiateWasm callback failed with error: "+ue),!1}return de().catch(d),{}}var eh={8991:function(N,C){setTimeout(function(){vg(N,C)},0)}};function U0(){Ne.initRuntime()}function zi(N){for(;N.length>0;){var C=N.shift();if(typeof C=="function"){C(c);continue}var L=C.func;typeof L=="number"?C.arg===void 0?Jn.get(L)():Jn.get(L)(C.arg):L(C.arg===void 0?null:C.arg)}}function Pi(N,C){if(N<=0||N>s().length||N&!0||C<0)return-28;if(C==0)return 0;C>=2147483647&&(C=Infinity);var L=Atomics.load(o(),Hi>>2),q=0;if(L==N){var de=Atomics.compareExchange(o(),Hi>>2,L,0);if(de==L&&(--C,q=1,C<=0))return 1}var le=Atomics.notify(o(),N>>2,C);if(le>=0)return le+q;throw"Atomics.notify returned an unexpected value "+le}c._emscripten_futex_wake=Pi;function H0(N){if(x)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in killThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];C.worker.terminate(),Ne.freeThreadData(C),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(C.worker),1),C.worker.pthread=void 0}function j0(N){if(x)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cancelThread!";var C=Ne.pthreads[N];C.worker.postMessage({cmd:"cancel"})}function G0(N){if(x)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cleanupThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];if(C){var L=C.worker;Ne.returnWorkerToPool(L)}}var Ne={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var N=8,C=0;C>2]=N;var L=N+152;o()[L>>2]=L;for(var q=as(512),C=0;C<128;++C)l()[q/4+C]=0;Atomics.store(l(),N+100>>2,q),Atomics.store(l(),N+40>>2,N),ph(N,!_,1),bg(N)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Ne.threadExitHandlers.length>0;)Ne.threadExitHandlers.pop()();x&&Bi()&&_g()},threadExit:function(N){var C=Bi();C&&(Atomics.store(l(),C+4>>2,N),Atomics.store(l(),C+0>>2,1),Atomics.store(l(),C+56>>2,1),Atomics.store(l(),C+60>>2,0),Ne.runExitHandlers(),Pi(C+0,2147483647),ph(0,0,0),x&&postMessage({cmd:"exit"}))},threadCancel:function(){Ne.runExitHandlers();var N=Bi();Atomics.store(l(),N+4>>2,-1),Atomics.store(l(),N+0>>2,1),Pi(N+0,2147483647),ph(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var N in Ne.pthreads){var C=Ne.pthreads[N];C&&C.worker&&Ne.returnWorkerToPool(C.worker)}Ne.pthreads={};for(var L=0;L>2];o()[N.threadInfoStruct+100>>2]=0,tu(C),tu(N.threadInfoStruct)}N.threadInfoStruct=0,N.allocatedOwnStack&&N.stackBase&&tu(N.stackBase),N.stackBase=0,N.worker&&(N.worker.pthread=null)}},returnWorkerToPool:function(N){Ne.runWithoutMainThreadQueuedCalls(function(){delete Ne.pthreads[N.pthread.threadInfoStruct],Ne.unusedWorkers.push(N),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(N),1),Ne.freeThreadData(N.pthread),N.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(N){o()[Tg>>2]=0;try{N()}finally{o()[Tg>>2]=1}},receiveObjectTransfer:function(N){},loadWasmModuleToWorker:function(N,C){N.onmessage=function(L){var q=L.data,de=q.cmd;if(N.pthread&&(Ne.currentProxiedOperationCallerThread=N.pthread.threadInfoStruct),q.targetThread&&q.targetThread!=Bi()){var le=Ne.pthreads[q.targetThread];le?le.worker.postMessage(L.data,q.transferList):console.error('Internal error! Worker sent a message "'+de+'" to target pthread '+q.targetThread+", but that thread no longer exists!"),Ne.currentProxiedOperationCallerThread=void 0;return}if(de==="processQueuedMainThreadWork")q1();else if(de==="spawnThread")ih(L.data);else if(de==="cleanupThread")G0(q.thread);else if(de==="killThread")H0(q.thread);else if(de==="cancelThread")j0(q.thread);else if(de==="loaded")N.loaded=!0,C&&C(N),N.runPthread&&(N.runPthread(),delete N.runPthread);else if(de==="print")X("Thread "+q.threadId+": "+q.text);else if(de==="printErr")j("Thread "+q.threadId+": "+q.text);else if(de==="alert")alert("Thread "+q.threadId+": "+q.text);else if(de==="exit"){var ue=N.pthread&&Atomics.load(l(),N.pthread.threadInfoStruct+64>>2);ue&&Ne.returnWorkerToPool(N)}else if(de==="exitProcess")try{p8(q.returnCode)}catch(we){if(we instanceof ru)return;throw we}else de==="cancelDone"?Ne.returnWorkerToPool(N):de==="objectTransfer"?Ne.receiveObjectTransfer(L.data):L.data.target==="setimmediate"?N.postMessage(L.data):j("worker sent an unknown command "+de);Ne.currentProxiedOperationCallerThread=void 0},N.onerror=function(L){j("pthread sent an error! "+L.filename+":"+L.lineno+": "+L.message)},b&&(N.on("message",function(L){N.onmessage({data:L})}),N.on("error",function(L){N.onerror(L)}),N.on("exit",function(L){})),N.postMessage({cmd:"load",urlOrBlob:c.mainScriptUrlOrBlob||r,wasmMemory:Q,wasmModule:he})},allocateUnusedWorker:function(){var N=S("tfjs-backend-wasm-threaded-simd.worker.js");Ne.unusedWorkers.push(new Worker(N))},getNewWorker:function(){return Ne.unusedWorkers.length==0&&(Ne.allocateUnusedWorker(),Ne.loadWasmModuleToWorker(Ne.unusedWorkers[0])),Ne.unusedWorkers.length>0?Ne.unusedWorkers.pop():null},busySpinWait:function(N){for(var C=performance.now()+N;performance.now()>2]=N,N}function Q0(N,C){if(x)return xa(1,1,N,C)}function e1(N,C){if(N==C)postMessage({cmd:"processQueuedMainThreadWork"});else if(x)postMessage({targetThread:N,cmd:"processThreadQueue"});else{var L=Ne.pthreads[N],q=L&&L.worker;if(!q)return;q.postMessage({cmd:"processThreadQueue"})}return 1}function t1(){Yr()}function n1(N,C,L){var q=o1(C,L);return eh[N].apply(null,q)}function r1(N,C){}function a1(N,C,L){if(N<=0||N>s().length||N&!0)return-28;if(g){if(Atomics.load(o(),N>>2)!=C)return-6;for(var q=performance.now(),de=q+L,le=Atomics.exchange(o(),Hi>>2,N);;){if(q=performance.now(),q>de)return le=Atomics.exchange(o(),Hi>>2,0),-73;if(le=Atomics.exchange(o(),Hi>>2,0),le==0)break;if(q1(),Atomics.load(o(),N>>2)!=C)return-6;le=Atomics.exchange(o(),Hi>>2,N)}return 0}else{var ue=Atomics.wait(o(),N>>2,C,L);if(ue==="timed-out")return-73;if(ue==="not-equal")return-6;if(ue==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ue}}function s1(N,C,L){i().copyWithin(N,C,C+L)}function i1(){return b?require("os").cpus().length:navigator.hardwareConcurrency}function xa(N,C){for(var L=arguments.length-2,q=nu(),de=L,le=Ui(de*8),ue=le>>3,we=0;we>=2;L=i()[N++];){var q=L<105;q&&C&1&&C++,Zl.push(q?u()[C++>>1]:o()[C]),++C}return Zl}function l1(N,C,L){Kl.length=C;for(var q=L>>3,de=0;de>>16),Jt(Q.buffer),1}catch(C){}}function h1(N){var C=u1();if(N<=C)return!1;var L=2147483648;if(N>L)return!1;for(var q=1;q<=4;q*=2){var de=C*(1+.2/q);de=Math.min(de,N+100663296);var le=Math.min(L,pt(Math.max(N,de),65536)),ue=c1(le);if(ue)return!0}return!1}var Le={inEventHandler:0,removeAllEventListeners:function(){for(var N=Le.eventHandlers.length-1;N>=0;--N)Le._removeHandler(N);Le.eventHandlers=[],Le.deferredCalls=[]},registerRemoveEventListeners:function(){Le.removeEventListenersRegistered||(ya.push(Le.removeAllEventListeners),Le.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(N,C,L){function q(ue,we){if(ue.length!=we.length)return!1;for(var rt in ue)if(ue[rt]!=we[rt])return!1;return!0}for(var de in Le.deferredCalls){var le=Le.deferredCalls[de];if(le.targetFunction==N&&q(le.argsList,L))return}Le.deferredCalls.push({targetFunction:N,precedence:C,argsList:L}),Le.deferredCalls.sort(function(ue,we){return ue.precedence>2]=L,o()[ue+4>>2]=q,o()[ue+8>>2]=de,X1(0,N,637534208,C,q,ue),Vi(le)},getTargetThreadForEventCallback:function(N){switch(N){case 1:return 0;case 2:return Ne.currentProxiedOperationCallerThread;default:return N}},getNodeNameForTarget:function(N){return N?N==window?"#window":N==screen?"#screen":N&&N.nodeName?N.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function d1(N){var C=ot(N)+1,L=as(C);return nt(N,L,C),L}function p1(N,C,L,q){var de=nu(),le=Ui(12),ue=0;C&&(ue=d1(C)),o()[le>>2]=ue,o()[le+4>>2]=L,o()[le+8>>2]=q,X1(0,N,657457152,0,ue,le),Vi(de)}function f1(N,C,L,q){C=C?$e(C):"",p1(N,C,L,q)}function m1(N){return N>2?$e(N):N}var A1=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function y1(N){N=m1(N);var C=A1[N]||(typeof document!="undefined"?document.querySelector(N):void 0);return C}function Yl(N){return y1(N)}function th(N,C,L){var q=Yl(N);if(!q)return-4;if(q.canvasSharedPtr&&(o()[q.canvasSharedPtr>>2]=C,o()[q.canvasSharedPtr+4>>2]=L),q.offscreenCanvas||!q.controlTransferredOffscreen){q.offscreenCanvas&&(q=q.offscreenCanvas);var de=!1;if(q.GLctxObject&&q.GLctxObject.GLctx){var le=q.GLctxObject.GLctx.getParameter(2978);de=le[0]===0&&le[1]===0&&le[2]===q.width&&le[3]===q.height}q.width=C,q.height=L,de&&q.GLctxObject.GLctx.viewport(0,0,C,L)}else if(q.canvasSharedPtr){var ue=o()[q.canvasSharedPtr+8>>2];return f1(ue,N,C,L),1}else return-4;return 0}function nh(N,C,L){return x?xa(2,1,N,C,L):th(N,C,L)}function g1(N,C,L){var q=Yl(N);return q?th(N,C,L):nh(N,C,L)}function x1(N){}function w1(N,C){}function _1(N){var C=N.getExtension("ANGLE_instanced_arrays");if(C)return N.vertexAttribDivisor=function(L,q){C.vertexAttribDivisorANGLE(L,q)},N.drawArraysInstanced=function(L,q,de,le){C.drawArraysInstancedANGLE(L,q,de,le)},N.drawElementsInstanced=function(L,q,de,le,ue){C.drawElementsInstancedANGLE(L,q,de,le,ue)},1}function b1(N){var C=N.getExtension("OES_vertex_array_object");if(C)return N.createVertexArray=function(){return C.createVertexArrayOES()},N.deleteVertexArray=function(L){C.deleteVertexArrayOES(L)},N.bindVertexArray=function(L){C.bindVertexArrayOES(L)},N.isVertexArray=function(L){return C.isVertexArrayOES(L)},1}function v1(N){var C=N.getExtension("WEBGL_draw_buffers");if(C)return N.drawBuffers=function(L,q){C.drawBuffersWEBGL(L,q)},1}function k1(N){return!!(N.multiDrawWebgl=N.getExtension("WEBGL_multi_draw"))}var Qe={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(N){Qe.lastError||(Qe.lastError=N)},getNewId:function(N){for(var C=Qe.counter++,L=N.length;L>2]:-1;de+=$e(o()[L+le*4>>2],ue<0?void 0:ue)}return de},createContext:function(N,C){var L=N.getContext("webgl",C);if(!L)return 0;var q=Qe.registerContext(L,C);return q},registerContext:function(N,C){var L=as(8);o()[L+4>>2]=Bi();var q={handle:L,attributes:C,version:C.majorVersion,GLctx:N};return N.canvas&&(N.canvas.GLctxObject=q),Qe.contexts[L]=q,(typeof C.enableExtensionsByDefault=="undefined"||C.enableExtensionsByDefault)&&Qe.initExtensions(q),L},makeContextCurrent:function(N){return Qe.currentContext=Qe.contexts[N],c.ctx=wa=Qe.currentContext&&Qe.currentContext.GLctx,!(N&&!wa)},getContext:function(N){return Qe.contexts[N]},deleteContext:function(N){Qe.currentContext===Qe.contexts[N]&&(Qe.currentContext=null),typeof Le=="object"&&Le.removeAllHandlersOnTarget(Qe.contexts[N].GLctx.canvas),Qe.contexts[N]&&Qe.contexts[N].GLctx.canvas&&(Qe.contexts[N].GLctx.canvas.GLctxObject=void 0),tu(Qe.contexts[N].handle),Qe.contexts[N]=null},initExtensions:function(N){if(N||(N=Qe.currentContext),!N.initExtensionsDone){N.initExtensionsDone=!0;var C=N.GLctx;_1(C),b1(C),v1(C),C.disjointTimerQueryExt=C.getExtension("EXT_disjoint_timer_query"),k1(C);var L=C.getSupportedExtensions()||[];L.forEach(function(q){q.indexOf("lose_context")<0&&q.indexOf("debug")<0&&C.getExtension(q)})}},populateUniformTable:function(N){for(var C=Qe.programs[N],L=Qe.programInfos[N]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},q=L.uniforms,de=wa.getProgramParameter(C,35718),le=0;le>2,q=o()[L+(24>>2)],de={alpha:!!o()[L+(0>>2)],depth:!!o()[L+(4>>2)],stencil:!!o()[L+(8>>2)],antialias:!!o()[L+(12>>2)],premultipliedAlpha:!!o()[L+(16>>2)],preserveDrawingBuffer:!!o()[L+(20>>2)],powerPreference:N1[q],failIfMajorPerformanceCaveat:!!o()[L+(28>>2)],majorVersion:o()[L+(32>>2)],minorVersion:o()[L+(36>>2)],enableExtensionsByDefault:o()[L+(40>>2)],explicitSwapControl:o()[L+(44>>2)],proxyContextToMainThread:o()[L+(48>>2)],renderViaOffscreenBackBuffer:o()[L+(52>>2)]},le=Yl(N);if(!le||de.explicitSwapControl)return 0;var ue=Qe.createContext(le,de);return ue}function S1(N,C){return I1(N,C)}var Li={mappings:{},buffers:[null,[],[]],printChar:function(N,C){var L=Li.buffers[N];C===0||C===10?((N===1?X:j)(Oe(L,0)),L.length=0):L.push(C)},varargs:void 0,get:function(){Li.varargs+=4;var N=o()[Li.varargs-4>>2];return N},getStr:function(N){var C=$e(N);return C},get64:function(N,C){return N}};function rh(N){return x?xa(3,1,N):0}function ah(N,C,L,q,de){if(x)return xa(4,1,N,C,L,q,de)}function sh(N,C,L,q){if(x)return xa(5,1,N,C,L,q);for(var de=0,le=0;le>2],we=o()[C+(le*8+4)>>2],rt=0;rt>2]=de,0}function T1(N){var C=Ne.threadExitHandlers.pop();N&&C()}function C1(N,C){Ne.threadExitHandlers.push(function(){Jn.get(N)(C)})}function ih(N){if(x)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var C=Ne.getNewWorker();if(C.pthread!==void 0)throw"Internal error!";if(!N.pthread_ptr)throw"Internal error, no pthread ptr!";Ne.runningWorkers.push(C);for(var L=as(128*4),q=0;q<128;++q)o()[L+q*4>>2]=0;var de=N.stackBase+N.stackSize,le=Ne.pthreads[N.pthread_ptr]={worker:C,stackBase:N.stackBase,stackSize:N.stackSize,allocatedOwnStack:N.allocatedOwnStack,threadInfoStruct:N.pthread_ptr},ue=le.threadInfoStruct>>2;Atomics.store(l(),ue+(64>>2),N.detached),Atomics.store(l(),ue+(100>>2),L),Atomics.store(l(),ue+(40>>2),le.threadInfoStruct),Atomics.store(l(),ue+(80>>2),N.stackSize),Atomics.store(l(),ue+(76>>2),de),Atomics.store(l(),ue+(104>>2),N.stackSize),Atomics.store(l(),ue+(104+8>>2),de),Atomics.store(l(),ue+(104+12>>2),N.detached);var we=wg(),rt=we+40;Atomics.store(l(),ue+(172>>2),rt),C.pthread=le;var Ht={cmd:"run",start_routine:N.startRoutine,arg:N.arg,threadInfoStruct:N.pthread_ptr,stackBase:N.stackBase,stackSize:N.stackSize};C.runPthread=function(){Ht.time=performance.now(),C.postMessage(Ht,N.transferList)},C.loaded&&(C.runPthread(),delete C.runPthread)}function E1(N,C,L,q){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!N)return j("pthread_create called with a null thread pointer!"),28;var de=[],le=0;if(x&&(de.length===0||le))return kg(687865856,N,C,L,q);if(le)return le;var ue=0,we=0,rt=0;C&&C!=-1?(ue=o()[C>>2],ue+=81920,we=o()[C+8>>2],rt=o()[C+12>>2]!==0):ue=2097152;var Ht=we==0;Ht?we=Sg(16,ue):(we-=ue,pe(we>0));for(var $t=as(228),ba=0;ba<228>>2;++ba)l()[($t>>2)+ba]=0;o()[N>>2]=$t,o()[$t+12>>2]=$t;var ji=$t+152;o()[ji>>2]=ji;var _n={stackBase:we,stackSize:ue,allocatedOwnStack:Ht,detached:rt,startRoutine:L,pthread_ptr:$t,arg:q,transferList:de};return x?(_n.cmd="spawnThread",postMessage(_n,de)):ih(_n),0}function oh(N){if(x)return xa(6,1,N);switch(N){case 30:return 16384;case 85:var C=2147483648;return C/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return J0(28),-1}x||Ne.initMainThreadBlock();var wa,R1=[null,Q0,nh,rh,ah,sh,oh],F1={e:Z0,r:Y0,x:e1,b:t1,y:n1,j:r1,c:a1,d:Pi,f:rs,p:s1,z:i1,u:l1,q:h1,v:g1,i:x1,t:w1,w:S1,m:rh,n:ah,g:sh,o:U0,a:Q||c.wasmMemory,k:T1,l:C1,h:E1,s:oh},gg=V0(),lh=c.___wasm_call_ctors=function(){return(lh=c.___wasm_call_ctors=c.asm.A).apply(null,arguments)},M1=c._init=function(){return(M1=c._init=c.asm.B).apply(null,arguments)},$1=c._register_tensor=function(){return($1=c._register_tensor=c.asm.C).apply(null,arguments)},D1=c._dispose_data=function(){return(D1=c._dispose_data=c.asm.D).apply(null,arguments)},O1=c._dispose=function(){return(O1=c._dispose=c.asm.E).apply(null,arguments)},z1=c._Abs=function(){return(z1=c._Abs=c.asm.G).apply(null,arguments)},P1=c._Add=function(){return(P1=c._Add=c.asm.H).apply(null,arguments)},L1=c._AddN=function(){return(L1=c._AddN=c.asm.I).apply(null,arguments)},W1=c._ArgMax=function(){return(W1=c._ArgMax=c.asm.J).apply(null,arguments)},B1=c._AvgPool=function(){return(B1=c._AvgPool=c.asm.K).apply(null,arguments)},V1=c._BatchMatMul=function(){return(V1=c._BatchMatMul=c.asm.L).apply(null,arguments)},U1=c._Ceil=function(){return(U1=c._Ceil=c.asm.M).apply(null,arguments)},H1=c._ClipByValue=function(){return(H1=c._ClipByValue=c.asm.N).apply(null,arguments)},j1=c._Conv2D=function(){return(j1=c._Conv2D=c.asm.O).apply(null,arguments)},uh=c._Conv2DBackpropInput=function(){return(uh=c._Conv2DBackpropInput=c.asm.P).apply(null,arguments)},ch=c._Cos=function(){return(ch=c._Cos=c.asm.Q).apply(null,arguments)},Jl=c._CropAndResize=function(){return(Jl=c._CropAndResize=c.asm.R).apply(null,arguments)},Wi=c._Cumsum=function(){return(Wi=c._Cumsum=c.asm.S).apply(null,arguments)},G1=c._DepthToSpace=function(){return(G1=c._DepthToSpace=c.asm.T).apply(null,arguments)},Ql=c._DepthwiseConv2dNative=function(){return(Ql=c._DepthwiseConv2dNative=c.asm.U).apply(null,arguments)},K=c._Equal=function(){return(K=c._Equal=c.asm.V).apply(null,arguments)},ne=c._Exp=function(){return(ne=c._Exp=c.asm.W).apply(null,arguments)},Se=c._FlipLeftRight=function(){return(Se=c._FlipLeftRight=c.asm.X).apply(null,arguments)},Ye=c._Floor=function(){return(Ye=c._Floor=c.asm.Y).apply(null,arguments)},It=c._FloorDiv=function(){return(It=c._FloorDiv=c.asm.Z).apply(null,arguments)},At=c._FusedBatchNorm=function(){return(At=c._FusedBatchNorm=c.asm._).apply(null,arguments)},Ve=c._FusedConv2D=function(){return(Ve=c._FusedConv2D=c.asm.$).apply(null,arguments)},je=c._FusedDepthwiseConv2D=function(){return(je=c._FusedDepthwiseConv2D=c.asm.aa).apply(null,arguments)},Qt=c._Gather=function(){return(Qt=c._Gather=c.asm.ba).apply(null,arguments)},Jr=c._GatherNd=function(){return(Jr=c._GatherNd=c.asm.ca).apply(null,arguments)},Qr=c._Greater=function(){return(Qr=c._Greater=c.asm.da).apply(null,arguments)},hh=c._GreaterEqual=function(){return(hh=c._GreaterEqual=c.asm.ea).apply(null,arguments)},eu=c._LeakyRelu=function(){return(eu=c._LeakyRelu=c.asm.fa).apply(null,arguments)},jn=c._Less=function(){return(jn=c._Less=c.asm.ga).apply(null,arguments)},_a=c._LessEqual=function(){return(_a=c._LessEqual=c.asm.ha).apply(null,arguments)},dh=c._Log=function(){return(dh=c._Log=c.asm.ia).apply(null,arguments)},b4=c._LogicalAnd=function(){return(b4=c._LogicalAnd=c.asm.ja).apply(null,arguments)},v4=c._Max=function(){return(v4=c._Max=c.asm.ka).apply(null,arguments)},k4=c._MaxPool=function(){return(k4=c._MaxPool=c.asm.la).apply(null,arguments)},N4=c._Maximum=function(){return(N4=c._Maximum=c.asm.ma).apply(null,arguments)},I4=c._Mean=function(){return(I4=c._Mean=c.asm.na).apply(null,arguments)},S4=c._Min=function(){return(S4=c._Min=c.asm.oa).apply(null,arguments)},T4=c._Minimum=function(){return(T4=c._Minimum=c.asm.pa).apply(null,arguments)},C4=c._Multiply=function(){return(C4=c._Multiply=c.asm.qa).apply(null,arguments)},E4=c._Neg=function(){return(E4=c._Neg=c.asm.ra).apply(null,arguments)},R4=c._NonMaxSuppressionV3=function(){return(R4=c._NonMaxSuppressionV3=c.asm.sa).apply(null,arguments)},F4=c._NonMaxSuppressionV4=function(){return(F4=c._NonMaxSuppressionV4=c.asm.ta).apply(null,arguments)},M4=c._NonMaxSuppressionV5=function(){return(M4=c._NonMaxSuppressionV5=c.asm.ua).apply(null,arguments)},$4=c._NotEqual=function(){return($4=c._NotEqual=c.asm.va).apply(null,arguments)},D4=c._OneHot=function(){return(D4=c._OneHot=c.asm.wa).apply(null,arguments)},O4=c._PadV2=function(){return(O4=c._PadV2=c.asm.xa).apply(null,arguments)},z4=c._Pow=function(){return(z4=c._Pow=c.asm.ya).apply(null,arguments)},P4=c._Prelu=function(){return(P4=c._Prelu=c.asm.za).apply(null,arguments)},L4=c._Prod=function(){return(L4=c._Prod=c.asm.Aa).apply(null,arguments)},W4=c._RealDiv=function(){return(W4=c._RealDiv=c.asm.Ba).apply(null,arguments)},B4=c._Relu=function(){return(B4=c._Relu=c.asm.Ca).apply(null,arguments)},V4=c._Relu6=function(){return(V4=c._Relu6=c.asm.Da).apply(null,arguments)},U4=c._ResizeBilinear=function(){return(U4=c._ResizeBilinear=c.asm.Ea).apply(null,arguments)},H4=c._Reverse=function(){return(H4=c._Reverse=c.asm.Fa).apply(null,arguments)},j4=c._RotateWithOffset=function(){return(j4=c._RotateWithOffset=c.asm.Ga).apply(null,arguments)},G4=c._Round=function(){return(G4=c._Round=c.asm.Ha).apply(null,arguments)},q4=c._Rsqrt=function(){return(q4=c._Rsqrt=c.asm.Ia).apply(null,arguments)},X4=c._ScatterNd=function(){return(X4=c._ScatterNd=c.asm.Ja).apply(null,arguments)},K4=c._SelectV2=function(){return(K4=c._SelectV2=c.asm.Ka).apply(null,arguments)},Z4=c._Sigmoid=function(){return(Z4=c._Sigmoid=c.asm.La).apply(null,arguments)},Y4=c._Sin=function(){return(Y4=c._Sin=c.asm.Ma).apply(null,arguments)},J4=c._Softmax=function(){return(J4=c._Softmax=c.asm.Na).apply(null,arguments)},Q4=c._Sqrt=function(){return(Q4=c._Sqrt=c.asm.Oa).apply(null,arguments)},e8=c._Square=function(){return(e8=c._Square=c.asm.Pa).apply(null,arguments)},t8=c._SquaredDifference=function(){return(t8=c._SquaredDifference=c.asm.Qa).apply(null,arguments)},n8=c._Step=function(){return(n8=c._Step=c.asm.Ra).apply(null,arguments)},r8=c._StridedSlice=function(){return(r8=c._StridedSlice=c.asm.Sa).apply(null,arguments)},a8=c._Sub=function(){return(a8=c._Sub=c.asm.Ta).apply(null,arguments)},s8=c._Sum=function(){return(s8=c._Sum=c.asm.Ua).apply(null,arguments)},i8=c._Tanh=function(){return(i8=c._Tanh=c.asm.Va).apply(null,arguments)},o8=c._Tile=function(){return(o8=c._Tile=c.asm.Wa).apply(null,arguments)},l8=c._TopK=function(){return(l8=c._TopK=c.asm.Xa).apply(null,arguments)},u8=c._Transpose=function(){return(u8=c._Transpose=c.asm.Ya).apply(null,arguments)},c8=c.__FusedMatMul=function(){return(c8=c.__FusedMatMul=c.asm.Za).apply(null,arguments)},as=c._malloc=function(){return(as=c._malloc=c.asm._a).apply(null,arguments)},tu=c._free=function(){return(tu=c._free=c.asm.$a).apply(null,arguments)},xg=c.___errno_location=function(){return(xg=c.___errno_location=c.asm.ab).apply(null,arguments)},wg=c._emscripten_get_global_libc=function(){return(wg=c._emscripten_get_global_libc=c.asm.bb).apply(null,arguments)},Bi=c._pthread_self=function(){return(Bi=c._pthread_self=c.asm.cb).apply(null,arguments)},_g=c.___pthread_tsd_run_dtors=function(){return(_g=c.___pthread_tsd_run_dtors=c.asm.db).apply(null,arguments)},q1=c._emscripten_main_thread_process_queued_calls=function(){return(q1=c._emscripten_main_thread_process_queued_calls=c.asm.eb).apply(null,arguments)},h8=c._emscripten_current_thread_process_queued_calls=function(){return(h8=c._emscripten_current_thread_process_queued_calls=c.asm.fb).apply(null,arguments)},bg=c._emscripten_register_main_browser_thread_id=function(){return(bg=c._emscripten_register_main_browser_thread_id=c.asm.gb).apply(null,arguments)},vg=c.__emscripten_do_dispatch_to_thread=function(){return(vg=c.__emscripten_do_dispatch_to_thread=c.asm.hb).apply(null,arguments)},kg=c._emscripten_sync_run_in_main_thread_4=function(){return(kg=c._emscripten_sync_run_in_main_thread_4=c.asm.ib).apply(null,arguments)},Ng=c._emscripten_run_in_main_runtime_thread_js=function(){return(Ng=c._emscripten_run_in_main_runtime_thread_js=c.asm.jb).apply(null,arguments)},X1=c.__emscripten_call_on_thread=function(){return(X1=c.__emscripten_call_on_thread=c.asm.kb).apply(null,arguments)},d8=c._emscripten_tls_init=function(){return(d8=c._emscripten_tls_init=c.asm.lb).apply(null,arguments)},ph=c.__emscripten_thread_init=function(){return(ph=c.__emscripten_thread_init=c.asm.mb).apply(null,arguments)},nu=c.stackSave=function(){return(nu=c.stackSave=c.asm.nb).apply(null,arguments)},Vi=c.stackRestore=function(){return(Vi=c.stackRestore=c.asm.ob).apply(null,arguments)},Ui=c.stackAlloc=function(){return(Ui=c.stackAlloc=c.asm.pb).apply(null,arguments)},Ig=c._emscripten_stack_set_limits=function(){return(Ig=c._emscripten_stack_set_limits=c.asm.qb).apply(null,arguments)},Sg=c._memalign=function(){return(Sg=c._memalign=c.asm.rb).apply(null,arguments)},Tg=c.__emscripten_allow_main_runtime_queued_calls=9880,Hi=c.__emscripten_main_thread_futex=11368;c.cwrap=Me,c.PThread=Ne,c.PThread=Ne,c.wasmMemory=Q,c.ExitStatus=ru;var fh;function ru(N){this.name="ExitStatus",this.message="Program terminated with exit("+N+")",this.status=N}ns=function N(){fh||K1(),fh||(ns=N)};function K1(N){if(N=N||m,Zr>0)return;if(x){h(c),postMessage({cmd:"loaded"});return}if(D0(),Zr>0)return;function C(){fh||(fh=!0,c.calledRun=!0,!oe&&(qc(),O0(),h(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),xn()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),C()},1)):C()}c.run=K1;function p8(N,C){if(!(C&&ie&&N===0)){if(!C&&x)throw postMessage({cmd:"exitProcess",returnCode:N}),new ru(N);ie||(Ne.terminateAllThreads(),fe=N,Xc(),c.onExit&&c.onExit(N),oe=!0),y(N,new ru(N))}}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return x&&(ie=!1,Ne.initWorker()),K1(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),q8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};var s=typeof a!="undefined"?a:{},i,o;s.ready=new Promise(function(K,ne){i=K,o=ne});var l={},u;for(u in s)s.hasOwnProperty(u)&&(l[u]=s[u]);var c=[],h="./this.program",d=function(K,ne){throw ne},p=!1,f=!1,m=!1,A=!1;p=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A=!p&&!m&&!f;var y="";function g(K){return s.locateFile?s.locateFile(K,y):y+K}var _,b,w,x,I,S;m?(f?y=au().dirname(y)+"/":y=__dirname+"/",_=function(K,ne){return I||(I=require("fs")),S||(S=au()),K=S.normalize(K),I.readFileSync(K,ne?null:"utf8")},w=function(K){var ne=_(K,!0);return ne.buffer||(ne=new Uint8Array(ne)),X(ne.buffer),ne},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(K){if(!(K instanceof G1))throw K}),process.on("unhandledRejection",pr),d=function(K){process.exit(K)},s.inspect=function(){return"[Emscripten Module object]"}):A?(typeof read!="undefined"&&(_=function(K){return read(K)}),w=function(K){var ne;return typeof readbuffer=="function"?new Uint8Array(readbuffer(K)):(ne=read(K,"binary"),X(typeof ne=="object"),ne)},typeof scriptArgs!="undefined"?c=scriptArgs:typeof arguments!="undefined"&&(c=arguments),typeof quit=="function"&&(d=function(K){quit(K)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",_=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.send(null),ne.responseText},f&&(w=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)}),b=function(K,ne,Se){var Ye=new XMLHttpRequest;Ye.open("GET",K,!0),Ye.responseType="arraybuffer",Ye.onload=function(){if(Ye.status==200||Ye.status==0&&Ye.response){ne(Ye.response);return}Se()},Ye.onerror=Se,Ye.send(null)},x=function(K){document.title=K});var T=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in l)l.hasOwnProperty(u)&&(s[u]=l[u]);l=null,s.arguments&&(c=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(d=s.quit);var D;s.wasmBinary&&(D=s.wasmBinary);var z=s.noExitRuntime||!0;typeof WebAssembly!="object"&&pr("no native wasm support detected");var W,U=!1,H;function X(K,ne){K||pr("Assertion failed: "+ne)}function j(K){var ne=s["_"+K];return X(ne,"Cannot call unknown function "+K+", make sure it is exported"),ne}function ee(K,ne,Se,Ye,It){var At={string:function(jn){var _a=0;if(jn!=null&&jn!==0){var dh=(jn.length<<2)+1;_a=Jl(dh),he(jn,_a,dh)}return _a},array:function(jn){var _a=Jl(jn.length);return oe(jn,_a),_a}};function Ve(jn){return ne==="string"?ie(jn):ne==="boolean"?Boolean(jn):jn}var je=j(K),Qt=[],Jr=0;if(Ye)for(var Qr=0;Qr=Ye);)++It;if(It-ne>16&&K.subarray&&ae)return ae.decode(K.subarray(ne,It));for(var At="";ne>10,56320|Jr&1023)}}return At}function ie(K,ne){return K?te(Ie,K,ne):""}function Q(K,ne,Se,Ye){if(!(Ye>0))return 0;for(var It=Se,At=Se+Ye-1,Ve=0;Ve=55296&&je<=57343){var Qt=K.charCodeAt(++Ve);je=65536+((je&1023)<<10)|Qt&1023}if(je<=127){if(Se>=At)break;ne[Se++]=je}else if(je<=2047){if(Se+1>=At)break;ne[Se++]=192|je>>6,ne[Se++]=128|je&63}else if(je<=65535){if(Se+2>=At)break;ne[Se++]=224|je>>12,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}else{if(Se+3>=At)break;ne[Se++]=240|je>>18,ne[Se++]=128|je>>12&63,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}}return ne[Se]=0,Se-It}function he(K,ne,Se){return Q(K,Ie,ne,Se)}function oe(K,ne){ke.set(K,ne)}function fe(K,ne){return K%ne>0&&(K+=ne-K%ne),K}var pe,ke,Ie,Me,Oe,$e,tt,nt,ot;function Ze(K){pe=K,s.HEAP8=ke=new Int8Array(K),s.HEAP16=Me=new Int16Array(K),s.HEAP32=$e=new Int32Array(K),s.HEAPU8=Ie=new Uint8Array(K),s.HEAPU16=Oe=new Uint16Array(K),s.HEAPU32=tt=new Uint32Array(K),s.HEAPF32=nt=new Float32Array(K),s.HEAPF64=ot=new Float64Array(K)}var pt=s.INITIAL_MEMORY||16777216,Be,yn=[],_t=[],Un=[],Yt=[],gn=!1;_t.push({func:function(){Qc()}});function Hn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)Tr(s.preRun.shift());ga(yn)}function Rn(){gn=!0,ga(_t)}function un(){ga(Un)}function Jt(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)Jn(s.postRun.shift());ga(Yt)}function Tr(K){yn.unshift(K)}function Jn(K){Yt.unshift(K)}var Qn=0,Aa=null,Kr=null;function ya(K){Qn++,s.monitorRunDependencies&&s.monitorRunDependencies(Qn)}function Di(K){if(Qn--,s.monitorRunDependencies&&s.monitorRunDependencies(Qn),Qn==0&&(Aa!==null&&(clearInterval(Aa),Aa=null),Kr)){var ne=Kr;Kr=null,ne()}}s.preloadedImages={},s.preloadedAudios={};function pr(K){s.onAbort&&s.onAbort(K),K+="",M(K),U=!0,H=1,K="abort("+K+"). Build with -s ASSERTIONS=1 for more info.";var ne=new WebAssembly.RuntimeError(K);throw o(ne),ne}function Gc(K,ne){return String.prototype.startsWith?K.startsWith(ne):K.indexOf(ne)===0}var D0="data:application/octet-stream;base64,";function qc(K){return Gc(K,D0)}var O0="file://";function Xc(K){return Gc(K,O0)}var xn="tfjs-backend-wasm.wasm";qc(xn)||(xn=g(xn));function Kc(K){try{if(K==xn&&D)return new Uint8Array(D);if(w)return w(K);throw"both async and sync fetching of the wasm failed"}catch(ne){pr(ne)}}function z0(){if(!D&&(p||f)){if(typeof fetch=="function"&&!Xc(xn))return fetch(xn,{credentials:"same-origin"}).then(function(K){if(!K.ok)throw"failed to load wasm binary file at '"+xn+"'";return K.arrayBuffer()}).catch(function(){return Kc(xn)});if(b)return new Promise(function(K,ne){b(xn,function(Se){K(new Uint8Array(Se))},ne)})}return Promise.resolve().then(function(){return Kc(xn)})}function Zr(){var K={a:wn};function ne(Ve,je){var Qt=Ve.exports;s.asm=Qt,W=s.asm.g,Ze(W.buffer),Be=s.asm.m,Di("wasm-instantiate")}ya("wasm-instantiate");function Se(Ve){ne(Ve.instance)}function Ye(Ve){return z0().then(function(je){return WebAssembly.instantiate(je,K)}).then(Ve,function(je){M("failed to asynchronously prepare wasm: "+je),pr(je)})}function It(){return!D&&typeof WebAssembly.instantiateStreaming=="function"&&!qc(xn)&&!Xc(xn)&&typeof fetch=="function"?fetch(xn,{credentials:"same-origin"}).then(function(Ve){var je=WebAssembly.instantiateStreaming(Ve,K);return je.then(Se,function(Qt){return M("wasm streaming compile failed: "+Qt),M("falling back to ArrayBuffer instantiation"),Ye(Se)})}):Ye(Se)}if(s.instantiateWasm)try{var At=s.instantiateWasm(K,ne);return At}catch(Ve){return M("Module.instantiateWasm callback failed with error: "+Ve),!1}return It().catch(o),{}}function ga(K){for(;K.length>0;){var ne=K.shift();if(typeof ne=="function"){ne(s);continue}var Se=ne.func;typeof Se=="number"?ne.arg===void 0?Be.get(Se)():Be.get(Se)(ne.arg):Se(ne.arg===void 0?null:ne.arg)}}function ns(){pr()}function P0(K,ne,Se){Ie.copyWithin(K,ne,ne+Se)}function L0(){return Ie.length}function Yr(K){try{return W.grow(K-pe.byteLength+65535>>>16),Ze(W.buffer),1}catch(ne){}}function Zc(K){var ne=L0(),Se=2147483648;if(K>Se)return!1;for(var Ye=1;Ye<=4;Ye*=2){var It=ne*(1+.2/Ye);It=Math.min(It,K+100663296);var At=Math.min(Se,fe(Math.max(K,It),65536)),Ve=Yr(At);if(Ve)return!0}return!1}var Oi={mappings:{},buffers:[null,[],[]],printChar:function(K,ne){var Se=Oi.buffers[K];ne===0||ne===10?((K===1?T:M)(te(Se,0)),Se.length=0):Se.push(ne)},varargs:void 0,get:function(){Oi.varargs+=4;var K=$e[Oi.varargs-4>>2];return K},getStr:function(K){var ne=ie(K);return ne},get64:function(K,ne){return K}};function Yc(K){return 0}function W0(K,ne,Se,Ye,It){}function Jc(K,ne,Se,Ye){for(var It=0,At=0;At>2],je=$e[ne+(At*8+4)>>2],Qt=0;Qt>2]=It,0}var wn={a:ns,d:P0,e:Zc,f:Yc,c:W0,b:Jc},B0=Zr(),Qc=s.___wasm_call_ctors=function(){return(Qc=s.___wasm_call_ctors=s.asm.h).apply(null,arguments)},V0=s._init=function(){return(V0=s._init=s.asm.i).apply(null,arguments)},eh=s._register_tensor=function(){return(eh=s._register_tensor=s.asm.j).apply(null,arguments)},U0=s._dispose_data=function(){return(U0=s._dispose_data=s.asm.k).apply(null,arguments)},zi=s._dispose=function(){return(zi=s._dispose=s.asm.l).apply(null,arguments)},Pi=s._Abs=function(){return(Pi=s._Abs=s.asm.n).apply(null,arguments)},H0=s._Add=function(){return(H0=s._Add=s.asm.o).apply(null,arguments)},j0=s._AddN=function(){return(j0=s._AddN=s.asm.p).apply(null,arguments)},G0=s._ArgMax=function(){return(G0=s._ArgMax=s.asm.q).apply(null,arguments)},Ne=s._AvgPool=function(){return(Ne=s._AvgPool=s.asm.r).apply(null,arguments)},q0=s._BatchMatMul=function(){return(q0=s._BatchMatMul=s.asm.s).apply(null,arguments)},X0=s._Ceil=function(){return(X0=s._Ceil=s.asm.t).apply(null,arguments)},K0=s._ClipByValue=function(){return(K0=s._ClipByValue=s.asm.u).apply(null,arguments)},Z0=s._Conv2D=function(){return(Z0=s._Conv2D=s.asm.v).apply(null,arguments)},Y0=s._Conv2DBackpropInput=function(){return(Y0=s._Conv2DBackpropInput=s.asm.w).apply(null,arguments)},rs=s._Cos=function(){return(rs=s._Cos=s.asm.x).apply(null,arguments)},J0=s._CropAndResize=function(){return(J0=s._CropAndResize=s.asm.y).apply(null,arguments)},Q0=s._Cumsum=function(){return(Q0=s._Cumsum=s.asm.z).apply(null,arguments)},e1=s._DepthToSpace=function(){return(e1=s._DepthToSpace=s.asm.A).apply(null,arguments)},t1=s._DepthwiseConv2dNative=function(){return(t1=s._DepthwiseConv2dNative=s.asm.B).apply(null,arguments)},n1=s._Equal=function(){return(n1=s._Equal=s.asm.C).apply(null,arguments)},r1=s._Exp=function(){return(r1=s._Exp=s.asm.D).apply(null,arguments)},a1=s._FlipLeftRight=function(){return(a1=s._FlipLeftRight=s.asm.E).apply(null,arguments)},s1=s._Floor=function(){return(s1=s._Floor=s.asm.F).apply(null,arguments)},i1=s._FloorDiv=function(){return(i1=s._FloorDiv=s.asm.G).apply(null,arguments)},xa=s._FusedBatchNorm=function(){return(xa=s._FusedBatchNorm=s.asm.H).apply(null,arguments)},Kl=s._FusedConv2D=function(){return(Kl=s._FusedConv2D=s.asm.I).apply(null,arguments)},Zl=s._FusedDepthwiseConv2D=function(){return(Zl=s._FusedDepthwiseConv2D=s.asm.J).apply(null,arguments)},o1=s._Gather=function(){return(o1=s._Gather=s.asm.K).apply(null,arguments)},l1=s._GatherNd=function(){return(l1=s._GatherNd=s.asm.L).apply(null,arguments)},u1=s._Greater=function(){return(u1=s._Greater=s.asm.M).apply(null,arguments)},c1=s._GreaterEqual=function(){return(c1=s._GreaterEqual=s.asm.N).apply(null,arguments)},h1=s._LeakyRelu=function(){return(h1=s._LeakyRelu=s.asm.O).apply(null,arguments)},Le=s._Less=function(){return(Le=s._Less=s.asm.P).apply(null,arguments)},d1=s._LessEqual=function(){return(d1=s._LessEqual=s.asm.Q).apply(null,arguments)},p1=s._Log=function(){return(p1=s._Log=s.asm.R).apply(null,arguments)},f1=s._LogicalAnd=function(){return(f1=s._LogicalAnd=s.asm.S).apply(null,arguments)},m1=s._Max=function(){return(m1=s._Max=s.asm.T).apply(null,arguments)},A1=s._MaxPool=function(){return(A1=s._MaxPool=s.asm.U).apply(null,arguments)},y1=s._Maximum=function(){return(y1=s._Maximum=s.asm.V).apply(null,arguments)},Yl=s._Mean=function(){return(Yl=s._Mean=s.asm.W).apply(null,arguments)},th=s._Min=function(){return(th=s._Min=s.asm.X).apply(null,arguments)},nh=s._Minimum=function(){return(nh=s._Minimum=s.asm.Y).apply(null,arguments)},g1=s._Multiply=function(){return(g1=s._Multiply=s.asm.Z).apply(null,arguments)},x1=s._Neg=function(){return(x1=s._Neg=s.asm._).apply(null,arguments)},w1=s._NonMaxSuppressionV3=function(){return(w1=s._NonMaxSuppressionV3=s.asm.$).apply(null,arguments)},_1=s._NonMaxSuppressionV4=function(){return(_1=s._NonMaxSuppressionV4=s.asm.aa).apply(null,arguments)},b1=s._NonMaxSuppressionV5=function(){return(b1=s._NonMaxSuppressionV5=s.asm.ba).apply(null,arguments)},v1=s._NotEqual=function(){return(v1=s._NotEqual=s.asm.ca).apply(null,arguments)},k1=s._OneHot=function(){return(k1=s._OneHot=s.asm.da).apply(null,arguments)},Qe=s._PadV2=function(){return(Qe=s._PadV2=s.asm.ea).apply(null,arguments)},N1=s._Pow=function(){return(N1=s._Pow=s.asm.fa).apply(null,arguments)},I1=s._Prelu=function(){return(I1=s._Prelu=s.asm.ga).apply(null,arguments)},S1=s._Prod=function(){return(S1=s._Prod=s.asm.ha).apply(null,arguments)},Li=s._RealDiv=function(){return(Li=s._RealDiv=s.asm.ia).apply(null,arguments)},rh=s._Relu=function(){return(rh=s._Relu=s.asm.ja).apply(null,arguments)},ah=s._Relu6=function(){return(ah=s._Relu6=s.asm.ka).apply(null,arguments)},sh=s._ResizeBilinear=function(){return(sh=s._ResizeBilinear=s.asm.la).apply(null,arguments)},T1=s._Reverse=function(){return(T1=s._Reverse=s.asm.ma).apply(null,arguments)},C1=s._RotateWithOffset=function(){return(C1=s._RotateWithOffset=s.asm.na).apply(null,arguments)},ih=s._Round=function(){return(ih=s._Round=s.asm.oa).apply(null,arguments)},E1=s._Rsqrt=function(){return(E1=s._Rsqrt=s.asm.pa).apply(null,arguments)},oh=s._ScatterNd=function(){return(oh=s._ScatterNd=s.asm.qa).apply(null,arguments)},wa=s._SelectV2=function(){return(wa=s._SelectV2=s.asm.ra).apply(null,arguments)},R1=s._Sigmoid=function(){return(R1=s._Sigmoid=s.asm.sa).apply(null,arguments)},F1=s._Sin=function(){return(F1=s._Sin=s.asm.ta).apply(null,arguments)},gg=s._Softmax=function(){return(gg=s._Softmax=s.asm.ua).apply(null,arguments)},lh=s._Sqrt=function(){return(lh=s._Sqrt=s.asm.va).apply(null,arguments)},M1=s._Square=function(){return(M1=s._Square=s.asm.wa).apply(null,arguments)},$1=s._SquaredDifference=function(){return($1=s._SquaredDifference=s.asm.xa).apply(null,arguments)},D1=s._Step=function(){return(D1=s._Step=s.asm.ya).apply(null,arguments)},O1=s._StridedSlice=function(){return(O1=s._StridedSlice=s.asm.za).apply(null,arguments)},z1=s._Sub=function(){return(z1=s._Sub=s.asm.Aa).apply(null,arguments)},P1=s._Sum=function(){return(P1=s._Sum=s.asm.Ba).apply(null,arguments)},L1=s._Tanh=function(){return(L1=s._Tanh=s.asm.Ca).apply(null,arguments)},W1=s._Tile=function(){return(W1=s._Tile=s.asm.Da).apply(null,arguments)},B1=s._TopK=function(){return(B1=s._TopK=s.asm.Ea).apply(null,arguments)},V1=s._Transpose=function(){return(V1=s._Transpose=s.asm.Fa).apply(null,arguments)},U1=s.__FusedMatMul=function(){return(U1=s.__FusedMatMul=s.asm.Ga).apply(null,arguments)},H1=s._malloc=function(){return(H1=s._malloc=s.asm.Ha).apply(null,arguments)},j1=s._free=function(){return(j1=s._free=s.asm.Ia).apply(null,arguments)},uh=s.stackSave=function(){return(uh=s.stackSave=s.asm.Ja).apply(null,arguments)},ch=s.stackRestore=function(){return(ch=s.stackRestore=s.asm.Ka).apply(null,arguments)},Jl=s.stackAlloc=function(){return(Jl=s.stackAlloc=s.asm.La).apply(null,arguments)};s.cwrap=Y;var Wi;function G1(K){this.name="ExitStatus",this.message="Program terminated with exit("+K+")",this.status=K}Kr=function K(){Wi||Ql(),Wi||(Kr=K)};function Ql(K){if(K=K||c,Qn>0||(Hn(),Qn>0))return;function ne(){Wi||(Wi=!0,s.calledRun=!0,!U&&(Rn(),un(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),Jt()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),ne()},1)):ne()}if(s.run=Ql,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ql(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),X8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),K8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Z8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),J8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Q8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ek=et((e,t)=>{(function(n,r){var a=(0,eval)("this"),s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=X8(),r=K8(),a=Z8(),s=Y8(),i=J8(),o=Q8(),l=ek();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),tk=et(()=>{}),nk="3.3.0",rk="3.3.0",ak="3.3.0",sk="3.3.0",ik="3.3.0",ok=1e-7,lk=1e-4,xh=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},su=class{refCount(e){return tr("refCount")}incRef(e){return tr("incRef")}timerAvailable(){return!0}time(e){return tr("time")}read(e){return tr("read")}readSync(e){return tr("readSync")}numDataIds(){return tr("numDataIds")}disposeData(e,t){return tr("disposeData")}write(e,t,n){return tr("write")}move(e,t,n,r,a){return tr("move")}memory(){return tr("memory")}floatPrecision(){return tr("floatPrecision")}epsilon(){return this.floatPrecision()===32?ok:lk}dispose(){return tr("dispose")}};function tr(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function $g(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function uk(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r,a,s=0;for(;n>0;)s=Math.random()*n|0,n--,r=e[n],a=t[n],e[n]=e[s],t[n]=t[s],e[s]=r,t[s]=a}function iu(e,t,n){return Math.max(e,Math.min(t,n))}function ck(e){return e%2==0?e:e+1}function hk(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ss(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function is(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||sn(e)&&!n)for(let r=0;r0,n){return new Promise((r,a)=>{let s=0,i=()=>{if(e()){r();return}s++;let o=t(s);if(n!=null&&s>=n){a();return}setTimeout(i,o)};i()})}function xk(e,t){let n=1,r=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let a=e.slice();return a[r]=t/n,a}function nr(e,t){let n=t.length;return e=e==null?t.map((r,a)=>a):[].concat(e),F(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(r=>jt(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function Dg(e,t){let n=[],r=[],a=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||a?null:nr(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),r.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),r.push(o))}return{newShape:n,keptDims:r}}function Og(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function zg(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Pg(e,t){for(let n=0;nt+=n.length),t}function va(e){return typeof e=="string"||e instanceof String}function Bg(e){return typeof e=="boolean"}function Vg(e){return typeof e=="number"}function wh(e){return Array.isArray(e)?wh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":Vg(e)?"float32":va(e)?"string":Bg(e)?"bool":"float32"}function ka(e){return!!(e&&e.constructor&&e.call&&e.apply)}function _h(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function Ug(e,t,n){let r=new Array;if(t.length===1){let a=t[0];for(let s=0;so*l);for(let o=0;or*a);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return Ug(0,e,t)}function Q1(e,t){let n=bh(e,t);for(let r=0;rr*a,1);if(t==null||t==="float32")return Ki(e,new Float32Array(n));if(t==="int32")return Ki(e,new Int32Array(n));if(t==="bool")return Ki(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function ef(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function bk(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let a=0;a{let[n,r]=t.split(":");this.urlFlags[n]=Nk(n,r)})}};function kk(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(Ik(t,r[0],r[1]),r.join("="))),t}function Ik(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function Nk(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return fr}var fr=null;function Sk(e){fr=e}var nf;function Gg(){if(nf==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");nf=e}return nf}function Tk(){let e=Gg();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function rf(e,t){let n=Tk();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var Zi="Abs",Yi="Acos",Ji="Acosh",Na="Add",os="AddN",vh="All",kh="Any",ls="ArgMax",lu="ArgMin",Qi="Asin",eo="Asinh",to="Atan",no="Atanh",ro="Atan2",us="AvgPool",Nh="AvgPoolGrad",uu="AvgPool3D",Ih="AvgPool3DGrad",cs="BatchMatMul",cu="BatchToSpaceND",Sh="Bincount",qg="BroadcastTo",hs="Cast",ds="Ceil",Ia="ClipByValue",Th="Complex",hu="ComplexAbs",ao="Concat",ps="Conv2D",Ch="Conv2DBackpropFilter",fs="Conv2DBackpropInput",du="Conv3D",Eh="Conv3DBackpropFilterV2",Rh="Conv3DBackpropInputV2",ms="Cos",so="Cosh",As="Cumsum",io="CropAndResize",Fh="DenseBincount",oo="DepthToSpace",ys="DepthwiseConv2dNative",Mh="DepthwiseConv2dNativeBackpropFilter",$h="DepthwiseConv2dNativeBackpropInput",Dh="Diag",pu="Dilation2D",Oh="Dilation2DBackpropInput",zh="Dilation2DBackpropFilter",gs="RealDiv",lo="Elu",Ph="EluGrad",uo="Erf",co="Equal",xs="Exp",ho="ExpandDims",po="Expm1",Lh="FFT",fu="Fill",fo="FlipLeftRight",ws="Floor",_s="FloorDiv",bs="FusedBatchNorm",mo="GatherV2",Ao="GatherNd",yo="Greater",vs="GreaterEqual",ks="Identity",Wh="IFFT",Bh="Imag",go="IsFinite",xo="IsInf",wo="IsNan",Ns="LeakyRelu",_o="Less",bo="LessEqual",Vh="LinSpace",Is="Log",vo="Log1p",ko="LogicalAnd",mu="LogicalNot",Au="LogicalOr",Xg="LogSoftmax",yu="LRN",Uh="LRNGrad",Ss="Max",Ts="Maximum",Cs="MaxPool",Hh="MaxPoolGrad",gu="MaxPool3D",jh="MaxPool3DGrad",Gh="MaxPoolWithArgmax",Es="Mean",Rs="Min",Fs="Minimum",xu="MirrorPad",No="Mod",qh="Multinomial",Ms="Multiply",Io="Neg",So="NotEqual",To="NonMaxSuppressionV3",Co="NonMaxSuppressionV4",Eo="NonMaxSuppressionV5",Ro="OnesLike",$s="OneHot",Fo="Pack",Ds="PadV2",Ck="Pool",Os="Pow",zs="Prelu",Mo="Prod",wu="Range",Xh="Real",$o="Reciprocal",Ps="Relu",Do="Reshape",_u="ResizeNearestNeighbor",Kh="ResizeNearestNeighborGrad",Ls="ResizeBilinear",Zh="ResizeBilinearGrad",Ws="Relu6",Bs="Reverse",Vs="Round",Us="Rsqrt",Oo="ScatterNd",zo="Select",Po="Selu",Lo="Slice",Hs="Sin",Wo="Sinh",Bo="Sign",js="Sigmoid",Vo="Softplus",Gs="Sqrt",qs="Sum",bu="SpaceToBatchND",Uo="SplitV",Xs="Softmax",Ks="SquaredDifference",vu="Square",Zs="Sub",Yh="SparseToDense",Ho="StridedSlice",jo="Tan",Ys="Tanh",Sa="Tile",Go="TopK",Jh="Transform",Js="Transpose",Qh="Unique",qo="Unpack",ku="UnsortedSegmentSum",Xo="ZerosLike",Ta="Step",ed="FromPixels",Ko="RotateWithOffset",Qs="_FusedMatMul",ei="FusedConv2D",ti="FusedDepthwiseConv2D",Zo=rf("kernelRegistry",()=>new Map),Nu=rf("gradRegistry",()=>new Map);function td(e,t){let n=af(e,t);return Zo.get(n)}function sf(e){return Nu.get(e)}function Yo(e){let t=Zo.entries(),n=[];for(;;){let{done:r,value:a}=t.next();if(r)break;let[s,i]=a,[o]=s.split("_");o===e&&n.push(i)}return n}function ni(e){let{kernelName:t,backendName:n}=e,r=af(t,n);Zo.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),Zo.set(r,e)}function Kg(e){let{kernelName:t}=e;Nu.has(t)&&J().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),Nu.set(t,e)}function Ek(e,t){let n=af(e,t);if(!Zo.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);Zo.delete(n)}function Rk(e){if(!Nu.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Nu.delete(e)}function Fk(e,t){Yo(e).forEach(n=>{let r=Object.assign({},n,{backendName:t});ni(r)})}function af(e,t){return`${t}_${e}`}var v={};ze(v,{arraysEqual:()=>ta,assert:()=>F,assertNonNegativeIntegerDimensions:()=>ef,assertNonNull:()=>ss,assertShapesMatch:()=>an,bytesFromStringArray:()=>Wg,bytesPerElement:()=>J1,checkConversionForErrors:()=>Pg,clamp:()=>iu,computeStrides:()=>Xi,createScalarValue:()=>Mk,createShuffledIndices:()=>yk,decodeString:()=>rd,distSquared:()=>pk,encodeString:()=>Su,fetch:()=>$k,flatten:()=>is,getArrayFromDType:()=>zg,getTypedArrayFromDType:()=>Og,hasEncodingLoss:()=>wk,indexToLoc:()=>vk,inferDtype:()=>wh,inferFromImplicitShape:()=>xk,isBoolean:()=>Bg,isFunction:()=>ka,isInt:()=>jt,isNumber:()=>Vg,isPromise:()=>tf,isScalarShape:()=>fk,isString:()=>va,isTypedArray:()=>sn,isValidDtype:()=>Lg,locToIndex:()=>bk,makeOnesTypedArray:()=>Q1,makeZerosNestedTypedArray:()=>_k,makeZerosTypedArray:()=>bh,nearestDivisor:()=>_h,nearestLargerEven:()=>ck,now:()=>Iu,parseAxisParam:()=>nr,randUniform:()=>dk,repeatedTry:()=>gk,rightPad:()=>ou,shuffle:()=>$g,shuffleCombo:()=>uk,sizeFromShape:()=>Dt,sizeToSquarishShape:()=>Ak,squeezeShape:()=>Dg,sum:()=>hk,tanh:()=>mk,toNestedArray:()=>Ki,toTypedArray:()=>nd});function Mk(e,t){return t==="string"?Su(e):nd([e],t)}function Dk(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function nd(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=is(e)),J().getBool("DEBUG")&&Pg(e,t),Dk(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},s,i=Iu();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(let o of r)o.dataSync();s=Promise.resolve({kernelMs:Iu()-i})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{Ok(u,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),r,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],a,o[2])})})}};function Ok(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${c} %c${u} %c${h} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function Lk(e,t,n){let r={},a={};for(let l=0;lr[m.id]=!0),p=!0,a[u.id]=!0;break}if(p)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let h=0;h=0;a--){let s=t[a],i=[];if(s.outputs.forEach(l=>{let u=e[l.id];u!=null?i.push(u):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let u=n(()=>o[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[l];if(!ta(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let h=e[c.id];e[c.id]=r(h,u),h.dispose()}}}}var Zg=20,Tu=3,of=7;function Vk(e,t,n,r){let a=Xi(t),s=Bk(e,t,n,a),i=t.length,o=ad(e,t,n,a,s),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(u=>" "+u).join(` +var Human=(()=>{var m8=Object.create,mh=Object.defineProperty,A8=Object.getPrototypeOf,y8=Object.prototype.hasOwnProperty,g8=Object.getOwnPropertyNames,x8=Object.getOwnPropertyDescriptor;var Z1=e=>mh(e,"__esModule",{value:!0});var Rg=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),er=(e,t)=>{for(var n in t)mh(e,n,{get:t[n],enumerable:!0})},w8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of g8(t))!y8.call(e,r)&&r!=="default"&&mh(e,r,{get:()=>t[r],enumerable:!(n=x8(t,r))||n.enumerable});return e},Ah=e=>w8(Z1(mh(e!=null?m8(A8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e);var Fg=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)},ve=(e,t,n)=>(Fg(e,t,"read from private field"),n?n.call(e):t.get(e)),ea=(e,t,n,r)=>(Fg(e,t,"write to private field"),r?r.call(e,n):t.set(e,n),n);var b6=Rg(_6=>{Z1(_6);er(_6,{MediaPipeFaceMesh:()=>_2,load:()=>Cae});var _2=class{constructor(t,n,r,a){this.facePipeline=new w2(t,n,r),this.config=a}async estimateFaces(t,n){let r=await this.facePipeline.predict(t,n),a=[];for(let s of r||[]){if(s.isDisposedInternal)continue;let i=s.coords?s.coords.arraySync():[],o=i.map(h=>[h[0]/t.shape[2],h[1]/t.shape[1],h[2]/this.facePipeline.meshSize]),l={};if(i&&i.length>0)for(let h of Object.keys(Gr))l[h]=Gr[h].map(d=>i[d]);let u=s.box?[Math.max(0,s.box.startPoint[0]),Math.max(0,s.box.startPoint[1]),Math.min(t.shape[1],s.box.endPoint[0])-s.box.startPoint[0],Math.min(t.shape[2],s.box.endPoint[1])-s.box.startPoint[1]]:0,c=s.box?[Math.max(0,s.box.startPoint[0]/t.shape[2]),Math.max(0,s.box.startPoint[1]/t.shape[1]),Math.min(t.shape[1],s.box.endPoint[0]-s.box.startPoint[0])/t.shape[2],Math.min(t.shape[2],s.box.endPoint[1]-s.box.startPoint[1])/t.shape[1]]:[];a.push({confidence:s.faceConfidence||s.boxConfidence||0,boxConfidence:s.boxConfidence,faceConfidence:s.faceConfidence,box:u,mesh:i,boxRaw:c,meshRaw:o,annotations:l,image:s.image?s.image.clone():null}),s.coords&&s.coords.dispose(),s.image&&s.image.dispose()}return a}},Mi=[null,null,null];async function Cae(e){Mi=await Promise.all([!Mi[0]&&e.face.enabled?f6(e):null,!Mi[1]&&e.face.mesh.enabled?Ft(e.face.mesh.modelPath,{fromTFHub:e.face.mesh.modelPath.includes("tfhub.dev")}):null,!Mi[2]&&e.face.iris.enabled?Ft(e.face.iris.modelPath,{fromTFHub:e.face.iris.modelPath.includes("tfhub.dev")}):null]);let t=new _2(Mi[0],Mi[1],Mi[2],e);return e.face.mesh.enabled&&e.debug&&Ce(`load model: ${e.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),e.face.iris.enabled&&e.debug&&Ce(`load model: ${e.face.iris.modelPath.match(/\/(.*)\./)[1]}`),t}_6.triangulation=Fi});var g0=Rg(H2=>{Z1(H2);er(H2,{NUM_KEYPOINTS:()=>$ae,connectedPartIndices:()=>Oae,partChannels:()=>Pae,partIds:()=>j2,partNames:()=>Mae,poseChain:()=>zae});var Mae=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],$ae=H2.partNames.length,j2=H2.partNames.reduce((e,t,n)=>(e[t]=n,e),{}),Dae=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],Oae=Dae.map(([e,t])=>[j2[e],j2[t]]),zae=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],Pae=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});var ase={};er(ase,{Human:()=>gg,default:()=>gg});function Ce(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function Mg(){let e,t;if(typeof navigator!="undefined"){let n=navigator.userAgent.match(/\(([^()]+)\)/g);n&&n[0]&&(e=n[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),t=navigator.userAgent.replace(n[0],""),e[1]&&(t=t.replace(n[1],"")),t=t.replace(/ /g," "))}else typeof process!="undefined"&&(e=`${process.platform} ${process.arch}`,t=`NodeJS ${process.version}`);return{platform:e,agent:t}}var yh={};er(yh,{Abs:()=>Zi,Acos:()=>Yi,Acosh:()=>Ji,AdadeltaOptimizer:()=>Ud,AdagradOptimizer:()=>Hd,AdamOptimizer:()=>jd,AdamaxOptimizer:()=>Gd,Add:()=>Na,AddN:()=>os,All:()=>vh,Any:()=>kh,ArgMax:()=>ls,ArgMin:()=>lu,Asin:()=>Qi,Asinh:()=>eo,Atan:()=>to,Atan2:()=>ro,Atanh:()=>no,AvgPool:()=>us,AvgPool3D:()=>uu,AvgPool3DGrad:()=>Ih,AvgPoolGrad:()=>Nh,BackendWasm:()=>w3,BatchMatMul:()=>cs,BatchToSpaceND:()=>cu,Bincount:()=>Sh,BroadcastTo:()=>Xg,Callback:()=>hv,CallbackList:()=>u7,Cast:()=>hs,Ceil:()=>ds,ClipByValue:()=>Ia,Complex:()=>Th,ComplexAbs:()=>hu,Concat:()=>ao,Conv2D:()=>ps,Conv2DBackpropFilter:()=>Ch,Conv2DBackpropInput:()=>fs,Conv3D:()=>du,Conv3DBackpropFilterV2:()=>Eh,Conv3DBackpropInputV2:()=>Rh,Cos:()=>ms,Cosh:()=>so,CropAndResize:()=>io,Cumsum:()=>As,CustomCallback:()=>h7,DataStorage:()=>xh,DenseBincount:()=>Fh,DepthToSpace:()=>oo,DepthwiseConv2dNative:()=>ys,DepthwiseConv2dNativeBackpropFilter:()=>Mh,DepthwiseConv2dNativeBackpropInput:()=>$h,Diag:()=>Dh,Dilation2D:()=>pu,Dilation2DBackpropFilter:()=>zh,Dilation2DBackpropInput:()=>Oh,ENV:()=>fr,EarlyStopping:()=>pv,Elu:()=>lo,EluGrad:()=>Ph,Environment:()=>Gg,Equal:()=>co,Erf:()=>uo,Exp:()=>xs,ExpandDims:()=>ho,Expm1:()=>po,FFT:()=>Lh,Fill:()=>fu,FlipLeftRight:()=>fo,Floor:()=>ws,FloorDiv:()=>_s,FromPixels:()=>ed,FusedBatchNorm:()=>bs,FusedConv2D:()=>ei,FusedDepthwiseConv2D:()=>ti,GPGPUContext:()=>up,GatherNd:()=>Ao,GatherV2:()=>mo,GraphModel:()=>Uv,Greater:()=>yo,GreaterEqual:()=>vs,History:()=>c7,IFFT:()=>Wh,Identity:()=>ks,Imag:()=>Bh,InputSpec:()=>Kt,IsFinite:()=>go,IsInf:()=>xo,IsNan:()=>wo,KernelBackend:()=>su,LRN:()=>yu,LRNGrad:()=>Uh,LayerVariable:()=>a7,LayersModel:()=>ha,LeakyRelu:()=>Ns,Less:()=>_o,LessEqual:()=>bo,LinSpace:()=>Vh,Log:()=>Is,Log1p:()=>vo,LogSoftmax:()=>Kg,LogicalAnd:()=>ko,LogicalNot:()=>mu,LogicalOr:()=>Au,MathBackendCPU:()=>Zd,MathBackendWebGL:()=>El,Max:()=>Ss,MaxPool:()=>Cs,MaxPool3D:()=>gu,MaxPool3DGrad:()=>jh,MaxPoolGrad:()=>Hh,MaxPoolWithArgmax:()=>Gh,Maximum:()=>Ts,Mean:()=>Es,Min:()=>Rs,Minimum:()=>Fs,MirrorPad:()=>xu,Mod:()=>No,MomentumOptimizer:()=>qd,Multinomial:()=>qh,Multiply:()=>Ms,Neg:()=>Io,NonMaxSuppressionV3:()=>To,NonMaxSuppressionV4:()=>Co,NonMaxSuppressionV5:()=>Eo,NotEqual:()=>So,OP_SCOPE_SUFFIX:()=>i5,OneHot:()=>$s,OnesLike:()=>Ro,Optimizer:()=>oa,Pack:()=>Fo,PadV2:()=>Ds,Pool:()=>Ek,Pow:()=>Os,Prelu:()=>zs,Prod:()=>Mo,RMSPropOptimizer:()=>Xd,RNN:()=>Hr,Range:()=>wu,Rank:()=>uf,Real:()=>Xh,RealDiv:()=>gs,Reciprocal:()=>$o,Reduction:()=>pn,Relu:()=>Ps,Relu6:()=>Ws,Reshape:()=>Do,ResizeBilinear:()=>Ls,ResizeBilinearGrad:()=>Zh,ResizeNearestNeighbor:()=>_u,ResizeNearestNeighborGrad:()=>Kh,Reverse:()=>Bs,RotateWithOffset:()=>Ko,Round:()=>Vs,Rsqrt:()=>Us,SGDOptimizer:()=>ec,ScatterNd:()=>Oo,Select:()=>zo,Selu:()=>Po,Sequential:()=>Wl,Sigmoid:()=>js,Sign:()=>Bo,Sin:()=>Hs,Sinh:()=>Wo,Slice:()=>Lo,Softmax:()=>Xs,Softplus:()=>Vo,SpaceToBatchND:()=>bu,SparseToDense:()=>Yh,SplitV:()=>Uo,Sqrt:()=>Gs,Square:()=>vu,SquaredDifference:()=>Ks,Step:()=>Ta,StridedSlice:()=>Ho,Sub:()=>Zs,Sum:()=>qs,SymbolicTensor:()=>kr,Tan:()=>jo,Tanh:()=>Ys,Tensor:()=>Ue,TensorBuffer:()=>Ot,Tile:()=>Sa,TopK:()=>Go,Transform:()=>Jh,Transpose:()=>Js,Unique:()=>Qh,Unpack:()=>qo,UnsortedSegmentSum:()=>ku,Variable:()=>Ru,ZerosLike:()=>Xo,_FusedMatMul:()=>Qs,abs:()=>zt,acos:()=>Df,acosh:()=>Of,add:()=>se,addN:()=>Ma,all:()=>dd,any:()=>Ou,argMax:()=>zu,argMin:()=>zf,asin:()=>Pf,asinh:()=>Lf,atan:()=>Wf,atan2:()=>Bf,atanh:()=>Vf,avgPool:()=>Lu,avgPool3d:()=>jf,backend:()=>B5,backend_util:()=>R,basicLSTMCell:()=>lI,batchNorm:()=>li,batchNorm2d:()=>j5,batchNorm3d:()=>G5,batchNorm4d:()=>q5,batchToSpaceND:()=>Wu,bincount:()=>X5,booleanMaskAsync:()=>pC,broadcastTo:()=>Bu,browser:()=>rl,buffer:()=>We,callbacks:()=>Mne,cast:()=>me,ceil:()=>Gf,clipByValue:()=>vn,clone:()=>Rr,complex:()=>Ca,concat:()=>st,concat1d:()=>K5,concat2d:()=>ll,concat3d:()=>Z5,concat4d:()=>Y5,constraints:()=>R3,conv1d:()=>fd,conv2d:()=>ra,conv2dTranspose:()=>md,conv3d:()=>Xf,conv3dTranspose:()=>EI,copyRegisteredKernels:()=>Mk,cos:()=>Vu,cosh:()=>Ad,cosineWindow:()=>_m,cumsum:()=>yd,customGrad:()=>$r,data:()=>Hv,denseBincount:()=>Q5,deprecationWarn:()=>Mf,depthToSpace:()=>Kf,depthwiseConv2d:()=>ul,deregisterOp:()=>Dne,device_util:()=>Mu,diag:()=>PI,dilation2d:()=>Zf,disableDeprecationWarnings:()=>bN,dispose:()=>Ee,disposeVariables:()=>vN,div:()=>ge,divNoNan:()=>Yf,dot:()=>ex,dropout:()=>_x,elu:()=>cl,enableDebugMode:()=>_N,enableProdMode:()=>wN,enclosingPowerOfTwo:()=>bx,engine:()=>Fr,env:()=>J,equal:()=>Da,erf:()=>Jf,exp:()=>qn,expandDims:()=>hn,expm1:()=>Qf,eye:()=>em,fft:()=>Ju,fill:()=>Uu,findBackend:()=>$f,findBackendFactory:()=>CN,floor:()=>hl,floorDiv:()=>hd,forceHalfFloat:()=>M_,fused:()=>La,gather:()=>ui,gatherND:()=>wx,gather_util:()=>If,getBackend:()=>SN,getGradient:()=>sf,getKernel:()=>td,getKernelsForBackend:()=>Yo,gpgpu_util:()=>r_,grad:()=>pS,grads:()=>fS,greater:()=>ar,greaterEqual:()=>za,ifft:()=>Al,imag:()=>gd,image:()=>Je,inTopKAsync:()=>kC,initializers:()=>P3,input:()=>Y3,io:()=>bn,irfft:()=>$d,isFinite:()=>tx,isInf:()=>nx,isNaN:()=>rx,keep:()=>Gt,kernel_impls:()=>Pr,layers:()=>Z3,leakyRelu:()=>Hu,less:()=>xd,lessEqual:()=>ci,linalg:()=>$x,linspace:()=>ax,loadGraphModel:()=>Ft,loadLayersModel:()=>Qte,localResponseNormalization:()=>tm,log:()=>Mn,log1p:()=>wd,logSigmoid:()=>ix,logSoftmax:()=>bd,logSumExp:()=>am,logicalAnd:()=>sr,logicalNot:()=>ju,logicalOr:()=>vd,logicalXor:()=>cx,losses:()=>BE,matMul:()=>Ge,math:()=>b5,max:()=>Xn,maxPool:()=>Gu,maxPool3d:()=>sm,maxPoolWithArgmax:()=>hx,maximum:()=>Dr,mean:()=>kt,memory:()=>cd,metrics:()=>lv,min:()=>pl,minimum:()=>fl,mirrorPad:()=>im,mod:()=>om,model:()=>Yte,models:()=>uv,moments:()=>kd,movingAverage:()=>AC,mul:()=>P,multiRNNCell:()=>US,multinomial:()=>dx,neg:()=>vt,nextFrame:()=>Kd,norm:()=>Pd,notEqual:()=>di,oneHot:()=>nl,ones:()=>Or,onesLike:()=>$n,op:()=>O,outerProduct:()=>XS,pad:()=>aa,pad1d:()=>YS,pad2d:()=>QS,pad3d:()=>tT,pad4d:()=>rT,pool:()=>px,pow:()=>sa,prelu:()=>Xu,print:()=>A5,prod:()=>Nd,profile:()=>gr,rand:()=>dT,randomGamma:()=>AT,randomNormal:()=>fx,randomUniform:()=>ml,range:()=>Id,ready:()=>IN,real:()=>Ku,reciprocal:()=>cm,registerBackend:()=>sl,registerCallbackConstructor:()=>ene,registerGradient:()=>Zg,registerKernel:()=>ni,registerOp:()=>$ne,regularizers:()=>cv,relu:()=>zr,relu6:()=>Sd,removeBackend:()=>TN,reshape:()=>G,reverse:()=>Dn,reverse1d:()=>NT,reverse2d:()=>ST,reverse3d:()=>CT,reverse4d:()=>RT,rfft:()=>Qu,round:()=>hm,rsqrt:()=>Td,scalar:()=>be,scatterND:()=>xx,scatter_util:()=>Sf,selu:()=>Cd,separableConv2d:()=>dm,sequential:()=>Jte,serialization:()=>re,setBackend:()=>NN,setPlatform:()=>EN,setWasmPath:()=>XZ,setWasmPaths:()=>KZ,setWebGLContext:()=>sp,setdiff1dAsync:()=>mx,shared:()=>Nm,sigmoid:()=>Fn,sign:()=>pm,signal:()=>WE,sin:()=>Ed,sinh:()=>Rd,slice:()=>Re,slice1d:()=>Fd,slice2d:()=>fm,slice3d:()=>Md,slice4d:()=>Zu,slice_util:()=>cn,softmax:()=>Yu,softplus:()=>dl,spaceToBatchND:()=>qu,sparseToDense:()=>wm,spectral:()=>LE,split:()=>Lt,sqrt:()=>en,square:()=>lt,squaredDifference:()=>Dd,squeeze:()=>Pa,stack:()=>dn,step:()=>yl,stridedSlice:()=>mm,sub:()=>ye,sum:()=>Te,sumOutType:()=>sd,tan:()=>Am,tanh:()=>ol,tensor:()=>yr,tensor1d:()=>on,tensor2d:()=>Nn,tensor3d:()=>ld,tensor4d:()=>rC,tensor5d:()=>aC,tensor6d:()=>sC,tensor_util:()=>mr,test_util:()=>P5,tidy:()=>B,tile:()=>Oa,time:()=>kN,topk:()=>ym,train:()=>fi,transpose:()=>at,truncatedNormal:()=>Od,unique:()=>zd,unregisterGradient:()=>Fk,unregisterKernel:()=>Rk,unsortedSegmentSum:()=>gm,unstack:()=>ir,upcastType:()=>rr,util:()=>v,valueAndGrad:()=>mS,valueAndGrads:()=>AS,variable:()=>Ax,variableGrads:()=>sx,version:()=>wae,version_converter:()=>$re,version_core:()=>xN,version_cpu:()=>cw,version_layers:()=>HA,version_wasm:()=>b3,version_webgl:()=>F_,webgl:()=>dL,webgl_util:()=>Rw,where:()=>kn,whereAsync:()=>xm,zeros:()=>Et,zerosLike:()=>He});var _8=Object.create,gh=Object.defineProperty,b8=Object.getPrototypeOf,v8=Object.prototype.hasOwnProperty,k8=Object.getOwnPropertyNames,N8=Object.getOwnPropertyDescriptor,I8=e=>gh(e,"__esModule",{value:!0}),et=(e,t)=>()=>(t||(t={exports:{}},e(t.exports,t)),t.exports),ze=(e,t)=>{for(var n in t)gh(e,n,{get:t[n],enumerable:!0})},S8=(e,t,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of k8(t))!v8.call(e,r)&&r!=="default"&&gh(e,r,{get:()=>t[r],enumerable:!(n=N8(t,r))||n.enumerable});return e},qi=e=>S8(I8(gh(e!=null?_8(b8(e)):{},"default",e&&e.__esModule&&"default"in e?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),T8=et(()=>{}),C8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),E8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),R8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),F8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),M8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),$8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y1=et(()=>{}),D8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=C8(),r=E8(),a=R8(),s=F8(),i=M8(),o=$8(),l=D8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),z8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),P8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),L8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),W8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),B8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),V8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),U8=et((e,t)=>{(function(n,r){var a=this,s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=z8(),r=P8(),a=L8(),s=W8(),i=B8(),o=V8(),l=U8();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),au=et(()=>{}),j8=et(()=>{}),G8=et(()=>{}),q8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};function s(){return Q.buffer!=Be&&Jt(Q.buffer),yn}function i(){return Q.buffer!=Be&&Jt(Q.buffer),_t}function o(){return Q.buffer!=Be&&Jt(Q.buffer),gn}function l(){return Q.buffer!=Be&&Jt(Q.buffer),Hn}function u(){return Q.buffer!=Be&&Jt(Q.buffer),un}var c=typeof a!="undefined"?a:{},h,d;c.ready=new Promise(function(N,C){h=N,d=C});var p={},f;for(f in c)c.hasOwnProperty(f)&&(p[f]=c[f]);var m=[],A="./this.program",y=function(N,C){throw C},g=!1,_=!1,b=!1,w=!1;g=typeof window=="object",_=typeof importScripts=="function",b=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",w=!g&&!b&&!_;var x=c.ENVIRONMENT_IS_PTHREAD||!1;x&&(Be=c.buffer);var I="";function S(N){return c.locateFile?c.locateFile(N,I):I+N}var T,M,D,z,W,U;if(b){_?I=au().dirname(I)+"/":I=__dirname+"/",T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C},process.argv.length>1&&(A=process.argv[1].replace(/\\/g,"/")),m=process.argv.slice(2),process.on("uncaughtException",function(N){if(!(N instanceof ru))throw N}),process.on("unhandledRejection",Yr),y=function(N){process.exit(N)},c.inspect=function(){return"[Emscripten Module object]"};var H;try{H=j8()}catch(N){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),N}global.Worker=H.Worker}else w?(typeof read!="undefined"&&(T=function(N){return read(N)}),D=function(N){var C;return typeof readbuffer=="function"?new Uint8Array(readbuffer(N)):(C=read(N,"binary"),pe(typeof C=="object"),C)},typeof scriptArgs!="undefined"?m=scriptArgs:typeof arguments!="undefined"&&(m=arguments),typeof quit=="function"&&(y=function(N){quit(N)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(g||_)&&(_?I=self.location.href:typeof document!="undefined"&&document.currentScript&&(I=document.currentScript.src),typeof r!="undefined"&&r&&(I=r),I.indexOf("blob:")!==0?I=I.substr(0,I.lastIndexOf("/")+1):I="",b?(T=function(N,C){return W||(W=require("fs")),U||(U=au()),N=U.normalize(N),W.readFileSync(N,C?null:"utf8")},D=function(N){var C=T(N,!0);return C.buffer||(C=new Uint8Array(C)),pe(C.buffer),C}):(T=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.send(null),C.responseText},_&&(D=function(N){var C=new XMLHttpRequest;return C.open("GET",N,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),M=function(N,C,L){var q=new XMLHttpRequest;q.open("GET",N,!0),q.responseType="arraybuffer",q.onload=function(){if(q.status==200||q.status==0&&q.response){C(q.response);return}L()},q.onerror=L,q.send(null)}),z=function(N){document.title=N});b&&typeof performance=="undefined"&&(global.performance=G8().performance);var X=c.print||console.log.bind(console),j=c.printErr||console.warn.bind(console);for(f in p)p.hasOwnProperty(f)&&(c[f]=p[f]);p=null,c.arguments&&(m=c.arguments),c.thisProgram&&(A=c.thisProgram),c.quit&&(y=c.quit);var ee=Atomics.load,Y=Atomics.store,ae=Atomics.compareExchange,te;c.wasmBinary&&(te=c.wasmBinary);var ie=c.noExitRuntime||!0;typeof WebAssembly!="object"&&Yr("no native wasm support detected");var Q,he,oe=!1,fe;function pe(N,C){N||Yr("Assertion failed: "+C)}function ke(N){var C=c["_"+N];return pe(C,"Cannot call unknown function "+N+", make sure it is exported"),C}function Ie(N,C,L,q,de){var le={string:function(_n){var Gi=0;if(_n!=null&&_n!==0){var Eg=(_n.length<<2)+1;Gi=Ui(Eg),nt(_n,Gi,Eg)}return Gi},array:function(_n){var Gi=Ui(_n.length);return Ze(_n,Gi),Gi}};function ue(_n){return C==="string"?$e(_n):C==="boolean"?Boolean(_n):_n}var we=ke(N),rt=[],Ht=0;if(q)for(var $t=0;$t=q);){var le=N[C++];if(!le)return de;if(!(le&128)){de+=String.fromCharCode(le);continue}var ue=N[C++]&63;if((le&224)==192){de+=String.fromCharCode((le&31)<<6|ue);continue}var we=N[C++]&63;if((le&240)==224?le=(le&15)<<12|ue<<6|we:le=(le&7)<<18|ue<<12|we<<6|N[C++]&63,le<65536)de+=String.fromCharCode(le);else{var rt=le-65536;de+=String.fromCharCode(55296|rt>>10,56320|rt&1023)}}return de}function $e(N,C){return N?Oe(i(),N,C):""}function tt(N,C,L,q){if(!(q>0))return 0;for(var de=L,le=L+q-1,ue=0;ue=55296&&we<=57343){var rt=N.charCodeAt(++ue);we=65536+((we&1023)<<10)|rt&1023}if(we<=127){if(L>=le)break;C[L++]=we}else if(we<=2047){if(L+1>=le)break;C[L++]=192|we>>6,C[L++]=128|we&63}else if(we<=65535){if(L+2>=le)break;C[L++]=224|we>>12,C[L++]=128|we>>6&63,C[L++]=128|we&63}else{if(L+3>=le)break;C[L++]=240|we>>18,C[L++]=128|we>>12&63,C[L++]=128|we>>6&63,C[L++]=128|we&63}}return C[L]=0,L-de}function nt(N,C,L){return tt(N,i(),C,L)}function ot(N){for(var C=0,L=0;L=55296&&q<=57343&&(q=65536+((q&1023)<<10)|N.charCodeAt(++L)&1023),q<=127?++C:q<=2047?C+=2:q<=65535?C+=3:C+=4}return C}function Ze(N,C){s().set(N,C)}function pt(N,C){return N%C>0&&(N+=C-N%C),N}var Be,yn,_t,Un,Yt,gn,Hn,Rn,un;function Jt(N){Be=N,c.HEAP8=yn=new Int8Array(N),c.HEAP16=Un=new Int16Array(N),c.HEAP32=gn=new Int32Array(N),c.HEAPU8=_t=new Uint8Array(N),c.HEAPU16=Yt=new Uint16Array(N),c.HEAPU32=Hn=new Uint32Array(N),c.HEAPF32=Rn=new Float32Array(N),c.HEAPF64=un=new Float64Array(N)}var Tr=c.INITIAL_MEMORY||16777216;if(x)Q=c.wasmMemory,Be=c.buffer;else if(c.wasmMemory)Q=c.wasmMemory;else if(Q=new WebAssembly.Memory({initial:Tr/65536,maximum:2147483648/65536,shared:!0}),!(Q.buffer instanceof SharedArrayBuffer))throw j("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),b&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");Q&&(Be=Q.buffer),Tr=Be.byteLength,Jt(Be);var Jn,Qn=[],Aa=[],Kr=[],ya=[],Di=[],pr=!1,Gc=!1;x||Aa.push({func:function(){lh()}}),x&&(pr=!0);function D0(){if(!x){if(c.preRun)for(typeof c.preRun=="function"&&(c.preRun=[c.preRun]);c.preRun.length;)Kc(c.preRun.shift());zi(Qn)}}function qc(){pr=!0,zi(Aa)}function O0(){x||zi(Kr)}function Xc(){x||(Gc=!0)}function xn(){if(!x){if(c.postRun)for(typeof c.postRun=="function"&&(c.postRun=[c.postRun]);c.postRun.length;)z0(c.postRun.shift());zi(Di)}}function Kc(N){Qn.unshift(N)}function z0(N){Di.unshift(N)}var Zr=0,ga=null,ns=null;function P0(N){pe(!x,"addRunDependency cannot be used in a pthread worker"),Zr++,c.monitorRunDependencies&&c.monitorRunDependencies(Zr)}function L0(N){if(Zr--,c.monitorRunDependencies&&c.monitorRunDependencies(Zr),Zr==0&&(ga!==null&&(clearInterval(ga),ga=null),ns)){var C=ns;ns=null,C()}}c.preloadedImages={},c.preloadedAudios={};function Yr(N){c.onAbort&&c.onAbort(N),x&&console.error("Pthread aborting at "+new Error().stack),N+="",j(N),oe=!0,fe=1,N="abort("+N+"). Build with -s ASSERTIONS=1 for more info.";var C=new WebAssembly.RuntimeError(N);throw d(C),C}function Zc(N,C){return String.prototype.startsWith?N.startsWith(C):N.indexOf(C)===0}var Oi="data:application/octet-stream;base64,";function Yc(N){return Zc(N,Oi)}var W0="file://";function Jc(N){return Zc(N,W0)}var wn="tfjs-backend-wasm-threaded-simd.wasm";Yc(wn)||(wn=S(wn));function B0(N){try{if(N==wn&&te)return new Uint8Array(te);if(D)return D(N);throw"both async and sync fetching of the wasm failed"}catch(C){Yr(C)}}function Qc(){if(!te&&(g||_)){if(typeof fetch=="function"&&!Jc(wn))return fetch(wn,{credentials:"same-origin"}).then(function(N){if(!N.ok)throw"failed to load wasm binary file at '"+wn+"'";return N.arrayBuffer()}).catch(function(){return B0(wn)});if(M)return new Promise(function(N,C){M(wn,function(L){N(new Uint8Array(L))},C)})}return Promise.resolve().then(function(){return B0(wn)})}function V0(){var N={a:F1};function C(ue,we){var rt=ue.exports;if(c.asm=rt,Jn=c.asm.F,he=we,!x){var Ht=Ne.unusedWorkers.length;Ne.unusedWorkers.forEach(function($t){Ne.loadWasmModuleToWorker($t,function(){--Ht||L0("wasm-instantiate")})})}}x||P0("wasm-instantiate");function L(ue){C(ue.instance,ue.module)}function q(ue){return Qc().then(function(we){return WebAssembly.instantiate(we,N)}).then(ue,function(we){j("failed to asynchronously prepare wasm: "+we),Yr(we)})}function de(){return!te&&typeof WebAssembly.instantiateStreaming=="function"&&!Yc(wn)&&!Jc(wn)&&typeof fetch=="function"?fetch(wn,{credentials:"same-origin"}).then(function(ue){var we=WebAssembly.instantiateStreaming(ue,N);return we.then(L,function(rt){return j("wasm streaming compile failed: "+rt),j("falling back to ArrayBuffer instantiation"),q(L)})}):q(L)}if(c.instantiateWasm)try{var le=c.instantiateWasm(N,C);return le}catch(ue){return j("Module.instantiateWasm callback failed with error: "+ue),!1}return de().catch(d),{}}var eh={8991:function(N,C){setTimeout(function(){kg(N,C)},0)}};function U0(){Ne.initRuntime()}function zi(N){for(;N.length>0;){var C=N.shift();if(typeof C=="function"){C(c);continue}var L=C.func;typeof L=="number"?C.arg===void 0?Jn.get(L)():Jn.get(L)(C.arg):L(C.arg===void 0?null:C.arg)}}function Pi(N,C){if(N<=0||N>s().length||N&!0||C<0)return-28;if(C==0)return 0;C>=2147483647&&(C=Infinity);var L=Atomics.load(o(),Hi>>2),q=0;if(L==N){var de=Atomics.compareExchange(o(),Hi>>2,L,0);if(de==L&&(--C,q=1,C<=0))return 1}var le=Atomics.notify(o(),N>>2,C);if(le>=0)return le+q;throw"Atomics.notify returned an unexpected value "+le}c._emscripten_futex_wake=Pi;function H0(N){if(x)throw"Internal Error! killThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in killThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];C.worker.terminate(),Ne.freeThreadData(C),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(C.worker),1),C.worker.pthread=void 0}function j0(N){if(x)throw"Internal Error! cancelThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cancelThread!";var C=Ne.pthreads[N];C.worker.postMessage({cmd:"cancel"})}function G0(N){if(x)throw"Internal Error! cleanupThread() can only ever be called from main application thread!";if(!N)throw"Internal Error! Null pthread_ptr in cleanupThread!";o()[N+12>>2]=0;var C=Ne.pthreads[N];if(C){var L=C.worker;Ne.returnWorkerToPool(L)}}var Ne={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){for(var N=8,C=0;C>2]=N;var L=N+152;o()[L>>2]=L;for(var q=as(512),C=0;C<128;++C)l()[q/4+C]=0;Atomics.store(l(),N+100>>2,q),Atomics.store(l(),N+40>>2,N),ph(N,!_,1),vg(N)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){for(;Ne.threadExitHandlers.length>0;)Ne.threadExitHandlers.pop()();x&&Bi()&&bg()},threadExit:function(N){var C=Bi();C&&(Atomics.store(l(),C+4>>2,N),Atomics.store(l(),C+0>>2,1),Atomics.store(l(),C+56>>2,1),Atomics.store(l(),C+60>>2,0),Ne.runExitHandlers(),Pi(C+0,2147483647),ph(0,0,0),x&&postMessage({cmd:"exit"}))},threadCancel:function(){Ne.runExitHandlers();var N=Bi();Atomics.store(l(),N+4>>2,-1),Atomics.store(l(),N+0>>2,1),Pi(N+0,2147483647),ph(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var N in Ne.pthreads){var C=Ne.pthreads[N];C&&C.worker&&Ne.returnWorkerToPool(C.worker)}Ne.pthreads={};for(var L=0;L>2];o()[N.threadInfoStruct+100>>2]=0,tu(C),tu(N.threadInfoStruct)}N.threadInfoStruct=0,N.allocatedOwnStack&&N.stackBase&&tu(N.stackBase),N.stackBase=0,N.worker&&(N.worker.pthread=null)}},returnWorkerToPool:function(N){Ne.runWithoutMainThreadQueuedCalls(function(){delete Ne.pthreads[N.pthread.threadInfoStruct],Ne.unusedWorkers.push(N),Ne.runningWorkers.splice(Ne.runningWorkers.indexOf(N),1),Ne.freeThreadData(N.pthread),N.pthread=void 0})},runWithoutMainThreadQueuedCalls:function(N){o()[Cg>>2]=0;try{N()}finally{o()[Cg>>2]=1}},receiveObjectTransfer:function(N){},loadWasmModuleToWorker:function(N,C){N.onmessage=function(L){var q=L.data,de=q.cmd;if(N.pthread&&(Ne.currentProxiedOperationCallerThread=N.pthread.threadInfoStruct),q.targetThread&&q.targetThread!=Bi()){var le=Ne.pthreads[q.targetThread];le?le.worker.postMessage(L.data,q.transferList):console.error('Internal error! Worker sent a message "'+de+'" to target pthread '+q.targetThread+", but that thread no longer exists!"),Ne.currentProxiedOperationCallerThread=void 0;return}if(de==="processQueuedMainThreadWork")q1();else if(de==="spawnThread")ih(L.data);else if(de==="cleanupThread")G0(q.thread);else if(de==="killThread")H0(q.thread);else if(de==="cancelThread")j0(q.thread);else if(de==="loaded")N.loaded=!0,C&&C(N),N.runPthread&&(N.runPthread(),delete N.runPthread);else if(de==="print")X("Thread "+q.threadId+": "+q.text);else if(de==="printErr")j("Thread "+q.threadId+": "+q.text);else if(de==="alert")alert("Thread "+q.threadId+": "+q.text);else if(de==="exit"){var ue=N.pthread&&Atomics.load(l(),N.pthread.threadInfoStruct+64>>2);ue&&Ne.returnWorkerToPool(N)}else if(de==="exitProcess")try{f8(q.returnCode)}catch(we){if(we instanceof ru)return;throw we}else de==="cancelDone"?Ne.returnWorkerToPool(N):de==="objectTransfer"?Ne.receiveObjectTransfer(L.data):L.data.target==="setimmediate"?N.postMessage(L.data):j("worker sent an unknown command "+de);Ne.currentProxiedOperationCallerThread=void 0},N.onerror=function(L){j("pthread sent an error! "+L.filename+":"+L.lineno+": "+L.message)},b&&(N.on("message",function(L){N.onmessage({data:L})}),N.on("error",function(L){N.onerror(L)}),N.on("exit",function(L){})),N.postMessage({cmd:"load",urlOrBlob:c.mainScriptUrlOrBlob||r,wasmMemory:Q,wasmModule:he})},allocateUnusedWorker:function(){var N=S("tfjs-backend-wasm-threaded-simd.worker.js");Ne.unusedWorkers.push(new Worker(N))},getNewWorker:function(){return Ne.unusedWorkers.length==0&&(Ne.allocateUnusedWorker(),Ne.loadWasmModuleToWorker(Ne.unusedWorkers[0])),Ne.unusedWorkers.length>0?Ne.unusedWorkers.pop():null},busySpinWait:function(N){for(var C=performance.now()+N;performance.now()>2]=N,N}function Q0(N,C){if(x)return xa(1,1,N,C)}function e1(N,C){if(N==C)postMessage({cmd:"processQueuedMainThreadWork"});else if(x)postMessage({targetThread:N,cmd:"processThreadQueue"});else{var L=Ne.pthreads[N],q=L&&L.worker;if(!q)return;q.postMessage({cmd:"processThreadQueue"})}return 1}function t1(){Yr()}function n1(N,C,L){var q=o1(C,L);return eh[N].apply(null,q)}function r1(N,C){}function a1(N,C,L){if(N<=0||N>s().length||N&!0)return-28;if(g){if(Atomics.load(o(),N>>2)!=C)return-6;for(var q=performance.now(),de=q+L,le=Atomics.exchange(o(),Hi>>2,N);;){if(q=performance.now(),q>de)return le=Atomics.exchange(o(),Hi>>2,0),-73;if(le=Atomics.exchange(o(),Hi>>2,0),le==0)break;if(q1(),Atomics.load(o(),N>>2)!=C)return-6;le=Atomics.exchange(o(),Hi>>2,N)}return 0}else{var ue=Atomics.wait(o(),N>>2,C,L);if(ue==="timed-out")return-73;if(ue==="not-equal")return-6;if(ue==="ok")return 0;throw"Atomics.wait returned an unexpected value "+ue}}function s1(N,C,L){i().copyWithin(N,C,C+L)}function i1(){return b?require("os").cpus().length:navigator.hardwareConcurrency}function xa(N,C){for(var L=arguments.length-2,q=nu(),de=L,le=Ui(de*8),ue=le>>3,we=0;we>=2;L=i()[N++];){var q=L<105;q&&C&1&&C++,Zl.push(q?u()[C++>>1]:o()[C]),++C}return Zl}function l1(N,C,L){Kl.length=C;for(var q=L>>3,de=0;de>>16),Jt(Q.buffer),1}catch(C){}}function h1(N){var C=u1();if(N<=C)return!1;var L=2147483648;if(N>L)return!1;for(var q=1;q<=4;q*=2){var de=C*(1+.2/q);de=Math.min(de,N+100663296);var le=Math.min(L,pt(Math.max(N,de),65536)),ue=c1(le);if(ue)return!0}return!1}var Le={inEventHandler:0,removeAllEventListeners:function(){for(var N=Le.eventHandlers.length-1;N>=0;--N)Le._removeHandler(N);Le.eventHandlers=[],Le.deferredCalls=[]},registerRemoveEventListeners:function(){Le.removeEventListenersRegistered||(ya.push(Le.removeAllEventListeners),Le.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(N,C,L){function q(ue,we){if(ue.length!=we.length)return!1;for(var rt in ue)if(ue[rt]!=we[rt])return!1;return!0}for(var de in Le.deferredCalls){var le=Le.deferredCalls[de];if(le.targetFunction==N&&q(le.argsList,L))return}Le.deferredCalls.push({targetFunction:N,precedence:C,argsList:L}),Le.deferredCalls.sort(function(ue,we){return ue.precedence>2]=L,o()[ue+4>>2]=q,o()[ue+8>>2]=de,X1(0,N,637534208,C,q,ue),Vi(le)},getTargetThreadForEventCallback:function(N){switch(N){case 1:return 0;case 2:return Ne.currentProxiedOperationCallerThread;default:return N}},getNodeNameForTarget:function(N){return N?N==window?"#window":N==screen?"#screen":N&&N.nodeName?N.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function d1(N){var C=ot(N)+1,L=as(C);return nt(N,L,C),L}function p1(N,C,L,q){var de=nu(),le=Ui(12),ue=0;C&&(ue=d1(C)),o()[le>>2]=ue,o()[le+4>>2]=L,o()[le+8>>2]=q,X1(0,N,657457152,0,ue,le),Vi(de)}function f1(N,C,L,q){C=C?$e(C):"",p1(N,C,L,q)}function m1(N){return N>2?$e(N):N}var A1=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function y1(N){N=m1(N);var C=A1[N]||(typeof document!="undefined"?document.querySelector(N):void 0);return C}function Yl(N){return y1(N)}function th(N,C,L){var q=Yl(N);if(!q)return-4;if(q.canvasSharedPtr&&(o()[q.canvasSharedPtr>>2]=C,o()[q.canvasSharedPtr+4>>2]=L),q.offscreenCanvas||!q.controlTransferredOffscreen){q.offscreenCanvas&&(q=q.offscreenCanvas);var de=!1;if(q.GLctxObject&&q.GLctxObject.GLctx){var le=q.GLctxObject.GLctx.getParameter(2978);de=le[0]===0&&le[1]===0&&le[2]===q.width&&le[3]===q.height}q.width=C,q.height=L,de&&q.GLctxObject.GLctx.viewport(0,0,C,L)}else if(q.canvasSharedPtr){var ue=o()[q.canvasSharedPtr+8>>2];return f1(ue,N,C,L),1}else return-4;return 0}function nh(N,C,L){return x?xa(2,1,N,C,L):th(N,C,L)}function g1(N,C,L){var q=Yl(N);return q?th(N,C,L):nh(N,C,L)}function x1(N){}function w1(N,C){}function _1(N){var C=N.getExtension("ANGLE_instanced_arrays");if(C)return N.vertexAttribDivisor=function(L,q){C.vertexAttribDivisorANGLE(L,q)},N.drawArraysInstanced=function(L,q,de,le){C.drawArraysInstancedANGLE(L,q,de,le)},N.drawElementsInstanced=function(L,q,de,le,ue){C.drawElementsInstancedANGLE(L,q,de,le,ue)},1}function b1(N){var C=N.getExtension("OES_vertex_array_object");if(C)return N.createVertexArray=function(){return C.createVertexArrayOES()},N.deleteVertexArray=function(L){C.deleteVertexArrayOES(L)},N.bindVertexArray=function(L){C.bindVertexArrayOES(L)},N.isVertexArray=function(L){return C.isVertexArrayOES(L)},1}function v1(N){var C=N.getExtension("WEBGL_draw_buffers");if(C)return N.drawBuffers=function(L,q){C.drawBuffersWEBGL(L,q)},1}function k1(N){return!!(N.multiDrawWebgl=N.getExtension("WEBGL_multi_draw"))}var Qe={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function(N){Qe.lastError||(Qe.lastError=N)},getNewId:function(N){for(var C=Qe.counter++,L=N.length;L>2]:-1;de+=$e(o()[L+le*4>>2],ue<0?void 0:ue)}return de},createContext:function(N,C){var L=N.getContext("webgl",C);if(!L)return 0;var q=Qe.registerContext(L,C);return q},registerContext:function(N,C){var L=as(8);o()[L+4>>2]=Bi();var q={handle:L,attributes:C,version:C.majorVersion,GLctx:N};return N.canvas&&(N.canvas.GLctxObject=q),Qe.contexts[L]=q,(typeof C.enableExtensionsByDefault=="undefined"||C.enableExtensionsByDefault)&&Qe.initExtensions(q),L},makeContextCurrent:function(N){return Qe.currentContext=Qe.contexts[N],c.ctx=wa=Qe.currentContext&&Qe.currentContext.GLctx,!(N&&!wa)},getContext:function(N){return Qe.contexts[N]},deleteContext:function(N){Qe.currentContext===Qe.contexts[N]&&(Qe.currentContext=null),typeof Le=="object"&&Le.removeAllHandlersOnTarget(Qe.contexts[N].GLctx.canvas),Qe.contexts[N]&&Qe.contexts[N].GLctx.canvas&&(Qe.contexts[N].GLctx.canvas.GLctxObject=void 0),tu(Qe.contexts[N].handle),Qe.contexts[N]=null},initExtensions:function(N){if(N||(N=Qe.currentContext),!N.initExtensionsDone){N.initExtensionsDone=!0;var C=N.GLctx;_1(C),b1(C),v1(C),C.disjointTimerQueryExt=C.getExtension("EXT_disjoint_timer_query"),k1(C);var L=C.getSupportedExtensions()||[];L.forEach(function(q){q.indexOf("lose_context")<0&&q.indexOf("debug")<0&&C.getExtension(q)})}},populateUniformTable:function(N){for(var C=Qe.programs[N],L=Qe.programInfos[N]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},q=L.uniforms,de=wa.getProgramParameter(C,35718),le=0;le>2,q=o()[L+(24>>2)],de={alpha:!!o()[L+(0>>2)],depth:!!o()[L+(4>>2)],stencil:!!o()[L+(8>>2)],antialias:!!o()[L+(12>>2)],premultipliedAlpha:!!o()[L+(16>>2)],preserveDrawingBuffer:!!o()[L+(20>>2)],powerPreference:N1[q],failIfMajorPerformanceCaveat:!!o()[L+(28>>2)],majorVersion:o()[L+(32>>2)],minorVersion:o()[L+(36>>2)],enableExtensionsByDefault:o()[L+(40>>2)],explicitSwapControl:o()[L+(44>>2)],proxyContextToMainThread:o()[L+(48>>2)],renderViaOffscreenBackBuffer:o()[L+(52>>2)]},le=Yl(N);if(!le||de.explicitSwapControl)return 0;var ue=Qe.createContext(le,de);return ue}function S1(N,C){return I1(N,C)}var Li={mappings:{},buffers:[null,[],[]],printChar:function(N,C){var L=Li.buffers[N];C===0||C===10?((N===1?X:j)(Oe(L,0)),L.length=0):L.push(C)},varargs:void 0,get:function(){Li.varargs+=4;var N=o()[Li.varargs-4>>2];return N},getStr:function(N){var C=$e(N);return C},get64:function(N,C){return N}};function rh(N){return x?xa(3,1,N):0}function ah(N,C,L,q,de){if(x)return xa(4,1,N,C,L,q,de)}function sh(N,C,L,q){if(x)return xa(5,1,N,C,L,q);for(var de=0,le=0;le>2],we=o()[C+(le*8+4)>>2],rt=0;rt>2]=de,0}function T1(N){var C=Ne.threadExitHandlers.pop();N&&C()}function C1(N,C){Ne.threadExitHandlers.push(function(){Jn.get(N)(C)})}function ih(N){if(x)throw"Internal Error! spawnThread() can only ever be called from main application thread!";var C=Ne.getNewWorker();if(C.pthread!==void 0)throw"Internal error!";if(!N.pthread_ptr)throw"Internal error, no pthread ptr!";Ne.runningWorkers.push(C);for(var L=as(128*4),q=0;q<128;++q)o()[L+q*4>>2]=0;var de=N.stackBase+N.stackSize,le=Ne.pthreads[N.pthread_ptr]={worker:C,stackBase:N.stackBase,stackSize:N.stackSize,allocatedOwnStack:N.allocatedOwnStack,threadInfoStruct:N.pthread_ptr},ue=le.threadInfoStruct>>2;Atomics.store(l(),ue+(64>>2),N.detached),Atomics.store(l(),ue+(100>>2),L),Atomics.store(l(),ue+(40>>2),le.threadInfoStruct),Atomics.store(l(),ue+(80>>2),N.stackSize),Atomics.store(l(),ue+(76>>2),de),Atomics.store(l(),ue+(104>>2),N.stackSize),Atomics.store(l(),ue+(104+8>>2),de),Atomics.store(l(),ue+(104+12>>2),N.detached);var we=_g(),rt=we+40;Atomics.store(l(),ue+(172>>2),rt),C.pthread=le;var Ht={cmd:"run",start_routine:N.startRoutine,arg:N.arg,threadInfoStruct:N.pthread_ptr,stackBase:N.stackBase,stackSize:N.stackSize};C.runPthread=function(){Ht.time=performance.now(),C.postMessage(Ht,N.transferList)},C.loaded&&(C.runPthread(),delete C.runPthread)}function E1(N,C,L,q){if(typeof SharedArrayBuffer=="undefined")return j("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!N)return j("pthread_create called with a null thread pointer!"),28;var de=[],le=0;if(x&&(de.length===0||le))return Ng(687865856,N,C,L,q);if(le)return le;var ue=0,we=0,rt=0;C&&C!=-1?(ue=o()[C>>2],ue+=81920,we=o()[C+8>>2],rt=o()[C+12>>2]!==0):ue=2097152;var Ht=we==0;Ht?we=Tg(16,ue):(we-=ue,pe(we>0));for(var $t=as(228),ba=0;ba<228>>2;++ba)l()[($t>>2)+ba]=0;o()[N>>2]=$t,o()[$t+12>>2]=$t;var ji=$t+152;o()[ji>>2]=ji;var _n={stackBase:we,stackSize:ue,allocatedOwnStack:Ht,detached:rt,startRoutine:L,pthread_ptr:$t,arg:q,transferList:de};return x?(_n.cmd="spawnThread",postMessage(_n,de)):ih(_n),0}function oh(N){if(x)return xa(6,1,N);switch(N){case 30:return 16384;case 85:var C=2147483648;return C/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return typeof navigator=="object"&&navigator.hardwareConcurrency||1}return J0(28),-1}x||Ne.initMainThreadBlock();var wa,R1=[null,Q0,nh,rh,ah,sh,oh],F1={e:Z0,r:Y0,x:e1,b:t1,y:n1,j:r1,c:a1,d:Pi,f:rs,p:s1,z:i1,u:l1,q:h1,v:g1,i:x1,t:w1,w:S1,m:rh,n:ah,g:sh,o:U0,a:Q||c.wasmMemory,k:T1,l:C1,h:E1,s:oh},xg=V0(),lh=c.___wasm_call_ctors=function(){return(lh=c.___wasm_call_ctors=c.asm.A).apply(null,arguments)},M1=c._init=function(){return(M1=c._init=c.asm.B).apply(null,arguments)},$1=c._register_tensor=function(){return($1=c._register_tensor=c.asm.C).apply(null,arguments)},D1=c._dispose_data=function(){return(D1=c._dispose_data=c.asm.D).apply(null,arguments)},O1=c._dispose=function(){return(O1=c._dispose=c.asm.E).apply(null,arguments)},z1=c._Abs=function(){return(z1=c._Abs=c.asm.G).apply(null,arguments)},P1=c._Add=function(){return(P1=c._Add=c.asm.H).apply(null,arguments)},L1=c._AddN=function(){return(L1=c._AddN=c.asm.I).apply(null,arguments)},W1=c._ArgMax=function(){return(W1=c._ArgMax=c.asm.J).apply(null,arguments)},B1=c._AvgPool=function(){return(B1=c._AvgPool=c.asm.K).apply(null,arguments)},V1=c._BatchMatMul=function(){return(V1=c._BatchMatMul=c.asm.L).apply(null,arguments)},U1=c._Ceil=function(){return(U1=c._Ceil=c.asm.M).apply(null,arguments)},H1=c._ClipByValue=function(){return(H1=c._ClipByValue=c.asm.N).apply(null,arguments)},j1=c._Conv2D=function(){return(j1=c._Conv2D=c.asm.O).apply(null,arguments)},uh=c._Conv2DBackpropInput=function(){return(uh=c._Conv2DBackpropInput=c.asm.P).apply(null,arguments)},ch=c._Cos=function(){return(ch=c._Cos=c.asm.Q).apply(null,arguments)},Jl=c._CropAndResize=function(){return(Jl=c._CropAndResize=c.asm.R).apply(null,arguments)},Wi=c._Cumsum=function(){return(Wi=c._Cumsum=c.asm.S).apply(null,arguments)},G1=c._DepthToSpace=function(){return(G1=c._DepthToSpace=c.asm.T).apply(null,arguments)},Ql=c._DepthwiseConv2dNative=function(){return(Ql=c._DepthwiseConv2dNative=c.asm.U).apply(null,arguments)},K=c._Equal=function(){return(K=c._Equal=c.asm.V).apply(null,arguments)},ne=c._Exp=function(){return(ne=c._Exp=c.asm.W).apply(null,arguments)},Se=c._FlipLeftRight=function(){return(Se=c._FlipLeftRight=c.asm.X).apply(null,arguments)},Ye=c._Floor=function(){return(Ye=c._Floor=c.asm.Y).apply(null,arguments)},It=c._FloorDiv=function(){return(It=c._FloorDiv=c.asm.Z).apply(null,arguments)},At=c._FusedBatchNorm=function(){return(At=c._FusedBatchNorm=c.asm._).apply(null,arguments)},Ve=c._FusedConv2D=function(){return(Ve=c._FusedConv2D=c.asm.$).apply(null,arguments)},je=c._FusedDepthwiseConv2D=function(){return(je=c._FusedDepthwiseConv2D=c.asm.aa).apply(null,arguments)},Qt=c._Gather=function(){return(Qt=c._Gather=c.asm.ba).apply(null,arguments)},Jr=c._GatherNd=function(){return(Jr=c._GatherNd=c.asm.ca).apply(null,arguments)},Qr=c._Greater=function(){return(Qr=c._Greater=c.asm.da).apply(null,arguments)},hh=c._GreaterEqual=function(){return(hh=c._GreaterEqual=c.asm.ea).apply(null,arguments)},eu=c._LeakyRelu=function(){return(eu=c._LeakyRelu=c.asm.fa).apply(null,arguments)},jn=c._Less=function(){return(jn=c._Less=c.asm.ga).apply(null,arguments)},_a=c._LessEqual=function(){return(_a=c._LessEqual=c.asm.ha).apply(null,arguments)},dh=c._Log=function(){return(dh=c._Log=c.asm.ia).apply(null,arguments)},v4=c._LogicalAnd=function(){return(v4=c._LogicalAnd=c.asm.ja).apply(null,arguments)},k4=c._Max=function(){return(k4=c._Max=c.asm.ka).apply(null,arguments)},N4=c._MaxPool=function(){return(N4=c._MaxPool=c.asm.la).apply(null,arguments)},I4=c._Maximum=function(){return(I4=c._Maximum=c.asm.ma).apply(null,arguments)},S4=c._Mean=function(){return(S4=c._Mean=c.asm.na).apply(null,arguments)},T4=c._Min=function(){return(T4=c._Min=c.asm.oa).apply(null,arguments)},C4=c._Minimum=function(){return(C4=c._Minimum=c.asm.pa).apply(null,arguments)},E4=c._Multiply=function(){return(E4=c._Multiply=c.asm.qa).apply(null,arguments)},R4=c._Neg=function(){return(R4=c._Neg=c.asm.ra).apply(null,arguments)},F4=c._NonMaxSuppressionV3=function(){return(F4=c._NonMaxSuppressionV3=c.asm.sa).apply(null,arguments)},M4=c._NonMaxSuppressionV4=function(){return(M4=c._NonMaxSuppressionV4=c.asm.ta).apply(null,arguments)},$4=c._NonMaxSuppressionV5=function(){return($4=c._NonMaxSuppressionV5=c.asm.ua).apply(null,arguments)},D4=c._NotEqual=function(){return(D4=c._NotEqual=c.asm.va).apply(null,arguments)},O4=c._OneHot=function(){return(O4=c._OneHot=c.asm.wa).apply(null,arguments)},z4=c._PadV2=function(){return(z4=c._PadV2=c.asm.xa).apply(null,arguments)},P4=c._Pow=function(){return(P4=c._Pow=c.asm.ya).apply(null,arguments)},L4=c._Prelu=function(){return(L4=c._Prelu=c.asm.za).apply(null,arguments)},W4=c._Prod=function(){return(W4=c._Prod=c.asm.Aa).apply(null,arguments)},B4=c._RealDiv=function(){return(B4=c._RealDiv=c.asm.Ba).apply(null,arguments)},V4=c._Relu=function(){return(V4=c._Relu=c.asm.Ca).apply(null,arguments)},U4=c._Relu6=function(){return(U4=c._Relu6=c.asm.Da).apply(null,arguments)},H4=c._ResizeBilinear=function(){return(H4=c._ResizeBilinear=c.asm.Ea).apply(null,arguments)},j4=c._Reverse=function(){return(j4=c._Reverse=c.asm.Fa).apply(null,arguments)},G4=c._RotateWithOffset=function(){return(G4=c._RotateWithOffset=c.asm.Ga).apply(null,arguments)},q4=c._Round=function(){return(q4=c._Round=c.asm.Ha).apply(null,arguments)},X4=c._Rsqrt=function(){return(X4=c._Rsqrt=c.asm.Ia).apply(null,arguments)},K4=c._ScatterNd=function(){return(K4=c._ScatterNd=c.asm.Ja).apply(null,arguments)},Z4=c._SelectV2=function(){return(Z4=c._SelectV2=c.asm.Ka).apply(null,arguments)},Y4=c._Sigmoid=function(){return(Y4=c._Sigmoid=c.asm.La).apply(null,arguments)},J4=c._Sin=function(){return(J4=c._Sin=c.asm.Ma).apply(null,arguments)},Q4=c._Softmax=function(){return(Q4=c._Softmax=c.asm.Na).apply(null,arguments)},e8=c._Sqrt=function(){return(e8=c._Sqrt=c.asm.Oa).apply(null,arguments)},t8=c._Square=function(){return(t8=c._Square=c.asm.Pa).apply(null,arguments)},n8=c._SquaredDifference=function(){return(n8=c._SquaredDifference=c.asm.Qa).apply(null,arguments)},r8=c._Step=function(){return(r8=c._Step=c.asm.Ra).apply(null,arguments)},a8=c._StridedSlice=function(){return(a8=c._StridedSlice=c.asm.Sa).apply(null,arguments)},s8=c._Sub=function(){return(s8=c._Sub=c.asm.Ta).apply(null,arguments)},i8=c._Sum=function(){return(i8=c._Sum=c.asm.Ua).apply(null,arguments)},o8=c._Tanh=function(){return(o8=c._Tanh=c.asm.Va).apply(null,arguments)},l8=c._Tile=function(){return(l8=c._Tile=c.asm.Wa).apply(null,arguments)},u8=c._TopK=function(){return(u8=c._TopK=c.asm.Xa).apply(null,arguments)},c8=c._Transpose=function(){return(c8=c._Transpose=c.asm.Ya).apply(null,arguments)},h8=c.__FusedMatMul=function(){return(h8=c.__FusedMatMul=c.asm.Za).apply(null,arguments)},as=c._malloc=function(){return(as=c._malloc=c.asm._a).apply(null,arguments)},tu=c._free=function(){return(tu=c._free=c.asm.$a).apply(null,arguments)},wg=c.___errno_location=function(){return(wg=c.___errno_location=c.asm.ab).apply(null,arguments)},_g=c._emscripten_get_global_libc=function(){return(_g=c._emscripten_get_global_libc=c.asm.bb).apply(null,arguments)},Bi=c._pthread_self=function(){return(Bi=c._pthread_self=c.asm.cb).apply(null,arguments)},bg=c.___pthread_tsd_run_dtors=function(){return(bg=c.___pthread_tsd_run_dtors=c.asm.db).apply(null,arguments)},q1=c._emscripten_main_thread_process_queued_calls=function(){return(q1=c._emscripten_main_thread_process_queued_calls=c.asm.eb).apply(null,arguments)},d8=c._emscripten_current_thread_process_queued_calls=function(){return(d8=c._emscripten_current_thread_process_queued_calls=c.asm.fb).apply(null,arguments)},vg=c._emscripten_register_main_browser_thread_id=function(){return(vg=c._emscripten_register_main_browser_thread_id=c.asm.gb).apply(null,arguments)},kg=c.__emscripten_do_dispatch_to_thread=function(){return(kg=c.__emscripten_do_dispatch_to_thread=c.asm.hb).apply(null,arguments)},Ng=c._emscripten_sync_run_in_main_thread_4=function(){return(Ng=c._emscripten_sync_run_in_main_thread_4=c.asm.ib).apply(null,arguments)},Ig=c._emscripten_run_in_main_runtime_thread_js=function(){return(Ig=c._emscripten_run_in_main_runtime_thread_js=c.asm.jb).apply(null,arguments)},X1=c.__emscripten_call_on_thread=function(){return(X1=c.__emscripten_call_on_thread=c.asm.kb).apply(null,arguments)},p8=c._emscripten_tls_init=function(){return(p8=c._emscripten_tls_init=c.asm.lb).apply(null,arguments)},ph=c.__emscripten_thread_init=function(){return(ph=c.__emscripten_thread_init=c.asm.mb).apply(null,arguments)},nu=c.stackSave=function(){return(nu=c.stackSave=c.asm.nb).apply(null,arguments)},Vi=c.stackRestore=function(){return(Vi=c.stackRestore=c.asm.ob).apply(null,arguments)},Ui=c.stackAlloc=function(){return(Ui=c.stackAlloc=c.asm.pb).apply(null,arguments)},Sg=c._emscripten_stack_set_limits=function(){return(Sg=c._emscripten_stack_set_limits=c.asm.qb).apply(null,arguments)},Tg=c._memalign=function(){return(Tg=c._memalign=c.asm.rb).apply(null,arguments)},Cg=c.__emscripten_allow_main_runtime_queued_calls=9880,Hi=c.__emscripten_main_thread_futex=11368;c.cwrap=Me,c.PThread=Ne,c.PThread=Ne,c.wasmMemory=Q,c.ExitStatus=ru;var fh;function ru(N){this.name="ExitStatus",this.message="Program terminated with exit("+N+")",this.status=N}ns=function N(){fh||K1(),fh||(ns=N)};function K1(N){if(N=N||m,Zr>0)return;if(x){h(c),postMessage({cmd:"loaded"});return}if(D0(),Zr>0)return;function C(){fh||(fh=!0,c.calledRun=!0,!oe&&(qc(),O0(),h(c),c.onRuntimeInitialized&&c.onRuntimeInitialized(),xn()))}c.setStatus?(c.setStatus("Running..."),setTimeout(function(){setTimeout(function(){c.setStatus("")},1),C()},1)):C()}c.run=K1;function f8(N,C){if(!(C&&ie&&N===0)){if(!C&&x)throw postMessage({cmd:"exitProcess",returnCode:N}),new ru(N);ie||(Ne.terminateAllThreads(),fe=N,Xc(),c.onExit&&c.onExit(N),oe=!0),y(N,new ru(N))}}if(c.preInit)for(typeof c.preInit=="function"&&(c.preInit=[c.preInit]);c.preInit.length>0;)c.preInit.pop()();return x&&(ie=!1,Ne.initWorker()),K1(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}),X8=et((e,t)=>{var n=function(){var r=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(r=r||__filename),function(a){a=a||{};var s=typeof a!="undefined"?a:{},i,o;s.ready=new Promise(function(K,ne){i=K,o=ne});var l={},u;for(u in s)s.hasOwnProperty(u)&&(l[u]=s[u]);var c=[],h="./this.program",d=function(K,ne){throw ne},p=!1,f=!1,m=!1,A=!1;p=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",A=!p&&!m&&!f;var y="";function g(K){return s.locateFile?s.locateFile(K,y):y+K}var _,b,w,x,I,S;m?(f?y=au().dirname(y)+"/":y=__dirname+"/",_=function(K,ne){return I||(I=require("fs")),S||(S=au()),K=S.normalize(K),I.readFileSync(K,ne?null:"utf8")},w=function(K){var ne=_(K,!0);return ne.buffer||(ne=new Uint8Array(ne)),X(ne.buffer),ne},process.argv.length>1&&(h=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(K){if(!(K instanceof G1))throw K}),process.on("unhandledRejection",pr),d=function(K){process.exit(K)},s.inspect=function(){return"[Emscripten Module object]"}):A?(typeof read!="undefined"&&(_=function(K){return read(K)}),w=function(K){var ne;return typeof readbuffer=="function"?new Uint8Array(readbuffer(K)):(ne=read(K,"binary"),X(typeof ne=="object"),ne)},typeof scriptArgs!="undefined"?c=scriptArgs:typeof arguments!="undefined"&&(c=arguments),typeof quit=="function"&&(d=function(K){quit(K)}),typeof print!="undefined"&&(typeof console=="undefined"&&(console={}),console.log=print,console.warn=console.error=typeof printErr!="undefined"?printErr:print)):(p||f)&&(f?y=self.location.href:typeof document!="undefined"&&document.currentScript&&(y=document.currentScript.src),r&&(y=r),y.indexOf("blob:")!==0?y=y.substr(0,y.lastIndexOf("/")+1):y="",_=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.send(null),ne.responseText},f&&(w=function(K){var ne=new XMLHttpRequest;return ne.open("GET",K,!1),ne.responseType="arraybuffer",ne.send(null),new Uint8Array(ne.response)}),b=function(K,ne,Se){var Ye=new XMLHttpRequest;Ye.open("GET",K,!0),Ye.responseType="arraybuffer",Ye.onload=function(){if(Ye.status==200||Ye.status==0&&Ye.response){ne(Ye.response);return}Se()},Ye.onerror=Se,Ye.send(null)},x=function(K){document.title=K});var T=s.print||console.log.bind(console),M=s.printErr||console.warn.bind(console);for(u in l)l.hasOwnProperty(u)&&(s[u]=l[u]);l=null,s.arguments&&(c=s.arguments),s.thisProgram&&(h=s.thisProgram),s.quit&&(d=s.quit);var D;s.wasmBinary&&(D=s.wasmBinary);var z=s.noExitRuntime||!0;typeof WebAssembly!="object"&&pr("no native wasm support detected");var W,U=!1,H;function X(K,ne){K||pr("Assertion failed: "+ne)}function j(K){var ne=s["_"+K];return X(ne,"Cannot call unknown function "+K+", make sure it is exported"),ne}function ee(K,ne,Se,Ye,It){var At={string:function(jn){var _a=0;if(jn!=null&&jn!==0){var dh=(jn.length<<2)+1;_a=Jl(dh),he(jn,_a,dh)}return _a},array:function(jn){var _a=Jl(jn.length);return oe(jn,_a),_a}};function Ve(jn){return ne==="string"?ie(jn):ne==="boolean"?Boolean(jn):jn}var je=j(K),Qt=[],Jr=0;if(Ye)for(var Qr=0;Qr=Ye);)++It;if(It-ne>16&&K.subarray&&ae)return ae.decode(K.subarray(ne,It));for(var At="";ne>10,56320|Jr&1023)}}return At}function ie(K,ne){return K?te(Ie,K,ne):""}function Q(K,ne,Se,Ye){if(!(Ye>0))return 0;for(var It=Se,At=Se+Ye-1,Ve=0;Ve=55296&&je<=57343){var Qt=K.charCodeAt(++Ve);je=65536+((je&1023)<<10)|Qt&1023}if(je<=127){if(Se>=At)break;ne[Se++]=je}else if(je<=2047){if(Se+1>=At)break;ne[Se++]=192|je>>6,ne[Se++]=128|je&63}else if(je<=65535){if(Se+2>=At)break;ne[Se++]=224|je>>12,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}else{if(Se+3>=At)break;ne[Se++]=240|je>>18,ne[Se++]=128|je>>12&63,ne[Se++]=128|je>>6&63,ne[Se++]=128|je&63}}return ne[Se]=0,Se-It}function he(K,ne,Se){return Q(K,Ie,ne,Se)}function oe(K,ne){ke.set(K,ne)}function fe(K,ne){return K%ne>0&&(K+=ne-K%ne),K}var pe,ke,Ie,Me,Oe,$e,tt,nt,ot;function Ze(K){pe=K,s.HEAP8=ke=new Int8Array(K),s.HEAP16=Me=new Int16Array(K),s.HEAP32=$e=new Int32Array(K),s.HEAPU8=Ie=new Uint8Array(K),s.HEAPU16=Oe=new Uint16Array(K),s.HEAPU32=tt=new Uint32Array(K),s.HEAPF32=nt=new Float32Array(K),s.HEAPF64=ot=new Float64Array(K)}var pt=s.INITIAL_MEMORY||16777216,Be,yn=[],_t=[],Un=[],Yt=[],gn=!1;_t.push({func:function(){Qc()}});function Hn(){if(s.preRun)for(typeof s.preRun=="function"&&(s.preRun=[s.preRun]);s.preRun.length;)Tr(s.preRun.shift());ga(yn)}function Rn(){gn=!0,ga(_t)}function un(){ga(Un)}function Jt(){if(s.postRun)for(typeof s.postRun=="function"&&(s.postRun=[s.postRun]);s.postRun.length;)Jn(s.postRun.shift());ga(Yt)}function Tr(K){yn.unshift(K)}function Jn(K){Yt.unshift(K)}var Qn=0,Aa=null,Kr=null;function ya(K){Qn++,s.monitorRunDependencies&&s.monitorRunDependencies(Qn)}function Di(K){if(Qn--,s.monitorRunDependencies&&s.monitorRunDependencies(Qn),Qn==0&&(Aa!==null&&(clearInterval(Aa),Aa=null),Kr)){var ne=Kr;Kr=null,ne()}}s.preloadedImages={},s.preloadedAudios={};function pr(K){s.onAbort&&s.onAbort(K),K+="",M(K),U=!0,H=1,K="abort("+K+"). Build with -s ASSERTIONS=1 for more info.";var ne=new WebAssembly.RuntimeError(K);throw o(ne),ne}function Gc(K,ne){return String.prototype.startsWith?K.startsWith(ne):K.indexOf(ne)===0}var D0="data:application/octet-stream;base64,";function qc(K){return Gc(K,D0)}var O0="file://";function Xc(K){return Gc(K,O0)}var xn="tfjs-backend-wasm.wasm";qc(xn)||(xn=g(xn));function Kc(K){try{if(K==xn&&D)return new Uint8Array(D);if(w)return w(K);throw"both async and sync fetching of the wasm failed"}catch(ne){pr(ne)}}function z0(){if(!D&&(p||f)){if(typeof fetch=="function"&&!Xc(xn))return fetch(xn,{credentials:"same-origin"}).then(function(K){if(!K.ok)throw"failed to load wasm binary file at '"+xn+"'";return K.arrayBuffer()}).catch(function(){return Kc(xn)});if(b)return new Promise(function(K,ne){b(xn,function(Se){K(new Uint8Array(Se))},ne)})}return Promise.resolve().then(function(){return Kc(xn)})}function Zr(){var K={a:wn};function ne(Ve,je){var Qt=Ve.exports;s.asm=Qt,W=s.asm.g,Ze(W.buffer),Be=s.asm.m,Di("wasm-instantiate")}ya("wasm-instantiate");function Se(Ve){ne(Ve.instance)}function Ye(Ve){return z0().then(function(je){return WebAssembly.instantiate(je,K)}).then(Ve,function(je){M("failed to asynchronously prepare wasm: "+je),pr(je)})}function It(){return!D&&typeof WebAssembly.instantiateStreaming=="function"&&!qc(xn)&&!Xc(xn)&&typeof fetch=="function"?fetch(xn,{credentials:"same-origin"}).then(function(Ve){var je=WebAssembly.instantiateStreaming(Ve,K);return je.then(Se,function(Qt){return M("wasm streaming compile failed: "+Qt),M("falling back to ArrayBuffer instantiation"),Ye(Se)})}):Ye(Se)}if(s.instantiateWasm)try{var At=s.instantiateWasm(K,ne);return At}catch(Ve){return M("Module.instantiateWasm callback failed with error: "+Ve),!1}return It().catch(o),{}}function ga(K){for(;K.length>0;){var ne=K.shift();if(typeof ne=="function"){ne(s);continue}var Se=ne.func;typeof Se=="number"?ne.arg===void 0?Be.get(Se)():Be.get(Se)(ne.arg):Se(ne.arg===void 0?null:ne.arg)}}function ns(){pr()}function P0(K,ne,Se){Ie.copyWithin(K,ne,ne+Se)}function L0(){return Ie.length}function Yr(K){try{return W.grow(K-pe.byteLength+65535>>>16),Ze(W.buffer),1}catch(ne){}}function Zc(K){var ne=L0(),Se=2147483648;if(K>Se)return!1;for(var Ye=1;Ye<=4;Ye*=2){var It=ne*(1+.2/Ye);It=Math.min(It,K+100663296);var At=Math.min(Se,fe(Math.max(K,It),65536)),Ve=Yr(At);if(Ve)return!0}return!1}var Oi={mappings:{},buffers:[null,[],[]],printChar:function(K,ne){var Se=Oi.buffers[K];ne===0||ne===10?((K===1?T:M)(te(Se,0)),Se.length=0):Se.push(ne)},varargs:void 0,get:function(){Oi.varargs+=4;var K=$e[Oi.varargs-4>>2];return K},getStr:function(K){var ne=ie(K);return ne},get64:function(K,ne){return K}};function Yc(K){return 0}function W0(K,ne,Se,Ye,It){}function Jc(K,ne,Se,Ye){for(var It=0,At=0;At>2],je=$e[ne+(At*8+4)>>2],Qt=0;Qt>2]=It,0}var wn={a:ns,d:P0,e:Zc,f:Yc,c:W0,b:Jc},B0=Zr(),Qc=s.___wasm_call_ctors=function(){return(Qc=s.___wasm_call_ctors=s.asm.h).apply(null,arguments)},V0=s._init=function(){return(V0=s._init=s.asm.i).apply(null,arguments)},eh=s._register_tensor=function(){return(eh=s._register_tensor=s.asm.j).apply(null,arguments)},U0=s._dispose_data=function(){return(U0=s._dispose_data=s.asm.k).apply(null,arguments)},zi=s._dispose=function(){return(zi=s._dispose=s.asm.l).apply(null,arguments)},Pi=s._Abs=function(){return(Pi=s._Abs=s.asm.n).apply(null,arguments)},H0=s._Add=function(){return(H0=s._Add=s.asm.o).apply(null,arguments)},j0=s._AddN=function(){return(j0=s._AddN=s.asm.p).apply(null,arguments)},G0=s._ArgMax=function(){return(G0=s._ArgMax=s.asm.q).apply(null,arguments)},Ne=s._AvgPool=function(){return(Ne=s._AvgPool=s.asm.r).apply(null,arguments)},q0=s._BatchMatMul=function(){return(q0=s._BatchMatMul=s.asm.s).apply(null,arguments)},X0=s._Ceil=function(){return(X0=s._Ceil=s.asm.t).apply(null,arguments)},K0=s._ClipByValue=function(){return(K0=s._ClipByValue=s.asm.u).apply(null,arguments)},Z0=s._Conv2D=function(){return(Z0=s._Conv2D=s.asm.v).apply(null,arguments)},Y0=s._Conv2DBackpropInput=function(){return(Y0=s._Conv2DBackpropInput=s.asm.w).apply(null,arguments)},rs=s._Cos=function(){return(rs=s._Cos=s.asm.x).apply(null,arguments)},J0=s._CropAndResize=function(){return(J0=s._CropAndResize=s.asm.y).apply(null,arguments)},Q0=s._Cumsum=function(){return(Q0=s._Cumsum=s.asm.z).apply(null,arguments)},e1=s._DepthToSpace=function(){return(e1=s._DepthToSpace=s.asm.A).apply(null,arguments)},t1=s._DepthwiseConv2dNative=function(){return(t1=s._DepthwiseConv2dNative=s.asm.B).apply(null,arguments)},n1=s._Equal=function(){return(n1=s._Equal=s.asm.C).apply(null,arguments)},r1=s._Exp=function(){return(r1=s._Exp=s.asm.D).apply(null,arguments)},a1=s._FlipLeftRight=function(){return(a1=s._FlipLeftRight=s.asm.E).apply(null,arguments)},s1=s._Floor=function(){return(s1=s._Floor=s.asm.F).apply(null,arguments)},i1=s._FloorDiv=function(){return(i1=s._FloorDiv=s.asm.G).apply(null,arguments)},xa=s._FusedBatchNorm=function(){return(xa=s._FusedBatchNorm=s.asm.H).apply(null,arguments)},Kl=s._FusedConv2D=function(){return(Kl=s._FusedConv2D=s.asm.I).apply(null,arguments)},Zl=s._FusedDepthwiseConv2D=function(){return(Zl=s._FusedDepthwiseConv2D=s.asm.J).apply(null,arguments)},o1=s._Gather=function(){return(o1=s._Gather=s.asm.K).apply(null,arguments)},l1=s._GatherNd=function(){return(l1=s._GatherNd=s.asm.L).apply(null,arguments)},u1=s._Greater=function(){return(u1=s._Greater=s.asm.M).apply(null,arguments)},c1=s._GreaterEqual=function(){return(c1=s._GreaterEqual=s.asm.N).apply(null,arguments)},h1=s._LeakyRelu=function(){return(h1=s._LeakyRelu=s.asm.O).apply(null,arguments)},Le=s._Less=function(){return(Le=s._Less=s.asm.P).apply(null,arguments)},d1=s._LessEqual=function(){return(d1=s._LessEqual=s.asm.Q).apply(null,arguments)},p1=s._Log=function(){return(p1=s._Log=s.asm.R).apply(null,arguments)},f1=s._LogicalAnd=function(){return(f1=s._LogicalAnd=s.asm.S).apply(null,arguments)},m1=s._Max=function(){return(m1=s._Max=s.asm.T).apply(null,arguments)},A1=s._MaxPool=function(){return(A1=s._MaxPool=s.asm.U).apply(null,arguments)},y1=s._Maximum=function(){return(y1=s._Maximum=s.asm.V).apply(null,arguments)},Yl=s._Mean=function(){return(Yl=s._Mean=s.asm.W).apply(null,arguments)},th=s._Min=function(){return(th=s._Min=s.asm.X).apply(null,arguments)},nh=s._Minimum=function(){return(nh=s._Minimum=s.asm.Y).apply(null,arguments)},g1=s._Multiply=function(){return(g1=s._Multiply=s.asm.Z).apply(null,arguments)},x1=s._Neg=function(){return(x1=s._Neg=s.asm._).apply(null,arguments)},w1=s._NonMaxSuppressionV3=function(){return(w1=s._NonMaxSuppressionV3=s.asm.$).apply(null,arguments)},_1=s._NonMaxSuppressionV4=function(){return(_1=s._NonMaxSuppressionV4=s.asm.aa).apply(null,arguments)},b1=s._NonMaxSuppressionV5=function(){return(b1=s._NonMaxSuppressionV5=s.asm.ba).apply(null,arguments)},v1=s._NotEqual=function(){return(v1=s._NotEqual=s.asm.ca).apply(null,arguments)},k1=s._OneHot=function(){return(k1=s._OneHot=s.asm.da).apply(null,arguments)},Qe=s._PadV2=function(){return(Qe=s._PadV2=s.asm.ea).apply(null,arguments)},N1=s._Pow=function(){return(N1=s._Pow=s.asm.fa).apply(null,arguments)},I1=s._Prelu=function(){return(I1=s._Prelu=s.asm.ga).apply(null,arguments)},S1=s._Prod=function(){return(S1=s._Prod=s.asm.ha).apply(null,arguments)},Li=s._RealDiv=function(){return(Li=s._RealDiv=s.asm.ia).apply(null,arguments)},rh=s._Relu=function(){return(rh=s._Relu=s.asm.ja).apply(null,arguments)},ah=s._Relu6=function(){return(ah=s._Relu6=s.asm.ka).apply(null,arguments)},sh=s._ResizeBilinear=function(){return(sh=s._ResizeBilinear=s.asm.la).apply(null,arguments)},T1=s._Reverse=function(){return(T1=s._Reverse=s.asm.ma).apply(null,arguments)},C1=s._RotateWithOffset=function(){return(C1=s._RotateWithOffset=s.asm.na).apply(null,arguments)},ih=s._Round=function(){return(ih=s._Round=s.asm.oa).apply(null,arguments)},E1=s._Rsqrt=function(){return(E1=s._Rsqrt=s.asm.pa).apply(null,arguments)},oh=s._ScatterNd=function(){return(oh=s._ScatterNd=s.asm.qa).apply(null,arguments)},wa=s._SelectV2=function(){return(wa=s._SelectV2=s.asm.ra).apply(null,arguments)},R1=s._Sigmoid=function(){return(R1=s._Sigmoid=s.asm.sa).apply(null,arguments)},F1=s._Sin=function(){return(F1=s._Sin=s.asm.ta).apply(null,arguments)},xg=s._Softmax=function(){return(xg=s._Softmax=s.asm.ua).apply(null,arguments)},lh=s._Sqrt=function(){return(lh=s._Sqrt=s.asm.va).apply(null,arguments)},M1=s._Square=function(){return(M1=s._Square=s.asm.wa).apply(null,arguments)},$1=s._SquaredDifference=function(){return($1=s._SquaredDifference=s.asm.xa).apply(null,arguments)},D1=s._Step=function(){return(D1=s._Step=s.asm.ya).apply(null,arguments)},O1=s._StridedSlice=function(){return(O1=s._StridedSlice=s.asm.za).apply(null,arguments)},z1=s._Sub=function(){return(z1=s._Sub=s.asm.Aa).apply(null,arguments)},P1=s._Sum=function(){return(P1=s._Sum=s.asm.Ba).apply(null,arguments)},L1=s._Tanh=function(){return(L1=s._Tanh=s.asm.Ca).apply(null,arguments)},W1=s._Tile=function(){return(W1=s._Tile=s.asm.Da).apply(null,arguments)},B1=s._TopK=function(){return(B1=s._TopK=s.asm.Ea).apply(null,arguments)},V1=s._Transpose=function(){return(V1=s._Transpose=s.asm.Fa).apply(null,arguments)},U1=s.__FusedMatMul=function(){return(U1=s.__FusedMatMul=s.asm.Ga).apply(null,arguments)},H1=s._malloc=function(){return(H1=s._malloc=s.asm.Ha).apply(null,arguments)},j1=s._free=function(){return(j1=s._free=s.asm.Ia).apply(null,arguments)},uh=s.stackSave=function(){return(uh=s.stackSave=s.asm.Ja).apply(null,arguments)},ch=s.stackRestore=function(){return(ch=s.stackRestore=s.asm.Ka).apply(null,arguments)},Jl=s.stackAlloc=function(){return(Jl=s.stackAlloc=s.asm.La).apply(null,arguments)};s.cwrap=Y;var Wi;function G1(K){this.name="ExitStatus",this.message="Program terminated with exit("+K+")",this.status=K}Kr=function K(){Wi||Ql(),Wi||(Kr=K)};function Ql(K){if(K=K||c,Qn>0||(Hn(),Qn>0))return;function ne(){Wi||(Wi=!0,s.calledRun=!0,!U&&(Rn(),un(),i(s),s.onRuntimeInitialized&&s.onRuntimeInitialized(),Jt()))}s.setStatus?(s.setStatus("Running..."),setTimeout(function(){setTimeout(function(){s.setStatus("")},1),ne()},1)):ne()}if(s.run=Ql,s.preInit)for(typeof s.preInit=="function"&&(s.preInit=[s.preInit]);s.preInit.length>0;)s.preInit.pop()();return Ql(),a.ready}}();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}),K8=et((e,t)=>{(function(n,r,a){function s(u){var c=this,h=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=h(" "),c.s1=h(" "),c.s2=h(" "),c.s0-=h(u),c.s0<0&&(c.s0+=1),c.s1-=h(u),c.s1<0&&(c.s1+=1),c.s2-=h(u),c.s2<0&&(c.s2+=1),h=null}function i(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function o(u,c){var h=new s(u),d=c&&c.state,p=h.next;return p.int32=function(){return h.next()*4294967296|0},p.double=function(){return p()+(p()*2097152|0)*11102230246251565e-32},p.quick=p,d&&(typeof d=="object"&&i(d,h),p.state=function(){return i(h,{})}),p}function l(){var u=4022871197,c=function(h){h=h.toString();for(var d=0;d>>0,p-=u,p*=u,u=p>>>0,p-=u,u+=p*4294967296}return(u>>>0)*23283064365386963e-26};return c}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.alea=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Z8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor128=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Y8=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var h=0;h>>4),u.next()}function i(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function o(l,u){var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorwow=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),J8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.x,d=u.i,p,f,m;return p=h[d],p^=p>>>7,f=p^p<<24,p=h[d+1&7],f^=p^p>>>10,p=h[d+3&7],f^=p^p>>>3,p=h[d+4&7],f^=p^p<<7,p=h[d+7&7],p=p^p<<13,f^=p^p<<9,h[d]=f,u.i=d+1&7,f};function c(h,d){var p,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,p=0;p0;--p)h.next()}c(u,l)}function i(l,u){return u.x=l.x.slice(),u.i=l.i,u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.x&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xorshift7=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),Q8=et((e,t)=>{(function(n,r,a){function s(l){var u=this;u.next=function(){var h=u.w,d=u.X,p=u.i,f,m;return u.w=h=h+1640531527|0,m=d[p+34&127],f=d[p=p+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[p]=m^f,u.i=p,m+(h^h>>>16)|0};function c(h,d){var p,f,m,A,y,g=[],_=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,_=Math.max(_,d.length)),m=0,A=-32;A<_;++A)d&&(f^=d.charCodeAt((A+32)%d.length)),A===0&&(y=f),f^=f<<10,f^=f>>>15,f^=f<<4,f^=f>>>13,A>=0&&(y=y+1640531527|0,p=g[A&127]^=f+y,m=p==0?m+1:0);for(m>=128&&(g[(d&&d.length||0)&127]=-1),m=127,A=4*128;A>0;--A)f=g[m+34&127],p=g[m=m+1&127],f^=f<<13,p^=p<<17,f^=f>>>15,p^=p>>>12,g[m]=f^p;h.w=y,h.X=g,h.i=m}c(u,l)}function i(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function o(l,u){l==null&&(l=+new Date);var c=new s(l),h=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(h.X&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.xor4096=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),ek=et((e,t)=>{(function(n,r,a){function s(l){var u=this,c="";u.next=function(){var d=u.b,p=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^p,p=p-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^p,u.c=p=p-f|0,u.d=f<<16^p>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=2654435769|0,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var h=0;h>>0)/4294967296};return d.double=function(){do var p=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(p+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,h&&(typeof h=="object"&&i(h,c),d.state=function(){return i(c,{})}),d}r&&r.exports?r.exports=o:a&&a.amd?a(function(){return o}):this.tychei=o})(e,typeof t=="object"&&t,typeof define=="function"&&define)}),tk=et((e,t)=>{(function(n,r){var a=(0,eval)("this"),s=256,i=6,o=52,l="random",u=r.pow(s,i),c=r.pow(2,o),h=c*2,d=s-1,p;function f(w,x,I){var S=[];x=x==!0?{entropy:!0}:x||{};var T=g(y(x.entropy?[w,b(n)]:w==null?_():w,3),S),M=new m(S),D=function(){for(var z=M.g(i),W=u,U=0;z=h;)z/=2,W/=2,U>>>=1;return(z+U)/W};return D.int32=function(){return M.g(4)|0},D.quick=function(){return M.g(4)/4294967296},D.double=D,g(b(M.S),n),(x.pass||I||function(z,W,U,H){return H&&(H.S&&A(H,M),z.state=function(){return A(M,{})}),U?(r[l]=z,W):z})(D,T,"global"in x?x.global:this==r,x.state)}r["seed"+l]=f;function m(w){var x,I=w.length,S=this,T=0,M=S.i=S.j=0,D=S.S=[];for(I||(w=[I++]);T{var n=K8(),r=Z8(),a=Y8(),s=J8(),i=Q8(),o=ek(),l=tk();l.alea=n,l.xor128=r,l.xorwow=a,l.xorshift7=s,l.xor4096=i,l.tychei=o,t.exports=l}),nk=et(()=>{}),rk="3.3.0",ak="3.3.0",sk="3.3.0",ik="3.3.0",ok="3.3.0",lk=1e-7,uk=1e-4,xh=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},su=class{refCount(e){return tr("refCount")}incRef(e){return tr("incRef")}timerAvailable(){return!0}time(e){return tr("time")}read(e){return tr("read")}readSync(e){return tr("readSync")}numDataIds(){return tr("numDataIds")}disposeData(e,t){return tr("disposeData")}write(e,t,n){return tr("write")}move(e,t,n,r,a){return tr("move")}memory(){return tr("memory")}floatPrecision(){return tr("floatPrecision")}epsilon(){return this.floatPrecision()===32?lk:uk}dispose(){return tr("dispose")}};function tr(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function Dg(e){let t=e.length,n=0,r=0;for(;t>0;)r=Math.random()*t|0,t--,n=e[t],e[t]=e[r],e[r]=n}function ck(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,r,a,s=0;for(;n>0;)s=Math.random()*n|0,n--,r=e[n],a=t[n],e[n]=e[s],t[n]=t[s],e[s]=r,t[s]=a}function iu(e,t,n){return Math.max(e,Math.min(t,n))}function hk(e){return e%2==0?e:e+1}function dk(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function ss(e){F(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function is(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||sn(e)&&!n)for(let r=0;r0,n){return new Promise((r,a)=>{let s=0,i=()=>{if(e()){r();return}s++;let o=t(s);if(n!=null&&s>=n){a();return}setTimeout(i,o)};i()})}function wk(e,t){let n=1,r=-1;for(let s=0;s=0)n*=e[s];else if(e[s]===-1){if(r!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${r} and dim ${s}`);r=s}else if(e[s]<0)throw Error(`Shapes can not be < 0. Found ${e[s]} at dim ${s}`);if(r===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!=0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let a=e.slice();return a[r]=t/n,a}function nr(e,t){let n=t.length;return e=e==null?t.map((r,a)=>a):[].concat(e),F(e.every(r=>r>=-n&&r`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),F(e.every(r=>jt(r)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(r=>r<0?n+r:r)}function Og(e,t){let n=[],r=[],a=t!=null&&Array.isArray(t)&&t.length===0,s=t==null||a?null:nr(t,e).sort(),i=0;for(let o=0;oo)&&e[o]===1&&(n.push(e[o]),r.push(o)),s[i]<=o&&i++}e[o]!==1&&(n.push(e[o]),r.push(o))}return{newShape:n,keptDims:r}}function zg(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Pg(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function Lg(e,t){for(let n=0;nt+=n.length),t}function va(e){return typeof e=="string"||e instanceof String}function Vg(e){return typeof e=="boolean"}function Ug(e){return typeof e=="number"}function wh(e){return Array.isArray(e)?wh(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array?"int32":Ug(e)?"float32":va(e)?"string":Vg(e)?"bool":"float32"}function ka(e){return!!(e&&e.constructor&&e.call&&e.apply)}function _h(e,t){for(let n=t;n=0;--r)n[r]=n[r+1]*e[r+1];return n}function Hg(e,t,n){let r=new Array;if(t.length===1){let a=t[0];for(let s=0;so*l);for(let o=0;or*a);if(n===0)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}.`);return Hg(0,e,t)}function Q1(e,t){let n=bh(e,t);for(let r=0;rr*a,1);if(t==null||t==="float32")return Ki(e,new Float32Array(n));if(t==="int32")return Ki(e,new Int32Array(n));if(t==="bool")return Ki(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function ef(e){e.forEach(t=>{F(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function vk(e,t,n){if(t===0)return 0;if(t===1)return e[0];let r=e[e.length-1];for(let a=0;a{let[n,r]=t.split(":");this.urlFlags[n]=Ik(n,r)})}};function Nk(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...r)=>(Sk(t,r[0],r[1]),r.join("="))),t}function Sk(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function Ik(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return fr}var fr=null;function Tk(e){fr=e}var nf;function qg(){if(nf==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");nf=e}return nf}function Ck(){let e=qg();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function rf(e,t){let n=Ck();if(n.has(e))return n.get(e);{let r=t();return n.set(e,r),n.get(e)}}var Zi="Abs",Yi="Acos",Ji="Acosh",Na="Add",os="AddN",vh="All",kh="Any",ls="ArgMax",lu="ArgMin",Qi="Asin",eo="Asinh",to="Atan",no="Atanh",ro="Atan2",us="AvgPool",Nh="AvgPoolGrad",uu="AvgPool3D",Ih="AvgPool3DGrad",cs="BatchMatMul",cu="BatchToSpaceND",Sh="Bincount",Xg="BroadcastTo",hs="Cast",ds="Ceil",Ia="ClipByValue",Th="Complex",hu="ComplexAbs",ao="Concat",ps="Conv2D",Ch="Conv2DBackpropFilter",fs="Conv2DBackpropInput",du="Conv3D",Eh="Conv3DBackpropFilterV2",Rh="Conv3DBackpropInputV2",ms="Cos",so="Cosh",As="Cumsum",io="CropAndResize",Fh="DenseBincount",oo="DepthToSpace",ys="DepthwiseConv2dNative",Mh="DepthwiseConv2dNativeBackpropFilter",$h="DepthwiseConv2dNativeBackpropInput",Dh="Diag",pu="Dilation2D",Oh="Dilation2DBackpropInput",zh="Dilation2DBackpropFilter",gs="RealDiv",lo="Elu",Ph="EluGrad",uo="Erf",co="Equal",xs="Exp",ho="ExpandDims",po="Expm1",Lh="FFT",fu="Fill",fo="FlipLeftRight",ws="Floor",_s="FloorDiv",bs="FusedBatchNorm",mo="GatherV2",Ao="GatherNd",yo="Greater",vs="GreaterEqual",ks="Identity",Wh="IFFT",Bh="Imag",go="IsFinite",xo="IsInf",wo="IsNan",Ns="LeakyRelu",_o="Less",bo="LessEqual",Vh="LinSpace",Is="Log",vo="Log1p",ko="LogicalAnd",mu="LogicalNot",Au="LogicalOr",Kg="LogSoftmax",yu="LRN",Uh="LRNGrad",Ss="Max",Ts="Maximum",Cs="MaxPool",Hh="MaxPoolGrad",gu="MaxPool3D",jh="MaxPool3DGrad",Gh="MaxPoolWithArgmax",Es="Mean",Rs="Min",Fs="Minimum",xu="MirrorPad",No="Mod",qh="Multinomial",Ms="Multiply",Io="Neg",So="NotEqual",To="NonMaxSuppressionV3",Co="NonMaxSuppressionV4",Eo="NonMaxSuppressionV5",Ro="OnesLike",$s="OneHot",Fo="Pack",Ds="PadV2",Ek="Pool",Os="Pow",zs="Prelu",Mo="Prod",wu="Range",Xh="Real",$o="Reciprocal",Ps="Relu",Do="Reshape",_u="ResizeNearestNeighbor",Kh="ResizeNearestNeighborGrad",Ls="ResizeBilinear",Zh="ResizeBilinearGrad",Ws="Relu6",Bs="Reverse",Vs="Round",Us="Rsqrt",Oo="ScatterNd",zo="Select",Po="Selu",Lo="Slice",Hs="Sin",Wo="Sinh",Bo="Sign",js="Sigmoid",Vo="Softplus",Gs="Sqrt",qs="Sum",bu="SpaceToBatchND",Uo="SplitV",Xs="Softmax",Ks="SquaredDifference",vu="Square",Zs="Sub",Yh="SparseToDense",Ho="StridedSlice",jo="Tan",Ys="Tanh",Sa="Tile",Go="TopK",Jh="Transform",Js="Transpose",Qh="Unique",qo="Unpack",ku="UnsortedSegmentSum",Xo="ZerosLike",Ta="Step",ed="FromPixels",Ko="RotateWithOffset",Qs="_FusedMatMul",ei="FusedConv2D",ti="FusedDepthwiseConv2D",Zo=rf("kernelRegistry",()=>new Map),Nu=rf("gradRegistry",()=>new Map);function td(e,t){let n=af(e,t);return Zo.get(n)}function sf(e){return Nu.get(e)}function Yo(e){let t=Zo.entries(),n=[];for(;;){let{done:r,value:a}=t.next();if(r)break;let[s,i]=a,[o]=s.split("_");o===e&&n.push(i)}return n}function ni(e){let{kernelName:t,backendName:n}=e,r=af(t,n);Zo.has(r)&&console.warn(`The kernel '${t}' for backend '${n}' is already registered`),Zo.set(r,e)}function Zg(e){let{kernelName:t}=e;Nu.has(t)&&J().getBool("DEBUG")&&console.warn(`Overriding the gradient for '${t}'`),Nu.set(t,e)}function Rk(e,t){let n=af(e,t);if(!Zo.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);Zo.delete(n)}function Fk(e){if(!Nu.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Nu.delete(e)}function Mk(e,t){Yo(e).forEach(n=>{let r=Object.assign({},n,{backendName:t});ni(r)})}function af(e,t){return`${t}_${e}`}var v={};ze(v,{arraysEqual:()=>ta,assert:()=>F,assertNonNegativeIntegerDimensions:()=>ef,assertNonNull:()=>ss,assertShapesMatch:()=>an,bytesFromStringArray:()=>Bg,bytesPerElement:()=>J1,checkConversionForErrors:()=>Lg,clamp:()=>iu,computeStrides:()=>Xi,createScalarValue:()=>$k,createShuffledIndices:()=>gk,decodeString:()=>rd,distSquared:()=>fk,encodeString:()=>Su,fetch:()=>Dk,flatten:()=>is,getArrayFromDType:()=>Pg,getTypedArrayFromDType:()=>zg,hasEncodingLoss:()=>_k,indexToLoc:()=>kk,inferDtype:()=>wh,inferFromImplicitShape:()=>wk,isBoolean:()=>Vg,isFunction:()=>ka,isInt:()=>jt,isNumber:()=>Ug,isPromise:()=>tf,isScalarShape:()=>mk,isString:()=>va,isTypedArray:()=>sn,isValidDtype:()=>Wg,locToIndex:()=>vk,makeOnesTypedArray:()=>Q1,makeZerosNestedTypedArray:()=>bk,makeZerosTypedArray:()=>bh,nearestDivisor:()=>_h,nearestLargerEven:()=>hk,now:()=>Iu,parseAxisParam:()=>nr,randUniform:()=>pk,repeatedTry:()=>xk,rightPad:()=>ou,shuffle:()=>Dg,shuffleCombo:()=>ck,sizeFromShape:()=>Dt,sizeToSquarishShape:()=>yk,squeezeShape:()=>Og,sum:()=>dk,tanh:()=>Ak,toNestedArray:()=>Ki,toTypedArray:()=>nd});function $k(e,t){return t==="string"?Su(e):nd([e],t)}function Ok(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function nd(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=is(e)),J().getBool("DEBUG")&&Lg(e,t),Ok(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let r=0;r{r=n()},s,i=Iu();if(this.backendTimer.timerAvailable())s=this.backendTimer.time(a);else{a();for(let o of r)o.dataSync();s=Promise.resolve({kernelMs:Iu()-i})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let o=0;o{zk(u,l.dtype,e)})}return{kernelName:e,outputs:r,inputs:t,timeMs:s.then(o=>o.kernelMs),extraInfo:s.then(o=>o.getExtraProfileInfo!=null?o.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:r,inputs:a,extraInfo:s}=e;n.forEach(i=>{Promise.all([i.data(),r,s]).then(o=>{this.logger.logKernelProfile(t,i,o[0],o[1],a,o[2])})})}};function zk(e,t,n){if(t!=="float32")return!1;for(let r=0;r0?f:""} `}}console.log(`%c${o} %c${i} %c${l}D ${c} %c${u} %c${h} %c${s}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function Wk(e,t,n){let r={},a={};for(let l=0;lr[m.id]=!0),p=!0,a[u.id]=!0;break}if(p)break}}let s={};s[n.id]=!0;let i={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let h=0;h=0;a--){let s=t[a],i=[];if(s.outputs.forEach(l=>{let u=e[l.id];u!=null?i.push(u):i.push(null)}),s.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${s.kernelName}.`);let o=s.gradient(i);for(let l in s.inputs){if(!(l in o))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(o)}.`);let u=n(()=>o[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=s.inputs[l];if(!ta(u.shape,c.shape))throw new Error(`Error in gradient for op ${s.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let h=e[c.id];e[c.id]=r(h,u),h.dispose()}}}}var Yg=20,Tu=3,of=7;function Uk(e,t,n,r){let a=Xi(t),s=Vk(e,t,n,a),i=t.length,o=ad(e,t,n,a,s),l=["Tensor"];return r&&(l.push(` dtype: ${n}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(o.map(u=>" "+u).join(` `)),l.join(` -`)}function Bk(e,t,n,r){let a=Dt(t),s=r[r.length-1],i=new Array(s).fill(0),o=t.length,l=n==="complex64"?Eu(e):e;if(o>1)for(let u=0;uZg){let A=Tu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-Tu)*i,o*i));return n==="complex64"&&(y=Eu(y),g=Eu(g)),["["+y.map((_,b)=>Cu(_,a[b],n)).join(", ")+", ..., "+g.map((_,b)=>Cu(_,a[o-Tu+b],n)).join(", ")+"]"]}let m=n==="complex64"?Eu(e):Array.from(e);return["["+m.map((A,y)=>Cu(A,a[y],n)).join(", ")+"]"]}let u=t.slice(1),c=r.slice(1),h=r[0]*i,d=[];if(o>Zg){for(let m=0;m1)for(let u=0;uYg){let A=Tu*i,y=Array.from(e.slice(0,A)),g=Array.from(e.slice((o-Tu)*i,o*i));return n==="complex64"&&(y=Eu(y),g=Eu(g)),["["+y.map((_,b)=>Cu(_,a[b],n)).join(", ")+", ..., "+g.map((_,b)=>Cu(_,a[o-Tu+b],n)).join(", ")+"]"]}let m=n==="complex64"?Eu(e):Array.from(e);return["["+m.map((A,y)=>Cu(A,a[y],n)).join(", ")+"]"]}let u=t.slice(1),c=r.slice(1),h=r[0]*i,d=[];if(o>Yg){for(let m=0;m`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||zg(t,this.size),this.strides=Xi(e)}set(e,...t){t.length===0&&(t=[0]),F(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rrd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Cr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>rd(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Cr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Cr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Jo.print(this,e)}clone(){return this.throwIfDisposed(),Jo.clone(this)}toString(e=!1){let t=this.dataSync();return Vk(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Jo.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Cr().makeVariable(this,e,t,n)}};Object.defineProperty(Ue,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return rf("Tensor",()=>Ue)}Z();var Ru=class extends Ue{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!ta(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Cr().disposeTensor(this),this.dataId=e.dataId,Cr().incRef(this,null)}dispose(){Cr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Ru,Symbol.hasInstance,{value:e=>e instanceof Ue&&e.assign!=null&&e.assign instanceof Function});var mr={};ze(mr,{assertTypesMatch:()=>Jg,getTensorsInContainer:()=>lf,isTensorInList:()=>qk,makeTypesMatch:()=>bt});var uf;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(uf||(uf={}));var cf;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(cf||(cf={}));var hf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(hf||(hf={}));var df;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(df||(df={}));var pf;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(pf||(pf={}));var Xk={float32:df,int32:cf,bool:hf,complex64:pf};function rr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return Xk[e][t]}function sd(e){return rr(e,"int32")}function bt(e,t){if(e.dtype===t.dtype)return[e,t];let n=rr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function Jg(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function qk(e,t){return t.some(n=>n.id===e.id)}function lf(e){let t=[],n=new Set;return Qg(e,t,n),t}function Qg(e,t,n){if(e==null)return;if(e instanceof Ue){t.push(e);return}if(!Kk(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),Qg(s,t,n))}}function Kk(e){return Array.isArray(e)||typeof e=="object"}function ff(e){return e.kernelName!=null}var e5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Fu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new e5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Yo(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof su)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Fu.nextTensorId++}nextVariableId(){return Fu.nextVariableId++}clone(e){let t=$.runKernel(ks,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(hs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(td(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=ff(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(ff(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=td(p,this.backendName);F(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let _=g.map(b=>{if(b.rank!=null)return b;let{dataId:w,shape:x,dtype:I}=b;return this.makeTensorFromDataId(w,x,I)});if(r){let b=this.getTensorsForGradient(p,f,_);n=this.saveTensorsForBackwardMode(b)}return _}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:u,attrs:c}=e,h=ff(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,u,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,u,t,h,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(p=>u[p]!=null?u[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=sf(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,u)=>s[u]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&va(e[0])&&(a=e.map(o=>Su(o)));let s=r.write(a,t,n),i=new Ue(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=Wg(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ue(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Ru(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*J1(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Ru||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*J1(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=sf(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((u,c)=>{if(u==null){let h=n[c],d=bh(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return u}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=lf(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(F(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));F(a instanceof Ue,()=>"The result y returned by f() must be a tensor.");let s=Lk(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?Zk(a.shape):n,Wk(i,s,l=>this.tidy(l),Yk);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return F(ka(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(i=>i instanceof Ue),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),F(n.value instanceof Ue,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(ka(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),u=Array.isArray(l)?l:[l];F(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),F(u.every(h=>h instanceof Ue),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((h,d)=>{c[d]=()=>h}),c};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Iu(),n=await this.backend.time(e);return n.wallMs=Iu()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new e5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Fu.nextTensorId=0;Fu.nextVariableId=0;function Zk(e){let t=Q1(Dt(e),"float32");return $.makeTensor(t,e,"float32")}function t5(){let e=Gg();if(e._tfengine==null){let t=new jg(e);e._tfengine=new Fu(t)}return Sk(e._tfengine.ENV),Hk(()=>e._tfengine),e._tfengine}var $=t5();function Yk(e,t){let n={a:e,b:t};return $.runKernel(Na,n)}var Mu={};ze(Mu,{isBrowser:()=>n5,isMobile:()=>Jk});function Qk(){return typeof navigator!="undefined"&&navigator!=null}function Jk(){if(Qk()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function n5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Ar=J();Ar.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Ar.registerFlag("IS_BROWSER",()=>n5());Ar.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Ar.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Ar.registerFlag("PROD",()=>!1);Ar.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Ar.getBool("DEBUG"));Ar.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Ar.registerFlag("IS_TEST",()=>!1);Ar.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);Ar.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Er(e,t){let n=e;if(sn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||sn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&r5(e,r,[]),r}function r5(e,t,n){if(n=n||[],!Array.isArray(e)&&!sn(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),a5(r,a,t,n),e==null||!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Er(e,a);!sn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?nd(e,a):is(e,[],!0);return $.makeTensor(i,s,a)}function $u(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>E(a,`${t}[${s}]`,n,r))}var s5="__op";function O(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+s5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return tf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function e9(e,t){let n=E(e,"real","complex"),r=E(t,"imag","complex");an(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Th,a)}var Ca=O({complex_:e9});function Ea(e,t,n,r){if(r==null&&(r=wh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){ef(t);let a=Dt(t),s=Dt(n);F(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!sn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?nd(e,r):is(e,[],!0),$.makeTensor(e,t,r)}function yr(e,t,n){let r=Er(e,n);return Ea(e,t,r,n)}var mf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},id=4;async function n9(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+id*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var Af=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function o5(e){return Af?Buffer.byteLength(e):new Blob([e]).size}function a9(e){if(Af)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function l5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Du(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:o5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:o5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function i9(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function o9(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function l9(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function r9(){let e=i9(),t=o9(),n=l9();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var St=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return St.instance==null&&(St.instance=new St),St.instance}static registerSaveRouter(e){St.getInstance().saveRouters.push(e)}static registerLoadRouter(e){St.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return St.getHandlers(e,"save")}static getLoadHandlers(e,t){return St.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?St.getInstance().loadRouters:St.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},u9=e=>St.registerSaveRouter(e),c9=e=>St.registerLoadRouter(e),h9=e=>St.getSaveHandlers(e),d9=(e,t)=>St.getLoadHandlers(e,t),gf="tensorflowjs",xf=1,ri="models_store",Ra="model_info_store";function u5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function wf(e){let t=e.result;t.createObjectStore(ri,{keyPath:"modelPath"}),t.createObjectStore(Ra,{keyPath:"modelPath"})}var ai=class{constructor(e){if(this.indexedDB=u5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open(gf,xf);a.onupgradeneeded=()=>wf(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ri,"readonly"),o=i.objectStore(ri).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Du(t),o=s.transaction(Ra,"readwrite"),l=o.objectStore(Ra),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),c;u.onsuccess=()=>{c=s.transaction(ri,"readwrite");let h=c.objectStore(ri).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(Ra);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},u.onerror=h=>(s.close(),r(u.error)),o.oncomplete=()=>{c==null?s.close():c.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};ai.URL_SCHEME="indexeddb://";var c5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ai.URL_SCHEME)?p9(e.slice(ai.URL_SCHEME.length)):null;St.registerSaveRouter(c5);St.registerLoadRouter(c5);function p9(e){return new ai(e)}function f9(e){return e.startsWith(ai.URL_SCHEME)?e.slice(ai.URL_SCHEME.length):e}var m9=class{constructor(){this.indexedDB=u5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(gf,xf);n.onupgradeneeded=()=>wf(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(Ra,"readonly"),s=a.objectStore(Ra).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=f9(e),new Promise((t,n)=>{let r=this.indexedDB.open(gf,xf);r.onupgradeneeded=()=>wf(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(Ra,"readwrite"),i=s.objectStore(Ra),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=i.delete(e),c=()=>{l=a.transaction(ri,"readwrite");let h=l.objectStore(ri).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};u.onsuccess=c,u.onerror=h=>(c(),a.close(),n(o.error))}},o.onerror=u=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},na="/",Qo="tensorflowjs_models",h5="info",A9="model_topology",y9="weight_specs",g9="weight_data",x9="model_metadata";function d5(e){return{info:[Qo,e,h5].join(na),topology:[Qo,e,A9].join(na),weightSpecs:[Qo,e,y9].join(na),weightData:[Qo,e,g9].join(na),modelMetadata:[Qo,e,x9].join(na)}}function w9(e){let t=e.split(na);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(na)}function _9(e){return e.startsWith(si.URL_SCHEME)?e.slice(si.URL_SCHEME.length):e}var si=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=d5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Du(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,a9(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=s9(s),t}};si.URL_SCHEME="localstorage://";var p5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(si.URL_SCHEME)?b9(e.slice(si.URL_SCHEME.length)):null;St.registerSaveRouter(p5);St.registerLoadRouter(p5);function b9(e){return new si(e)}var v9=class{constructor(){F(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Qo+na,n=na+h5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(el)&&(e=e.slice(0,e.indexOf(el))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Gn.getInstance();F(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function od(e){if(e.indexOf(el)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Gn.getSchemes().join(",")}`);return{scheme:e.split(el)[0],path:e.split(el)[1]}}async function f5(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=St.getLoadHandlers(e);F(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=St.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=od(e).scheme,l=od(e).path,u=o===od(e).scheme,c=await a.load();n&&u&&await Gn.getManager(o).removeModel(l);let h=await i.save(c);return n&&!u&&await Gn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function k9(){let e=Gn.getSchemes(),t={};for(let n of e){let r=await Gn.getManager(n).listModels();for(let a in r){let s=n+el+a;t[s]=r[a]}}return t}async function N9(e){let t=od(e);return Gn.getManager(t.scheme).removeModel(t.path)}async function I9(e,t){return f5(e,t,!1)}async function S9(e,t){return f5(e,t,!0)}var T9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new T9);try{Gn.registerManager(si.URL_SCHEME,new v9)}catch(e){}try{Gn.registerManager(ai.URL_SCHEME,new m9)}catch(e){}}var C9={importFetch:()=>S8()},_f,E9=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(_f==null&&(_f=C9.importFetch()),_f(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new E9);function We(e,t="float32",n){return t=t||"float32",ef(e),new Ot(e,t,n)}function R9(e,t){let n=E(e,"x","cast");if(!Lg(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(hs,r,a)}var me=O({cast_:R9});function F9(e){let t={x:E(e,"x","clone","string_or_numeric")};return $.runKernel(ks,t)}var Rr=O({clone_:F9});function m5(e,t=!1){console.log(e.toString(t))}t5();var M9={buffer:We,cast:me,clone:Rr,print:m5};jk(M9);var bn={};ze(bn,{browserFiles:()=>$9,browserHTTPRequest:()=>O9,concatenateArrayBuffers:()=>yf,copyModel:()=>I9,decodeWeights:()=>i5,encodeWeights:()=>n9,fromMemory:()=>z9,getLoadHandlers:()=>d9,getModelArtifactsInfoForJSON:()=>Du,getSaveHandlers:()=>h9,http:()=>vf,isHTTPScheme:()=>bf,listModels:()=>k9,loadWeights:()=>D9,moveModel:()=>S9,registerLoadRouter:()=>c9,registerSaveRouter:()=>u9,removeModel:()=>N9,weightsLoaderFactory:()=>A5,withSaveHandler:()=>P9});var L9="model",W9=".json",B9=".weights.bin";function y5(e){return new Promise(t=>setTimeout(t)).then(e)}var tl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(tl.URL_SCHEME)&&(e=e.slice(tl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=L9),this.modelTopologyFileName=e+W9,this.weightDataFileName=e+B9}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await y5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await y5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Du(e)}}}};tl.URL_SCHEME="downloads://";var V9=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let u;try{u=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let c=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),c.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let _={modelTopology:o,weightSpecs:c,weightData:yf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(_.signature=i.signature),i.userDefinedMetadata!=null&&(_.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(_.modelInitializer=i.modelInitializer),n(_)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(u[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>l5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=l5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},H9=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(tl.URL_SCHEME)?U9(e.slice(tl.URL_SCHEME.length)):null;St.registerSaveRouter(H9);function U9(e="model"){return new tl(e)}function $9(e){return new V9(e)}function g5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(u=>{let c=n+ ++a/e.length*(r-n);return t(c),u}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,u){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),F(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(s))}async function x5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(u=>n(u,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await g5(r,t.onProgress,a,s)).map(u=>u.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await g5(i,t.onProgress,o,l)}async function D9(e,t="",n,r){return A5(a=>x5(a,{requestInit:r}))(e,t,n)}function A5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=mf[y]*Dt(A.shape),_=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((b,w)=>{b===A.name&&(_(),i[w]=!0)}):_(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. -Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),u=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let _=0;_{let b=A.slice(_.groupOffset,_.groupOffset+_.sizeBytes),w=i5(b,[_.manifestEntry]);for(let x in w)h[x]=w[x]}),d+=f}),h}}var j9="application/octet-stream",G9="application/json",kf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(F(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:G9}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:j9}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Du(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let u,c;r!=null&&([u,c]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:u,weightData:c,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=q9(t),a=this.weightPathPrefix||n,s=[];for(let u of e)s.push(...u.weights);let i=[],o=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(c)):i.push(a+c+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await x5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,yf(l)]}};kf.URL_SCHEME_REGEX=/^https?:\/\//;function q9(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function bf(e){return e.match(kf.URL_SCHEME_REGEX)!=null}var w5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>bf(r)):n=bf(e),n)return vf(e,t)}return null};St.registerSaveRouter(w5);St.registerLoadRouter(w5);function vf(e,t){return new kf(e,t)}function O9(e,t){return vf(e,t)}var Nf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},X9=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function z9(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Nf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function P9(e){return new X9(e)}var _5={};ze(_5,{confusionMatrix:()=>K9});function Z9(e,t,n=!1,r=!1){let a=E(e,"a","matMul"),s=E(t,"b","matMul");[a,s]=bt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(cs,i,o)}var Ge=O({matMul_:Z9});function Y9(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:E(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel($s,a,s)}var nl=O({oneHot_:Y9});function J9(e,t){let n=E(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(Js,r,a)}var at=O({transpose_:J9});function Q9(e,t,n){let r=E(e,"labels","confusionMatrix"),a=E(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),F(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),F(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=nl(me(r,"int32"),n),i=nl(me(a,"int32"),n),o=at(s),l=Ge(o,i);return me(l,"int32")}var K9=O({confusionMatrix_:Q9}),rl={};ze(rl,{fromPixels:()=>nN,fromPixelsAsync:()=>eN,toPixels:()=>tN});function ld(e,t,n){if(ss(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Er(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}var al;function b5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(td(ed,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(ed,d,p)}let[l,u]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],c;i?c=e.getContext("2d").getImageData(0,0,l,u).data:r||n?c=e.data:(s||a||o)&&(al==null&&(al=document.createElement("canvas").getContext("2d")),al.canvas.width=l,al.canvas.height=u,al.drawImage(e,0,0,l,u),c=al.getImageData(0,0,l,u).data);let h;if(t===4)h=new Int32Array(c);else{let d=l*u;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(c[0]=p*o,c[1]=p*o,c[2]=p*o):c[d]=p*o}let h=u*4;l[h+0]=Math.round(c[0]),l[h+1]=Math.round(c[1]),l[h+2]=Math.round(c[2]),l[h+3]=Math.round(c[3])}if(t!=null){t.width=a,t.height=r;let u=t.getContext("2d"),c=new ImageData(l,a,r);u.putImageData(c,0,0)}return n!==e&&n.dispose(),l}var nN=O({fromPixels_:b5}),If={};ze(If,{prepareAndValidate:()=>v5});function v5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Dt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/u),1].slice(0,s);return[l,i,u,c]}var Sf={};ze(Sf,{calculateShapes:()=>k5,validateInput:()=>Cf,validateUpdateShape:()=>Tf});function Tf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hoN,computeFlatOffset:()=>uN,computeOutShape:()=>N5,getNormalizedAxes:()=>S5,isSliceContinous:()=>lN,maskToAxes:()=>ud,parseSliceParams:()=>M5,sliceInfo:()=>cN,startForAxis:()=>R5,startIndicesWithElidedDims:()=>T5,stopForAxis:()=>F5,stopIndicesWithElidedDims:()=>C5,stridesForAxis:()=>E5,stridesWithElidedDims:()=>I5});function oN(e,t,n){let r=e.shape.length;F(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),F(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function ud(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function N5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;c=T5(i,p,f,r,e),h=C5(o,p,f,a,e),d=I5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=$5(t,n,o),u=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=$5(t,n,o),u=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=iu(0,i,l-1),i}function F5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=iu(0,i,l):i=iu(-1,i,l-1),i}function lN(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function uN(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function cN(e,t,n,r,a,s,i,o,l){let u=t.slice(),c=n.slice(),h=r;r==null&&(h=new Array(u.length));let d=ud(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-u.length,f=ud(o),m=e.slice();f.forEach(x=>{u[x]=0,c[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=S5(m,d,p,u,c,h,a,s,i);u=A,c=y,h=g;let _=ud(l);_.forEach(x=>{c[x]=u[x]+1,h[x]=1});let b=N5(u,c,h),w=b.filter((x,I)=>_.indexOf(I)===-1);return{nonStrided:h.every(x=>x===1),$begin:u,$end:c,$strides:h,size:b,newShape:m,outShape:w}}var re={};ze(re,{Serializable:()=>O5,SerializationMap:()=>ii,registerClass:()=>Fa});var O5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},ii=class{constructor(){this.classNameMap={}}static getMap(){return ii.instance==null&&(ii.instance=new ii),ii.instance}static register(e){ii.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Fa(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),ii.register(e)}var z5={};ze(z5,{TEST_EPSILON_FLOAT16:()=>P5,encodeStrings:()=>L5,expectArrayBuffersEqual:()=>AN,expectArraysClose:()=>hN,expectArraysEqual:()=>pN,expectNumbersClose:()=>fN,expectPromiseToFail:()=>dN,expectValuesInRange:()=>mN,testEpsilon:()=>Ef});var yN=.001,P5=.1;function hN(e,t,n){return n==null&&(n=Ef()),Rf(e,t,(r,a)=>Ff(r,a,n))}function Ef(){return $.backend.floatPrecision()===32?yN:P5}function Rf(e,t,n){let r=!0;if((sn(e)||sn(t))&&(r=!1),sn(e)&&sn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Er(e),o=Er(t);if(!ta(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=sn(e)?e:is(e),s=sn(t)?t:is(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. +`;return d[d.length-1]=" "+d[d.length-1]+"]"+(s?"":f),d}function Eu(e){let t=[];for(let n=0;n`Length of values '${r}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||Pg(t,this.size),this.strides=Xi(e)}set(e,...t){t.length===0&&(t=[0]),F(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let r of e){if(r<0||r>=this.shape[t]){let a=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(a)}t++}let n=e[e.length-1];for(let r=0;rrd(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataSync(){this.throwIfDisposed();let e=Cr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>rd(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await Cr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(Cr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return Jo.print(this,e)}clone(){return this.throwIfDisposed(),Jo.clone(this)}toString(e=!1){let t=this.dataSync();return Uk(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),Jo.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),Cr().makeVariable(this,e,t,n)}};Object.defineProperty(Ue,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function Z(){return rf("Tensor",()=>Ue)}Z();var Ru=class extends Ue{constructor(e,t,n,r){super(e.shape,e.dtype,e.dataId,r);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!ta(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);Cr().disposeTensor(this),this.dataId=e.dataId,Cr().incRef(this,null)}dispose(){Cr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Ru,Symbol.hasInstance,{value:e=>e instanceof Ue&&e.assign!=null&&e.assign instanceof Function});var mr={};ze(mr,{assertTypesMatch:()=>Qg,getTensorsInContainer:()=>lf,isTensorInList:()=>Xk,makeTypesMatch:()=>bt});var uf;(function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"})(uf||(uf={}));var cf;(function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"})(cf||(cf={}));var hf;(function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"})(hf||(hf={}));var df;(function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"})(df||(df={}));var pf;(function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"})(pf||(pf={}));var Kk={float32:df,int32:cf,bool:hf,complex64:pf};function rr(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return Kk[e][t]}function sd(e){return rr(e,"int32")}function bt(e,t){if(e.dtype===t.dtype)return[e,t];let n=rr(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function Qg(e,t){F(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function Xk(e,t){return t.some(n=>n.id===e.id)}function lf(e){let t=[],n=new Set;return e5(e,t,n),t}function e5(e,t,n){if(e==null)return;if(e instanceof Ue){t.push(e);return}if(!Zk(e))return;let r=e;for(let a in r){let s=r[a];n.has(s)||(n.add(s),e5(s,t,n))}}function Zk(e){return Array.isArray(e)||typeof e=="object"}function ff(e){return e.kernelName!=null}var t5=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},Fu=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new t5}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{e.setupFunc!=null&&e.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Yo(e).forEach(t=>{t.disposeFunc!=null&&t.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof su)&&typeof n.then=="function"){let r=++this.pendingBackendInitId,a=n.then(s=>r(rthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(r),()=>(r=t(),r instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),r))}scopedRun(e,t,n){e();try{let r=n();return t(),r}catch(r){throw t(),r}}nextTensorId(){return Fu.nextTensorId++}nextVariableId(){return Fu.nextVariableId++}clone(e){let t=$.runKernel(ks,{x:e}),n={x:e},r=s=>({x:()=>{let i="float32",o={x:s},l={dtype:i};return $.runKernel(hs,o,l)}}),a=[];return this.addTapeNode(this.state.activeScope.name,n,[t],r,a,{}),t}runKernel(e,t,n){if(td(e,this.backendName)==null)throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let r=this.backend.numDataIds(),a=0;n.forEach(o=>{a+=o.dtype==="complex64"?3:1});let s=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],i=r-t-a-s;if(i>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${i} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],r=this.isTapeOn(),a=this.state.numBytes,s=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let i;this.backendName==null&&this.backend;let o,l=ff(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(ff(e)){let{kernelName:p,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let A=td(p,this.backendName);F(A!=null,()=>`Cannot find registered kernel '${p}' for backend '${this.backendName}'`),i=()=>{let y=this.backend.numDataIds();o=A.kernelFunc({inputs:f,attrs:m,backend:this.backend});let g=Array.isArray(o)?o:[o];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(p,y,g);let _=g.map(b=>{if(b.rank!=null)return b;let{dataId:w,shape:x,dtype:I}=b;return this.makeTensorFromDataId(w,x,I)});if(r){let b=this.getTensorsForGradient(p,f,_);n=this.saveTensorsForBackwardMode(b)}return _}}else{let{forwardFunc:p}=e,f=m=>{!r||(n=m.map(A=>this.keep(this.clone(A))))};i=()=>{let m=this.backend.numDataIds();o=this.tidy(()=>p(this.backend,f));let A=Array.isArray(o)?o:[o];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,A),A}}let{inputs:u,attrs:c}=e,h=ff(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=i():(d=this.profiler.profileKernel(l,u,()=>i()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),r&&this.addTapeNode(l,u,t,h,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-a,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-s,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(p=>u[p]!=null?u[p].shape:null),outputShapes:t.map(p=>p.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(o)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(t=>this.keep(this.clone(t)))}getTensorsForGradient(e,t,n){let r=sf(e);if(r!=null){let a=r.inputsToSave||[],s=r.outputsToSave||[],i;r.saveAllInputs?(F(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),i=Object.keys(t).map(l=>t[l])):i=a.map(l=>t[l]);let o=n.filter((l,u)=>s[u]);return i.concat(o)}return[]}makeTensor(e,t,n,r){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",r=r||this.backend;let a=e;n==="string"&&va(e[0])&&(a=e.map(o=>Su(o)));let s=r.write(a,t,n),i=new Ue(t,n,s,this.nextTensorId());if(this.trackTensor(i,r),n==="string"){let o=this.state.tensorInfo.get(s),l=Bg(a);this.state.numBytes+=l-o.bytes,o.bytes=l}return i}makeTensorFromDataId(e,t,n,r){n=n||"float32";let a=new Ue(t,n,e,this.nextTensorId());return this.trackTensor(a,r),a}makeVariable(e,t=!0,n,r){n=n||this.nextVariableId().toString(),r!=null&&r!==e.dtype&&(e=e.cast(r));let a=new Ru(e,t,n,this.nextTensorId());if(this.state.registeredVariables[a.name]!=null)throw new Error(`Variable with name ${a.name} was already registered`);return this.state.registeredVariables[a.name]=a,this.incRef(a,this.backend),a}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*J1(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Ru||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*J1(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(r=>r.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let r of this.state.activeProfile.kernels)r.kernelTimeMs=await r.kernelTimeMs,r.extraInfo=await r.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,r,a,s){let i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:a},o=sf(e);o!=null&&(r=o.gradFunc),r!=null&&(i.gradient=l=>(l=l.map((u,c)=>{if(u==null){let h=n[c],d=bh(h.size,h.dtype);return this.makeTensor(d,h.shape,h.dtype)}return u}),r(l.length>1?l:l[0],a,s))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=lf(e),n=new Set(t.map(a=>a.id));for(let a=0;a{!a.kept&&a.scopeId===r.id&&this.track(a)})}gradients(e,t,n,r=!1){if(F(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let a=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));F(a instanceof Ue,()=>"The result y returned by f() must be a tensor.");let s=Wk(this.state.activeTape,t,a);if(!r&&s.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let i={};i[a.id]=n==null?Yk(a.shape):n,Bk(i,s,l=>this.tidy(l),Jk);let o=t.map(l=>i[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:a,grads:o}})}customGrad(e){return F(ka(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{F(t.every(i=>i instanceof Ue),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,r={};t.forEach((i,o)=>{r[o]=i});let a=(i,o)=>(n=e(...t,o),F(n.value instanceof Ue,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),F(ka(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),s=(i,o)=>{let l=n.gradFunc(i,o),u=Array.isArray(l)?l:[l];F(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),F(u.every(h=>h instanceof Ue),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((h,d)=>{c[d]=()=>h}),c};return this.runKernelFunc({forwardFunc:a,backwardsFunc:s,inputs:r})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}async time(e){let t=Iu(),n=await this.backend.time(e);return n.wallMs=Iu()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new t5;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}};Fu.nextTensorId=0;Fu.nextVariableId=0;function Yk(e){let t=Q1(Dt(e),"float32");return $.makeTensor(t,e,"float32")}function n5(){let e=qg();if(e._tfengine==null){let t=new Gg(e);e._tfengine=new Fu(t)}return Tk(e._tfengine.ENV),jk(()=>e._tfengine),e._tfengine}var $=n5();function Jk(e,t){let n={a:e,b:t};return $.runKernel(Na,n)}var Mu={};ze(Mu,{isBrowser:()=>r5,isMobile:()=>Qk});function e9(){return typeof navigator!="undefined"&&navigator!=null}function Qk(){if(e9()){let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(e.substr(0,4))}return!1}function r5(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Ar=J();Ar.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Ar.registerFlag("IS_BROWSER",()=>r5());Ar.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Ar.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Ar.registerFlag("PROD",()=>!1);Ar.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Ar.getBool("DEBUG"));Ar.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Ar.registerFlag("IS_TEST",()=>!1);Ar.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);Ar.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);function Er(e,t){let n=e;if(sn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let r=[];for(;Array.isArray(n)||sn(n)&&t!=="string";)r.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&a5(e,r,[]),r}function a5(e,t,n){if(n=n||[],!Array.isArray(e)&&!sn(e)){F(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}F(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),F(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let r=t.slice(1);for(let a=0;a=0&&(a=r),s5(r,a,t,n),e==null||!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let o=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${o}'`)}let s=Er(e,a);!sn(e)&&!Array.isArray(e)&&(e=[e]);let i=a!=="string"?nd(e,a):is(e,[],!0);return $.makeTensor(i,s,a)}function $u(e,t,n,r="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,s)=>E(a,`${t}[${s}]`,n,r))}var i5="__op";function O(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],r=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+i5;let a=(...s)=>{$.startScope(n);try{let i=r(...s);return tf(i)&&console.error("Cannot return a Promise inside of tidy."),$.endScope(i),i}catch(i){throw $.endScope(null),i}};return Object.defineProperty(a,"name",{value:n,configurable:!0}),a}function t9(e,t){let n=E(e,"real","complex"),r=E(t,"imag","complex");an(n.shape,r.shape,`real and imag shapes, ${n.shape} and ${r.shape}, must match in call to tf.complex().`);let a={real:n,imag:r};return $.runKernel(Th,a)}var Ca=O({complex_:t9});function Ea(e,t,n,r){if(r==null&&(r=wh(e)),r==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){ef(t);let a=Dt(t),s=Dt(n);F(a===s,()=>`Based on the provided shape, [${t}], the tensor should have ${a} values but has ${s}`);for(let i=0;i`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!sn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=r!=="string"?nd(e,r):is(e,[],!0),$.makeTensor(e,t,r)}function yr(e,t,n){let r=Er(e,n);return Ea(e,t,r,n)}var mf={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},id=4;async function r9(e,t){let n=[],r=[],a=Array.isArray(e)?e.map(i=>i.name):Object.keys(e);for(let i=0;i{let d=await l.bytes(),p=d.reduce((A,y)=>A+y.length,0)+id*d.length,f=new Uint8Array(p),m=0;for(let A=0;A{if(t+=s.byteLength,n.push(s.byteLength===s.buffer.byteLength?s:new s.constructor(s)),!(s instanceof Float32Array||s instanceof Int32Array||s instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${s.constructor.name}`)});let r=new Uint8Array(t),a=0;return n.forEach(s=>{r.set(new Uint8Array(s.buffer),a),a+=s.byteLength}),r.buffer}var Af=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function l5(e){return Af?Buffer.byteLength(e):new Blob([e]).size}function s9(e){if(Af)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let r=0,a=t.length;r{t+=a.byteLength});let n=new Uint8Array(t),r=0;return e.forEach(a=>{n.set(new Uint8Array(a),r),r+=a.byteLength}),n.buffer}function u5(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function Du(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:l5(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:l5(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function o9(){let e=n=>{let r=n<<13,a=0;for(;(r&8388608)==0;)a-=8388608,r<<=1;return r&=~8388608,a+=947912704,r|a},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function l9(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function u9(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function a9(){let e=o9(),t=l9(),n=u9();return r=>{let a=new ArrayBuffer(4*r.length),s=new Uint32Array(a);for(let i=0;i>10]+(o&1023)]+t[o>>10];s[i]=l}return new Float32Array(a)}}var St=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return St.instance==null&&(St.instance=new St),St.instance}static registerSaveRouter(e){St.getInstance().saveRouters.push(e)}static registerLoadRouter(e){St.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return St.getHandlers(e,"save")}static getLoadHandlers(e,t){return St.getHandlers(e,"load",t)}static getHandlers(e,t,n){let r=[];return(t==="load"?St.getInstance().loadRouters:St.getInstance().saveRouters).forEach(a=>{let s=a(e,n);s!==null&&r.push(s)}),r}},c9=e=>St.registerSaveRouter(e),h9=e=>St.registerLoadRouter(e),d9=e=>St.getSaveHandlers(e),p9=(e,t)=>St.getLoadHandlers(e,t),gf="tensorflowjs",xf=1,ri="models_store",Ra="model_info_store";function c5(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function wf(e){let t=e.result;t.createObjectStore(ri,{keyPath:"modelPath"}),t.createObjectStore(Ra,{keyPath:"modelPath"})}var ai=class{constructor(e){if(this.indexedDB=c5(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,r)=>{let a=this.indexedDB.open(gf,xf);a.onupgradeneeded=()=>wf(a),a.onsuccess=()=>{let s=a.result;if(t==null){let i=s.transaction(ri,"readonly"),o=i.objectStore(ri).get(this.modelPath);o.onsuccess=()=>{if(o.result==null)return s.close(),r(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(o.result.modelArtifacts)},o.onerror=l=>(s.close(),r(o.error)),i.oncomplete=()=>s.close()}else{let i=Du(t),o=s.transaction(Ra,"readwrite"),l=o.objectStore(Ra),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:i}),c;u.onsuccess=()=>{c=s.transaction(ri,"readwrite");let h=c.objectStore(ri).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:i});h.onsuccess=()=>n({modelArtifactsInfo:i}),h.onerror=d=>{l=o.objectStore(Ra);let p=l.delete(this.modelPath);p.onsuccess=()=>(s.close(),r(h.error)),p.onerror=f=>(s.close(),r(h.error))}},u.onerror=h=>(s.close(),r(u.error)),o.oncomplete=()=>{c==null?s.close():c.oncomplete=()=>s.close()}}},a.onerror=s=>r(a.error)})}};ai.URL_SCHEME="indexeddb://";var h5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ai.URL_SCHEME)?f9(e.slice(ai.URL_SCHEME.length)):null;St.registerSaveRouter(h5);St.registerLoadRouter(h5);function f9(e){return new ai(e)}function m9(e){return e.startsWith(ai.URL_SCHEME)?e.slice(ai.URL_SCHEME.length):e}var A9=class{constructor(){this.indexedDB=c5()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(gf,xf);n.onupgradeneeded=()=>wf(n),n.onsuccess=()=>{let r=n.result,a=r.transaction(Ra,"readonly"),s=a.objectStore(Ra).getAll();s.onsuccess=()=>{let i={};for(let o of s.result)i[o.modelPath]=o.modelArtifactsInfo;e(i)},s.onerror=i=>(r.close(),t(s.error)),a.oncomplete=()=>r.close()},n.onerror=r=>t(n.error)})}async removeModel(e){return e=m9(e),new Promise((t,n)=>{let r=this.indexedDB.open(gf,xf);r.onupgradeneeded=()=>wf(r),r.onsuccess=()=>{let a=r.result,s=a.transaction(Ra,"readwrite"),i=s.objectStore(Ra),o=i.get(e),l;o.onsuccess=()=>{if(o.result==null)return a.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=i.delete(e),c=()=>{l=a.transaction(ri,"readwrite");let h=l.objectStore(ri).delete(e);h.onsuccess=()=>t(o.result.modelArtifactsInfo),h.onerror=d=>n(o.error)};u.onsuccess=c,u.onerror=h=>(c(),a.close(),n(o.error))}},o.onerror=u=>(a.close(),n(o.error)),s.oncomplete=()=>{l==null?a.close():l.oncomplete=()=>a.close()}},r.onerror=a=>n(r.error)})}},na="/",Qo="tensorflowjs_models",d5="info",y9="model_topology",g9="weight_specs",x9="weight_data",w9="model_metadata";function p5(e){return{info:[Qo,e,d5].join(na),topology:[Qo,e,y9].join(na),weightSpecs:[Qo,e,g9].join(na),weightData:[Qo,e,x9].join(na),modelMetadata:[Qo,e,w9].join(na)}}function _9(e){let t=e.split(na);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(na)}function b9(e){return e.startsWith(si.URL_SCHEME)?e.slice(si.URL_SCHEME.length):e}var si=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=p5(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),r=Du(e);try{this.LS.setItem(this.keys.info,JSON.stringify(r)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,s9(e.weightData));let a={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};return e.signature!=null&&(a.signature=e.signature),e.userDefinedMetadata!=null&&(a.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(a.modelInitializer=e.modelInitializer),this.LS.setItem(this.keys.modelMetadata,JSON.stringify(a)),{modelArtifactsInfo:r}}catch(a){throw this.LS.removeItem(this.keys.info),this.LS.removeItem(this.keys.topology),this.LS.removeItem(this.keys.weightSpecs),this.LS.removeItem(this.keys.weightData),this.LS.removeItem(this.keys.modelMetadata),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${r.modelTopologyBytes}, weightSpecsBytes=${r.weightSpecsBytes}, weightDataBytes=${r.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let r=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(r==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=r;let a=this.LS.getItem(this.keys.modelMetadata);if(a!=null){let i=JSON.parse(a);t.format=i.format,t.generatedBy=i.generatedBy,t.convertedBy=i.convertedBy,i.signature!=null&&(t.signature=i.signature),i.userDefinedMetadata!=null&&(t.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(t.modelInitializer=i.modelInitializer)}let s=this.LS.getItem(this.keys.weightData);if(s==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=i9(s),t}};si.URL_SCHEME="localstorage://";var f5=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(si.URL_SCHEME)?v9(e.slice(si.URL_SCHEME.length)):null;St.registerSaveRouter(f5);St.registerLoadRouter(f5);function v9(e){return new si(e)}var k9=class{constructor(){F(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),F(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=Qo+na,n=na+d5;for(let r=0;r"scheme must not be undefined or null."),e.endsWith(el)&&(e=e.slice(0,e.indexOf(el))),F(e.length>0,()=>"scheme must not be an empty string.");let n=Gn.getInstance();F(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function od(e){if(e.indexOf(el)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Gn.getSchemes().join(",")}`);return{scheme:e.split(el)[0],path:e.split(el)[1]}}async function m5(e,t,n=!1){F(e!==t,()=>`Old path and new path are the same: '${e}'`);let r=St.getLoadHandlers(e);F(r.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),F(r.length<2,()=>`Copying failed because more than one (${r.length}) load handlers for source URL ${e}.`);let a=r[0],s=St.getSaveHandlers(t);F(s.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),F(s.length<2,()=>`Copying failed because more than one (${r.length}) save handlers for destination URL ${t}.`);let i=s[0],o=od(e).scheme,l=od(e).path,u=o===od(e).scheme,c=await a.load();n&&u&&await Gn.getManager(o).removeModel(l);let h=await i.save(c);return n&&!u&&await Gn.getManager(o).removeModel(l),h.modelArtifactsInfo}async function N9(){let e=Gn.getSchemes(),t={};for(let n of e){let r=await Gn.getManager(n).listModels();for(let a in r){let s=n+el+a;t[s]=r[a]}}return t}async function I9(e){let t=od(e);return Gn.getManager(t.scheme).removeModel(t.path)}async function S9(e,t){return m5(e,t,!1)}async function T9(e,t){return m5(e,t,!0)}var C9=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new C9);try{Gn.registerManager(si.URL_SCHEME,new k9)}catch(e){}try{Gn.registerManager(ai.URL_SCHEME,new A9)}catch(e){}}var E9={importFetch:()=>T8()},_f,R9=class{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(_f==null&&(_f=E9.importFetch()),_f(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&J().setPlatform("node",new R9);function We(e,t="float32",n){return t=t||"float32",ef(e),new Ot(e,t,n)}function F9(e,t){let n=E(e,"x","cast");if(!Wg(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let r={x:n},a={dtype:t};return $.runKernel(hs,r,a)}var me=O({cast_:F9});function M9(e){let t={x:E(e,"x","clone","string_or_numeric")};return $.runKernel(ks,t)}var Rr=O({clone_:M9});function A5(e,t=!1){console.log(e.toString(t))}n5();var $9={buffer:We,cast:me,clone:Rr,print:A5};Gk($9);var bn={};ze(bn,{browserFiles:()=>D9,browserHTTPRequest:()=>z9,concatenateArrayBuffers:()=>yf,copyModel:()=>S9,decodeWeights:()=>o5,encodeWeights:()=>r9,fromMemory:()=>P9,getLoadHandlers:()=>p9,getModelArtifactsInfoForJSON:()=>Du,getSaveHandlers:()=>d9,http:()=>vf,isHTTPScheme:()=>bf,listModels:()=>N9,loadWeights:()=>O9,moveModel:()=>T9,registerLoadRouter:()=>h9,registerSaveRouter:()=>c9,removeModel:()=>I9,weightsLoaderFactory:()=>y5,withSaveHandler:()=>L9});var W9="model",B9=".json",V9=".weights.bin";function g5(e){return new Promise(t=>setTimeout(t)).then(e)}var tl=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(tl.URL_SCHEME)&&(e=e.slice(tl.URL_SCHEME.length)),(e==null||e.length===0)&&(e=W9),this.modelTopologyFileName=e+B9,this.weightDataFileName=e+V9}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer);let a=window.URL.createObjectURL(new Blob([JSON.stringify(r)],{type:"application/json"})),s=this.jsonAnchor==null?document.createElement("a"):this.jsonAnchor;if(s.download=this.modelTopologyFileName,s.href=a,await g5(()=>s.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let i=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;i.download=this.weightDataFileName,i.href=t,await g5(()=>i.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:Du(e)}}}};tl.URL_SCHEME="downloads://";var U9=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.files=e}async load(){let e=this.files[0],t=this.files.slice(1);return new Promise((n,r)=>{let a=new FileReader;a.onload=s=>{let i=JSON.parse(s.target.result),o=i.modelTopology;if(o==null){r(new Error(`modelTopology field is missing from file ${e.name}`));return}t.length===0&&n({modelTopology:o});let l=i.weightsManifest;if(l==null){r(new Error(`weightManifest field is missing from file ${e.name}`));return}let u;try{u=this.checkManifestAndWeightFiles(l,t)}catch(p){r(p);return}let c=[],h=[],d=[];l.forEach(p=>{p.paths.forEach(f=>{h.push(f),d.push(null)}),c.push(...p.weights)}),l.forEach(p=>{p.paths.forEach(f=>{let m=new FileReader;m.onload=A=>{let y=A.target.result,g=h.indexOf(f);if(d[g]=y,d.indexOf(null)===-1){let _={modelTopology:o,weightSpecs:c,weightData:yf(d),format:i.format,generatedBy:i.generatedBy,convertedBy:i.convertedBy};i.signature!=null&&(_.signature=i.signature),i.userDefinedMetadata!=null&&(_.userDefinedMetadata=i.userDefinedMetadata),i.modelInitializer!=null&&(_.modelInitializer=i.modelInitializer),n(_)}},m.onerror=A=>r(`Failed to weights data from file of path '${f}'.`),m.readAsArrayBuffer(u[f])})})},a.onerror=s=>r(`Failed to read model topology and weights manifest JSON from file '${e.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),a.readAsText(e)})}checkManifestAndWeightFiles(e,t){let n=[],r=t.map(s=>u5(s.name)),a={};for(let s of e)s.paths.forEach(i=>{let o=u5(i);if(n.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(n.push(o),r.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);a[i]=t[r.indexOf(o)]});if(n.length!==t.length)throw new Error(`Mismatch in the number of files in weights manifest (${n.length}) and the number of weight files provided (${t.length}).`);return a}},j9=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(tl.URL_SCHEME)?H9(e.slice(tl.URL_SCHEME.length)):null;St.registerSaveRouter(j9);function H9(e="model"){return new tl(e)}function D9(e){return new U9(e)}function x5(e,t,n,r){i(e),n=n==null?0:n,r=r==null?1:r,o(n,r);let a=0,s=l=>(l.then(u=>{let c=n+ ++a/e.length*(r-n);return t(c),u}),l);function i(l){F(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function o(l,u){F(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),F(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),F(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(s))}async function w5(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,r=e.map(u=>n(u,t.requestInit,{isBinary:!0})),a=0,s=.5,i=(t.onProgress==null?await Promise.all(r):await x5(r,t.onProgress,a,s)).map(u=>u.arrayBuffer()),o=.5,l=1;return t.onProgress==null?await Promise.all(i):await x5(i,t.onProgress,o,l)}async function O9(e,t="",n,r){return y5(a=>w5(a,{requestInit:r}))(e,t,n)}function y5(e){return async(t,n="",r)=>{let a=t.map(()=>!1),s={},i=r!=null?r.map(()=>!1):[],o=[];if(t.forEach((p,f)=>{let m=0;p.weights.forEach(A=>{let y="quantization"in A?A.quantization.dtype:A.dtype,g=mf[y]*Dt(A.shape),_=()=>{a[f]=!0,s[f]==null&&(s[f]=[]),s[f].push({manifestEntry:A,groupOffset:m,sizeBytes:g})};r!=null?r.forEach((b,w)=>{b===A.name&&(_(),i[w]=!0)}):_(),o.push(A.name),m+=g})}),!i.every(p=>p)){let p=r.filter((f,m)=>!i[m]);throw new Error(`Could not find weights in manifest with names: ${p.join(", ")}. +Manifest JSON has weights with names: ${o.join(", ")}.`)}let l=a.reduce((p,f,m)=>(f&&p.push(m),p),[]),u=[];l.forEach(p=>{t[p].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),h={},d=0;return l.forEach(p=>{let f=t[p].paths.length,m=0;for(let _=0;_{let b=A.slice(_.groupOffset,_.groupOffset+_.sizeBytes),w=o5(b,[_.manifestEntry]);for(let x in w)h[x]=w[x]}),d+=f}),h}}var G9="application/octet-stream",q9="application/json",kf=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(F(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,F(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&F(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],r={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(r.signature=e.signature),e.userDefinedMetadata!=null&&(r.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(r.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(r)],{type:q9}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:G9}),"model.weights.bin");let a=await this.fetch(this.path,t);if(a.ok)return{modelArtifactsInfo:Du(e),responses:[a]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${a.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(p){let f=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?f+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":f+=" Please make sure the server is serving valid JSON for this request.",new Error(f)}let n=t.modelTopology,r=t.weightsManifest,a=t.generatedBy,s=t.convertedBy,i=t.format,o=t.signature,l=t.userDefinedMetadata;if(n==null&&r==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);let u,c;r!=null&&([u,c]=await this.loadWeights(r));let h={modelTopology:n,weightSpecs:u,weightData:c,generatedBy:a,convertedBy:s,format:i};o!=null&&(h.signature=o),l!=null&&(h.userDefinedMetadata=l);let d=t.modelInitializer;return d&&(h.modelInitializer=d),h}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,r]=X9(t),a=this.weightPathPrefix||n,s=[];for(let u of e)s.push(...u.weights);let i=[],o=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?o.push(this.weightUrlConverter(c)):i.push(a+c+r);this.weightUrlConverter&&i.push(...await Promise.all(o));let l=await w5(i,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[s,yf(l)]}};kf.URL_SCHEME_REGEX=/^https?:\/\//;function X9(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),r=e.substring(0,t),a=n>t?e.substring(n):"";return[r+"/",a]}function bf(e){return e.match(kf.URL_SCHEME_REGEX)!=null}var _5=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(r=>bf(r)):n=bf(e),n)return vf(e,t)}return null};St.registerSaveRouter(_5);St.registerLoadRouter(_5);function vf(e,t){return new kf(e,t)}function z9(e,t){return vf(e,t)}var Nf=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},K9=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function P9(e,t,n,r){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new Nf(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new Nf({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:r}))}function L9(e){return new K9(e)}var b5={};ze(b5,{confusionMatrix:()=>Z9});function Y9(e,t,n=!1,r=!1){let a=E(e,"a","matMul"),s=E(t,"b","matMul");[a,s]=bt(a,s);let i={a,b:s},o={transposeA:n,transposeB:r};return $.runKernel(cs,i,o)}var Ge=O({matMul_:Y9});function J9(e,t,n=1,r=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:E(e,"indices","oneHot","int32")},s={depth:t,onValue:n,offValue:r};return $.runKernel($s,a,s)}var nl=O({oneHot_:J9});function Q9(e,t){let n=E(e,"x","transpose");if(t==null&&(t=n.shape.map((s,i)=>i).reverse()),F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(s=>{F(s>=0&&s`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let r={x:n},a={perm:t};return $.runKernel(Js,r,a)}var at=O({transpose_:Q9});function eN(e,t,n){let r=E(e,"labels","confusionMatrix"),a=E(t,"predictions","confusionMatrix");F(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),F(r.rank===1,()=>`Expected the rank of labels to be 1, but got ${r.rank}`),F(a.rank===1,()=>`Expected the rank of predictions to be 1, but got ${a.rank}`),F(r.shape[0]===a.shape[0],()=>`Mismatch in the number of examples: ${r.shape[0]} vs. ${a.shape[0]}. Labels and predictions should have the same number of elements.`),F(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let s=nl(me(r,"int32"),n),i=nl(me(a,"int32"),n),o=at(s),l=Ge(o,i);return me(l,"int32")}var Z9=O({confusionMatrix_:eN}),rl={};ze(rl,{fromPixels:()=>rN,fromPixelsAsync:()=>tN,toPixels:()=>nN});function ld(e,t,n){if(ss(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let r=Er(e,n);if(r.length!==3&&r.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}var al;function v5(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,r=!1,a=!1,s=!1,i=!1,o=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)r=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)a=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)s=!0;else if(e.getContext!=null)i=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)o=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(a){let d=2;if(a&&e.readyState element.")}if(td(ed,$.backendName)!=null){let d={pixels:e},p={numChannels:t};return $.runKernel(ed,d,p)}let[l,u]=a?[e.videoWidth,e.videoHeight]:[e.width,e.height],c;i?c=e.getContext("2d").getImageData(0,0,l,u).data:r||n?c=e.data:(s||a||o)&&(al==null&&(al=document.createElement("canvas").getContext("2d")),al.canvas.width=l,al.canvas.height=u,al.drawImage(e,0,0,l,u),c=al.getImageData(0,0,l,u).data);let h;if(t===4)h=new Int32Array(c);else{let d=l*u;h=new Int32Array(d*t);for(let p=0;p4||s===2)throw new Error(`toPixels only supports depth of size 1, 3 or 4 but got ${s}`);if(n.dtype!=="float32"&&n.dtype!=="int32")throw new Error(`Unsupported type for toPixels: ${n.dtype}. Please use float32 or int32 tensors.`);let i=await n.data(),o=n.dtype==="float32"?255:1,l=new Uint8ClampedArray(a*r*4);for(let u=0;u1)throw new Error(`Tensor values for a float32 Tensor must be in the range [0 - 1] but encountered ${p}.`)}else if(n.dtype==="int32"&&(p<0||p>255))throw new Error(`Tensor values for a int32 Tensor must be in the range [0 - 255] but encountered ${p}.`);s===1?(c[0]=p*o,c[1]=p*o,c[2]=p*o):c[d]=p*o}let h=u*4;l[h+0]=Math.round(c[0]),l[h+1]=Math.round(c[1]),l[h+2]=Math.round(c[2]),l[h+3]=Math.round(c[3])}if(t!=null){t.width=a,t.height=r;let u=t.getContext("2d"),c=new ImageData(l,a,r);u.putImageData(c,0,0)}return n!==e&&n.dispose(),l}var rN=O({fromPixels_:v5}),If={};ze(If,{prepareAndValidate:()=>k5});function k5(e,t){let n=e.shape.length,r=t.shape.length;if(n<1)throw new Error(`tf.gatherND() expects the input to be rank 1 or higher, but the rank was ${n}.`);if(r<1)throw new Error(`tf.gatherND() expects the indices to be rank 1 or higher, but the rank was ${r}.`);if(t.dtype!=="int32")throw new Error(`tf.gatherND() expects the indices to be int32 type, but the dtype was ${t.dtype}.`);if(t.shape[r-1]>n)throw new Error(`index innermost dimension length must be <= tensor rank; saw: ${t.shape[r-1]} vs. ${n}`);if(Dt(e.shape)===0)throw new Error(`Requested more than 0 entries, but input is empty. Input shape: ${e.shape}.`);let a=t.shape,s=a[a.length-1],i=1;for(let h=0;hh/u),1].slice(0,s);return[l,i,u,c]}var Sf={};ze(Sf,{calculateShapes:()=>N5,validateInput:()=>Cf,validateUpdateShape:()=>Tf});function Tf(e,t,n){let r=t.rank>1?t.shape[t.rank-1]:1,a=t.rank>1?t.rank-1:1,s=`Must have updates.shape = indices.shape[:batchDim] + shape[sliceDim:], got updates.shape: ${n.shape}, indices.shape: ${t.shape}, shape: ${e}, sliceDim: ${r}, and batchDim: ${a}.`;if(n.rank1?t.shape[r-1]:1,s=n.length,i=1;for(let h=a;hlN,computeFlatOffset:()=>cN,computeOutShape:()=>I5,getNormalizedAxes:()=>T5,isSliceContinous:()=>uN,maskToAxes:()=>ud,parseSliceParams:()=>$5,sliceInfo:()=>hN,startForAxis:()=>F5,startIndicesWithElidedDims:()=>C5,stopForAxis:()=>M5,stopIndicesWithElidedDims:()=>E5,stridesForAxis:()=>R5,stridesWithElidedDims:()=>S5});function lN(e,t,n){let r=e.shape.length;F(r===t.length,()=>`Error in slice${r}D: Length of begin ${t} must match the rank of the array (${r}).`),F(r===n.length,()=>`Error in slice${r}D: Length of size ${n} must match the rank of the array (${r}).`);for(let a=0;a`Error in slice${r}D: begin[${a}] + size[${a}] (${t[a]+n[a]}) would overflow input.shape[${a}] (${e.shape[a]})`)}function ud(e){let t=[],n=0;for(;e>0;)e&1&&t.push(n),e/=2,n++;return t}function I5(e,t,n){let r=[];for(let a=0;a0){let p=t[0],f=n+1;c=C5(i,p,f,r,e),h=E5(o,p,f,a,e),d=S5(s,p,f,e)}else for(let p=0;p-1)s[o]=0;else{let l=D5(t,n,o),u=r[l];e&1<-1)s[o]=Number.MAX_SAFE_INTEGER;else{let l=D5(t,n,o),u=r[l];e&1<0?i=Number.MIN_SAFE_INTEGER:i=Number.MAX_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),i=iu(0,i,l-1),i}function M5(e,t,n,r,a,s){let i=t[a],o=n[a]||1;(e&1<0?i=Number.MAX_SAFE_INTEGER:i=Number.MIN_SAFE_INTEGER);let l=r[a];return i<0&&(i+=l),o>0?i=iu(0,i,l):i=iu(-1,i,l-1),i}function uN(e,t,n){let r=n.length;for(let a=0;a1){r=a;break}for(let a=r+1;a0||n[a]!==e[a])return!1;return!0}function cN(e,t){let n=e.length>0?e[e.length-1]:1;for(let r=0;r{F(i!==-1,()=>"slice() does not support negative begin indexing.")});let s;return n==null?s=new Array(a).fill(-1):typeof n=="number"?s=[n,...new Array(a-1).fill(-1)]:n.lengthi>=0?i:(F(i===-1,()=>`Negative size values should be exactly -1 but got ${i} for the slice() size at index ${o}.`),e.shape[o]-r[o])),[r,s]}function hN(e,t,n,r,a,s,i,o,l){let u=t.slice(),c=n.slice(),h=r;r==null&&(h=new Array(u.length));let d=ud(i);if(d.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(i!==0&&o!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(i!==0&&l!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let p=e.length-u.length,f=ud(o),m=e.slice();f.forEach(x=>{u[x]=0,c[x]=1,m.splice(x,0,1)});let{begin:A,end:y,strides:g}=T5(m,d,p,u,c,h,a,s,i);u=A,c=y,h=g;let _=ud(l);_.forEach(x=>{c[x]=u[x]+1,h[x]=1});let b=I5(u,c,h),w=b.filter((x,I)=>_.indexOf(I)===-1);return{nonStrided:h.every(x=>x===1),$begin:u,$end:c,$strides:h,size:b,newShape:m,outShape:w}}var re={};ze(re,{Serializable:()=>z5,SerializationMap:()=>ii,registerClass:()=>Fa});var z5=class{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}},ii=class{constructor(){this.classNameMap={}}static getMap(){return ii.instance==null&&(ii.instance=new ii),ii.instance}static register(e){ii.getMap().classNameMap[e.className]=[e,e.fromConfig]}};function Fa(e){F(e.className!=null,()=>"Class being registered does not have the static className property defined."),F(typeof e.className=="string",()=>"className is required to be a string, but got type "+typeof e.className),F(e.className.length>0,()=>"Class being registered has an empty-string as its className, which is disallowed."),ii.register(e)}var P5={};ze(P5,{TEST_EPSILON_FLOAT16:()=>L5,encodeStrings:()=>W5,expectArrayBuffersEqual:()=>yN,expectArraysClose:()=>dN,expectArraysEqual:()=>fN,expectNumbersClose:()=>mN,expectPromiseToFail:()=>pN,expectValuesInRange:()=>AN,testEpsilon:()=>Ef});var gN=.001,L5=.1;function dN(e,t,n){return n==null&&(n=Ef()),Rf(e,t,(r,a)=>Ff(r,a,n))}function Ef(){return $.backend.floatPrecision()===32?gN:L5}function Rf(e,t,n){let r=!0;if((sn(e)||sn(t))&&(r=!1),sn(e)&&sn(t)&&(r=!0),r){let i=e.constructor.name,o=t.constructor.name;if(i!==o)throw new Error(`Arrays are of different type. Actual: ${i}. Expected: ${o}`)}if(Array.isArray(e)&&Array.isArray(t)){let i=Er(e),o=Er(t);if(!ta(i,o))throw new Error(`Arrays have different shapes. Actual: [${i}]. Expected: [${o}]`)}let a=sn(e)?e:is(e),s=sn(t)?t:is(t);if(a.length!==s.length)throw new Error(`Arrays have different lengths actual: ${a.length} vs expected: ${s.length}. Actual: ${a}. Expected: ${s}.`);for(let i=0;it.fail(),()=>t())}function pN(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return va(e)||va(e[0])||va(t)||va(t[0])?Rf(e,n,(r,a)=>r==a):Rf(e,t,(r,a)=>Ff(r,a,0))}function fN(e,t,n){if(n==null&&(n=Ef()),!Ff(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Ff(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function mN(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function AN(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function L5(e){for(let t=0;tt.dispose())}function Gt(e){return $.keep(e)}function vN(e){return $.time(e)}function kN(e){return $.setBackend(e)}function NN(){return $.ready()}function IN(){return $.backendName}function SN(e){$.removeBackend(e)}function $f(e){return $.findBackend(e)}function TN(e){return $.findBackendFactory(e)}function sl(e,t,n=1){return $.registerBackend(e,t,n)}function W5(){return $.backend}function CN(e,t){J().setPlatform(e,t)}function EN(e,t){let n=E(e,"a","add"),r=E(t,"b","add");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Na,a)}var se=O({add_:EN});function RN(e,t){let n=E(e,"a","floorDiv"),r=E(t,"b","floorDiv");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(_s,a)}var hd=O({floorDiv_:RN});function FN(e,t){let n=E(e,"a","div"),r=E(t,"b","div");if([n,r]=bt(n,r),n.dtype==="int32"&&r.dtype==="int32")return hd(n,r);let a={a:n,b:r},s={};return $.runKernel(gs,a,s)}var ge=O({div_:FN});function MN(e,t){let n=E(e,"a","mul"),r=E(t,"b","mul");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ms,a)}var P=O({mul_:MN});function $N(e){let t=E(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(hu,n)}else{let n={x:t};return $.runKernel(Zi,n)}}var zt=O({abs_:$N});function DN(e){let t={x:E(e,"x","acos")};return $.runKernel(Yi,t)}var Df=O({acos_:DN});function ON(e){let t={x:E(e,"x","acosh")};return $.runKernel(Ji,t)}var Of=O({acosh_:ON});function zN(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>E(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!ta(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(os,r)}var Ma=O({addN_:zN});function PN(e,t=null,n=!1){let r={x:E(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(vh,r,a)}var dd=O({all_:PN});function LN(e,t=null,n=!1){let r={x:E(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(kh,r,a)}var Ou=O({any_:LN});function WN(e,t=0){let n={x:E(e,"x","argMax")},r={axis:t};return $.runKernel(ls,n,r)}var zu=O({argMax_:WN});function BN(e,t=0){let n={x:E(e,"x","argMin")},r={axis:t};return $.runKernel(lu,n,r)}var zf=O({argMin_:BN});function VN(e){let t={x:E(e,"x","asin")};return $.runKernel(Qi,t)}var Pf=O({asin_:VN});function UN(e){let t={x:E(e,"x","asinh")};return $.runKernel(eo,t)}var Lf=O({asinh_:UN});function HN(e){let t={x:E(e,"x","atan")};return $.runKernel(to,t)}var Wf=O({atan_:HN});function jN(e,t){let n=E(e,"a","atan2"),r=E(t,"b","atan2");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ro,a)}var Bf=O({atan2_:jN});function GN(e){let t={x:E(e,"x","atanh")};return $.runKernel(no,t)}var Vf=O({atanh_:GN});function qN(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=B5(a);return Pu(e,o,n,s,r,null,null,l)}function V5(e,t,n,r,a,s,i="channelsLast"){let[o,l]=pd(t),u;if(i==="channelsLast")u=[o,l,e[3],e[3]];else if(i==="channelsFirst")u=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Pu(e,u,n,r,a,s,!1,i)}function XN(e,t,n,r,a,s,i="NDHWC"){let[o,l,u]=Uf(t),c,h;if(i==="NDHWC")h="channelsLast",c=[o,l,u,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",c=[o,l,u,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return U5(e,c,n,r,a,!1,h,s)}function Pu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,u,c,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,u,c,h]=e;else if(o==="channelsFirst")[l,h,u,c]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=pd(n),[y,g]=pd(r),_=il(d,y),b=il(p,g),{padInfo:w,outHeight:x,outWidth:I}=KN(a,u,c,m,A,_,b,s,o),S=i?f*h:f,T;return o==="channelsFirst"?T=[l,S,x,I]:o==="channelsLast"&&(T=[l,x,I,S]),{batchSize:l,dataFormat:o,inHeight:u,inWidth:c,inChannels:h,outHeight:x,outWidth:I,outChannels:S,padInfo:w,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:_,effectiveFilterWidth:b,dilationHeight:y,dilationWidth:g,inShape:e,outShape:T,filterShape:t}}function U5(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,u,c,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,u,c,h,d]=e;else if(i==="channelsFirst")[l,d,u,c,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,_]=Uf(n),[b,w,x]=Uf(r),I=il(p,b),S=il(f,w),T=il(m,x),{padInfo:M,outDepth:D,outHeight:z,outWidth:W}=ZN(a,u,c,h,y,g,_,I,S,T,o),U=s?A*d:A,H;return i==="channelsFirst"?H=[l,U,D,z,W]:i==="channelsLast"&&(H=[l,D,z,W,U]),{batchSize:l,dataFormat:i,inDepth:u,inHeight:c,inWidth:h,inChannels:d,outDepth:D,outHeight:z,outWidth:W,outChannels:U,padInfo:M,strideDepth:y,strideHeight:g,strideWidth:_,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:I,effectiveFilterHeight:S,effectiveFilterWidth:T,dilationDepth:b,dilationHeight:w,dilationWidth:x,inShape:e,outShape:H,filterShape:t}}function YN(e,t,n,r,a){r==null&&(r=Hf(e,t,n));let s=e[0],i=e[1],o=oi((s-t+2*r)/n+1,a),l=oi((i-t+2*r)/n+1,a);return[o,l]}function JN(e,t,n,r,a,s){a==null&&(a=Hf(e,t,r));let i=e[0],o=e[1],l=e[2],u=oi((i-t+2*a)/r+1,s),c=oi((o-t+2*a)/r+1,s),h=oi((l-t+2*a)/r+1,s);return[u,c,h,n]}function Hf(e,t,n,r=1){let a=il(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function pd(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function Uf(e){return typeof e=="number"?[e,e,e]:e}function il(e,t){return t<=1?e:e+(e-1)*(t-1)}function KN(e,t,n,r,a,s,i,o,l){let u,c,h;if(typeof e=="number"){u={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=YN([t,n],s,r,e,o);c=d[0],h=d[1]}else if(e==="same"){c=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(c-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;u={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];u={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},c=oi((t-s+d+p)/r+1,o),h=oi((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:u,outHeight:c,outWidth:h}}function ZN(e,t,n,r,a,s,i,o,l,u,c){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=JN([t,n,r,1],o,1,a,e,c);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+u-r,g=Math.floor(m/2),_=m-g,b=Math.floor(A/2),w=A-b,x=Math.floor(y/2),I=y-x;h={top:b,bottom:w,left:x,right:I,front:g,back:_,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-u+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function oi(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function $a(e){let[t,n,r]=pd(e);return t===1&&n===1&&r===1}function Mr(e,t){return $a(e)||$a(t)}function B5(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function QN(e,t){let n={x:E(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Do,n,r)}var G=O({reshape_:QN});function eI(e,t,n,r,a){let s=E(e,"x","avgPool","float32"),i=1;F(Mr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&F(jt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(us,u,c);return h=me(h,s.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Lu=O({avgPool_:eI});function tI(e,t,n,r,a,s="NDHWC"){let i=E(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(uu,u,c);return h=me(h,o.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var jf=O({avgPool3d_:tI});function nI(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=$u(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor - with dtype ${s.dtype}. `)}),n.length===1)return Rr(n[0]);let r=n,a={axis:t};return $.runKernel(ao,r,a)}var st=O({concat_:nI});function rI(e){let t={x:E(e,"x","sigmoid")};return $.runKernel(js,t)}var Fn=O({sigmoid_:rI});function aI(e,t,n){let r=E(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Lo,a,s)}var Re=O({slice_:aI});function sI(e){let t={x:E(e,"x","tanh")};return $.runKernel(Ys,t)}var ol=O({tanh_:sI});function iI(e,t,n,r,a,s){let i=E(e,"forgetBias","basicLSTMCell"),o=E(t,"lstmKernel","basicLSTMCell"),l=E(n,"lstmBias","basicLSTMCell"),u=E(r,"data","basicLSTMCell"),c=E(a,"c","basicLSTMCell"),h=E(s,"h","basicLSTMCell"),d=st([u,h],1),p=Ge(d,o),f=se(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=Re(f,[0,0],y),_=Re(f,[0,A],y),b=Re(f,[0,A*2],y),w=Re(f,[0,A*3],y),x=se(P(Fn(g),ol(_)),P(c,Fn(se(i,b)))),I=P(ol(x),Fn(w));return[x,I]}var oI=O({basicLSTMCell_:iI});function lI(e,t,n){let r=E(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);F(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(cu,s,i)}var Wu=O({batchToSpaceND_:lI});function uI(e){let t;return e.rank===0||e.rank===1?t=G(e,[1,1,1,e.size]):e.rank===2?t=G(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function cI(e,t,n,r,a,s){s==null&&(s=.001);let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;r!=null&&(c=E(r,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:uI(i),scale:u,offset:c,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(bs,h,d);return G(p,i.shape)}var li=O({batchNorm_:cI});function hI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var H5=O({batchNorm2d_:hI});function dI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var j5=O({batchNorm3d_:dI});function pI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var G5=O({batchNorm4d_:pI});function fI(e,t,n){let r=E(e,"x","bincount"),a=E(t,"weights","bincount");F(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Sh,s,i)}var q5=O({bincount_:fI});function mI(e,t){let n=E(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,u)=>l>1?u:-1).filter(l=>l>=0).length===0)return Rr(n);let i={x:n},o={reps:s};return $.runKernel(Sa,i,o)}var Bu=O({broadcastTo_:mI});function AI(e){let t={x:E(e,"x","ceil")};return $.runKernel(ds,t)}var Gf=O({ceil_:AI});function yI(e,t,n){let r=E(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(Ia,a,s)}var vn=O({clipByValue_:yI});function gI(e){return st(e,0)}var X5=O({concat1d_:gI});function xI(e,t){return st(e,t)}var ll=O({concat2d_:xI});function wI(e,t){return st(e,t)}var K5=O({concat3d_:wI});function _I(e,t){return st(e,t)}var Z5=O({concat4d_:_I});function bI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","conv2d"),l=E(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?u.shape[3]:u.shape[1];F(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:u,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ps,d,p);return c?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ra=O({conv2d_:bI});function vI(e,t,n,r,a="NWC",s=1,i){let o=E(e,"x","conv1d"),l=E(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1]])),F(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F(Mr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=G(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=G(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=ra(d,h,[1,n],r,"NHWC",[1,s],i);return c?G(p,[p.shape[2],p.shape[3]]):G(p,[p.shape[0],p.shape[2],p.shape[3]])}var fd=O({conv1d_:vI});function kI(e,t,n,r,a,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,u=!1;t.rank===3&&(u=!0,l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let c=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[2]}.`),F(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(jt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(fs,d,p);return u?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var qf=O({conv2DBackpropInput_:kI});function NI(e,t,n,r,a,s){let i=E(e,"x","conv2dTranspose"),o=E(t,"filter","conv2dTranspose");return qf(n,i,o,r,a,"NHWC",s)}var md=O({conv2dTranspose_:NI});function II(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=E(e,"x","conv3d"),o=E(t,"filter","conv3d"),l=i,u=!1;i.rank===4&&(u=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F(Mr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let c={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(du,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Xf=O({conv3d_:II});function SI(e,t,n,r,a){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],u=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(u===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${n.shape[4]}.`);let c={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Rh,c,h);return o?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Y5=O({conv3DBackpropInput_:SI});function TI(e,t,n,r,a){let s=E(e,"x","conv3dTranspose"),i=E(t,"filter","conv3dTranspose");return Y5(n,s,i,r,a)}var CI=O({conv3dTranspose_:TI});function EI(e){let t={x:E(e,"x","cos")};return $.runKernel(ms,t)}var Vu=O({cos_:EI});function RI(e){let t={x:E(e,"x","cosh")};return $.runKernel(so,t)}var Ad=O({cosh_:RI});function FI(e,t=0,n=!1,r=!1){let a={x:E(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(As,a,s)}var yd=O({cumsum_:FI});function MI(e,t,n,r=!1){let a=E(e,"x","denseBincount"),s=E(t,"weights","denseBincount");F(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),F(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Fh,i,o)}var J5=O({denseBincount_:MI});function $I(e,t,n="NHWC"){let r=E(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];F(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying +Expected: ${s}.`)}}function pN(e,t){e().then(()=>t.fail(),()=>t())}function fN(e,t){let n=typeof t=="string"||typeof t=="number"||typeof t=="boolean"?[t]:t;return va(e)||va(e[0])||va(t)||va(t[0])?Rf(e,n,(r,a)=>r==a):Rf(e,t,(r,a)=>Ff(r,a,0))}function mN(e,t,n){if(n==null&&(n=Ef()),!Ff(e,t,n))throw new Error(`Numbers differ: actual === ${e}, expected === ${t}`)}function Ff(e,t,n){return!isFinite(e)&&!isFinite(t)?!0:!(isNaN(e)||isNaN(t)||Math.abs(e-t)>n)}function AN(e,t,n){for(let r=0;rn)throw new Error(`Value out of range:${e[r]} low: ${t}, high: ${n}`)}function yN(e,t){expect(new Float32Array(e)).toEqual(new Float32Array(t))}function W5(e){for(let t=0;tt.dispose())}function Gt(e){return $.keep(e)}function kN(e){return $.time(e)}function NN(e){return $.setBackend(e)}function IN(){return $.ready()}function SN(){return $.backendName}function TN(e){$.removeBackend(e)}function $f(e){return $.findBackend(e)}function CN(e){return $.findBackendFactory(e)}function sl(e,t,n=1){return $.registerBackend(e,t,n)}function B5(){return $.backend}function EN(e,t){J().setPlatform(e,t)}function RN(e,t){let n=E(e,"a","add"),r=E(t,"b","add");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Na,a)}var se=O({add_:RN});function FN(e,t){let n=E(e,"a","floorDiv"),r=E(t,"b","floorDiv");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(_s,a)}var hd=O({floorDiv_:FN});function MN(e,t){let n=E(e,"a","div"),r=E(t,"b","div");if([n,r]=bt(n,r),n.dtype==="int32"&&r.dtype==="int32")return hd(n,r);let a={a:n,b:r},s={};return $.runKernel(gs,a,s)}var ge=O({div_:MN});function $N(e,t){let n=E(e,"a","mul"),r=E(t,"b","mul");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Ms,a)}var P=O({mul_:$N});function DN(e){let t=E(e,"x","abs");if(t.dtype==="complex64"){let n={x:t};return $.runKernel(hu,n)}else{let n={x:t};return $.runKernel(Zi,n)}}var zt=O({abs_:DN});function ON(e){let t={x:E(e,"x","acos")};return $.runKernel(Yi,t)}var Df=O({acos_:ON});function zN(e){let t={x:E(e,"x","acosh")};return $.runKernel(Ji,t)}var Of=O({acosh_:zN});function PN(e){F(Array.isArray(e),()=>"The argument passed to tf.addN() must be a list of tensors"),F(e.length>=1,()=>`Must pass at least one tensor to tf.addN(), but got ${e.length}`);let t=e.map((a,s)=>E(a,`tensors${s}`,"addN")),n=t[0];t.forEach(a=>{if(a.dtype!==n.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),t.forEach(a=>{if(!ta(a.shape,n.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let r=t;return $.runKernel(os,r)}var Ma=O({addN_:PN});function LN(e,t=null,n=!1){let r={x:E(e,"x","all","bool")},a={axis:t,keepDims:n};return $.runKernel(vh,r,a)}var dd=O({all_:LN});function WN(e,t=null,n=!1){let r={x:E(e,"x","any","bool")},a={axis:t,keepDims:n};return $.runKernel(kh,r,a)}var Ou=O({any_:WN});function BN(e,t=0){let n={x:E(e,"x","argMax")},r={axis:t};return $.runKernel(ls,n,r)}var zu=O({argMax_:BN});function VN(e,t=0){let n={x:E(e,"x","argMin")},r={axis:t};return $.runKernel(lu,n,r)}var zf=O({argMin_:VN});function UN(e){let t={x:E(e,"x","asin")};return $.runKernel(Qi,t)}var Pf=O({asin_:UN});function HN(e){let t={x:E(e,"x","asinh")};return $.runKernel(eo,t)}var Lf=O({asinh_:HN});function jN(e){let t={x:E(e,"x","atan")};return $.runKernel(to,t)}var Wf=O({atan_:jN});function GN(e,t){let n=E(e,"a","atan2"),r=E(t,"b","atan2");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(ro,a)}var Bf=O({atan2_:GN});function qN(e){let t={x:E(e,"x","atanh")};return $.runKernel(no,t)}var Vf=O({atanh_:qN});function XN(e,t,n,r,a="NHWC",s){let i=e[3],o=[...t,i],l=V5(a);return Pu(e,o,n,s,r,null,null,l)}function U5(e,t,n,r,a,s,i="channelsLast"){let[o,l]=pd(t),u;if(i==="channelsLast")u=[o,l,e[3],e[3]];else if(i==="channelsFirst")u=[o,l,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return Pu(e,u,n,r,a,s,!1,i)}function KN(e,t,n,r,a,s,i="NDHWC"){let[o,l,u]=Uf(t),c,h;if(i==="NDHWC")h="channelsLast",c=[o,l,u,e[4],e[4]];else if(i==="NCDHW")h="channelsFirst",c=[o,l,u,e[1],e[1]];else throw new Error(`Unknown dataFormat ${i}`);return H5(e,c,n,r,a,!1,h,s)}function Pu(e,t,n,r,a,s,i=!1,o="channelsLast"){let[l,u,c,h]=[-1,-1,-1,-1];if(o==="channelsLast")[l,u,c,h]=e;else if(o==="channelsFirst")[l,h,u,c]=e;else throw new Error(`Unknown dataFormat ${o}`);let[d,p,,f]=t,[m,A]=pd(n),[y,g]=pd(r),_=il(d,y),b=il(p,g),{padInfo:w,outHeight:x,outWidth:I}=ZN(a,u,c,m,A,_,b,s,o),S=i?f*h:f,T;return o==="channelsFirst"?T=[l,S,x,I]:o==="channelsLast"&&(T=[l,x,I,S]),{batchSize:l,dataFormat:o,inHeight:u,inWidth:c,inChannels:h,outHeight:x,outWidth:I,outChannels:S,padInfo:w,strideHeight:m,strideWidth:A,filterHeight:d,filterWidth:p,effectiveFilterHeight:_,effectiveFilterWidth:b,dilationHeight:y,dilationWidth:g,inShape:e,outShape:T,filterShape:t}}function H5(e,t,n,r,a,s=!1,i="channelsLast",o){let[l,u,c,h,d]=[-1,-1,-1,-1,-1];if(i==="channelsLast")[l,u,c,h,d]=e;else if(i==="channelsFirst")[l,d,u,c,h]=e;else throw new Error(`Unknown dataFormat ${i}`);let[p,f,m,,A]=t,[y,g,_]=Uf(n),[b,w,x]=Uf(r),I=il(p,b),S=il(f,w),T=il(m,x),{padInfo:M,outDepth:D,outHeight:z,outWidth:W}=YN(a,u,c,h,y,g,_,I,S,T,o),U=s?A*d:A,H;return i==="channelsFirst"?H=[l,U,D,z,W]:i==="channelsLast"&&(H=[l,D,z,W,U]),{batchSize:l,dataFormat:i,inDepth:u,inHeight:c,inWidth:h,inChannels:d,outDepth:D,outHeight:z,outWidth:W,outChannels:U,padInfo:M,strideDepth:y,strideHeight:g,strideWidth:_,filterDepth:p,filterHeight:f,filterWidth:m,effectiveFilterDepth:I,effectiveFilterHeight:S,effectiveFilterWidth:T,dilationDepth:b,dilationHeight:w,dilationWidth:x,inShape:e,outShape:H,filterShape:t}}function JN(e,t,n,r,a){r==null&&(r=Hf(e,t,n));let s=e[0],i=e[1],o=oi((s-t+2*r)/n+1,a),l=oi((i-t+2*r)/n+1,a);return[o,l]}function QN(e,t,n,r,a,s){a==null&&(a=Hf(e,t,r));let i=e[0],o=e[1],l=e[2],u=oi((i-t+2*a)/r+1,s),c=oi((o-t+2*a)/r+1,s),h=oi((l-t+2*a)/r+1,s);return[u,c,h,n]}function Hf(e,t,n,r=1){let a=il(t,r);return Math.floor((e[0]*(n-1)-n+a)/2)}function pd(e){return typeof e=="number"?[e,e,e]:e.length===2?[e[0],e[1],1]:e}function Uf(e){return typeof e=="number"?[e,e,e]:e}function il(e,t){return t<=1?e:e+(e-1)*(t-1)}function ZN(e,t,n,r,a,s,i,o,l){let u,c,h;if(typeof e=="number"){u={top:e,bottom:e,left:e,right:e,type:e===0?"VALID":"NUMBER"};let d=JN([t,n],s,r,e,o);c=d[0],h=d[1]}else if(e==="same"){c=Math.ceil(t/r),h=Math.ceil(n/a);let d=Math.max(0,(c-1)*r+s-t),p=Math.max(0,(h-1)*a+i-n),f=Math.floor(d/2),m=d-f,A=Math.floor(p/2),y=p-A;u={top:f,bottom:m,left:A,right:y,type:"SAME"}}else if(e==="valid")u={top:0,bottom:0,left:0,right:0,type:"VALID"},c=Math.ceil((t-s+1)/r),h=Math.ceil((n-i+1)/a);else if(typeof e=="object"){let d=l==="channelsLast"?e[1][0]:e[2][0],p=l==="channelsLast"?e[1][1]:e[2][1],f=l==="channelsLast"?e[2][0]:e[3][0],m=l==="channelsLast"?e[2][1]:e[3][1];u={top:d,bottom:p,left:f,right:m,type:d===0&&p===0&&f===0&&m===0?"VALID":"EXPLICIT"},c=oi((t-s+d+p)/r+1,o),h=oi((n-i+f+m)/a+1,o)}else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:u,outHeight:c,outWidth:h}}function YN(e,t,n,r,a,s,i,o,l,u,c){let h,d,p,f;if(typeof e=="number"){h={top:e,bottom:e,left:e,right:e,front:e,back:e,type:e===0?"VALID":"NUMBER"};let m=QN([t,n,r,1],o,1,a,e,c);d=m[0],p=m[1],f=m[2]}else if(e==="same"){d=Math.ceil(t/a),p=Math.ceil(n/s),f=Math.ceil(r/i);let m=(d-1)*a+o-t,A=(p-1)*s+l-n,y=(f-1)*i+u-r,g=Math.floor(m/2),_=m-g,b=Math.floor(A/2),w=A-b,x=Math.floor(y/2),I=y-x;h={top:b,bottom:w,left:x,right:I,front:g,back:_,type:"SAME"}}else if(e==="valid")h={top:0,bottom:0,left:0,right:0,front:0,back:0,type:"VALID"},d=Math.ceil((t-o+1)/a),p=Math.ceil((n-l+1)/s),f=Math.ceil((r-u+1)/i);else throw Error(`Unknown padding parameter: ${e}`);return{padInfo:h,outDepth:d,outHeight:p,outWidth:f}}function oi(e,t){if(!t)return Math.trunc(e);switch(t){case"round":return Math.round(e);case"ceil":return Math.ceil(e);case"floor":return Math.floor(e);default:throw new Error(`Unknown roundingMode ${t}`)}}function $a(e){let[t,n,r]=pd(e);return t===1&&n===1&&r===1}function Mr(e,t){return $a(e)||$a(t)}function V5(e){if(e==="NHWC")return"channelsLast";if(e==="NCHW")return"channelsFirst";throw new Error(`Unknown dataFormat ${e}`)}function eI(e,t){let n={x:E(e,"x","reshape","string_or_numeric")},r={shape:t};return $.runKernel(Do,n,r)}var G=O({reshape_:eI});function tI(e,t,n,r,a){let s=E(e,"x","avgPool","float32"),i=1;F(Mr(n,i),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`);let o=s,l=!1;s.rank===3&&(l=!0,o=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(o.rank===4,()=>`Error in avgPool: x must be rank 4 but got rank ${o.rank}.`),a!=null&&F(jt(r),()=>`Error in avgPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(us,u,c);return h=me(h,s.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Lu=O({avgPool_:tI});function nI(e,t,n,r,a,s="NDHWC"){let i=E(e,"x","avgPool3d","float32"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in avgPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in avgPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in avgPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(uu,u,c);return h=me(h,o.dtype),l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var jf=O({avgPool3d_:nI});function rI(e,t=0){F(e.length>=1,()=>"Pass at least one tensor to concat");let n=$u(e,"tensors","concat","string_or_numeric");if(n[0].dtype==="complex64"&&n.forEach(s=>{if(s.dtype!=="complex64")throw new Error(`Cannot concatenate complex64 tensors with a tensor + with dtype ${s.dtype}. `)}),n.length===1)return Rr(n[0]);let r=n,a={axis:t};return $.runKernel(ao,r,a)}var st=O({concat_:rI});function aI(e){let t={x:E(e,"x","sigmoid")};return $.runKernel(js,t)}var Fn=O({sigmoid_:aI});function sI(e,t,n){let r=E(e,"x","slice","string_or_numeric");if(r.rank===0)throw new Error("Slicing scalar is not possible");let a={x:r},s={begin:t,size:n};return $.runKernel(Lo,a,s)}var Re=O({slice_:sI});function iI(e){let t={x:E(e,"x","tanh")};return $.runKernel(Ys,t)}var ol=O({tanh_:iI});function oI(e,t,n,r,a,s){let i=E(e,"forgetBias","basicLSTMCell"),o=E(t,"lstmKernel","basicLSTMCell"),l=E(n,"lstmBias","basicLSTMCell"),u=E(r,"data","basicLSTMCell"),c=E(a,"c","basicLSTMCell"),h=E(s,"h","basicLSTMCell"),d=st([u,h],1),p=Ge(d,o),f=se(p,l),m=f.shape[0],A=f.shape[1]/4,y=[m,A],g=Re(f,[0,0],y),_=Re(f,[0,A],y),b=Re(f,[0,A*2],y),w=Re(f,[0,A*3],y),x=se(P(Fn(g),ol(_)),P(c,Fn(se(i,b)))),I=P(ol(x),Fn(w));return[x,I]}var lI=O({basicLSTMCell_:oI});function uI(e,t,n){let r=E(e,"x","batchToSpaceND"),a=t.reduce((o,l)=>o*l);F(r.rank>=1+t.length,()=>`input rank is ${r.rank} but should be > than blockShape.length ${t.length}`),F(n.length===t.length,()=>`crops.length is ${n.length} but should be equal to blockShape.length ${t.length}`),F(r.shape[0]%a==0,()=>`input tensor batch is ${r.shape[0]} but is not divisible by the product of the elements of blockShape ${t.join(" * ")} === ${a}`);let s={x:r},i={blockShape:t,crops:n};return $.runKernel(cu,s,i)}var Wu=O({batchToSpaceND_:uI});function cI(e){let t;return e.rank===0||e.rank===1?t=G(e,[1,1,1,e.size]):e.rank===2?t=G(e,[1,1,e.shape[0],e.shape[1]]):e.rank===3?t=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]):t=e,t}function hI(e,t,n,r,a,s){s==null&&(s=.001);let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;r!=null&&(c=E(r,"offset","batchNorm")),F(o.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),F(c==null||o.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),F(u==null||o.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let h={x:cI(i),scale:u,offset:c,mean:o,variance:l},d={varianceEpsilon:s},p=$.runKernel(bs,h,d);return G(p,i.shape)}var li=O({batchNorm_:hI});function dI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===2,()=>`Error in batchNorm2D: x must be rank 2 but got rank ${i.rank}.`),F(o.rank===2||o.rank===1,()=>`Error in batchNorm2D: mean must be rank 2 or rank 1 but got rank ${o.rank}.`),F(l.rank===2||l.rank===1,()=>`Error in batchNorm2D: variance must be rank 2 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===2||u.rank===1,()=>`Error in batchNorm2D: scale must be rank 2 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===2||c.rank===1,()=>`Error in batchNorm2D: offset must be rank 2 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var j5=O({batchNorm2d_:dI});function pI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===3,()=>`Error in batchNorm3D: x must be rank 3 but got rank ${i.rank}.`),F(o.rank===3||o.rank===1,()=>`Error in batchNorm3D: mean must be rank 3 or rank 1 but got rank ${o.rank}.`),F(l.rank===3||l.rank===1,()=>`Error in batchNorm3D: variance must be rank 3 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===3||u.rank===1,()=>`Error in batchNorm3D: scale must be rank 3 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===3||c.rank===1,()=>`Error in batchNorm3D: offset must be rank 3 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var G5=O({batchNorm3d_:pI});function fI(e,t,n,r,a,s){let i=E(e,"x","batchNorm"),o=E(t,"mean","batchNorm"),l=E(n,"variance","batchNorm"),u;a!=null&&(u=E(a,"scale","batchNorm"));let c;return r!=null&&(c=E(r,"offset","batchNorm")),F(i.rank===4,()=>`Error in batchNorm4D: x must be rank 4 but got rank ${i.rank}.`),F(o.rank===4||o.rank===1,()=>`Error in batchNorm4D: mean must be rank 4 or rank 1 but got rank ${o.rank}.`),F(l.rank===4||l.rank===1,()=>`Error in batchNorm4D: variance must be rank 4 or rank 1 but got rank ${l.rank}.`),u!=null&&F(u.rank===4||u.rank===1,()=>`Error in batchNorm4D: scale must be rank 4 or rank 1 but got rank ${u.rank}.`),c!=null&&F(c.rank===4||c.rank===1,()=>`Error in batchNorm4D: offset must be rank 4 or rank 1 but got rank ${c.rank}.`),li(i,o,l,c,u,s)}var q5=O({batchNorm4d_:fI});function mI(e,t,n){let r=E(e,"x","bincount"),a=E(t,"weights","bincount");F(r.dtype==="int32",()=>`Error in bincount: input dtype must be int32, but got ${r.dtype}`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(a.size===r.size||a.size===0,()=>`Error in bincount: weights must have the same size as input or0-length, but got input shape: ${r.shape}, weights shape: ${a.shape}.`);let s={x:r,weights:a},i={size:n};return $.runKernel(Sh,s,i)}var X5=O({bincount_:mI});function AI(e,t){let n=E(e,"broadcastTo","x"),r=n.shape;if(t.some(l=>!(l>0)||l%1!=0))throw new Error(`broadcastTo(): Invalid broadcast shape [${t}].`);if(t.lengthn.rank){let l=n.shape.slice();for(;l.length=0;l--)if(a[l]===t[l])s[l]=1;else if(n.shape[l]!==1)throw new Error(`broadcastTo(): [${r}] cannot be broadcast to [${t}].`);if(s.map((l,u)=>l>1?u:-1).filter(l=>l>=0).length===0)return Rr(n);let i={x:n},o={reps:s};return $.runKernel(Sa,i,o)}var Bu=O({broadcastTo_:AI});function yI(e){let t={x:E(e,"x","ceil")};return $.runKernel(ds,t)}var Gf=O({ceil_:yI});function gI(e,t,n){let r=E(e,"x","clipByValue");F(t<=n,()=>`Error in clip: min (${t}) must be less than or equal to max (${n}).`);let a={x:r},s={clipValueMin:t,clipValueMax:n};return $.runKernel(Ia,a,s)}var vn=O({clipByValue_:gI});function xI(e){return st(e,0)}var K5=O({concat1d_:xI});function wI(e,t){return st(e,t)}var ll=O({concat2d_:wI});function _I(e,t){return st(e,t)}var Z5=O({concat3d_:_I});function bI(e,t){return st(e,t)}var Y5=O({concat4d_:bI});function vI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","conv2d"),l=E(t,"filter","conv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in conv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in conv2d: filter must be rank 4, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h=a==="NHWC"?u.shape[3]:u.shape[1];F(h===l.shape[2],()=>`Error in conv2d: depth of input (${h}) must match input depth for filter ${l.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`);let d={x:u,filter:l},p={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},f=$.runKernel(ps,d,p);return c?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var ra=O({conv2d_:vI});function kI(e,t,n,r,a="NWC",s=1,i){let o=E(e,"x","conv1d"),l=E(t,"filter","conv1d"),u=o,c=!1;o.rank===2&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1]])),F(u.rank===3,()=>`Error in conv1d: input must be rank 3, but got rank ${u.rank}.`),F(l.rank===3,()=>`Error in conv1d: filter must be rank 3, but got rank ${l.rank}.`),i!=null&&F(jt(r),()=>`Error in conv1d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(u.shape[2]===l.shape[1],()=>`Error in conv1d: depth of input (${u.shape[2]}) must match input depth for filter ${l.shape[1]}.`),F(Mr(n,s),()=>`Error in conv1D: Either stride or dilation must be 1. Got stride ${n} and dilation '${s}'`),F(a==="NWC",()=>`Error in conv1d: got dataFormat of ${a} but only NWC is currently supported.`);let h=G(l,[1,l.shape[0],l.shape[1],l.shape[2]]),d=G(u,[u.shape[0],1,u.shape[1],u.shape[2]]),p=ra(d,h,[1,n],r,"NHWC",[1,s],i);return c?G(p,[p.shape[2],p.shape[3]]):G(p,[p.shape[0],p.shape[2],p.shape[3]])}var fd=O({conv1d_:kI});function NI(e,t,n,r,a,s="NHWC",i){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let o=e,l=t,u=!1;t.rank===3&&(u=!0,l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]),o=[1,e[0],e[1],e[2]]),F(o.length===4,()=>`Error in conv2dDerInput: inShape must be length 4, but got length ${o.length}.`),F(l.rank===4,()=>`Error in conv2dDerInput: dy must be rank 4, but got rank ${l.rank}`),F(n.rank===4,()=>`Error in conv2dDerInput: filter must be rank 4, but got rank ${n.rank}`);let c=s==="NHWC"?o[3]:o[1],h=s==="NHWC"?l.shape[3]:l.shape[1];F(c===n.shape[2],()=>`Error in conv2dDerInput: depth of input (${c}) must match input depth for filter ${n.shape[2]}.`),F(h===n.shape[3],()=>`Error in conv2dDerInput: depth of output (${h}) must match output depth for filter ${n.shape[3]}.`),i!=null&&F(jt(a),()=>`Error in conv2dDerInput: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let d={dy:l,filter:n},p={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,inputShape:o},f=$.runKernel(fs,d,p);return u?G(f,[f.shape[1],f.shape[2],f.shape[3]]):f}var qf=O({conv2DBackpropInput_:NI});function II(e,t,n,r,a,s){let i=E(e,"x","conv2dTranspose"),o=E(t,"filter","conv2dTranspose");return qf(n,i,o,r,a,"NHWC",s)}var md=O({conv2dTranspose_:II});function SI(e,t,n,r,a="NDHWC",s=[1,1,1]){let i=E(e,"x","conv3d"),o=E(t,"filter","conv3d"),l=i,u=!1;i.rank===4&&(u=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(l.rank===5,()=>`Error in conv3d: input must be rank 5, but got rank ${l.rank}.`),F(o.rank===5,()=>`Error in conv3d: filter must be rank 5, but got rank ${o.rank}.`),F(l.shape[4]===o.shape[3],()=>`Error in conv3d: depth of input (${l.shape[4]}) must match input depth for filter ${o.shape[3]}.`),F(Mr(n,s),()=>`Error in conv3D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NDHWC",()=>`Error in conv3d: got dataFormat of ${a} but only NDHWC is currently supported.`);let c={x:l,filter:o},h={strides:n,pad:r,dataFormat:a,dilations:s},d=$.runKernel(du,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var Xf=O({conv3d_:SI});function TI(e,t,n,r,a){F(e.length===t.rank,()=>`Length of inShape (${e.length}) and rank of dy (${t.rank}) must match`);let s=e,i=t,o=!1;t.rank===4&&(o=!0,i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]]),s=[1,e[0],e[1],e[2],e[3]]);let l=s[4],u=i.shape[4];F(s.length===5,()=>`Error in conv3dDerInput: inShape must be length 5, but got length ${s.length}.`),F(i.rank===5,()=>`Error in conv3dDerInput: dy must be rank 5, but got rank ${i.rank}`),F(n.rank===5,()=>`Error in conv3dDerInput: filter must be rank 5, but got rank ${n.rank}`),F(l===n.shape[3],()=>`Error in conv3dDerInput: depth of input (${l}) must match input depth for filter ${n.shape[3]}.`),F(u===n.shape[4],()=>`Error in conv3dDerInput: depth of output (${u}) must match output depth for filter ${n.shape[4]}.`);let c={dy:i,filter:n},h={pad:a,strides:r,inputShape:s},d=$.runKernel(Rh,c,h);return o?G(d,[d.shape[1],d.shape[2],d.shape[3],d.shape[4]]):d}var J5=O({conv3DBackpropInput_:TI});function CI(e,t,n,r,a){let s=E(e,"x","conv3dTranspose"),i=E(t,"filter","conv3dTranspose");return J5(n,s,i,r,a)}var EI=O({conv3dTranspose_:CI});function RI(e){let t={x:E(e,"x","cos")};return $.runKernel(ms,t)}var Vu=O({cos_:RI});function FI(e){let t={x:E(e,"x","cosh")};return $.runKernel(so,t)}var Ad=O({cosh_:FI});function MI(e,t=0,n=!1,r=!1){let a={x:E(e,"x","cumsum")},s={axis:t,exclusive:n,reverse:r};return $.runKernel(As,a,s)}var yd=O({cumsum_:MI});function $I(e,t,n,r=!1){let a=E(e,"x","denseBincount"),s=E(t,"weights","denseBincount");F(a.dtype==="int32",()=>`Error in denseBincount: input dtype must be int32, but got ${a.dtype}`),F(a.rank<=2,()=>`Error in denseBincount: input must be at most rank 2, but got rank ${a.rank}.`),F(n>=0,()=>`size must be non-negative, but got ${n}.`),F(s.size===a.size||s.size===0,()=>`Error in denseBincount: weights must have the same shape as x or 0-length, but got x shape: ${a.shape}, weights shape: ${s.shape}.`);let i={x:a,weights:s},o={size:n,binaryOutput:r};return $.runKernel(Fh,i,o)}var Q5=O({denseBincount_:$I});function DI(e,t,n="NHWC"){let r=E(e,"x","depthToSpace"),a=n==="NHWC"?r.shape[1]:r.shape[2],s=n==="NHWC"?r.shape[2]:r.shape[3],i=n==="NHWC"?r.shape[3]:r.shape[1];F(a*t>=0,()=>`Negative dimension size caused by overflow when multiplying ${a} and ${t} for depthToSpace with input shape ${r.shape}`),F(s*t>=0,()=>`Negative dimension size caused by overflow when multiplying ${s} and ${t} for depthToSpace with input shape - ${r.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(oo,o,l)}var Kf=O({depthToSpace_:$I});function DI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","depthwiseConv2d"),l=E(t,"filter","depthwiseConv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(jt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:u,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(ys,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var ul=O({depthwiseConv2d_:DI});function OI(e){let t={x:E(e,"x","diag")};return $.runKernel(Dh,t)}var zI=O({diag_:OI});function PI(e,t,n,r,a=[1,1],s="NHWC"){let i=E(e,"x","dilation2d"),o=E(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,u=!1;i.rank===3&&(l=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),u=!0);let c={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(pu,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Zf=O({dilation2d_:PI});function LI(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Pt(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function yt(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&an(s.shape,l.shape,"Error in where: ");let u={condition:s,t:o,e:l};return $.runKernel(zo,u)}var kn=O({where_:BI});function VI(e){let t={x:E(e,"x","zerosLike")};return $.runKernel(Xo,t)}var He=O({zerosLike_:VI});function UI(e,t){let n=E(e,"a","div"),r=E(t,"b","div");[n,r]=bt(n,r);let a=ge(n,r),s=He(a),i=Da(r,s);return kn(i,s,a)}var Yf=O({divNoNan_:UI});function HI(e,t){let n=E(e,"t1","dot"),r=E(t,"t2","dot");F((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(F(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=G(n,[1,-1]),o=G(r,[-1,1]),l=Ge(i,o);return G(l,[])}else if(n.rank===1&&r.rank===2){let i=G(n,[1,-1]),o=G(r,[r.shape[0],r.shape[1]]),l=Ge(i,o);return G(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=G(r,[-1,1]),o=Ge(n,i);return G(o,[o.size])}else{let i=G(r,[r.shape[0],r.shape[1]]);return Ge(n,i)}}var Q5=O({dot_:HI});function jI(e){let t={x:E(e,"x","elu")};return $.runKernel(lo,t)}var cl=O({elu_:jI});function GI(e){let t=E(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=me(t,"float32"));let n={x:t};return $.runKernel(uo,n)}var Jf=O({erf_:GI});function qI(e){let t={x:E(e,"x","exp")};return $.runKernel(xs,t)}var qn=O({exp_:qI});function XI(e,t=0){let n=E(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(ho,r,a)}var hn=O({expandDims_:XI});function KI(e){let t={x:E(e,"x","expm1")};return $.runKernel(po,t)}var Qf=O({expm1_:KI});function ZI(e,t){let n=E(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Sa,r,a)}var Oa=O({tile_:ZI});function YI(e,t,n,r="float32"){t==null&&(t=e);let a=We([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got - rank ${s.rank}.`),F(jt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=G(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:t,bias:n,alpha:r,beta:a},c=$.runKernel(yu,l,u);return o?G(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var tm=O({localResponseNormalization_:uS});function cS(e){let t={x:E(e,"x","log")};return $.runKernel(Is,t)}var Mn=O({log_:cS});function hS(e){let t={x:E(e,"x","log1p")};return $.runKernel(vo,t)}var wd=O({log1p_:hS});function dS(e){return F(ka(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=E(t,"x","tf.grad","string_or_numeric"),a=n!=null?E(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),_d(i),i[0]})}}function pS(e){return F(ka(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=$u(t,"args","tf.grads","string_or_numeric"),a=n!=null?E(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(i),i})}}function fS(e){return F(ka(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof Ue,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return _d(r),{grad:r[0],value:a}}}function mS(e){return F(ka(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(a=>a instanceof Ue),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&an(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(r.grads),r}}function ax(e,t){F(ka(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(u=>u instanceof Ru),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let u in $.registeredVariables)t.push($.registeredVariables[u])}let r=n?t.filter(u=>!u.trainable):null,a=t.length;t=t.filter(u=>u.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);F(o.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((u,c)=>{o[c]!=null&&(l[u.name]=o[c])}),r!=null&&r.forEach(u=>l[u.name]=null),{value:i,grads:l}}function $r(e){return $.customGrad(e)}function _d(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that - the f you passed encloses all operations that lead from x to y.`)}function AS(e){let t={x:E(e,"x","neg")};return $.runKernel(Io,t)}var vt=O({neg_:AS});function yS(e){let t={x:E(e,"x","softplus")};return $.runKernel(Vo,t)}var dl=O({softplus_:yS});function gS(e){let t=E(e,"x","logSigmoid");return $r(n=>({value:vt(dl(vt(n))),gradFunc:r=>P(r,Fn(vt(n)))}))(t)}var sx=O({logSigmoid_:gS});function xS(e,t=null,n=!1){let r={x:E(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel(Ss,r,a)}var Xn=O({max_:xS});function wS(e,t){let n=E(e,"a","sub"),r=E(t,"b","sub");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Zs,a)}var ye=O({sub_:wS});function _S(e,t=null,n=!1){let r=E(e,"x","sum");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(qs,a,s)}var Te=O({sum_:_S});function bS(e,t=-1){let n=E(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return $r((r,a)=>{let s=!0,i=Xn(r,t,!0),o=ye(r,i),l=ye(me(o,"float32"),Mn(Te(qn(o),t,s)));return a([l]),{value:l,gradFunc:(u,c)=>{let[h]=c,d=!0,p=qn(h);return ye(u,P(Te(u,t,d),p))}}})(n)}var bd=O({logSoftmax_:bS});function nm(e,t){for(let n=0;ne[s]);return[n,a]}function hi(e,t){let n=t.map(r=>1);return ix(e,n,t)}function vS(e,t,n){F(nm(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function lx(e,t){if(nm(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function rm(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function kS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F(Mr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&F(jt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Cs,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Gu=O({maxPool_:ES});function RS(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=E(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(gu,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var sm=O({maxPool3d_:RS});function FS(e,t,n,r,a=!1){let s={x:E(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(Gh,s,i);return{result:o[0],indexes:o[1]}}var cx=O({maxPoolWithArgmax_:FS});function MS(e,t){let n=E(e,"a","maximum"),r=E(t,"b","maximum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ts,a)}var Dr=O({maximum_:MS});function $S(e,t=null,n=!1){let r={x:E(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(Es,r,a)}var kt=O({mean_:$S});function DS(e,t=null,n=!1){let r={x:E(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Rs,r,a)}var pl=O({min_:DS});function OS(e,t){let n=E(e,"a","minimum"),r=E(t,"b","minimum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Fs,a)}var fl=O({minimum_:OS});function zS(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=E(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(xu,i,s)}var im=O({mirrorPad_:zS});function PS(e,t){let n=E(e,"a","mod"),r=E(t,"b","mod");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(No,a)}var om=O({mod_:PS});function LS(e){let t=E(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var lt=O({square_:LS});function WS(e,t=null,n=!1){e=E(e,"x","moments");let r=nr(t,e.shape),a=kt(e,r,n),s=a.shape;n||(s=hi(a.shape,r));let i=lt(ye(me(e,"float32"),G(a,s))),o=kt(i,r,n);return{mean:a,variance:o}}var kd=O({moments_:WS});function BS(e,t,n,r){let a=E(t,"data","multiRNNCell"),s=$u(n,"c","multiRNNCell"),i=$u(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?G(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},u=$.runKernel(qh,o,l);return i===1?G(u,[u.size]):u}var hx=O({multinomial_:US});function HS(e,t){let n=E(e,"a","notEqual"),r=E(t,"b","notEqual");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(So,a)}var di=O({notEqual_:HS});function Et(e,t="float32"){if(t==="complex64"){let r=Et(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=bh(Dt(e),t);return $.makeTensor(n,e,t)}function Or(e,t="float32"){if(t==="complex64"){let r=Or(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=Q1(Dt(e),t);return $.makeTensor(n,e,t)}function jS(e){let t={x:E(e,"x","onesLike")};return $.runKernel(Ro,t)}var $n=O({onesLike_:jS});function GS(e,t){let n=E(e,"v1","outerProduct"),r=E(t,"v2","outerProduct");F(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=G(n,[-1,1]),s=G(r,[1,-1]);return Ge(a,s)}var qS=O({outerProduct_:GS});function XS(e,t,n=0){let r=E(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel(Ds,s,a)}var aa=O({pad_:XS});function KS(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),aa(e,[t],n)}var ZS=O({pad1d_:KS});function YS(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var JS=O({pad2d_:YS});function QS(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var eT=O({pad3d_:QS});function tT(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var nT=O({pad4d_:tT});function rT(e,t,n){let r=E(e,"x","spaceToBatchND");F(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(bu,a,s)}var qu=O({spaceToBatchND_:rT});function iT(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=E(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F(Mr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let u=V5(o.shape,t,s,a,r),c=[u.dilationHeight,u.dilationWidth],h;r==="same"?h=sT([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];let d=c[0]===1&&c[1]===1,[p,f]=aT([u.inHeight,u.inWidth],c,h),m=d?r:"valid",A=d?o:qu(o,c,p),y=(n==="avg"?()=>Lu(A,t,s,m):()=>Gu(A,t,s,m))(),g=d?y:Wu(y,c,f);return l?G(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function aT(e,t,n){let r=n.map(c=>c[0]),a=n.map(c=>c[1]),s=e.concat(r,a),i=t.map((c,h)=>(c-s[h]%c)%c),o=a.map((c,h)=>c+i[h]),l=t.map((c,h)=>[r[h],o[h]]),u=t.map((c,h)=>[0,i[h]]);return[l,u]}function sT(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var dx=O({pool_:iT});function oT(e,t){let n=E(e,"base","pow"),r=E(t,"exp","pow");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Os,a)}var sa=O({pow_:oT});function lT(e,t){let n=E(e,"x","prelu"),r=E(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(zs,a)}var Xu=O({prelu_:lT});function uT(e,t=null,n=!1){let r=E(e,"x","prod");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Mo,a,s)}var Nd=O({prod_:uT});function cT(e,t,n){let r=Dt(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},dT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=lm.alea(a.toString()),this.randn=new um(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=lm.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function fT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new dT(t,n,r,a),i=We(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Dn(t,0)}var kT=O({reverse1d_:vT});function NT(e,t){let n=E(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Dn(n,t)}var IT=O({reverse2d_:NT});function ST(e,t){let n=E(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Dn(n,t)}var TT=O({reverse3d_:ST});function CT(e,t){let n=E(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Dn(n,t)}var ET=O({reverse4d_:CT});function RT(e){let t={x:E(e,"x","round")};return $.runKernel(Vs,t)}var hm=O({round_:RT});function FT(e){let t={x:E(e,"x","rsqrt")};return $.runKernel(Us,t)}var Td=O({rsqrt_:FT});function be(e,t){if((sn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&sn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Ea(e,[],[],t)}function MT(e){let t={x:E(e,"x","selu")};return $.runKernel(Po,t)}var Cd=O({selu_:MT});function $T(e,t,n,r,a,s=[1,1],i="NHWC"){let o=E(e,"x","separableConv2d"),l=E(t,"depthwiseFilter","separableConv2d"),u=E(n,"pointwiseFilter","separableConv2d"),c=o,h=!1;if(o.rank===3&&(h=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),F(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let d=l.shape[2],p=l.shape[3];F(u.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${u.shape[2]}.`);let f=ul(c,l,r,a,i,s),m=ra(f,u,1,"valid",i);return h?G(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var dm=O({separableConv2d_:$T});async function DT(e,t){let n=E(e,"x","setdiff1d"),r=E(t,"y","setdiff1d");F(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),Re(r,[t],[n])}var Fd=O({slice1d_:LT});function WT(e,t,n){let r=E(e,"x","slice2d");return F(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var fm=O({slice2d_:WT});function BT(e,t,n){let r=E(e,"x","slice3d");return F(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Md=O({slice3d_:BT});function VT(e,t,n){let r=E(e,"x","slice4d");return F(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Zu=O({slice4d_:VT});function UT(e,t=-1){let n=E(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(Xs,r,a)}var Yu=O({softmax_:UT});function HT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Lh,t)}var Ju=O({fft_:HT});function jT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Wh,t)}var Al=O({ifft_:jT});function GT(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=G(e,[n,t]);r=Al(a)}else{let a=[n,2*(t-1)],s=G(Ku(e),[n,t]),i=G(gd(e),[n,t]),o=Dn(Re(s,[0,1],[n,t-2]),1),l=P(Dn(Re(i,[0,1],[n,t-2]),1),be(-1)),u=st([s,o],1),c=st([i,l],1),h=G(Ca(u,c),[a[0],a[1]]);r=Al(h)}if(r=Ku(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=G(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var $d=O({irfft_:GT});function qT(e,t,n=0){let r={x:E(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Uo,r,a)}var Lt=O({split_:qT});function XT(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=Re(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=st([e,Et(f)],e.shape.length-1),n=t}else a=e;let s=He(a),i=G(Ca(a,s),[r,n]),o=Ju(i),l=Math.floor(n/2)+1,u=Ku(o),c=gd(o),h=Lt(u,[l,n-l],u.shape.length-1),d=Lt(c,[l,n-l],c.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,G(Ca(h[0],d[0]),p)}var Qu=O({rfft_:XT});function KT(e){let t={x:E(e,"x","sqrt")};return $.runKernel(Gs,t)}var en=O({sqrt_:KT});function ZT(e,t){let n=E(e,"a","squaredDifference"),r=E(t,"b","squaredDifference");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(Ks,a,s)}var Dd=O({squaredDifference_:ZT});function YT(e,t){let n=E(e,"x","squeeze");return G(n,Dg(n.shape,t).newShape)}var Pa=O({squeeze_:YT});function JT(e,t=0){let n=$u(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Fo,r,a)}var dn=O({stack_:JT});function QT(e,t=0){let n={x:E(e,"x","step")},r={alpha:t};return $.runKernel(Ta,n,r)}var yl=O({step_:QT});function eC(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let u={x:E(e,"x","stridedSlice")},c={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(Ho,u,c)}var mm=O({stridedSlice_:eC});function tC(e){let t={x:E(e,"x","tan")};return $.runKernel(jo,t)}var Am=O({tan_:tC});function on(e,t){ss(e);let n=Er(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Ea(e,null,n,t)}function Nn(e,t,n){if(ss(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Er(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Ea(e,t,r,n)}function nC(e,t,n){if(ss(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Er(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function rC(e,t,n){if(ss(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Er(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function aC(e,t,n){if(ss(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Er(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Ea(e,t,r,n)}function sC(e,t=1,n=!0){let r=E(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(Go,s,i);return{values:o,indices:l}}var ym=O({topk_:sC});function iC(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new um(t,n,r,!0,a),i=We(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(Qh,r,a);return{values:s,indices:i}}var zd=O({unique_:oC});function lC(e,t,n){let r=E(e,"x","unsortedSegmentSum"),a=E(t,"segmentIds","unsortedSegmentSum","int32");F(jt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(ku,s,i)}var gm=O({unsortedSegmentSum_:lC});function uC(e,t=0){let n=E(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(qo,r,a)}var ir=O({unstack_:uC});function mx(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function Ax(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),an(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=be(1),u=ye(l,o),c=P(ye(i,s),u);if(a){F(r!=null,()=>"When using zeroDebias: true, step is required.");let h=E(r,"step","movingAverage");c=ge(c,ye(l,sa(o,h)))}return se(s,c)}var mC=O({movingAverage_:fC});function AC(e,t,n){let r=E(e,"indices","scatterND","int32"),a=E(t,"updates","scatterND");Cf(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(Oo,s,i)}var gx=O({scatterND_:AC});function yC(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function gC(e,t,n,r=0){let a=E(e,"sparseIndices","sparseToDense","int32"),s=E(t,"sparseValues","sparseToDense"),i=E(r,"defaultValue","sparseToDense",s.dtype);yC(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(Yh,o,l)}var wm=O({sparseToDense_:gC});function xC(e,t){let n=E(t,"indices","gatherND","int32"),r={params:E(e,"x","gatherND"),indices:n};return $.runKernel(Ao,r)}var xx=O({gatherND_:xC});function wC(e,t){if(t==null)return e.shape.slice();if(ta(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ue?a.clone():a;let s=wC(a,n),i=1-t,o=ge(hl(se(ml(s,0,1,"float32",r),i)),i);return P(a,o)}var wx=O({dropout_:_C});function _x(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function _m(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),F(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),an(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,u]=[i.length/s,s],c=Og("bool",l);for(let h=0;hA.value-m.value),c[h]=0;for(let m=0;mkC,depthwiseConv2d:()=>NC,matMul:()=>IC});function SC(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let u=s==="NHWC"?o.shape[3]:o.shape[1],c=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${n[2]}.`),F(c===n[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${n[3]}).`),i!=null&&F(jt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Ch,h,d)}var bm=O({conv2DBackpropFilter_:SC});function Ld(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,yl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Wd(e,t){let n=t,r=Pt(e.shape,t.shape);return r.length>0&&(n=Te(n,r)),G(n,e.shape)}function Bd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return zr(e);if(t==="elu")return cl(e);if(t==="relu6")return Sd(e);if(t==="prelu")return Xu(e,n);if(t==="leakyrelu")return Hu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var Vd=(e,t)=>!(e>0)||t==="linear";function TC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(l=l||"linear",Vd($.state.gradientDepth,l)===!1){let w=ra(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","conv2d"),d=E(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(jt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=Pu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused conv2d"));let g=(w,x)=>{let[I,S,T,M]=x,D=Ld(w,T,l);F($a(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let z=qf(S.shape,D,I,n,r),W=bm(S,D,I.shape,n,r),U=[z,W];if(M!=null){let H=Wd(M,D);U.push(H)}return U},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ei,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ei,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var kC=O({fusedConv2d_:TC});function CC(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={x:o,dy:l},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(Mh,u,c)}var bx=O({depthwiseConv2dNativeBackpropFilter_:CC});function EC(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={dy:o,filter:n},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel($h,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var vx=O({depthwiseConv2dNativeBackpropInput_:EC});function RC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(Vd($.state.gradientDepth,l)===!1){let w=ul(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","depthwiseConv2d"),d=E(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F(Mr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(jt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=Pu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused depthwiseConv2d"));let g=(w,x)=>{F($a(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[I,S,T,M]=x,D=Ld(w,T,l),z=vx(S.shape,D,I,n,r,s,i),W=bx(S,D,I.shape,n,r,s,i);if(M!=null){let U=Wd(A,D);return[z,W,U]}return[z,W]},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ti,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ti,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var NC=O({fusedDepthwiseConv2d_:RC});function FC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(Vd($.state.gradientDepth,s)===!1){let M=Ge(e,t,n,r);return a!=null&&(M=se(M,a)),Bd(M,s,i,o)}let l=E(e,"a","fused matMul"),u=E(t,"b","fused matMul");[l,u]=bt(l,u);let c=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?u.shape[u.rank-1]:u.shape[u.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?u.shape[u.rank-2]:u.shape[u.rank-1],f=l.shape.slice(0,-2),m=u.shape.slice(0,-2),A=Dt(f),y=Dt(m);F(l.rank>=2&&u.rank>=2&&l.rank===u.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${u.rank}.`),F(ta(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${u.shape} must match.`),F(c===h,()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),_=n?G(l,[A,c,d]):G(l,[A,d,c]),b=r?G(u,[y,p,h]):G(u,[y,h,p]),w;a!=null&&(w=E(a,"bias","fused matMul"),[w]=bt(w,l),yt(g,w.shape));let x;i!=null&&(x=E(i,"prelu weights","fused matMul"));let I=(M,D)=>{let[z,W,U,H]=D,X=Ld(G(M,U.shape),U,s),j,ee;if(!n&&!r?(j=Ge(X,W,!1,!0),ee=Ge(z,X,!0,!1)):!n&&r?(j=Ge(X,W,!1,!1),ee=Ge(X,z,!0,!1)):n&&!r?(j=Ge(W,X,!1,!0),ee=Ge(z,X,!1,!1)):(j=Ge(W,X,!0,!0),ee=Ge(X,z,!0,!0)),a!=null){let Y=Wd(H,X);return[j,ee,Y]}else return[j,ee]},S={a:_,b,bias:w,preluActivationWeights:x},T={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?$r((M,D,z)=>{let W=$.runKernel(Qs,S,T);return z([M,D,W]),{value:G(W,g),gradFunc:I}})(_,b):$r((M,D,z,W)=>{let U=$.runKernel(Qs,S,T);return W([M,D,U,z]),{value:G(U,g),gradFunc:I}})(_,b,w)}var IC=O({fusedMatMul_:FC});function MC(e){return _m(e,.54,.46)}var $C=O({hammingWindow_:MC});function DC(e){return _m(e,.5,.5)}var kx=O({hannWindow_:DC});function OC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push(Re(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${o.shape}.`),F(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),F(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),F(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let c={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(io,c,h)}var WC=O({cropAndResize_:LC});function BC(e){let t=E(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(fo,n,{})}var VC=O({flipLeftRight_:BC});function UC(e,t,n=0,r=.5){let a=E(e,"image","rotateWithOffset","float32");F(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(Ko,s,i)}var HC=O({rotateWithOffset_:UC});function gl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function jC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppression"),i=E(t,"scores","nonMaxSuppression"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(To,{boxes:s,scores:i},l)}var GC=O({nonMaxSuppression_:jC});function XC(e,t,n){let r=qC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function qC(e,t,n){return ZC(e,t,n||KC)}function KC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function Ix(e,t,n,r,a){return vm(e,t,n,r,a,0)}function Sx(e,t,n,r,a,s){return vm(e,t,n,r,a,0,!1,s,!0)}function Tx(e,t,n,r,a,s){return vm(e,t,n,r,a,s,!0)}function vm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let u=[];for(let A=0;Aa&&u.push({score:t[A],boxIndex:A,suppressBeginIndex:0});u.sort(Cx);let c=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=u.pop(),{score:y,boxIndex:g,suppressBeginIndex:_}=A;if(y=_;--w){let x=YC(e,g,h[w]);if(x>=r){b=!0;break}if(A.score=A.score*JC(r,c,x),A.score<=a)break}A.suppressBeginIndex=h.length,b||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&XC(u,A,Cx))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function YC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),u=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;let m=Math.max(s,u),A=Math.max(i,c),y=Math.min(o,h),g=Math.min(l,d),_=Math.max(y-m,0)*Math.max(g-A,0);return _/(p+f-_)}function JC(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function Cx(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function QC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppressionAsync"),i=E(t,"scores","nonMaxSuppressionAsync"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),u=l[0],c=l[1],{selectedIndices:h}=Ix(u,c,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),on(h,"int32")}var eE=QC;function tE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u={boxes:i,scores:o},c={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Eo,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var nE=O({nonMaxSuppressionWithScore_:tE});async function rE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u=await Promise.all([i.data(),o.data()]),c=u[0],h=u[1],{selectedIndices:d,selectedScores:p}=Tx(c,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(d,"int32"),selectedScores:on(p)}}var aE=rE;function sE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Co,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var iE=O({nonMaxSuppressionPadded_:sE});async function oE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Sx(d,p,u,c,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(f,"int32"),validOutputs:be(m,"int32")}}var lE=oE;function uE(e,t,n=!1,r=!1){let a=E(e,"images","resizeBilinear");F(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Ls,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Ex=O({resizeBilinear_:uE});function cE(e,t,n=!1,r=!1){let a=E(e,"images","resizeNearestNeighbor");F(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(_u,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Rx=O({resizeNearestNeighbor_:cE});function hE(e,t,n="nearest",r="constant",a=0,s){let i=E(e,"image","transform","float32"),o=E(t,"transforms","transform","float32");F(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),F(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},u={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(Jh,l,u)}var dE=O({transform_:hE});function pE(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=E(e,"a","bandPart");F(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=G(Id(0,s,1,"int32"),[-1,1]),l=Id(0,i,1,"int32"),u=ye(o,l),c=sr(ci(u,be(+t,"int32")),za(u,be(-n,"int32"))),h=Et([s,i],r.dtype);return G(dn(ir(G(r,[-1,s,i])).map(d=>kn(c,d,h))),a)}var fE=O({bandPart_:pE});function mE(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=Lt(e,e.shape[0],0).map(a=>Pa(a,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Fx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,u)=>l*u),r=ir(G(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[u,c]=Fx(l,t);a.push(u),s.push(c)});let i=G(dn(a,0),e.shape),o=G(dn(s,0),e.shape);return[i,o]}}function Fx(e,t=!1){return $.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=em(n),s=Rr(e),i=Nn([[1]],[1,1]),o=Rr(i),l=n>=r?r:n;for(let u=0;u{let p=Re(s,[u,u],[n-u,1]),f=Pd(p),m=Re(s,[u,u],[1,1]),A=kn(ar(m,0),Nn([[-1]]),Nn([[1]])),y=ye(m,P(A,f)),g=ge(p,y);g.shape[0]===1?o=Rr(i):o=st([i,Re(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let _=vt(ge(Ge(A,y),f)),b=Re(s,[u,0],[n-u,r]),w=P(_,o),x=at(o);if(u===0)s=ye(b,Ge(w,Ge(x,b)));else{let T=ye(b,Ge(w,Ge(x,b)));s=st([Re(s,[0,0],[u,r]),T],0)}let I=at(w),S=Re(a,[0,u],[n,a.shape[1]-u]);if(u===0)a=ye(S,Ge(Ge(S,o),I));else{let T=ye(S,Ge(Ge(S,o),I));a=st([Re(a,[0,0],[n,u]),T],1)}return[o,s,a]}),Ee([c,h,d])}return!t&&n>r&&(a=Re(a,[0,0],[n,r]),s=Re(s,[0,0],[r,r])),[a,s]})}var gE=O({qr_:yE}),pn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(pn||(pn={}));function xE(e,t,n=pn.SUM_BY_NONZERO_WEIGHTS){let r=E(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=E(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===pn.NONE)return s;if(n===pn.SUM)return Te(s);if(n===pn.MEAN){if(a==null)return kt(s);{let i=r.size/a.size,o=ge(Te(s),Te(a));return i>1?ge(o,be(i)):o}}if(n===pn.SUM_BY_NONZERO_WEIGHTS){if(a==null)return ge(Te(s),be(r.size));{let i=P(a,Or(r.shape)),o=me(Te(di(i,be(0))),"float32");return ge(Te(s),o)}}throw Error(`Unknown reduction: ${n}`)}var ia=O({computeWeightedLoss_:xE});function wE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","absoluteDifference"),s=E(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=E(n,"weights","absoluteDifference")),an(a.shape,s.shape,"Error in absoluteDifference: ");let o=zt(ye(a,s));return ia(o,i,r)}var _E=O({absoluteDifference_:wE});function bE(e,t,n,r,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","cosineDistance"),i=E(t,"predictions","cosineDistance"),o=null;r!=null&&(o=E(r,"weights","cosineDistance")),an(s.shape,i.shape,"Error in cosineDistance: ");let l=be(1),u=ye(l,Te(P(s,i),n,!0));return ia(u,o,a)}var vE=O({cosineDistance_:bE});function kE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","hingeLoss"),s=E(t,"predictions","hingeLoss"),i=null;n!=null&&(i=E(n,"weights","hingeLoss")),an(a.shape,s.shape,"Error in hingeLoss: ");let o=be(1);a=ye(P(be(2),a),o);let l=zr(ye(o,P(a,s)));return ia(l,i,r)}var NE=O({hingeLoss_:kE});function IE(e,t,n,r=1,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","huberLoss"),i=E(t,"predictions","huberLoss"),o=null;n!=null&&(o=E(n,"weights","huberLoss")),an(s.shape,i.shape,"Error in huberLoss: ");let l=be(r),u=zt(ye(i,s)),c=fl(u,l),h=ye(u,c),d=se(P(be(.5),lt(c)),P(l,h));return ia(d,o,a)}var SE=O({huberLoss_:IE});function TE(e,t,n,r=1e-7,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","logLoss"),i=E(t,"predictions","logLoss"),o=null;n!=null&&(o=E(n,"weights","logLoss")),an(s.shape,i.shape,"Error in logLoss: ");let l=be(1),u=be(r),c=vt(P(s,Mn(se(i,u)))),h=P(ye(l,s),Mn(se(ye(l,i),u))),d=ye(c,h);return ia(d,o,a)}var CE=O({logLoss_:TE});function EE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","meanSquaredError"),s=E(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=E(n,"weights","meanSquaredError")),an(a.shape,s.shape,"Error in meanSquaredError: ");let o=Dd(a,s);return ia(o,i,r)}var RE=O({meanSquaredError_:EE});function FE(e,t){let n=E(e,"labels","sigmoidCrossEntropyWithLogits"),r=E(t,"logits","sigmoidCrossEntropyWithLogits");an(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=zr(r),s=P(r,n),i=wd(qn(vt(zt(r))));return se(ye(a,s),i)}function ME(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"multiClassLabels","sigmoidCrossEntropy"),i=E(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","sigmoidCrossEntropy")),an(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(.5);s=se(P(s,ye(c,u)),P(h,u))}let l=FE(s,i);return ia(l,o,a)}var $E=O({sigmoidCrossEntropy_:ME});function DE(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return $r((r,a,s)=>{let i=am(a,[n],!0),o=ye(me(a,"float32"),i);s([r,o]);let l=vt(P(o,r));return{value:Te(l,[n]),gradFunc:(u,c)=>{let[h,d]=c,p=hi(u.shape,[n]);return[P(G(u,p),ye(me(h,"float32"),qn(d))),P(G(u,p),ye(qn(d),me(h,"float32")))]}}})(e,t)}function OE(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"onehotLabels","softmaxCrossEntropy"),i=E(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","softmaxCrossEntropy")),an(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(s.shape[1]);s=se(P(s,ye(c,u)),ge(u,h))}let l=DE(s,i);return ia(l,o,a)}var zE=O({softmaxCrossEntropy_:OE}),PE={fft:Ju,ifft:Al,rfft:Qu,irfft:$d},LE={hammingWindow:$C,hannWindow:kx,frame:Nx,stft:PC},Je={flipLeftRight:VC,resizeNearestNeighbor:Rx,resizeBilinear:Ex,rotateWithOffset:HC,cropAndResize:WC,nonMaxSuppression:GC,nonMaxSuppressionAsync:eE,nonMaxSuppressionWithScore:nE,nonMaxSuppressionWithScoreAsync:aE,nonMaxSuppressionPadded:iE,nonMaxSuppressionPaddedAsync:lE,transform:dE},Mx={bandPart:fE,gramSchmidt:AE,qr:gE},WE={absoluteDifference:_E,computeWeightedLoss:ia,cosineDistance:vE,hingeLoss:NE,huberLoss:SE,logLoss:CE,meanSquaredError:RE,sigmoidCrossEntropy:$E,softmaxCrossEntropy:zE},oa=class extends O5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Ee(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return ax(e,t)}dispose(){this.iterations_!=null&&Ee(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:be(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(oa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var Ud=class extends oa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:B(()=>He(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;B(()=>{let l=se(P(i,this.rho),P(lt(s),1-this.rho)),u=P(ge(en(se(o,this.epsilon)),en(se(i,this.epsilon))),s),c=se(P(o,this.rho),P(lt(u),1-this.rho));i.assign(l),o.assign(c);let h=se(P(u,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ee(this.accumulatedGrads.map(e=>e.variable)),Ee(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};Ud.className="Adadelta";Fa(Ud);var Hd=class extends oa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:B(()=>Uu(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;B(()=>{let i=se(s,lt(a));s.assign(i);let o=se(P(ge(a,en(se(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ee(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};Hd.className="Adagrad";Fa(Hd);var jd=class extends oa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],B(()=>{this.accBeta1=be(t).variable(),this.accBeta2=be(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ye(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:B(()=>He(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:B(()=>He(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedSecondMoment[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=se(P(c,this.beta2),P(lt(l),1-this.beta2)),p=ge(h,n),f=ge(d,r);u.assign(h),c.assign(d);let m=se(P(ge(p,se(en(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ee(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),B(()=>{this.accBeta1.assign(sa(this.beta1,this.iterations_+1)),this.accBeta2.assign(sa(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};jd.className="Adam";Fa(jd);var Gd=class extends oa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],B(()=>{this.iteration=be(0).variable(),this.accBeta1=be(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ge(-this.learningRate,se(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:He(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:He(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedWeightedInfNorm[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=P(c,this.beta2),p=zt(l),f=Dr(d,p);u.assign(h),c.assign(f);let m=se(P(ge(r,n),ge(h,se(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(se(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ee(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};Gd.className="Adamax";Fa(Gd);var ec=class extends oa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];B(()=>{let s=se(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Gt(be(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};ec.className="SGD";Fa(ec);var qd=class extends ec{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=be(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&B(()=>{let i,o=se(P(this.m,a),s);this.useNesterov?i=se(P(this.c,se(s,P(o,this.m))),r):i=se(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ee(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};qd.className="Momentum";Fa(qd);var Xd=class extends oa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:B(()=>He(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;B(()=>{let l=se(P(i,this.decay),P(lt(s),1-this.decay));if(this.centered){let u=this.accumulatedMeanGrads[n].variable,c=se(P(u,this.decay),P(s,1-this.decay)),h=ge(P(s,this.learningRate),en(ye(l,se(lt(c),this.epsilon)))),d=se(P(o,this.momentum),h);i.assign(l),u.assign(c),o.assign(d);let p=ye(r,d);r.assign(p)}else{let u=se(P(i,this.decay),P(lt(s),1-this.decay)),c=se(P(o,this.momentum),ge(P(s,this.learningRate),en(se(u,this.epsilon))));i.assign(u),o.assign(c);let h=ye(r,c);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ee(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ee(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ee(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};Xd.className="RMSProp";Fa(Xd);var pi=class{static sgd(e){return new ec(e)}static momentum(e,t,n=!1){return new qd(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new Xd(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new jd(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new Ud(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new Gd(e,t,n,r,a)}static adagrad(e,t=.1){return new Hd(e,t)}},fi={sgd:pi.sgd,momentum:pi.momentum,adadelta:pi.adadelta,adagrad:pi.adagrad,rmsprop:pi.rmsprop,adamax:pi.adamax,adam:pi.adam},BE=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Kd(){return new Promise(e=>BE(()=>e()))}var R={};ze(R,{ERF_A1:()=>JE,ERF_A2:()=>QE,ERF_A3:()=>eR,ERF_A4:()=>tR,ERF_A5:()=>nR,ERF_P:()=>YE,PARALLELIZE_THRESHOLD:()=>km,SELU_SCALE:()=>Dx,SELU_SCALEALPHA:()=>$x,applyActivation:()=>Bd,assertAndGetBroadcastShape:()=>yt,assertAxesAreInnerMostDims:()=>vS,assertParamsConsistent:()=>VE,assignToTypedArray:()=>cR,axesAreInnerMostDims:()=>nm,calculateShapes:()=>k5,combineLocations:()=>ix,complexWithEvenIndex:()=>oR,complexWithOddIndex:()=>lR,computeConv2DInfo:()=>Pu,computeConv3DInfo:()=>U5,computeDefaultPad:()=>Hf,computeDilation2DInfo:()=>qN,computeOptimalWindowSize:()=>HE,computeOutAndReduceShapes:()=>ox,computeOutShape:()=>UE,computePool2DInfo:()=>V5,computePool3DInfo:()=>XN,convertConv2DDataFormat:()=>B5,eitherStridesOrDilationsAreOne:()=>Mr,expandShapeToKeepDim:()=>hi,exponent:()=>dR,exponents:()=>hR,fromStringArrayToUint8:()=>mR,fromUint8ToStringArray:()=>fR,getAxesPermutation:()=>lx,getBroadcastDims:()=>LI,getComplexWithIndex:()=>uR,getFusedBiasGradient:()=>Wd,getFusedDyActivation:()=>Ld,getImageCenter:()=>jE,getInnerMostAxes:()=>kS,getPermuted:()=>qE,getReductionAxes:()=>Pt,getReshaped:()=>GE,getReshapedPermuted:()=>XE,getSliceBeginCoords:()=>KE,getSliceSize:()=>ZE,getUndoAxesPermutation:()=>rm,log:()=>aR,mergeRealAndImagArrays:()=>sR,prepareAndValidate:()=>v5,prepareSplitSize:()=>pR,segment_util:()=>Ox,shouldFuse:()=>Vd,slice_util:()=>cn,splitRealAndImagArrays:()=>iR,tupleValuesAreOne:()=>$a,upcastType:()=>rr,validateInput:()=>Cf,validateUpdateShape:()=>Tf,warn:()=>rR});function VE(e,t){let n=e[0].length;e.forEach((a,s)=>{F(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function UE(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function XE(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var Ox={};ze(Ox,{collectGatherOpShapeInfo:()=>gR,computeOutShape:()=>yR,segOpComputeOptimalWindowSize:()=>AR});function AR(e,t){let n=!1,r;for(e<=km?(r=e,n=!0):r=_h(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=_h(e,r+1);return r}function yR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( - ${s}).`);if(nrd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function mR(e){return e.map(t=>Su(t))}var Pr={};ze(Pr,{nonMaxSuppressionV3Impl:()=>Ix,nonMaxSuppressionV4Impl:()=>Sx,nonMaxSuppressionV5Impl:()=>Tx,whereImpl:()=>Ax});function _e(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var xR=Pr.whereImpl,Zd=class extends su{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new xh(this,Fr())}nextDataId(){return Zd.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` + ${r.shape}`),F(i%(t*t)==0,()=>`Dimension size must be evenly divisible by ${t*t} but is ${i} for depthToSpace with input shape ${r.shape}`);let o={x:r},l={blockSize:t,dataFormat:n};return $.runKernel(oo,o,l)}var Kf=O({depthToSpace_:DI});function OI(e,t,n,r,a="NHWC",s=[1,1],i){let o=E(e,"x","depthwiseConv2d"),l=E(t,"filter","depthwiseConv2d"),u=o,c=!1;o.rank===3&&(c=!0,u=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),F(u.rank===4,()=>`Error in depthwiseConv2d: input must be rank 4, but got rank ${u.rank}.`),F(l.rank===4,()=>`Error in depthwiseConv2d: filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[3]===l.shape[2],()=>`Error in depthwiseConv2d: number of input channels (${u.shape[3]}) must match the inChannels dimension in filter ${l.shape[2]}.`),i!=null&&F(jt(r),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`);let h={x:u,filter:l},d={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i},p=$.runKernel(ys,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3]]):p}var ul=O({depthwiseConv2d_:OI});function zI(e){let t={x:E(e,"x","diag")};return $.runKernel(Dh,t)}var PI=O({diag_:zI});function LI(e,t,n,r,a=[1,1],s="NHWC"){let i=E(e,"x","dilation2d"),o=E(t,"filter","dilation2d");F(i.rank===3||i.rank===4,()=>`Error in dilation2d: input must be rank 3 or 4, but got rank ${i.rank}.`),F(o.rank===3,()=>`Error in dilation2d: filter must be rank 3, but got rank ${o.rank}.`),F(s==="NHWC",()=>`Error in dilation2d: Only NHWC is currently supported, but got dataFormat of ${s}`);let l=i,u=!1;i.rank===3&&(l=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),u=!0);let c={x:l,filter:o},h={strides:n,pad:r,dilations:a},d=$.runKernel(pu,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var Zf=O({dilation2d_:LI});function WI(e,t){let n=e.length,r=[];for(let a=0;a1&&i===1&&r.unshift(s)}return r}function Pt(e,t){let n=[];for(let r=0;r1)&&n.unshift(s)}return n}function yt(e,t){let n=[],r=Math.max(e.length,t.length);for(let a=0;a"The first dimension of `a` must match the size of `condition`."),s.rank!==1&&an(s.shape,l.shape,"Error in where: ");let u={condition:s,t:o,e:l};return $.runKernel(zo,u)}var kn=O({where_:VI});function UI(e){let t={x:E(e,"x","zerosLike")};return $.runKernel(Xo,t)}var He=O({zerosLike_:UI});function HI(e,t){let n=E(e,"a","div"),r=E(t,"b","div");[n,r]=bt(n,r);let a=ge(n,r),s=He(a),i=Da(r,s);return kn(i,s,a)}var Yf=O({divNoNan_:HI});function jI(e,t){let n=E(e,"t1","dot"),r=E(t,"t2","dot");F((n.rank===1||n.rank===2)&&(r.rank===1||r.rank===2),()=>`Error in dot: inputs must all be rank 1 or 2, but got ranks ${n.rank} and ${r.rank}.`);let a=n.rank===1?n.size:n.shape[1],s=r.rank===1?r.size:r.shape[0];if(F(a===s,()=>`Error in dot: inner dimensions of inputs must match, but got ${a} and ${s}.`),n.rank===1&&r.rank===1){let i=G(n,[1,-1]),o=G(r,[-1,1]),l=Ge(i,o);return G(l,[])}else if(n.rank===1&&r.rank===2){let i=G(n,[1,-1]),o=G(r,[r.shape[0],r.shape[1]]),l=Ge(i,o);return G(l,[l.size])}else if(n.rank===2&&r.rank===1){let i=G(r,[-1,1]),o=Ge(n,i);return G(o,[o.size])}else{let i=G(r,[r.shape[0],r.shape[1]]);return Ge(n,i)}}var ex=O({dot_:jI});function GI(e){let t={x:E(e,"x","elu")};return $.runKernel(lo,t)}var cl=O({elu_:GI});function qI(e){let t=E(e,"x","erf");F(t.dtype==="int32"||t.dtype==="float32",()=>"Input dtype must be `int32` or `float32`."),t.dtype==="int32"&&(t=me(t,"float32"));let n={x:t};return $.runKernel(uo,n)}var Jf=O({erf_:qI});function XI(e){let t={x:E(e,"x","exp")};return $.runKernel(xs,t)}var qn=O({exp_:XI});function KI(e,t=0){let n=E(e,"x","expandDims","string_or_numeric");F(t<=n.rank,()=>"Axis must be <= rank of the tensor");let r={input:n},a={dim:t};return $.runKernel(ho,r,a)}var hn=O({expandDims_:KI});function ZI(e){let t={x:E(e,"x","expm1")};return $.runKernel(po,t)}var Qf=O({expm1_:ZI});function YI(e,t){let n=E(e,"x","tile","string_or_numeric");F(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of reps ${t}.`);let r={x:n},a={reps:t};return $.runKernel(Sa,r,a)}var Oa=O({tile_:YI});function JI(e,t,n,r="float32"){t==null&&(t=e);let a=We([e,t],r),s=e<=t?e:t;for(let o=0;o`Error in localResponseNormalization: x must be rank 3 or 4 but got + rank ${s.rank}.`),F(jt(t),()=>`Error in localResponseNormalization: depthRadius must be an integer but got depthRadius ${t}.`);let i=s,o=!1;s.rank===3&&(o=!0,i=G(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:i},u={depthRadius:t,bias:n,alpha:r,beta:a},c=$.runKernel(yu,l,u);return o?G(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var tm=O({localResponseNormalization_:cS});function hS(e){let t={x:E(e,"x","log")};return $.runKernel(Is,t)}var Mn=O({log_:hS});function dS(e){let t={x:E(e,"x","log1p")};return $.runKernel(vo,t)}var wd=O({log1p_:dS});function pS(e){return F(ka(e),()=>"The f passed in grad(f) must be a function"),(t,n)=>{let r=E(t,"x","tf.grad","string_or_numeric"),a=n!=null?E(n,"dy","tf.grad"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(r),[r],a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),_d(i),i[0]})}}function fS(e){return F(ka(e),()=>"The f passed in grads(f) must be a function"),(t,n)=>{F(Array.isArray(t),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let r=$u(t,"args","tf.grads","string_or_numeric"),a=n!=null?E(n,"dy","tf.grads"):null;return $.tidy(()=>{let{value:s,grads:i}=$.gradients(()=>e(...r),r,a);return a!=null&&an(s.shape,a.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(i),i})}}function mS(e){return F(ka(e),()=>"The f passed in valueAndGrad(f) must be a function"),(t,n)=>{F(t instanceof Ue,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:r,value:a}=$.gradients(()=>e(t),[t],n);return _d(r),{grad:r[0],value:a}}}function AS(e){return F(ka(e),()=>"The f passed in valueAndGrads(f) must be a function"),(t,n)=>{F(Array.isArray(t)&&t.every(a=>a instanceof Ue),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),F(n==null||n instanceof Ue,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let r=$.gradients(()=>e(...t),t,n);return n!=null&&an(r.value.shape,n.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),_d(r.grads),r}}function sx(e,t){F(ka(e),()=>"The f passed in variableGrads(f) must be a function"),F(t==null||Array.isArray(t)&&t.every(u=>u instanceof Ru),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let n=t!=null;if(!n){t=[];for(let u in $.registeredVariables)t.push($.registeredVariables[u])}let r=n?t.filter(u=>!u.trainable):null,a=t.length;t=t.filter(u=>u.trainable),F(t.length>0,()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${a} variables is trainable.`);let s=!0,{value:i,grads:o}=$.gradients(e,t,null,s);F(o.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),F(i.rank===0,()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${i.rank} tensor`);let l={};return t.forEach((u,c)=>{o[c]!=null&&(l[u.name]=o[c])}),r!=null&&r.forEach(u=>l[u.name]=null),{value:i,grads:l}}function $r(e){return $.customGrad(e)}function _d(e){if(e.filter(t=>t==null).length>0)throw new Error(`Cannot compute gradient of y=f(x) with respect to x. Make sure that + the f you passed encloses all operations that lead from x to y.`)}function yS(e){let t={x:E(e,"x","neg")};return $.runKernel(Io,t)}var vt=O({neg_:yS});function gS(e){let t={x:E(e,"x","softplus")};return $.runKernel(Vo,t)}var dl=O({softplus_:gS});function xS(e){let t=E(e,"x","logSigmoid");return $r(n=>({value:vt(dl(vt(n))),gradFunc:r=>P(r,Fn(vt(n)))}))(t)}var ix=O({logSigmoid_:xS});function wS(e,t=null,n=!1){let r={x:E(e,"x","max")},a={reductionIndices:t,keepDims:n};return $.runKernel(Ss,r,a)}var Xn=O({max_:wS});function _S(e,t){let n=E(e,"a","sub"),r=E(t,"b","sub");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Zs,a)}var ye=O({sub_:_S});function bS(e,t=null,n=!1){let r=E(e,"x","sum");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(qs,a,s)}var Te=O({sum_:bS});function vS(e,t=-1){let n=E(e,"logits","logSoftmax");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Log Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and axis was ${t}`);return $r((r,a)=>{let s=!0,i=Xn(r,t,!0),o=ye(r,i),l=ye(me(o,"float32"),Mn(Te(qn(o),t,s)));return a([l]),{value:l,gradFunc:(u,c)=>{let[h]=c,d=!0,p=qn(h);return ye(u,P(Te(u,t,d),p))}}})(n)}var bd=O({logSoftmax_:vS});function nm(e,t){for(let n=0;ne[s]);return[n,a]}function hi(e,t){let n=t.map(r=>1);return ox(e,n,t)}function kS(e,t,n){F(nm(t,n),()=>`${e} supports only inner-most axes for now. Got axes ${t} and rank-${n} input.`)}function ux(e,t){if(nm(e,t))return null;let n=[];for(let r=0;rn.push(r)),n}function rm(e){return e.map((t,n)=>[n,t]).sort((t,n)=>t[1]-n[1]).map(t=>t[0])}function NS(e,t){let n=[];for(let r=t-e;r`Error in maxPool: input must be rank 4 but got rank ${o.rank}.`),F(Mr(n,i),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${n} and dilations '${i}'`),a!=null&&F(jt(r),()=>`Error in maxPool: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a},h=$.runKernel(Cs,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var Gu=O({maxPool_:RS});function FS(e,t=[1,1,1],n,r,a,s="NDHWC"){let i=E(e,"x","maxPool3d"),o=i,l=!1;i.rank===4&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]])),F(o.rank===5,()=>`Error in maxPool3d: x must be rank 5 but got rank ${o.rank}.`),F(s==="NDHWC",()=>`Error in maxPool3d: Only NDHWC is currently supported, but got dataFormat of ${s}`),a!=null&&F(jt(r),()=>`Error in maxPool3d: pad must be an integer when using, dimRoundingMode ${a} but got pad ${r}.`);let u={x:o},c={filterSize:t,strides:n,pad:r,dimRoundingMode:a,dataFormat:s},h=$.runKernel(gu,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3],h.shape[4]]):h}var sm=O({maxPool3d_:FS});function MS(e,t,n,r,a=!1){let s={x:E(e,"x","maxPoolWithArgmax")},i={filterSize:t,strides:n,pad:r,includeBatchInIndex:a},o=$.runKernel(Gh,s,i);return{result:o[0],indexes:o[1]}}var hx=O({maxPoolWithArgmax_:MS});function $S(e,t){let n=E(e,"a","maximum"),r=E(t,"b","maximum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Ts,a)}var Dr=O({maximum_:$S});function DS(e,t=null,n=!1){let r={x:E(e,"x","mean")},a={axis:t,keepDims:n};return $.runKernel(Es,r,a)}var kt=O({mean_:DS});function OS(e,t=null,n=!1){let r={x:E(e,"x","min")},a={axis:t,keepDims:n};return $.runKernel(Rs,r,a)}var pl=O({min_:OS});function zS(e,t){let n=E(e,"a","minimum"),r=E(t,"b","minimum");[n,r]=bt(n,r),n.dtype==="bool"&&(n=me(n,"int32"),r=me(r,"int32")),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(Fs,a)}var fl=O({minimum_:zS});function PS(e,t,n){F(n==="reflect"||n==="symmetric",()=>`Invalid mode. Mode must be either reflect or symmetric. Got ${n}.`);let r=E(e,"x","mirrorPad");if(r.rank===0)throw new Error("mirrorPad(scalar) is not defined. Pass non-scalar to mirrorPad");F(t.length===r.rank,()=>`Padding doesn't match input. Must be ${r.rank}. Got ${t.length}.`);let a=n==="reflect"?1:0;for(let o=0;o"Invalid number of paddings. Must be length of 2 each."),F(t[o][0]>=0&&t[o][0]<=r.shape[o]-a&&t[o][1]>=0&&t[o][1]<=r.shape[o]-a,()=>`Padding in dimension ${o} cannot be greater than or equal to ${r.shape[o]-a} or less than 0 for input of shape ${r.shape}`);let s={paddings:t,mode:n},i={x:r};return $.runKernel(xu,i,s)}var im=O({mirrorPad_:PS});function LS(e,t){let n=E(e,"a","mod"),r=E(t,"b","mod");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(No,a)}var om=O({mod_:LS});function WS(e){let t=E(e,"x","square"),n={};return $.runKernel("Square",{x:t},n)}var lt=O({square_:WS});function BS(e,t=null,n=!1){e=E(e,"x","moments");let r=nr(t,e.shape),a=kt(e,r,n),s=a.shape;n||(s=hi(a.shape,r));let i=lt(ye(me(e,"float32"),G(a,s))),o=kt(i,r,n);return{mean:a,variance:o}}var kd=O({moments_:BS});function VS(e,t,n,r){let a=E(t,"data","multiRNNCell"),s=$u(n,"c","multiRNNCell"),i=$u(r,"h","multiRNNCell"),o=a,l=[];for(let h=0;h2)throw new Error(`Rank of probabilities must be 1 or 2, but is ${i}`);n=n||Math.random();let o={logits:i===1?G(a,[1,-1]):a},l={numSamples:t,seed:n,normalized:r},u=$.runKernel(qh,o,l);return i===1?G(u,[u.size]):u}var dx=O({multinomial_:HS});function jS(e,t){let n=E(e,"a","notEqual"),r=E(t,"b","notEqual");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r};return $.runKernel(So,a)}var di=O({notEqual_:jS});function Et(e,t="float32"){if(t==="complex64"){let r=Et(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=bh(Dt(e),t);return $.makeTensor(n,e,t)}function Or(e,t="float32"){if(t==="complex64"){let r=Or(e,"float32"),a=Et(e,"float32");return Ca(r,a)}let n=Q1(Dt(e),t);return $.makeTensor(n,e,t)}function GS(e){let t={x:E(e,"x","onesLike")};return $.runKernel(Ro,t)}var $n=O({onesLike_:GS});function qS(e,t){let n=E(e,"v1","outerProduct"),r=E(t,"v2","outerProduct");F(n.rank===1&&r.rank===1,()=>`Error in outerProduct: inputs must be rank 1, but got ranks ${n.rank} and ${r.rank}.`);let a=G(n,[-1,1]),s=G(r,[1,-1]);return Ge(a,s)}var XS=O({outerProduct_:qS});function KS(e,t,n=0){let r=E(e,"x","pad");if(r.rank===0)throw new Error("pad(scalar) is not defined. Pass non-scalar to pad");let a={paddings:t,constantValue:n},s={x:r};return $.runKernel(Ds,s,a)}var aa=O({pad_:KS});function ZS(e,t,n=0){return F(t.length===2,()=>"Invalid number of paddings. Must be length of 2."),aa(e,[t],n)}var YS=O({pad1d_:ZS});function JS(e,t,n=0){return F(t.length===2&&t[0].length===2&&t[1].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var QS=O({pad2d_:JS});function eT(e,t,n=0){return F(t.length===3&&t[0].length===2&&t[1].length===2&&t[2].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var tT=O({pad3d_:eT});function nT(e,t,n=0){return F(t.length===4&&t[0].length===2&&t[1].length===2&&t[2].length===2&&t[3].length===2,()=>"Invalid number of paddings. Must be length of 2 each."),aa(e,t,n)}var rT=O({pad4d_:nT});function aT(e,t,n){let r=E(e,"x","spaceToBatchND");F(r.rank>=1+t.length,()=>`input rank ${r.rank} should be > than [blockShape] ${t.length}`),F(n.length===t.length,()=>`paddings.shape[0] ${n.length} must be equal to [blockShape] ${t.length}`),F(r.shape.reduce((i,o,l)=>l>0&&l<=t.length?i&&(o+n[l-1][0]+n[l-1][1])%t[l-1]==0:i,!0),()=>`input spatial dimensions ${r.shape.slice(1)} with paddings ${n.toString()} must be divisible by blockShapes ${t.toString()}`);let a={x:r},s={blockShape:t,paddings:n};return $.runKernel(bu,a,s)}var qu=O({spaceToBatchND_:aT});function oT(e,t,n,r,a,s){a==null&&(a=[1,1]),s==null&&(s=1),r===0&&(r="valid");let i=E(e,"x","maxPool"),o=i,l=!1;i.rank===3&&(l=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]])),F(Mr(s,a),()=>`Error in pool: Either strides or dilations must be 1. Got strides ${s} and dilations '${a}'`);let u=U5(o.shape,t,s,a,r),c=[u.dilationHeight,u.dilationWidth],h;r==="same"?h=iT([u.filterHeight,u.filterWidth],c):h=[[0,0],[0,0]];let d=c[0]===1&&c[1]===1,[p,f]=sT([u.inHeight,u.inWidth],c,h),m=d?r:"valid",A=d?o:qu(o,c,p),y=(n==="avg"?()=>Lu(A,t,s,m):()=>Gu(A,t,s,m))(),g=d?y:Wu(y,c,f);return l?G(g,[g.shape[1],g.shape[2],g.shape[3]]):g}function sT(e,t,n){let r=n.map(c=>c[0]),a=n.map(c=>c[1]),s=e.concat(r,a),i=t.map((c,h)=>(c-s[h]%c)%c),o=a.map((c,h)=>c+i[h]),l=t.map((c,h)=>[r[h],o[h]]),u=t.map((c,h)=>[0,i[h]]);return[l,u]}function iT(e,t){let n=e.map((s,i)=>s+(s-1)*(t[i]-1)).map(s=>s-1),r=n.map(s=>Math.floor(s/2)),a=n.map((s,i)=>s-r[i]);return n.map((s,i)=>[r[i],a[i]])}var px=O({pool_:oT});function lT(e,t){let n=E(e,"base","pow"),r=E(t,"exp","pow");[n,r]=bt(n,r);let a={a:n,b:r};return $.runKernel(Os,a)}var sa=O({pow_:lT});function uT(e,t){let n=E(e,"x","prelu"),r=E(t,"alpha","prelu"),a={x:n,alpha:r};return $.runKernel(zs,a)}var Xu=O({prelu_:uT});function cT(e,t=null,n=!1){let r=E(e,"x","prod");r.dtype==="bool"&&(r=me(r,"int32"));let a={x:r},s={axis:t,keepDims:n};return $.runKernel(Mo,a,s)}var Nd=O({prod_:cT});function hT(e,t,n){let r=Dt(e),a=null;if(n==null||n==="float32")a=new Float32Array(r);else if(n==="int32")a=new Int32Array(r);else if(n==="bool")a=new Uint8Array(r);else throw new Error(`Unknown data type ${n}`);for(let s=0;s=1||s===0);let i=Math.sqrt(-2*Math.log(s)/s);e=this.mean+this.stdDev*r*i,t=this.mean+this.stdDev*a*i,(!this.truncated||this.isValidTruncated(e))&&(n=!0)}return(!this.truncated||this.isValidTruncated(t))&&(this.nextVal=this.convertValue(t)),this.convertValue(e)}convertValue(e){return this.dtype==null||this.dtype==="float32"?e:Math.round(e)}isValidTruncated(e){return e<=this.upper&&e>=this.lower}},pT=class{constructor(e,t,n,r){this.alpha=e,this.beta=1/t,this.dtype=n;let a=r||Math.random();this.randu=lm.alea(a.toString()),this.randn=new um(0,1,n,!1,this.randu()),e<1?this.d=e+2/3:this.d=e-1/3,this.c=1/Math.sqrt(9*this.d)}nextValue(){let e,t,n,r,a,s;for(;;){do r=this.randn.nextValue(),s=1+this.c*r;while(s<=0);if(s*=s*s,e=r*r,t=1-.331*e*e,n=.5*e+this.d*(1-s+Math.log(s)),a=this.randu(),athis.dtype==null||this.dtype==="float32",this.min=e,this.range=t-e,this.dtype=n,r==null&&(r=Math.random()),typeof r=="number"&&(r=r.toString()),!this.canReturnFloat()&&this.range<=1)throw new Error(`The difference between ${e} - ${t} <= 1 and dtype is not float`);this.random=lm.alea(r)}convertValue(e){return this.canReturnFloat()?e:Math.round(e)}nextValue(){return this.convertValue(this.min+this.range*this.random())}};function mT(e,t,n=1,r="float32",a){if(n==null&&(n=1),r==null&&(r="float32"),r!=="float32"&&r!=="int32")throw new Error(`Unsupported data type ${r}`);let s=new pT(t,n,r,a),i=We(e,r);for(let o=0;o`Error in reverse1D: x must be rank 1 but got rank ${t.rank}.`),Dn(t,0)}var NT=O({reverse1d_:kT});function IT(e,t){let n=E(e,"x","reverse");return F(n.rank===2,()=>`Error in reverse2D: x must be rank 2 but got rank ${n.rank}.`),Dn(n,t)}var ST=O({reverse2d_:IT});function TT(e,t){let n=E(e,"x","reverse");return F(n.rank===3,()=>`Error in reverse3D: x must be rank 3 but got rank ${n.rank}.`),Dn(n,t)}var CT=O({reverse3d_:TT});function ET(e,t){let n=E(e,"x","reverse");return F(n.rank===4,()=>`Error in reverse4D: x must be rank 4 but got rank ${n.rank}.`),Dn(n,t)}var RT=O({reverse4d_:ET});function FT(e){let t={x:E(e,"x","round")};return $.runKernel(Vs,t)}var hm=O({round_:FT});function MT(e){let t={x:E(e,"x","rsqrt")};return $.runKernel(Us,t)}var Td=O({rsqrt_:MT});function be(e,t){if((sn(e)&&t!=="string"||Array.isArray(e))&&t!=="complex64")throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if(t==="string"&&sn(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return Ea(e,[],[],t)}function $T(e){let t={x:E(e,"x","selu")};return $.runKernel(Po,t)}var Cd=O({selu_:$T});function DT(e,t,n,r,a,s=[1,1],i="NHWC"){let o=E(e,"x","separableConv2d"),l=E(t,"depthwiseFilter","separableConv2d"),u=E(n,"pointwiseFilter","separableConv2d"),c=o,h=!1;if(o.rank===3&&(h=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2]])),i==="NCHW")throw new Error("separableConv2d currently does not support dataFormat NCHW; only NHWC is supported");F(c.rank===4,()=>`Error in separableConv2d: input must be rank 4, but got rank ${c.rank}.`),F(l.rank===4,()=>`Error in separableConv2d: depthwise filter must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in separableConv2d: pointwise filter must be rank 4, but got rank ${l.rank}.`),F(u.shape[0]===1,()=>`Error in separableConv2d: the first dimension of pointwise filter must be 1, but got ${u.shape[0]}.`),F(u.shape[1]===1,()=>`Error in separableConv2d: the second dimension of pointwise filter must be 1, but got ${u.shape[1]}.`);let d=l.shape[2],p=l.shape[3];F(u.shape[2]===d*p,()=>`Error in separableConv2d: the third dimension of pointwise filter must be ${d*p}, but got ${u.shape[2]}.`);let f=ul(c,l,r,a,i,s),m=ra(f,u,1,"valid",i);return h?G(m,[m.shape[1],m.shape[2],m.shape[3]]):m}var dm=O({separableConv2d_:DT});async function OT(e,t){let n=E(e,"x","setdiff1d"),r=E(t,"y","setdiff1d");F(n.dtype===r.dtype,()=>`x and y should have the same dtype, but got x (${n.dtype}) and y (${r.dtype}).`),F(n.rank===1,()=>`x should be 1D tensor, but got x (${n.shape}).`),F(r.rank===1,()=>`y should be 1D tensor, but got y (${r.shape}).`);let a=await n.data(),s=await r.data(),i=new Set(s),o=0;for(let c=0;c`slice1d expects a rank-1 tensor, but got a rank-${r.rank} tensor`),Re(r,[t],[n])}var Fd=O({slice1d_:WT});function BT(e,t,n){let r=E(e,"x","slice2d");return F(r.rank===2,()=>`slice2d expects a rank-2 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var fm=O({slice2d_:BT});function VT(e,t,n){let r=E(e,"x","slice3d");return F(r.rank===3,()=>`slice3d expects a rank-3 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Md=O({slice3d_:VT});function UT(e,t,n){let r=E(e,"x","slice4d");return F(r.rank===4,()=>`slice4d expects a rank-4 tensor, but got a rank-${r.rank} tensor`),Re(r,t,n)}var Zu=O({slice4d_:UT});function HT(e,t=-1){let n=E(e,"logits","softmax","float32");if(t===-1&&(t=n.rank-1),t!==n.rank-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${n.rank} and dim was ${t}`);let r={logits:n},a={dim:t};return $.runKernel(Xs,r,a)}var Yu=O({softmax_:HT});function jT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.fft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Lh,t)}var Ju=O({fft_:jT});function GT(e){F(e.dtype==="complex64",()=>`The dtype for tf.spectral.ifft() must be complex64 but got ${e.dtype}.`);let t={input:e};return $.runKernel(Wh,t)}var Al=O({ifft_:GT});function qT(e){let t=e.shape[e.shape.length-1],n=e.size/t,r;if(t<=2){let a=G(e,[n,t]);r=Al(a)}else{let a=[n,2*(t-1)],s=G(Ku(e),[n,t]),i=G(gd(e),[n,t]),o=Dn(Re(s,[0,1],[n,t-2]),1),l=P(Dn(Re(i,[0,1],[n,t-2]),1),be(-1)),u=st([s,o],1),c=st([i,l],1),h=G(Ca(u,c),[a[0],a[1]]);r=Al(h)}if(r=Ku(r),e.rank===3&&e.shape[0]!==0){let a=r,s=e.shape[0];r=G(r,[s,r.shape[0]/s,r.shape[1]]),a.dispose()}return r}var $d=O({irfft_:qT});function XT(e,t,n=0){let r={x:E(e,"x","split")},a={numOrSizeSplits:t,axis:n};return $.runKernel(Uo,r,a)}var Lt=O({split_:XT});function KT(e,t){F(e.dtype==="float32",()=>`The dtype for rfft() must be real value but got ${e.dtype}`);let n=e.shape[e.shape.length-1],r=e.size/n,a;if(t!=null&&t0),m=e.shape.map(A=>A);m[e.shape.length-1]=t,a=Re(e,f,m),n=t}else if(t!=null&&t>n){let f=e.shape.map(m=>m);f[e.shape.length-1]=t-n,a=st([e,Et(f)],e.shape.length-1),n=t}else a=e;let s=He(a),i=G(Ca(a,s),[r,n]),o=Ju(i),l=Math.floor(n/2)+1,u=Ku(o),c=gd(o),h=Lt(u,[l,n-l],u.shape.length-1),d=Lt(c,[l,n-l],c.shape.length-1),p=a.shape.slice();return p[a.shape.length-1]=l,G(Ca(h[0],d[0]),p)}var Qu=O({rfft_:KT});function ZT(e){let t={x:E(e,"x","sqrt")};return $.runKernel(Gs,t)}var en=O({sqrt_:ZT});function YT(e,t){let n=E(e,"a","squaredDifference"),r=E(t,"b","squaredDifference");[n,r]=bt(n,r),yt(n.shape,r.shape);let a={a:n,b:r},s={};return $.runKernel(Ks,a,s)}var Dd=O({squaredDifference_:YT});function JT(e,t){let n=E(e,"x","squeeze");return G(n,Og(n.shape,t).newShape)}var Pa=O({squeeze_:JT});function QT(e,t=0){let n=$u(e,"tensors","stack","string_or_numeric");F(n.length>=1,()=>"Pass at least one tensor to tf.stack"),n.length>0&&F(t<=n[0].rank,()=>"Axis must be <= rank of the tensor");let r=n,a={axis:t};return $.runKernel(Fo,r,a)}var dn=O({stack_:QT});function eC(e,t=0){let n={x:E(e,"x","step")},r={alpha:t};return $.runKernel(Ta,n,r)}var yl=O({step_:eC});function tC(e,t,n,r,a=0,s=0,i=0,o=0,l=0){let u={x:E(e,"x","stridedSlice")},c={begin:t,end:n,strides:r,beginMask:a,endMask:s,ellipsisMask:i,newAxisMask:o,shrinkAxisMask:l};return $.runKernel(Ho,u,c)}var mm=O({stridedSlice_:tC});function nC(e){let t={x:E(e,"x","tan")};return $.runKernel(jo,t)}var Am=O({tan_:nC});function on(e,t){ss(e);let n=Er(e,t);if(n.length!==1)throw new Error("tensor1d() requires values to be a flat/TypedArray");return Ea(e,null,n,t)}function Nn(e,t,n){if(ss(e),t!=null&&t.length!==2)throw new Error("tensor2d() requires shape to have two numbers");let r=Er(e,n);if(r.length!==2&&r.length!==1)throw new Error("tensor2d() requires values to be number[][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor2d() requires shape to be provided when `values` are a flat/TypedArray");return Ea(e,t,r,n)}function rC(e,t,n){if(ss(e),t!=null&&t.length!==4)throw new Error("tensor4d() requires shape to have four numbers");let r=Er(e,n);if(r.length!==4&&r.length!==1)throw new Error("tensor4d() requires values to be number[][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor4d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function aC(e,t,n){if(ss(e),t!=null&&t.length!==5)throw new Error("tensor5d() requires shape to have five numbers");let r=Er(e,n);if(r.length!==5&&r.length!==1)throw new Error("tensor5d() requires values to be number[][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor5d() requires shape to be provided when `values` are a flat array");return Ea(e,t,r,n)}function sC(e,t,n){if(ss(e),t!=null&&t.length!==6)throw new Error("tensor6d() requires shape to have six numbers");let r=Er(e,n);if(r.length!==6&&r.length!==1)throw new Error("tensor6d() requires values to be number[][][][][][] or flat/TypedArray");if(r.length===1&&t==null)throw new Error("tensor6d() requires shape to be provided when `values` are a flat array");return t=t||r,Ea(e,t,r,n)}function iC(e,t=1,n=!0){let r=E(e,"x","topk");if(r.rank===0)throw new Error("topk() expects the input to be of rank 1 or higher");let a=r.shape[r.shape.length-1];if(t>a)throw new Error(`'k' passed to topk() must be <= the last dimension (${a}) but got ${t}`);let s={x:r},i={k:t,sorted:n},[o,l]=$.runKernel(Go,s,i);return{values:o,indices:l}}var ym=O({topk_:iC});function oC(e,t=0,n=1,r,a){if(r!=null&&r==="bool")throw new Error("Unsupported data type $ { dtype }");let s=new um(t,n,r,!0,a),i=We(e,r);for(let o=0;o0,()=>"The input tensor must be at least 1D");let r={x:n},a={axis:t},[s,i]=$.runKernel(Qh,r,a);return{values:s,indices:i}}var zd=O({unique_:lC});function uC(e,t,n){let r=E(e,"x","unsortedSegmentSum"),a=E(t,"segmentIds","unsortedSegmentSum","int32");F(jt(n),()=>"numSegments must be of dtype int");let s={x:r,segmentIds:a},i={numSegments:n};return $.runKernel(ku,s,i)}var gm=O({unsortedSegmentSum_:uC});function cC(e,t=0){let n=E(e,"x","unstack","string_or_numeric");F(t>=-n.shape.length&&t`Axis = ${t} is not in [-${n.shape.length}, ${n.shape.length})`);let r={value:n},a={axis:t};return $.runKernel(qo,r,a)}var ir=O({unstack_:cC});function Ax(e,t=!0,n,r){return $.makeVariable(e,t,n,r)}function yx(e,t){let n=[];for(let s=0;s0,()=>"mask cannot be scalar"),an(o.slice(s,s+i),a.shape,"mask's shape must match the first K dimensions of tensor's shape,");let l=1;for(let m=s;m"Shape mismatch in v and x");let l=be(1),u=ye(l,o),c=P(ye(i,s),u);if(a){F(r!=null,()=>"When using zeroDebias: true, step is required.");let h=E(r,"step","movingAverage");c=ge(c,ye(l,sa(o,h)))}return se(s,c)}var AC=O({movingAverage_:mC});function yC(e,t,n){let r=E(e,"indices","scatterND","int32"),a=E(t,"updates","scatterND");Cf(a,r,n);let s={indices:r,updates:a},i={shape:n};return $.runKernel(Oo,s,i)}var xx=O({scatterND_:yC});function gC(e,t,n,r){if(e.dtype!=="int32")throw new Error(`tf.sparseToDense() expects the indices to be int32 type, but the dtype was ${e.dtype}.`);if(e.rank>2)throw new Error(`sparseIndices should be a scalar, vector, or matrix, but got shape ${e.shape}.`);let a=e.rank>0?e.shape[0]:1,s=e.rank>1?e.shape[1]:1;if(n.length!==s)throw new Error(`outputShape has incorrect number of elements:, ${n.length}, should be: ${s}.`);let i=t.size;if(!(t.rank===0||t.rank===1&&i===a))throw new Error(`sparseValues has incorrect shape ${t.shape}, should be [] or [${a}]`);if(t.dtype!==r.dtype)throw new Error("sparseValues.dtype must match defaultValues.dtype")}function xC(e,t,n,r=0){let a=E(e,"sparseIndices","sparseToDense","int32"),s=E(t,"sparseValues","sparseToDense"),i=E(r,"defaultValue","sparseToDense",s.dtype);gC(a,s,n,i);let o={sparseIndices:a,sparseValues:s,defaultValue:i},l={outputShape:n};return $.runKernel(Yh,o,l)}var wm=O({sparseToDense_:xC});function wC(e,t){let n=E(t,"indices","gatherND","int32"),r={params:E(e,"x","gatherND"),indices:n};return $.runKernel(Ao,r)}var wx=O({gatherND_:wC});function _C(e,t){if(t==null)return e.shape.slice();if(ta(e.shape,t))return t;if(e.shape.length===t.length){let n=[];for(let r=0;r`x has to be a floating point tensor since it's going to be scaled, but got a ${a.dtype} tensor instead.`),F(t>=0&&t<1,()=>`rate must be a float in the range [0, 1), but got ${t}.`),t===0)return e instanceof Ue?a.clone():a;let s=_C(a,n),i=1-t,o=ge(hl(se(ml(s,0,1,"float32",r),i)),i);return P(a,o)}var _x=O({dropout_:bC});function bx(e){return Math.floor(Math.pow(2,Math.ceil(Math.log(e)/Math.log(2))))}function _m(e,t,n){let r=1-e%2,a=new Float32Array(e);for(let s=0;s1,()=>`inTopK() expects the predictions to be of rank 2 or higher, but got ${r.rank}`),F(r.rank-1===a.rank,()=>`predictions rank should be 1 larger than targets rank, but got predictions rank ${r.rank} and targets rank ${a.rank}`),an(r.shape.slice(0,r.shape.length-1),a.shape,"predictions's shape should be align with the targets' shape, except the last dimension.");let s=r.shape[r.shape.length-1];F(n>0&&n<=s,()=>`'k' passed to inTopK() must be > 0 && <= the predictions last dimension (${s}), but got ${n}`);let i=await r.data(),o=await a.data(),[l,u]=[i.length/s,s],c=zg("bool",l);for(let h=0;hA.value-m.value),c[h]=0;for(let m=0;mNC,depthwiseConv2d:()=>IC,matMul:()=>SC});function TC(e,t,n,r,a,s="NHWC",i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]])),F(o.rank===4,()=>`Error in conv2dDerFilter: input must be rank 4, but got shape ${o.shape}.`),F(l.rank===4,()=>`Error in conv2dDerFilter: dy must be rank 4, but got shape ${l.shape}.`),F(n.length===4,()=>`Error in conv2dDerFilter: filterShape must be length 4, but got ${n}.`);let u=s==="NHWC"?o.shape[3]:o.shape[1],c=s==="NHWC"?l.shape[3]:l.shape[1];F(u===n[2],()=>`Error in conv2dDerFilter: depth of input ${u}) must match input depth in filter (${n[2]}.`),F(c===n[3],()=>`Error in conv2dDerFilter: depth of dy (${c}) must match output depth for filter (${n[3]}).`),i!=null&&F(jt(a),()=>`Error in conv2dDerFilter: pad must be an integer when using, dimRoundingMode ${i} but got pad ${a}.`);let h={x:o,dy:l},d={strides:r,pad:a,dataFormat:s,dimRoundingMode:i,filterShape:n};return $.runKernel(Ch,h,d)}var bm=O({conv2DBackpropFilter_:TC});function Ld(e,t,n){if(n==null||n==="linear")return e;if(n==="relu")return P(e,yl(t));throw new Error(`Cannot compute gradient for fused activation ${n}.`)}function Wd(e,t){let n=t,r=Pt(e.shape,t.shape);return r.length>0&&(n=Te(n,r)),G(n,e.shape)}function Bd(e,t,n,r){if(t==="linear")return e;if(t==="relu")return zr(e);if(t==="elu")return cl(e);if(t==="relu6")return Sd(e);if(t==="prelu")return Xu(e,n);if(t==="leakyrelu")return Hu(e,r);throw new Error(`Unknown fused activation ${t}.`)}var Vd=(e,t)=>!(e>0)||t==="linear";function CC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(l=l||"linear",Vd($.state.gradientDepth,l)===!1){let w=ra(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","conv2d"),d=E(t,"filter","conv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused conv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused conv2d: filter must be rank 4, but got rank ${d.rank}.`),i!=null&&F(jt(r),()=>`Error in fused conv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${r}.`),F(p.shape[3]===d.shape[2],()=>`Error in conv2d: depth of input (${p.shape[3]}) must match input depth for filter ${d.shape[2]}.`),F(Mr(n,s),()=>`Error in conv2D: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),F(a==="NHWC",()=>`Error in conv2d: got dataFormat of ${a} but only NHWC is currently supported.`);let m=Pu(p.shape,d.shape,n,s,r,i),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused conv2d"));let g=(w,x)=>{let[I,S,T,M]=x,D=Ld(w,T,l);F($a(s),()=>`Error in gradient of fused conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`);let z=qf(S.shape,D,I,n,r),W=bm(S,D,I.shape,n,r),U=[z,W];if(M!=null){let H=Wd(M,D);U.push(H)}return U},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ei,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ei,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var NC=O({fusedConv2d_:CC});function EC(e,t,n,r,a,s=[1,1],i){let o=e;e.rank===3&&(o=G(e,[1,e.shape[0],e.shape[1],e.shape[2]]));let l=t;l.rank===3&&(l=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={x:o,dy:l},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,filterShape:n};return $.runKernel(Mh,u,c)}var vx=O({depthwiseConv2dNativeBackpropFilter_:EC});function RC(e,t,n,r,a,s=[1,1],i){let o=t,l=!1;t.rank===3&&(l=!0,o=G(t,[1,t.shape[0],t.shape[1],t.shape[2]]));let u={dy:o,filter:n},c={strides:r,pad:a,dimRoundingMode:i,dilations:s,inputShape:e},h=$.runKernel($h,u,c);return l?G(h,[h.shape[1],h.shape[2],h.shape[3]]):h}var kx=O({depthwiseConv2dNativeBackpropInput_:RC});function FC({x:e,filter:t,strides:n,pad:r,dataFormat:a="NHWC",dilations:s=[1,1],dimRoundingMode:i,bias:o,activation:l="linear",preluActivationWeights:u,leakyreluAlpha:c}){if(Vd($.state.gradientDepth,l)===!1){let w=ul(e,t,n,r,a,s,i);return o!=null&&(w=se(w,o)),Bd(w,l,u,c)}let h=E(e,"x","depthwiseConv2d"),d=E(t,"filter","depthwiseConv2d"),p=h,f=!1;h.rank===3&&(f=!0,p=G(h,[1,h.shape[0],h.shape[1],h.shape[2]])),F(p.rank===4,()=>`Error in fused depthwiseConv2d: input must be rank 4, but got rank ${p.rank}.`),F(d.rank===4,()=>`Error in fused depthwiseConv2d: filter must be rank 4, but got rank ${d.rank}.`),F(p.shape[3]===d.shape[2],()=>`Error in fused depthwiseConv2d: number of input channels (${p.shape[3]}) must match the inChannels dimension in filter ${d.shape[2]}.`),s==null&&(s=[1,1]),F(Mr(n,s),()=>`Error in fused depthwiseConv2d: Either strides or dilations must be 1. Got strides ${n} and dilations '${s}'`),i!=null&&F(jt(r),()=>`Error in fused depthwiseConv2d: pad must be an integer when using dimRoundingMode ${i} but got pad ${r}.`);let m=Pu(p.shape,d.shape,n,s,r,i,!0),A;o!=null&&(A=E(o,"bias","fused conv2d"),[A]=bt(A,h),yt(m.outShape,A.shape));let y;u!=null&&(y=E(u,"prelu weights","fused depthwiseConv2d"));let g=(w,x)=>{F($a(s),()=>`Error in gradient of fused depthwiseConv2d: dilation rates greater than 1 are not yet supported. Got dilations '${s}'`);let[I,S,T,M]=x,D=Ld(w,T,l),z=kx(S.shape,D,I,n,r,s,i),W=vx(S,D,I.shape,n,r,s,i);if(M!=null){let U=Wd(A,D);return[z,W,U]}return[z,W]},_={x:p,filter:d,bias:A,preluActivationWeights:y},b={strides:n,pad:r,dataFormat:a,dilations:s,dimRoundingMode:i,activation:l,leakyreluAlpha:c};return o==null?$r((w,x,I)=>{let S=$.runKernel(ti,_,b);return I([x,w,S]),f&&(S=G(S,[S.shape[1],S.shape[2],S.shape[3]])),{value:S,gradFunc:g}})(p,d):$r((w,x,I,S)=>{let T=$.runKernel(ti,_,b);return S([x,w,T,I]),f&&(T=G(T,[T.shape[1],T.shape[2],T.shape[3]])),{value:T,gradFunc:g}})(p,d,A)}var IC=O({fusedDepthwiseConv2d_:FC});function MC({a:e,b:t,transposeA:n=!1,transposeB:r=!1,bias:a,activation:s="linear",preluActivationWeights:i,leakyreluAlpha:o}){if(Vd($.state.gradientDepth,s)===!1){let M=Ge(e,t,n,r);return a!=null&&(M=se(M,a)),Bd(M,s,i,o)}let l=E(e,"a","fused matMul"),u=E(t,"b","fused matMul");[l,u]=bt(l,u);let c=n?l.shape[l.rank-2]:l.shape[l.rank-1],h=r?u.shape[u.rank-1]:u.shape[u.rank-2],d=n?l.shape[l.rank-1]:l.shape[l.rank-2],p=r?u.shape[u.rank-2]:u.shape[u.rank-1],f=l.shape.slice(0,-2),m=u.shape.slice(0,-2),A=Dt(f),y=Dt(m);F(l.rank>=2&&u.rank>=2&&l.rank===u.rank,()=>`Error in fused matMul: inputs must have the same rank of at least 2, got ranks ${l.rank} and ${u.rank}.`),F(ta(f,m),()=>`Error in fused matMul: outer dimensions (${f}) and (${m}) of Tensors with shapes ${l.shape} and ${u.shape} must match.`),F(c===h,()=>`Error in fused matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${l.shape} and ${u.shape} and transposeA=${n} and transposeB=${r} must match.`);let g=l.shape.slice(0,-2).concat([d,p]),_=n?G(l,[A,c,d]):G(l,[A,d,c]),b=r?G(u,[y,p,h]):G(u,[y,h,p]),w;a!=null&&(w=E(a,"bias","fused matMul"),[w]=bt(w,l),yt(g,w.shape));let x;i!=null&&(x=E(i,"prelu weights","fused matMul"));let I=(M,D)=>{let[z,W,U,H]=D,X=Ld(G(M,U.shape),U,s),j,ee;if(!n&&!r?(j=Ge(X,W,!1,!0),ee=Ge(z,X,!0,!1)):!n&&r?(j=Ge(X,W,!1,!1),ee=Ge(X,z,!0,!1)):n&&!r?(j=Ge(W,X,!1,!0),ee=Ge(z,X,!1,!1)):(j=Ge(W,X,!0,!0),ee=Ge(X,z,!0,!0)),a!=null){let Y=Wd(H,X);return[j,ee,Y]}else return[j,ee]},S={a:_,b,bias:w,preluActivationWeights:x},T={transposeA:n,transposeB:r,activation:s,leakyreluAlpha:o};return a==null?$r((M,D,z)=>{let W=$.runKernel(Qs,S,T);return z([M,D,W]),{value:G(W,g),gradFunc:I}})(_,b):$r((M,D,z,W)=>{let U=$.runKernel(Qs,S,T);return W([M,D,U,z]),{value:G(U,g),gradFunc:I}})(_,b,w)}var SC=O({fusedMatMul_:MC});function $C(e){return _m(e,.54,.46)}var DC=O({hammingWindow_:$C});function OC(e){return _m(e,.5,.5)}var Nx=O({hannWindow_:OC});function zC(e,t,n,r=!1,a=0){let s=0,i=[];for(;s+t<=e.size;)i.push(Re(e,s,t)),s+=n;if(r)for(;s`Error in cropAndResize: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&o.shape[1]===4,()=>`Error in cropAndResize: boxes must be have size [${u},4] but had shape ${o.shape}.`),F(l.rank===1&&l.shape[0]===u,()=>`Error in cropAndResize: boxInd must be have size [${u}] but had shape ${o.shape}.`),F(r.length===2,()=>`Error in cropAndResize: cropSize must be of length 2, but got length ${r.length}.`),F(r[0]>=1&&r[1]>=1,()=>`cropSize must be atleast [1,1], but was ${r}`),F(a==="bilinear"||a==="nearest",()=>`method must be bilinear or nearest, but was ${a}`);let c={image:i,boxes:o,boxInd:l},h={method:a,extrapolationValue:s,cropSize:r};return $.runKernel(io,c,h)}var BC=O({cropAndResize_:WC});function VC(e){let t=E(e,"image","flipLeftRight","float32");F(t.rank===4,()=>`Error in flipLeftRight: image must be rank 4,but got rank ${t.rank}.`);let n={image:t};return $.runKernel(fo,n,{})}var UC=O({flipLeftRight_:VC});function HC(e,t,n=0,r=.5){let a=E(e,"image","rotateWithOffset","float32");F(a.rank===4,()=>`Error in rotateWithOffset: image must be rank 4,but got rank ${a.rank}.`);let s={image:a},i={radians:t,fillValue:n,center:r};return $.runKernel(Ko,s,i)}var jC=O({rotateWithOffset_:HC});function gl(e,t,n,r,a,s){r==null&&(r=.5),a==null&&(a=Number.NEGATIVE_INFINITY),s==null&&(s=0);let i=e.shape[0];return n=Math.min(n,i),F(0<=r&&r<=1,()=>`iouThreshold must be in [0, 1], but was '${r}'`),F(e.rank===2,()=>`boxes must be a 2D tensor, but was of rank '${e.rank}'`),F(e.shape[1]===4,()=>`boxes must have 4 columns, but 2nd dimension was ${e.shape[1]}`),F(t.rank===1,()=>"scores must be a 1D tensor"),F(t.shape[0]===i,()=>`scores has incompatible shape with boxes. Expected ${i}, but was ${t.shape[0]}`),F(0<=s&&s<=1,()=>`softNmsSigma must be in [0, 1], but was '${s}'`),{maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s}}function GC(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppression"),i=E(t,"scores","nonMaxSuppression"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l={maxOutputSize:n,iouThreshold:r,scoreThreshold:a};return $.runKernel(To,{boxes:s,scores:i},l)}var qC=O({nonMaxSuppression_:GC});function KC(e,t,n){let r=XC(e,t,n),a=r<0?-(r+1):r;e.splice(a,0,t)}function XC(e,t,n){return YC(e,t,n||ZC)}function ZC(e,t){return e>t?1:e>>1);let o=n(t,e[s]);o>0?r=s+1:(a=s,i=!o)}return i?r:-r-1}function Sx(e,t,n,r,a){return vm(e,t,n,r,a,0)}function Tx(e,t,n,r,a,s){return vm(e,t,n,r,a,0,!1,s,!0)}function Cx(e,t,n,r,a,s){return vm(e,t,n,r,a,s,!0)}function vm(e,t,n,r,a,s,i=!1,o=!1,l=!1){let u=[];for(let A=0;Aa&&u.push({score:t[A],boxIndex:A,suppressBeginIndex:0});u.sort(Ex);let c=s>0?-.5/s:0,h=[],d=[];for(;h.length0;){let A=u.pop(),{score:y,boxIndex:g,suppressBeginIndex:_}=A;if(y=_;--w){let x=JC(e,g,h[w]);if(x>=r){b=!0;break}if(A.score=A.score*QC(r,c,x),A.score<=a)break}A.suppressBeginIndex=h.length,b||(A.score===y?(h.push(g),d.push(A.score)):A.score>a&&KC(u,A,Ex))}let p=h.length,f=n-p;o&&f>0&&(h.push(...new Array(f).fill(0)),d.push(...new Array(f).fill(0)));let m={selectedIndices:h};return i&&(m.selectedScores=d),l&&(m.validOutputs=p),m}function JC(e,t,n){let r=e.subarray(t*4,t*4+4),a=e.subarray(n*4,n*4+4),s=Math.min(r[0],r[2]),i=Math.min(r[1],r[3]),o=Math.max(r[0],r[2]),l=Math.max(r[1],r[3]),u=Math.min(a[0],a[2]),c=Math.min(a[1],a[3]),h=Math.max(a[0],a[2]),d=Math.max(a[1],a[3]),p=(o-s)*(l-i),f=(h-u)*(d-c);if(p<=0||f<=0)return 0;let m=Math.max(s,u),A=Math.max(i,c),y=Math.min(o,h),g=Math.min(l,d),_=Math.max(y-m,0)*Math.max(g-A,0);return _/(p+f-_)}function QC(e,t,n){let r=Math.exp(t*n*n);return n<=e?r:0}function Ex(e,t){return e.score-t.score||e.score===t.score&&t.boxIndex-e.boxIndex}async function eE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY){let s=E(e,"boxes","nonMaxSuppressionAsync"),i=E(t,"scores","nonMaxSuppressionAsync"),o=gl(s,i,n,r,a);n=o.maxOutputSize,r=o.iouThreshold,a=o.scoreThreshold;let l=await Promise.all([s.data(),i.data()]),u=l[0],c=l[1],{selectedIndices:h}=Sx(u,c,n,r,a);return s!==e&&s.dispose(),i!==t&&i.dispose(),on(h,"int32")}var tE=eE;function nE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u={boxes:i,scores:o},c={maxOutputSize:n,iouThreshold:r,scoreThreshold:a,softNmsSigma:s},h=$.runKernel(Eo,u,c);return{selectedIndices:h[0],selectedScores:h[1]}}var rE=O({nonMaxSuppressionWithScore_:nE});async function aE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=0){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,s);n=l.maxOutputSize,r=l.iouThreshold,a=l.scoreThreshold,s=l.softNmsSigma;let u=await Promise.all([i.data(),o.data()]),c=u[0],h=u[1],{selectedIndices:d,selectedScores:p}=Cx(c,h,n,r,a,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(d,"int32"),selectedScores:on(p)}}var sE=aE;function iE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppression"),o=E(t,"scores","nonMaxSuppression"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,d={boxes:i,scores:o},p={maxOutputSize:u,iouThreshold:c,scoreThreshold:h,padToMaxOutputSize:s},f=$.runKernel(Co,d,p);return{selectedIndices:f[0],validOutputs:f[1]}}var oE=O({nonMaxSuppressionPadded_:iE});async function lE(e,t,n,r=.5,a=Number.NEGATIVE_INFINITY,s=!1){let i=E(e,"boxes","nonMaxSuppressionAsync"),o=E(t,"scores","nonMaxSuppressionAsync"),l=gl(i,o,n,r,a,null),u=l.maxOutputSize,c=l.iouThreshold,h=l.scoreThreshold,[d,p]=await Promise.all([i.data(),o.data()]),{selectedIndices:f,validOutputs:m}=Tx(d,p,u,c,h,s);return i!==e&&i.dispose(),o!==t&&o.dispose(),{selectedIndices:on(f,"int32"),validOutputs:be(m,"int32")}}var uE=lE;function cE(e,t,n=!1,r=!1){let a=E(e,"images","resizeBilinear");F(a.rank===3||a.rank===4,()=>`Error in resizeBilinear: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeBilinear: new shape must 2D, but got shape ${t}.`),F(r===!1||n===!1,()=>"Error in resizeBilinear: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(Ls,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Rx=O({resizeBilinear_:cE});function hE(e,t,n=!1,r=!1){let a=E(e,"images","resizeNearestNeighbor");F(a.rank===3||a.rank===4,()=>`Error in resizeNearestNeighbor: x must be rank 3 or 4, but got rank ${a.rank}.`),F(t.length===2,()=>`Error in resizeNearestNeighbor: new shape must 2D, but got shape ${t}.`),F(a.dtype==="float32"||a.dtype==="int32",()=>"`images` must have `int32` or `float32` as dtype"),F(r===!1||n===!1,()=>"Error in resizeNearestNeighbor: If halfPixelCenters is true, alignCorners must be false.");let s=a,i=!1;a.rank===3&&(i=!0,s=G(a,[1,a.shape[0],a.shape[1],a.shape[2]]));let[]=t,o={images:s},l={alignCorners:n,halfPixelCenters:r,size:t},u=$.runKernel(_u,o,l);return i?G(u,[u.shape[1],u.shape[2],u.shape[3]]):u}var Fx=O({resizeNearestNeighbor_:hE});function dE(e,t,n="nearest",r="constant",a=0,s){let i=E(e,"image","transform","float32"),o=E(t,"transforms","transform","float32");F(i.rank===4,()=>`Error in transform: image must be rank 4,but got rank ${i.rank}.`),F(o.rank===2&&(o.shape[0]===i.shape[0]||o.shape[0]===1)&&o.shape[1]===8,()=>"Error in transform: Input transform should be batch x 8 or 1 x 8"),F(s==null||s.length===2,()=>`Error in transform: outputShape must be [height, width] or null, but got ${s}.`);let l={image:i,transforms:o},u={interpolation:n,fillMode:r,fillValue:a,outputShape:s};return $.runKernel(Jh,l,u)}var pE=O({transform_:dE});function fE(e,t,n){F(t%1==0,()=>`bandPart(): numLower must be an integer, got ${t}.`),F(n%1==0,()=>`bandPart(): numUpper must be an integer, got ${n}.`);let r=E(e,"a","bandPart");F(r.rank>=2,()=>`bandPart(): Rank must be at least 2, got ${r.rank}.`);let a=r.shape,[s,i]=r.shape.slice(-2);if(!(t<=s))throw new Error(`bandPart(): numLower (${t}) must not be greater than the number of rows (${s}).`);if(!(n<=i))throw new Error(`bandPart(): numUpper (${n}) must not be greater than the number of columns (${i}).`);t<0&&(t=s),n<0&&(n=i);let o=G(Id(0,s,1,"int32"),[-1,1]),l=Id(0,i,1,"int32"),u=ye(o,l),c=sr(ci(u,be(+t,"int32")),za(u,be(-n,"int32"))),h=Et([s,i],r.dtype);return G(dn(ir(G(r,[-1,s,i])).map(d=>kn(c,d,h))),a)}var mE=O({bandPart_:fE});function AE(e){let t;if(Array.isArray(e)){t=!1,F(e!=null&&e.length>0,()=>"Gram-Schmidt process: input must not be null, undefined, or empty");let a=e[0].shape[0];for(let s=1;s`Gram-Schmidt: Non-unique lengths found in the input vectors: (${e[s].shape[0]} vs. ${a})`)}else t=!0,e=Lt(e,e.shape[0],0).map(a=>Pa(a,[0]));F(e.length<=e[0].shape[0],()=>`Gram-Schmidt: Number of vectors (${e.length}) exceeds number of dimensions (${e[0].shape[0]}).`);let n=[],r=e;for(let a=0;a{let s=r[a];if(a>0)for(let i=0;i=2,()=>`qr() requires input tensor to have a rank >= 2, but got rank ${e.rank}`),e.rank===2)return Mx(e,t);{let n=e.shape.slice(0,e.shape.length-2).reduce((l,u)=>l*u),r=ir(G(e,[n,e.shape[e.shape.length-2],e.shape[e.shape.length-1]]),0),a=[],s=[];r.forEach(l=>{let[u,c]=Mx(l,t);a.push(u),s.push(c)});let i=G(dn(a,0),e.shape),o=G(dn(s,0),e.shape);return[i,o]}}function Mx(e,t=!1){return $.tidy(()=>{F(e.shape.length===2,()=>`qr2d() requires a 2D Tensor, but got a ${e.shape.length}D Tensor.`);let n=e.shape[0],r=e.shape[1],a=em(n),s=Rr(e),i=Nn([[1]],[1,1]),o=Rr(i),l=n>=r?r:n;for(let u=0;u{let p=Re(s,[u,u],[n-u,1]),f=Pd(p),m=Re(s,[u,u],[1,1]),A=kn(ar(m,0),Nn([[-1]]),Nn([[1]])),y=ye(m,P(A,f)),g=ge(p,y);g.shape[0]===1?o=Rr(i):o=st([i,Re(g,[1,0],[g.shape[0]-1,g.shape[1]])],0);let _=vt(ge(Ge(A,y),f)),b=Re(s,[u,0],[n-u,r]),w=P(_,o),x=at(o);if(u===0)s=ye(b,Ge(w,Ge(x,b)));else{let T=ye(b,Ge(w,Ge(x,b)));s=st([Re(s,[0,0],[u,r]),T],0)}let I=at(w),S=Re(a,[0,u],[n,a.shape[1]-u]);if(u===0)a=ye(S,Ge(Ge(S,o),I));else{let T=ye(S,Ge(Ge(S,o),I));a=st([Re(a,[0,0],[n,u]),T],1)}return[o,s,a]}),Ee([c,h,d])}return!t&&n>r&&(a=Re(a,[0,0],[n,r]),s=Re(s,[0,0],[r,r])),[a,s]})}var xE=O({qr_:gE}),pn;(function(e){e[e.NONE=0]="NONE",e[e.MEAN=1]="MEAN",e[e.SUM=2]="SUM",e[e.SUM_BY_NONZERO_WEIGHTS=3]="SUM_BY_NONZERO_WEIGHTS"})(pn||(pn={}));function wE(e,t,n=pn.SUM_BY_NONZERO_WEIGHTS){let r=E(e,"losses","computeWeightedLoss"),a=null;t!=null&&(a=E(t,"weights","computeWeightedLoss"));let s=a==null?r:P(r,a);if(n===pn.NONE)return s;if(n===pn.SUM)return Te(s);if(n===pn.MEAN){if(a==null)return kt(s);{let i=r.size/a.size,o=ge(Te(s),Te(a));return i>1?ge(o,be(i)):o}}if(n===pn.SUM_BY_NONZERO_WEIGHTS){if(a==null)return ge(Te(s),be(r.size));{let i=P(a,Or(r.shape)),o=me(Te(di(i,be(0))),"float32");return ge(Te(s),o)}}throw Error(`Unknown reduction: ${n}`)}var ia=O({computeWeightedLoss_:wE});function _E(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","absoluteDifference"),s=E(t,"predictions","absoluteDifference"),i=null;n!=null&&(i=E(n,"weights","absoluteDifference")),an(a.shape,s.shape,"Error in absoluteDifference: ");let o=zt(ye(a,s));return ia(o,i,r)}var bE=O({absoluteDifference_:_E});function vE(e,t,n,r,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","cosineDistance"),i=E(t,"predictions","cosineDistance"),o=null;r!=null&&(o=E(r,"weights","cosineDistance")),an(s.shape,i.shape,"Error in cosineDistance: ");let l=be(1),u=ye(l,Te(P(s,i),n,!0));return ia(u,o,a)}var kE=O({cosineDistance_:vE});function NE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","hingeLoss"),s=E(t,"predictions","hingeLoss"),i=null;n!=null&&(i=E(n,"weights","hingeLoss")),an(a.shape,s.shape,"Error in hingeLoss: ");let o=be(1);a=ye(P(be(2),a),o);let l=zr(ye(o,P(a,s)));return ia(l,i,r)}var IE=O({hingeLoss_:NE});function SE(e,t,n,r=1,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","huberLoss"),i=E(t,"predictions","huberLoss"),o=null;n!=null&&(o=E(n,"weights","huberLoss")),an(s.shape,i.shape,"Error in huberLoss: ");let l=be(r),u=zt(ye(i,s)),c=fl(u,l),h=ye(u,c),d=se(P(be(.5),lt(c)),P(l,h));return ia(d,o,a)}var TE=O({huberLoss_:SE});function CE(e,t,n,r=1e-7,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"labels","logLoss"),i=E(t,"predictions","logLoss"),o=null;n!=null&&(o=E(n,"weights","logLoss")),an(s.shape,i.shape,"Error in logLoss: ");let l=be(1),u=be(r),c=vt(P(s,Mn(se(i,u)))),h=P(ye(l,s),Mn(se(ye(l,i),u))),d=ye(c,h);return ia(d,o,a)}var EE=O({logLoss_:CE});function RE(e,t,n,r=pn.SUM_BY_NONZERO_WEIGHTS){let a=E(e,"labels","meanSquaredError"),s=E(t,"predictions","meanSquaredError"),i=null;n!=null&&(i=E(n,"weights","meanSquaredError")),an(a.shape,s.shape,"Error in meanSquaredError: ");let o=Dd(a,s);return ia(o,i,r)}var FE=O({meanSquaredError_:RE});function ME(e,t){let n=E(e,"labels","sigmoidCrossEntropyWithLogits"),r=E(t,"logits","sigmoidCrossEntropyWithLogits");an(n.shape,r.shape,"Error in sigmoidCrossEntropyWithLogits: ");let a=zr(r),s=P(r,n),i=wd(qn(vt(zt(r))));return se(ye(a,s),i)}function $E(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"multiClassLabels","sigmoidCrossEntropy"),i=E(t,"logits","sigmoidCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","sigmoidCrossEntropy")),an(s.shape,i.shape,"Error in sigmoidCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(.5);s=se(P(s,ye(c,u)),P(h,u))}let l=ME(s,i);return ia(l,o,a)}var DE=O({sigmoidCrossEntropy_:$E});function OE(e,t,n=-1){if(n===-1&&(n=t.rank-1),n!==t.rank-1)throw Error(`Softmax cross entropy along a non-last dimension is not yet supported. Labels / logits was rank ${t.rank} and dim was ${n}`);return $r((r,a,s)=>{let i=am(a,[n],!0),o=ye(me(a,"float32"),i);s([r,o]);let l=vt(P(o,r));return{value:Te(l,[n]),gradFunc:(u,c)=>{let[h,d]=c,p=hi(u.shape,[n]);return[P(G(u,p),ye(me(h,"float32"),qn(d))),P(G(u,p),ye(qn(d),me(h,"float32")))]}}})(e,t)}function zE(e,t,n,r=0,a=pn.SUM_BY_NONZERO_WEIGHTS){let s=E(e,"onehotLabels","softmaxCrossEntropy"),i=E(t,"logits","softmaxCrossEntropy"),o=null;if(n!=null&&(o=E(n,"weights","softmaxCrossEntropy")),an(s.shape,i.shape,"Error in softmaxCrossEntropy: "),r>0){let u=be(r),c=be(1),h=be(s.shape[1]);s=se(P(s,ye(c,u)),ge(u,h))}let l=OE(s,i);return ia(l,o,a)}var PE=O({softmaxCrossEntropy_:zE}),LE={fft:Ju,ifft:Al,rfft:Qu,irfft:$d},WE={hammingWindow:DC,hannWindow:Nx,frame:Ix,stft:LC},Je={flipLeftRight:UC,resizeNearestNeighbor:Fx,resizeBilinear:Rx,rotateWithOffset:jC,cropAndResize:BC,nonMaxSuppression:qC,nonMaxSuppressionAsync:tE,nonMaxSuppressionWithScore:rE,nonMaxSuppressionWithScoreAsync:sE,nonMaxSuppressionPadded:oE,nonMaxSuppressionPaddedAsync:uE,transform:pE},$x={bandPart:mE,gramSchmidt:yE,qr:xE},BE={absoluteDifference:bE,computeWeightedLoss:ia,cosineDistance:kE,hingeLoss:IE,huberLoss:TE,logLoss:EE,meanSquaredError:FE,sigmoidCrossEntropy:DE,softmaxCrossEntropy:PE},oa=class extends z5{minimize(e,t=!1,n){let{value:r,grads:a}=this.computeGradients(e,n);if(n!=null){let s=n.map(i=>({name:i.name,tensor:a[i.name]}));this.applyGradients(s)}else this.applyGradients(a);return Ee(a),t?r:(r.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return sx(e,t)}dispose(){this.iterations_!=null&&Ee(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:be(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(oa,Symbol.hasInstance,{value:e=>e.minimize!=null&&e.computeGradients!=null&&e.applyGradients!=null});var Ud=class extends oa{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedGrads[n]==null&&(this.accumulatedGrads[n]={originalName:`${t}/accum_grad`,variable:B(()=>He(r).variable(a))}),this.accumulatedUpdates[n]==null&&(this.accumulatedUpdates[n]={originalName:`${t}/accum_var`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedGrads[n].variable,o=this.accumulatedUpdates[n].variable;B(()=>{let l=se(P(i,this.rho),P(lt(s),1-this.rho)),u=P(ge(en(se(o,this.epsilon)),en(se(i,this.epsilon))),s),c=se(P(o,this.rho),P(lt(u),1-this.rho));i.assign(l),o.assign(c);let h=se(P(u,-this.learningRate),r);r.assign(h)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=null&&(Ee(this.accumulatedGrads.map(e=>e.variable)),Ee(this.accumulatedUpdates.map(e=>e.variable)))}async getWeights(){let e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=e.length/2,n=!1;this.accumulatedGrads=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedUpdates=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}};Ud.className="Adadelta";Fa(Ud);var Hd=class extends oa{constructor(e,t=.1){super();this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulatedGrads[n]==null){let i=!1;this.accumulatedGrads[n]={originalName:`${t}/accumulator`,variable:B(()=>Uu(r.shape,this.initialAccumulatorValue).variable(i))}}let a=Array.isArray(e)?e[n].tensor:e[t];if(a==null)return;let s=this.accumulatedGrads[n].variable;B(()=>{let i=se(s,lt(a));s.assign(i);let o=se(P(ge(a,en(se(i,$.backend.epsilon()))),-this.learningRate),r);r.assign(o)})}),this.incrementIterations()}dispose(){this.accumulatedGrads!=null&&Ee(this.accumulatedGrads.map(e=>e.variable))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulatedGrads=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}};Hd.className="Adagrad";Fa(Hd);var jd=class extends oa{constructor(e,t,n,r=null){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],B(()=>{this.accBeta1=be(t).variable(),this.accBeta2=be(n).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ye(1,this.accBeta2);t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:B(()=>He(i).variable(o))}),this.accumulatedSecondMoment[s]==null&&(this.accumulatedSecondMoment[s]={originalName:`${a}/v`,variable:B(()=>He(i).variable(o))});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedSecondMoment[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=se(P(c,this.beta2),P(lt(l),1-this.beta2)),p=ge(h,n),f=ge(d,r);u.assign(h),c.assign(d);let m=se(P(ge(p,se(en(f),this.epsilon)),-this.learningRate),i);i.assign(m)}),this.accBeta1.assign(P(this.accBeta1,this.beta1)),this.accBeta2.assign(P(this.accBeta2,this.beta2))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedSecondMoment!=null&&Ee(this.accumulatedSecondMoment.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e),B(()=>{this.accBeta1.assign(sa(this.beta1,this.iterations_+1)),this.accBeta2.assign(sa(this.beta2,this.iterations_+1))});let t=e.length/2,n=!1;this.accumulatedFirstMoment=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedSecondMoment=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)}))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}};jd.className="Adam";Fa(jd);var Gd=class extends oa{constructor(e,t,n,r=null,a=0){super();this.learningRate=e,this.beta1=t,this.beta2=n,this.epsilon=r,this.decay=a,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],B(()=>{this.iteration=be(0).variable(),this.accBeta1=be(t).variable()}),r==null&&(this.epsilon=$.backend.epsilon())}applyGradients(e){let t=Array.isArray(e)?e.map(n=>n.name):Object.keys(e);B(()=>{let n=ye(1,this.accBeta1),r=ge(-this.learningRate,se(P(this.iteration,this.decay),1));t.forEach((a,s)=>{let i=$.registeredVariables[a],o=!1;this.accumulatedFirstMoment[s]==null&&(this.accumulatedFirstMoment[s]={originalName:`${a}/m`,variable:He(i).variable(o)}),this.accumulatedWeightedInfNorm[s]==null&&(this.accumulatedWeightedInfNorm[s]={originalName:`${a}/v`,variable:He(i).variable(o)});let l=Array.isArray(e)?e[s].tensor:e[a];if(l==null)return;let u=this.accumulatedFirstMoment[s].variable,c=this.accumulatedWeightedInfNorm[s].variable,h=se(P(u,this.beta1),P(l,1-this.beta1)),d=P(c,this.beta2),p=zt(l),f=Dr(d,p);u.assign(h),c.assign(f);let m=se(P(ge(r,n),ge(h,se(f,this.epsilon))),i);i.assign(m)}),this.iteration.assign(se(this.iteration,1)),this.accBeta1.assign(P(this.accBeta1,this.beta1))}),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),this.accumulatedFirstMoment!=null&&Ee(this.accumulatedFirstMoment.map(e=>e.variable)),this.accumulatedWeightedInfNorm!=null&&Ee(this.accumulatedWeightedInfNorm.map(e=>e.variable))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}};Gd.className="Adamax";Fa(Gd);var ec=class extends oa{constructor(e){super();this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=Array.isArray(e)?e[n].tensor:e[t];if(r==null)return;let a=$.registeredVariables[t];B(()=>{let s=se(P(this.c,r),a);a.assign(s)})}),this.incrementIterations()}setLearningRate(e){this.learningRate=e,this.c!=null&&this.c.dispose(),this.c=Gt(be(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(e=await this.extractIterations(e),e.length!==0)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}};ec.className="SGD";Fa(ec);var qd=class extends ec{constructor(e,t,n=!1){super(e);this.learningRate=e,this.momentum=t,this.useNesterov=n,this.accumulations=[],this.m=be(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t];if(this.accumulations[n]==null){let i=!1;this.accumulations[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(i))}}let a=this.accumulations[n].variable,s=Array.isArray(e)?e[n].tensor:e[t];s!=null&&B(()=>{let i,o=se(P(this.m,a),s);this.useNesterov?i=se(P(this.c,se(s,P(o,this.m))),r):i=se(P(this.c,o),r),a.assign(o),r.assign(i)})}),this.incrementIterations()}dispose(){this.m.dispose(),this.accumulations!=null&&Ee(this.accumulations.map(e=>e.variable))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map(e=>({name:e.originalName,tensor:e.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=!1;this.accumulations=e.map(n=>({originalName:n.name,variable:n.tensor.variable(t)}))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}};qd.className="Momentum";Fa(qd);var Xd=class extends oa{constructor(e,t=.9,n=0,r=null,a=!1){super();if(this.learningRate=e,this.decay=t,this.momentum=n,this.epsilon=r,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=a,r==null&&(this.epsilon=$.backend.epsilon()),e==null)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map(t=>t.name):Object.keys(e)).forEach((t,n)=>{let r=$.registeredVariables[t],a=!1;this.accumulatedMeanSquares[n]==null&&(this.accumulatedMeanSquares[n]={originalName:`${t}/rms`,variable:B(()=>He(r).variable(a))}),this.accumulatedMoments[n]==null&&(this.accumulatedMoments[n]={originalName:`${t}/momentum`,variable:B(()=>He(r).variable(a))}),this.accumulatedMeanGrads[n]==null&&this.centered&&(this.accumulatedMeanGrads[n]={originalName:`${t}/mg`,variable:B(()=>He(r).variable(a))});let s=Array.isArray(e)?e[n].tensor:e[t];if(s==null)return;let i=this.accumulatedMeanSquares[n].variable,o=this.accumulatedMoments[n].variable;B(()=>{let l=se(P(i,this.decay),P(lt(s),1-this.decay));if(this.centered){let u=this.accumulatedMeanGrads[n].variable,c=se(P(u,this.decay),P(s,1-this.decay)),h=ge(P(s,this.learningRate),en(ye(l,se(lt(c),this.epsilon)))),d=se(P(o,this.momentum),h);i.assign(l),u.assign(c),o.assign(d);let p=ye(r,d);r.assign(p)}else{let u=se(P(i,this.decay),P(lt(s),1-this.decay)),c=se(P(o,this.momentum),ge(P(s,this.learningRate),en(se(u,this.epsilon))));i.assign(u),o.assign(c);let h=ye(r,c);r.assign(h)}})}),this.incrementIterations()}dispose(){this.accumulatedMeanSquares!=null&&Ee(this.accumulatedMeanSquares.map(e=>e.variable)),this.accumulatedMeanGrads!=null&&this.centered&&Ee(this.accumulatedMeanGrads.map(e=>e.variable)),this.accumulatedMoments!=null&&Ee(this.accumulatedMoments.map(e=>e.variable))}async getWeights(){let e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map(t=>({name:t.originalName,tensor:t.variable})))}async setWeights(e){e=await this.extractIterations(e);let t=this.centered?e.length/3:e.length/2,n=!1;this.accumulatedMeanSquares=e.slice(0,t).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.accumulatedMoments=e.slice(t,t*2).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})),this.centered&&(this.accumulatedMeanGrads=e.slice(t*2,t*3).map(r=>({originalName:r.name,variable:r.tensor.variable(n)})))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}};Xd.className="RMSProp";Fa(Xd);var pi=class{static sgd(e){return new ec(e)}static momentum(e,t,n=!1){return new qd(e,t,n)}static rmsprop(e,t=.9,n=0,r=null,a=!1){return new Xd(e,t,n,r,a)}static adam(e=.001,t=.9,n=.999,r=null){return new jd(e,t,n,r)}static adadelta(e=.001,t=.95,n=null){return new Ud(e,t,n)}static adamax(e=.002,t=.9,n=.999,r=null,a=0){return new Gd(e,t,n,r,a)}static adagrad(e,t=.1){return new Hd(e,t)}},fi={sgd:pi.sgd,momentum:pi.momentum,adadelta:pi.adadelta,adagrad:pi.adagrad,rmsprop:pi.rmsprop,adamax:pi.adamax,adam:pi.adam},VE=(()=>typeof requestAnimationFrame!="undefined"?requestAnimationFrame:typeof setImmediate!="undefined"?setImmediate:e=>e())();function Kd(){return new Promise(e=>VE(()=>e()))}var R={};ze(R,{ERF_A1:()=>QE,ERF_A2:()=>eR,ERF_A3:()=>tR,ERF_A4:()=>nR,ERF_A5:()=>rR,ERF_P:()=>JE,PARALLELIZE_THRESHOLD:()=>km,SELU_SCALE:()=>Ox,SELU_SCALEALPHA:()=>Dx,applyActivation:()=>Bd,assertAndGetBroadcastShape:()=>yt,assertAxesAreInnerMostDims:()=>kS,assertParamsConsistent:()=>UE,assignToTypedArray:()=>hR,axesAreInnerMostDims:()=>nm,calculateShapes:()=>N5,combineLocations:()=>ox,complexWithEvenIndex:()=>lR,complexWithOddIndex:()=>uR,computeConv2DInfo:()=>Pu,computeConv3DInfo:()=>H5,computeDefaultPad:()=>Hf,computeDilation2DInfo:()=>XN,computeOptimalWindowSize:()=>jE,computeOutAndReduceShapes:()=>lx,computeOutShape:()=>HE,computePool2DInfo:()=>U5,computePool3DInfo:()=>KN,convertConv2DDataFormat:()=>V5,eitherStridesOrDilationsAreOne:()=>Mr,expandShapeToKeepDim:()=>hi,exponent:()=>pR,exponents:()=>dR,fromStringArrayToUint8:()=>AR,fromUint8ToStringArray:()=>mR,getAxesPermutation:()=>ux,getBroadcastDims:()=>WI,getComplexWithIndex:()=>cR,getFusedBiasGradient:()=>Wd,getFusedDyActivation:()=>Ld,getImageCenter:()=>GE,getInnerMostAxes:()=>NS,getPermuted:()=>XE,getReductionAxes:()=>Pt,getReshaped:()=>qE,getReshapedPermuted:()=>KE,getSliceBeginCoords:()=>ZE,getSliceSize:()=>YE,getUndoAxesPermutation:()=>rm,log:()=>sR,mergeRealAndImagArrays:()=>iR,prepareAndValidate:()=>k5,prepareSplitSize:()=>fR,segment_util:()=>zx,shouldFuse:()=>Vd,slice_util:()=>cn,splitRealAndImagArrays:()=>oR,tupleValuesAreOne:()=>$a,upcastType:()=>rr,validateInput:()=>Cf,validateUpdateShape:()=>Tf,warn:()=>aR});function UE(e,t){let n=e[0].length;e.forEach((a,s)=>{F(a.length===n,()=>`Error in concat${n}D: rank of tensors[${s}] must be the same as the rank of the rest (${n})`)}),F(t>=0&&t`Error in concat${n}D: axis must be between 0 and ${n-1}.`);let r=e[0];e.forEach((a,s)=>{for(let i=0;i`Error in concat${n}D: Shape of tensors[${s}] (${a}) does not match the shape of the rest (${r}) along the non-concatenated axis ${s}.`)})}function HE(e,t){let n=e[0].slice();for(let r=1;r=t*2+1||i%2==1?s.push(i):a.push(i);r.push(...a),r.push(0),r.push(...s)}return r}function KE(e,t,n,r=!0){let a=[];r?a.push(e[0]/n):a.push(e[0]*n);for(let s=1;s"Number of splits must evenly divide the axis."),r=new Array(t).fill(e.shape[n]/t);else{let a=t.reduce((i,o)=>(o===-1&&(i+=1),i),0);F(a<=1,()=>"There should be only one negative value in split array.");let s=t.indexOf(-1);if(s!==-1){let i=t.reduce((o,l)=>l>0?o+l:o);t[s]=e.shape[n]-i}F(e.shape[n]===t.reduce((i,o)=>i+o),()=>"The sum of sizes must match the size of the axis dimension."),r=t}return r}var zx={};ze(zx,{collectGatherOpShapeInfo:()=>xR,computeOutShape:()=>gR,segOpComputeOptimalWindowSize:()=>yR});function yR(e,t){let n=!1,r;for(e<=km?(r=e,n=!0):r=_h(e,Math.floor(Math.sqrt(e)));!n;)r>t||r===e?n=!0:r=_h(e,r+1);return r}function gR(e,t,n){let r=[],a=e.length;for(let s=0;sa))throw new Error(`Expect batchDims in the range of [-${a}, ${a}], but got ${r}`);if(r<0&&(r+=a),r>s)throw new Error(`batchDims (${r}) must be less than rank(x) ( + ${s}).`);if(nrd(t))}catch(t){throw new Error(`Failed to decode encoded string bytes into utf-8, error: ${t}`)}}function AR(e){return e.map(t=>Su(t))}var Pr={};ze(Pr,{nonMaxSuppressionV3Impl:()=>Sx,nonMaxSuppressionV4Impl:()=>Tx,nonMaxSuppressionV5Impl:()=>Cx,whereImpl:()=>yx});function _e(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the CPU backend.`)})}var wR=Pr.whereImpl,Zd=class extends su{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new xh(this,Fr())}nextDataId(){return Zd.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,J().get("IS_NODE")&&R.warn(` ============================ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To speed things up dramatically, install our node backend, which binds to TensorFlow C++, by running npm i @tensorflow/tfjs-node, or npm i @tensorflow/tfjs-node-gpu if you have CUDA. Then call require('@tensorflow/tfjs-node'); (-gpu suffix for CUDA) at the start of your program. Visit https://github.com/tensorflow/tfjs-node for more details. -============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Fr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){_e([e],"where");let t=this.readSync(e.dataId);return xR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};Zd.nextDataId=0;var Nm={};ze(Nm,{addImpl:()=>Px,bincountImpl:()=>Im,bincountReduceImpl:()=>Lx,ceilImpl:()=>Wx,concatImpl:()=>Sm,expImpl:()=>Bx,expm1Impl:()=>Vx,floorImpl:()=>Ux,gatherV2Impl:()=>Hx,greaterImpl:()=>jx,lessImpl:()=>Gx,linSpaceImpl:()=>qx,logImpl:()=>Xx,maxImpl:()=>Kx,maximumImpl:()=>Zx,minimumImpl:()=>Yx,multiplyImpl:()=>Tm,negImpl:()=>Jx,notEqualImpl:()=>Qx,prodImpl:()=>ew,rangeImpl:()=>Em,rsqrtImpl:()=>tw,simpleAbsImpl:()=>zx,sliceImpl:()=>Yd,squaredDifferenceImpl:()=>nw,stridedSliceImpl:()=>rw,subImpl:()=>aw,tileImpl:()=>sw,topKImpl:()=>iw,transposeImpl:()=>Cm,uniqueImpl:()=>ow});function zx(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;_e(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=zx(a),n.makeOutput(r,t.shape,"float32")},_R={kernelName:Zi,backendName:"cpu",kernelFunc:wR};function Rt(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),u=v.sizeFromShape(i),c=v.getTypedArrayFromDType(s,u),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;y_[I]=0);let b=v.locToIndex(_,h,p),w=g.slice(-d);A.forEach(I=>w[I]=0);let x=v.locToIndex(w,d,f);c[y]=e(r[b],a[x])}return[c,i]}}function On(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var bR={kernelName:Th,backendName:"cpu",kernelFunc:On};function Jd(e,t,n="float32"){if(n==="complex64"){let a=Jd(e,t,"float32"),s=Jd(e,t,"float32");return On({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function Lr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var vR={kernelName:ks,backendName:"cpu",kernelFunc:Lr};function mi(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var kR={kernelName:Xh,backendName:"cpu",kernelFunc:mi};function Wa(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Lr({inputs:{x:a},backend:n});let i=Jd(n,a.shape,a.dtype),o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=On({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=mi({inputs:{input:a},backend:n}),o=Wa({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Lr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,u]=Rt((c,h)=>c!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(u,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var NR={kernelName:hs,backendName:"cpu",kernelFunc:Wa};function qt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;_e([i,o],e);let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let u=Wa({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),h=c.complexTensorInfos.real,d=c.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Wa({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,_=l.data.get(y.dataId).values,b=l.data.get(g.dataId).values,[w,x,I]=n(i.shape,o.shape,p,f,_,b),S=l.makeTensorInfo(I,"float32",w),T=l.makeTensorInfo(I,"float32",x),M=On({inputs:{real:S,imag:T},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(S),l.disposeIntermediateTensorInfo(T),M}else{let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}}}function Rm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),u=o.length,c=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),_=n.length,b=v.computeStrides(n);if(p.length+f.length===0)for(let w=0;wI[z]=0);let S=v.locToIndex(I,y,g),T=x.slice(-_);f.forEach(z=>T[z]=0);let M=v.locToIndex(T,_,b),D=e(m[S*2],m[S*2+1],A[M*2],A[M*2+1]);h[w]=D.real,d[w]=D.imag}return[h,d,o]}}var Px=Rt((e,t)=>e+t),IR=Rm((e,t,n,r)=>({real:e+n,imag:t+r})),tc=qt(Na,Px,IR),SR={kernelName:Na,backendName:"cpu",kernelFunc:tc};function Im(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function Lx(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=We([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,u):t.size>0?i.set(i.get(o,u)+t.get(o,l),o,u):i.set(i.get(o,u)+1,o,u))}return i}function xl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=v.sizeFromShape(i.shape),c=n||i.dtype,h=v.getArrayFromDType(c,u);for(let d=0;d{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=n||i.dtype,c=t(l,u,a);return o.makeTensorInfo(i.shape,u,c)}}var Wx=xl(e=>Math.ceil(e)),TR=wl(ds,Wx),CR={kernelName:ds,backendName:"cpu",kernelFunc:TR};function Sm(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let u=0;uMath.exp(e)),lw=wl(xs,Bx),ER={kernelName:xs,backendName:"cpu",kernelFunc:lw},Vx=xl(e=>Math.expm1(e)),RR=wl(po,Vx),FR={kernelName:po,backendName:"cpu",kernelFunc:RR},Ux=xl(e=>Math.floor(e)),MR=wl(ws,Ux),$R={kernelName:ws,backendName:"cpu",kernelFunc:MR};function Hx(e,t,n){let r=We(n,e.dtype);for(let a=0;ae>t?1:0),DR=qt(yo,jx,null,"bool"),OR={kernelName:yo,backendName:"cpu",kernelFunc:DR},Gx=Rt((e,t)=>eMath.log(e)),LR=wl(Is,Xx),WR={kernelName:Is,backendName:"cpu",kernelFunc:LR};function Kx(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=u)}a[s]=o}return a}var Zx=Rt((e,t)=>Math.max(e,t)),BR=qt(Ts,Zx),VR={kernelName:Ts,backendName:"cpu",kernelFunc:BR},Yx=Rt((e,t)=>Math.min(e,t)),UR=qt(Fs,Yx),HR={kernelName:Fs,backendName:"cpu",kernelFunc:UR},Tm=Rt((e,t)=>e*t),jR=Rm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Fm=qt(Ms,Tm,jR),GR={kernelName:Ms,backendName:"cpu",kernelFunc:Fm};function Jx(e,t,n){let r=v.createScalarValue(-1,n);return Tm([],t,r,e,n)}function qR(e){let{inputs:t,backend:n}=e,{x:r}=t;_e(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=Jx(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var XR={kernelName:Io,backendName:"cpu",kernelFunc:qR},Qx=Rt((e,t)=>e!==t?1:0),KR=qt(So,Qx,null,"bool"),ZR={kernelName:So,backendName:"cpu",kernelFunc:KR};function Cm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),u=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let c=0;cn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var QR={kernelName:Mo,backendName:"cpu",kernelFunc:JR};function Em(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),eF=wl(Us,tw),tF={kernelName:Us,backendName:"cpu",kernelFunc:eF};function Yd(e,t,n,r,a){let s=cn.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=cn.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,u=We(r,a,l),c=We(n,a);for(let h=0;hf+t[m]);c.set(u.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(c.values):c.values}function Ai(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;_e(a,"slice");let[o,l]=cn.parseSliceParams(a,s,i);cn.assertParamsValid(a,o,l);let u=n.data.get(a.dataId).values,c=Yd(u,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,c)}var nF={kernelName:Lo,backendName:"cpu",kernelFunc:Ai},nw=Rt((e,t)=>{let n=e-t;return n*n}),rF=qt(Ks,nw),aF={kernelName:Ks,backendName:"cpu",kernelFunc:rF};function rw(e,t,n,r){let a=We(e,t.dtype);for(let s=0;se-t),sF=Rm((e,t,n,r)=>({real:e-n,imag:t-r})),Mm=qt(Zs,aw,sF),iF={kernelName:Zs,backendName:"cpu",kernelFunc:Mm};function sw(e,t){let n=new Array(e.rank);for(let a=0;a_.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=u.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew Zd,1);var cw=it(lo,e=>e>=0?e:Math.exp(e)-1),oF={kernelName:lo,backendName:"cpu",kernelFunc:cw};function hw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;_e([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let u=0;ue<0?t*e:e);function dw(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;_e([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=uF(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var cF={kernelName:zs,backendName:"cpu",kernelFunc:dw},pw=it(Ps,e=>Math.max(0,e)),hF={kernelName:Ps,backendName:"cpu",kernelFunc:pw},fw=it(Ws,e=>Math.min(Math.max(0,e),6)),dF={kernelName:Ws,backendName:"cpu",kernelFunc:fw};function $m(e,t,n,r,a){if(n==="linear")return Lr({inputs:{x:t},backend:e});if(n==="relu")return pw({inputs:{x:t},backend:e});if(n==="elu")return cw({inputs:{x:t},backend:e});if(n==="relu6")return fw({inputs:{x:t},backend:e});if(n==="prelu")return dw({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return hw({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function gt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let u=n.data.get(a.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,h=u.complexTensorInfos.imag;c.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var pF={kernelName:Do,backendName:"cpu",kernelFunc:gt};function mw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;_e([a,s],"matMul");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=gt({inputs:{x:a},backend:n,attrs:{shape:b}}),I=gt({inputs:{x:s},backend:n,attrs:{shape:w}}),S=i?x.shape[1]:x.shape[2],T=i?x.shape[2]:x.shape[1],M=o?I.shape[1]:I.shape[2],D=Math.max(A,y),z=n.data.get(x.dataId).values,W=n.data.get(I.dataId).values,U=v.computeStrides(x.shape),H=v.computeStrides(I.shape),[X,j,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,ae,te]=o?[1,H[1],H[0]]:[H[1],1,H[0]],ie=T*M,Q=We([D,T,M],x.dtype),he=Q.values,oe=n.blockSize;for(let fe=0;feMath.acos(e)),gF={kernelName:Yi,backendName:"cpu",kernelFunc:yF},xF=it(Ji,e=>Math.acosh(e)),wF={kernelName:Ji,backendName:"cpu",kernelFunc:xF};function _F(e){let{inputs:t,backend:n}=e,r=t;_e(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=We(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=w,_=b)}p[A]=_}return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var TF={kernelName:ls,backendName:"cpu",kernelFunc:SF};function CF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;_e(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=or({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[c,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(c),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var EF={kernelName:lu,backendName:"cpu",kernelFunc:CF},RF=it(Qi,e=>Math.asin(e)),FF={kernelName:Qi,backendName:"cpu",kernelFunc:RF},MF=it(eo,e=>Math.asinh(e)),$F={kernelName:eo,backendName:"cpu",kernelFunc:MF},DF=it(to,e=>Math.atan(e)),OF={kernelName:to,backendName:"cpu",kernelFunc:DF},zF=Rt((e,t)=>Math.atan2(e,t)),PF=qt(ro,zF),LF={kernelName:ro,backendName:"cpu",kernelFunc:PF},WF=it(no,e=>Math.atanh(e)),BF={kernelName:no,backendName:"cpu",kernelFunc:WF};function Dm(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,u=a.dilationWidth,c=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=We(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],_=a.outShape[3];for(let b=0;bj?j=oe:s==="avg"&&(ee+=oe,Y++)}if(isNaN(j))break}let ae=z+W*_+I;A[ae]=s==="avg"?ee/Y:j}}}return m}function Aw(e,t,n,r,a=!1,s=!1){let i=We(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=We(t,n,e);for(let A=0;AM&&(M=X,a?D=s?((A*r.inHeight+z)*r.inWidth+U)*r.inChannels+y:(z*r.inWidth+U)*r.inChannels+y:D=W*d+H)}}i.set(D,A,g,x,y)}}return i}function yw(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,u=a.dilationDepth,c=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,_=We(a.outShape,n),b=_.values,w=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],I=a.outShape[3]*a.outShape[4],S=a.outShape[4];for(let T=0;Tke?ke=Be:s==="avg"&&(Ie+=Be,Me++),isNaN(ke))break}if(isNaN(ke))break}if(isNaN(ke))break}let Oe=pe+z;b[Oe]=s==="avg"?Ie/Me:ke}}}}return _}function VF(e,t){let n=We(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,u=t.effectiveFilterDepth,c=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=W&&(W=te,U=X*c*h+ee*c+ae)}}}n.set(U,m,y,w,T,A)}}}return n}function UF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;_e(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"avg");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var HF={kernelName:us,backendName:"cpu",kernelFunc:UF};function jF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"avgPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=yw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var GF={kernelName:uu,backendName:"cpu",kernelFunc:jF};function qF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"avgPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=c.strideDepth,d=c.strideHeight,p=c.strideWidth,f=c.filterDepth,m=c.filterHeight,A=c.filterWidth,y=c.dilationDepth,g=c.dilationHeight,_=c.dilationWidth,b=c.effectiveFilterDepth,w=c.effectiveFilterHeight,x=c.effectiveFilterWidth,I=b-1-c.padInfo.front,S=x-1-c.padInfo.left,T=w-1-c.padInfo.top,M=We(s.shape,"float32"),D=1/(f*m*A),z=n.bufferSync(a);for(let W=0;W=c.outDepth||Math.floor(Q)!==Q))for(let he=0;he=c.outHeight||Math.floor(oe)!==oe))for(let fe=0;fe=c.outWidth||Math.floor(pe)!==pe||(te+=z.get(W,Q,oe,pe,U))}}}M.set(te*D,W,H,X,j,U)}return n.makeTensorInfo(M.shape,M.dtype,M.values)}var XF={kernelName:Ih,backendName:"cpu",kernelFunc:qF};function KF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;_e([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,A=c.dilationWidth,y=c.effectiveFilterHeight,g=c.effectiveFilterWidth,_=g-1-c.padInfo.left,b=y-1-c.padInfo.top,w=We(i.shape,"float32"),x=1/(p*f),I=n.data.get(a.dataId).values,S=We(a.shape,"float32",I);for(let T=0;T=c.outHeight||Math.floor(j)!==j))for(let ee=0;ee=c.outWidth||Math.floor(Y)!==Y||(H+=S.get(T,j,Y,M))}}w.set(H*x,T,D,z,M)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var ZF={kernelName:Nh,backendName:"cpu",kernelFunc:KF};function YF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),_e([a,o,l,s,i],"batchNorm");let{varianceEpsilon:u}=r;u==null&&(u=.001);let c=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),A=f.length,y=p.length,g=d.length,_=h.length,b=0,w=0,x=0,I=0;for(let S=0;S=A&&(b=0),w>=_&&(w=0),x>=y&&(x=0),I>=g&&(I=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var JF={kernelName:bs,backendName:"cpu",kernelFunc:YF};function QF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;_e([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=gt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=or({inputs:{x:p},backend:n,attrs:{perm:u}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Ai({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var eM={kernelName:cu,backendName:"cpu",kernelFunc:QF};function tM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,u=Im(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var nM={kernelName:Sh,backendName:"cpu",kernelFunc:tM},rM=it(Ia,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let u=0;um.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return Lr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(b=>mi({inputs:{input:b},backend:n})),A=o.map(b=>_l({inputs:{input:b},backend:n})),y=bl({inputs:m,backend:n,attrs:{axis:s}}),g=bl({inputs:A,backend:n,attrs:{axis:s}}),_=On({inputs:{real:y,imag:g},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),A.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),_}let u=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return gt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),c=u.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(u.map(m=>m.shape),1);let h=u[0].shape[0]===1,d=Sm(c,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return u.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var lM={kernelName:ao,backendName:"cpu",kernelFunc:bl};function gw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r;_e([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,_=d.dataFormat==="channelsLast",b=new Ot(d.outShape,a.dtype),w=v.computeStrides(a.shape),x=v.computeStrides(s.shape),I=w[0],S=_?w[1]:w[2],T=_?w[2]:1,M=_?1:w[1],D=b.strides[0],z=_?b.strides[1]:b.strides[2],W=_?b.strides[2]:1,U=_?1:b.strides[1],H=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,j=b.values;for(let ee=0;ee=d.inHeight)continue;let fe=he*x[0],pe=Y+oe*S;for(let ke=0;ke=d.inWidth)continue;let tt=fe+Oe*x[1],nt=pe+$e*T,ot=tt;for(let Ze=0;Ze=u.inDepth)continue;let ee=X*T[0],Y=D+j*S[1];for(let ae=0;ae=u.inHeight)continue;let oe=ee+Q*T[1],fe=Y+he*S[2];for(let pe=0;pe=u.inWidth)continue;let $e=oe+Me*T[2],tt=fe+Oe*u.inChannels,nt=$e;for(let ot=0;otMath.cos(e)),_M={kernelName:ms,backendName:"cpu",kernelFunc:wM},bM=it(so,e=>Math.cosh(e)),vM={kernelName:so,backendName:"cpu",kernelFunc:bM};function kM(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,[c,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=We([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,_=n.data.get(i.dataId).values,b=n.data.get(a.dataId).values,w=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let I=0;I=c)continue;let U=m>1?(D-T)*(h-1)/(m-1):0,H=A>1?(z-M)*(d-1)/(A-1):0;for(let X=0;X1?T*(h-1)+X*U:.5*(T+D)*(h-1);if(j<0||j>h-1){for(let ee=0;ee1?M*(d-1)+te*H:.5*(M+z)*(d-1);if(ie<0||ie>d-1){for(let fe=0;fe1?M*(d-1)+ee*H:.5*(M+z)*(d-1);if(Y<0||Y>d-1){for(let ie=0;iey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],u=a.shape[2],c=a.shape[3],h=l*s,d=u*s,p=c/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,u,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,_=g.left,b=g.top,w=p.outChannels/p.inChannels,x=new Ot(p.outShape,a.dtype),I=n.data.get(a.dataId).values,S=n.data.get(s.dataId).values,T=x.values;for(let M=0;M=p.inHeight)continue;let ee=X*h[0],Y=D+j*c[1];for(let ae=0;ae=p.inWidth)continue;let oe=ee+Q*h[1],fe=Y+he*p.inChannels,pe=te,ke=oe;for(let Ie=0;Ie{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,u=l.data.get(r.dataId).values,c=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:_,strideHeight:b,strideWidth:w,filterHeight:x,filterWidth:I,dilationHeight:S,dilationWidth:T,outShape:M}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),D=v.sizeFromShape(M),z=M.length,W=v.getArrayFromDType(r.dtype,D);for(let U=0;U=0&&Q=0&&oeae&&(ae=ke)}}}let te=v.locToIndex([U,H,j,Y],z,v.computeStrides(M));W[te]=ae}}}return{dataId:l.write(v.toTypedArray(W,r.dtype),M,r.dtype),shape:M,dtype:r.dtype}}},WM={kernelName:zh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${zh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=te,ae=Q)}}}D[Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},BM={kernelName:Oh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Oh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=ie,ae=he)}}}D[z][Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function VM(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;_e([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(u+1)}return n.makeTensorInfo(a.shape,"float32",s)}var UM={kernelName:Ph,backendName:"cpu",kernelFunc:VM},HM=Rt((e,t)=>e===t?1:0),ww=qt(co,HM,null,"bool"),jM={kernelName:co,backendName:"cpu",kernelFunc:ww},GM=R.ERF_P,qM=R.ERF_A1,XM=R.ERF_A2,KM=R.ERF_A3,ZM=R.ERF_A4,YM=R.ERF_A5,JM=it(uo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+GM*n);return t*(1-((((YM*r+ZM)*r+KM)*r+XM)*r+qM)*r*Math.exp(-n*n))}),QM={kernelName:uo,backendName:"cpu",kernelFunc:JM};function Qd(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),gt({inputs:{x:a},backend:n,attrs:{shape:o}})}var e$={kernelName:ho,backendName:"cpu",kernelFunc:Qd},t$=Rt((e,t)=>e/t),Om=qt(gs,t$),zm={kernelName:gs,backendName:"cpu",kernelFunc:Om};function _w(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,u=[a,s],c=v.sizeFromShape(u),h=v.getTypedArrayFromDType("float32",c),d=v.getTypedArrayFromDType("float32",c);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,u]=r.shape,c=a.data.get(r.dataId).values;for(let h=0;h=0&&_Math.floor(e/t)),h$=qt(_s,c$,null,"int32"),d$={kernelName:_s,backendName:"cpu",kernelFunc:h$};function p$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=gw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var f$={kernelName:ei,backendName:"cpu",kernelFunc:p$};function m$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=xw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var A$={kernelName:ti,backendName:"cpu",kernelFunc:m$};function y$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,u,c,h]=R.prepareAndValidate(r,a);if(u===0)return n.makeTensorInfo(l,r.dtype,[]);let d=We([u,c],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/c)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),b$=qt(vs,_$,null,"bool"),v$={kernelName:vs,backendName:"cpu",kernelFunc:b$};function k$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=gt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=_w(o,!0,n),u=gt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),u}var N$={kernelName:Wh,backendName:"cpu",kernelFunc:k$},I$=it(go,e=>Number.isFinite(e)?1:0,"bool"),S$={kernelName:go,backendName:"cpu",kernelFunc:I$},T$=it(xo,e=>Math.abs(e)===Infinity?1:0,"bool"),C$={kernelName:xo,backendName:"cpu",kernelFunc:T$},E$=it(wo,e=>Number.isNaN(e)?1:0,"bool"),R$={kernelName:wo,backendName:"cpu",kernelFunc:E$},F$=Rt((e,t)=>e<=t?1:0),M$=qt(bo,F$,null,"bool"),$$={kernelName:bo,backendName:"cpu",kernelFunc:M$};function D$(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=qx(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var O$={kernelName:Vh,backendName:"cpu",kernelFunc:D$},z$=it(vo,e=>Math.log1p(e)),P$={kernelName:vo,backendName:"cpu",kernelFunc:z$},L$=Rt((e,t)=>e&&t),W$=qt(ko,L$,null,"bool"),B$={kernelName:ko,backendName:"cpu",kernelFunc:W$},V$=it(mu,e=>e?0:1,"bool"),U$={kernelName:mu,backendName:"cpu",kernelFunc:V$},H$=Rt((e,t)=>e||t),j$=qt(Au,H$,null,"bool"),G$={kernelName:Au,backendName:"cpu",kernelFunc:j$};function q$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;_e(a,"LRN");let u=a.shape[3],c=u-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%u,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,c),_=0;for(;y<=g;y++){let b=h[y];_+=b*b}return _}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"max");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var Q$={kernelName:Cs,backendName:"cpu",kernelFunc:J$};function eD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"maxPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=yw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var tD={kernelName:gu,backendName:"cpu",kernelFunc:eD};function nD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"maxPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=n.bufferSync(s),d=VF(h,c),p=c.strideDepth,f=c.strideHeight,m=c.strideWidth,A=c.dilationDepth,y=c.dilationHeight,g=c.dilationWidth,_=c.effectiveFilterDepth,b=c.effectiveFilterHeight,w=c.effectiveFilterWidth,x=_-1-c.padInfo.front,I=w-1-c.padInfo.left,S=b-1-c.padInfo.top,T=We(s.shape,"float32"),M=n.bufferSync(a);for(let D=0;D=c.outDepth||Math.floor(te)!==te))for(let ie=0;ie=c.outHeight||Math.floor(Q)!==Q))for(let he=0;he=c.outWidth||Math.floor(oe)!==oe)continue;let fe=_*b*w-1-d.get(D,te,Q,oe,z),pe=ae*b*w+ie*w+he,ke=fe===pe?1:0;ke!==0&&(Y+=M.get(D,te,Q,oe,z)*ke)}}}T.set(Y,D,W,U,H,z)}return n.makeTensorInfo(T.shape,T.dtype,T.values)}var rD={kernelName:jh,backendName:"cpu",kernelFunc:nD};function aD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;_e([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=n.data.get(o.dataId).values,f=We(d.outShape,o.dtype,Aw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,_=d.effectiveFilterHeight,b=d.effectiveFilterWidth,w=b-1-d.padInfo.left,x=_-1-d.padInfo.top,I=We(o.shape,"float32"),S=n.data.get(a.dataId).values,T=We(a.shape,"float32",S);for(let M=0;M=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y=d.outWidth||Math.floor(ae)!==ae)continue;let te=_*b-1-f.get(M,ee,ae,D),ie=j*b+Y,Q=te===ie?1:0;Q!==0&&(X+=T.get(M,ee,ae,D)*Q)}}I.set(X,M,z,W,D)}return n.makeTensorInfo(I.shape,I.dtype,I.values)}var sD={kernelName:Hh,backendName:"cpu",kernelFunc:aD};function iD(e,t,n,r,a){let s=v.computeStrides(t),i=Dm(e,t,n,s,a,"max"),o=Aw(e,t,n,a,!0,r);return[i.values,o.values]}var oD={kernelName:Gh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;_e(r,"MaxPoolWithArgmax");let u=l.data.get(r.dataId).values,c=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=iD(u,r.shape,r.dtype,o,c),p=l.write(h,c.outShape,r.dtype),f=l.write(d,c.outShape,r.dtype);return[{dataId:p,shape:c.outShape,dtype:r.dtype},{dataId:f,shape:c.outShape,dtype:"int32"}]}};function ep(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"sum");let o;a.dtype==="bool"?o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=Lr({inputs:{x:a},backend:n});let l=o.shape.length,u=v.parseAxisParam(s,o.shape),c=R.getAxesPermutation(u,l),h=u,d=o;c!=null&&(d=or({inputs:{x:o},backend:n,attrs:{perm:c}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=Jd(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,_=n.data.get(d.dataId).values;for(let b=0;bn.disposeIntermediateTensorInfo(m)),f}var cD={kernelName:Es,backendName:"cpu",kernelFunc:uD};function hD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,u=R.getAxesPermutation(l,a.shape.length),c=a;u!=null&&(c=or({inputs:{x:a},backend:n,attrs:{perm:u}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,c.shape.length);let[h,d]=R.computeOutAndReduceShapes(c.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),c.dtype),m=n.data.get(c.dataId).values;for(let y=0;yg[0]+a.shape[_]+g[1]),l=s.map(g=>g[0]),u=s.map((g,_)=>g[0]+a.shape[_]),c=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=u[w]&&(_[w]=(u[w]-1)*2-_[w]+c);_=_.map((w,x)=>w-l[x]);let b=v.locToIndex(_,d,p);y[g]=h[b]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var fD={kernelName:xu,backendName:"cpu",kernelFunc:pD},mD=Rt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),AD=qt(No,mD),yD={kernelName:No,backendName:"cpu",kernelFunc:AD},gD=qi(U8());function vw(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),u=bw({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),c=R.expandShapeToKeepDim(u.shape,l),h=gt({inputs:{x:u},backend:n,attrs:{shape:c}}),d=Mm({inputs:{a,b:h},backend:n}),p=lw({inputs:{x:d},backend:n}),f=ep({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Om({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var xD={kernelName:Xs,backendName:"cpu",kernelFunc:vw};function wD(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;_e(a,"multinomial");let l=o?a:vw({inputs:{logits:a},backend:n,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],h=n.data.get(l.dataId).values,d=[u,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&c[h]{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=Qd({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=bl({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var DD={kernelName:Fo,backendName:"cpu",kernelFunc:Nw};function OD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;_e(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),u=n.data.get(a.dataId).values,c=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;yb+l[w]),_=v.locToIndex(g,f,m);A[_]=u[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var Iw={kernelName:Ds,backendName:"cpu",kernelFunc:OD},zD=Rt((e,t)=>Math.pow(e,t)),PD=qt(Os,zD),LD={kernelName:Os,backendName:"cpu",kernelFunc:PD};function WD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=Em(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var BD={kernelName:wu,backendName:"cpu",kernelFunc:WD},VD=it($o,e=>1/e),UD={kernelName:$o,backendName:"cpu",kernelFunc:VD};function HD(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;_e(a,"resizeBilinear");let l=v.computeStrides(a.shape),[u,c]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,u,c,f])),y=[s&&u>1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=0,b=y[0]/g[0],w=y[1]/g[1];for(let x=0;x1?u-1:u,i&&p>1?c-1:c],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],_=n.data.get(s.dataId).values,b=0;for(let w=0;w1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=y[0]/g[0],b=y[1]/g[1],w=0;for(let x=0;x1?c-1:c,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],_=y[0]/g[0],b=y[1]/g[1],w=1/_,x=1/b,I=Math.ceil(w)*2+2,S=Math.ceil(x)*2+2;for(let T=0;T=p)continue;let Q=M+ie*l[1],he=ie*_,oe=Math.min(c-1,i?Math.round(he):Math.floor(he));if(D===oe)for(let fe=0;fe=f)continue;let ke=Q+pe*l[2],Ie=pe*b,Me=Math.min(h-1,i?Math.round(Ie):Math.floor(Ie));H===Me&&(ae+=A[ke+Y])}}m[X+Y]=ae}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var YD={kernelName:Kh,backendName:"cpu",kernelFunc:ZD};function JD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;_e(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Lr({inputs:{x:a},backend:n});let l=new Ot(a.shape,a.dtype),u=n.bufferSync(a);for(let c=0;cd[p]=a.shape[p]-1-d[p]),l.set(u.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var QD={kernelName:Bs,backendName:"cpu",kernelFunc:JD},eO={kernelName:Ko,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[u,c,h,d]=r.shape,[p,f]=R.getImageCenter(i,c,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let _=0;_=0&&W=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),nO={kernelName:Vs,backendName:"cpu",kernelFunc:tO};function Sw(e,t,n,r,a,s,i,o,l,u){let c=[r/a,a],h=e.values,d=t.values;if(r===0)return We(n,t.dtype);let p=We(c,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?lO*e:oO*(Math.exp(e)-1)),cO={kernelName:Po,backendName:"cpu",kernelFunc:uO},hO=it(js,e=>1/(1+Math.exp(-e))),dO={kernelName:js,backendName:"cpu",kernelFunc:hO},pO=it(Bo,e=>e<0?-1:e>0?1:0),fO={kernelName:Bo,backendName:"cpu",kernelFunc:pO},mO=it(Hs,e=>Math.sin(e)),AO={kernelName:Hs,backendName:"cpu",kernelFunc:mO},yO=it(Wo,e=>Math.sinh(e)),gO={kernelName:Wo,backendName:"cpu",kernelFunc:yO},xO=11920928955078125e-23,Tw=Math.log(xO)+2,wO=it(Vo,e=>{let t=e>-Tw,n=e{let d=[...c];d[o]=h;let p=Ai({inputs:{x:a},backend:n,attrs:{begin:u,size:d}});return u[o]+=h,p})}var SO={kernelName:Uo,backendName:"cpu",kernelFunc:IO},TO=it(Gs,e=>Math.sqrt(e)),CO={kernelName:Gs,backendName:"cpu",kernelFunc:TO},EO={kernelName:vu,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;_e(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),FO={kernelName:Ta,backendName:"cpu",kernelFunc:RO};function MO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r;_e(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=gt({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=Ai({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=gt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(_),I=rw(g,x,m,f);b=n.makeTensorInfo(I.shape,I.dtype,I.values)}let w=gt({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var $O={kernelName:Ho,backendName:"cpu",kernelFunc:MO},DO=it(jo,e=>Math.tan(e)),OO={kernelName:jo,backendName:"cpu",kernelFunc:DO},zO=it(Ys,e=>Math.tanh(e)),PO={kernelName:Ys,backendName:"cpu",kernelFunc:zO};function LO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;_e(a,"tile");let i=sw(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var WO={kernelName:Sa,backendName:"cpu",kernelFunc:LO};function BO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;_e(a,"topk");let o=n.data.get(a.dataId).values,[l,u]=iw(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var VO={kernelName:Go,backendName:"cpu",kernelFunc:BO};function jO(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=n,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=v.computeStrides(a.shape),g=y[0],_=y[1],b=y[2],w=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));w.fill(l);let x=r.data.get(a.dataId).values,I=r.data.get(s.dataId).values;for(let S=0;St-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function XO(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function KO(e,t){return e}function ZO(e,t){return v.clamp(0,e,t-1)}function nc(e,t,n,r,a,s,i,o,l,u,c){let h=i*r+o*a+l*s+u;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var nz={kernelName:ku,backendName:"cpu",kernelFunc:tz},rz=[AF,_R,gF,wF,SR,bF,kF,IF,TF,EF,FF,$F,OF,LF,BF,HF,GF,XF,ZF,fF,JF,eM,nM,NR,CR,aM,bR,iM,lM,hM,pM,uM,yM,xM,mM,_M,vM,NM,SM,CM,RM,FM,$M,OM,PM,LM,BM,WM,zm,oF,UM,jM,QM,ER,e$,FR,i$,l$,u$,$R,d$,f$,A$,g$,w$,OR,v$,vR,N$,oM,S$,C$,R$,lF,PR,$$,O$,WR,P$,B$,U$,G$,X$,Z$,VR,Q$,tD,rD,sD,oD,Y$,cD,dD,HR,fD,yD,_D,GR,XR,kD,SD,ED,ZR,FD,$D,DD,Iw,LD,cF,QR,BD,kR,UD,hF,dF,pF,jD,qD,KD,YD,QD,eO,nO,tF,aO,iO,cO,dO,fO,AO,gO,nF,xD,_O,vO,NO,SO,CO,EO,aF,FO,$O,iF,lD,OO,PO,WO,VO,YR,GO,JO,ez,nz,MD];for(let e of rz)ni(e);var Ew={};ze(Ew,{assertNotComplex:()=>vl,bindCanvasToFramebuffer:()=>iz,bindColorTextureToFramebuffer:()=>rp,bindTextureToProgramUniformSampler:()=>jw,bindTextureUnit:()=>Vw,bindVertexBufferToProgramAttribute:()=>Wm,callAndCheck:()=>xe,canBeRepresented:()=>Rw,createFragmentShader:()=>$w,createFramebuffer:()=>Bw,createProgram:()=>Dw,createStaticIndexBuffer:()=>Pw,createStaticVertexBuffer:()=>zw,createTexture:()=>Lw,createVertexShader:()=>Mw,getBatchDim:()=>yi,getExtensionOrThrow:()=>rc,getFramebufferErrorMessage:()=>Gw,getMaxTexturesInShader:()=>Kw,getNumChannels:()=>az,getProgramUniformLocation:()=>Hw,getProgramUniformLocationOrThrow:()=>Uw,getRowsCols:()=>gi,getShapeAs3D:()=>ap,getTextureShapeFromLogicalShape:()=>qw,getWebGLDisjointQueryTimerVersion:()=>Zw,getWebGLErrorMessage:()=>Fw,getWebGLMaxTextureSize:()=>Xw,hasExtension:()=>Kn,isCapableOfRenderingToFloatTexture:()=>Yw,isDownloadFloatTextureEnabled:()=>Jw,isReshapeFree:()=>sc,isWebGLFenceEnabled:()=>Qw,isWebGLVersionEnabled:()=>Vm,linkProgram:()=>Ow,resetMaxTextureSize:()=>oz,resetMaxTexturesInShader:()=>lz,unbindColorTextureFromFramebuffer:()=>Bm,unbindTextureUnit:()=>sz,validateFramebuffer:()=>ac,validateProgram:()=>np,validateTextureSize:()=>Ww});var xi={},Um={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function sp(e,t){xi[e]=t}function Wr(e){if(!(e in xi)){let n=uz(e);if(n!==null)xi[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=xi[e];return t.isContextLost()?(delete xi[e],Wr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),xi[e])}function cz(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function uz(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=cz(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete xi[e]},!1),e===1?t.getContext("webgl",Um)||t.getContext("experimental-webgl",Um):t.getContext("webgl2",Um)}var ic;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(ic||(ic={}));var Zn;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Zn||(Zn={}));var tn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(tn||(tn={}));function oc(e,t){return[t,e]}function hz(e,t){return e*t}function lc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function kl(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function dz(e,t){let[n,r]=kl(e,t);return n*r*4}function Hm(e,t){let n=e,r,a,s,i,o,l,u,c,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,u=4,c=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,u=4,c=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:h,textureTypeFloat:d}}function xe(e,t){let n=t();return J().getBool("DEBUG")&&pz(e),n}function pz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Fw(e,t))}var fz=596e-10,mz=65504;function Rw(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||fze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function Mw(e,t){let n=la(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function $w(e,t){let n=la(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw Az(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var yz=/ERROR: [0-9]+:([0-9]+):/g;function Az(e,t){let n=yz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` +============================`));let r={id:this.nextDataId()};return this.data.set(r,{values:e,dtype:n,refCount:1}),r}makeTensorInfo(e,t,n){let r;if(t==="string"&&n!=null&&n.length>0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return{dataId:r,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,r,a){this.data.set(e,{values:t,dtype:r,refCount:a})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let r=this.readSync(n.real.dataId),a=this.readSync(n.imag.dataId);return R.mergeRealAndImagArrays(r,a)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}makeOutput(e,t,n){let r=this.write(e,t,n);return Fr().makeTensorFromDataId(r,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){_e([e],"where");let t=this.readSync(e.dataId);return wR(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};Zd.nextDataId=0;var Nm={};ze(Nm,{addImpl:()=>Lx,bincountImpl:()=>Im,bincountReduceImpl:()=>Wx,ceilImpl:()=>Bx,concatImpl:()=>Sm,expImpl:()=>Vx,expm1Impl:()=>Ux,floorImpl:()=>Hx,gatherV2Impl:()=>jx,greaterImpl:()=>Gx,lessImpl:()=>qx,linSpaceImpl:()=>Xx,logImpl:()=>Kx,maxImpl:()=>Zx,maximumImpl:()=>Yx,minimumImpl:()=>Jx,multiplyImpl:()=>Tm,negImpl:()=>Qx,notEqualImpl:()=>ew,prodImpl:()=>tw,rangeImpl:()=>Em,rsqrtImpl:()=>nw,simpleAbsImpl:()=>Px,sliceImpl:()=>Yd,squaredDifferenceImpl:()=>rw,stridedSliceImpl:()=>aw,subImpl:()=>sw,tileImpl:()=>iw,topKImpl:()=>ow,transposeImpl:()=>Cm,uniqueImpl:()=>lw});function Px(e){let t=new Float32Array(e.length);for(let n=0;n{let{x:t}=e.inputs,n=e.backend;_e(t,"abs");let r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId).values;return r=Px(a),n.makeOutput(r,t.shape,"float32")},bR={kernelName:Zi,backendName:"cpu",kernelFunc:_R};function Rt(e){return(t,n,r,a,s)=>{let i=R.assertAndGetBroadcastShape(t,n),o=i.length,l=v.computeStrides(i),u=v.sizeFromShape(i),c=v.getTypedArrayFromDType(s,u),h=t.length,d=n.length,p=v.computeStrides(t),f=v.computeStrides(n),m=R.getBroadcastDims(t,i),A=R.getBroadcastDims(n,i);if(m.length+A.length===0)for(let y=0;y_[I]=0);let b=v.locToIndex(_,h,p),w=g.slice(-d);A.forEach(I=>w[I]=0);let x=v.locToIndex(w,d,f);c[y]=e(r[b],a[x])}return[c,i]}}function On(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,o=n.makeTensorInfo(r.shape,"complex64"),l=n.data.get(o.dataId);return l.complexTensorInfos={real:n.makeTensorInfo(r.shape,"float32",s),imag:n.makeTensorInfo(a.shape,"float32",i)},o}var vR={kernelName:Th,backendName:"cpu",kernelFunc:On};function Jd(e,t,n="float32"){if(n==="complex64"){let a=Jd(e,t,"float32"),s=Jd(e,t,"float32");return On({inputs:{real:a,imag:s},backend:e})}let r=v.makeZerosTypedArray(v.sizeFromShape(t),n);return e.makeTensorInfo(t,n,r)}function Lr(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var kR={kernelName:ks,backendName:"cpu",kernelFunc:Lr};function mi(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.data.get(r.dataId).complexTensorInfos.real,s=n.data.get(a.dataId).values;return n.makeTensorInfo(a.shape,a.dtype,s)}var NR={kernelName:Xh,backendName:"cpu",kernelFunc:mi};function Wa(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return Lr({inputs:{x:a},backend:n});let i=Jd(n,a.shape,a.dtype),o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=On({inputs:{real:o,imag:i},backend:n});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=mi({inputs:{input:a},backend:n}),o=Wa({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=Lr({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32"){let i=n.data.get(a.dataId).values,o=Int32Array.from(i);return n.makeTensorInfo(a.shape,"int32",o)}if(s==="bool"){let i=n.data.get(a.dataId).values,o=v.toTypedArray([0],a.dtype),[l,u]=Rt((c,h)=>c!==h?1:0)(a.shape,[],i,o,"bool");return n.makeTensorInfo(u,"bool",l)}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var IR={kernelName:hs,backendName:"cpu",kernelFunc:Wa};function qt(e,t,n,r){return n==null?({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;_e([i,o],e);let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}:({inputs:a,backend:s})=>{let{a:i,b:o}=a,l=s;if(i.dtype==="complex64"||o.dtype==="complex64"){let u=Wa({inputs:{x:i},backend:l,attrs:{dtype:"complex64"}}),c=l.data.get(u.dataId),h=c.complexTensorInfos.real,d=c.complexTensorInfos.imag,p=l.data.get(h.dataId).values,f=l.data.get(d.dataId).values,m=Wa({inputs:{x:o},backend:l,attrs:{dtype:"complex64"}}),A=l.data.get(m.dataId),y=A.complexTensorInfos.real,g=A.complexTensorInfos.imag,_=l.data.get(y.dataId).values,b=l.data.get(g.dataId).values,[w,x,I]=n(i.shape,o.shape,p,f,_,b),S=l.makeTensorInfo(I,"float32",w),T=l.makeTensorInfo(I,"float32",x),M=On({inputs:{real:S,imag:T},backend:l});return l.disposeIntermediateTensorInfo(u),l.disposeIntermediateTensorInfo(m),l.disposeIntermediateTensorInfo(S),l.disposeIntermediateTensorInfo(T),M}else{let u=l.data.get(i.dataId).values,c=l.data.get(o.dataId).values,h=r||i.dtype,[d,p]=t(i.shape,o.shape,u,c,h);return l.makeTensorInfo(p,h,d)}}}function Rm(e){return(t,n,r,a,s,i)=>{let o=R.assertAndGetBroadcastShape(t,n),l=v.sizeFromShape(o),u=o.length,c=v.computeStrides(o),h=v.getTypedArrayFromDType("float32",l),d=v.getTypedArrayFromDType("float32",l),p=R.getBroadcastDims(t,o),f=R.getBroadcastDims(n,o),m=R.mergeRealAndImagArrays(r,a),A=R.mergeRealAndImagArrays(s,i),y=t.length,g=v.computeStrides(t),_=n.length,b=v.computeStrides(n);if(p.length+f.length===0)for(let w=0;wI[z]=0);let S=v.locToIndex(I,y,g),T=x.slice(-_);f.forEach(z=>T[z]=0);let M=v.locToIndex(T,_,b),D=e(m[S*2],m[S*2+1],A[M*2],A[M*2+1]);h[w]=D.real,d[w]=D.imag}return[h,d,o]}}var Lx=Rt((e,t)=>e+t),SR=Rm((e,t,n,r)=>({real:e+n,imag:t+r})),tc=qt(Na,Lx,SR),TR={kernelName:Na,backendName:"cpu",kernelFunc:tc};function Im(e,t,n,r,a){let s=v.sizeFromShape(r),i=v.makeZerosTypedArray(a,n);for(let o=0;o=a||(s>0?i[l]+=t[o]:i[l]+=1)}return i}function Wx(e,t,n,r=!1){let a=e.shape[0],s=e.shape[1],i=We([a,n],t.dtype);for(let o=0;o=n||(r?i.set(1,o,u):t.size>0?i.set(i.get(o,u)+t.get(o,l),o,u):i.set(i.get(o,u)+1,o,u))}return i}function xl(e){return(t,n,r)=>{let a=v.getTypedArrayFromDType(n,t.length);for(let s=0;s{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=v.sizeFromShape(i.shape),c=n||i.dtype,h=v.getArrayFromDType(c,u);for(let d=0;d{let{x:i}=r;if(_e(i,e),i.dtype==="string"||n==="string")throw new Error("unaryKernelFunc does not support string input/output");let o=s,l=o.data.get(i.dataId).values,u=n||i.dtype,c=t(l,u,a);return o.makeTensorInfo(i.shape,u,c)}}var Bx=xl(e=>Math.ceil(e)),CR=wl(ds,Bx),ER={kernelName:ds,backendName:"cpu",kernelFunc:CR};function Sm(e,t,n,r){let a=v.getArrayFromDType(n,v.sizeFromShape(t));if(r&&n!=="string"){let s=0;e.forEach(i=>{let o=v.sizeFromShape(i.shape);a.set(i.vals,s),s+=o})}else{let s=0;e.forEach(i=>{let o=n==="string"?R.fromUint8ToStringArray(i.vals):i.vals,l=0;for(let u=0;uMath.exp(e)),uw=wl(xs,Vx),RR={kernelName:xs,backendName:"cpu",kernelFunc:uw},Ux=xl(e=>Math.expm1(e)),FR=wl(po,Ux),MR={kernelName:po,backendName:"cpu",kernelFunc:FR},Hx=xl(e=>Math.floor(e)),$R=wl(ws,Hx),DR={kernelName:ws,backendName:"cpu",kernelFunc:$R};function jx(e,t,n){let r=We(n,e.dtype);for(let a=0;ae>t?1:0),OR=qt(yo,Gx,null,"bool"),zR={kernelName:yo,backendName:"cpu",kernelFunc:OR},qx=Rt((e,t)=>eMath.log(e)),WR=wl(Is,Kx),BR={kernelName:Is,backendName:"cpu",kernelFunc:WR};function Zx(e,t,n,r){let a=v.getTypedArrayFromDType(r,v.sizeFromShape(n));for(let s=0;so&&(o=u)}a[s]=o}return a}var Yx=Rt((e,t)=>Math.max(e,t)),VR=qt(Ts,Yx),UR={kernelName:Ts,backendName:"cpu",kernelFunc:VR},Jx=Rt((e,t)=>Math.min(e,t)),HR=qt(Fs,Jx),jR={kernelName:Fs,backendName:"cpu",kernelFunc:HR},Tm=Rt((e,t)=>e*t),GR=Rm((e,t,n,r)=>({real:e*n-t*r,imag:e*r+t*n})),Fm=qt(Ms,Tm,GR),qR={kernelName:Ms,backendName:"cpu",kernelFunc:Fm};function Qx(e,t,n){let r=v.createScalarValue(-1,n);return Tm([],t,r,e,n)}function XR(e){let{inputs:t,backend:n}=e,{x:r}=t;_e(r,"neg");let a=n.data.get(r.dataId).values,[s,i]=Qx(a,r.shape,r.dtype);return n.makeTensorInfo(i,r.dtype,s)}var KR={kernelName:Io,backendName:"cpu",kernelFunc:XR},ew=Rt((e,t)=>e!==t?1:0),ZR=qt(So,ew,null,"bool"),YR={kernelName:So,backendName:"cpu",kernelFunc:ZR};function Cm(e,t,n,r,a){let s=t.length,i=v.sizeFromShape(t),o=v.computeStrides(t),l=v.computeStrides(a),u=v.getTypedArrayFromDType(n,v.sizeFromShape(a));for(let c=0;cn.disposeIntermediateTensorInfo(g)),n.makeTensorInfo(y,A,f)}var eF={kernelName:Mo,backendName:"cpu",kernelFunc:QR};function Em(e,t,n,r){let a=e===t,s=e1;if(a||s||i)return v.makeZerosTypedArray(0,r);let o=Math.abs(Math.ceil((t-e)/n)),l=v.makeZerosTypedArray(o,r);t1/Math.sqrt(e)),tF=wl(Us,nw),nF={kernelName:Us,backendName:"cpu",kernelFunc:tF};function Yd(e,t,n,r,a){let s=cn.isSliceContinous(r,t,n),i=v.sizeFromShape(n),o=v.computeStrides(r);if(s){let h=cn.computeFlatOffset(t,o);return a==="string"?e.slice(h,h+i):e.subarray(h,h+i)}let l=a==="string"?R.fromUint8ToStringArray(e):e,u=We(r,a,l),c=We(n,a);for(let h=0;hf+t[m]);c.set(u.get(...p),...d)}return a==="string"?R.fromStringArrayToUint8(c.values):c.values}function Ai(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r;_e(a,"slice");let[o,l]=cn.parseSliceParams(a,s,i);cn.assertParamsValid(a,o,l);let u=n.data.get(a.dataId).values,c=Yd(u,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,c)}var rF={kernelName:Lo,backendName:"cpu",kernelFunc:Ai},rw=Rt((e,t)=>{let n=e-t;return n*n}),aF=qt(Ks,rw),sF={kernelName:Ks,backendName:"cpu",kernelFunc:aF};function aw(e,t,n,r){let a=We(e,t.dtype);for(let s=0;se-t),iF=Rm((e,t,n,r)=>({real:e-n,imag:t-r})),Mm=qt(Zs,sw,iF),oF={kernelName:Zs,backendName:"cpu",kernelFunc:Mm};function iw(e,t){let n=new Array(e.rank);for(let a=0;a_.value-g.value);let m=h*r,A=l.subarray(m,m+r),y=u.subarray(m,m+r);for(let g=0;g{for(let A=0;Anew Zd,1);var hw=it(lo,e=>e>=0?e:Math.exp(e)-1),lF={kernelName:lo,backendName:"cpu",kernelFunc:hw};function dw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r;_e([a],"leakyRelu");let i=v.sizeFromShape(a.shape),o=n.data.get(a.dataId).values,l=v.getTypedArrayFromDType("float32",i);for(let u=0;ue<0?t*e:e);function pw(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t;_e([r,a],"prelu");let s=n.data.get(r.dataId).values,i=n.data.get(a.dataId).values,[o,l]=cF(r.shape,a.shape,s,i,r.dtype);return n.makeTensorInfo(l,r.dtype,o)}var hF={kernelName:zs,backendName:"cpu",kernelFunc:pw},fw=it(Ps,e=>Math.max(0,e)),dF={kernelName:Ps,backendName:"cpu",kernelFunc:fw},mw=it(Ws,e=>Math.min(Math.max(0,e),6)),pF={kernelName:Ws,backendName:"cpu",kernelFunc:mw};function $m(e,t,n,r,a){if(n==="linear")return Lr({inputs:{x:t},backend:e});if(n==="relu")return fw({inputs:{x:t},backend:e});if(n==="elu")return hw({inputs:{x:t},backend:e});if(n==="relu6")return mw({inputs:{x:t},backend:e});if(n==="prelu")return pw({inputs:{x:t,alpha:r},backend:e});if(n==="leakyrelu")return dw({inputs:{x:t},backend:e,attrs:{alpha:a}});throw new Error(`Activation ${n} has not been implemented for the CPU backend.`)}function gt(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=v.sizeFromShape(a.shape),o=v.inferFromImplicitShape(s,i),l=v.sizeFromShape(o);v.assert(i===l,()=>`The new shape (${o}) has ${l} elements and the old shape (${a.shape}) has ${i} elements. The new shape and old shape must have the same number of elements.`),n.incRef(a.dataId);let u=n.data.get(a.dataId);if(u.complexTensorInfos!=null){let c=u.complexTensorInfos.real,h=u.complexTensorInfos.imag;c.shape=o,h.shape=o}return{dataId:a.dataId,shape:o,dtype:a.dtype}}var fF={kernelName:Do,backendName:"cpu",kernelFunc:gt};function Aw(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;_e([a,s],"matMul");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=gt({inputs:{x:a},backend:n,attrs:{shape:b}}),I=gt({inputs:{x:s},backend:n,attrs:{shape:w}}),S=i?x.shape[1]:x.shape[2],T=i?x.shape[2]:x.shape[1],M=o?I.shape[1]:I.shape[2],D=Math.max(A,y),z=n.data.get(x.dataId).values,W=n.data.get(I.dataId).values,U=v.computeStrides(x.shape),H=v.computeStrides(I.shape),[X,j,ee]=i?[U[0],1,U[1]]:[U[0],U[1],1],[Y,ae,te]=o?[1,H[1],H[0]]:[H[1],1,H[0]],ie=T*M,Q=We([D,T,M],x.dtype),he=Q.values,oe=n.blockSize;for(let fe=0;feMath.acos(e)),xF={kernelName:Yi,backendName:"cpu",kernelFunc:gF},wF=it(Ji,e=>Math.acosh(e)),_F={kernelName:Ji,backendName:"cpu",kernelFunc:wF};function bF(e){let{inputs:t,backend:n}=e,r=t;_e(t,"addN");let a=r.map(o=>n.data.get(o.dataId).values),s=We(r[0].shape,r[0].dtype),i=s.values;for(let o=0;og&&(g=w,_=b)}p[A]=_}return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var CF={kernelName:ls,backendName:"cpu",kernelFunc:TF};function EF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r;_e(a,"argMin");let i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=or({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),i=[i[0]],R.assertAxesAreInnerMostDims("argMin",i,l.shape.length);let[c,h]=R.computeOutAndReduceShapes(l.shape,i),d=v.sizeFromShape(c),p=v.makeZerosTypedArray(d,"int32"),f=v.sizeFromShape(h),m=n.data.get(l.dataId).values;for(let A=0;An.disposeIntermediateTensorInfo(A)),n.makeTensorInfo(c,"int32",p)}var RF={kernelName:lu,backendName:"cpu",kernelFunc:EF},FF=it(Qi,e=>Math.asin(e)),MF={kernelName:Qi,backendName:"cpu",kernelFunc:FF},$F=it(eo,e=>Math.asinh(e)),DF={kernelName:eo,backendName:"cpu",kernelFunc:$F},OF=it(to,e=>Math.atan(e)),zF={kernelName:to,backendName:"cpu",kernelFunc:OF},PF=Rt((e,t)=>Math.atan2(e,t)),LF=qt(ro,PF),WF={kernelName:ro,backendName:"cpu",kernelFunc:LF},BF=it(no,e=>Math.atanh(e)),VF={kernelName:no,backendName:"cpu",kernelFunc:BF};function Dm(e,t,n,r,a,s){let i=a.strideHeight,o=a.strideWidth,l=a.dilationHeight,u=a.dilationWidth,c=a.effectiveFilterHeight,h=a.effectiveFilterWidth,d=a.padInfo.top,p=a.padInfo.left,f=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,m=We(a.outShape,n),A=m.values,y=a.outShape[1]*a.outShape[2]*a.outShape[3],g=a.outShape[2]*a.outShape[3],_=a.outShape[3];for(let b=0;bj?j=oe:s==="avg"&&(ee+=oe,Y++)}if(isNaN(j))break}let ae=z+W*_+I;A[ae]=s==="avg"?ee/Y:j}}}return m}function yw(e,t,n,r,a=!1,s=!1){let i=We(r.outShape,"int32"),o=r.strideHeight,l=r.strideWidth,u=r.dilationHeight,c=r.dilationWidth,h=r.effectiveFilterHeight,d=r.effectiveFilterWidth,p=r.padInfo.top,f=r.padInfo.left,m=We(t,n,e);for(let A=0;AM&&(M=X,a?D=s?((A*r.inHeight+z)*r.inWidth+U)*r.inChannels+y:(z*r.inWidth+U)*r.inChannels+y:D=W*d+H)}}i.set(D,A,g,x,y)}}return i}function gw(e,t,n,r,a,s){let i=a.strideDepth,o=a.strideHeight,l=a.strideWidth,u=a.dilationDepth,c=a.dilationHeight,h=a.dilationWidth,d=a.effectiveFilterDepth,p=a.effectiveFilterHeight,f=a.effectiveFilterWidth,m=a.padInfo.front,A=a.padInfo.top,y=a.padInfo.left,g=s==="max"?Number.NEGATIVE_INFINITY:Number.POSITIVE_INFINITY,_=We(a.outShape,n),b=_.values,w=a.outShape[1]*a.outShape[2]*a.outShape[3]*a.outShape[4],x=a.outShape[2]*a.outShape[3]*a.outShape[4],I=a.outShape[3]*a.outShape[4],S=a.outShape[4];for(let T=0;Tke?ke=Be:s==="avg"&&(Ie+=Be,Me++),isNaN(ke))break}if(isNaN(ke))break}if(isNaN(ke))break}let Oe=pe+z;b[Oe]=s==="avg"?Ie/Me:ke}}}}return _}function UF(e,t){let n=We(t.outShape,"int32"),r=t.strideDepth,a=t.strideHeight,s=t.strideWidth,i=t.dilationDepth,o=t.dilationHeight,l=t.dilationWidth,u=t.effectiveFilterDepth,c=t.effectiveFilterHeight,h=t.effectiveFilterWidth,d=t.padInfo.front,p=t.padInfo.top,f=t.padInfo.left;for(let m=0;m=W&&(W=te,U=X*c*h+ee*c+ae)}}}n.set(U,m,y,w,T,A)}}}return n}function HF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;_e(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"avg");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var jF={kernelName:us,backendName:"cpu",kernelFunc:HF};function GF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"avgPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=gw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"avg");return n.makeTensorInfo(d.shape,"float32",d.values)}var qF={kernelName:uu,backendName:"cpu",kernelFunc:GF};function XF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"avgPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=c.strideDepth,d=c.strideHeight,p=c.strideWidth,f=c.filterDepth,m=c.filterHeight,A=c.filterWidth,y=c.dilationDepth,g=c.dilationHeight,_=c.dilationWidth,b=c.effectiveFilterDepth,w=c.effectiveFilterHeight,x=c.effectiveFilterWidth,I=b-1-c.padInfo.front,S=x-1-c.padInfo.left,T=w-1-c.padInfo.top,M=We(s.shape,"float32"),D=1/(f*m*A),z=n.bufferSync(a);for(let W=0;W=c.outDepth||Math.floor(Q)!==Q))for(let he=0;he=c.outHeight||Math.floor(oe)!==oe))for(let fe=0;fe=c.outWidth||Math.floor(pe)!==pe||(te+=z.get(W,Q,oe,pe,U))}}}M.set(te*D,W,H,X,j,U)}return n.makeTensorInfo(M.shape,M.dtype,M.values)}var KF={kernelName:Ih,backendName:"cpu",kernelFunc:XF};function ZF(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;_e([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=c.strideHeight,d=c.strideWidth,p=c.filterHeight,f=c.filterWidth,m=c.dilationHeight,A=c.dilationWidth,y=c.effectiveFilterHeight,g=c.effectiveFilterWidth,_=g-1-c.padInfo.left,b=y-1-c.padInfo.top,w=We(i.shape,"float32"),x=1/(p*f),I=n.data.get(a.dataId).values,S=We(a.shape,"float32",I);for(let T=0;T=c.outHeight||Math.floor(j)!==j))for(let ee=0;ee=c.outWidth||Math.floor(Y)!==Y||(H+=S.get(T,j,Y,M))}}w.set(H*x,T,D,z,M)}return n.makeTensorInfo(w.shape,w.dtype,w.values)}var YF={kernelName:Nh,backendName:"cpu",kernelFunc:ZF};function JF(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,scale:s,offset:i,mean:o,variance:l}=t;v.assert(o.shape.length===l.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(s==null||o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks."),_e([a,o,l,s,i],"batchNorm");let{varianceEpsilon:u}=r;u==null&&(u=.001);let c=n.data.get(a.dataId).values,h=n.data.get(o.dataId).values,d=n.data.get(l.dataId).values,p=s?n.data.get(s.dataId).values:new Float32Array([1]),f=i?n.data.get(i.dataId).values:new Float32Array([0]),m=new Float32Array(c.length),A=f.length,y=p.length,g=d.length,_=h.length,b=0,w=0,x=0,I=0;for(let S=0;S=A&&(b=0),w>=_&&(w=0),x>=y&&(x=0),I>=g&&(I=0);return n.makeTensorInfo(a.shape,a.dtype,m)}var QF={kernelName:bs,backendName:"cpu",kernelFunc:JF};function eM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;_e([a],"batchToSpaceND");let o=s.reduce((y,g)=>y*g),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=gt({inputs:{x:a},backend:n,attrs:{shape:l}}),f=or({inputs:{x:p},backend:n,attrs:{perm:u}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Ai({inputs:{x:m},backend:n,attrs:{begin:h,size:d}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var tM={kernelName:cu,backendName:"cpu",kernelFunc:eM};function nM(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.data.get(a.dataId).values,l=n.data.get(s.dataId).values,u=Im(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var rM={kernelName:Sh,backendName:"cpu",kernelFunc:nM},aM=it(Ia,(e,t)=>{let n=t;return e>n.clipValueMax?n.clipValueMax:e{let{x:t}=e.inputs,n=e.backend,r=new Float32Array(v.sizeFromShape(t.shape)),a=n.data.get(t.dataId),s=a.complexTensorInfos.real,i=a.complexTensorInfos.imag,o=n.data.get(s.dataId).values,l=n.data.get(i.dataId).values;for(let u=0;um.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(m=>v.sizeFromShape(m.shape)>0);if(o.length===1)return Lr({inputs:{x:o[0]},backend:n});let l=o.map(m=>m.shape);if(R.assertParamsConsistent(l,s),o[0].dtype==="complex64"){let m=o.map(b=>mi({inputs:{input:b},backend:n})),A=o.map(b=>_l({inputs:{input:b},backend:n})),y=bl({inputs:m,backend:n,attrs:{axis:s}}),g=bl({inputs:A,backend:n,attrs:{axis:s}}),_=On({inputs:{real:y,imag:g},backend:n});return m.forEach(b=>n.disposeIntermediateTensorInfo(b)),A.forEach(b=>n.disposeIntermediateTensorInfo(b)),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(g),_}let u=o.map(m=>{let A=v.sizeFromShape(m.shape.slice(s));return gt({inputs:{x:m},backend:n,attrs:{shape:[-1,A]}})}),c=u.map(m=>({vals:n.data.get(m.dataId).values,shape:m.shape}));i=R.computeOutShape(u.map(m=>m.shape),1);let h=u[0].shape[0]===1,d=Sm(c,i,t[0].dtype,h),p=R.computeOutShape(o.map(m=>m.shape),s),f=n.makeTensorInfo(p,t[0].dtype,d);return u.forEach(m=>n.disposeIntermediateTensorInfo(m)),f}var uM={kernelName:ao,backendName:"cpu",kernelFunc:bl};function xw(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r;_e([a,s],"conv2d");let h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p=d.filterHeight,f=d.filterWidth,m=d.dilationHeight,A=d.dilationWidth,y=d.padInfo.left,g=d.padInfo.top,_=d.dataFormat==="channelsLast",b=new Ot(d.outShape,a.dtype),w=v.computeStrides(a.shape),x=v.computeStrides(s.shape),I=w[0],S=_?w[1]:w[2],T=_?w[2]:1,M=_?1:w[1],D=b.strides[0],z=_?b.strides[1]:b.strides[2],W=_?b.strides[2]:1,U=_?1:b.strides[1],H=n.data.get(a.dataId).values,X=n.data.get(s.dataId).values,j=b.values;for(let ee=0;ee=d.inHeight)continue;let fe=he*x[0],pe=Y+oe*S;for(let ke=0;ke=d.inWidth)continue;let tt=fe+Oe*x[1],nt=pe+$e*T,ot=tt;for(let Ze=0;Ze=u.inDepth)continue;let ee=X*T[0],Y=D+j*S[1];for(let ae=0;ae=u.inHeight)continue;let oe=ee+Q*T[1],fe=Y+he*S[2];for(let pe=0;pe=u.inWidth)continue;let $e=oe+Me*T[2],tt=fe+Oe*u.inChannels,nt=$e;for(let ot=0;otMath.cos(e)),bM={kernelName:ms,backendName:"cpu",kernelFunc:_M},vM=it(so,e=>Math.cosh(e)),kM={kernelName:so,backendName:"cpu",kernelFunc:vM};function NM(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,[c,h,d,p]=a.shape,f=s.shape[0],[m,A]=o,y=We([f,m,A,p],"float32"),g=n.data.get(s.dataId).values,_=n.data.get(i.dataId).values,b=n.data.get(a.dataId).values,w=v.computeStrides(a.shape),x=v.computeStrides(y.shape);for(let I=0;I=c)continue;let U=m>1?(D-T)*(h-1)/(m-1):0,H=A>1?(z-M)*(d-1)/(A-1):0;for(let X=0;X1?T*(h-1)+X*U:.5*(T+D)*(h-1);if(j<0||j>h-1){for(let ee=0;ee1?M*(d-1)+te*H:.5*(M+z)*(d-1);if(ie<0||ie>d-1){for(let fe=0;fe1?M*(d-1)+ee*H:.5*(M+z)*(d-1);if(Y<0||Y>d-1){for(let ie=0;iey+f-g-1:(y,g)=>y+g;for(let y=0;y`Only NHWC dataFormat supported on CPU for depthToSpace. Got ${i}`),v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=a.shape[1],u=a.shape[2],c=a.shape[3],h=l*s,d=u*s,p=c/(s*s),f=n.data.get(a.dataId).values,m=new Float32Array(o*h*d*p),A=0;for(let y=0;y`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${d}'`);let p=R.computeConv2DInfo(a.shape,s.shape,i,d,o,u,!0),{filterHeight:f,filterWidth:m,dilationHeight:A,dilationWidth:y,padInfo:g}=p,_=g.left,b=g.top,w=p.outChannels/p.inChannels,x=new Ot(p.outShape,a.dtype),I=n.data.get(a.dataId).values,S=n.data.get(s.dataId).values,T=x.values;for(let M=0;M=p.inHeight)continue;let ee=X*h[0],Y=D+j*c[1];for(let ae=0;ae=p.inWidth)continue;let oe=ee+Q*h[1],fe=Y+he*p.inChannels,pe=te,ke=oe;for(let Ie=0;Ie{let{x:r,filter:a}=e,{strides:s,pad:i,dilations:o}=n,l=t,u=l.data.get(r.dataId).values,c=r.shape.length,h=l.data.get(a.dataId).values,d=a.shape.length,{batchSize:p,inHeight:f,inWidth:m,inChannels:A,outHeight:y,outWidth:g,padInfo:_,strideHeight:b,strideWidth:w,filterHeight:x,filterWidth:I,dilationHeight:S,dilationWidth:T,outShape:M}=R.computeDilation2DInfo(r.shape,a.shape,s,i,"NHWC",o),D=v.sizeFromShape(M),z=M.length,W=v.getArrayFromDType(r.dtype,D);for(let U=0;U=0&&Q=0&&oeae&&(ae=ke)}}}let te=v.locToIndex([U,H,j,Y],z,v.computeStrides(M));W[te]=ae}}}return{dataId:l.write(v.toTypedArray(W,r.dtype),M,r.dtype),shape:M,dtype:r.dtype}}},BM={kernelName:zh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${zh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(a.shape,a.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=te,ae=Q)}}}D[Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),a.shape,a.dtype),shape:a.shape,dtype:a.dtype}}},VM={kernelName:Oh,backendName:"cpu",kernelFunc:({inputs:e,backend:t,attrs:n})=>{let{x:r,filter:a,dy:s}=e,{strides:i,pad:o,dilations:l}=n,u=t,c=v.toNestedArray(r.shape,u.data.get(r.dataId).values),h=v.toNestedArray(a.shape,u.data.get(a.dataId).values),{batchSize:d,inHeight:p,inWidth:f,inChannels:m,outHeight:A,outWidth:y,padInfo:g,strideHeight:_,strideWidth:b,filterHeight:w,filterWidth:x,dilationHeight:I,dilationWidth:S,outShape:T}=R.computeDilation2DInfo(r.shape,a.shape,i,o,"NHWC",l);v.assert(s.rank===T.length,()=>`Error in ${Oh}, dy must have the same rank as output ${T.length}, but got ${s.rank}`);let M=v.toNestedArray(T,u.data.get(s.dataId).values),D=v.makeZerosNestedTypedArray(r.shape,r.dtype);for(let z=0;z=0&&ie=0&&heee&&(ee=oe,Y=ie,ae=he)}}}D[z][Y][ae][j]+=M[z][W][H][j]}}}return{dataId:u.write(v.toTypedArray(D,r.dtype),r.shape,r.dtype),shape:r.shape,dtype:r.dtype}}};function UM(e){let{inputs:t,backend:n}=e,{dy:r,y:a}=t;_e([r,a],"eluGrad");let s=new Float32Array(v.sizeFromShape(a.shape)),i=n.data.get(a.dataId).values,o=n.data.get(r.dataId).values;for(let l=0;l=1?s[l]=o[l]:s[l]=o[l]*(u+1)}return n.makeTensorInfo(a.shape,"float32",s)}var HM={kernelName:Ph,backendName:"cpu",kernelFunc:UM},jM=Rt((e,t)=>e===t?1:0),_w=qt(co,jM,null,"bool"),GM={kernelName:co,backendName:"cpu",kernelFunc:_w},qM=R.ERF_P,XM=R.ERF_A1,KM=R.ERF_A2,ZM=R.ERF_A3,YM=R.ERF_A4,JM=R.ERF_A5,QM=it(uo,e=>{let t=Math.sign(e),n=Math.abs(e),r=1/(1+qM*n);return t*(1-((((JM*r+YM)*r+ZM)*r+KM)*r+XM)*r*Math.exp(-n*n))}),e$={kernelName:uo,backendName:"cpu",kernelFunc:QM};function Qd(e){let{inputs:t,backend:n,attrs:r}=e,{input:a}=t,{dim:s}=r,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),gt({inputs:{x:a},backend:n,attrs:{shape:o}})}var t$={kernelName:ho,backendName:"cpu",kernelFunc:Qd},n$=Rt((e,t)=>e/t),Om=qt(gs,n$),zm={kernelName:gs,backendName:"cpu",kernelFunc:Om};function bw(e,t,n){let r=e.shape,a=r[0],s=r[1],i=n.data.get(e.dataId),o=i.complexTensorInfos.real,l=i.complexTensorInfos.imag,u=[a,s],c=v.sizeFromShape(u),h=v.getTypedArrayFromDType("float32",c),d=v.getTypedArrayFromDType("float32",c);for(let A=0;A{let{image:r}=e,a=n,s=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[i,o,l,u]=r.shape,c=a.data.get(r.dataId).values;for(let h=0;h=0&&_Math.floor(e/t)),d$=qt(_s,h$,null,"int32"),p$={kernelName:_s,backendName:"cpu",kernelFunc:d$};function f$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=xw({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var m$={kernelName:ei,backendName:"cpu",kernelFunc:f$};function A$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=ww({inputs:{x:a,filter:s},backend:n,attrs:{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d}});if(i){let A=m;m=tc({inputs:{a:m,b:i},backend:n}),n.disposeIntermediateTensorInfo(A)}if(p){let A=m;m=$m(n,m,p,o,f),n.disposeIntermediateTensorInfo(A)}return m}var y$={kernelName:ti,backendName:"cpu",kernelFunc:A$};function g$(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=v.sizeFromShape(r.shape),i=a.shape,o=i[i.length-1],[l,u,c,h]=R.prepareAndValidate(r,a);if(u===0)return n.makeTensorInfo(l,r.dtype,[]);let d=We([u,c],r.dtype),p=n.data.get(a.dataId).values,f=n.data.get(r.dataId).values;for(let m=0;m=s/c)throw new Error(`Invalid indices: ${A} does not index into ${r.shape}`);for(let g=0;ge>=t?1:0),v$=qt(vs,b$,null,"bool"),k$={kernelName:vs,backendName:"cpu",kernelFunc:v$};function N$(e){let{inputs:t,backend:n}=e,{input:r}=t,a=v.sizeFromShape(r.shape),s=r.shape[r.shape.length-1],i=a/s,o=gt({inputs:{x:r},backend:n,attrs:{shape:[i,s]}}),l=bw(o,!0,n),u=gt({inputs:{x:l},backend:n,attrs:{shape:r.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(l),u}var I$={kernelName:Wh,backendName:"cpu",kernelFunc:N$},S$=it(go,e=>Number.isFinite(e)?1:0,"bool"),T$={kernelName:go,backendName:"cpu",kernelFunc:S$},C$=it(xo,e=>Math.abs(e)===Infinity?1:0,"bool"),E$={kernelName:xo,backendName:"cpu",kernelFunc:C$},R$=it(wo,e=>Number.isNaN(e)?1:0,"bool"),F$={kernelName:wo,backendName:"cpu",kernelFunc:R$},M$=Rt((e,t)=>e<=t?1:0),$$=qt(bo,M$,null,"bool"),D$={kernelName:bo,backendName:"cpu",kernelFunc:$$};function O$(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=Xx(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var z$={kernelName:Vh,backendName:"cpu",kernelFunc:O$},P$=it(vo,e=>Math.log1p(e)),L$={kernelName:vo,backendName:"cpu",kernelFunc:P$},W$=Rt((e,t)=>e&&t),B$=qt(ko,W$,null,"bool"),V$={kernelName:ko,backendName:"cpu",kernelFunc:B$},U$=it(mu,e=>e?0:1,"bool"),H$={kernelName:mu,backendName:"cpu",kernelFunc:U$},j$=Rt((e,t)=>e||t),G$=qt(Au,j$,null,"bool"),q$={kernelName:Au,backendName:"cpu",kernelFunc:G$};function X$(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r;_e(a,"LRN");let u=a.shape[3],c=u-1,h=n.data.get(a.dataId).values,d=v.sizeFromShape(a.shape),p=new Float32Array(d);function f(m){let A=m%u,y=m-A+Math.max(0,A-s),g=m-A+Math.min(A+s,c),_=0;for(;y<=g;y++){let b=h[y];_+=b*b}return _}for(let m=0;m`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l),h;if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))h=Lr({inputs:{x:a},backend:n});else{let d=n.data.get(a.dataId).values,p=v.computeStrides(a.shape),f=Dm(d,a.shape,a.dtype,p,c,"max");h=n.makeTensorInfo(c.outShape,a.dtype,f.values)}return h}var eD={kernelName:Cs,backendName:"cpu",kernelFunc:Q$};function tD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r;_e(a,"maxPool3d");let c=R.computePool3DInfo(a.shape,s,i,1,o,l,u),h=n.data.get(a.dataId).values,d=gw(h,a.shape,a.dtype,v.computeStrides(a.shape),c,"max");return n.makeTensorInfo(d.shape,"float32",d.values)}var nD={kernelName:gu,backendName:"cpu",kernelFunc:tD};function rD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=r;_e([a,s],"maxPool3DGrad");let c=R.computePool3DInfo(s.shape,i,o,1,l,u),h=n.bufferSync(s),d=UF(h,c),p=c.strideDepth,f=c.strideHeight,m=c.strideWidth,A=c.dilationDepth,y=c.dilationHeight,g=c.dilationWidth,_=c.effectiveFilterDepth,b=c.effectiveFilterHeight,w=c.effectiveFilterWidth,x=_-1-c.padInfo.front,I=w-1-c.padInfo.left,S=b-1-c.padInfo.top,T=We(s.shape,"float32"),M=n.bufferSync(a);for(let D=0;D=c.outDepth||Math.floor(te)!==te))for(let ie=0;ie=c.outHeight||Math.floor(Q)!==Q))for(let he=0;he=c.outWidth||Math.floor(oe)!==oe)continue;let fe=_*b*w-1-d.get(D,te,Q,oe,z),pe=ae*b*w+ie*w+he,ke=fe===pe?1:0;ke!==0&&(Y+=M.get(D,te,Q,oe,z)*ke)}}}T.set(Y,D,W,U,H,z)}return n.makeTensorInfo(T.shape,T.dtype,T.values)}var aD={kernelName:jh,backendName:"cpu",kernelFunc:rD};function sD(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;_e([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=n.data.get(o.dataId).values,f=We(d.outShape,o.dtype,yw(p,o.shape,o.dtype,d).values),m=d.strideHeight,A=d.strideWidth,y=d.dilationHeight,g=d.dilationWidth,_=d.effectiveFilterHeight,b=d.effectiveFilterWidth,w=b-1-d.padInfo.left,x=_-1-d.padInfo.top,I=We(o.shape,"float32"),S=n.data.get(a.dataId).values,T=We(a.shape,"float32",S);for(let M=0;M=d.outHeight||Math.floor(ee)!==ee))for(let Y=0;Y=d.outWidth||Math.floor(ae)!==ae)continue;let te=_*b-1-f.get(M,ee,ae,D),ie=j*b+Y,Q=te===ie?1:0;Q!==0&&(X+=T.get(M,ee,ae,D)*Q)}}I.set(X,M,z,W,D)}return n.makeTensorInfo(I.shape,I.dtype,I.values)}var iD={kernelName:Hh,backendName:"cpu",kernelFunc:sD};function oD(e,t,n,r,a){let s=v.computeStrides(t),i=Dm(e,t,n,s,a,"max"),o=yw(e,t,n,a,!0,r);return[i.values,o.values]}var lD={kernelName:Gh,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;_e(r,"MaxPoolWithArgmax");let u=l.data.get(r.dataId).values,c=R.computePool2DInfo(r.shape,a,s,[1,1],i),[h,d]=oD(u,r.shape,r.dtype,o,c),p=l.write(h,c.outShape,r.dtype),f=l.write(d,c.outShape,r.dtype);return[{dataId:p,shape:c.outShape,dtype:r.dtype},{dataId:f,shape:c.outShape,dtype:"int32"}]}};function ep(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"sum");let o;a.dtype==="bool"?o=Wa({inputs:{x:a},backend:n,attrs:{dtype:"int32"}}):o=Lr({inputs:{x:a},backend:n});let l=o.shape.length,u=v.parseAxisParam(s,o.shape),c=R.getAxesPermutation(u,l),h=u,d=o;c!=null&&(d=or({inputs:{x:o},backend:n,attrs:{perm:c}}),h=R.getInnerMostAxes(h.length,l)),R.assertAxesAreInnerMostDims("sum",h,d.shape.length);let[p,f]=R.computeOutAndReduceShapes(d.shape,h),m=R.upcastType(d.dtype,"int32"),A=Jd(n,p,m),y=v.sizeFromShape(f),g=n.data.get(A.dataId).values,_=n.data.get(d.dataId).values;for(let b=0;bn.disposeIntermediateTensorInfo(m)),f}var hD={kernelName:Es,backendName:"cpu",kernelFunc:cD};function dD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;_e(a,"min");let o=v.parseAxisParam(s,a.shape),l=o,u=R.getAxesPermutation(l,a.shape.length),c=a;u!=null&&(c=or({inputs:{x:a},backend:n,attrs:{perm:u}}),l=R.getInnerMostAxes(l.length,a.shape.length)),R.assertAxesAreInnerMostDims("min",l,c.shape.length);let[h,d]=R.computeOutAndReduceShapes(c.shape,l),p=v.sizeFromShape(d),f=v.makeZerosTypedArray(v.sizeFromShape(h),c.dtype),m=n.data.get(c.dataId).values;for(let y=0;yg[0]+a.shape[_]+g[1]),l=s.map(g=>g[0]),u=s.map((g,_)=>g[0]+a.shape[_]),c=i==="reflect"?0:1,h=n.data.get(a.dataId).values,d=a.shape.length,p=v.computeStrides(a.shape),f=v.sizeFromShape(o),m=o.length,A=v.computeStrides(o),y=v.getTypedArrayFromDType(a.dtype,f);for(let g=0;g=u[w]&&(_[w]=(u[w]-1)*2-_[w]+c);_=_.map((w,x)=>w-l[x]);let b=v.locToIndex(_,d,p);y[g]=h[b]}return{dataId:n.write(y,o,a.dtype),shape:o,dtype:a.dtype}}var mD={kernelName:xu,backendName:"cpu",kernelFunc:fD},AD=Rt((e,t)=>{let n=e%t;return e<0&&t<0||e>=0&&t>=0?n:(n+t)%t}),yD=qt(No,AD),gD={kernelName:No,backendName:"cpu",kernelFunc:yD},xD=qi(H8());function kw(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=a.shape.length,o=s;if(o===-1&&(o=i-1),o!==i-1)throw Error(`Softmax along a non-last dimension is not yet supported. Logits was rank ${i} and dim was ${o}`);let l=v.parseAxisParam([o],a.shape),u=vw({inputs:{x:a},backend:n,attrs:{reductionIndices:l,keepDims:!1}}),c=R.expandShapeToKeepDim(u.shape,l),h=gt({inputs:{x:u},backend:n,attrs:{shape:c}}),d=Mm({inputs:{a,b:h},backend:n}),p=uw({inputs:{x:d},backend:n}),f=ep({inputs:{x:p},backend:n,attrs:{axis:l,keepDims:!1}}),m=gt({inputs:{x:f},backend:n,attrs:{shape:c}}),A=Om({inputs:{a:p,b:m},backend:n});return n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(m),A}var wD={kernelName:Xs,backendName:"cpu",kernelFunc:kw};function _D(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r;_e(a,"multinomial");let l=o?a:kw({inputs:{logits:a},backend:n,attrs:{dim:-1}}),u=l.shape[0],c=l.shape[1],h=n.data.get(l.dataId).values,d=[u,s],p=v.makeZerosTypedArray(v.sizeFromShape(d),"int32");for(let f=0;f=0&&c[h]{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=Qd({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=bl({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var OD={kernelName:Fo,backendName:"cpu",kernelFunc:Iw};function zD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r;_e(a,"pad");let o=s.map((y,g)=>y[0]+a.shape[g]+y[1]),l=s.map(y=>y[0]),u=n.data.get(a.dataId).values,c=v.sizeFromShape(a.shape),h=a.shape.length,d=v.computeStrides(a.shape),p=v.sizeFromShape(o),f=o.length,m=v.computeStrides(o),A=v.getTypedArrayFromDType(a.dtype,p);i!==0&&A.fill(i);for(let y=0;yb+l[w]),_=v.locToIndex(g,f,m);A[_]=u[y]}return{dataId:n.write(A,o,a.dtype),shape:o,dtype:a.dtype}}var Sw={kernelName:Ds,backendName:"cpu",kernelFunc:zD},PD=Rt((e,t)=>Math.pow(e,t)),LD=qt(Os,PD),WD={kernelName:Os,backendName:"cpu",kernelFunc:LD};function BD(e){let{backend:t,attrs:n}=e,{start:r,stop:a,dtype:s,step:i}=n,o=Em(r,a,i,s);return t.makeTensorInfo([o.length],s,o)}var VD={kernelName:wu,backendName:"cpu",kernelFunc:BD},UD=it($o,e=>1/e),HD={kernelName:$o,backendName:"cpu",kernelFunc:UD};function jD(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r;_e(a,"resizeBilinear");let l=v.computeStrides(a.shape),[u,c]=o,[h,d,p,f]=a.shape,m=n.data.get(a.dataId).values,A=new Float32Array(v.sizeFromShape([h,u,c,f])),y=[s&&u>1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=0,b=y[0]/g[0],w=y[1]/g[1];for(let x=0;x1?u-1:u,i&&p>1?c-1:c],A=[i&&d>1?d-1:d,i&&p>1?p-1:p],y=m[0]/A[0],g=m[1]/A[1],_=n.data.get(s.dataId).values,b=0;for(let w=0;w1?d-1:d,s&&c>1?p-1:p],g=[s&&u>1?u-1:u,s&&c>1?c-1:c],_=y[0]/g[0],b=y[1]/g[1],w=0;for(let x=0;x1?c-1:c,i&&f>1?h-1:h],g=[i&&p>1?p-1:p,i&&f>1?f-1:f],_=y[0]/g[0],b=y[1]/g[1],w=1/_,x=1/b,I=Math.ceil(w)*2+2,S=Math.ceil(x)*2+2;for(let T=0;T=p)continue;let Q=M+ie*l[1],he=ie*_,oe=Math.min(c-1,i?Math.round(he):Math.floor(he));if(D===oe)for(let fe=0;fe=f)continue;let ke=Q+pe*l[2],Ie=pe*b,Me=Math.min(h-1,i?Math.round(Ie):Math.floor(Ie));H===Me&&(ae+=A[ke+Y])}}m[X+Y]=ae}}}}return n.makeTensorInfo(a.shape,a.dtype,m)}var JD={kernelName:Kh,backendName:"cpu",kernelFunc:YD};function QD(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r;_e(a,"reverse");let i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return Lr({inputs:{x:a},backend:n});let l=new Ot(a.shape,a.dtype),u=n.bufferSync(a);for(let c=0;cd[p]=a.shape[p]-1-d[p]),l.set(u.get(...d),...h)}return n.makeTensorInfo(l.shape,l.dtype,l.values)}var eO={kernelName:Bs,backendName:"cpu",kernelFunc:QD},tO={kernelName:Ko,backendName:"cpu",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=v.getTypedArrayFromDType(r.dtype,v.sizeFromShape(r.shape)),[u,c,h,d]=r.shape,[p,f]=R.getImageCenter(i,c,h),m=255,A=Math.sin(a),y=Math.cos(a),g=o.data.get(r.dataId).values;for(let _=0;_=0&&W=0&&U{let t=Math.floor(e);return e-t<.5?Math.floor(e):e-t>.5?Math.ceil(e):t%2==0?t:t+1}),rO={kernelName:Vs,backendName:"cpu",kernelFunc:nO};function Tw(e,t,n,r,a,s,i,o,l,u){let c=[r/a,a],h=e.values,d=t.values;if(r===0)return We(n,t.dtype);let p=We(c,t.dtype);p.values.fill(l);for(let f=0;f=r/a)throw new Error(`Invalid indices: ${m} does not index into ${n}`);for(let y=0;y1||a.shape.length===1?1:v.sizeFromShape(a.shape.slice(1));for(let f=0;fe>=0?uO*e:lO*(Math.exp(e)-1)),hO={kernelName:Po,backendName:"cpu",kernelFunc:cO},dO=it(js,e=>1/(1+Math.exp(-e))),pO={kernelName:js,backendName:"cpu",kernelFunc:dO},fO=it(Bo,e=>e<0?-1:e>0?1:0),mO={kernelName:Bo,backendName:"cpu",kernelFunc:fO},AO=it(Hs,e=>Math.sin(e)),yO={kernelName:Hs,backendName:"cpu",kernelFunc:AO},gO=it(Wo,e=>Math.sinh(e)),xO={kernelName:Wo,backendName:"cpu",kernelFunc:gO},wO=11920928955078125e-23,Cw=Math.log(wO)+2,_O=it(Vo,e=>{let t=e>-Cw,n=e{let d=[...c];d[o]=h;let p=Ai({inputs:{x:a},backend:n,attrs:{begin:u,size:d}});return u[o]+=h,p})}var TO={kernelName:Uo,backendName:"cpu",kernelFunc:SO},CO=it(Gs,e=>Math.sqrt(e)),EO={kernelName:Gs,backendName:"cpu",kernelFunc:CO},RO={kernelName:vu,backendName:"cpu",kernelFunc:({inputs:e,backend:t})=>{let{x:n}=e,r=t;_e(n,"square");let a=r.data.get(n.dataId).values,s=new Float32Array(a.length);for(let i=0;i{let n=t;return isNaN(e)?NaN:e>0?1:n.alpha}),MO={kernelName:Ta,backendName:"cpu",kernelFunc:FO};function $O(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r;_e(a,"stridedSlice");let{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=gt({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=Ai({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=gt({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else{let x=n.bufferSync(_),I=aw(g,x,m,f);b=n.makeTensorInfo(I.shape,I.dtype,I.values)}let w=gt({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var DO={kernelName:Ho,backendName:"cpu",kernelFunc:$O},OO=it(jo,e=>Math.tan(e)),zO={kernelName:jo,backendName:"cpu",kernelFunc:OO},PO=it(Ys,e=>Math.tanh(e)),LO={kernelName:Ys,backendName:"cpu",kernelFunc:PO};function WO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reps:s}=r;_e(a,"tile");let i=iw(n.bufferSync(a),s);return n.makeTensorInfo(i.shape,i.dtype,i.values)}var BO={kernelName:Sa,backendName:"cpu",kernelFunc:WO};function VO(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r;_e(a,"topk");let o=n.data.get(a.dataId).values,[l,u]=ow(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var UO={kernelName:Go,backendName:"cpu",kernelFunc:VO};function GO(e){let{inputs:t,attrs:n,backend:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=n,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=v.computeStrides(a.shape),g=y[0],_=y[1],b=y[2],w=v.getTypedArrayFromDType(a.dtype,v.sizeFromShape(A));w.fill(l);let x=r.data.get(a.dataId).values,I=r.data.get(s.dataId).values;for(let S=0;St-1)if(t<=1)n=0;else{let r=2*t;n-=r*Math.trunc(n/r),n>=t&&(n=r-n-1)}return v.clamp(0,n,t-1)}function KO(e,t){let n=e;if(n<0)if(t<=1)n=0;else{let r=t-1;n+=t*(Math.trunc(-n/r)+1)}else if(n>t-1)if(t<=1)n=0;else{let r=t-1;n-=t*Math.trunc(n/r)}return v.clamp(0,n,t-1)}function ZO(e,t){return e}function YO(e,t){return v.clamp(0,e,t-1)}function nc(e,t,n,r,a,s,i,o,l,u,c){let h=i*r+o*a+l*s+u;return 0<=o&&on.disposeIntermediateTensorInfo(f)),p}var rz={kernelName:ku,backendName:"cpu",kernelFunc:nz},az=[yF,bR,xF,_F,TR,vF,NF,SF,CF,RF,MF,DF,zF,WF,VF,jF,qF,KF,YF,mF,QF,tM,rM,IR,ER,sM,vR,oM,uM,dM,fM,cM,gM,wM,AM,bM,kM,IM,TM,EM,FM,MM,DM,zM,LM,WM,VM,BM,zm,lF,HM,GM,e$,RR,t$,MR,o$,u$,c$,DR,p$,m$,y$,x$,_$,zR,k$,kR,I$,lM,T$,E$,F$,uF,LR,D$,z$,BR,L$,V$,H$,q$,K$,Y$,UR,eD,nD,aD,iD,lD,J$,hD,pD,jR,mD,gD,bD,qR,KR,ND,TD,RD,YR,MD,DD,OD,Sw,WD,hF,eF,VD,NR,HD,dF,pF,fF,GD,XD,ZD,JD,eO,tO,rO,nF,sO,oO,hO,pO,mO,yO,xO,rF,wD,bO,kO,IO,TO,EO,RO,sF,MO,DO,oF,uD,zO,LO,BO,UO,JR,qO,QO,tz,rz,$D];for(let e of az)ni(e);var Rw={};ze(Rw,{assertNotComplex:()=>vl,bindCanvasToFramebuffer:()=>oz,bindColorTextureToFramebuffer:()=>rp,bindTextureToProgramUniformSampler:()=>Gw,bindTextureUnit:()=>Uw,bindVertexBufferToProgramAttribute:()=>Wm,callAndCheck:()=>xe,canBeRepresented:()=>Fw,createFragmentShader:()=>Dw,createFramebuffer:()=>Vw,createProgram:()=>Ow,createStaticIndexBuffer:()=>Lw,createStaticVertexBuffer:()=>Pw,createTexture:()=>Ww,createVertexShader:()=>$w,getBatchDim:()=>yi,getExtensionOrThrow:()=>rc,getFramebufferErrorMessage:()=>qw,getMaxTexturesInShader:()=>Zw,getNumChannels:()=>sz,getProgramUniformLocation:()=>jw,getProgramUniformLocationOrThrow:()=>Hw,getRowsCols:()=>gi,getShapeAs3D:()=>ap,getTextureShapeFromLogicalShape:()=>Xw,getWebGLDisjointQueryTimerVersion:()=>Yw,getWebGLErrorMessage:()=>Mw,getWebGLMaxTextureSize:()=>Kw,hasExtension:()=>Kn,isCapableOfRenderingToFloatTexture:()=>Jw,isDownloadFloatTextureEnabled:()=>Qw,isReshapeFree:()=>sc,isWebGLFenceEnabled:()=>e_,isWebGLVersionEnabled:()=>Vm,linkProgram:()=>zw,resetMaxTextureSize:()=>lz,resetMaxTexturesInShader:()=>uz,unbindColorTextureFromFramebuffer:()=>Bm,unbindTextureUnit:()=>iz,validateFramebuffer:()=>ac,validateProgram:()=>np,validateTextureSize:()=>Bw});var xi={},Um={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function sp(e,t){xi[e]=t}function Wr(e){if(!(e in xi)){let n=cz(e);if(n!==null)xi[e]=n;else return console.log("Could not get context for WebGL version",e),null}let t=xi[e];return t.isContextLost()?(delete xi[e],Wr(e)):(t.disable(t.DEPTH_TEST),t.disable(t.STENCIL_TEST),t.disable(t.BLEND),t.disable(t.DITHER),t.disable(t.POLYGON_OFFSET_FILL),t.disable(t.SAMPLE_COVERAGE),t.enable(t.SCISSOR_TEST),t.enable(t.CULL_FACE),t.cullFace(t.BACK),xi[e])}function hz(e){if(typeof OffscreenCanvas!="undefined"&&e===2)return new OffscreenCanvas(300,150);if(typeof document!="undefined")return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}function cz(e){if(e!==1&&e!==2)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");let t=hz(e);return t.addEventListener("webglcontextlost",n=>{n.preventDefault(),delete xi[e]},!1),e===1?t.getContext("webgl",Um)||t.getContext("experimental-webgl",Um):t.getContext("webgl2",Um)}var ic;(function(e){e[e.DENSE=0]="DENSE",e[e.SHARED_BATCH=1]="SHARED_BATCH"})(ic||(ic={}));var Zn;(function(e){e[e.RENDER=0]="RENDER",e[e.UPLOAD=1]="UPLOAD",e[e.PIXELS=2]="PIXELS",e[e.DOWNLOAD=3]="DOWNLOAD"})(Zn||(Zn={}));var tn;(function(e){e[e.UNPACKED_FLOAT16=0]="UNPACKED_FLOAT16",e[e.UNPACKED_FLOAT32=1]="UNPACKED_FLOAT32",e[e.PACKED_4X1_UNSIGNED_BYTE=2]="PACKED_4X1_UNSIGNED_BYTE",e[e.PACKED_2X2_FLOAT32=3]="PACKED_2X2_FLOAT32",e[e.PACKED_2X2_FLOAT16=4]="PACKED_2X2_FLOAT16"})(tn||(tn={}));function oc(e,t){return[t,e]}function dz(e,t){return e*t}function lc(e){let t=v.sizeFromShape(e),n=Math.ceil(t/4);return v.sizeToSquarishShape(n)}function kl(e,t){return[Math.max(1,Math.ceil(t/2)),Math.max(1,Math.ceil(e/2))]}function pz(e,t){let[n,r]=kl(e,t);return n*r*4}function Hm(e,t){let n=e,r,a,s,i,o,l,u,c,h,d;return J().getNumber("WEBGL_VERSION")===2?(r=n.R32F,a=n.R16F,s=n.RGBA16F,i=n.RGBA32F,o=n.RED,u=4,c=1,h=n.HALF_FLOAT,d=n.FLOAT):(r=e.RGBA,a=e.RGBA,s=e.RGBA,i=n.RGBA,o=e.RGBA,u=4,c=4,h=t!=null?t.HALF_FLOAT_OES:null,d=e.FLOAT),l=e.RGBA,{internalFormatFloat:r,internalFormatHalfFloat:a,internalFormatPackedHalfFloat:s,internalFormatPackedFloat:i,textureFormatFloat:o,downloadTextureFormat:l,downloadUnpackNumChannels:u,defaultNumChannels:c,textureTypeHalfFloat:h,textureTypeFloat:d}}function xe(e,t){let n=t();return J().getBool("DEBUG")&&fz(e),n}function fz(e){let t=e.getError();if(t!==e.NO_ERROR)throw new Error("WebGL Error: "+Mw(e,t))}var mz=596e-10,Az=65504;function Fw(e){return!!(J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")||e===0||mze.getExtension(t),'Extension "'+t+'" not supported on this browser.')}function $w(e,t){let n=la(e,()=>e.createShader(e.VERTEX_SHADER),"Unable to create vertex WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw console.log(e.getShaderInfoLog(n)),new Error("Failed to compile vertex shader.");return n}function Dw(e,t){let n=la(e,()=>e.createShader(e.FRAGMENT_SHADER),"Unable to create fragment WebGLShader.");if(xe(e,()=>e.shaderSource(n,t)),xe(e,()=>e.compileShader(n)),e.getShaderParameter(n,e.COMPILE_STATUS)===!1)throw yz(t,e.getShaderInfoLog(n)),new Error("Failed to compile fragment shader.");return n}var gz=/ERROR: [0-9]+:([0-9]+):/g;function yz(e,t){let n=gz.exec(t);if(n==null){console.log(`Couldn't parse line number in error: ${t}`),console.log(e);return}let r=+n[1],a=e.split(` `),s=a.length.toString().length+2,i=a.map((h,d)=>v.rightPad((d+1).toString(),s)+h),o=0;for(let h=0;he.createProgram(),"Unable to create WebGLProgram.")}function Ow(e,t){if(xe(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function np(e,t){if(xe(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function zw(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Pw(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function az(){return J().getNumber("WEBGL_VERSION")===2?1:4}function Lw(e){return la(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function Ww(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function Bw(e){return la(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function Wm(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),xe(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),xe(e,()=>e.enableVertexAttribArray(o)),!0)}function Vw(e,t,n){e_(e,n),xe(e,()=>e.activeTexture(e.TEXTURE0+n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function sz(e,t){e_(e,t),xe(e,()=>e.activeTexture(e.TEXTURE0+t)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Uw(e,t,n){return la(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function Hw(e,t,n){return e.getUniformLocation(t,n)}function jw(e,t,n,r){xe(e,()=>Vw(e,t,r)),xe(e,()=>e.uniform1i(n,r))}function iz(e){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),xe(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function rp(e,t,n){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function Bm(e,t){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function ac(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+Gw(e,t))}function Gw(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function la(e,t,n){let r=xe(e,()=>t());if(r==null)throw new Error(n);return r}function e_(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function yi(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function gi(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function ap(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[yi(e),...gi(e)]),t}function qw(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=yi(e),s=2,i=2;return e.length&&([s,i]=gi(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function ip(e){return e%2==0}function sc(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||ip(n)&&ip(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&ip(e[0])&&ip(t[0])}var op,lp;function Xw(e){if(op==null){let t=Wr(e);op=t.getParameter(t.MAX_TEXTURE_SIZE)}return op}function oz(){op=null}function lz(){lp=null}function Kw(e){if(lp==null){let t=Wr(e);lp=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,lp)}function Zw(e){if(e===0)return 0;let t,n=Wr(e);return Kn(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Kn(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function Kn(e,t){return e.getExtension(t)!=null}function Vm(e){try{if(Wr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function Yw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float"))return!1}else if(!Kn(t,"EXT_color_buffer_float"))return!1;return jm(t)}function Jw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float")||!Kn(t,"WEBGL_color_buffer_float"))return!1}else{if(Kn(t,"EXT_color_buffer_float"))return jm(t);let n="EXT_color_buffer_half_float";if(Kn(t,n)){let r=t.getExtension(n);return gz(t,r)}return!1}return jm(t)}function jm(e){let t=Hm(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function gz(e,t){let n=Hm(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function Qw(e){return e!==2?!1:Wr(e).fenceSync!=null}function vl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Fe=J();Fe.registerFlag("HAS_WEBGL",()=>Fe.getNumber("WEBGL_VERSION")>0);Fe.registerFlag("WEBGL_VERSION",()=>Vm(2)?2:Vm(1)?1:0);Fe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Fe.get("WEBGL_VERSION")===2);Fe.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Fe.registerFlag("WEBGL_PACK",()=>Fe.getBool("HAS_WEBGL"));Fe.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_CLIP",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_REDUCE",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_LAZILY_UNPACK",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_CONV_IM2COL",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>Xw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>Kw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Fe.getNumber("WEBGL_VERSION");return e===0?0:Zw(e)});Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Mu.isMobile());Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>Yw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Fe.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>Jw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_FENCE_API_ENABLED",()=>Qw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Fe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});Fe.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Mu.isMobile()&&Fe.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function fn(){let e,t,n,r,a,s,i,o,l,u;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` +`))}function Ow(e){return la(e,()=>e.createProgram(),"Unable to create WebGLProgram.")}function zw(e,t){if(xe(e,()=>e.linkProgram(t)),e.getProgramParameter(t,e.LINK_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Failed to link vertex and fragment shaders.")}function np(e,t){if(xe(e,()=>e.validateProgram(t)),e.getProgramParameter(t,e.VALIDATE_STATUS)===!1)throw console.log(e.getProgramInfoLog(t)),new Error("Shader program validation failed.")}function Pw(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function Lw(e,t){let n=la(e,()=>e.createBuffer(),"Unable to create WebGLBuffer");return xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,n)),xe(e,()=>e.bufferData(e.ELEMENT_ARRAY_BUFFER,t,e.STATIC_DRAW)),n}function sz(){return J().getNumber("WEBGL_VERSION")===2?1:4}function Ww(e){return la(e,()=>e.createTexture(),"Unable to create WebGLTexture.")}function Bw(e,t){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");if(e<=0||t<=0){let r=`[${e}x${t}]`;throw new Error("Requested texture size "+r+" is invalid.")}if(e>n||t>n){let r=`[${e}x${t}]`,a=`[${n}x${n}]`;throw new Error("Requested texture size "+r+" greater than WebGL maximum on this browser / GPU "+a+".")}}function Vw(e){return la(e,()=>e.createFramebuffer(),"Unable to create WebGLFramebuffer.")}function Wm(e,t,n,r,a,s,i){let o=e.getAttribLocation(t,n);return o===-1?!1:(xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,r)),xe(e,()=>e.vertexAttribPointer(o,a,e.FLOAT,!1,s,i)),xe(e,()=>e.enableVertexAttribArray(o)),!0)}function Uw(e,t,n){t_(e,n),xe(e,()=>e.activeTexture(e.TEXTURE0+n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,t))}function iz(e,t){t_(e,t),xe(e,()=>e.activeTexture(e.TEXTURE0+t)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function Hw(e,t,n){return la(e,()=>e.getUniformLocation(t,n),'uniform "'+n+'" not present in program.')}function jw(e,t,n){return e.getUniformLocation(t,n)}function Gw(e,t,n,r){xe(e,()=>Uw(e,t,r)),xe(e,()=>e.uniform1i(n,r))}function oz(e){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.viewport(0,0,e.canvas.width,e.canvas.height)),xe(e,()=>e.scissor(0,0,e.canvas.width,e.canvas.height))}function rp(e,t,n){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,n)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,t,0))}function Bm(e,t){xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,t)),xe(e,()=>e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,null,0))}function ac(e){let t=e.checkFramebufferStatus(e.FRAMEBUFFER);if(t!==e.FRAMEBUFFER_COMPLETE)throw new Error("Error binding framebuffer: "+qw(e,t))}function qw(e,t){switch(t){case e.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:return"FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT";case e.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:return"FRAMEBUFFER_INCOMPLETE_DIMENSIONS";case e.FRAMEBUFFER_UNSUPPORTED:return"FRAMEBUFFER_UNSUPPORTED";default:return`unknown error ${t}`}}function la(e,t,n){let r=xe(e,()=>t());if(r==null)throw new Error(n);return r}function t_(e,t){let n=e.MAX_COMBINED_TEXTURE_IMAGE_UNITS-1,r=t+e.TEXTURE0;if(rn){let a=`[gl.TEXTURE0, gl.TEXTURE${n}]`;throw new Error(`textureUnit must be in ${a}.`)}}function yi(e,t=2){return v.sizeFromShape(e.slice(0,e.length-t))}function gi(e){if(e.length===0)throw Error("Cannot get rows and columns of an empty shape array.");return[e.length>1?e[e.length-2]:1,e[e.length-1]]}function ap(e){let t=[1,1,1];return e.length===0||e.length===1&&e[0]===1||(t=[yi(e),...gi(e)]),t}function Xw(e,t=!1){let n=J().getNumber("WEBGL_MAX_TEXTURE_SIZE");t&&(n=n*2,e=e.map((a,s)=>s>=e.length-2?v.nearestLargerEven(e[s]):e[s]),e.length===1&&(e=[2,e[0]])),e.length!==2&&(e=v.squeezeShape(e).newShape);let r=v.sizeFromShape(e);if(e.length<=1&&r<=n)return[1,r];if(e.length===2&&e[0]<=n&&e[1]<=n)return e;if(e.length===3&&e[0]*e[1]<=n&&e[2]<=n)return[e[0]*e[1],e[2]];if(e.length===3&&e[0]<=n&&e[1]*e[2]<=n)return[e[0],e[1]*e[2]];if(e.length===4&&e[0]*e[1]*e[2]<=n&&e[3]<=n)return[e[0]*e[1]*e[2],e[3]];if(e.length===4&&e[0]<=n&&e[1]*e[2]*e[3]<=n)return[e[0],e[1]*e[2]*e[3]];if(t){let a=yi(e),s=2,i=2;return e.length&&([s,i]=gi(e)),r=a*(s/2)*(i/2),v.sizeToSquarishShape(r).map(o=>o*2)}return v.sizeToSquarishShape(r)}function ip(e){return e%2==0}function sc(e,t){if(e=e.slice(-2),t=t.slice(-2),v.arraysEqual(e,t)||!e.length||!t.length||e[0]===0||e[1]===0||t[0]===0||t[1]===0)return!0;if(e.length!==t.length){let n=e.slice(-1)[0],r=t.slice(-1)[0];if(n===r||ip(n)&&ip(r)&&(e[0]===1||t[0]===1))return!0}return e[1]===t[1]&&ip(e[0])&&ip(t[0])}var op,lp;function Kw(e){if(op==null){let t=Wr(e);op=t.getParameter(t.MAX_TEXTURE_SIZE)}return op}function lz(){op=null}function uz(){lp=null}function Zw(e){if(lp==null){let t=Wr(e);lp=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS)}return Math.min(16,lp)}function Yw(e){if(e===0)return 0;let t,n=Wr(e);return Kn(n,"EXT_disjoint_timer_query_webgl2")&&e===2?t=2:Kn(n,"EXT_disjoint_timer_query")?t=1:t=0,t}function Kn(e,t){return e.getExtension(t)!=null}function Vm(e){try{if(Wr(e)!=null)return!0}catch(t){return console.log("Error when getting WebGL context: ",t),!1}return!1}function Jw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float"))return!1}else if(!Kn(t,"EXT_color_buffer_float"))return!1;return jm(t)}function Qw(e){if(e===0)return!1;let t=Wr(e);if(e===1){if(!Kn(t,"OES_texture_float")||!Kn(t,"WEBGL_color_buffer_float"))return!1}else{if(Kn(t,"EXT_color_buffer_float"))return jm(t);let n="EXT_color_buffer_half_float";if(Kn(t,n)){let r=t.getExtension(n);return xz(t,r)}return!1}return jm(t)}function jm(e){let t=Hm(e),n=e.createTexture();e.bindTexture(e.TEXTURE_2D,n);let r=1,a=1;e.texImage2D(e.TEXTURE_2D,0,t.internalFormatFloat,r,a,0,t.textureFormatFloat,t.textureTypeFloat,null);let s=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,s),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,n,0);let i=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(n),e.deleteFramebuffer(s),i}function xz(e,t){let n=Hm(e,t),r=e.createTexture();e.bindTexture(e.TEXTURE_2D,r);let a=1,s=1;e.texImage2D(e.TEXTURE_2D,0,n.internalFormatHalfFloat,a,s,0,n.textureFormatFloat,n.textureTypeHalfFloat,null);let i=e.createFramebuffer();e.bindFramebuffer(e.FRAMEBUFFER,i),e.framebufferTexture2D(e.FRAMEBUFFER,e.COLOR_ATTACHMENT0,e.TEXTURE_2D,r,0);let o=e.checkFramebufferStatus(e.FRAMEBUFFER)===e.FRAMEBUFFER_COMPLETE;return e.bindTexture(e.TEXTURE_2D,null),e.bindFramebuffer(e.FRAMEBUFFER,null),e.deleteTexture(r),e.deleteFramebuffer(i),o}function e_(e){return e!==2?!1:Wr(e).fenceSync!=null}function vl(e,t){Array.isArray(e)||(e=[e]),e.forEach(n=>{n!=null&&v.assert(n.dtype!=="complex64",()=>`${t} does not support complex64 tensors in the WebGL backend.`)})}var Fe=J();Fe.registerFlag("HAS_WEBGL",()=>Fe.getNumber("WEBGL_VERSION")>0);Fe.registerFlag("WEBGL_VERSION",()=>Vm(2)?2:Vm(1)?1:0);Fe.registerFlag("WEBGL_CHECK_NUMERICAL_PROBLEMS",()=>!1);Fe.registerFlag("WEBGL_BUFFER_SUPPORTED",()=>Fe.get("WEBGL_VERSION")===2);Fe.registerFlag("WEBGL_CPU_FORWARD",()=>!0);Fe.registerFlag("WEBGL_FORCE_F16_TEXTURES",()=>!1);Fe.registerFlag("WEBGL_PACK",()=>Fe.getBool("HAS_WEBGL"));Fe.registerFlag("WEBGL_PACK_NORMALIZATION",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_CLIP",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_DEPTHWISECONV",()=>!1);Fe.registerFlag("WEBGL_PACK_BINARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_UNARY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_ARRAY_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_IMAGE_OPERATIONS",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_PACK_REDUCE",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_LAZILY_UNPACK",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_CONV_IM2COL",()=>Fe.getBool("WEBGL_PACK"));Fe.registerFlag("WEBGL_MAX_TEXTURE_SIZE",()=>Kw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_MAX_TEXTURES_IN_SHADER",()=>Zw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION",()=>{let e=Fe.getNumber("WEBGL_VERSION");return e===0?0:Yw(e)});Fe.registerFlag("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE",()=>Fe.getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0&&!Mu.isMobile());Fe.registerFlag("WEBGL_RENDER_FLOAT32_CAPABLE",()=>Jw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_RENDER_FLOAT32_ENABLED",()=>Fe.getBool("WEBGL_FORCE_F16_TEXTURES")?!1:Fe.getBool("WEBGL_RENDER_FLOAT32_CAPABLE"));Fe.registerFlag("WEBGL_DOWNLOAD_FLOAT_ENABLED",()=>Qw(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_FENCE_API_ENABLED",()=>e_(Fe.getNumber("WEBGL_VERSION")));Fe.registerFlag("WEBGL_SIZE_UPLOAD_UNIFORM",()=>Fe.getBool("WEBGL_RENDER_FLOAT32_ENABLED")?4:0);Fe.registerFlag("WEBGL_DELETE_TEXTURE_THRESHOLD",()=>-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_DELETE_TEXTURE_THRESHOLD must be -1 (indicating never delete) or at least 0, but got ${e}.`)});Fe.registerFlag("WEBGL_FLUSH_THRESHOLD",()=>Mu.isMobile()&&Fe.getBool("IS_CHROME")?1:-1,e=>{if(e<0&&e!==-1)throw new Error(`WEBGL_FLUSH_THRESHOLD must be -1 (indicating never manual flush) or at least 0, but got ${e}.`)});function fn(){let e,t,n,r,a,s,i,o,l,u;return J().getNumber("WEBGL_VERSION")===2?(e="#version 300 es",t="in",n="out",r="in",a="texture",s="outputColor",i="out vec4 outputColor;",o=` bool isnan_custom(float val) { return (val > 0.0 || val < 0.0) ? false : val != 0.0; } @@ -78,7 +78,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee int getFlatIndex(ivec3 coords) { return coords.x * ${t[0]} + coords.y * ${t[1]} + coords.z; } -`}var t_=` +`}var n_=` const float FLOAT_MAX = 1.70141184e38; const float FLOAT_MIN = 1.17549435e-38; @@ -117,7 +117,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return c / 255.0; } -`,xz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` +`,wz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { ${wi(["r","c","d"],e)} return ivec3(r, c, d); @@ -138,7 +138,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${n.output} = result; } - `}},wz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` + `}},_z=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outPackingScheme=ic.DENSE;let t=lc(e),n=fn();this.outputShape=e,this.userCode=` ivec3 outCoordsFromFlatIndex(int index) { ${wi(["r","c","d"],e)} return ivec3(r, c, d); @@ -159,22 +159,22 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${n.output} = result; } - `}},_z=class{constructor(e){this.variableNames=["A"],this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` - ${t_} + `}},bz=class{constructor(e){this.variableNames=["A"],this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` + ${n_} void main() { float x = getAAtOutCoords(); ${t.output} = encode_float(x); } - `}},bz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` - ${t_} + `}},vz=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outTexUsage=Zn.DOWNLOAD;let t=fn();this.outputShape=e,this.userCode=` + ${n_} void main() { ivec3 coords = getOutputCoords(); float x = getChannel(getAAtOutCoords(), vec2(coords.y, coords.z)); ${t.output} = encode_float(x); } - `}},vz=class{constructor(e,t,n=!1){this.variableNames=["A"];let r=fn(),[a,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` + `}},kz=class{constructor(e,t,n=!1){this.variableNames=["A"];let r=fn(),[a,s]=t;this.outputShape=e;let i="result";n&&(i="floor(result * 255. + 0.5)"),this.userCode=` ${Gm(e)} void main() { @@ -204,7 +204,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${r.output} = vec4(${i}, 0., 0., 0.); } - `}},kz=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let r=fn(),[a,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){let c=l*2+u;i+=` + `}},Nz=class{constructor(e,t,n=!1){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let r=fn(),[a,s]=t;this.outputShape=e;let i="",o="result";n&&(o="floor(result * 255. + 0.5)");for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){let c=l*2+u;i+=` localCoords = coords; if(localCoords[2] + ${u} < ${e[2]}) { localCoords[2] += ${u}; @@ -248,7 +248,7 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee ${r.output} = ${o}; } - `}},n_={};ze(n_,{bindVertexProgramAttributeStreams:()=>h_,createBufferFromOutputTexture:()=>f_,createFloat16MatrixTexture:()=>o_,createFloat16PackedMatrixTexture:()=>c_,createFloat32MatrixTexture:()=>i_,createIndexBuffer:()=>s_,createPackedMatrixTexture:()=>u_,createUnsignedBytesMatrixTexture:()=>l_,createVertexBuffer:()=>a_,createVertexShader:()=>r_,downloadByteEncodedFloatMatrixFromOutputTexture:()=>A_,downloadFloat32MatrixFromBuffer:()=>m_,downloadMatrixFromPackedOutputTexture:()=>g_,downloadPackedMatrixFromBuffer:()=>y_,getInternalFormatForFloat16MatrixTexture:()=>Xm,getInternalFormatForFloat16PackedMatrixTexture:()=>Ym,getInternalFormatForFloat32MatrixTexture:()=>qm,getInternalFormatForPackedMatrixTexture:()=>Zm,getInternalFormatForUnsignedBytesMatrixTexture:()=>Km,uploadDenseMatrixToTexture:()=>d_,uploadPixelDataToTexture:()=>p_});function r_(e){let t=fn(),n=`${t.version} + `}},r_={};ze(r_,{bindVertexProgramAttributeStreams:()=>d_,createBufferFromOutputTexture:()=>m_,createFloat16MatrixTexture:()=>l_,createFloat16PackedMatrixTexture:()=>h_,createFloat32MatrixTexture:()=>o_,createIndexBuffer:()=>i_,createPackedMatrixTexture:()=>c_,createUnsignedBytesMatrixTexture:()=>u_,createVertexBuffer:()=>s_,createVertexShader:()=>a_,downloadByteEncodedFloatMatrixFromOutputTexture:()=>y_,downloadFloat32MatrixFromBuffer:()=>A_,downloadMatrixFromPackedOutputTexture:()=>x_,downloadPackedMatrixFromBuffer:()=>g_,getInternalFormatForFloat16MatrixTexture:()=>Xm,getInternalFormatForFloat16PackedMatrixTexture:()=>Ym,getInternalFormatForFloat32MatrixTexture:()=>qm,getInternalFormatForPackedMatrixTexture:()=>Zm,getInternalFormatForUnsignedBytesMatrixTexture:()=>Km,uploadDenseMatrixToTexture:()=>p_,uploadPixelDataToTexture:()=>f_});function a_(e){let t=fn(),n=`${t.version} precision highp float; ${t.attribute} vec3 clipSpacePos; ${t.attribute} vec2 uv; @@ -257,22 +257,22 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee void main() { gl_Position = vec4(clipSpacePos, 1); resultUV = uv; - }`;return Mw(e,n)}function a_(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return zw(e,t)}function s_(e){let t=new Uint16Array([0,1,2,2,1,3]);return Pw(e,t)}function uc(e,t,n,r,a,s){Ww(t,n);let i=Lw(e),o=e.TEXTURE_2D;return xe(e,()=>e.bindTexture(o,i)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),xe(e,()=>e.texImage2D(o,0,r,t,n,0,a,s,null)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function qm(e){return e.internalFormatFloat}function i_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,qm(r),r.textureFormatFloat,e.FLOAT)}function Xm(e){return e.internalFormatHalfFloat}function o_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Xm(r),r.textureFormatFloat,r.textureTypeHalfFloat)}function Km(e){return e.downloadTextureFormat}function l_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Km(r),e.RGBA,e.UNSIGNED_BYTE)}function Zm(e){return e.internalFormatPackedFloat}function u_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Zm(r),e.RGBA,e.FLOAT)}function Ym(e){return e.internalFormatPackedHalfFloat}function c_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Ym(r),e.RGBA,r.textureTypeHalfFloat)}function h_(e,t,n){let r=0,a=3*4,s=3*4+2*4;return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),Wm(e,t,"clipSpacePos",n,3,s,r)&&Wm(e,t,"uv",n,2,s,a)}function d_(e,t,n,r,a,s){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;a instanceof Uint8Array?(i=new Uint8Array(n*r*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*r*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(a),xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,r,0,e.RGBA,o,i)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function p_(e,t,n){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function f_(e,t,n,r){let a=e.createBuffer();xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,a));let s=4*4*t*n;return xe(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),a}function m_(e,t,n){let r=e,a=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,t),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,a),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),a}function A_(e,t,n,r){let[a,s]=oc(t,n),i=4,o=new Uint8Array(hz(t*n,i));return xe(e,()=>e.readPixels(0,0,a,s,r.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function y_(e,t,n,r,a,s,i,o){let l=e,u=new Float32Array(dz(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function g_(e,t,n){let r=new Float32Array(t*n*4);return xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,r)),r}var up=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=J().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,sp(t,e)):this.gl=Wr(t);let n="WEBGL_color_buffer_float",r="EXT_color_buffer_half_float";if(J().getNumber("WEBGL_VERSION")===1){let a="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=rc(this.gl,a),Kn(this.gl,s))this.textureHalfFloatExtension=rc(this.gl,s);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Kn(this.gl,r))this.colorBufferHalfFloatExtension=rc(this.gl,r);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Kn(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(Kn(this.gl,r))this.colorBufferHalfFloatExtension=this.gl.getExtension(r);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=a_(this.gl),this.indexBuffer=s_(this.gl),this.framebuffer=Bw(this.gl),this.textureConfig=Hm(this.gl,this.textureHalfFloatExtension)}get debug(){return J().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;xe(e,()=>e.finish()),xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.deleteFramebuffer(this.framebuffer)),xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),xe(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),i_(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),o_(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),l_(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),p_(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,r){this.throwIfDisposed(),d_(this.gl,e,t,n,r,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),c_(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),u_(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(Bm(this.gl,this.framebuffer),this.outputTexture=null),xe(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>A_(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,r,a,s){return y_(this.gl,e,t,n,r,a,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return m_(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let r=f_(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(J().getBool("WEBGL_FENCE_API_ENABLED")){let r=e,a=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=r.clientWaitSync(a,0,0);return s===r.ALREADY_SIGNALED||s===r.CONDITION_SATISFIED},t=a}else J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>g_(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=$w(t,e),r=r_(t),a=Dw(t);return xe(t,()=>t.attachShader(a,r)),xe(t,()=>t.attachShader(a,n)),Ow(t,a),this.debug&&np(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=h_(t,this.program,this.vertexBuffer)),a}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&xe(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&np(this.gl,this.program),xe(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?Uw(this.gl,e,t):Hw(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),xe(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),jw(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[r,a]=kl(t,n);this.setOutputMatrixTextureDriver(e,r,a)}setOutputMatrixWriteRegion(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)}setOutputPackedMatrixWriteRegion(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&np(this.gl,this.program),ac(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),xe(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),xe(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=rc(this.gl,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.createQuery();return n.beginQuery(r.TIME_ELAPSED_EXT,a),a}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),r=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),r&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=Nz(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),rp(this.gl,e,this.framebuffer),this.debug&&ac(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(rp(this.gl,this.outputTexture,this.framebuffer),this.debug&&ac(this.gl)):Bm(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let r=this.gl;rp(r,e,this.framebuffer),this.debug&&ac(r),this.outputTexture=e,xe(r,()=>r.viewport(0,0,t,n)),xe(r,()=>r.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,r){this.throwIfDisposed(),xe(this.gl,()=>this.gl.scissor(e,t,n,r))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function Nz(e){let t=0;for(;t{let f=v.sizeFromShape(p.shapeInfo.logicalShape);p.shapeInfo.isUniform?a.push(`uniform float ${p.name}${f>1?`[${f}]`:""};`):(a.push(`uniform sampler2D ${p.name};`),a.push(`uniform int offset${p.name};`))});let s=a.join(` -`),i=e.map(p=>Iz(p,t,r)).join(` -`),o=t.texShape,l=fn(),u=Cz(l),c,h,d=Fz(l);return t.isPacked?(c=Sz(t.logicalShape,o),h=Rz(l)):(c=Tz(t.logicalShape,o),h=Ez(l)),r&&(d+=Mz),[d,u,h,s,c,i,n].join(` -`)}function Nl(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return Dz(e);case 1:return Oz(e);case 2:return zz(e);case 3:return Pz(e);case 4:return Lz(e);case 5:return Wz(e);case 6:return Bz(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function w_(e){switch(e.shapeInfo.logicalShape.length){case 0:return Vz(e);case 1:return Uz(e);case 2:return Hz(e);case 3:return jz(e);default:return Gz(e)}}function Iz(e,t,n=!1){let r="";n?r+=w_(e):r+=Nl(e);let a=e.shapeInfo.logicalShape,s=t.logicalShape;return a.length<=s.length&&(n?r+=qz(e,t):r+=Xz(e,t)),r}function Sz(e,t){switch(e.length){case 0:return __();case 1:return Kz(e,t);case 2:return Jz(e,t);case 3:return Zz(e,t);default:return Yz(e,t)}}function Tz(e,t){switch(e.length){case 0:return __();case 1:return Qz(e,t);case 2:return aP(e,t);case 3:return eP(e,t);case 4:return tP(e,t);case 5:return nP(e,t);case 6:return rP(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function Cz(e){return` + }`;return $w(e,n)}function s_(e){let t=new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0]);return Pw(e,t)}function i_(e){let t=new Uint16Array([0,1,2,2,1,3]);return Lw(e,t)}function uc(e,t,n,r,a,s){Bw(t,n);let i=Ww(e),o=e.TEXTURE_2D;return xe(e,()=>e.bindTexture(o,i)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_S,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_WRAP_T,e.CLAMP_TO_EDGE)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MIN_FILTER,e.NEAREST)),xe(e,()=>e.texParameteri(o,e.TEXTURE_MAG_FILTER,e.NEAREST)),xe(e,()=>e.texImage2D(o,0,r,t,n,0,a,s,null)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null)),i}function qm(e){return e.internalFormatFloat}function o_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,qm(r),r.textureFormatFloat,e.FLOAT)}function Xm(e){return e.internalFormatHalfFloat}function l_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Xm(r),r.textureFormatFloat,r.textureTypeHalfFloat)}function Km(e){return e.downloadTextureFormat}function u_(e,t,n,r){let[a,s]=oc(t,n);return uc(e,a,s,Km(r),e.RGBA,e.UNSIGNED_BYTE)}function Zm(e){return e.internalFormatPackedFloat}function c_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Zm(r),e.RGBA,e.FLOAT)}function Ym(e){return e.internalFormatPackedHalfFloat}function h_(e,t,n,r){let[a,s]=kl(t,n);return uc(e,a,s,Ym(r),e.RGBA,r.textureTypeHalfFloat)}function d_(e,t,n){let r=0,a=3*4,s=3*4+2*4;return xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,n)),Wm(e,t,"clipSpacePos",n,3,s,r)&&Wm(e,t,"uv",n,2,s,a)}function p_(e,t,n,r,a,s){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t));let i,o,l;a instanceof Uint8Array?(i=new Uint8Array(n*r*4),o=e.UNSIGNED_BYTE,l=e.RGBA):(i=new Float32Array(n*r*4),o=e.FLOAT,l=s.internalFormatPackedFloat),i.set(a),xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,l,n,r,0,e.RGBA,o,i)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function f_(e,t,n){xe(e,()=>e.bindTexture(e.TEXTURE_2D,t)),n.data instanceof Uint8Array?xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,n.width,n.height,0,e.RGBA,e.UNSIGNED_BYTE,n.data)):xe(e,()=>e.texImage2D(e.TEXTURE_2D,0,e.RGBA,e.RGBA,e.UNSIGNED_BYTE,n)),xe(e,()=>e.bindTexture(e.TEXTURE_2D,null))}function m_(e,t,n,r){let a=e.createBuffer();xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,a));let s=4*4*t*n;return xe(e,()=>e.bufferData(e.PIXEL_PACK_BUFFER,s,e.STREAM_READ)),xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,0)),xe(e,()=>e.bindBuffer(e.PIXEL_PACK_BUFFER,null)),a}function A_(e,t,n){let r=e,a=new Float32Array(n);return r.bindBuffer(r.PIXEL_PACK_BUFFER,t),r.getBufferSubData(r.PIXEL_PACK_BUFFER,0,a),r.bindBuffer(r.PIXEL_PACK_BUFFER,null),a}function y_(e,t,n,r){let[a,s]=oc(t,n),i=4,o=new Uint8Array(dz(t*n,i));return xe(e,()=>e.readPixels(0,0,a,s,r.downloadTextureFormat,e.UNSIGNED_BYTE,o)),new Float32Array(o.buffer)}function g_(e,t,n,r,a,s,i,o){let l=e,u=new Float32Array(pz(s,i));return l.bindBuffer(l.PIXEL_PACK_BUFFER,t),l.getBufferSubData(l.PIXEL_PACK_BUFFER,0,u),l.bindBuffer(l.PIXEL_PACK_BUFFER,null),u}function x_(e,t,n){let r=new Float32Array(t*n*4);return xe(e,()=>e.readPixels(0,0,n,t,e.RGBA,e.FLOAT,r)),r}var up=class{constructor(e){this.outputTexture=null,this.program=null,this.disposed=!1,this.vertexAttrsAreBound=!1,this.itemsToPoll=[];let t=J().getNumber("WEBGL_VERSION");e!=null?(this.gl=e,sp(t,e)):this.gl=Wr(t);let n="WEBGL_color_buffer_float",r="EXT_color_buffer_half_float";if(J().getNumber("WEBGL_VERSION")===1){let a="OES_texture_float",s="OES_texture_half_float";if(this.textureFloatExtension=rc(this.gl,a),Kn(this.gl,s))this.textureHalfFloatExtension=rc(this.gl,s);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support half float textures, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.");if(this.colorBufferFloatExtension=this.gl.getExtension(n),Kn(this.gl,r))this.colorBufferHalfFloatExtension=rc(this.gl,r);else if(J().get("WEBGL_FORCE_F16_TEXTURES"))throw new Error("GL context does not support color renderable half floats, yet the environment flag WEBGL_FORCE_F16_TEXTURES is set to true.")}else if(n="EXT_color_buffer_float",Kn(this.gl,n))this.colorBufferFloatExtension=this.gl.getExtension(n);else if(Kn(this.gl,r))this.colorBufferHalfFloatExtension=this.gl.getExtension(r);else throw new Error("GL context does not support color renderable floats");this.vertexBuffer=s_(this.gl),this.indexBuffer=i_(this.gl),this.framebuffer=Vw(this.gl),this.textureConfig=Hm(this.gl,this.textureHalfFloatExtension)}get debug(){return J().getBool("DEBUG")}dispose(){if(this.disposed)return;this.program!=null&&console.warn("Disposing a GPGPUContext that still has a bound WebGLProgram. This is probably a resource leak, delete the program with GPGPUContext.deleteProgram before disposing."),this.outputTexture!=null&&console.warn("Disposing a GPGPUContext that still has a bound output matrix texture. This is probably a resource leak, delete the output matrix texture with GPGPUContext.deleteMatrixTexture before disposing.");let e=this.gl;xe(e,()=>e.finish()),xe(e,()=>e.bindFramebuffer(e.FRAMEBUFFER,null)),xe(e,()=>e.deleteFramebuffer(this.framebuffer)),xe(e,()=>e.bindBuffer(e.ARRAY_BUFFER,null)),xe(e,()=>e.bindBuffer(e.ELEMENT_ARRAY_BUFFER,null)),xe(e,()=>e.deleteBuffer(this.indexBuffer)),this.disposed=!0}createFloat32MatrixTexture(e,t){return this.throwIfDisposed(),o_(this.gl,e,t,this.textureConfig)}createFloat16MatrixTexture(e,t){return this.throwIfDisposed(),l_(this.gl,e,t,this.textureConfig)}createUnsignedBytesMatrixTexture(e,t){return this.throwIfDisposed(),u_(this.gl,e,t,this.textureConfig)}uploadPixelDataToTexture(e,t){this.throwIfDisposed(),f_(this.gl,e,t)}uploadDenseMatrixToTexture(e,t,n,r){this.throwIfDisposed(),p_(this.gl,e,t,n,r,this.textureConfig)}createFloat16PackedMatrixTexture(e,t){return this.throwIfDisposed(),h_(this.gl,e,t,this.textureConfig)}createPackedMatrixTexture(e,t){return this.throwIfDisposed(),c_(this.gl,e,t,this.textureConfig)}deleteMatrixTexture(e){this.throwIfDisposed(),this.outputTexture===e&&(Bm(this.gl,this.framebuffer),this.outputTexture=null),xe(this.gl,()=>this.gl.deleteTexture(e))}downloadByteEncodedFloatMatrixFromOutputTexture(e,t,n){return this.downloadMatrixDriver(e,()=>y_(this.gl,t,n,this.textureConfig))}downloadPackedMatrixFromBuffer(e,t,n,r,a,s){return g_(this.gl,e,t,n,r,a,s,this.textureConfig)}downloadFloat32MatrixFromBuffer(e,t){return A_(this.gl,e,t)}createBufferFromTexture(e,t,n){this.bindTextureToFrameBuffer(e);let r=m_(this.gl,t,n,this.textureConfig);return this.unbindTextureToFrameBuffer(),r}createAndWaitForFence(){let e=this.createFence(this.gl);return this.pollFence(e)}createFence(e){let t,n;if(J().getBool("WEBGL_FENCE_API_ENABLED")){let r=e,a=r.fenceSync(r.SYNC_GPU_COMMANDS_COMPLETE,0);e.flush(),n=()=>{let s=r.clientWaitSync(a,0,0);return s===r.ALREADY_SIGNALED||s===r.CONDITION_SATISFIED},t=a}else J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")>0?(t=this.beginQuery(),this.endQuery(),n=()=>this.isQueryAvailable(t,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))):n=()=>!0;return{query:t,isFencePassed:n}}downloadMatrixFromPackedTexture(e,t,n){return this.downloadMatrixDriver(e,()=>x_(this.gl,t,n))}createProgram(e){this.throwIfDisposed();let t=this.gl,n=Dw(t,e),r=a_(t),a=Ow(t);return xe(t,()=>t.attachShader(a,r)),xe(t,()=>t.attachShader(a,n)),zw(t,a),this.debug&&np(t,a),this.vertexAttrsAreBound||(this.setProgram(a),this.vertexAttrsAreBound=d_(t,this.program,this.vertexBuffer)),a}deleteProgram(e){this.throwIfDisposed(),e===this.program&&(this.program=null),e!=null&&xe(this.gl,()=>this.gl.deleteProgram(e))}setProgram(e){this.throwIfDisposed(),this.program=e,this.program!=null&&this.debug&&np(this.gl,this.program),xe(this.gl,()=>this.gl.useProgram(e))}getUniformLocation(e,t,n=!0){return this.throwIfDisposed(),n?Hw(this.gl,e,t):jw(this.gl,e,t)}getAttributeLocation(e,t){return this.throwIfDisposed(),xe(this.gl,()=>this.gl.getAttribLocation(e,t))}getUniformLocationNoThrow(e,t){return this.throwIfDisposed(),this.gl.getUniformLocation(e,t)}setInputMatrixTexture(e,t,n){this.throwIfDisposed(),this.throwIfNoProgram(),Gw(this.gl,e,t,n)}setOutputMatrixTexture(e,t,n){this.setOutputMatrixTextureDriver(e,n,t)}setOutputPackedMatrixTexture(e,t,n){this.throwIfDisposed();let[r,a]=kl(t,n);this.setOutputMatrixTextureDriver(e,r,a)}setOutputMatrixWriteRegion(e,t,n,r){this.setOutputMatrixWriteRegionDriver(n,e,r,t)}setOutputPackedMatrixWriteRegion(e,t,n,r){throw new Error("setOutputPackedMatrixWriteRegion not implemented.")}debugValidate(){this.program!=null&&np(this.gl,this.program),ac(this.gl)}executeProgram(){this.throwIfDisposed(),this.throwIfNoProgram();let e=this.gl;this.debug&&this.debugValidate(),xe(e,()=>e.drawElements(e.TRIANGLES,6,e.UNSIGNED_SHORT,0))}blockUntilAllProgramsCompleted(){this.throwIfDisposed(),xe(this.gl,()=>this.gl.finish())}getQueryTimerExtension(){return this.disjointQueryTimerExtension==null&&(this.disjointQueryTimerExtension=rc(this.gl,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2?"EXT_disjoint_timer_query_webgl2":"EXT_disjoint_timer_query")),this.disjointQueryTimerExtension}getQueryTimerExtensionWebGL2(){return this.getQueryTimerExtension()}getQueryTimerExtensionWebGL1(){return this.getQueryTimerExtension()}beginQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.createQuery();return n.beginQuery(r.TIME_ELAPSED_EXT,a),a}let e=this.getQueryTimerExtensionWebGL1(),t=e.createQueryEXT();return e.beginQueryEXT(e.TIME_ELAPSED_EXT,t),t}endQuery(){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION")===2){let t=this.gl,n=this.getQueryTimerExtensionWebGL2();t.endQuery(n.TIME_ELAPSED_EXT);return}let e=this.getQueryTimerExtensionWebGL1();e.endQueryEXT(e.TIME_ELAPSED_EXT)}async waitForQueryAndGetTime(e){return await v.repeatedTry(()=>this.disposed||this.isQueryAvailable(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))),this.getQueryTime(e,J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_VERSION"))}getQueryTime(e,t){if(t===0)return null;if(t===2){let n=this.gl;return n.getQueryParameter(e,n.QUERY_RESULT)/1e6}else{let n=this.getQueryTimerExtensionWebGL1();return n.getQueryObjectEXT(e,n.QUERY_RESULT_EXT)/1e6}}isQueryAvailable(e,t){if(t===0)return!0;if(t===2){let n=this.gl,r=this.getQueryTimerExtensionWebGL2(),a=n.getQueryParameter(e,n.QUERY_RESULT_AVAILABLE);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(r.GPU_DISJOINT_EXT)),a&&!this.disjoint}else{let n=this.getQueryTimerExtensionWebGL1(),r=n.getQueryObjectEXT(e,n.QUERY_RESULT_AVAILABLE_EXT);return this.disjoint==null&&(this.disjoint=this.gl.getParameter(n.GPU_DISJOINT_EXT)),r&&!this.disjoint}}pollFence(e){return new Promise(t=>{this.addItemToPoll(()=>e.isFencePassed(),()=>t())})}pollItems(){let e=Iz(this.itemsToPoll.map(t=>t.isDoneFn));for(let t=0;t<=e;++t){let{resolveFn:n}=this.itemsToPoll[t];n()}this.itemsToPoll=this.itemsToPoll.slice(e+1)}addItemToPoll(e,t){this.itemsToPoll.push({isDoneFn:e,resolveFn:t}),!(this.itemsToPoll.length>1)&&v.repeatedTry(()=>(this.pollItems(),this.itemsToPoll.length===0))}bindTextureToFrameBuffer(e){this.throwIfDisposed(),rp(this.gl,e,this.framebuffer),this.debug&&ac(this.gl)}unbindTextureToFrameBuffer(){this.outputTexture!=null?(rp(this.gl,this.outputTexture,this.framebuffer),this.debug&&ac(this.gl)):Bm(this.gl,this.framebuffer)}downloadMatrixDriver(e,t){this.bindTextureToFrameBuffer(e);let n=t();return this.unbindTextureToFrameBuffer(),n}setOutputMatrixTextureDriver(e,t,n){this.throwIfDisposed();let r=this.gl;rp(r,e,this.framebuffer),this.debug&&ac(r),this.outputTexture=e,xe(r,()=>r.viewport(0,0,t,n)),xe(r,()=>r.scissor(0,0,t,n))}setOutputMatrixWriteRegionDriver(e,t,n,r){this.throwIfDisposed(),xe(this.gl,()=>this.gl.scissor(e,t,n,r))}throwIfDisposed(){if(this.disposed)throw new Error("Attempted to use disposed GPGPUContext.")}throwIfNoProgram(){if(this.program==null)throw new Error("No GPU program is currently set.")}};function Iz(e){let t=0;for(;t{let f=v.sizeFromShape(p.shapeInfo.logicalShape);p.shapeInfo.isUniform?a.push(`uniform float ${p.name}${f>1?`[${f}]`:""};`):(a.push(`uniform sampler2D ${p.name};`),a.push(`uniform int offset${p.name};`))});let s=a.join(` +`),i=e.map(p=>Sz(p,t,r)).join(` +`),o=t.texShape,l=fn(),u=Ez(l),c,h,d=Mz(l);return t.isPacked?(c=Tz(t.logicalShape,o),h=Fz(l)):(c=Cz(t.logicalShape,o),h=Rz(l)),r&&(d+=$z),[d,u,h,s,c,i,n].join(` +`)}function Nl(e){let t=e.shapeInfo.logicalShape;switch(t.length){case 0:return Oz(e);case 1:return zz(e);case 2:return Pz(e);case 3:return Lz(e);case 4:return Wz(e);case 5:return Bz(e);case 6:return Vz(e);default:throw new Error(`${t.length}-D input sampling is not yet supported`)}}function __(e){switch(e.shapeInfo.logicalShape.length){case 0:return Uz(e);case 1:return Hz(e);case 2:return jz(e);case 3:return Gz(e);default:return qz(e)}}function Sz(e,t,n=!1){let r="";n?r+=__(e):r+=Nl(e);let a=e.shapeInfo.logicalShape,s=t.logicalShape;return a.length<=s.length&&(n?r+=Xz(e,t):r+=Kz(e,t)),r}function Tz(e,t){switch(e.length){case 0:return b_();case 1:return Zz(e,t);case 2:return Qz(e,t);case 3:return Yz(e,t);default:return Jz(e,t)}}function Cz(e,t){switch(e.length){case 0:return b_();case 1:return eP(e,t);case 2:return sP(e,t);case 3:return tP(e,t);case 4:return nP(e,t);case 5:return rP(e,t);case 6:return aP(e,t);default:throw new Error(`${e.length}-D output sampling is not yet supported`)}}function Ez(e){return` float sampleTexture(sampler2D textureSampler, vec2 uv) { return ${e.texture2D}(textureSampler, uv).r; } - `}function Ez(e){return` + `}function Rz(e){return` void setOutput(float val) { ${e.output} = vec4(val, 0, 0, 0); } - `}function Rz(e){return` + `}function Fz(e){return` void setOutput(vec4 val) { ${e.output} = val; } - `}function Fz(e){return`${e.version} + `}function Mz(e){return`${e.version} precision highp float; precision highp int; precision highp sampler2D; @@ -327,10 +327,10 @@ Hi there \u{1F44B}. Looks like you are running TensorFlow.js in Node.js. To spee return fract((p3.x + p3.y) * p3.z); } - ${sP} ${iP} ${oP} - `}var sP=` + ${lP} + `}var iP=` vec2 uvFromFlat(int texNumR, int texNumC, int index) { int texR = index / texNumC; int texC = index - texR * texNumC; @@ -342,7 +342,7 @@ vec2 packedUVfrom1D(int texNumR, int texNumC, int index) { int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,iP=` +`,oP=` vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texNumC, int row, int col) { int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2); @@ -350,7 +350,7 @@ vec2 packedUVfrom2D(int texelsInLogicalRow, int texNumR, int texC = texelIndex - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,oP=` +`,lP=` vec2 packedUVfrom3D(int texNumR, int texNumC, int texelsInBatch, int texelsInLogicalRow, int b, int row, int col) { @@ -359,7 +359,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, int texC = index - texR * texNumC; return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR); } -`,Mz=` +`,$z=` float getChannel(vec4 frag, vec2 innerDims) { vec2 modCoord = mod(innerDims, 2.); return modCoord.x == 0. ? @@ -370,11 +370,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float modCoord = mod(float(dim), 2.); return modCoord == 0. ? frag.r : frag.g; } -`;function __(){return` +`;function b_(){return` int getOutputCoords() { return 0; } - `}function Kz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` + `}function Zz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)];return n[0]===1?` int getOutputCoords() { return 2 * int(resultUV.x * ${n[1]}.0); } @@ -388,7 +388,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec2(${n[0]}, ${n[1]})); return 2 * (resTexRC.x * ${n[1]} + resTexRC.y); } - `}function Qz(e,t){return t[0]===1?` + `}function eP(e,t){return t[0]===1?` int getOutputCoords() { return int(resultUV.x * ${t[1]}.0); } @@ -402,7 +402,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec2(${t[0]}, ${t[1]})); return resTexRC.x * ${t[1]} + resTexRC.y; } - `}function Zz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return` + `}function Yz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[2]/2),a=r*Math.ceil(e[1]/2);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * vec2(${n[0]}, ${n[1]})); @@ -416,7 +416,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, return ivec3(b, r, c); } - `}function eP(e,t){let n=wi(["r","c","d"],e);return` + `}function tP(e,t){let n=wi(["r","c","d"],e);return` ivec3 getOutputCoords() { ivec2 resTexRC = ivec2(resultUV.yx * vec2(${t[0]}, ${t[1]})); @@ -424,7 +424,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, ${n} return ivec3(r, c, d); } - `}function Yz(e,t){let n=[Math.ceil(t[0]/2),Math.ceil(t[1]/2)],r=Math.ceil(e[e.length-1]/2),a=r*Math.ceil(e[e.length-2]/2),s=a,i="",o="b, r, c";for(let l=2;l=1?c="coords = 0;":c=o.map(A=>`coords.${h[A+u]} = 0;`).join(` + `}function Xz(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=e.shapeInfo.logicalShape.length,i=t.logicalShape.length,o=w_(e.shapeInfo.logicalShape,t.logicalShape),l=ut(i),u=i-s,c,h=["x","y","z","w","u","v"];s===0?c="":i<2&&o.length>=1?c="coords = 0;":c=o.map(A=>`coords.${h[A+u]} = 0;`).join(` `);let d="";i<2&&s>0?d="coords":d=e.shapeInfo.logicalShape.map((A,y)=>`coords.${h[y+u]}`).join(", ");let p="return outputValue;",f=v.sizeFromShape(e.shapeInfo.logicalShape)===1,m=v.sizeFromShape(t.logicalShape)===1;if(s===1&&!f&&!m)p=` return vec4(outputValue.xy, outputValue.xy); `;else if(f&&!m)i===1?p=` @@ -804,22 +804,22 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, vec4 outputValue = get${r}(${d}); ${p} } - `}function Xz(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&v.arraysEqual(i,s))return` + `}function Kz(e,t){let n=e.name,r=n.charAt(0).toUpperCase()+n.slice(1),a="get"+r+"AtOutCoords",s=t.texShape,i=e.shapeInfo.texShape,o=e.shapeInfo.logicalShape.length,l=t.logicalShape.length;if(!e.shapeInfo.isUniform&&o===l&&e.shapeInfo.flatOffset==null&&v.arraysEqual(i,s))return` float ${a}() { return sampleTexture(${n}, resultUV); } - `;let u=ut(l),c=x_(e.shapeInfo.logicalShape,t.logicalShape),h=l-o,d,p=["x","y","z","w","u","v"];o===0?d="":l<2&&c.length>=1?d="coords = 0;":d=c.map(m=>`coords.${p[m+h]} = 0;`).join(` + `;let u=ut(l),c=w_(e.shapeInfo.logicalShape,t.logicalShape),h=l-o,d,p=["x","y","z","w","u","v"];o===0?d="":l<2&&c.length>=1?d="coords = 0;":d=c.map(m=>`coords.${p[m+h]} = 0;`).join(` `);let f="";return l<2&&o>0?f="coords":f=e.shapeInfo.logicalShape.map((m,A)=>`coords.${p[A+h]}`).join(", "),` float ${a}() { ${u} coords = getOutputCoords(); ${d} return get${r}(${f}); } - `}function ut(e){if(e<=1)return"int";if(e===2)return"ivec2";if(e===3)return"ivec3";if(e===4)return"ivec4";if(e===5)return"ivec5";if(e===6)return"ivec6";throw Error(`GPU for rank ${e} is not yet supported`)}function Sl(e,t){let n=JSON.parse(JSON.stringify(e));return n.shapeInfo.logicalShape=t,n}function Tl(e,t){return t.map(n=>e[n]).join(", ")}function lP(e,t,n,r){let a=t.userCode,s=n.map((p,f)=>{let m={logicalShape:p.shape,texShape:p.isUniform?null:p.texData.texShape,isUniform:p.isUniform,isPacked:p.isUniform?!1:p.texData.isPacked,flatOffset:null};return p.texData!=null&&p.texData.slice!=null&&p.texData.slice.flatOffset>0&&(m.flatOffset=p.texData.slice.flatOffset),{name:t.variableNames[f],shapeInfo:m}}),i=s.map(p=>p.shapeInfo),o={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},l=$z(s,o,a,t.packedInputs),u=e.createProgram(l),c=null,h=e.getUniformLocation(u,"NAN",!1);J().getNumber("WEBGL_VERSION")===1&&(c=e.getUniformLocation(u,"INFINITY",!1));let d={};for(let p=0;p{let a=n.logicalShape,s=t[r],i=s.shape;if(!v.arraysEqual(a,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${a} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!v.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function uP(e,t,n,r,a){b_(t.inShapeInfos,n),b_([t.outShapeInfo],[r]);let s=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),J().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let u=t.program.variableNames[l],c=t.uniformLocations[u],h=t.uniformLocations[`offset${u}`];if(c!=null){if(o.isUniform){if(v.sizeFromShape(o.shape)<2)e.gl.uniform1f(c,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(c,d)}return}o.texData.slice!=null&&h!=null&&e.gl.uniform1i(h,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,c,l)}}),a!=null&&a(e,t.webGLProgram),e.executeProgram()}function cP(e,t,n){let r="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;r+=`${i.shape}_${l}_${o}`});let a=e.userCode,s=e.constructor.name;return s+="_"+r+"_"+a,s}var{addImpl:hP,bincountImpl:v_,bincountReduceImpl:dP,ceilImpl:pP,concatImpl:fP,expImpl:mP,expm1Impl:AP,floorImpl:yP,gatherV2Impl:gP,greaterImpl:xP,lessImpl:wP,linSpaceImpl:_P,logImpl:bP,maxImpl:vP,maximumImpl:kP,minimumImpl:NP,multiplyImpl:IP,negImpl:SP,prodImpl:TP,rangeImpl:CP,rsqrtImpl:EP,simpleAbsImpl:k_,sliceImpl:RP,stridedSliceImpl:FP,subImpl:MP,tileImpl:$P,topKImpl:DP,transposeImpl:Jm,uniqueImpl:OP}=Nm;function N_(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function mn(e,t){return t===1?[e]:N_(e,t)}function zP(e,t){if(e===1)return"rc";let n="";for(let r=0;re[n]).join(", ")}function uP(e,t,n,r){let a=t.userCode,s=n.map((p,f)=>{let m={logicalShape:p.shape,texShape:p.isUniform?null:p.texData.texShape,isUniform:p.isUniform,isPacked:p.isUniform?!1:p.texData.isPacked,flatOffset:null};return p.texData!=null&&p.texData.slice!=null&&p.texData.slice.flatOffset>0&&(m.flatOffset=p.texData.slice.flatOffset),{name:t.variableNames[f],shapeInfo:m}}),i=s.map(p=>p.shapeInfo),o={logicalShape:r.shape,texShape:r.texData.texShape,isUniform:!1,isPacked:r.texData.isPacked,flatOffset:null},l=Dz(s,o,a,t.packedInputs),u=e.createProgram(l),c=null,h=e.getUniformLocation(u,"NAN",!1);J().getNumber("WEBGL_VERSION")===1&&(c=e.getUniformLocation(u,"INFINITY",!1));let d={};for(let p=0;p{let a=n.logicalShape,s=t[r],i=s.shape;if(!v.arraysEqual(a,i))throw Error(`Binary was compiled with different shapes than the current args. Shapes ${a} and ${i} must match`);if(n.isUniform&&s.isUniform)return;let o=n.texShape,l=s.isUniform?null:s.texData.texShape;if(!v.arraysEqual(o,l))throw Error(`Binary was compiled with different texture shapes than the current args. Shape ${o} and ${l} must match`)})}function cP(e,t,n,r,a){v_(t.inShapeInfos,n),v_([t.outShapeInfo],[r]);let s=r.texData.texture,i=r.texData.texShape;r.texData.isPacked?e.setOutputPackedMatrixTexture(s,i[0],i[1]):e.setOutputMatrixTexture(s,i[0],i[1]),e.setProgram(t.webGLProgram),J().getNumber("WEBGL_VERSION")===1&&t.infLoc!==null&&e.gl.uniform1f(t.infLoc,Infinity),t.nanLoc!==null&&e.gl.uniform1f(t.nanLoc,NaN),n.forEach((o,l)=>{let u=t.program.variableNames[l],c=t.uniformLocations[u],h=t.uniformLocations[`offset${u}`];if(c!=null){if(o.isUniform){if(v.sizeFromShape(o.shape)<2)e.gl.uniform1f(c,o.uniformValues[0]);else{let d=o.uniformValues;d instanceof Float32Array||(d=new Float32Array(d)),e.gl.uniform1fv(c,d)}return}o.texData.slice!=null&&h!=null&&e.gl.uniform1i(h,o.texData.slice.flatOffset),e.setInputMatrixTexture(o.texData.texture,c,l)}}),a!=null&&a(e,t.webGLProgram),e.executeProgram()}function hP(e,t,n){let r="";t.concat(n).forEach(i=>{let o=i.texData!=null&&i.texData.slice!=null&&i.texData.slice.flatOffset>0,l=i.isUniform?"uniform":i.texData.texShape;r+=`${i.shape}_${l}_${o}`});let a=e.userCode,s=e.constructor.name;return s+="_"+r+"_"+a,s}var{addImpl:dP,bincountImpl:k_,bincountReduceImpl:pP,ceilImpl:fP,concatImpl:mP,expImpl:AP,expm1Impl:yP,floorImpl:gP,gatherV2Impl:xP,greaterImpl:wP,lessImpl:_P,linSpaceImpl:bP,logImpl:vP,maxImpl:kP,maximumImpl:NP,minimumImpl:IP,multiplyImpl:SP,negImpl:TP,prodImpl:CP,rangeImpl:EP,rsqrtImpl:RP,simpleAbsImpl:N_,sliceImpl:FP,stridedSliceImpl:MP,subImpl:$P,tileImpl:DP,topKImpl:OP,transposeImpl:Jm,uniqueImpl:zP}=Nm;function I_(e,t){return["x","y","z","w","u","v"].slice(0,t).map(n=>`${e}.${n}`)}function mn(e,t){return t===1?[e]:I_(e,t)}function PP(e,t){if(e===1)return"rc";let n="";for(let r=0;r ${t[0]}`;let r="";for(let a=e-2;a= ${t[a]}`,a ${t[0]}`;let r="";for(let a=e-2;a= ${t[a]}`,a= ${t}; bool rEdge = rp1 >= ${n}; - `}function WP(e,t){let n=e.length,r=VP(n,t);return n===1?`getA(rc), + `}function BP(e,t){let n=e.length,r=UP(n,t);return n===1?`getA(rc), rc + 1 >= ${e[0]} ? 0. : getA(rc + 1), 0, 0`:`getA(${r[0]}), cEdge ? 0. : getA(${r[1]}), rEdge ? 0. : getA(${r[2]}), - rEdge || cEdge ? 0. : getA(${r[3]})`}var I_=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let r=0;r<4;r++){let a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+=` + rEdge || cEdge ? 0. : getA(${r[3]})`}var S_=class{constructor(e,t){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let n="";for(let r=0;r<4;r++){let a="thisRC = rc;";r%2==1&&(a+="thisRC.z += 1;"),r>1&&(a+="thisRC.y += 1;"),n+=` ${a} ${r>0?"if(thisRC.y < rows && thisRC.z < cols){":""} int flatIndex = getFlatIndex(thisRC); @@ -856,7 +856,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, getChannel(getA(inputRC.x, inputRC.y, inputRC.z), inputRCInnerDims); ${r>0?"}":""} `}this.userCode=` - ${UP(t)} + ${HP(t)} ${Gm(e)} void main() { @@ -872,12 +872,12 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}};function UP(e){return` + `}};function HP(e){return` ivec3 inputCoordsFromReshapedOutCoords(int index) { ${wi(["r","c","d"],e)} return ivec3(r, c, d); } - `}var HP=class{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){let r=T_(t,n),a=C_(e,r,n);a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]);let s=S_(e,r,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}let i;return r===tn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===tn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===tn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,r){if(this.freeTextures==null)return;let a=T_(n,r),s=C_(t,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);let i=S_(t,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),o=J().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],u=l.indexOf(e);if(u<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(u,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function jP(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function S_(e,t,n,r,a){let s=GP(t,r),i;if(a){let[l,u]=kl(e[0],e[1]);i=l*u}else{let[l,u]=oc(e[0],e[1]);i=l*u}let o=jP(n,s);return i*o}function GP(e,t){switch(e){case tn.PACKED_2X2_FLOAT32:return Zm(t);case tn.PACKED_2X2_FLOAT16:return Ym(t);case tn.UNPACKED_FLOAT32:return qm(t);case tn.UNPACKED_FLOAT16:return Xm(t);case tn.PACKED_4X1_UNSIGNED_BYTE:return Km(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function qP(e){return J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?tn.PACKED_2X2_FLOAT32:tn.UNPACKED_FLOAT32:e?tn.PACKED_2X2_FLOAT16:tn.UNPACKED_FLOAT16}function T_(e,t){if(e===Zn.UPLOAD)return tn.PACKED_2X2_FLOAT32;if(e===Zn.RENDER||e==null)return qP(t);if(e===Zn.DOWNLOAD||e===Zn.PIXELS)return tn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function C_(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var Ba=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` + `}var jP=class{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){let r=C_(t,n),a=E_(e,r,n);a in this.freeTextures||(this.freeTextures[a]=[]),a in this.usedTextures||(this.usedTextures[a]=[]);let s=T_(e,r,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[a].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=s,this.log();let o=this.freeTextures[a].shift();return this.usedTextures[a].push(o),o}let i;return r===tn.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):r===tn.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):r===tn.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):r===tn.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[a].push(i),this.numUsedTextures++,this._numBytesAllocated+=s,this.log(),i}releaseTexture(e,t,n,r){if(this.freeTextures==null)return;let a=C_(n,r),s=E_(t,a,r);s in this.freeTextures||(this.freeTextures[s]=[]);let i=T_(t,a,this.gpgpu.gl,this.gpgpu.textureConfig,r),o=J().get("WEBGL_DELETE_TEXTURE_THRESHOLD");o!==-1&&this._numBytesAllocated>o?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[s].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let l=this.usedTextures[s],u=l.indexOf(e);if(u<0)throw new Error("Cannot release a texture that was never provided by this texture manager");l.splice(u,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures} / ${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytes allocated: ${this._numBytesAllocated}`),console.log(`Bytes unused: ${this._numBytesFree} (${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function GP(e,t){let n=e;if(t===n.R32F)return 4;if(t===n.R16F)return 2;if(t===n.RGBA32F||t===e.RGBA)return 16;if(t===n.RGBA16F)return 8;throw new Error(`Unknown internal format ${t}`)}function T_(e,t,n,r,a){let s=qP(t,r),i;if(a){let[l,u]=kl(e[0],e[1]);i=l*u}else{let[l,u]=oc(e[0],e[1]);i=l*u}let o=GP(n,s);return i*o}function qP(e,t){switch(e){case tn.PACKED_2X2_FLOAT32:return Zm(t);case tn.PACKED_2X2_FLOAT16:return Ym(t);case tn.UNPACKED_FLOAT32:return qm(t);case tn.UNPACKED_FLOAT16:return Xm(t);case tn.PACKED_4X1_UNSIGNED_BYTE:return Km(t);default:throw new Error(`Unknown physical texture type ${e}`)}}function XP(e){return J().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?e?tn.PACKED_2X2_FLOAT32:tn.UNPACKED_FLOAT32:e?tn.PACKED_2X2_FLOAT16:tn.UNPACKED_FLOAT16}function C_(e,t){if(e===Zn.UPLOAD)return tn.PACKED_2X2_FLOAT32;if(e===Zn.RENDER||e==null)return XP(t);if(e===Zn.DOWNLOAD||e===Zn.PIXELS)return tn.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknown logical texture type ${e}`)}function E_(e,t,n){return`${e[0]}_${e[1]}_${t}_${n}`}var Ba=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=` float unaryOperation(float x) { ${t} } @@ -888,11 +888,11 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},xr="if (isnan(x)) return x;",XP="return x;",E_="return abs(x);",KP="return (x >= 0.0) ? x : (exp(x) - 1.0);",ZP=xr+` + `}},xr="if (isnan(x)) return x;",KP="return x;",R_="return abs(x);",ZP="return (x >= 0.0) ? x : (exp(x) - 1.0);",YP=xr+` return (x < 0.0) ? 0.0 : x; -`,YP=xr+` +`,JP=xr+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,cp="return x;",JP="return x;",QP=` +`,cp="return x;",QP="return x;",eL=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -901,7 +901,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,eL=` +`,tL=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -911,7 +911,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, result.a = isNaN.a ? x.a : result.a; return result; -`,tL=` +`,nL=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -932,14 +932,14 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(y); } - `}},nL=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=mn("rc",t),r=ut(t),a=zP(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` + `}},rL=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!1,this.outputShape=e;let t=e.length,n=mn("rc",t),r=ut(t),a=PP(t,n),s=n.slice(-2),i=t<=1?"rc":`vec2(${s.join(",")})`;this.userCode=` void main() { ${r} rc = getOutputCoords(); vec4 packedInput = getA(${a}); setOutput(getChannel(packedInput, ${i})); } - `}},rL=Pr.whereImpl,aL=1e-7,sL=1e-4,Qm={};function iL(e){return e in Qm||(Qm[e]={}),Qm[e]}var oL=128,lL=600;function uL(){return J().global.screen==null?1024:J().global.screen.height*J().global.screen.width*window.devicePixelRatio*lL/1024/1024}var El=class extends su{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!J().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Wr(J().getNumber("WEBGL_VERSION"));this.binaryCache=iL(J().getNumber("WEBGL_VERSION")),this.gpgpu=new up(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new HP(this.gpgpu),this.numMBBeforeWarning=uL(),this.texData=new xh(this,Fr())}nextDataId(){return El.nextDataId++}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((J().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||J().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let r={id:this.nextDataId()};return this.texData.set(r,{shape:t,dtype:n,values:e,usage:Zn.UPLOAD,refCount:1}),r}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,r,a){if(J().getBool("DEBUG")&&this.checkNumericalProblems(t),r==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:r,values:t,usage:Zn.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:r,complexTensorInfos:a,slice:s,shape:i,isPacked:o}=t;if(s!=null){let h;o?h=new Cl(i,cp):h=new Ba(i,cp);let d=this.runWebGLProgram(h,[{dataId:e,shape:i,dtype:r}],r),p=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),p}if(n!=null)return this.convertAndCacheOnCPU(e);if(r==="string")return n;let l=this.activeTimers!=null,u;l&&(u=v.now());let c;if(r==="complex64"){let h=this.readSync(a.real.dataId),d=this.readSync(a.imag.dataId);c=R.mergeRealAndImagArrays(h,d)}else c=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=v.now()-u),this.convertAndCacheOnCPU(e,c)}async read(e){if(this.pendingRead.has(e)){let p=this.pendingRead.get(e);return new Promise(f=>p.push(f))}let t=this.texData.get(e),{values:n,shape:r,slice:a,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(a!=null){let p;o?p=new Cl(r,cp):p=new Ba(r,cp);let f=this.runWebGLProgram(p,[{dataId:e,shape:r,dtype:s}],s),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(!J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&J().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,u;if(s!=="complex64"&&J().get("WEBGL_BUFFER_SUPPORTED")){u=this.decode(e);let p=this.texData.get(u.dataId);l=this.gpgpu.createBufferFromTexture(p.texture,...lc(r))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let c;if(s==="complex64"){let p=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),f=p[0],m=p[1];c=R.mergeRealAndImagArrays(f,m)}else if(l==null)c=this.getValuesFromTexture(e);else{let p=v.sizeFromShape(r);c=this.gpgpu.downloadFloat32MatrixFromBuffer(l,p)}u!=null&&this.disposeIntermediateTensorInfo(u);let h=this.convertAndCacheOnCPU(e,c),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(p=>p(h)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Fr().removeDataId(e,this),this.pendingDeletes--),h}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],r=!1;this.programTimersStack==null?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e();let a=v.flatten(this.activeTimers.map(o=>o.query)).filter(o=>o!=null),s=v.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,r&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(a);i.kernelMs=v.sum(o),i.getExtraProfileInfo=()=>o.map((l,u)=>({name:s[u],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:r,usage:a,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(r,n),this.textureManager.releaseTexture(t,r,a,s)));let u=this.texData.get(e);u.texture=null,u.texShape=null,u.isPacked=!1,u.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return J().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Fr().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=oL){let n=this.getCPUBackend();return!J().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(r=>this.texData.get(r.dataId).texture==null&&v.sizeFromShape(r.shape)0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:r}=this.makeTensorInfo(e,t,n);return Fr().makeTensorFromDataId(r,e,t,this)}unpackTensor(e){let t=new nL(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new BP(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[yi(e.shape),...gi(e.shape)],r={dtype:e.dtype,shape:n,dataId:e.dataId},a=[yi(t),...gi(t)],s=new I_(a,n),i=!0,o=this.runWebGLProgram(s,[r],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:r,dtype:a}=t,s=ap(r),i;n?i=new wz(s):i=new xz(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:a,dataId:e}],a,null,o);return{dtype:a,shape:r,dataId:l.dataId}}runWebGLProgram(e,t,n,r,a=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===ic.DENSE){let m=lc(e.outputShape);i.texShape=m.map(A=>A*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),v.sizeFromShape(s.shape)===0)return i.values=v.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let A=this.texData.get(m.dataId);if(A.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=J().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:A.values};e.packedInputs&&(A.isPacked=!0,A.shape=m.shape)}else if(!!A.isPacked!=!!e.packedInputs)m=A.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),A=this.texData.get(m.dataId);else if(A.isPacked&&!sc(A.shape,m.shape)){let y=m,g=m.shape;m.shape=A.shape,m=this.packedReshape(m,g),o.push(m),A=this.texData.get(m.dataId),y.shape=g}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:A,isUniform:!1}});this.uploadToGPU(s.dataId);let u={shape:s.shape,texData:i,isUniform:!1},c=cP(e,l,u),h=this.getAndSaveBinary(c,()=>lP(this.gpgpu,e,l,u)),d=this.activeTimers!=null,p;d&&(p=this.startTimer()),uP(this.gpgpu,h,l,u,r),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(p=this.endTimer(p),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(p)}));let f=J().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!J().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&a===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,r,a=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,r,a)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(J().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=B(()=>{if(!J().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=J().getBool("DEBUG");J().set("DEBUG",!1);let t=this.abs(be(1e-8)).dataSync()[0];if(J().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?aL:sL}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:r,values:a,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,u;l&&(u=v.now());let c=t.texShape;if(c==null&&(c=qw(n,o),t.texShape=c),a!=null){let h=ap(n),d,p=c[1],f=c[0],m=a instanceof Uint8Array;o?([p,f]=kl(c[0],c[1]),d=new kz(h,[f,p],m)):d=new vz(h,[f,p],m);let A=this.makeTensorInfo([f,p],r);m?this.texData.get(A.dataId).usage=Zn.PIXELS:this.texData.get(A.dataId).usage=Zn.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(A.dataId),p,f,a);let y=!0,g=this.runWebGLProgram(d,[A],r,null,y),_=this.texData.get(g.dataId);t.texture=_.texture,t.texShape=_.texShape,t.isPacked=_.isPacked,t.usage=_.usage,this.disposeIntermediateTensorInfo(A),this.texData.delete(g.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-u)}else{let h=this.acquireTexture(c,i,r,o);t.texture=h}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:r}=n;return this.releaseGPUData(e),t!=null&&(n.values=cL(t,r)),n.values}acquireTexture(e,t,n,r){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${a} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,r)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}};El.nextDataId=0;function cL(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let r=0;rnew El,2);var hL={forceHalfFloat:F_},M_=` + `}},aL=Pr.whereImpl,sL=1e-7,iL=1e-4,Qm={};function oL(e){return e in Qm||(Qm[e]={}),Qm[e]}var lL=128,uL=600;function cL(){return J().global.screen==null?1024:J().global.screen.height*J().global.screen.width*window.devicePixelRatio*uL/1024/1024}var El=class extends su{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.warnedAboutCPUBackend=!1,this.pendingDeletes=0,this.disposed=!1,!J().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Wr(J().getNumber("WEBGL_VERSION"));this.binaryCache=oL(J().getNumber("WEBGL_VERSION")),this.gpgpu=new up(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new jP(this.gpgpu),this.numMBBeforeWarning=cL(),this.texData=new xh(this,Fr())}nextDataId(){return El.nextDataId++}numDataIds(){return this.texData.numDataIds()+(this.cpuBackend?this.cpuBackend.numDataIds():0)-this.pendingDeletes}write(e,t,n){if((J().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||J().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let r={id:this.nextDataId()};return this.texData.set(r,{shape:t,dtype:n,values:e,usage:Zn.UPLOAD,refCount:1}),r}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,r,a){if(J().getBool("DEBUG")&&this.checkNumericalProblems(t),r==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:r,values:t,usage:Zn.UPLOAD,refCount:a})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:r,complexTensorInfos:a,slice:s,shape:i,isPacked:o}=t;if(s!=null){let h;o?h=new Cl(i,cp):h=new Ba(i,cp);let d=this.runWebGLProgram(h,[{dataId:e,shape:i,dtype:r}],r),p=this.readSync(d.dataId);return this.disposeIntermediateTensorInfo(d),p}if(n!=null)return this.convertAndCacheOnCPU(e);if(r==="string")return n;let l=this.activeTimers!=null,u;l&&(u=v.now());let c;if(r==="complex64"){let h=this.readSync(a.real.dataId),d=this.readSync(a.imag.dataId);c=R.mergeRealAndImagArrays(h,d)}else c=this.getValuesFromTexture(e);return l&&(this.downloadWaitMs+=v.now()-u),this.convertAndCacheOnCPU(e,c)}async read(e){if(this.pendingRead.has(e)){let p=this.pendingRead.get(e);return new Promise(f=>p.push(f))}let t=this.texData.get(e),{values:n,shape:r,slice:a,dtype:s,complexTensorInfos:i,isPacked:o}=t;if(a!=null){let p;o?p=new Cl(r,cp):p=new Ba(r,cp);let f=this.runWebGLProgram(p,[{dataId:e,shape:r,dtype:s}],s),m=this.read(f.dataId);return this.disposeIntermediateTensorInfo(f),m}if(n!=null)return this.convertAndCacheOnCPU(e);if(!J().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&J().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let l=null,u;if(s!=="complex64"&&J().get("WEBGL_BUFFER_SUPPORTED")){u=this.decode(e);let p=this.texData.get(u.dataId);l=this.gpgpu.createBufferFromTexture(p.texture,...lc(r))}this.pendingRead.set(e,[]),s!=="complex64"&&await this.gpgpu.createAndWaitForFence();let c;if(s==="complex64"){let p=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),f=p[0],m=p[1];c=R.mergeRealAndImagArrays(f,m)}else if(l==null)c=this.getValuesFromTexture(e);else{let p=v.sizeFromShape(r);c=this.gpgpu.downloadFloat32MatrixFromBuffer(l,p)}u!=null&&this.disposeIntermediateTensorInfo(u);let h=this.convertAndCacheOnCPU(e,c),d=this.pendingRead.get(e);return this.pendingRead.delete(e),d.forEach(p=>p(h)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Fr().removeDataId(e,this),this.pendingDeletes--),h}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(r=>v.decodeString(r))}catch(r){throw new Error("Failed to decode encoded string bytes into utf-8")}return We(e.shape,e.dtype,n)}checkNumericalProblems(e){if(e!=null)for(let t=0;t0}async time(e){let t=this.activeTimers,n=[],r=!1;this.programTimersStack==null?(this.programTimersStack=n,r=!0):this.activeTimers.push(n),this.activeTimers=n,e();let a=v.flatten(this.activeTimers.map(o=>o.query)).filter(o=>o!=null),s=v.flatten(this.activeTimers.map(o=>o.name)).filter(o=>o!=null);this.activeTimers=t,r&&(this.programTimersStack=null);let i={uploadWaitMs:this.uploadWaitMs,downloadWaitMs:this.downloadWaitMs,kernelMs:null,wallMs:null};if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0){let o=await Promise.all(a);i.kernelMs=v.sum(o),i.getExtraProfileInfo=()=>o.map((l,u)=>({name:s[u],ms:l})).map(l=>`${l.name}: ${l.ms}`).join(", ")}else i.kernelMs={error:"WebGL query timers are not supported in this environment."};return this.uploadWaitMs=0,this.downloadWaitMs=0,i}memory(){return{unreliable:!1,numBytesInGPU:this.numBytesInGPU,numBytesInGPUAllocated:this.textureManager.numBytesAllocated,numBytesInGPUFree:this.textureManager.numBytesFree}}startTimer(){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?this.gpgpu.beginQuery():{startMs:v.now(),endMs:null}}endTimer(e){return J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0?(this.gpgpu.endQuery(),e):(e.endMs=v.now(),e)}async getQueryTime(e){if(J().getNumber("WEBGL_DISJOINT_QUERY_TIMER_EXTENSION_RELIABLE")>0)return this.gpgpu.waitForQueryAndGetTime(e);let t=e;return t.endMs-t.startMs}disposeData(e,t=!1){if(this.pendingDisposal.has(e))return!1;if(!this.texData.has(e))return!0;if(t?this.texData.get(e).refCount=0:this.texData.get(e).refCount--,!t&&this.texData.get(e).refCount>0)return!1;if(this.pendingRead.has(e))return this.pendingDisposal.add(e),this.pendingDeletes++,!1;this.releaseGPUData(e);let{complexTensorInfos:n}=this.texData.get(e);return n!=null&&(this.disposeData(n.real.dataId,t),this.disposeData(n.imag.dataId,t)),this.texData.delete(e),!0}releaseGPUData(e){let{texture:t,dtype:n,texShape:r,usage:a,isPacked:s,slice:i}=this.texData.get(e),o=i&&i.origDataId||e,l=this.dataRefCount.get(o);l>1?this.dataRefCount.set(o,l-1):(this.dataRefCount.delete(o),t!=null&&(this.numBytesInGPU-=this.computeBytes(r,n),this.textureManager.releaseTexture(t,r,a,s)));let u=this.texData.get(e);u.texture=null,u.texShape=null,u.isPacked=!1,u.slice=null}getTexture(e){return this.uploadToGPU(e),this.texData.get(e).texture}getDataInfo(e){return this.texData.get(e)}getCPUBackend(){return J().getBool("WEBGL_CPU_FORWARD")?(this.cpuBackend==null&&(this.cpuBackend=Fr().findBackend("cpu")),this.cpuBackend):null}shouldExecuteOnCPU(e,t=lL){let n=this.getCPUBackend();return!J().getBool("IS_TEST")&&!this.warnedAboutCPUBackend&&n==null&&(console.warn("Your application contains ops that are small enough to be executed on the CPU backend, however the CPU backend cannot be found. Consider importing the CPU backend (@tensorflow/tfjs-backend-cpu) for better performance."),this.warnedAboutCPUBackend=!0),n!=null&&e.every(r=>this.texData.get(r.dataId).texture==null&&v.sizeFromShape(r.shape)0&&v.isString(n[0])){let a=n.map(s=>v.encodeString(s));r=this.write(a,e,t)}else r=this.write(n,e,t);return this.texData.get(r).usage=null,{dataId:r,shape:e,dtype:t}}makeOutput(e,t,n){let{dataId:r}=this.makeTensorInfo(e,t,n);return Fr().makeTensorFromDataId(r,e,t,this)}unpackTensor(e){let t=new rL(e.shape);return this.runWebGLProgram(t,[e],e.dtype)}packTensor(e){let t=new VP(e.shape),n=!0;return this.runWebGLProgram(t,[e],e.dtype,null,n)}packedReshape(e,t){let n=[yi(e.shape),...gi(e.shape)],r={dtype:e.dtype,shape:n,dataId:e.dataId},a=[yi(t),...gi(t)],s=new S_(a,n),i=!0,o=this.runWebGLProgram(s,[r],e.dtype,null,i);return{dataId:o.dataId,shape:t,dtype:o.dtype}}decode(e){let t=this.texData.get(e),{isPacked:n,shape:r,dtype:a}=t,s=ap(r),i;n?i=new _z(s):i=new wz(s);let o=!0,l=this.runWebGLProgram(i,[{shape:s,dtype:a,dataId:e}],a,null,o);return{dtype:a,shape:r,dataId:l.dataId}}runWebGLProgram(e,t,n,r,a=!1){let s=this.makeTensorInfo(e.outputShape,n),i=this.texData.get(s.dataId);if(e.packedOutput&&(i.isPacked=!0),e.outPackingScheme===ic.DENSE){let m=lc(e.outputShape);i.texShape=m.map(A=>A*2)}if(e.outTexUsage!=null&&(i.usage=e.outTexUsage),v.sizeFromShape(s.shape)===0)return i.values=v.getTypedArrayFromDType(s.dtype,0),s;let o=[],l=t.map(m=>{if(m.dtype==="complex64")throw new Error("GPGPUProgram does not support complex64 input. For complex64 dtypes, please separate the program into real and imaginary parts.");let A=this.texData.get(m.dataId);if(A.texture==null){if(!e.packedInputs&&v.sizeFromShape(m.shape)<=J().getNumber("WEBGL_SIZE_UPLOAD_UNIFORM"))return{shape:m.shape,texData:null,isUniform:!0,uniformValues:A.values};e.packedInputs&&(A.isPacked=!0,A.shape=m.shape)}else if(!!A.isPacked!=!!e.packedInputs)m=A.isPacked?this.unpackTensor(m):this.packTensor(m),o.push(m),A=this.texData.get(m.dataId);else if(A.isPacked&&!sc(A.shape,m.shape)){let y=m,g=m.shape;m.shape=A.shape,m=this.packedReshape(m,g),o.push(m),A=this.texData.get(m.dataId),y.shape=g}return this.uploadToGPU(m.dataId),{shape:m.shape,texData:A,isUniform:!1}});this.uploadToGPU(s.dataId);let u={shape:s.shape,texData:i,isUniform:!1},c=hP(e,l,u),h=this.getAndSaveBinary(c,()=>uP(this.gpgpu,e,l,u)),d=this.activeTimers!=null,p;d&&(p=this.startTimer()),cP(this.gpgpu,h,l,u,r),o.forEach(m=>this.disposeIntermediateTensorInfo(m)),d&&(p=this.endTimer(p),this.activeTimers.push({name:e.constructor.name,query:this.getQueryTime(p)}));let f=J().get("WEBGL_FLUSH_THRESHOLD");if(f>0){let m=v.now();m-this.lastGlFlushTime>f&&(this.gpgpu.gl.flush(),this.lastGlFlushTime=m)}if(!J().getBool("WEBGL_LAZILY_UNPACK")&&i.isPacked&&a===!1){let m=this.unpackTensor(s);return this.disposeIntermediateTensorInfo(s),m}return s}compileAndRun(e,t,n,r,a=!1){return n=n||t[0].dtype,this.runWebGLProgram(e,t,n,r,a)}getAndSaveBinary(e,t){return e in this.binaryCache||(this.binaryCache[e]=t()),this.binaryCache[e]}getTextureManager(){return this.textureManager}dispose(){this.disposed||(J().getBool("IS_TEST")||Object.keys(this.binaryCache).forEach(e=>{this.gpgpu.deleteProgram(this.binaryCache[e].webGLProgram),delete this.binaryCache[e]}),this.textureManager.dispose(),this.canvas!=null&&typeof HTMLCanvasElement!="undefined"&&this.canvas instanceof HTMLCanvasElement?this.canvas.remove():this.canvas=null,this.gpgpuCreatedLocally&&(this.gpgpu.program=null,this.gpgpu.dispose()),this.disposed=!0)}floatPrecision(){return this.floatPrecisionValue==null&&(this.floatPrecisionValue=B(()=>{if(!J().get("WEBGL_RENDER_FLOAT32_ENABLED")){let e=J().getBool("DEBUG");J().set("DEBUG",!1);let t=this.abs(be(1e-8)).dataSync()[0];if(J().set("DEBUG",e),t>0)return 32}return 16})),this.floatPrecisionValue}epsilon(){return this.floatPrecision()===32?sL:iL}uploadToGPU(e){let t=this.texData.get(e),{shape:n,dtype:r,values:a,texture:s,usage:i,isPacked:o}=t;if(s!=null)return;let l=this.activeTimers!=null,u;l&&(u=v.now());let c=t.texShape;if(c==null&&(c=Xw(n,o),t.texShape=c),a!=null){let h=ap(n),d,p=c[1],f=c[0],m=a instanceof Uint8Array;o?([p,f]=kl(c[0],c[1]),d=new Nz(h,[f,p],m)):d=new kz(h,[f,p],m);let A=this.makeTensorInfo([f,p],r);m?this.texData.get(A.dataId).usage=Zn.PIXELS:this.texData.get(A.dataId).usage=Zn.UPLOAD,this.gpgpu.uploadDenseMatrixToTexture(this.getTexture(A.dataId),p,f,a);let y=!0,g=this.runWebGLProgram(d,[A],r,null,y),_=this.texData.get(g.dataId);t.texture=_.texture,t.texShape=_.texShape,t.isPacked=_.isPacked,t.usage=_.usage,this.disposeIntermediateTensorInfo(A),this.texData.delete(g.dataId),t.values=null,l&&(this.uploadWaitMs+=v.now()-u)}else{let h=this.acquireTexture(c,i,r,o);t.texture=h}}convertAndCacheOnCPU(e,t){let n=this.texData.get(e),{dtype:r}=n;return this.releaseGPUData(e),t!=null&&(n.values=hL(t,r)),n.values}acquireTexture(e,t,n,r){if(this.numBytesInGPU+=this.computeBytes(e,n),!this.warnedAboutMemory&&this.numBytesInGPU>this.numMBBeforeWarning*1024*1024){let a=(this.numBytesInGPU/1024/1024).toFixed(2);this.warnedAboutMemory=!0,console.warn(`High memory usage in GPU: ${a} MB, most likely due to a memory leak`)}return this.textureManager.acquireTexture(e,t,r)}computeBytes(e,t){return e[0]*e[1]*v.bytesPerElement(t)}};El.nextDataId=0;function hL(e,t){if(t==="float32"||t==="complex64")return e;if(t==="int32"||t==="bool"){let n=t==="int32"?new Int32Array(e.length):new Uint8Array(e.length);for(let r=0;rnew El,2);var dL={forceHalfFloat:M_},$_=` if (isnan(a)) return a; if (isnan(b)) return b; `,Rl=class{constructor(e,t,n){this.variableNames=["A","B"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` @@ -989,21 +989,21 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}};function zn(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var dL={kernelName:ks,backendName:"webgl",kernelFunc:zn};function Va(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.makeTensorInfo(r.shape,"complex64"),i=n.texData.get(s.dataId),o=zn({inputs:{x:r},backend:n}),l=zn({inputs:{x:a},backend:n});return i.complexTensorInfos={real:o,imag:l},s}var pL={kernelName:Th,backendName:"webgl",kernelFunc:Va},$_="return (a < 0.) ? b * a : a;",D_=` + `}};function zn(e){let{inputs:t,backend:n}=e,{x:r}=t;return n.incRef(r.dataId),{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}var pL={kernelName:ks,backendName:"webgl",kernelFunc:zn};function Va(e){let{inputs:t,backend:n}=e,{real:r,imag:a}=t,s=n.makeTensorInfo(r.shape,"complex64"),i=n.texData.get(s.dataId),o=zn({inputs:{x:r},backend:n}),l=zn({inputs:{x:a},backend:n});return i.complexTensorInfos={real:o,imag:l},s}var fL={kernelName:Th,backendName:"webgl",kernelFunc:Va},D_="return (a < 0.) ? b * a : a;",O_=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function fL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r,i=n.makeTensorInfo([],"float32",v.createScalarValue(s,"float32")),o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(D_,a.shape,i.shape):new Rl($_,a.shape,i.shape),l=n.runWebGLProgram(o,[a,i],a.dtype);return n.disposeIntermediateTensorInfo(i),l}var mL={kernelName:Ns,backendName:"webgl",kernelFunc:fL},O_="return (a < 0.) ? b * a : a;",z_=` +`;function mL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{alpha:s}=r,i=n.makeTensorInfo([],"float32",v.createScalarValue(s,"float32")),o=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(O_,a.shape,i.shape):new Rl(D_,a.shape,i.shape),l=n.runWebGLProgram(o,[a,i],a.dtype);return n.disposeIntermediateTensorInfo(i),l}var AL={kernelName:Ns,backendName:"webgl",kernelFunc:mL},z_="return (a < 0.) ? b * a : a;",P_=` vec4 aLessThanZero = vec4(lessThan(a, vec4(0.))); return (aLessThanZero * (b * a)) + ((vec4(1.0) - aLessThanZero) * a); -`;function AL(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(z_,r.shape,a.shape):new Rl(O_,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)}var yL={kernelName:zs,backendName:"webgl",kernelFunc:AL},P_="if (isnan(x)) return x;",gL=` +`;function yL(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(P_,r.shape,a.shape):new Rl(z_,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)}var gL={kernelName:zs,backendName:"webgl",kernelFunc:yL},L_="if (isnan(x)) return x;",xL=` if (isnan(a)) return a; if (isnan(b)) return b; -`,xL=` +`,wL=` result.r = isNaN.r > 0. ? NAN : result.r; result.g = isNaN.g > 0. ? NAN : result.g; result.b = isNaN.b > 0. ? NAN : result.b; result.a = isNaN.a > 0. ? NAN : result.a; -`;function Xe({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:r}){return({inputs:a,backend:s})=>{let{x:i}=a,o=s,l=r||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let h=o.texData.get(i.dataId),d=n(h.values,l);return o.makeTensorInfo(i.shape,l,d)}let u=J().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,c;return u?c=new Cl(i.shape,t):c=new Ba(i.shape,e),o.runWebGLProgram(c,[i],l)}}function nn({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:r=!1,cpuKernelImpl:a,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:u}=i,c=o;if(r&&l.dtype==="complex64"){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=[[f.complexTensorInfos.real,m.complexTensorInfos.real],[f.complexTensorInfos.imag,m.complexTensorInfos.imag]].map(_=>{let[b,w]=_,x={dataId:b.dataId,dtype:b.dtype,shape:l.shape},I={dataId:w.dataId,dtype:w.dtype,shape:u.shape},S=new Rl(e,l.shape,u.shape);return c.runWebGLProgram(S,[x,I],rr(b.dtype,w.dtype))}),g=Va({inputs:{real:A,imag:y},backend:c});return c.disposeIntermediateTensorInfo(A),c.disposeIntermediateTensorInfo(y),g}let h=s||rr(l.dtype,u.dtype);if(c.shouldExecuteOnCPU([l,u])&&a!=null){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=a(l.shape,u.shape,f.values,m.values,h),g=c.makeTensorInfo(y,h),_=c.texData.get(g.dataId);return _.values=A,g}let d=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,p;return d?p=new cc(t,l.shape,u.shape,n):p=new Rl(e,l.shape,u.shape),c.runWebGLProgram(p,[l,u],h)}}function dp(e,t=!1){if(e==="linear")return t?JP:XP;if(e==="relu")return t?eL:ZP;if(e==="elu")return t?QP:KP;if(e==="relu6")return t?tL:YP;if(e==="prelu")return t?z_:O_;if(e==="leakyrelu")return t?D_:$_;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var L_=class{constructor(e,t,n,r=!1,a=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let u=r?e[1]:e[2],c=Math.ceil(u/2),h=r?"i * 2, rc.y":"rc.y, i * 2",d=a?"rc.z, i * 2":"i * 2, rc.z",p=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],m="",A="";i&&(o?m=`vec4 activation(vec4 a) { +`;function Xe({opSnippet:e,packedOpSnippet:t,cpuKernelImpl:n,dtype:r}){return({inputs:a,backend:s})=>{let{x:i}=a,o=s,l=r||i.dtype;if(o.shouldExecuteOnCPU([i])&&n!=null){let h=o.texData.get(i.dataId),d=n(h.values,l);return o.makeTensorInfo(i.shape,l,d)}let u=J().getBool("WEBGL_PACK_UNARY_OPERATIONS")&&t!=null,c;return u?c=new Cl(i.shape,t):c=new Ba(i.shape,e),o.runWebGLProgram(c,[i],l)}}function nn({opSnippet:e,packedOpSnippet:t,checkOutOfBounds:n=!1,supportsComplex:r=!1,cpuKernelImpl:a,dtype:s}){return({inputs:i,backend:o})=>{let{a:l,b:u}=i,c=o;if(r&&l.dtype==="complex64"){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=[[f.complexTensorInfos.real,m.complexTensorInfos.real],[f.complexTensorInfos.imag,m.complexTensorInfos.imag]].map(_=>{let[b,w]=_,x={dataId:b.dataId,dtype:b.dtype,shape:l.shape},I={dataId:w.dataId,dtype:w.dtype,shape:u.shape},S=new Rl(e,l.shape,u.shape);return c.runWebGLProgram(S,[x,I],rr(b.dtype,w.dtype))}),g=Va({inputs:{real:A,imag:y},backend:c});return c.disposeIntermediateTensorInfo(A),c.disposeIntermediateTensorInfo(y),g}let h=s||rr(l.dtype,u.dtype);if(c.shouldExecuteOnCPU([l,u])&&a!=null){let f=c.texData.get(l.dataId),m=c.texData.get(u.dataId),[A,y]=a(l.shape,u.shape,f.values,m.values,h),g=c.makeTensorInfo(y,h),_=c.texData.get(g.dataId);return _.values=A,g}let d=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")&&t!=null,p;return d?p=new cc(t,l.shape,u.shape,n):p=new Rl(e,l.shape,u.shape),c.runWebGLProgram(p,[l,u],h)}}function dp(e,t=!1){if(e==="linear")return t?QP:KP;if(e==="relu")return t?tL:YP;if(e==="elu")return t?eL:ZP;if(e==="relu6")return t?nL:JP;if(e==="prelu")return t?P_:z_;if(e==="leakyrelu")return t?O_:D_;throw new Error(`Activation ${e} has not been implemented for the WebGL backend.`)}var W_=class{constructor(e,t,n,r=!1,a=!1,s=!1,i=null,o=!1,l=!1){this.variableNames=["matrixA","matrixB"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=n;let u=r?e[1]:e[2],c=Math.ceil(u/2),h=r?"i * 2, rc.y":"rc.y, i * 2",d=a?"rc.z, i * 2":"i * 2, rc.z",p=r?["a.xxyy","a.zzww"]:["a.xxzz","a.yyww"],f=a?["b.xzxz","b.ywyw"]:["b.xyxy","b.zwzw"],m="",A="";i&&(o?m=`vec4 activation(vec4 a) { vec4 b = getPreluActivationWeightsAtOutCoords(); ${i} }`:l?m=`vec4 activation(vec4 a) { @@ -1042,7 +1042,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, setOutput(result); } - `}},W_={REAL:"return areal * breal - aimag * bimag;",IMAG:"return areal * bimag + aimag * breal;"},B_=class{constructor(e,t,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` + `}},B_={REAL:"return areal * breal - aimag * bimag;",IMAG:"return areal * bimag + aimag * breal;"},V_=class{constructor(e,t,n){this.variableNames=["AReal","AImag","BReal","BImag"],this.outputShape=R.assertAndGetBroadcastShape(t,n),this.userCode=` float binaryOpComplex( float areal, float aimag, float breal, float bimag) { ${e} @@ -1055,7 +1055,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, float bimag = getBImagAtOutCoords(); setOutput(binaryOpComplex(areal, aimag, breal, bimag)); } - `}},V_="return a * b;";function U_(e){let{inputs:t,backend:n}=e,{a:r,b:a}=t,s=R.upcastType(r.dtype,a.dtype);if(r.dtype==="complex64"){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),u=new B_(W_.REAL,r.shape,a.shape),c=new B_(W_.IMAG,r.shape,a.shape),h=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:r.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:r.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:a.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:a.shape}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}if(n.shouldExecuteOnCPU([r,a])){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),[u,c]=IP(r.shape,a.shape,o.values,l.values,s),h=n.makeTensorInfo(c,s),d=n.texData.get(h.dataId);return d.values=u,h}let i;return J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new cc(V_,r.shape,a.shape):i=new Rl(V_,r.shape,a.shape),n.runWebGLProgram(i,[r,a],s)}var wL={kernelName:Ms,backendName:"webgl",kernelFunc:U_};function _L(e,t,n){let r=[yi(e.shape),...gi(e.shape)],a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[yi(t),...gi(t)],i=new I_(s,r),o=!0,l=n.runWebGLProgram(i,[a],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function Ae(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=n,o=v.sizeFromShape(a.shape),l=v.inferFromImplicitShape(s,o),u=v.sizeFromShape(l);v.assert(o===u,()=>`The new shape (${l}) has ${u} elements and the old shape (${a.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let c=i.texData.get(a.dataId);return c.isPacked&&!sc(a.shape,l)&&!(c.texture!==null&&sc(c.shape,l))?_L(a,l,i):(i.incRef(a.dataId),{dataId:a.dataId,shape:l,dtype:a.dtype})}var bL={kernelName:Do,backendName:"webgl",kernelFunc:Ae},H_=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let c=1/t;l=`sumValue += dot(values * ${v.isInt(c)?c.toPrecision(2):c}, ones);`}let u="";a%n>0&&(u=` + `}},U_="return a * b;";function H_(e){let{inputs:t,backend:n}=e,{a:r,b:a}=t,s=R.upcastType(r.dtype,a.dtype);if(r.dtype==="complex64"){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),u=new V_(B_.REAL,r.shape,a.shape),c=new V_(B_.IMAG,r.shape,a.shape),h=[{dataId:o.complexTensorInfos.real.dataId,dtype:o.complexTensorInfos.real.dtype,shape:r.shape},{dataId:o.complexTensorInfos.imag.dataId,dtype:o.complexTensorInfos.imag.dtype,shape:r.shape},{dataId:l.complexTensorInfos.real.dataId,dtype:l.complexTensorInfos.real.dtype,shape:a.shape},{dataId:l.complexTensorInfos.imag.dataId,dtype:l.complexTensorInfos.imag.dtype,shape:a.shape}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});return n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}if(n.shouldExecuteOnCPU([r,a])){let o=n.texData.get(r.dataId),l=n.texData.get(a.dataId),[u,c]=SP(r.shape,a.shape,o.values,l.values,s),h=n.makeTensorInfo(c,s),d=n.texData.get(h.dataId);return d.values=u,h}let i;return J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?i=new cc(U_,r.shape,a.shape):i=new Rl(U_,r.shape,a.shape),n.runWebGLProgram(i,[r,a],s)}var _L={kernelName:Ms,backendName:"webgl",kernelFunc:H_};function bL(e,t,n){let r=[yi(e.shape),...gi(e.shape)],a={dtype:e.dtype,shape:r,dataId:e.dataId},s=[yi(t),...gi(t)],i=new S_(s,r),o=!0,l=n.runWebGLProgram(i,[a],e.dtype,null,o);return{dataId:l.dataId,shape:t,dtype:l.dtype}}function Ae(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{shape:s}=r,i=n,o=v.sizeFromShape(a.shape),l=v.inferFromImplicitShape(s,o),u=v.sizeFromShape(l);v.assert(o===u,()=>`The new shape (${l}) has ${u} elements and the old shape (${a.shape}) has ${o} elements. The new shape and old shape must have the same number of elements.`);let c=i.texData.get(a.dataId);return c.isPacked&&!sc(a.shape,l)&&!(c.texture!==null&&sc(c.shape,l))?bL(a,l,i):(i.incRef(a.dataId),{dataId:a.dataId,shape:l,dtype:a.dtype})}var vL={kernelName:Do,backendName:"webgl",kernelFunc:Ae},j_=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i=Math.floor(n/4)*4,o=n%4,l="sumValue += dot(values, ones);";if(t!=null){let c=1/t;l=`sumValue += dot(values * ${v.isInt(c)?c.toPrecision(2):c}, ones);`}let u="";a%n>0&&(u=` if (inIdx < 0 || inIdx >= ${a}) { return 0.0; } @@ -1108,7 +1108,7 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, } setOutput(sumValue); } - `}},vL=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let u=Math.floor(n/4)*4,c=n%4,h=` + `}},kL=class{constructor(e,t){this.variableNames=["x"];let{windowSize:n,batchSize:r,inSize:a,outSize:s}=e;this.outputShape=[r,s];let i="0.0",o="";t==="prod"?i="1.0":t==="min"?(i="1.0 / 1e-20",o="min"):t==="max"&&(i="-1.0 / 1e-20",o="max");let l=`${t}(${t}(${t}(minMaxValue[0], minMaxValue[1]), minMaxValue[2]), minMaxValue[3])`;t==="sum"?l="sumValue":t==="prod"?l="prodValue":t==="all"?l="allValue":t==="any"&&(l="anyValue");let u=Math.floor(n/4)*4,c=n%4,h=` if (${t==="sum"}) { sumValue += dot(values, ones); } else if (${t==="prod"}) { @@ -1193,12 +1193,12 @@ vec2 packedUVfrom3D(int texNumR, int texNumC, } setOutput(${l}); } - `}};function kL(e){let t=[];for(;t.length===0||t[t.length-1].outSize!==1;){let n=t.length?t[t.length-1].outSize:e[1],r=R.computeOptimalWindowSize(n);t.push({inSize:n,windowSize:r,outSize:Math.ceil(n/r)})}return t}function bi(e,t,n,r){let a=kL(e.shape),s=e;for(let i=0;i6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t);for(let a=0;a6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let r=ut(this.rank),a=N_("rc",this.rank),s=new Array(this.rank);for(let u=0;u6)throw Error(`Transpose for rank ${t} is not yet supported`);let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u","resRC.v"],r=new Array(t);for(let a=0;a6)throw Error(`Packed transpose for rank ${this.rank} is not yet supported.`);let r=ut(this.rank),a=I_("rc",this.rank),s=new Array(this.rank);for(let u=0;u=2&&c>=2&&_,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${A}).`);let b=(y>g?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([p,f]);v.assert(h===d,()=>`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${r} must match.`);let w=n?[y,h,p]:[y,p,h],x=r?[g,f,d]:[g,d,f],I=Ae({inputs:{x:e},backend:a,attrs:{shape:w}}),S=Ae({inputs:{x:t},backend:a,attrs:{shape:x}}),T=[I,S],M=Math.max(y,g),D=n?I.shape[1]:I.shape[2],z=s!=null,W=i!=null,U=l==="leakyrelu",H=l!=null?dp(l,!0):null,X=z||W||U||H!=null,j;if((p===1||f===1)&&D>j_&&X===!1){let Y=I,ae=S;n&&(Y=In({inputs:{x:I},backend:a,attrs:{perm:[0,2,1]}}),T.push(Y)),r&&(ae=In({inputs:{x:S},backend:a,attrs:{perm:[0,2,1]}}),T.push(ae));let te=f!==1,ie=f===1,Q=Y;te&&(Q=Ae({inputs:{x:Y},backend:a,attrs:{shape:[M,D,1]}}),T.push(Q));let he=f===1?2:1,oe=ae;ie&&(oe=Ae({inputs:{x:ae},backend:a,attrs:{shape:[M,1,D]}}),T.push(oe));let fe=U_({inputs:{a:Q,b:oe},backend:a});j=eA({inputs:{x:fe},backend:a,attrs:{axis:he,keepDims:!0}}),T.push(fe)}else{let Y=rr(e.dtype,t.dtype),ae=new L_(w,x,[M,p,f],n,r,z,H,W,U),te=[I,S];if(s!=null&&te.push(s),W&&te.push(i),U){let ie=a.makeTensorInfo([],"float32",v.createScalarValue(o,"float32"));te.push(ie),T.push(ie)}j=a.runWebGLProgram(ae,te,Y)}let ee=Ae({inputs:{x:j},backend:a,attrs:{shape:b}});T.push(j);for(let Y of T)a.disposeIntermediateTensorInfo(Y);return ee}function RL(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r;return fp({a,b:s,transposeA:l,transposeB:u,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:h,activation:c})}var FL={kernelName:Qs,backendName:"webgl",kernelFunc:RL},G_="return abs(x);";function ML(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])&&r.dtype!=="complex64"){let s=n.texData.get(r.dataId),i=k_(s.values);return n.makeTensorInfo(r.shape,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,G_):a=new Ba(r.shape,G_),n.runWebGLProgram(a,[r],r.dtype)}var $L={kernelName:Zi,backendName:"webgl",kernelFunc:ML},DL=xr+` + `}};function pp(e,t,n){let r=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new TL(e.shape,t):new SL(e.shape,t);return n.runWebGLProgram(r,[e],e.dtype)}function CL(e,t,n,r){let a=t,s=e.shape.length,i=v.parseAxisParam(a,e.shape),o=i,l=R.getAxesPermutation(o,s),u=l!=null,c=e;u&&(c=pp(e,l,r),o=R.getInnerMostAxes(o.length,s)),R.assertAxesAreInnerMostDims("sum",o,s);let[h,d]=R.computeOutAndReduceShapes(c.shape,o),p=h;n&&(p=R.expandShapeToKeepDim(h,i));let f=v.sizeFromShape(d),m=v.sizeFromShape(e.shape)/f,A=Ae({inputs:{x:c},attrs:{shape:[m,f]},backend:r}),y=sd(e.dtype),g=bi(A,y,"sum",r),_=Ae({inputs:{x:g},attrs:{shape:p},backend:r});return r.disposeIntermediateTensorInfo(A),r.disposeIntermediateTensorInfo(g),u&&r.disposeIntermediateTensorInfo(c),_}function eA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r;return CL(a,s,i,n)}var EL={kernelName:qs,backendName:"webgl",kernelFunc:eA};function In(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{perm:s}=r,i=n,o=a.shape.length,l=new Array(o);for(let c=0;c=2&&c>=2&&_,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${m}) and (${A}).`);let b=(y>g?e.shape.slice(0,-2):t.shape.slice(0,-2)).concat([p,f]);v.assert(h===d,()=>`Error in matMul: inner shapes (${h}) and (${d}) of Tensors with shapes ${e.shape} and ${t.shape} and transposeA=${n} and transposeB=${r} must match.`);let w=n?[y,h,p]:[y,p,h],x=r?[g,f,d]:[g,d,f],I=Ae({inputs:{x:e},backend:a,attrs:{shape:w}}),S=Ae({inputs:{x:t},backend:a,attrs:{shape:x}}),T=[I,S],M=Math.max(y,g),D=n?I.shape[1]:I.shape[2],z=s!=null,W=i!=null,U=l==="leakyrelu",H=l!=null?dp(l,!0):null,X=z||W||U||H!=null,j;if((p===1||f===1)&&D>G_&&X===!1){let Y=I,ae=S;n&&(Y=In({inputs:{x:I},backend:a,attrs:{perm:[0,2,1]}}),T.push(Y)),r&&(ae=In({inputs:{x:S},backend:a,attrs:{perm:[0,2,1]}}),T.push(ae));let te=f!==1,ie=f===1,Q=Y;te&&(Q=Ae({inputs:{x:Y},backend:a,attrs:{shape:[M,D,1]}}),T.push(Q));let he=f===1?2:1,oe=ae;ie&&(oe=Ae({inputs:{x:ae},backend:a,attrs:{shape:[M,1,D]}}),T.push(oe));let fe=H_({inputs:{a:Q,b:oe},backend:a});j=eA({inputs:{x:fe},backend:a,attrs:{axis:he,keepDims:!0}}),T.push(fe)}else{let Y=rr(e.dtype,t.dtype),ae=new W_(w,x,[M,p,f],n,r,z,H,W,U),te=[I,S];if(s!=null&&te.push(s),W&&te.push(i),U){let ie=a.makeTensorInfo([],"float32",v.createScalarValue(o,"float32"));te.push(ie),T.push(ie)}j=a.runWebGLProgram(ae,te,Y)}let ee=Ae({inputs:{x:j},backend:a,attrs:{shape:b}});T.push(j);for(let Y of T)a.disposeIntermediateTensorInfo(Y);return ee}function FL(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t,{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r;return fp({a,b:s,transposeA:l,transposeB:u,backend:n,bias:i,preluActivationWeights:o,leakyreluAlpha:h,activation:c})}var ML={kernelName:Qs,backendName:"webgl",kernelFunc:FL},q_="return abs(x);";function $L(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])&&r.dtype!=="complex64"){let s=n.texData.get(r.dataId),i=N_(s.values);return n.makeTensorInfo(r.shape,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,q_):a=new Ba(r.shape,q_),n.runWebGLProgram(a,[r],r.dtype)}var DL={kernelName:Zi,backendName:"webgl",kernelFunc:$L},OL=xr+` if (abs(x) > 1.) { return NAN; } return acos(x); -`,OL=Xe({opSnippet:DL}),zL={kernelName:Yi,backendName:"webgl",kernelFunc:OL},PL=xr+` +`,zL=Xe({opSnippet:OL}),PL={kernelName:Yi,backendName:"webgl",kernelFunc:zL},LL=xr+` if (x < 1.0) return NAN; -return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,backendName:"webgl",kernelFunc:LL},q_="return a + b;",BL=nn({opSnippet:q_,packedOpSnippet:q_,supportsComplex:!0,cpuKernelImpl:hP}),VL={kernelName:Na,backendName:"webgl",kernelFunc:BL},UL=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`float v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` +return log(x + sqrt(x * x - 1.0));`,WL=Xe({opSnippet:LL}),BL={kernelName:Ji,backendName:"webgl",kernelFunc:WL},X_="return a + b;",VL=nn({opSnippet:X_,packedOpSnippet:X_,supportsComplex:!0,cpuKernelImpl:dP}),UL={kernelName:Na,backendName:"webgl",kernelFunc:VL},HL=class{constructor(e,t){this.outputShape=[],this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`float v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` void main() { ${n.join(` `)} @@ -1230,7 +1230,7 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back float result = ${r}; setOutput(result); } - `}},HL=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`vec4 v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` + `}},jL=class{constructor(e,t){this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.variableNames=t.map((a,s)=>`T${s}`);let n=[];this.variableNames.forEach(a=>{n.push(`vec4 v${a} = get${a}AtOutCoords();`)});let r=this.variableNames.map(a=>`v${a}`).join(" + ");this.userCode=` void main() { ${n.join(` `)} @@ -1238,7 +1238,7 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back vec4 result = ${r}; setOutput(result); } - `}};function mp(e){let{inputs:t,backend:n}=e,r=t;if(r.length===1)return zn({inputs:{x:r[0]},backend:n});if(r.length>J().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(r.length/2),l=mp({inputs:r.slice(0,o),backend:n}),u=mp({inputs:r.slice(o),backend:n});return mp({inputs:[l,u],backend:n})}let a=r.map(o=>o.dtype).reduce((o,l)=>rr(o,l)),s=r.map(o=>o.shape),i=J().getBool("WEBGL_PACK")?new HL(r[0].shape,s):new UL(r[0].shape,s);return n.runWebGLProgram(i,r,a)}var jL={kernelName:os,backendName:"webgl",kernelFunc:mp};function GL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("all",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"all",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var qL={kernelName:vh,backendName:"webgl",kernelFunc:GL};function XL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("any",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"any",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var KL={kernelName:kh,backendName:"webgl",kernelFunc:XL},ZL=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:r,batchSize:a,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` + `}};function mp(e){let{inputs:t,backend:n}=e,r=t;if(r.length===1)return zn({inputs:{x:r[0]},backend:n});if(r.length>J().get("WEBGL_MAX_TEXTURES_IN_SHADER")){let o=Math.floor(r.length/2),l=mp({inputs:r.slice(0,o),backend:n}),u=mp({inputs:r.slice(o),backend:n});return mp({inputs:[l,u],backend:n})}let a=r.map(o=>o.dtype).reduce((o,l)=>rr(o,l)),s=r.map(o=>o.shape),i=J().getBool("WEBGL_PACK")?new jL(r[0].shape,s):new HL(r[0].shape,s);return n.runWebGLProgram(i,r,a)}var GL={kernelName:os,backendName:"webgl",kernelFunc:mp};function qL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("all",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"all",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var XL={kernelName:vh,backendName:"webgl",kernelFunc:qL};function KL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),u=R.getInnerMostAxes(u.length,o)),R.assertAxesAreInnerMostDims("any",u,o);let[d,p]=R.computeOutAndReduceShapes(h.shape,u),f=v.sizeFromShape(p),m=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,f]}}),A=bi(m,m.dtype,"any",n),y;if(i){let g=R.expandShapeToKeepDim(d,l);y=Ae({inputs:{x:A},backend:n,attrs:{shape:g}})}else y=Ae({inputs:{x:A},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(m),n.disposeIntermediateTensorInfo(A),c!=null&&n.disposeIntermediateTensorInfo(h),y}var ZL={kernelName:kh,backendName:"webgl",kernelFunc:KL},YL=class{constructor(e,t,n){this.variableNames=["A"];let{windowSize:r,batchSize:a,outSize:s}=e;n||this.variableNames.push("bestIndicesA"),this.outputShape=[a,s];let i=t==="max"?">":"<",o=n?"inOffset + i;":"round(getBestIndicesA(batch, inOffset + i));";this.userCode=` void main() { ivec2 coords = getOutputCoords(); int batch = coords[0]; @@ -1258,7 +1258,7 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back } setOutput(float(bestIndex)); } - `}},YL=class{constructor(e,t,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,v.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let a=e[e.length-1],s=Math.ceil(a/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=ut(o),u=mn("coords",o),c,h;if(s===1){h=o+1;let I=ut(h);c=` + `}},JL=class{constructor(e,t,n,r){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,v.assert(e.length>2,()=>`Packed arg${n.charAt(0).toUpperCase()+n.slice(1)} supports only inputs with rank above 2.`);let a=e[e.length-1],s=Math.ceil(a/t);this.outputShape=e.slice(0,-1),s>1&&this.outputShape.push(s),r||this.variableNames.push("bestIndicesA");let i=this.outputShape,o=i.length,l=ut(o),u=mn("coords",o),c,h;if(s===1){h=o+1;let I=ut(h);c=` ${I} sourceLocR = ${I}(${u.join()}, 0); ++${u[o-1]}; ${I} sourceLocG = ${I}(${u.join()}, 0); @@ -1320,23 +1320,23 @@ return log(x + sqrt(x * x - 1.0));`,LL=Xe({opSnippet:PL}),WL={kernelName:Ji,back } setOutput(bestIndex); } - `}};function X_(e,t,n,r=null){let a=t.shape[0],s=t.shape[1];r!=null&&(a=r.shape[0],s=r.shape[1]);let i=R.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:a,outSize:Math.ceil(s/i)},l=new ZL(o,n,r==null),u=[t];r!=null&&u.push(r);let c=e.runWebGLProgram(l,u,"int32");if(c.shape[1]===1)return c;let h=X_(e,t,n,c);return e.disposeIntermediateTensorInfo(c),h}function K_(e,t,n,r=null){let a=r!=null?r.shape:t.shape,s=a[a.length-1],i=R.computeOptimalWindowSize(s),o=new YL(a,i,n,r==null),l=r==null?[t]:[t,r],u=e.runWebGLProgram(o,l,"int32");if(u.shape.length===t.shape.length){let c=K_(e,t,n,u);return e.disposeIntermediateTensorInfo(u),c}return u}function Z_(e,t,n,r){let a=[n];if(R.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),a,t.shape.length),!J().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=R.computeOutAndReduceShapes(t.shape,a),l=v.sizeFromShape(o),u=Ae({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(u);let c=X_(e,u,r);s.push(c);let h=Ae({inputs:{x:c},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),h}return K_(e,t,r)}function JL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let c=Z_(n,l,i[0],"max");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var QL={kernelName:ls,backendName:"webgl",kernelFunc:JL};function eW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let c=Z_(n,l,i[0],"min");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var tW={kernelName:lu,backendName:"webgl",kernelFunc:eW},nW=xr+` + `}};function K_(e,t,n,r=null){let a=t.shape[0],s=t.shape[1];r!=null&&(a=r.shape[0],s=r.shape[1]);let i=R.computeOptimalWindowSize(s),o={windowSize:i,inSize:s,batchSize:a,outSize:Math.ceil(s/i)},l=new YL(o,n,r==null),u=[t];r!=null&&u.push(r);let c=e.runWebGLProgram(l,u,"int32");if(c.shape[1]===1)return c;let h=K_(e,t,n,c);return e.disposeIntermediateTensorInfo(c),h}function Z_(e,t,n,r=null){let a=r!=null?r.shape:t.shape,s=a[a.length-1],i=R.computeOptimalWindowSize(s),o=new JL(a,i,n,r==null),l=r==null?[t]:[t,r],u=e.runWebGLProgram(o,l,"int32");if(u.shape.length===t.shape.length){let c=Z_(e,t,n,u);return e.disposeIntermediateTensorInfo(u),c}return u}function Y_(e,t,n,r){let a=[n];if(R.assertAxesAreInnerMostDims("arg"+r.charAt(0).toUpperCase()+r.slice(1),a,t.shape.length),!J().getBool("WEBGL_PACK_REDUCE")||t.shape.length<=2){let s=[],[i,o]=R.computeOutAndReduceShapes(t.shape,a),l=v.sizeFromShape(o),u=Ae({inputs:{x:t},backend:e,attrs:{shape:[-1,l]}});s.push(u);let c=K_(e,u,r);s.push(c);let h=Ae({inputs:{x:c},backend:e,attrs:{shape:i}});return s.forEach(d=>e.disposeIntermediateTensorInfo(d)),h}return Z_(e,t,r)}function QL(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMax",[i[0]],l.shape.length);let c=Y_(n,l,i[0],"max");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var eW={kernelName:ls,backendName:"webgl",kernelFunc:QL};function tW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s}=r,i=v.parseAxisParam(s,a.shape),o=R.getAxesPermutation(i,a.shape.length),l=a,u=[];o!=null&&(l=In({inputs:{x:a},backend:n,attrs:{perm:o}}),u.push(l),i=R.getInnerMostAxes(i.length,l.shape.length)),R.assertAxesAreInnerMostDims("argMin",[i[0]],l.shape.length);let c=Y_(n,l,i[0],"min");return u.forEach(h=>n.disposeIntermediateTensorInfo(h)),c}var nW={kernelName:lu,backendName:"webgl",kernelFunc:tW},rW=xr+` if (abs(x) > 1.) { return NAN; } return asin(x); -`,rW=Xe({opSnippet:nW}),aW={kernelName:Qi,backendName:"webgl",kernelFunc:rW},sW=xr+"return log(x + sqrt(x * x + 1.0));",iW=Xe({opSnippet:sW}),oW={kernelName:eo,backendName:"webgl",kernelFunc:iW},lW=xr+` +`,aW=Xe({opSnippet:rW}),sW={kernelName:Qi,backendName:"webgl",kernelFunc:aW},iW=xr+"return log(x + sqrt(x * x + 1.0));",oW=Xe({opSnippet:iW}),lW={kernelName:eo,backendName:"webgl",kernelFunc:oW},uW=xr+` return atan(x); -`,uW=Xe({opSnippet:lW}),cW={kernelName:to,backendName:"webgl",kernelFunc:uW},hW=gL+` +`,cW=Xe({opSnippet:uW}),hW={kernelName:to,backendName:"webgl",kernelFunc:cW},dW=xL+` return atan(a, b); -`,dW=` +`,pW=` vec4 result = atan(a, b); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); - `+xL+` + `+wL+` return result; -`,pW=nn({opSnippet:hW,packedOpSnippet:dW}),fW={kernelName:ro,backendName:"webgl",kernelFunc:pW},mW=xr+` +`,fW=nn({opSnippet:dW,packedOpSnippet:pW}),mW={kernelName:ro,backendName:"webgl",kernelFunc:fW},AW=xr+` if ((x < -1.0) || (x > 1.0)) return NAN; -return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelName:no,backendName:"webgl",kernelFunc:AW},hc=class{constructor(e,t,n,r=!1,a=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=e.padInfo.top,p=e.padInfo.left;this.outputShape=e.outShape;let f=t==="avg",m=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,A=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(f||(y="-1.0 / 1e-20"),n){let I=">=";this.userCode=` +return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,yW=Xe({opSnippet:AW}),gW={kernelName:no,backendName:"webgl",kernelFunc:yW},hc=class{constructor(e,t,n,r=!1,a=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let s=e.filterWidth,i=e.strideHeight,o=e.strideWidth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterHeight,h=e.effectiveFilterWidth,d=e.padInfo.top,p=e.padInfo.left;this.outputShape=e.outShape;let f=t==="avg",m=`((batch * ${e.inHeight} + xR) * ${e.inWidth} + xC) * ${e.inChannels} + d`,A=`(xR * ${e.inWidth} + xC) * ${e.inChannels} + d`,y="0.0";if(f||(y="-1.0 / 1e-20"),n){let I=">=";this.userCode=` const ivec2 strides = ivec2(${i}, ${o}); const ivec2 pads = ivec2(${d}, ${p}); @@ -1640,7 +1640,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(${w}); } } - `}};function gW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"avg",!1);return n.runWebGLProgram(h,[a],"float32")}var xW={kernelName:us,backendName:"webgl",kernelFunc:gW};function wW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,l,u),d=new tA(h,"avg",!1);return n.runWebGLProgram(d,[a],"float32")}var _W={kernelName:uu,backendName:"webgl",kernelFunc:wW},bW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,u=o-1-e.padInfo.top,c=l-1-e.padInfo.left,h=1/(t*n);this.userCode=` + `}};function xW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"avgPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in avgPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"avg",!1);return n.runWebGLProgram(h,[a],"float32")}var wW={kernelName:us,backendName:"webgl",kernelFunc:xW};function _W(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l,dataFormat:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,l,u),d=new tA(h,"avg",!1);return n.runWebGLProgram(d,[a],"float32")}var bW={kernelName:uu,backendName:"webgl",kernelFunc:_W},vW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterHeight,l=e.effectiveFilterWidth,u=o-1-e.padInfo.top,c=l-1-e.padInfo.left,h=1/(t*n);this.userCode=` const ivec2 pads = ivec2(${u}, ${c}); const float avgMultiplier = float(${h}); @@ -1682,7 +1682,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},vW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,h=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=c-1-e.padInfo.front,f=h-1-e.padInfo.top,m=d-1-e.padInfo.left,A=1/(t*n*r);this.userCode=` + `}},kW=class{constructor(e){this.variableNames=["dy"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.effectiveFilterDepth,h=e.effectiveFilterHeight,d=e.effectiveFilterWidth,p=c-1-e.padInfo.front,f=h-1-e.padInfo.top,m=d-1-e.padInfo.left,A=1/(t*n*r);this.userCode=` const ivec3 pads = ivec3(${p}, ${f}, ${m}); const float avgMultiplier = float(${A}); @@ -1738,7 +1738,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function kW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new vW(d);return n.runWebGLProgram(p,[a],i.dtype)}var NW={kernelName:Ih,backendName:"webgl",kernelFunc:kW};function IW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;vl([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=new bW(c);return n.runWebGLProgram(h,[a],i.dtype)}var SW={kernelName:Nh,backendName:"webgl",kernelFunc:IW};function TW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;return fp({a,b:s,transposeA:i,transposeB:o,backend:n})}var CW={kernelName:cs,backendName:"webgl",kernelFunc:TW},EW=class{constructor(e,t,n,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="0.0";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` + `}};function NW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new kW(d);return n.runWebGLProgram(p,[a],i.dtype)}var IW={kernelName:Ih,backendName:"webgl",kernelFunc:NW};function SW(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s;vl([a,s],"avgPoolGrad");let{filterSize:o,strides:l,pad:u}=r,c=R.computePool2DInfo(i.shape,o,l,1,u),h=new vW(c);return n.runWebGLProgram(h,[a],i.dtype)}var TW={kernelName:Nh,backendName:"webgl",kernelFunc:SW};function CW(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;return fp({a,b:s,transposeA:i,transposeB:o,backend:n})}var EW={kernelName:cs,backendName:"webgl",kernelFunc:CW},RW=class{constructor(e,t,n,r,a,s){this.outputShape=[],this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="0.0";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="1.0";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { float x = getXAtOutCoords(); float mean = getMeanAtOutCoords(); @@ -1748,7 +1748,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float inv = scale * inversesqrt(variance + float(${s})); setOutput(dot(vec3(x, -mean, offset), vec3(inv, inv, 1))); } - `}},RW=class{constructor(e,t,n,r,a,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` + `}},FW=class{constructor(e,t,n,r,a,s){this.packedInputs=!0,this.packedOutput=!0,this.variableNames=["x","mean","variance"],R.assertAndGetBroadcastShape(e,t),R.assertAndGetBroadcastShape(e,n);let i="vec4(0.0)";r!=null&&(R.assertAndGetBroadcastShape(e,r),this.variableNames.push("offset"),i="getOffsetAtOutCoords()");let o="vec4(1.0)";a!=null&&(R.assertAndGetBroadcastShape(e,a),this.variableNames.push("scale"),o="getScaleAtOutCoords()"),this.outputShape=e,this.userCode=` void main() { vec4 offset = ${i}; vec4 scale = ${o}; @@ -1761,7 +1761,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput((x - mean) * inv + offset); } - `}},FW=({inputs:e,backend:t,attrs:n})=>{let{x:r,mean:a,variance:s,offset:i,scale:o}=e;v.assert(a.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||a.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(o==null||a.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let u=[r,a,s],c=null;i!=null&&(c=i.shape,u.push(i));let h=null;o!=null&&(h=o.shape,u.push(o));let d=J().getBool("WEBGL_PACK_NORMALIZATION")?new RW(r.shape,a.shape,s.shape,c,h,l):new EW(r.shape,a.shape,s.shape,c,h,l);return t.runWebGLProgram(d,u,u[0].dtype)},MW={kernelName:bs,backendName:"webgl",kernelFunc:FW},DW=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=`uniform int start[${this.rank}];`,r=$W(this.rank),a,s=e.map((i,o)=>`sourceLoc.${nA[o]} = start[${o}] + coords.${nA[o]};`);a=` + `}},MW=({inputs:e,backend:t,attrs:n})=>{let{x:r,mean:a,variance:s,offset:i,scale:o}=e;v.assert(a.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),v.assert(i==null||a.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),v.assert(o==null||a.shape.length===o.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=n;l==null&&(l=.001);let u=[r,a,s],c=null;i!=null&&(c=i.shape,u.push(i));let h=null;o!=null&&(h=o.shape,u.push(o));let d=J().getBool("WEBGL_PACK_NORMALIZATION")?new FW(r.shape,a.shape,s.shape,c,h,l):new RW(r.shape,a.shape,s.shape,c,h,l);return t.runWebGLProgram(d,u,u[0].dtype)},$W={kernelName:bs,backendName:"webgl",kernelFunc:MW},OW=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=`uniform int start[${this.rank}];`,r=DW(this.rank),a,s=e.map((i,o)=>`sourceLoc.${nA[o]} = start[${o}] + coords.${nA[o]};`);a=` ${t} sourceLoc; ${t} coords = getOutputCoords(); ${s.join(` @@ -1772,7 +1772,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${a} setOutput(getSource(${r})); } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},nA=["x","y","z","w","u","v"];function $W(e){if(e===1)return"sourceLoc";if(e<=6)return nA.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var OW=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=mn("coords",this.rank),r=mn("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":`vec2(${r.slice(-2).join()})`,s=`getChannel(getSource(${r.join()}), ${a})`,i=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}},nA=["x","y","z","w","u","v"];function DW(e){if(e===1)return"sourceLoc";if(e<=6)return nA.slice(0,e).map(t=>"sourceLoc."+t).join(",");throw Error(`Slicing for rank ${e} is not yet supported`)}var zW=class{constructor(e){this.variableNames=["source"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.rank=e.length;let t=ut(this.rank),n=mn("coords",this.rank),r=mn("sourceLoc",this.rank),a=this.rank===1?"sourceLoc":`vec2(${r.slice(-2).join()})`,s=`getChannel(getSource(${r.join()}), ${a})`,i=` result.x = ${s}; if (++${n[this.rank-1]} < ${e[this.rank-1]}) { ++${r[this.rank-1]}; @@ -1802,7 +1802,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${o} setOutput(result); } - `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function zW(e,t,n,r){let a=r.texData.get(e.dataId),s=r.makeTensorInfo(n,e.dtype),i=r.texData.get(s.dataId);Object.assign(i,a),i.refCount=1,i.shape=n,i.dtype=e.dtype;let o=cn.computeFlatOffset(t,v.computeStrides(e.shape));a.slice&&(o+=a.slice.flatOffset),i.slice={flatOffset:o,origDataId:a.slice&&a.slice.origDataId||e.dataId};let l=r.dataRefCount.get(i.slice.origDataId)||1;return r.dataRefCount.set(i.slice.origDataId,l+1),s}function dc(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r,[o,l]=cn.parseSliceParams(a,s,i);if(cn.assertParamsValid(a,o,l),v.sizeFromShape(l)===0)return n.makeTensorInfo(l,a.dtype,[]);if(n.shouldExecuteOnCPU([a])||a.dtype==="string"){let h=n.texData.get(a.dataId),d=RP(h.values,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,d)}let{isPacked:u}=n.texData.get(a.dataId),c=cn.isSliceContinous(a.shape,o,l);if(u||!c){let h=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new OW(l):new DW(l),d=h.getCustomSetupFunc(o);return n.runWebGLProgram(h,[a],a.dtype,d)}return n.uploadToGPU(a.dataId),zW(a,o,l,n)}var PW={kernelName:Lo,backendName:"webgl",kernelFunc:dc},LW=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;v.assert(a.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((g,_)=>g*_),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=[],f=Ae({inputs:{x:a},backend:n,attrs:{shape:l}}),m=In({inputs:{x:f},backend:n,attrs:{perm:u}}),A=Ae({inputs:{x:m},backend:n,attrs:{shape:c}}),y=dc({inputs:{x:A},backend:n,attrs:{begin:h,size:d}});return p.push(f),p.push(m),p.push(A),p.forEach(g=>n.disposeIntermediateTensorInfo(g)),y},WW={kernelName:cu,backendName:"webgl",kernelFunc:LW};function BW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.readSync(a.dataId),l=n.readSync(s.dataId),u=v_(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var VW={kernelName:Sh,backendName:"webgl",kernelFunc:BW},UW="return float(a != b);",Y_=nn({opSnippet:UW,dtype:"bool"}),HW={kernelName:So,backendName:"webgl",kernelFunc:Y_};function pc(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.real},backend:n})}var jW={kernelName:Xh,backendName:"webgl",kernelFunc:pc},GW="return float(int(x));";function qW(e,t){let n=new Ba(e.shape,GW),r=t.runWebGLProgram(n,[e],"int32");return{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}function rA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return zn({inputs:{x:a},backend:n});let i=Et(a.shape),o=rA({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Va({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=pc({inputs:{input:a},backend:n}),o=rA({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=zn({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return qW(a,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",v.getTypedArrayFromDType("bool",1)),o=Y_({inputs:{a,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var XW={kernelName:hs,backendName:"webgl",kernelFunc:rA},J_="return ceil(x);",KW=Xe({opSnippet:J_,packedOpSnippet:J_,cpuKernelImpl:pP}),ZW={kernelName:ds,backendName:"webgl",kernelFunc:KW},YW=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e){if(e.length!==this.rank)throw Error(`The rank (${this.rank}) of the program must match the length of start (${e.length})`);return(t,n)=>{this.startLoc==null&&(this.startLoc=t.getUniformLocationNoThrow(n,"start"),this.startLoc==null)||t.gl.uniform1iv(this.startLoc,e)}}};function PW(e,t,n,r){let a=r.texData.get(e.dataId),s=r.makeTensorInfo(n,e.dtype),i=r.texData.get(s.dataId);Object.assign(i,a),i.refCount=1,i.shape=n,i.dtype=e.dtype;let o=cn.computeFlatOffset(t,v.computeStrides(e.shape));a.slice&&(o+=a.slice.flatOffset),i.slice={flatOffset:o,origDataId:a.slice&&a.slice.origDataId||e.dataId};let l=r.dataRefCount.get(i.slice.origDataId)||1;return r.dataRefCount.set(i.slice.origDataId,l+1),s}function dc(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,size:i}=r,[o,l]=cn.parseSliceParams(a,s,i);if(cn.assertParamsValid(a,o,l),v.sizeFromShape(l)===0)return n.makeTensorInfo(l,a.dtype,[]);if(n.shouldExecuteOnCPU([a])||a.dtype==="string"){let h=n.texData.get(a.dataId),d=FP(h.values,o,l,a.shape,a.dtype);return n.makeTensorInfo(l,a.dtype,d)}let{isPacked:u}=n.texData.get(a.dataId),c=cn.isSliceContinous(a.shape,o,l);if(u||!c){let h=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new zW(l):new OW(l),d=h.getCustomSetupFunc(o);return n.runWebGLProgram(h,[a],a.dtype,d)}return n.uploadToGPU(a.dataId),PW(a,o,l,n)}var LW={kernelName:Lo,backendName:"webgl",kernelFunc:dc},WW=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,crops:i}=r;v.assert(a.shape.length<=4,()=>"batchToSpaceND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((g,_)=>g*_),l=R.getReshaped(a.shape,s,o),u=R.getPermuted(l.length,s.length),c=R.getReshapedPermuted(a.shape,s,o),h=R.getSliceBeginCoords(i,s.length),d=R.getSliceSize(c,i,s.length),p=[],f=Ae({inputs:{x:a},backend:n,attrs:{shape:l}}),m=In({inputs:{x:f},backend:n,attrs:{perm:u}}),A=Ae({inputs:{x:m},backend:n,attrs:{shape:c}}),y=dc({inputs:{x:A},backend:n,attrs:{begin:h,size:d}});return p.push(f),p.push(m),p.push(A),p.forEach(g=>n.disposeIntermediateTensorInfo(g)),y},BW={kernelName:cu,backendName:"webgl",kernelFunc:WW};function VW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i}=r,o=n.readSync(a.dataId),l=n.readSync(s.dataId),u=k_(o,l,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,u)}var UW={kernelName:Sh,backendName:"webgl",kernelFunc:VW},HW="return float(a != b);",J_=nn({opSnippet:HW,dtype:"bool"}),jW={kernelName:So,backendName:"webgl",kernelFunc:J_};function pc(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.real},backend:n})}var GW={kernelName:Xh,backendName:"webgl",kernelFunc:pc},qW="return float(int(x));";function XW(e,t){let n=new Ba(e.shape,qW),r=t.runWebGLProgram(n,[e],"int32");return{dataId:r.dataId,shape:r.shape,dtype:r.dtype}}function rA(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dtype:s}=r;if(s==="complex64"){if(a.dtype==="complex64")return zn({inputs:{x:a},backend:n});let i=Et(a.shape),o=rA({inputs:{x:a},backend:n,attrs:{dtype:"float32"}}),l=Va({inputs:{real:o,imag:i},backend:n});return i.dispose(),n.disposeIntermediateTensorInfo(o),l}if(a.dtype==="complex64"){let i=pc({inputs:{input:a},backend:n}),o=rA({inputs:{x:i},backend:n,attrs:{dtype:s}});return n.disposeIntermediateTensorInfo(i),o}if(!v.hasEncodingLoss(a.dtype,s)){let i=zn({inputs:{x:a},backend:n});return{dataId:i.dataId,shape:i.shape,dtype:s}}if(s==="int32")return XW(a,n);if(s==="bool"){let i=n.makeTensorInfo([],"bool",v.getTypedArrayFromDType("bool",1)),o=J_({inputs:{a,b:i},backend:n});return n.disposeIntermediateTensorInfo(i),o}throw new Error(`Error in Cast: failed to cast ${a.dtype} to ${s}`)}var KW={kernelName:hs,backendName:"webgl",kernelFunc:rA},Q_="return ceil(x);",ZW=Xe({opSnippet:Q_,packedOpSnippet:Q_,cpuKernelImpl:fP}),YW={kernelName:ds,backendName:"webgl",kernelFunc:ZW},JW=class{constructor(e){this.variableNames=["A"],this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1815,7 +1815,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(clamp(value, minVal, maxVal)); } - `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},JW=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}},QW=class{constructor(e){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e,this.userCode=` uniform float minVal; uniform float maxVal; @@ -1829,7 +1829,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(clamp(value, vec4(minVal), vec4(maxVal))); } - `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function QW(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o;J().getBool("WEBGL_PACK_CLIP")?o=new JW(a.shape):o=new YW(a.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[a],a.dtype,l)}var eB={kernelName:Ia,backendName:"webgl",kernelFunc:QW},tB=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e,t){return(n,r)=>{this.minLoc==null&&(this.minLoc=n.getUniformLocationNoThrow(r,"minVal"),this.maxLoc=n.getUniformLocationNoThrow(r,"maxVal")),n.gl.uniform1f(this.minLoc,e),n.gl.uniform1f(this.maxLoc,t)}}};function eB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o;J().getBool("WEBGL_PACK_CLIP")?o=new QW(a.shape):o=new JW(a.shape);let l=o.getCustomSetupFunc(s,i);return n.runWebGLProgram(o,[a],a.dtype,l)}var tB={kernelName:Ia,backendName:"webgl",kernelFunc:eB},nB=class{constructor(e){this.variableNames=["real","imag"],this.outputShape=e,this.userCode=` void main() { float re = abs(getRealAtOutCoords()); float im = abs(getImagAtOutCoords()); @@ -1842,7 +1842,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam mx == 0.0 ? 0.0 : mx * length(vec2(1, min(re, im)/mx)) ); } - `}};function Q_(e,t){return{dataId:t.dataId,dtype:t.dtype,shape:e.shape}}function nB(e){let{inputs:t,backend:n}=e,{x:r}=t,a=n.texData.get(r.dataId),s=new tB(r.shape),i=[Q_(r,a.complexTensorInfos.real),Q_(r,a.complexTensorInfos.imag)];return n.runWebGLProgram(s,i,i[0].dtype)}var rB={kernelName:hu,backendName:"webgl",kernelFunc:nB},aB=class{constructor(e){this.outputShape=[],this.outputShape=R.computeOutShape(e,1),this.variableNames=e.map((s,i)=>`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${i}`);let t=new Array(e.length-1);t[0]=e[0][1];for(let s=1;s`T${m}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let f=1;f`T${m}`);let o=new Array(e.length-1);o[0]=e[0][t];for(let f=1;fs===r?`${a} - ${n}`:a).join()}function yp(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.imag},backend:n})}var iB={kernelName:Bh,backendName:"webgl",kernelFunc:yp};function Fl(e,t,n){let r=e[0].dtype;if(r==="complex64"){let u=e.map(f=>pc({inputs:{input:f},backend:n})),c=e.map(f=>yp({inputs:{input:f},backend:n})),h=Fl(u,t,n),d=Fl(c,t,n),p=Va({inputs:{real:h,imag:d},backend:n});return u.forEach(f=>n.disposeIntermediateTensorInfo(f)),c.forEach(f=>n.disposeIntermediateTensorInfo(f)),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),p}if(r==="string"){let{tensors2D:u,outShape:c}=eb(e,t,n),h=u.map(A=>({vals:n.readSync(A.dataId),shape:A.shape})),d=u[0].shape[0]===1,p=fP(h,c,r,d),f=R.computeOutShape(e.map(A=>A.shape),t),m=n.makeTensorInfo(f,r,p);return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),m}if(e.length>J().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let u=Math.floor(e.length/2),c=Fl(e.slice(0,u),t,n),h=Fl(e.slice(u),t,n),d=Fl([c,h],t,n);return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),d}if(J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let u=new sB(e.map(c=>c.shape),t);return n.runWebGLProgram(u,e,r)}let{tensors2D:a,outShape:s}=eb(e,t,n),i=new aB(a.map(u=>u.shape)),o=n.runWebGLProgram(i,a,r);a.forEach(u=>n.disposeIntermediateTensorInfo(u));let l=Ae({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function eb(e,t,n){let r=R.computeOutShape(e.map(a=>a.shape),t);return{tensors2D:e.map(a=>Ae({inputs:{x:a},attrs:{shape:[-1,v.sizeFromShape(a.shape.slice(t))]},backend:n})),outShape:r}}function tb(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,s=v.parseAxisParam(a,t[0].shape)[0],i=R.computeOutShape(t.map(u=>u.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(u=>v.sizeFromShape(u.shape)>0);if(o.length===1)return zn({inputs:{x:o[0]},backend:n});let l=o.map(u=>u.shape);return R.assertParamsConsistent(l,s),Fl(o,s,n)}var oB={kernelName:ao,backendName:"webgl",kernelFunc:tb},nb=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,c=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4,m=e.dataFormat==="channelsLast",A=m?1:2,y=m?2:3,g=m?3:1,_="",b="";n&&(r?_=`float activation(float a) { + `}};function Ap(e,t,n){let r=e.indexOf(t);return e.map((a,s)=>s===r?`${a} - ${n}`:a).join()}function yp(e){let{inputs:t,backend:n}=e,{input:r}=t,a=n.texData.get(r.dataId);return zn({inputs:{x:a.complexTensorInfos.imag},backend:n})}var oB={kernelName:Bh,backendName:"webgl",kernelFunc:yp};function Fl(e,t,n){let r=e[0].dtype;if(r==="complex64"){let u=e.map(f=>pc({inputs:{input:f},backend:n})),c=e.map(f=>yp({inputs:{input:f},backend:n})),h=Fl(u,t,n),d=Fl(c,t,n),p=Va({inputs:{real:h,imag:d},backend:n});return u.forEach(f=>n.disposeIntermediateTensorInfo(f)),c.forEach(f=>n.disposeIntermediateTensorInfo(f)),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),p}if(r==="string"){let{tensors2D:u,outShape:c}=tb(e,t,n),h=u.map(A=>({vals:n.readSync(A.dataId),shape:A.shape})),d=u[0].shape[0]===1,p=mP(h,c,r,d),f=R.computeOutShape(e.map(A=>A.shape),t),m=n.makeTensorInfo(f,r,p);return u.forEach(A=>n.disposeIntermediateTensorInfo(A)),m}if(e.length>J().getNumber("WEBGL_MAX_TEXTURES_IN_SHADER")){let u=Math.floor(e.length/2),c=Fl(e.slice(0,u),t,n),h=Fl(e.slice(u),t,n),d=Fl([c,h],t,n);return n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),d}if(J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")&&e[0].shape.length>1){let u=new iB(e.map(c=>c.shape),t);return n.runWebGLProgram(u,e,r)}let{tensors2D:a,outShape:s}=tb(e,t,n),i=new sB(a.map(u=>u.shape)),o=n.runWebGLProgram(i,a,r);a.forEach(u=>n.disposeIntermediateTensorInfo(u));let l=Ae({inputs:{x:o},attrs:{shape:s},backend:n});return n.disposeIntermediateTensorInfo(o),l}function tb(e,t,n){let r=R.computeOutShape(e.map(a=>a.shape),t);return{tensors2D:e.map(a=>Ae({inputs:{x:a},attrs:{shape:[-1,v.sizeFromShape(a.shape.slice(t))]},backend:n})),outShape:r}}function nb(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r,s=v.parseAxisParam(a,t[0].shape)[0],i=R.computeOutShape(t.map(u=>u.shape),s);if(v.sizeFromShape(i)===0)return n.makeTensorInfo(i,t[0].dtype,[]);let o=t.filter(u=>v.sizeFromShape(u.shape)>0);if(o.length===1)return zn({inputs:{x:o[0]},backend:n});let l=o.map(u=>u.shape);return R.assertParamsConsistent(l,s),Fl(o,s,n)}var lB={kernelName:ao,backendName:"webgl",kernelFunc:nb},rb=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.padInfo.top,i=e.padInfo.left,o=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,c=e.dilationWidth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4,m=e.dataFormat==="channelsLast",A=m?1:2,y=m?2:3,g=m?3:1,_="",b="";n&&(r?_=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); ${n} }`:a?_=`float activation(float a) { @@ -2022,7 +2022,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${b} setOutput(result); } - `}},lB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,r=e.padInfo.left,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.filterDepth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4;this.userCode=` + `}},uB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let t=e.padInfo.front,n=e.padInfo.top,r=e.padInfo.left,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=e.dilationDepth,l=e.dilationHeight,u=e.dilationWidth,c=e.filterDepth,h=e.filterHeight,d=e.filterWidth,p=Math.floor(e.inChannels/4)*4,f=e.inChannels%4;this.userCode=` const ivec3 strides = ivec3(${a}, ${s}, ${i}); const ivec3 pads = ivec3(${t}, ${n}, ${r}); @@ -2110,7 +2110,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},uB=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:r,inChannels:a,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:u,dilationHeight:c,dataFormat:h}=n,{left:d,top:p}=o,f=a*r,m=fn(),A=h==="channelsLast",y=A?0:1,g=A?1:2,_="";for(let b=0;b<=1;b++)for(let w=0;w<=1;w++)_+=` + `}},cB=class{constructor(e,t,n){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e;let{filterWidth:r,inChannels:a,strideWidth:s,strideHeight:i,padInfo:o,outWidth:l,dilationWidth:u,dilationHeight:c,dataFormat:h}=n,{left:d,top:p}=o,f=a*r,m=fn(),A=h==="channelsLast",y=A?0:1,g=A?1:2,_="";for(let b=0;b<=1;b++)for(let w=0;w<=1;w++)_+=` blockIndex = rc.y + ${w}; pos = rc.x + ${b}; @@ -2154,7 +2154,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${m.output} = result; } - `}};function rb({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,u=r.texData.get(e.dataId),c=n.inChannels,h=l[0]*l[1]*l[2],d=n.outChannels,p=n.dataFormat==="channelsLast",f=!1,m=!1,A,y=[],g=(h===1||d===1)&&c>j_,_=l[2]%2!=0&&!!u.isPacked;if(g||!J().getBool("WEBGL_LAZILY_UNPACK")||!J().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!_){let b=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=Ae({inputs:{x:e},backend:r,attrs:{shape:[1,b,n.inChannels]}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}}),I=fp({a:w,b:x,transposeA:f,transposeB:m,backend:r,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i});A=Ae({inputs:{x:I},backend:r,attrs:{shape:n.outShape}}),y.push(w),y.push(x),y.push(I)}else{let b=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),w={dataId:e.dataId,shape:[1,b,n.inChannels],dtype:e.dtype},x=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,v.assert(sc(u.shape,w.shape),()=>`packed reshape ${u.shape} to ${w.shape} isn't free`);let I=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(I);let S=fp({a:w,b:I,backend:r,transposeA:f,transposeB:m,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),T=r.texData.get(S.dataId);v.assert(T.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=x,T.shape=n.outShape,A=zn({inputs:{x:S},backend:r}),A.shape=n.outShape,y.push(S)}for(let b of y)r.disposeIntermediateTensorInfo(b);return A}function ab({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:u,inChannels:c,outWidth:h,outHeight:d,dataFormat:p}=n,f=p==="channelsLast",m=l*u*c,A=d*h,y=[m,A],g=!0,_=!1,b=[],w=Ae({inputs:{x:e},backend:r,attrs:{shape:e.shape.slice(1)}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,m,v.sizeFromShape(t.shape)/m]}});b.push(w),b.push(x);let I=new uB(y,w.shape,n),S=r.runWebGLProgram(I,[w],"float32"),T=Ae({inputs:{x:S},backend:r,attrs:{shape:[1,y[0],y[1]]}});b.push(S),b.push(T);let M=a!=null,D=s!=null,z=o==="leakyrelu",W=o?dp(o,!0):null,U=new L_(T.shape,x.shape,[1,A,n.outChannels],g,_,M,W,D,z),H=[T,x];if(a&&H.push(a),D&&H.push(s),z){let Y=r.makeTensorInfo([],"float32",v.createScalarValue(i,"float32"));H.push(Y),b.push(Y)}let X=r.runWebGLProgram(U,H,"float32"),j=f?[1,d,h,n.outChannels]:[1,n.outChannels,d,h],ee=Ae({inputs:{x:X},backend:r,attrs:{shape:j}});b.push(X);for(let Y of b)r.disposeIntermediateTensorInfo(Y);return ee}function cB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))p=rb({x:a,filter:s,convInfo:d,backend:n});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)p=ab({x:a,filter:s,convInfo:d,backend:n});else{let m=new nb(d);p=n.runWebGLProgram(m,[a,s],"float32")}let f=Ae({inputs:{x:p},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(p),f}var hB={kernelName:ps,backendName:"webgl",kernelFunc:cB},dB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` + `}};function ab({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let l=e.shape,u=r.texData.get(e.dataId),c=n.inChannels,h=l[0]*l[1]*l[2],d=n.outChannels,p=n.dataFormat==="channelsLast",f=!1,m=!1,A,y=[],g=(h===1||d===1)&&c>G_,_=l[2]%2!=0&&!!u.isPacked;if(g||!J().getBool("WEBGL_LAZILY_UNPACK")||!J().getBool("WEBGL_PACK_BINARY_OPERATIONS")||!_){let b=p?l[0]*l[1]*l[2]:l[0]*l[2]*l[3],w=Ae({inputs:{x:e},backend:r,attrs:{shape:[1,b,n.inChannels]}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}}),I=fp({a:w,b:x,transposeA:f,transposeB:m,backend:r,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i});A=Ae({inputs:{x:I},backend:r,attrs:{shape:n.outShape}}),y.push(w),y.push(x),y.push(I)}else{let b=p?l[0]*l[1]*(l[2]+1):l[0]*l[2]*(l[3]+1),w={dataId:e.dataId,shape:[1,b,n.inChannels],dtype:e.dtype},x=u.shape;u.shape=u.shape.slice(),u.shape[u.shape.length-2]++,v.assert(sc(u.shape,w.shape),()=>`packed reshape ${u.shape} to ${w.shape} isn't free`);let I=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,n.inChannels,n.outChannels]}});y.push(I);let S=fp({a:w,b:I,backend:r,transposeA:f,transposeB:m,bias:a,activation:o,preluActivationWeights:s,leakyreluAlpha:i}),T=r.texData.get(S.dataId);v.assert(T.isPacked,()=>"batchMatMul result is expected to be packed"),u.shape=x,T.shape=n.outShape,A=zn({inputs:{x:S},backend:r}),A.shape=n.outShape,y.push(S)}for(let b of y)r.disposeIntermediateTensorInfo(b);return A}function sb({x:e,filter:t,convInfo:n,backend:r,bias:a=null,preluActivationWeights:s=null,leakyreluAlpha:i=0,activation:o=null}){let{filterWidth:l,filterHeight:u,inChannels:c,outWidth:h,outHeight:d,dataFormat:p}=n,f=p==="channelsLast",m=l*u*c,A=d*h,y=[m,A],g=!0,_=!1,b=[],w=Ae({inputs:{x:e},backend:r,attrs:{shape:e.shape.slice(1)}}),x=Ae({inputs:{x:t},backend:r,attrs:{shape:[1,m,v.sizeFromShape(t.shape)/m]}});b.push(w),b.push(x);let I=new cB(y,w.shape,n),S=r.runWebGLProgram(I,[w],"float32"),T=Ae({inputs:{x:S},backend:r,attrs:{shape:[1,y[0],y[1]]}});b.push(S),b.push(T);let M=a!=null,D=s!=null,z=o==="leakyrelu",W=o?dp(o,!0):null,U=new W_(T.shape,x.shape,[1,A,n.outChannels],g,_,M,W,D,z),H=[T,x];if(a&&H.push(a),D&&H.push(s),z){let Y=r.makeTensorInfo([],"float32",v.createScalarValue(i,"float32"));H.push(Y),b.push(Y)}let X=r.runWebGLProgram(U,H,"float32"),j=f?[1,d,h,n.outChannels]:[1,n.outChannels,d,h],ee=Ae({inputs:{x:X},backend:r,attrs:{shape:j}});b.push(X);for(let Y of b)r.disposeIntermediateTensorInfo(Y);return ee}function hB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dataFormat:l,dilations:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,s.shape,i,u,o,c,!1,h),p;if(d.filterHeight===1&&d.filterWidth===1&&d.dilationHeight===1&&d.dilationWidth===1&&d.strideHeight===1&&d.strideWidth===1&&(d.padInfo.type==="SAME"||d.padInfo.type==="VALID"))p=ab({x:a,filter:s,convInfo:d,backend:n});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)p=sb({x:a,filter:s,convInfo:d,backend:n});else{let m=new rb(d);p=n.runWebGLProgram(m,[a,s],"float32")}let f=Ae({inputs:{x:p},backend:n,attrs:{shape:d.outShape}});return n.disposeIntermediateTensorInfo(p),f}var dB={kernelName:ps,backendName:"webgl",kernelFunc:hB},pB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.dataFormat==="channelsLast";this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2196,7 +2196,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},pB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,u=s?2:3,c=s?3:1;this.userCode=` + `}},fB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=e.dataFormat==="channelsLast",i=t-1-e.padInfo.top,o=n-1-e.padInfo.left,l=s?1:2,u=s?2:3,c=s?3:1;this.userCode=` const ivec2 pads = ivec2(${i}, ${o}); void main() { @@ -2249,7 +2249,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},fB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` + `}},mB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.padInfo.front,s=e.padInfo.top,i=e.padInfo.left;this.userCode=` void main() { ivec5 coords = getOutputCoords(); int wF = coords.x; @@ -2291,7 +2291,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},mB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,u=r-1-e.padInfo.left;this.userCode=` + `}},AB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterDepth,n=e.filterHeight,r=e.filterWidth,a=e.strideDepth,s=e.strideHeight,i=e.strideWidth,o=t-1-e.padInfo.front,l=n-1-e.padInfo.top,u=r-1-e.padInfo.left;this.userCode=` const ivec3 pads = ivec3(${o}, ${l}, ${u}); void main() { @@ -2348,12 +2348,12 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function AB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:u,filterShape:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,c,i,1,o,u,!1,h),p=new dB(d);return n.runWebGLProgram(p,[a,s],"float32")}var yB={kernelName:Ch,backendName:"webgl",kernelFunc:AB};function gB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(u),d=R.computeConv2DInfo(i,s.shape,o,1,l,c,!1,h),p=new pB(d);return n.runWebGLProgram(p,[a,s],"float32")}var xB={kernelName:fs,backendName:"webgl",kernelFunc:gB};function wB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeConv3DInfo(a.shape,s.shape,i,l,o),c=new lB(u);return n.runWebGLProgram(c,[a,s],"float32")}var _B={kernelName:du,backendName:"webgl",kernelFunc:wB};function bB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,filterShape:l}=r,u=R.computeConv3DInfo(a.shape,l,i,1,o),c=new fB(u);return n.runWebGLProgram(c,[a,s],"float32")}var vB={kernelName:Eh,backendName:"webgl",kernelFunc:bB};function kB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{pad:i,strides:o,inputShape:l}=r,u=R.computeConv3DInfo(l,s.shape,o,1,i),c=new mB(u);return n.runWebGLProgram(c,[a,s],"float32")}var NB={kernelName:Rh,backendName:"webgl",kernelFunc:kB},IB=P_+` + `}};function yB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,dataFormat:l,dimRoundingMode:u,filterShape:c}=r,h=R.convertConv2DDataFormat(l),d=R.computeConv2DInfo(a.shape,c,i,1,o,u,!1,h),p=new pB(d);return n.runWebGLProgram(p,[a,s],"float32")}var gB={kernelName:Ch,backendName:"webgl",kernelFunc:yB};function xB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{inputShape:i,strides:o,pad:l,dataFormat:u,dimRoundingMode:c}=r,h=R.convertConv2DDataFormat(u),d=R.computeConv2DInfo(i,s.shape,o,1,l,c,!1,h),p=new fB(d);return n.runWebGLProgram(p,[a,s],"float32")}var wB={kernelName:fs,backendName:"webgl",kernelFunc:xB};function _B(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeConv3DInfo(a.shape,s.shape,i,l,o),c=new uB(u);return n.runWebGLProgram(c,[a,s],"float32")}var bB={kernelName:du,backendName:"webgl",kernelFunc:_B};function vB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,pad:o,filterShape:l}=r,u=R.computeConv3DInfo(a.shape,l,i,1,o),c=new mB(u);return n.runWebGLProgram(c,[a,s],"float32")}var kB={kernelName:Eh,backendName:"webgl",kernelFunc:vB};function NB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{pad:i,strides:o,inputShape:l}=r,u=R.computeConv3DInfo(l,s.shape,o,1,i),c=new AB(u);return n.runWebGLProgram(c,[a,s],"float32")}var IB={kernelName:Rh,backendName:"webgl",kernelFunc:NB},SB=L_+` return cos(x); -`,SB=Xe({opSnippet:IB}),TB={kernelName:ms,backendName:"webgl",kernelFunc:SB},CB=` +`,TB=Xe({opSnippet:SB}),CB={kernelName:ms,backendName:"webgl",kernelFunc:TB},EB=` float e2x = exp(-x); return (e2x + 1.0 / e2x) / 2.0; -`,EB=Xe({opSnippet:CB}),RB={kernelName:so,backendName:"webgl",kernelFunc:EB},FB=class{constructor(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[u]=t,[c,h]=n;this.outputShape=[u,c,h,l];let d=r==="bilinear"?1:0,[p,f]=[`${i-1}.0`,`${o-1}.0`],[m,A,y]=c>1?[`${(i-1)/(c-1)}`,"(y2-y1) * height_ratio",`y1*${p} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${p}`],[g,_,b]=h>1?[`${(o-1)/(h-1)}`,"(x2-x1) * width_ratio",`x1*${f} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${f}`];this.userCode=` +`,RB=Xe({opSnippet:EB}),FB={kernelName:so,backendName:"webgl",kernelFunc:RB},MB=class{constructor(e,t,n,r,a){this.variableNames=["Image","Boxes","BoxInd"],this.outputShape=[];let[s,i,o,l]=e,[u]=t,[c,h]=n;this.outputShape=[u,c,h,l];let d=r==="bilinear"?1:0,[p,f]=[`${i-1}.0`,`${o-1}.0`],[m,A,y]=c>1?[`${(i-1)/(c-1)}`,"(y2-y1) * height_ratio",`y1*${p} + float(y)*(height_scale)`]:["0.0","0.0",`0.5 * (y1+y2) * ${p}`],[g,_,b]=h>1?[`${(o-1)/(h-1)}`,"(x2-x1) * width_ratio",`x1*${f} + float(x)*(width_scale)`]:["0.0","0.0",`0.5 * (x1+x2) * ${f}`];this.userCode=` const float height_ratio = float(${m}); const float width_ratio = float(${g}); void main() { @@ -2414,21 +2414,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(newValue); } } - `}},MB=e=>{let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,c=new FB(a.shape,s.shape,o,l,u);return n.runWebGLProgram(c,[a,s,i],"float32")},$B={kernelName:io,backendName:"webgl",kernelFunc:MB},ob=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let r=e.length,a=t?"0.0":`getX(${sb(r,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` + `}},$B=e=>{let{inputs:t,backend:n,attrs:r}=e,{image:a,boxes:s,boxInd:i}=t,{cropSize:o,method:l,extrapolationValue:u}=r,c=new MB(a.shape,s.shape,o,l,u);return n.runWebGLProgram(c,[a,s,i],"float32")},DB={kernelName:io,backendName:"webgl",kernelFunc:$B},lb=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=e;let r=e.length,a=t?"0.0":`getX(${ib(r,"coords")})`,s=e[e.length-1],i="",o="";t?(i=n?`end != ${s-1}`:"end != 0",o=n?"end + 1":"end - 1"):(i=n?`end + pow2 < ${s}`:"end >= pow2",o=n?"end + pow2":"end - pow2"),this.userCode=` uniform float index; void main() { ${ut(r)} coords = getOutputCoords(); - int end = ${ib(r,"coords")}; + int end = ${ob(r,"coords")}; float val = ${a}; int pow2 = int(pow(2.0, index)); if (${i}) { int idx = ${o}; - ${ib(r,"coords")} = idx; - val += getX(${sb(r,"coords")}); + ${ob(r,"coords")} = idx; + val += getX(${ib(r,"coords")}); } setOutput(val); } - `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function sb(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function ib(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function DB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,exclusive:i,reverse:o}=r,l=a.shape.length,u=R.getAxesPermutation([s],l),c=a;u!=null&&(c=In({inputs:{x:a},backend:n,attrs:{perm:u}}));let h=R.getInnerMostAxes(1,l)[0];if(h!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${a.shape.length-1} but got axis=${s}`);let d=c.shape[h],p=zn({inputs:{x:c},backend:n});for(let f=0;f<=Math.ceil(Math.log2(d))-1;f++){let m=new ob(c.shape,!1,o),A=m.getCustomSetupFunc(f),y=p;p=n.runWebGLProgram(m,[p],p.dtype,A),n.disposeIntermediateTensorInfo(y)}if(i){let f=new ob(c.shape,i,o),m=p;p=n.runWebGLProgram(f,[p],p.dtype),n.disposeIntermediateTensorInfo(m)}if(u!=null){let f=R.getUndoAxesPermutation(u),m=In({inputs:{x:p},backend:n,attrs:{perm:f}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(c),m}return p}var OB={kernelName:As,backendName:"webgl",kernelFunc:DB};function zB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i,binaryOutput:o}=r;if(a.shape.length===1){let l=n.readSync(a.dataId),u=n.readSync(s.dataId),c=v_(l,u,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}else if(a.shape.length===2){let l=n.bufferSync(a),u=n.bufferSync(s),c=dP(l,u,i,o);return n.makeTensorInfo(c.shape,s.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${a.shape.length}.`)}var PB={kernelName:Fh,backendName:"webgl",kernelFunc:zB},LB=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.index==null&&(this.index=t.getUniformLocation(n,"index")),t.gl.uniform1f(this.index,e)}}};function ib(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.x, ${t}.y`;if(e===3)return`${t}.x, ${t}.y, ${t}.z`;if(e===4)return`${t}.x, ${t}.y, ${t}.z, ${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function ob(e,t){if(e===1)return`${t}`;if(e===2)return`${t}.y`;if(e===3)return`${t}.z`;if(e===4)return`${t}.w`;throw Error(`Cumulative sum for rank ${e} is not yet supported`)}function OB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,exclusive:i,reverse:o}=r,l=a.shape.length,u=R.getAxesPermutation([s],l),c=a;u!=null&&(c=In({inputs:{x:a},backend:n,attrs:{perm:u}}));let h=R.getInnerMostAxes(1,l)[0];if(h!==l-1)throw new Error(`WebGL cumsum shader expects an inner-most axis=${a.shape.length-1} but got axis=${s}`);let d=c.shape[h],p=zn({inputs:{x:c},backend:n});for(let f=0;f<=Math.ceil(Math.log2(d))-1;f++){let m=new lb(c.shape,!1,o),A=m.getCustomSetupFunc(f),y=p;p=n.runWebGLProgram(m,[p],p.dtype,A),n.disposeIntermediateTensorInfo(y)}if(i){let f=new lb(c.shape,i,o),m=p;p=n.runWebGLProgram(f,[p],p.dtype),n.disposeIntermediateTensorInfo(m)}if(u!=null){let f=R.getUndoAxesPermutation(u),m=In({inputs:{x:p},backend:n,attrs:{perm:f}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(c),m}return p}var zB={kernelName:As,backendName:"webgl",kernelFunc:OB};function PB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,weights:s}=t,{size:i,binaryOutput:o}=r;if(a.shape.length===1){let l=n.readSync(a.dataId),u=n.readSync(s.dataId),c=k_(l,u,s.dtype,s.shape,i);return n.makeTensorInfo([i],s.dtype,c)}else if(a.shape.length===2){let l=n.bufferSync(a),u=n.bufferSync(s),c=pP(l,u,i,o);return n.makeTensorInfo(c.shape,s.dtype,c.values)}throw new Error(`Error in denseBincount: input must be at most rank 2, but got rank${a.shape.length}.`)}var LB={kernelName:Fh,backendName:"webgl",kernelFunc:PB},WB=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=[],this.outputShape=e,this.blockSize=t,this.dataFormat=n,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -2447,7 +2447,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float result = ${this.getInputSamplingString()}; setOutput(result); } - `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function WB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=new LB(f,s,i);return n.runWebGLProgram(m,[a],a.dtype)}var BB={kernelName:oo,backendName:"webgl",kernelFunc:WB},lb=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=e.outChannels/e.inChannels,A="",y="";n&&(r?A=`float activation(float a) { + `}getHeightCoordString(){return this.dataFormat==="NHWC"?"coords[1]":"coords[2]"}getWidthCoordString(){return this.dataFormat==="NHWC"?"coords[2]":"coords[3]"}getDepthCoordString(){return this.dataFormat==="NHWC"?"coords[3]":"coords[1]"}getOutputDepthSize(){return this.dataFormat==="NHWC"?this.outputShape[3]:this.outputShape[1]}getInputSamplingString(){return this.dataFormat==="NHWC"?"getX(b, in_h, in_w, in_d)":"getX(b, in_d, in_h, in_w)"}};function BB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=new WB(f,s,i);return n.runWebGLProgram(m,[a],a.dtype)}var VB={kernelName:oo,backendName:"webgl",kernelFunc:BB},ub=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=e.outChannels/e.inChannels,A="",y="";n&&(r?A=`float activation(float a) { float b = getPreluActivationWeightsAtOutCoords(); ${n} }`:a?A=`float activation(float a) { @@ -2503,7 +2503,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${y} setOutput(result); } - `}},ub=class{constructor(e,t=!1,n=null,r=!1,a=!1){this.variableNames=["x","W"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=e.outShape;let s=e.inHeight,i=e.inWidth,o=e.padInfo.top,l=e.padInfo.left,u=e.strideHeight,c=e.strideWidth,h=e.dilationHeight,d=e.dilationWidth,p=e.filterHeight,f=e.filterWidth,m=f,A="int xR; int xC; int xCOffset;";for(let b=0;b`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let h=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!0),d;return J().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels==1?d=new ub(h):d=new lb(h),n.runWebGLProgram(d,[a,s],"float32")}var UB={kernelName:ys,backendName:"webgl",kernelFunc:VB},HB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` + `}};function UB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l,dimRoundingMode:u}=r,c=l;c==null&&(c=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(i,c),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${i} and dilations '${c}'`);let h=R.computeConv2DInfo(a.shape,s.shape,i,c,o,u,!0),d;return J().getBool("WEBGL_PACK_DEPTHWISECONV")&&h.strideWidth<=2&&h.outChannels/h.inChannels==1?d=new cb(h):d=new ub(h),n.runWebGLProgram(d,[a,s],"float32")}var HB={kernelName:ys,backendName:"webgl",kernelFunc:UB},jB=class{constructor(e){this.variableNames=["x","dy"],this.outputShape=e.filterShape;let t=e.strideHeight,n=e.strideWidth,r=e.padInfo.top,a=e.padInfo.left,s=e.outChannels/e.inChannels;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int wR = coords.x; @@ -2691,7 +2691,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},jB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` + `}},GB=class{constructor(e){this.variableNames=["dy","W"],this.outputShape=e.inShape;let t=e.filterHeight,n=e.filterWidth,r=e.strideHeight,a=e.strideWidth,s=t-1-e.padInfo.top,i=n-1-e.padInfo.left,o=e.outChannels/e.inChannels;this.userCode=` const ivec2 pads = ivec2(${s}, ${i}); void main() { @@ -2736,13 +2736,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function GB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,filterShape:c}=r,h=R.computeConv2DInfo(a.shape,c,i,o,l,u,!0),d=new HB(h);return n.runWebGLProgram(d,[a,s],"float32")}var qB={kernelName:Mh,backendName:"webgl",kernelFunc:GB};function XB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,inputShape:c}=r,h=R.computeConv2DInfo(c,s.shape,i,o,l,u,!0),d=new jB(h);return n.runWebGLProgram(d,[a,s],"float32")}var KB={kernelName:$h,backendName:"webgl",kernelFunc:XB},ZB=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` + `}};function qB(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,dy:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,filterShape:c}=r,h=R.computeConv2DInfo(a.shape,c,i,o,l,u,!0),d=new jB(h);return n.runWebGLProgram(d,[a,s],"float32")}var XB={kernelName:Mh,backendName:"webgl",kernelFunc:qB};function KB(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,filter:s}=t,{strides:i,dilations:o,pad:l,dimRoundingMode:u,inputShape:c}=r,h=R.computeConv2DInfo(c,s.shape,i,o,l,u,!0),d=new GB(h);return n.runWebGLProgram(d,[a,s],"float32")}var ZB={kernelName:$h,backendName:"webgl",kernelFunc:KB},YB=class{constructor(e){this.variableNames=["X"],this.outputShape=[e,e],this.userCode=` void main() { ivec2 coords = getOutputCoords(); float val = coords[0] == coords[1] ? getX(coords[0]) : 0.0; setOutput(val); } - `}};function YB(e){let{inputs:t,backend:n}=e,{x:r}=t,a=[...r.shape,...r.shape],s=v.sizeFromShape(r.shape),i=Ae({inputs:{x:r},backend:n,attrs:{shape:[s]}}),o=new ZB(s),l=n.runWebGLProgram(o,[i],i.dtype),u=Ae({inputs:{x:l},backend:n,attrs:{shape:a}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),u}var JB={kernelName:Dh,backendName:"webgl",kernelFunc:YB},QB=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:r,strideHeight:a,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:u}=e,{top:c,left:h}=r;this.userCode=` + `}};function JB(e){let{inputs:t,backend:n}=e,{x:r}=t,a=[...r.shape,...r.shape],s=v.sizeFromShape(r.shape),i=Ae({inputs:{x:r},backend:n,attrs:{shape:[s]}}),o=new YB(s),l=n.runWebGLProgram(o,[i],i.dtype),u=Ae({inputs:{x:l},backend:n,attrs:{shape:a}});return n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(l),u}var QB={kernelName:Dh,backendName:"webgl",kernelFunc:JB},eV=class{constructor(e){this.variableNames=["x","W"],this.outputShape=e.outShape;let{inHeight:t,inWidth:n,padInfo:r,strideHeight:a,strideWidth:s,filterHeight:i,filterWidth:o,dilationHeight:l,dilationWidth:u}=e,{top:c,left:h}=r;this.userCode=` const ivec2 strides = ivec2(${a}, ${s}); const ivec2 pads = ivec2(${c}, ${h}); const float neg_infinity = -3.4e38; @@ -2780,7 +2780,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float result = curVal; setOutput(result); } - `}};function eV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeDilation2DInfo(a.shape,s.shape,i,o,"NHWC",l),c,h=new QB(u);c=n.runWebGLProgram(h,[a,s],"float32");let d=Ae({inputs:{x:c},backend:n,attrs:{shape:u.outShape}});return n.disposeIntermediateTensorInfo(c),d}var tV={kernelName:pu,backendName:"webgl",kernelFunc:eV},nV="return (x >= 0.0) ? x : (exp(x) - 1.0);",rV=` + `}};function tV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s}=t,{strides:i,pad:o,dilations:l}=r,u=R.computeDilation2DInfo(a.shape,s.shape,i,o,"NHWC",l),c,h=new eV(u);c=n.runWebGLProgram(h,[a,s],"float32");let d=Ae({inputs:{x:c},backend:n,attrs:{shape:u.outShape}});return n.disposeIntermediateTensorInfo(c),d}var nV={kernelName:pu,backendName:"webgl",kernelFunc:tV},rV="return (x >= 0.0) ? x : (exp(x) - 1.0);",aV=` vec4 result; result.r = (x.r >= 0.0) ? x.r : (exp(x.r) - 1.0); @@ -2789,12 +2789,12 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam result.a = (x.a >= 0.0) ? x.a : (exp(x.a) - 1.0); return result; -`,aV=Xe({opSnippet:nV,packedOpSnippet:rV}),sV={kernelName:lo,backendName:"webgl",kernelFunc:aV},iV="return (b >= 1.0) ? a : a * (b + 1.0);",oV=` +`,sV=Xe({opSnippet:rV,packedOpSnippet:aV}),iV={kernelName:lo,backendName:"webgl",kernelFunc:sV},oV="return (b >= 1.0) ? a : a * (b + 1.0);",lV=` vec4 bGTEZero = vec4(greaterThanEqual(b, vec4(0.))); return (bGTEZero * a) + ((vec4(1.0) - bGTEZero) * (a * (b + vec4(1.0)))); -`,lV=e=>{let{inputs:t,backend:n}=e,{dy:r,y:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(oV,r.shape,a.shape):new Rl(iV,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)},uV={kernelName:Ph,backendName:"webgl",kernelFunc:lV},cV=` +`,uV=e=>{let{inputs:t,backend:n}=e,{dy:r,y:a}=t,s=J().getBool("WEBGL_PACK_BINARY_OPERATIONS")?new cc(lV,r.shape,a.shape):new Rl(oV,r.shape,a.shape);return n.runWebGLProgram(s,[r,a],r.dtype)},cV={kernelName:Ph,backendName:"webgl",kernelFunc:uV},hV=` return vec4(equal(a, b)); -`,hV="return float(a == b);",dV=nn({opSnippet:hV,packedOpSnippet:cV,dtype:"bool"}),pV={kernelName:co,backendName:"webgl",kernelFunc:dV},fV=` +`,dV="return float(a == b);",pV=nn({opSnippet:dV,packedOpSnippet:hV,dtype:"bool"}),fV={kernelName:co,backendName:"webgl",kernelFunc:pV},mV=` // Error function is calculated approximately with elementary function. // See "Handbook of Mathematical Functions with Formulas, // Graphs, and Mathematical Tables", Abramowitz and Stegun. @@ -2809,7 +2809,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam x = abs(x); float t = 1.0 / (1.0 + p * x); return sign * (1.0 - (((((a5*t + a4)*t) + a3)*t + a2)*t + a1)*t*exp(-x*x)); -`,mV=Xe({opSnippet:fV}),AV={kernelName:uo,backendName:"webgl",kernelFunc:mV},cb="return exp(x);",hb=Xe({opSnippet:cb,packedOpSnippet:cb,cpuKernelImpl:mP}),yV={kernelName:xs,backendName:"webgl",kernelFunc:hb};function aA(e){let{inputs:t,attrs:n,backend:r}=e,{dim:a}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=a;return a<0&&(v.assert(-(i+1)<=a,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+a+1),o.splice(l,0,1),Ae({inputs:{x:s},backend:r,attrs:{shape:o}})}var gV={kernelName:ho,backendName:"webgl",kernelFunc:aA},db="return exp(x) - 1.0;",xV=Xe({opSnippet:db,packedOpSnippet:db,cpuKernelImpl:AP}),wV={kernelName:po,backendName:"webgl",kernelFunc:xV},pb=class{constructor(e,t,n){this.variableNames=["real","imag"];let r=t[1];this.outputShape=t;let a=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${r}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` +`,AV=Xe({opSnippet:mV}),yV={kernelName:uo,backendName:"webgl",kernelFunc:AV},hb="return exp(x);",db=Xe({opSnippet:hb,packedOpSnippet:hb,cpuKernelImpl:AP}),gV={kernelName:xs,backendName:"webgl",kernelFunc:db};function aA(e){let{inputs:t,attrs:n,backend:r}=e,{dim:a}=n,{input:s}=t,i=s.shape.length,o=s.shape.slice(),l=a;return a<0&&(v.assert(-(i+1)<=a,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+a+1),o.splice(l,0,1),Ae({inputs:{x:s},backend:r,attrs:{shape:o}})}var xV={kernelName:ho,backendName:"webgl",kernelFunc:aA},pb="return exp(x) - 1.0;",wV=Xe({opSnippet:pb,packedOpSnippet:pb,cpuKernelImpl:yP}),_V={kernelName:po,backendName:"webgl",kernelFunc:wV},fb=class{constructor(e,t,n){this.variableNames=["real","imag"];let r=t[1];this.outputShape=t;let a=n?`2.0 * ${Math.PI}`:`-2.0 * ${Math.PI}`,s=n?`${r}.0`:"1.0",i;if(e==="real")i="return real * expR - imag * expI;";else if(e==="imag")i="return real * expI + imag * expR;";else throw new Error(`FFT component must be either "real" or "imag", got ${e}.`);this.userCode=` const float exponentMultiplier = ${a}; float unaryOpComplex(float real, float expR, float imag, float expI) { @@ -2842,13 +2842,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ivec2 coords = getOutputCoords(); setOutput(mulMatDFT(coords[0], coords[1])); } - `}};function fb(e,t,n){let r=n.texData.get(e.dataId),a=v.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=a/s,o=Ae({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}),l=o.shape,u=new pb("real",l,t),c=new pb("imag",l,t),h=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:l},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:l}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p);let m=Ae({inputs:{x:f},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(f),m}function _V(e){let{inputs:t,backend:n}=e,{input:r}=t;return fb(r,!1,n)}var bV={kernelName:Lh,backendName:"webgl",kernelFunc:_V},vV=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` + `}};function mb(e,t,n){let r=n.texData.get(e.dataId),a=v.sizeFromShape(e.shape),s=e.shape[e.shape.length-1],i=a/s,o=Ae({inputs:{x:e},backend:n,attrs:{shape:[i,s]}}),l=o.shape,u=new fb("real",l,t),c=new fb("imag",l,t),h=[{dataId:r.complexTensorInfos.real.dataId,dtype:r.complexTensorInfos.real.dtype,shape:l},{dataId:r.complexTensorInfos.imag.dataId,dtype:r.complexTensorInfos.imag.dtype,shape:l}],d=n.runWebGLProgram(u,h,"float32"),p=n.runWebGLProgram(c,h,"float32"),f=Va({inputs:{real:d,imag:p},backend:n});n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p);let m=Ae({inputs:{x:f},backend:n,attrs:{shape:e.shape}});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(f),m}function bV(e){let{inputs:t,backend:n}=e,{input:r}=t;return mb(r,!1,n)}var vV={kernelName:Lh,backendName:"webgl",kernelFunc:bV},kV=class{constructor(e,t){this.outputShape=[],this.variableNames=["x"],this.outputShape=e,this.userCode=` uniform float value; void main() { // Input can be obtained from uniform value. setOutput(value); } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function sA(e){let{backend:t,attrs:n}=e,{shape:r,value:a}=n,{dtype:s}=n;if(s=s||v.inferDtype(a),s==="string"){let i=v.getArrayFromDType(s,v.sizeFromShape(r));return i.fill(a),t.makeTensorInfo(r,s,i)}else{let i=new vV(r,a),o=i.getCustomSetupFunc(a);return t.runWebGLProgram(i,[],s,o)}}var kV={kernelName:fu,backendName:"webgl",kernelFunc:sA},NV=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}};function sA(e){let{backend:t,attrs:n}=e,{shape:r,value:a}=n,{dtype:s}=n;if(s=s||v.inferDtype(a),s==="string"){let i=v.getArrayFromDType(s,v.sizeFromShape(r));return i.fill(a),t.makeTensorInfo(r,s,i)}else{let i=new kV(r,a),o=i.getCustomSetupFunc(a);return t.runWebGLProgram(i,[],s,o)}}var NV={kernelName:fu,backendName:"webgl",kernelFunc:sA},IV=class{constructor(e){this.variableNames=["Image"],this.outputShape=[];let t=e[2];this.outputShape=e,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int x = coords[2]; @@ -2862,7 +2862,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(outputValue); } - `}},IV={kernelName:fo,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,r=t,a=new NV(n.shape);return r.runWebGLProgram(a,[n],n.dtype)}},mb="return floor(x);",SV=Xe({opSnippet:mb,packedOpSnippet:mb,cpuKernelImpl:yP}),TV={kernelName:ws,backendName:"webgl",kernelFunc:SV},CV=` + `}},SV={kernelName:fo,backendName:"webgl",kernelFunc:({inputs:e,backend:t})=>{let{image:n}=e,r=t,a=new IV(n.shape);return r.runWebGLProgram(a,[n],n.dtype)}},Ab="return floor(x);",TV=Xe({opSnippet:Ab,packedOpSnippet:Ab,cpuKernelImpl:gP}),CV={kernelName:ws,backendName:"webgl",kernelFunc:TV},EV=` float s = sign(a) * sign(b); int ia = round(a); int ib = round(b); @@ -2872,7 +2872,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } else { return NAN; } -`,EV=` +`,RV=` ivec4 ia = round(a); ivec4 ib = round(b); bvec4 cond = notEqual(ib, ivec4(0)); @@ -2893,7 +2893,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam result[3] = idiv(ia[3], ib[3], s[3]); } return vec4(result); -`,RV=nn({opSnippet:CV,packedOpSnippet:EV,dtype:"int32"}),FV={kernelName:_s,backendName:"webgl",kernelFunc:RV},MV=class{constructor(e){this.variableNames=["A"];let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` +`,FV=nn({opSnippet:EV,packedOpSnippet:RV,dtype:"int32"}),MV={kernelName:_s,backendName:"webgl",kernelFunc:FV},$V=class{constructor(e){this.variableNames=["A"];let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2915,7 +2915,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam setOutput(floor(value * 255.0 + 0.5)); } - `}},$V=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` + `}},DV=class{constructor(e){this.variableNames=["A"],this.packedInputs=!1,this.packedOutput=!0;let t=fn(),[n,r]=e;this.outputShape=e,this.userCode=` void main() { ivec3 coords = getOutputCoords(); int texR = coords[0]; @@ -2949,7 +2949,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${t.output} = result; } - `}},OV={kernelName:ed,backendName:"webgl",kernelFunc:DV},Ml;function DV(e){let{inputs:t,backend:n,attrs:r}=e,{pixels:a}=t,{numChannels:s}=r,i=typeof HTMLVideoElement!="undefined"&&a instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&a instanceof HTMLImageElement,[l,u]=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],c=[u,l],h=[u,l,s];(o||i)&&(Ml==null&&(Ml=document.createElement("canvas").getContext("2d")),Ml.canvas.width=l,Ml.canvas.height=u,Ml.drawImage(a,0,0,l,u),a=Ml.canvas);let d=n.makeTensorInfo(c,"int32");n.texData.get(d.dataId).usage=Zn.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),a);let p=J().getBool("WEBGL_PACK")?new $V(h):new MV(h),f=n.runWebGLProgram(p,[d],"int32");return n.disposeData(d.dataId),f}function zV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=R.convertConv2DDataFormat(c),A=R.computeConv2DInfo(a.shape,s.shape,l,h,u,d,!1,m),y,g=[];if(A.filterHeight===1&&A.filterWidth===1&&A.dilationHeight===1&&A.dilationWidth===1&&A.strideHeight===1&&A.strideWidth===1&&(A.padInfo.type==="SAME"||A.padInfo.type==="VALID"))y=rb({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)y=ab({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else{let b=i!=null,w=o!=null,x=p==="leakyrelu",I=p?dp(p,!1):null,S=new nb(A,b,I,w,x),T=[a,s];if(i&&T.push(i),o&&T.push(o),x){let M=n.makeTensorInfo([],"float32",v.createScalarValue(f,"float32"));T.push(M),g.push(M)}y=n.runWebGLProgram(S,T,"float32")}let _=Ae({inputs:{x:y},backend:n,attrs:{shape:A.outShape}});return g.push(y),g.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var PV={kernelName:ei,backendName:"webgl",kernelFunc:zV};function LV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dimRoundingMode:h,activation:d,leakyreluAlpha:p}=r,f=[],m=c;m==null&&(m=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(l,m),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${m}'`);let A=R.computeConv2DInfo(a.shape,s.shape,l,m,u,h,!0),y=J().getBool("WEBGL_PACK_DEPTHWISECONV")&&A.strideWidth<=2&&A.outChannels/A.inChannels==1,g=d?dp(d,y):null,_=[a,s],b=i!=null,w=o!=null,x=d==="leakyrelu";if(b&&_.push(i),w&&_.push(o),x){let T=n.makeTensorInfo([],"float32",v.createScalarValue(p,"float32"));_.push(T),f.push(T)}let I;y?I=new ub(A,b,g,w,x):I=new lb(A,b,g,w,x);let S=n.runWebGLProgram(I,_,"float32");return f.forEach(T=>n.disposeIntermediateTensorInfo(T)),S}var WV={kernelName:ti,backendName:"webgl",kernelFunc:LV},BV=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let r=ut(t.length),a=ut(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` + `}},zV={kernelName:ed,backendName:"webgl",kernelFunc:OV},Ml;function OV(e){let{inputs:t,backend:n,attrs:r}=e,{pixels:a}=t,{numChannels:s}=r,i=typeof HTMLVideoElement!="undefined"&&a instanceof HTMLVideoElement,o=typeof HTMLImageElement!="undefined"&&a instanceof HTMLImageElement,[l,u]=i?[a.videoWidth,a.videoHeight]:[a.width,a.height],c=[u,l],h=[u,l,s];(o||i)&&(Ml==null&&(Ml=document.createElement("canvas").getContext("2d")),Ml.canvas.width=l,Ml.canvas.height=u,Ml.drawImage(a,0,0,l,u),a=Ml.canvas);let d=n.makeTensorInfo(c,"int32");n.texData.get(d.dataId).usage=Zn.PIXELS,n.gpgpu.uploadPixelDataToTexture(n.getTexture(d.dataId),a);let p=J().getBool("WEBGL_PACK")?new DV(h):new $V(h),f=n.runWebGLProgram(p,[d],"int32");return n.disposeData(d.dataId),f}function PV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dataFormat:c,dilations:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=r,m=R.convertConv2DDataFormat(c),A=R.computeConv2DInfo(a.shape,s.shape,l,h,u,d,!1,m),y,g=[];if(A.filterHeight===1&&A.filterWidth===1&&A.dilationHeight===1&&A.dilationWidth===1&&A.strideHeight===1&&A.strideWidth===1&&(A.padInfo.type==="SAME"||A.padInfo.type==="VALID"))y=ab({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else if(J().getBool("WEBGL_CONV_IM2COL")&&a.shape[0]===1)y=sb({x:a,filter:s,convInfo:A,backend:n,bias:i,activation:p,preluActivationWeights:o,leakyreluAlpha:f});else{let b=i!=null,w=o!=null,x=p==="leakyrelu",I=p?dp(p,!1):null,S=new rb(A,b,I,w,x),T=[a,s];if(i&&T.push(i),o&&T.push(o),x){let M=n.makeTensorInfo([],"float32",v.createScalarValue(f,"float32"));T.push(M),g.push(M)}y=n.runWebGLProgram(S,T,"float32")}let _=Ae({inputs:{x:y},backend:n,attrs:{shape:A.outShape}});return g.push(y),g.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var LV={kernelName:ei,backendName:"webgl",kernelFunc:PV};function WV(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dimRoundingMode:h,activation:d,leakyreluAlpha:p}=r,f=[],m=c;m==null&&(m=[1,1]),v.assert(R.eitherStridesOrDilationsAreOne(l,m),()=>`Error in depthwiseConv2d: Either strides or dilations must be 1. Got strides ${l} and dilations '${m}'`);let A=R.computeConv2DInfo(a.shape,s.shape,l,m,u,h,!0),y=J().getBool("WEBGL_PACK_DEPTHWISECONV")&&A.strideWidth<=2&&A.outChannels/A.inChannels==1,g=d?dp(d,y):null,_=[a,s],b=i!=null,w=o!=null,x=d==="leakyrelu";if(b&&_.push(i),w&&_.push(o),x){let T=n.makeTensorInfo([],"float32",v.createScalarValue(p,"float32"));_.push(T),f.push(T)}let I;y?I=new cb(A,b,g,w,x):I=new ub(A,b,g,w,x);let S=n.runWebGLProgram(I,_,"float32");return f.forEach(T=>n.disposeIntermediateTensorInfo(T)),S}var BV={kernelName:ti,backendName:"webgl",kernelFunc:WV},VV=class{constructor(e,t,n){this.sliceDim=e,this.strides=t,this.variableNames=["x","indices"],this.outputShape=n;let r=ut(t.length),a=ut(n.length),s=this.sliceDim>1?"strides[j]":"strides";this.userCode=` ${r} strides = ${r}(${this.strides}); void main() { ${a} coords = getOutputCoords(); @@ -2960,21 +2960,21 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(getX(flattenIndex, coords[1])); } - `}};function VV(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=a.shape,i=s[s.length-1],[o,l,u,c]=R.prepareAndValidate(r,a),h=Ae({inputs:{x:a},backend:n,attrs:{shape:[l,i]}}),d=Ae({inputs:{x:r},backend:n,attrs:{shape:[v.sizeFromShape(r.shape)/u,u]}}),p=new BV(i,c,[l,u]),f=n.runWebGLProgram(p,[d,h],d.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),m}var UV={kernelName:Ao,backendName:"webgl",kernelFunc:VV},jV=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=ut(this.rank),r=HV(e,2);this.userCode=` + `}};function UV(e){let{inputs:t,backend:n}=e,{params:r,indices:a}=t,s=a.shape,i=s[s.length-1],[o,l,u,c]=R.prepareAndValidate(r,a),h=Ae({inputs:{x:a},backend:n,attrs:{shape:[l,i]}}),d=Ae({inputs:{x:r},backend:n,attrs:{shape:[v.sizeFromShape(r.shape)/u,u]}}),p=new VV(i,c,[l,u]),f=n.runWebGLProgram(p,[d,h],d.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(f),m}var HV={kernelName:Ao,backendName:"webgl",kernelFunc:UV},GV=class{constructor(e,t){this.variableNames=["A","indices"],this.outputShape=t,this.rank=t.length;let n=ut(this.rank),r=jV(e,2);this.userCode=` void main() { ${n} resRC = getOutputCoords(); setOutput(getA(${r})); } - `}};function HV(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=[];for(let a=0;an.disposeIntermediateTensorInfo(w)),n.makeTensorInfo(u.outputShape,b.dtype,b.values)}let m=new jV(d.shape,f),A=n.runWebGLProgram(m,[d,p],d.dtype);h.push(A);let y=Ae({inputs:{x:A},backend:n,attrs:{shape:u.outputShape}});return h.forEach(g=>n.disposeIntermediateTensorInfo(g)),y}var qV={kernelName:mo,backendName:"webgl",kernelFunc:GV},XV="return float(a > b);",KV=` + `}};function jV(e,t){let n=["resRC.x","resRC.y","resRC.z","resRC.w"],r=[];for(let a=0;an.disposeIntermediateTensorInfo(w)),n.makeTensorInfo(u.outputShape,b.dtype,b.values)}let m=new GV(d.shape,f),A=n.runWebGLProgram(m,[d,p],d.dtype);h.push(A);let y=Ae({inputs:{x:A},backend:n,attrs:{shape:u.outputShape}});return h.forEach(g=>n.disposeIntermediateTensorInfo(g)),y}var XV={kernelName:mo,backendName:"webgl",kernelFunc:qV},KV="return float(a > b);",ZV=` return vec4(greaterThan(a, b)); -`,ZV=nn({opSnippet:XV,packedOpSnippet:KV,cpuKernelImpl:xP,dtype:"bool"}),YV={kernelName:yo,backendName:"webgl",kernelFunc:ZV},JV="return float(a >= b);",QV=` +`,YV=nn({opSnippet:KV,packedOpSnippet:ZV,cpuKernelImpl:wP,dtype:"bool"}),JV={kernelName:yo,backendName:"webgl",kernelFunc:YV},QV="return float(a >= b);",eU=` return vec4(greaterThanEqual(a, b)); -`,eU=nn({opSnippet:JV,packedOpSnippet:QV,dtype:"bool"}),tU={kernelName:vs,backendName:"webgl",kernelFunc:eU};function nU(e){let{inputs:t,backend:n}=e,{input:r}=t;return fb(r,!0,n)}var rU={kernelName:Wh,backendName:"webgl",kernelFunc:nU},aU="return float(!isnan(x) && !isinf(x));",sU=Xe({opSnippet:aU,dtype:"bool"}),iU={kernelName:go,backendName:"webgl",kernelFunc:sU},oU="return float(isinf(x));",lU=Xe({opSnippet:oU,dtype:"bool"}),uU={kernelName:xo,backendName:"webgl",kernelFunc:lU},cU="return float(isnan(x));",hU=Xe({opSnippet:cU,dtype:"bool"}),dU={kernelName:wo,backendName:"webgl",kernelFunc:hU},pU="return float(a < b);",fU=` +`,tU=nn({opSnippet:QV,packedOpSnippet:eU,dtype:"bool"}),nU={kernelName:vs,backendName:"webgl",kernelFunc:tU};function rU(e){let{inputs:t,backend:n}=e,{input:r}=t;return mb(r,!0,n)}var aU={kernelName:Wh,backendName:"webgl",kernelFunc:rU},sU="return float(!isnan(x) && !isinf(x));",iU=Xe({opSnippet:sU,dtype:"bool"}),oU={kernelName:go,backendName:"webgl",kernelFunc:iU},lU="return float(isinf(x));",uU=Xe({opSnippet:lU,dtype:"bool"}),cU={kernelName:xo,backendName:"webgl",kernelFunc:uU},hU="return float(isnan(x));",dU=Xe({opSnippet:hU,dtype:"bool"}),pU={kernelName:wo,backendName:"webgl",kernelFunc:dU},fU="return float(a < b);",mU=` return vec4(lessThan(a, b)); -`,mU=nn({opSnippet:pU,packedOpSnippet:fU,cpuKernelImpl:wP,dtype:"bool"}),AU={kernelName:_o,backendName:"webgl",kernelFunc:mU},yU="return float(a <= b);",gU=` +`,AU=nn({opSnippet:fU,packedOpSnippet:mU,cpuKernelImpl:_P,dtype:"bool"}),yU={kernelName:_o,backendName:"webgl",kernelFunc:AU},gU="return float(a <= b);",xU=` return vec4(lessThanEqual(a, b)); -`,xU=nn({opSnippet:yU,packedOpSnippet:gU,dtype:"bool"}),wU={kernelName:bo,backendName:"webgl",kernelFunc:xU};function _U(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=_P(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var bU={kernelName:Vh,backendName:"webgl",kernelFunc:_U},vU=`if (x < 0.0) return NAN; - return log(x);`,kU=` +`,wU=nn({opSnippet:gU,packedOpSnippet:xU,dtype:"bool"}),_U={kernelName:bo,backendName:"webgl",kernelFunc:wU};function bU(e){let{backend:t,attrs:n}=e,{start:r,stop:a,num:s}=n,i=bP(r,a,s);return t.makeTensorInfo([i.length],"float32",i)}var vU={kernelName:Vh,backendName:"webgl",kernelFunc:bU},kU=`if (x < 0.0) return NAN; + return log(x);`,NU=` vec4 result = log(x); vec4 isNaN = vec4(lessThan(x, vec4(0.0))); result.r = isNaN.r == 1.0 ? NAN : result.r; @@ -2983,16 +2983,16 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam result.a = isNaN.a == 1.0 ? NAN : result.a; return result; -`,NU=Xe({opSnippet:vU,packedOpSnippet:kU,cpuKernelImpl:bP}),IU={kernelName:Is,backendName:"webgl",kernelFunc:NU},SU="return log(1.0 + x);",TU=Xe({opSnippet:SU}),CU={kernelName:vo,backendName:"webgl",kernelFunc:TU},EU="return float(a >= 1.0 && b >= 1.0);",RU=` +`,IU=Xe({opSnippet:kU,packedOpSnippet:NU,cpuKernelImpl:vP}),SU={kernelName:Is,backendName:"webgl",kernelFunc:IU},TU="return log(1.0 + x);",CU=Xe({opSnippet:TU}),EU={kernelName:vo,backendName:"webgl",kernelFunc:CU},RU="return float(a >= 1.0 && b >= 1.0);",FU=` return vec4( vec4(greaterThanEqual(a, vec4(1.0))) * vec4(greaterThanEqual(b, vec4(1.0)))); -`,FU=nn({opSnippet:EU,packedOpSnippet:RU,dtype:"bool"}),MU={kernelName:ko,backendName:"webgl",kernelFunc:FU},$U="return float(!(x >= 1.0));",DU=Xe({opSnippet:$U}),OU={kernelName:mu,backendName:"webgl",kernelFunc:DU},zU="return float(a >= 1.0 || b >= 1.0);",PU=` +`,MU=nn({opSnippet:RU,packedOpSnippet:FU,dtype:"bool"}),$U={kernelName:ko,backendName:"webgl",kernelFunc:MU},DU="return float(!(x >= 1.0));",OU=Xe({opSnippet:DU}),zU={kernelName:mu,backendName:"webgl",kernelFunc:OU},PU="return float(a >= 1.0 || b >= 1.0);",LU=` return min( vec4(greaterThanEqual(a, vec4(1.0))) + vec4(greaterThanEqual(b, vec4(1.0))), vec4(1.0)); -`,LU=nn({opSnippet:zU,packedOpSnippet:PU,dtype:"bool"}),WU={kernelName:Au,backendName:"webgl",kernelFunc:LU},BU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` +`,WU=nn({opSnippet:PU,packedOpSnippet:LU,dtype:"bool"}),BU={kernelName:Au,backendName:"webgl",kernelFunc:WU},VU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[];let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3011,7 +3011,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam float val = x * ${o}; setOutput(val); } - `}},VU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` + `}},UU=class{constructor(e,t,n,r,a){this.variableNames=["x"],this.outputShape=[],this.packedInputs=!0,this.packedOutput=!0;let s=t,i=e[3]-1;this.outputShape=e;let o,l=`float(${n}) + float(${r}) * sum`;a===.5?o=`inversesqrt(${l})`:a===1?o=`1.0/(${l})`:o=`exp(log(${l}) * float(-${a}));`,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords.x; @@ -3073,7 +3073,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam vec4 result = xAtOutputCoords * ${o}; setOutput(result); } - `}},UU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r,u=J().getBool("WEBGL_PACK_NORMALIZATION")?new VU(a.shape,s,i,o,l):new BU(a.shape,s,i,o,l);return n.runWebGLProgram(u,[a],a.dtype)},HU={kernelName:yu,backendName:"webgl",kernelFunc:UU},jU=class{constructor(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode=` + `}},HU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{depthRadius:s,bias:i,alpha:o,beta:l}=r,u=J().getBool("WEBGL_PACK_NORMALIZATION")?new UU(a.shape,s,i,o,l):new VU(a.shape,s,i,o,l);return n.runWebGLProgram(u,[a],a.dtype)},jU={kernelName:yu,backendName:"webgl",kernelFunc:HU},GU=class{constructor(e,t,n,r,a){this.variableNames=["inputImage","outputImage","dy"],this.outputShape=[],this.outputShape=e,this.depth=e[3],this.depthRadius=t,this.bias=n,this.alpha=r,this.beta=a,this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3128,14 +3128,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(result); } - `}},GU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:u,beta:c}=r,h=new jU(a.shape,o,l,u,c);return n.runWebGLProgram(h,[a,s,i],a.dtype)},qU={kernelName:Uh,backendName:"webgl",kernelFunc:GU};function XU(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,e.dtype,"max",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}function Ab(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=n.shouldExecuteOnCPU([a]),p=a;if(h){if(d){let g=n.texData.get(p.dataId).values,_=new Array(o);for(let x=0;x<_.length;x++)_[x]=a.shape[c[x]];let b=Jm(g,a.shape,a.dtype,c,_);p=n.makeTensorInfo(_,a.dtype);let w=n.texData.get(p.dataId);w.values=b}else p=pp(a,c,n);u=R.getInnerMostAxes(u.length,o)}R.assertAxesAreInnerMostDims("max",u,o);let[f,m]=R.computeOutAndReduceShapes(p.shape,u),A=f;i&&(A=R.expandShapeToKeepDim(f,l));let y;if(d){let g=n.texData.get(p.dataId).values,_=vP(g,v.sizeFromShape(m),A,a.dtype);y=n.makeTensorInfo(A,a.dtype);let b=n.texData.get(y.dataId);b.values=_}else y=XU(p,m,A,n);return h&&n.disposeIntermediateTensorInfo(p),y}var KU={kernelName:Ss,backendName:"webgl",kernelFunc:Ab},ZU=M_+` + `}},qU=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a,y:s,dy:i}=t,{depthRadius:o,bias:l,alpha:u,beta:c}=r,h=new GU(a.shape,o,l,u,c);return n.runWebGLProgram(h,[a,s,i],a.dtype)},XU={kernelName:Uh,backendName:"webgl",kernelFunc:qU};function KU(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,e.dtype,"max",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}function yb(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{reductionIndices:s,keepDims:i}=r,o=a.shape.length,l=v.parseAxisParam(s,a.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=n.shouldExecuteOnCPU([a]),p=a;if(h){if(d){let g=n.texData.get(p.dataId).values,_=new Array(o);for(let x=0;x<_.length;x++)_[x]=a.shape[c[x]];let b=Jm(g,a.shape,a.dtype,c,_);p=n.makeTensorInfo(_,a.dtype);let w=n.texData.get(p.dataId);w.values=b}else p=pp(a,c,n);u=R.getInnerMostAxes(u.length,o)}R.assertAxesAreInnerMostDims("max",u,o);let[f,m]=R.computeOutAndReduceShapes(p.shape,u),A=f;i&&(A=R.expandShapeToKeepDim(f,l));let y;if(d){let g=n.texData.get(p.dataId).values,_=kP(g,v.sizeFromShape(m),A,a.dtype);y=n.makeTensorInfo(A,a.dtype);let b=n.texData.get(y.dataId);b.values=_}else y=KU(p,m,A,n);return h&&n.disposeIntermediateTensorInfo(p),y}var ZU={kernelName:Ss,backendName:"webgl",kernelFunc:yb},YU=$_+` return max(a, b); -`,YU=` +`,JU=` vec4 result = vec4(max(a, b)); vec4 isNaN = min(vec4(isnan(a)) + vec4(isnan(b)), vec4(1.0)); `+hp+` return result; -`,JU=nn({opSnippet:ZU,packedOpSnippet:YU,cpuKernelImpl:kP}),QU={kernelName:Ts,backendName:"webgl",kernelFunc:JU};function eH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"maxPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"max",!1);return n.runWebGLProgram(h,[a],a.dtype)}var tH={kernelName:Cs,backendName:"webgl",kernelFunc:eH};function nH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,u,l),d=new tA(h,"max",!1);return n.runWebGLProgram(d,[a],a.dtype)}var rH={kernelName:gu,backendName:"webgl",kernelFunc:nH},aH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=a-1-e.padInfo.top,o=s-1-e.padInfo.left,l=a*s-1;this.userCode=` +`,QU=nn({opSnippet:YU,packedOpSnippet:JU,cpuKernelImpl:NP}),eH={kernelName:Ts,backendName:"webgl",kernelFunc:QU};function tH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t;vl(a,"maxPool");let{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=r,u=1;v.assert(R.eitherStridesOrDilationsAreOne(i,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${i} and dilations '${u}'`);let c=R.computePool2DInfo(a.shape,s,i,u,o,l);if(c.filterWidth===1&&c.filterHeight===1&&v.arraysEqual(c.inShape,c.outShape))return zn({inputs:{x:a},backend:n});let h=new hc(c,"max",!1);return n.runWebGLProgram(h,[a],a.dtype)}var nH={kernelName:Cs,backendName:"webgl",kernelFunc:tH};function rH(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{filterSize:s,strides:i,pad:o,dataFormat:l,dimRoundingMode:u}=r,c=[1,1,1],h=R.computePool3DInfo(a.shape,s,i,c,o,u,l),d=new tA(h,"max",!1);return n.runWebGLProgram(d,[a],a.dtype)}var aH={kernelName:gu,backendName:"webgl",kernelFunc:rH},sH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideHeight,n=e.strideWidth,r=e.dilationHeight,a=e.effectiveFilterHeight,s=e.effectiveFilterWidth,i=a-1-e.padInfo.top,o=s-1-e.padInfo.left,l=a*s-1;this.userCode=` const ivec2 pads = ivec2(${i}, ${o}); void main() { @@ -3181,7 +3181,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}},sH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=o-1-e.padInfo.front,h=l-1-e.padInfo.top,d=u-1-e.padInfo.left,p=o*l*u-1;this.userCode=` + `}},iH=class{constructor(e){this.variableNames=["dy","maxPos"],this.outputShape=e.inShape;let t=e.strideDepth,n=e.strideHeight,r=e.strideWidth,a=e.dilationDepth,s=e.dilationHeight,i=e.dilationWidth,o=e.effectiveFilterDepth,l=e.effectiveFilterHeight,u=e.effectiveFilterWidth,c=o-1-e.padInfo.front,h=l-1-e.padInfo.top,d=u-1-e.padInfo.left,p=o*l*u-1;this.userCode=` const ivec3 pads = ivec3(${c}, ${h}, ${d}); void main() { @@ -3245,14 +3245,14 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam } setOutput(dotProd); } - `}};function iH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s}=t,i=s,{filterSize:o,strides:l,pad:u,dimRoundingMode:c}=r,h=[1,1,1],d=R.computePool3DInfo(i.shape,o,l,h,u,c),p=new tA(d,"max",!0),f=n.runWebGLProgram(p,[i],i.dtype),m=new sH(d),A=n.runWebGLProgram(m,[a,f],i.dtype);return n.disposeIntermediateTensorInfo(f),A}var oH={kernelName:jh,backendName:"webgl",kernelFunc:iH};function lH(e){let{inputs:t,backend:n,attrs:r}=e,{dy:a,input:s,output:i}=t,o=s;vl([s,i],"maxPoolGrad");let{filterSize:l,strides:u,pad:c,dimRoundingMode:h}=r,d=R.computePool2DInfo(o.shape,l,u,1,c,h),p=!0,f=new hc(d,"max",p),m=n.runWebGLProgram(f,[o],o.dtype),A=new aH(d),y=n.runWebGLProgram(A,[a,m],o.dtype);return n.disposeIntermediateTensorInfo(m),y}var uH={kernelName:Hh,backendName:"webgl",kernelFunc:lH};function cH(e,t,n,r){let a=new hc(n,"max",!1),s=r.runWebGLProgram(a,[e],"float32");a=new hc(n,"max",!0,!0,t);let i=r.runWebGLProgram(a,[e],"float32");return[s,i]}var hH={kernelName:Gh,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;v.assert(r.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${r.shape.length}.`);let u=[1,1];v.assert(R.eitherStridesOrDilationsAreOne(s,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);let c=R.computePool2DInfo(r.shape,a,s,u,i),[h,d]=cH(r,o,c,l);return[h,d]}};function dH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,"float32","mean",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}var pH={kernelName:Es,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{keepDims:a,axis:s}=t,i=n,o=r.shape.length,l=v.parseAxisParam(s,r.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=i.shouldExecuteOnCPU([r]),p=[],f=r;if(h){if(d){let _=i.texData.get(f.dataId).values,b=new Array(o);for(let I=0;I{let{x:r}=e,{filterSize:a,strides:s,pad:i,includeBatchInIndex:o}=t,l=n;v.assert(r.shape.length===4,()=>`Error in maxPool: input must be rank 4 but got rank ${r.shape.length}.`);let u=[1,1];v.assert(R.eitherStridesOrDilationsAreOne(s,u),()=>`Error in maxPool: Either strides or dilations must be 1. Got strides ${s} and dilations '${u}'`);let c=R.computePool2DInfo(r.shape,a,s,u,i),[h,d]=hH(r,o,c,l);return[h,d]}};function pH(e,t,n,r){let a=v.sizeFromShape(t),s=v.sizeFromShape(e.shape)/a,i=Ae({inputs:{x:e},attrs:{shape:[s,a]},backend:r}),o=bi(i,"float32","mean",r),l=Ae({inputs:{x:o},attrs:{shape:n},backend:r});return r.disposeIntermediateTensorInfo(i),r.disposeIntermediateTensorInfo(o),l}var fH={kernelName:Es,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{x:r}=e,{keepDims:a,axis:s}=t,i=n,o=r.shape.length,l=v.parseAxisParam(s,r.shape),u=l,c=R.getAxesPermutation(u,o),h=c!=null,d=i.shouldExecuteOnCPU([r]),p=[],f=r;if(h){if(d){let _=i.texData.get(f.dataId).values,b=new Array(o);for(let I=0;Iu[0]+e[c]+u[1]);let r=e.length,a=ut(r),s=t.map(u=>u[0]).join(","),i=t.map((u,c)=>u[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),l=n==="reflect"?0:1;if(r===1){this.userCode=` +`,xH=nn({opSnippet:yH,packedOpSnippet:gH,cpuKernelImpl:IP}),wH={kernelName:Fs,backendName:"webgl",kernelFunc:xH},_H=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((u,c)=>u[0]+e[c]+u[1]);let r=e.length,a=ut(r),s=t.map(u=>u[0]).join(","),i=t.map((u,c)=>u[0]+e[c]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r),l=n==="reflect"?0:1;if(r===1){this.userCode=` int start = ${s}; int end = ${i}; @@ -3281,7 +3281,7 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${a} coords = outC - start; setOutput(getX(${o})); } - `}},_H=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((p,f)=>p[0]+e[f]+p[1]);let r=e.length,a=ut(r),s=t.map(p=>p[0]).join(","),i=t.map((p,f)=>p[0]+e[f]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=n==="reflect"?0:1,d="";if(r===1){let p=` + `}},bH=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((p,f)=>p[0]+e[f]+p[1]);let r=e.length,a=ut(r),s=t.map(p=>p[0]).join(","),i=t.map((p,f)=>p[0]+e[f]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=n==="reflect"?0:1,d="";if(r===1){let p=` ${a} source = rc; if (source < start) { source = start * 2 - source - ${h}; @@ -3337,13 +3337,13 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam ${d} setOutput(result); } - `}},bH=({inputs:e,backend:t,attrs:n})=>{let{x:r}=e,{paddings:a,mode:s}=n,i=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new _H(r.shape,a,s):new wH(r.shape,a,s);return t.runWebGLProgram(i,[r],r.dtype)},vH={kernelName:xu,backendName:"webgl",kernelFunc:bH},kH=`if (b == 0.0) return NAN; - return mod(a, b);`,NH=` + `}},vH=({inputs:e,backend:t,attrs:n})=>{let{x:r}=e,{paddings:a,mode:s}=n,i=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new bH(r.shape,a,s):new _H(r.shape,a,s);return t.runWebGLProgram(i,[r],r.dtype)},kH={kernelName:xu,backendName:"webgl",kernelFunc:vH},NH=`if (b == 0.0) return NAN; + return mod(a, b);`,IH=` vec4 result = mod(a, b); vec4 isNaN = vec4(equal(b, vec4(0.0))); `+hp+` return result; -`,IH=nn({opSnippet:kH,packedOpSnippet:NH}),SH={kernelName:No,backendName:"webgl",kernelFunc:IH},TH=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` +`,SH=nn({opSnippet:NH,packedOpSnippet:IH}),TH={kernelName:No,backendName:"webgl",kernelFunc:SH},CH=class{constructor(e,t,n){this.variableNames=["probs"],this.outputShape=[e,n],this.userCode=` uniform float seed; void main() { @@ -3365,11 +3365,11 @@ return (log(1.0 + x) - log(1.0 - x)) / 2.0;`,AW=Xe({opSnippet:mW}),yW={kernelNam // If no other event happened, last event happened. setOutput(float(${t-1})); } - `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},CH=` + `}getCustomSetupFunc(e){return(t,n)=>{this.seedLoc==null&&(this.seedLoc=t.getUniformLocation(n,"seed")),t.gl.uniform1f(this.seedLoc,e)}}},EH=` if (a == b) { return 1.0; }; -return a / b;`,EH=` +return a / b;`,RH=` // vec4 one = vec4(equal(a, b)); // return one + (vec4(1.0) - one) * a / b; vec4 result = a / b; @@ -3387,14 +3387,14 @@ return a / b;`,EH=` } return result; -`,yb=nn({opSnippet:CH,packedOpSnippet:EH,checkOutOfBounds:!0}),RH={kernelName:gs,backendName:"webgl",kernelFunc:yb},gb="return a - b;",xb=nn({opSnippet:gb,packedOpSnippet:gb,supportsComplex:!0,cpuKernelImpl:MP}),FH={kernelName:Zs,backendName:"webgl",kernelFunc:xb};function wb(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=v.parseAxisParam([s],a.shape),o=Ab({inputs:{x:a},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=R.expandShapeToKeepDim(o.shape,i),u=Ae({inputs:{x:o},backend:n,attrs:{shape:l}}),c=xb({inputs:{a,b:u},backend:n}),h=hb({inputs:{x:c},backend:n}),d=eA({inputs:{x:h},backend:n,attrs:{axis:i,keepDims:!1}}),p=Ae({inputs:{x:d},backend:n,attrs:{shape:l}}),f=yb({inputs:{a:h,b:p},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}var MH={kernelName:Xs,backendName:"webgl",kernelFunc:wb};function $H(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r,l=o?a:wb({inputs:{logits:a},backend:n,attrs:{dim:a.shape.length-1}}),u=l.shape[0],c=l.shape[1],h=new TH(u,c,s),d=h.getCustomSetupFunc(i),p=n.runWebGLProgram(h,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),p}var DH={kernelName:qh,backendName:"webgl",kernelFunc:$H},_b="return -x;";function OH(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])){let s=n.texData.get(r.dataId),[i,o]=SP(s.values,r.shape,r.dtype);return n.makeTensorInfo(o,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,_b):a=new Ba(r.shape,_b),n.runWebGLProgram(a,[r],r.dtype)}var zH={kernelName:Io,backendName:"webgl",kernelFunc:OH},PH=Pr.nonMaxSuppressionV3Impl;function LH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=r,u=n.readSync(a.dataId),c=n.readSync(s.dataId),{selectedIndices:h}=PH(u,c,i,o,l);return n.makeTensorInfo([h.length],"int32",new Int32Array(h))}var WH={kernelName:To,backendName:"webgl",kernelFunc:LH},BH=Pr.nonMaxSuppressionV4Impl;function VH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),{selectedIndices:d,validOutputs:p}=BH(c,h,i,o,l,u);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([p]))]}var UH={kernelName:Co,backendName:"webgl",kernelFunc:VH},HH=Pr.nonMaxSuppressionV5Impl;function jH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),d=i,p=o,f=l,m=u,{selectedIndices:A,selectedScores:y}=HH(c,h,d,p,f,m);return[n.makeTensorInfo([A.length],"int32",new Int32Array(A)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var GH={kernelName:Eo,backendName:"webgl",kernelFunc:jH},qH=class{constructor(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` +`,gb=nn({opSnippet:EH,packedOpSnippet:RH,checkOutOfBounds:!0}),FH={kernelName:gs,backendName:"webgl",kernelFunc:gb},xb="return a - b;",wb=nn({opSnippet:xb,packedOpSnippet:xb,supportsComplex:!0,cpuKernelImpl:$P}),MH={kernelName:Zs,backendName:"webgl",kernelFunc:wb};function _b(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{dim:s}=r,i=v.parseAxisParam([s],a.shape),o=yb({inputs:{x:a},backend:n,attrs:{reductionIndices:i,keepDims:!1}}),l=R.expandShapeToKeepDim(o.shape,i),u=Ae({inputs:{x:o},backend:n,attrs:{shape:l}}),c=wb({inputs:{a,b:u},backend:n}),h=db({inputs:{x:c},backend:n}),d=eA({inputs:{x:h},backend:n,attrs:{axis:i,keepDims:!1}}),p=Ae({inputs:{x:d},backend:n,attrs:{shape:l}}),f=gb({inputs:{a:h,b:p},backend:n});return n.disposeIntermediateTensorInfo(o),n.disposeIntermediateTensorInfo(u),n.disposeIntermediateTensorInfo(c),n.disposeIntermediateTensorInfo(h),n.disposeIntermediateTensorInfo(d),n.disposeIntermediateTensorInfo(p),f}var $H={kernelName:Xs,backendName:"webgl",kernelFunc:_b};function DH(e){let{inputs:t,backend:n,attrs:r}=e,{logits:a}=t,{numSamples:s,seed:i,normalized:o}=r,l=o?a:_b({inputs:{logits:a},backend:n,attrs:{dim:a.shape.length-1}}),u=l.shape[0],c=l.shape[1],h=new CH(u,c,s),d=h.getCustomSetupFunc(i),p=n.runWebGLProgram(h,[l],"int32",d);return o||n.disposeIntermediateTensorInfo(l),p}var OH={kernelName:qh,backendName:"webgl",kernelFunc:DH},bb="return -x;";function zH(e){let{inputs:t,backend:n}=e,{x:r}=t;if(n.shouldExecuteOnCPU([r])){let s=n.texData.get(r.dataId),[i,o]=TP(s.values,r.shape,r.dtype);return n.makeTensorInfo(o,r.dtype,i)}let a;return J().getBool("WEBGL_PACK_UNARY_OPERATIONS")?a=new Cl(r.shape,bb):a=new Ba(r.shape,bb),n.runWebGLProgram(a,[r],r.dtype)}var PH={kernelName:Io,backendName:"webgl",kernelFunc:zH},LH=Pr.nonMaxSuppressionV3Impl;function WH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l}=r,u=n.readSync(a.dataId),c=n.readSync(s.dataId),{selectedIndices:h}=LH(u,c,i,o,l);return n.makeTensorInfo([h.length],"int32",new Int32Array(h))}var BH={kernelName:To,backendName:"webgl",kernelFunc:WH},VH=Pr.nonMaxSuppressionV4Impl;function UH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,padToMaxOutputSize:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),{selectedIndices:d,validOutputs:p}=VH(c,h,i,o,l,u);return[n.makeTensorInfo([d.length],"int32",new Int32Array(d)),n.makeTensorInfo([],"int32",new Int32Array([p]))]}var HH={kernelName:Co,backendName:"webgl",kernelFunc:UH},jH=Pr.nonMaxSuppressionV5Impl;function GH(e){R.warn("tf.nonMaxSuppression() in webgl locks the UI thread. Call tf.nonMaxSuppressionAsync() instead");let{inputs:t,backend:n,attrs:r}=e,{boxes:a,scores:s}=t,{maxOutputSize:i,iouThreshold:o,scoreThreshold:l,softNmsSigma:u}=r,c=n.readSync(a.dataId),h=n.readSync(s.dataId),d=i,p=o,f=l,m=u,{selectedIndices:A,selectedScores:y}=jH(c,h,d,p,f,m);return[n.makeTensorInfo([A.length],"int32",new Int32Array(A)),n.makeTensorInfo([y.length],"float32",new Float32Array(y))]}var qH={kernelName:Eo,backendName:"webgl",kernelFunc:GH},XH=class{constructor(e,t,n,r){this.variableNames=["indices"],this.outputShape=[e,t],this.userCode=` void main() { ivec2 coords = getOutputCoords(); int index = round(getIndices(coords.x)); setOutput(mix(float(${r}), float(${n}), float(index == coords.y))); } - `}},XH=e=>{let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=v.sizeFromShape(a.shape),u=new qH(l,s,i,o),c=Ae({inputs:{x:a},backend:n,attrs:{shape:[l]}}),h=n.runWebGLProgram(u,[c],a.dtype);n.disposeIntermediateTensorInfo(c);let d=[...a.shape,s],p=Ae({inputs:{x:h},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(h),p},KH={kernelName:$s,backendName:"webgl",kernelFunc:XH};function gp(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=gp({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:r.dtype==="string"?"":0},backend:n})}var ZH={kernelName:Xo,backendName:"webgl",kernelFunc:gp};function bb(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=bb({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:n})}var YH={kernelName:Ro,backendName:"webgl",kernelFunc:bb};function JH(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return aA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=aA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=tb({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var QH={kernelName:Fo,backendName:"webgl",kernelFunc:JH},ej=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,u)=>l[0]+e[u]+l[1]);let r=e.length,a=ut(r),s=t.map(l=>l[0]).join(","),i=t.map((l,u)=>l[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);if(r===1){this.userCode=` + `}},KH=e=>{let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=v.sizeFromShape(a.shape),u=new XH(l,s,i,o),c=Ae({inputs:{x:a},backend:n,attrs:{shape:[l]}}),h=n.runWebGLProgram(u,[c],a.dtype);n.disposeIntermediateTensorInfo(c);let d=[...a.shape,s],p=Ae({inputs:{x:h},backend:n,attrs:{shape:d}});return n.disposeIntermediateTensorInfo(h),p},ZH={kernelName:$s,backendName:"webgl",kernelFunc:KH};function gp(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=gp({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:r.dtype==="string"?"":0},backend:n})}var YH={kernelName:Xo,backendName:"webgl",kernelFunc:gp};function vb(e){let{inputs:t,backend:n}=e,{x:r}=t;if(r.dtype==="string")throw new Error("onesLike is not supported under string dtype");if(r.dtype==="complex64"){let a=pc({inputs:{input:r},backend:n}),s=vb({inputs:{x:a},backend:n}),i=yp({inputs:{input:r},backend:n}),o=gp({inputs:{x:i},backend:n}),l=Va({inputs:{real:s,imag:o},backend:n});return n.disposeIntermediateTensorInfo(a),n.disposeIntermediateTensorInfo(s),n.disposeIntermediateTensorInfo(i),n.disposeIntermediateTensorInfo(o),l}else return sA({attrs:{shape:r.shape,dtype:r.dtype,value:1},backend:n})}var JH={kernelName:Ro,backendName:"webgl",kernelFunc:vb};function QH(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return aA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=aA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=nb({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeIntermediateTensorInfo(c)),u}var ej={kernelName:Fo,backendName:"webgl",kernelFunc:QH},tj=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=t.map((l,u)=>l[0]+e[u]+l[1]);let r=e.length,a=ut(r),s=t.map(l=>l[0]).join(","),i=t.map((l,u)=>l[0]+e[u]).join(","),o=["coords[0]","coords[1]","coords[2]","coords[3]"].slice(0,r);if(r===1){this.userCode=` int start = ${s}; int end = ${i}; uniform float value; @@ -3421,7 +3421,7 @@ return a / b;`,EH=` setOutput(getX(${o})); } } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},tj=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((f,m)=>f[0]+e[m]+f[1]);let r=e.length,a=ut(r),s=t.map(f=>f[0]).join(","),i=t.map((f,m)=>f[0]+e[m]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=[`${a} rc = outputLoc;`,`${o[r-1]} += 1; + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},nj=class{constructor(e,t,n){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=t.map((f,m)=>f[0]+e[m]+f[1]);let r=e.length,a=ut(r),s=t.map(f=>f[0]).join(","),i=t.map((f,m)=>f[0]+e[m]).join(","),o=mn("rc",r),l=mn("source",r),u=`${o[r-1]} < ${this.outputShape[r-1]}`,c=r===1?"source":`vec2(${l.slice(-2).join()})`,h=[`${a} rc = outputLoc;`,`${o[r-1]} += 1; if(${u}) { `,r===1?"":`} rc = outputLoc; @@ -3446,7 +3446,7 @@ return a / b;`,EH=` ${p} setOutput(result); } - `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},vb=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r,o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new tj(a.shape,s,i):new ej(a.shape,s,i),l=o.getCustomSetupFunc(i);return n.runWebGLProgram(o,[a],a.dtype,l)},nj={kernelName:Ds,backendName:"webgl",kernelFunc:vb},rj=` + `}getCustomSetupFunc(e){return(t,n)=>{this.valueLoc==null&&(this.valueLoc=t.getUniformLocationNoThrow(n,"value")),t.gl.uniform1f(this.valueLoc,e)}}},kb=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{paddings:s,constantValue:i}=r,o=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new nj(a.shape,s,i):new tj(a.shape,s,i),l=o.getCustomSetupFunc(i);return n.runWebGLProgram(o,[a],a.dtype,l)},rj={kernelName:Ds,backendName:"webgl",kernelFunc:kb},aj=` if(a < 0.0 && floor(b) < b){ return NAN; } @@ -3455,7 +3455,7 @@ return a / b;`,EH=` } return (round(mod(b, 2.0)) != 1) ? pow(abs(a), b) : sign(a) * pow(abs(a), b); -`,aj=` +`,sj=` // isModRound1 has 1 for components with round(mod(b, 2.0)) == 1, 0 otherwise. vec4 isModRound1 = vec4(equal(round(mod(b, 2.0)), ivec4(1))); vec4 multiplier = sign(a) * isModRound1 + (vec4(1.0) - isModRound1); @@ -3471,9 +3471,9 @@ return a / b;`,EH=` vec4 isNaN = vec4(lessThan(a, vec4(0.0))) * vec4(lessThan(floor(b), b)); `+hp+` return result; -`,sj=nn({opSnippet:rj,packedOpSnippet:aj}),ij={kernelName:Os,backendName:"webgl",kernelFunc:sj};function oj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=[],u=v.parseAxisParam(s,a.shape),c=u,h=R.getAxesPermutation(c,o),d=a;h!=null&&(d=In({inputs:{x:a},backend:n,attrs:{perm:h}}),c=R.getInnerMostAxes(c.length,o),l.push(d)),R.assertAxesAreInnerMostDims("prod",c,o);let p;if(n.shouldExecuteOnCPU([d])){let f=n.texData.get(d.dataId).values,{outVals:m,outShape:A,outDtype:y}=TP(d.shape,d.dtype,f,c);p=n.makeTensorInfo(A,y,m)}else{let[f,m]=R.computeOutAndReduceShapes(d.shape,c),A=v.sizeFromShape(m),y=Ae({inputs:{x:d},backend:n,attrs:{shape:[-1,A]}}),g=sd(a.dtype),_=bi(y,g,"prod",n);p=Ae({inputs:{x:_},backend:n,attrs:{shape:f}}),l.push(y),l.push(_)}if(i){l.push(p);let f=R.expandShapeToKeepDim(p.shape,u);p=Ae({inputs:{x:p},backend:n,attrs:{shape:f}})}return l.forEach(f=>n.disposeIntermediateTensorInfo(f)),p}var lj={kernelName:Mo,backendName:"webgl",kernelFunc:oj},kb=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=CP(r,a,s,i);return t.makeTensorInfo([o.length],i,o)},uj={kernelName:wu,backendName:"webgl",kernelFunc:kb},cj="return 1.0 / x;",hj=Xe({opSnippet:cj}),dj={kernelName:$o,backendName:"webgl",kernelFunc:hj},pj=xr+` +`,ij=nn({opSnippet:aj,packedOpSnippet:sj}),oj={kernelName:Os,backendName:"webgl",kernelFunc:ij};function lj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{axis:s,keepDims:i}=r,o=a.shape.length,l=[],u=v.parseAxisParam(s,a.shape),c=u,h=R.getAxesPermutation(c,o),d=a;h!=null&&(d=In({inputs:{x:a},backend:n,attrs:{perm:h}}),c=R.getInnerMostAxes(c.length,o),l.push(d)),R.assertAxesAreInnerMostDims("prod",c,o);let p;if(n.shouldExecuteOnCPU([d])){let f=n.texData.get(d.dataId).values,{outVals:m,outShape:A,outDtype:y}=CP(d.shape,d.dtype,f,c);p=n.makeTensorInfo(A,y,m)}else{let[f,m]=R.computeOutAndReduceShapes(d.shape,c),A=v.sizeFromShape(m),y=Ae({inputs:{x:d},backend:n,attrs:{shape:[-1,A]}}),g=sd(a.dtype),_=bi(y,g,"prod",n);p=Ae({inputs:{x:_},backend:n,attrs:{shape:f}}),l.push(y),l.push(_)}if(i){l.push(p);let f=R.expandShapeToKeepDim(p.shape,u);p=Ae({inputs:{x:p},backend:n,attrs:{shape:f}})}return l.forEach(f=>n.disposeIntermediateTensorInfo(f)),p}var uj={kernelName:Mo,backendName:"webgl",kernelFunc:lj},Nb=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=EP(r,a,s,i);return t.makeTensorInfo([o.length],i,o)},cj={kernelName:wu,backendName:"webgl",kernelFunc:Nb},hj="return 1.0 / x;",dj=Xe({opSnippet:hj}),pj={kernelName:$o,backendName:"webgl",kernelFunc:dj},fj=xr+` return (x < 0.0) ? 0.0 : x; -`,fj=` +`,mj=` vec4 result = x * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3483,9 +3483,9 @@ return a / b;`,EH=` result.a = isNaN.a ? x.a : result.a; return result; -`,mj=Xe({opSnippet:pj,packedOpSnippet:fj}),Aj={kernelName:Ps,backendName:"webgl",kernelFunc:mj},yj=xr+` +`,Aj=Xe({opSnippet:fj,packedOpSnippet:mj}),yj={kernelName:Ps,backendName:"webgl",kernelFunc:Aj},gj=xr+` return (x < 0.0) ? 0.0 : min(6.0, x); -`,gj=` +`,xj=` vec4 result = min(x, vec4(6.)) * vec4(greaterThanEqual(x, vec4(0.0))); bvec4 isNaN = isnan(x); @@ -3495,7 +3495,7 @@ return a / b;`,EH=` result.a = isNaN.a ? x.a : result.a; return result; -`,xj=Xe({opSnippet:yj,packedOpSnippet:gj}),wj={kernelName:Ws,backendName:"webgl",kernelFunc:xj},_j=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":h="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` +`,wj=Xe({opSnippet:gj,packedOpSnippet:xj}),_j={kernelName:Ws,backendName:"webgl",kernelFunc:wj},bj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC - vec2(0.5)":h="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( ${u[0]/c[0]}, ${u[1]/c[1]}); @@ -3528,7 +3528,7 @@ return a / b;`,EH=` setOutput(newValue); } - `}},bj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":h="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}},vj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.packedInputs=!0,this.packedOutput=!0,this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h;a?h="(vec3(yRC) + vec3(0.5)) * effectiveInputOverOutputRatioRC - vec3(0.5)":h="vec3(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec3 effectiveInputOverOutputRatioRC = vec3( ${u[0]/c[0]}, ${u[1]/c[1]}, @@ -3605,7 +3605,7 @@ return a / b;`,EH=` setOutput(newValue); } - `}};function vj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=J().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new bj(a.shape,l,u,s,i):new _j(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],"float32")}var kj={kernelName:Ls,backendName:"webgl",kernelFunc:vj},Nj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` + `}};function kj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=J().getBool("WEBGL_PACK_IMAGE_OPERATIONS")?new vj(a.shape,l,u,s,i):new bj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],"float32")}var Nj={kernelName:Ls,backendName:"webgl",kernelFunc:kj},Ij=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3686,7 +3686,7 @@ return a / b;`,EH=` setOutput(accumulator); } - `}};function Ij(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Nj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Sj={kernelName:Zh,backendName:"webgl",kernelFunc:Ij},Tj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=r?"0.5":"0.0",d;a?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` + `}};function Sj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Ij(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Tj={kernelName:Zh,backendName:"webgl",kernelFunc:Sj},Cj=class{constructor(e,t,n,r,a){this.variableNames=["A"],this.outputShape=[];let[s,i,o,l]=e;this.outputShape=[s,t,n,l];let u=[r&&t>1?i-1:i,r&&n>1?o-1:o],c=[r&&t>1?t-1:t,r&&n>1?n-1:n],h=r?"0.5":"0.0",d;a?d="max((vec2(yRC) + vec2(0.5)) * effectiveInputOverOutputRatioRC, vec2(0.0))":d="vec2(yRC) * effectiveInputOverOutputRatioRC",this.userCode=` const vec2 effectiveInputOverOutputRatioRC = vec2( ${u[0]/c[0]}, ${u[1]/c[1]}); @@ -3708,7 +3708,7 @@ return a / b;`,EH=` setOutput(newValue); } - `}};function Cj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=new Tj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],a.dtype)}var Ej={kernelName:_u,backendName:"webgl",kernelFunc:Cj},Rj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` + `}};function Ej(e){let{inputs:t,backend:n,attrs:r}=e,{images:a}=t,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,c=new Cj(a.shape,l,u,s,i);return n.runWebGLProgram(c,[a],a.dtype)}var Rj={kernelName:_u,backendName:"webgl",kernelFunc:Ej},Fj=class{constructor(e,t,n){this.variableNames=["dy"],this.outputShape=[],this.outputShape=t;let[,r,a]=t,[,s,i]=e,o=[n&&s>1?r-1:r,n&&i>1?a-1:a],l=[n&&s>1?s-1:s,n&&i>1?i-1:i],u=o[0]/l[0],c=o[1]/l[1],h=1/u,d=1/c,p=Math.ceil(h)*2+2,f=Math.ceil(d)*2+2;this.userCode=` void main() { ivec4 coords = getOutputCoords(); int b = coords[0]; @@ -3778,7 +3778,7 @@ return a / b;`,EH=` setOutput(accumulator); } - `}};function Fj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Rj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var Mj={kernelName:Kh,backendName:"webgl",kernelFunc:Fj},$j=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` + `}};function Mj(e){let{inputs:t,backend:n,attrs:r}=e,{images:a,dy:s}=t,{alignCorners:i}=r,o=new Fj(s.shape,a.shape,i);return n.runWebGLProgram(o,[s],s.dtype)}var $j={kernelName:Kh,backendName:"webgl",kernelFunc:Mj},Dj=class{constructor(e,t){this.variableNames=["x"];let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);if(this.outputShape=e,n===1){this.userCode=` void main() { int coord = getOutputCoords(); setOutput(getX(${e[0]} - coord - 1)); @@ -3788,7 +3788,7 @@ return a / b;`,EH=` ${s} coords = getOutputCoords(); setOutput(getX(${a})); } - `}},Dj=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let r=mn("rc",n),a=`${r[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${r[n-2]} + 1 < ${this.outputShape[n-2]}`,i=ut(n);n===1?this.userCode=` + `}},Oj=class{constructor(e,t){this.variableNames=["x"],this.packedInputs=!0,this.packedOutput=!0;let n=e.length;if(n>4)throw new Error(`WebGL backend: Reverse of rank-${n} tensor is not yet supported`);this.outputShape=e;let r=mn("rc",n),a=`${r[n-1]} + 1 < ${this.outputShape[n-1]}`,s=`${r[n-2]} + 1 < ${this.outputShape[n-2]}`,i=ut(n);n===1?this.userCode=` void main(){ int rc = getOutputCoords(); vec4 result = vec4(0.); @@ -3816,7 +3816,7 @@ return a / b;`,EH=` } setOutput(result); } - `;function o(p){return h(p)}function l(p){return p[n-1]="("+p[n-1]+" + 1)",h(p)}function u(p){return p[n-2]="("+p[n-2]+" + 1)",h(p)}function c(p){return p[n-1]="("+p[n-1]+" + 1)",p[n-2]="("+p[n-2]+" + 1)",h(p)}function h(p){let f=e.map((y,g)=>d(g,p)),m=f.join(","),A=f.slice(-2).join(",");return`getChannel(getX(${m}), vec2(${A}))`}function d(p,f){return t.indexOf(p)!==-1&&e[p]!==1?`${e[p]} - ${f[p]} - 1`:`${f[p]}`}}};function Oj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return zn({inputs:{x:a},backend:n});let l=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Dj(a.shape,o):new $j(a.shape,o);return n.runWebGLProgram(l,[a],a.dtype)}var zj={kernelName:Bs,backendName:"webgl",kernelFunc:Oj},Pj=class{constructor(e,t){this.variableNames=["Image"],this.outputShape=[];let n=e[1],r=e[2];this.outputShape=e;let a="";typeof t=="number"?a=`float outputValue = ${t.toFixed(2)};`:a=` + `;function o(p){return h(p)}function l(p){return p[n-1]="("+p[n-1]+" + 1)",h(p)}function u(p){return p[n-2]="("+p[n-2]+" + 1)",h(p)}function c(p){return p[n-1]="("+p[n-1]+" + 1)",p[n-2]="("+p[n-2]+" + 1)",h(p)}function h(p){let f=e.map((y,g)=>d(g,p)),m=f.join(","),A=f.slice(-2).join(",");return`getChannel(getX(${m}), vec2(${A}))`}function d(p,f){return t.indexOf(p)!==-1&&e[p]!==1?`${e[p]} - ${f[p]} - 1`:`${f[p]}`}}};function zj(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=a.shape.length,o=v.parseAxisParam(s,a.shape);if(i===0)return zn({inputs:{x:a},backend:n});let l=J().getBool("WEBGL_PACK_ARRAY_OPERATIONS")?new Oj(a.shape,o):new Dj(a.shape,o);return n.runWebGLProgram(l,[a],a.dtype)}var Pj={kernelName:Bs,backendName:"webgl",kernelFunc:zj},Lj=class{constructor(e,t){this.variableNames=["Image"],this.outputShape=[];let n=e[1],r=e[2];this.outputShape=e;let a="";typeof t=="number"?a=`float outputValue = ${t.toFixed(2)};`:a=` vec3 fill = vec3(${t.join(",")}); float outputValue = fill[coords[3]];`,this.userCode=` uniform vec4 params; @@ -3836,7 +3836,7 @@ return a / b;`,EH=` } setOutput(outputValue); } - `}getCustomSetupFunc(e,t,n,r){return(a,s)=>{this.paramsLoc==null&&(this.paramsLoc=a.getUniformLocationNoThrow(s,"params")),a.gl.uniform4f(this.paramsLoc,e,t,n,r)}}},Lj={kernelName:Ko,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=new Pj(r.shape,s),[u,c]=R.getImageCenter(i,r.shape[1],r.shape[2]),h=l.getCustomSetupFunc(u,c,Math.sin(a),Math.cos(a));return o.runWebGLProgram(l,[r],r.dtype,h)}},Wj=` + `}getCustomSetupFunc(e,t,n,r){return(a,s)=>{this.paramsLoc==null&&(this.paramsLoc=a.getUniformLocationNoThrow(s,"params")),a.gl.uniform4f(this.paramsLoc,e,t,n,r)}}},Wj={kernelName:Ko,backendName:"webgl",kernelFunc:({inputs:e,attrs:t,backend:n})=>{let{image:r}=e,{radians:a,fillValue:s,center:i}=t,o=n,l=new Lj(r.shape,s),[u,c]=R.getImageCenter(i,r.shape[1],r.shape[2]),h=l.getCustomSetupFunc(u,c,Math.sin(a),Math.cos(a));return o.runWebGLProgram(l,[r],r.dtype,h)}},Bj=` // OpenGL ES does not support round function. // The algorithm is based on banker's rounding. float base = floor(x); @@ -3851,7 +3851,7 @@ return a / b;`,EH=` return base + 1.0; } } -`,Bj=Xe({opSnippet:Wj}),Vj={kernelName:Vs,backendName:"webgl",kernelFunc:Bj},Uj="return inversesqrt(x);",Hj=Xe({opSnippet:Uj,cpuKernelImpl:EP}),jj={kernelName:Us,backendName:"webgl",kernelFunc:Hj},Nb=class{constructor(e,t,n,r,a,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=ut(a.length),l=ut(s.length),u="";n===1?u="i":n===2&&(u="i, j");let c=`getIndices(${u})`,h="";r===1?h="i":r===2&&(h="i, coords[1]");let d=`getUpdates(${h})`,p=t>1?"strides[j]":"strides";this.userCode=` +`,Vj=Xe({opSnippet:Bj}),Uj={kernelName:Vs,backendName:"webgl",kernelFunc:Vj},Hj="return inversesqrt(x);",jj=Xe({opSnippet:Hj,cpuKernelImpl:RP}),Gj={kernelName:Us,backendName:"webgl",kernelFunc:jj},Ib=class{constructor(e,t,n,r,a,s,i=!0){this.variableNames=["updates","indices","defaultValue"],this.outputShape=s;let o=ut(a.length),l=ut(s.length),u="";n===1?u="i":n===2&&(u="i, j");let c=`getIndices(${u})`,h="";r===1?h="i":r===2&&(h="i, coords[1]");let d=`getUpdates(${h})`,p=t>1?"strides[j]":"strides";this.userCode=` ${o} strides = ${o}(${a}); void main() { @@ -3871,7 +3871,7 @@ return a / b;`,EH=` } setOutput(mix(getDefaultValue(), sum, float(found))); } - `}};function Gj(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a,updates:s}=t,{shape:i}=r,{sliceRank:o,numUpdates:l,sliceSize:u,strides:c,outputSize:h}=R.calculateShapes(s,a,i),d=[h/u,u];if(h===0)return n.makeTensorInfo(i,a.dtype);let p=Ae({inputs:{x:a},backend:n,attrs:{shape:[l,o]}}),f=Ae({inputs:{x:s},backend:n,attrs:{shape:[l,u]}}),m=n.makeTensorInfo([],"float32",new Float32Array([0])),A=new Nb(l,o,p.shape.length,f.shape.length,c,d),y=n.runWebGLProgram(A,[f,p,m],f.dtype),g=Ae({inputs:{x:y},backend:n,attrs:{shape:i}});return n.disposeIntermediateTensorInfo(p),n.disposeIntermediateTensorInfo(f),n.disposeIntermediateTensorInfo(y),n.disposeIntermediateTensorInfo(m),g}var qj={kernelName:Oo,backendName:"webgl",kernelFunc:Gj},Xj=class{constructor(e,t,n){this.variableNames=["c","a","b"],this.outputShape=t;let r,a;if(n>4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)a="resRC",r="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let u=0;u4)throw Error(`Where for rank ${n} is not yet supported`);if(n===1)a="resRC",r="resRC";else{let i=["resRC.x","resRC.y","resRC.z","resRC.w"],o=[],l=[];for(let u=0;u= 0.0) ? scale * x : scaleAlpha * (exp(x) - 1.0); -`,Jj=Xe({opSnippet:Yj}),Qj={kernelName:Po,backendName:"webgl",kernelFunc:Jj},eG="return 1.0 / (1.0 + exp(-1.0 * x));",tG=Xe({opSnippet:eG}),nG={kernelName:js,backendName:"webgl",kernelFunc:tG},rG=` +`,Qj=Xe({opSnippet:Jj}),eG={kernelName:Po,backendName:"webgl",kernelFunc:Qj},tG="return 1.0 / (1.0 + exp(-1.0 * x));",nG=Xe({opSnippet:tG}),rG={kernelName:js,backendName:"webgl",kernelFunc:nG},aG=` if (isnan(x)) { return 0.0; } return sign(x); -`,aG=Xe({opSnippet:rG}),sG={kernelName:Bo,backendName:"webgl",kernelFunc:aG},iG=P_+` +`,sG=Xe({opSnippet:aG}),iG={kernelName:Bo,backendName:"webgl",kernelFunc:sG},oG=L_+` return sin(x); -`,oG=Xe({opSnippet:iG}),lG={kernelName:Hs,backendName:"webgl",kernelFunc:oG},uG=` +`,lG=Xe({opSnippet:oG}),uG={kernelName:Hs,backendName:"webgl",kernelFunc:lG},cG=` float e2x = exp(x); return (e2x - 1.0 / e2x) / 2.0; -`,cG=Xe({opSnippet:uG}),hG={kernelName:Wo,backendName:"webgl",kernelFunc:cG},dG=` +`,hG=Xe({opSnippet:cG}),dG={kernelName:Wo,backendName:"webgl",kernelFunc:hG},pG=` float epsilon = 1.1920928955078125e-7; float threshold = log(epsilon) + 2.0; @@ -3915,9 +3915,9 @@ return a / b;`,EH=` result = log(exp_x + 1.0); } return result; -`,pG=Xe({opSnippet:dG}),fG={kernelName:Vo,backendName:"webgl",kernelFunc:pG},mG=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,paddings:i}=r;v.assert(a.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,g)=>y*g),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),A},AG={kernelName:bu,backendName:"webgl",kernelFunc:mG};function yG(e){let{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:s,defaultValue:i}=t,{outputShape:o}=r,{sliceRank:l,numUpdates:u,strides:c,outputSize:h}=R.calculateShapes(s,a,o),d=!1,p=new Nb(u,l,a.shape.length,s.shape.length,c,[h,1],d),f=n.runWebGLProgram(p,[s,a,i],s.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(f),m}var gG={kernelName:Yh,backendName:"webgl",kernelFunc:yG};function xG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:s,axis:i}=r,o=v.parseAxisParam(i,a.shape)[0],l=R.prepareSplitSize(a,s,o),u=a.shape.length,c=new Array(u).fill(0),h=a.shape.slice();return l.map(d=>{let p=[...h];p[o]=d;let f=dc({inputs:{x:a},backend:n,attrs:{begin:c,size:p}});return c[o]+=d,f})}var wG={kernelName:Uo,backendName:"webgl",kernelFunc:xG},_G="return sqrt(x);",bG=Xe({opSnippet:_G}),vG={kernelName:Gs,backendName:"webgl",kernelFunc:bG},kG="return x * x;",NG=Xe({opSnippet:kG}),IG={kernelName:vu,backendName:"webgl",kernelFunc:NG},Ib="return (a - b) * (a - b);",SG=nn({opSnippet:Ib,packedOpSnippet:Ib}),TG={kernelName:Ks,backendName:"webgl",kernelFunc:SG};function CG({inputs:e,attrs:t,backend:n}){let{x:r}=e,a=xr+` +`,fG=Xe({opSnippet:pG}),mG={kernelName:Vo,backendName:"webgl",kernelFunc:fG},AG=e=>{let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{blockShape:s,paddings:i}=r;v.assert(a.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let o=s.reduce((y,g)=>y*g),l=[[0,0]];l.push(...i);for(let y=1+s.length;yn.disposeIntermediateTensorInfo(y)),A},yG={kernelName:bu,backendName:"webgl",kernelFunc:AG};function gG(e){let{inputs:t,backend:n,attrs:r}=e,{sparseIndices:a,sparseValues:s,defaultValue:i}=t,{outputShape:o}=r,{sliceRank:l,numUpdates:u,strides:c,outputSize:h}=R.calculateShapes(s,a,o),d=!1,p=new Ib(u,l,a.shape.length,s.shape.length,c,[h,1],d),f=n.runWebGLProgram(p,[s,a,i],s.dtype),m=Ae({inputs:{x:f},backend:n,attrs:{shape:o}});return n.disposeIntermediateTensorInfo(f),m}var xG={kernelName:Yh,backendName:"webgl",kernelFunc:gG};function wG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{numOrSizeSplits:s,axis:i}=r,o=v.parseAxisParam(i,a.shape)[0],l=R.prepareSplitSize(a,s,o),u=a.shape.length,c=new Array(u).fill(0),h=a.shape.slice();return l.map(d=>{let p=[...h];p[o]=d;let f=dc({inputs:{x:a},backend:n,attrs:{begin:c,size:p}});return c[o]+=d,f})}var _G={kernelName:Uo,backendName:"webgl",kernelFunc:wG},bG="return sqrt(x);",vG=Xe({opSnippet:bG}),kG={kernelName:Gs,backendName:"webgl",kernelFunc:vG},NG="return x * x;",IG=Xe({opSnippet:NG}),SG={kernelName:vu,backendName:"webgl",kernelFunc:IG},Sb="return (a - b) * (a - b);",TG=nn({opSnippet:Sb,packedOpSnippet:Sb}),CG={kernelName:Ks,backendName:"webgl",kernelFunc:TG};function EG({inputs:e,attrs:t,backend:n}){let{x:r}=e,a=xr+` return x > 0.0 ? 1.0 : float(${t.alpha}); - `,s=new Ba(r.shape,a);return n.runWebGLProgram(s,[r],r.dtype)}var EG={kernelName:Ta,backendName:"webgl",kernelFunc:CG},RG=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let r=n.length,a=ut(n.length),s=ut(n.length),i="";if(r===1)i="coords * strides + begin";else{let o=0;i=n.map((l,u)=>(o++,n.length===1?`coords * strides[${u}] + begin[${u}]`:`coords[${o-1}] * strides[${u}] + begin[${u}]`)).join(",")}this.userCode=` + `,s=new Ba(r.shape,a);return n.runWebGLProgram(s,[r],r.dtype)}var RG={kernelName:Ta,backendName:"webgl",kernelFunc:EG},FG=class{constructor(e,t,n){this.variableNames=["x"],this.outputShape=n;let r=n.length,a=ut(n.length),s=ut(n.length),i="";if(r===1)i="coords * strides + begin";else{let o=0;i=n.map((l,u)=>(o++,n.length===1?`coords * strides[${u}] + begin[${u}]`:`coords[${o-1}] * strides[${u}] + begin[${u}]`)).join(",")}this.userCode=` ${a} begin = ${a}(${e}); ${a} strides = ${a}(${t}); @@ -3925,15 +3925,15 @@ return a / b;`,EH=` ${s} coords = getOutputCoords(); setOutput(getX(${i})); } - `}};function FG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=Ae({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=dc({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=Ae({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else if(n.shouldExecuteOnCPU([_])){let x=n.texData.get(_.dataId).values,I=We(_.shape,_.dtype,x),S=FP(g,I,m,f);b=n.makeTensorInfo(g,_.dtype,S.values)}else{let x=new RG(f,m,g);b=n.runWebGLProgram(x,[_],_.dtype)}let w=Ae({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var MG={kernelName:Ho,backendName:"webgl",kernelFunc:FG},$G="return tan(x);",DG=Xe({opSnippet:$G}),OG={kernelName:jo,backendName:"webgl",kernelFunc:DG},zG=` + `}};function MG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{begin:s,end:i,strides:o,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,{nonStrided:p,$begin:f,$strides:m,size:A,newShape:y,outShape:g}=cn.sliceInfo(a.shape,s,i,o,l,u,c,h,d),_=Ae({inputs:{x:a},backend:n,attrs:{shape:y}}),b;if(p){let x=dc({inputs:{x:_},backend:n,attrs:{begin:f,size:A}});b=Ae({inputs:{x},backend:n,attrs:{shape:g}}),n.disposeIntermediateTensorInfo(x)}else if(g.some(x=>x===0))b=n.makeTensorInfo(g,a.dtype,[]);else if(n.shouldExecuteOnCPU([_])){let x=n.texData.get(_.dataId).values,I=We(_.shape,_.dtype,x),S=MP(g,I,m,f);b=n.makeTensorInfo(g,_.dtype,S.values)}else{let x=new FG(f,m,g);b=n.runWebGLProgram(x,[_],_.dtype)}let w=Ae({inputs:{x:b},backend:n,attrs:{shape:g}});return n.disposeIntermediateTensorInfo(_),n.disposeIntermediateTensorInfo(b),w}var $G={kernelName:Ho,backendName:"webgl",kernelFunc:MG},DG="return tan(x);",OG=Xe({opSnippet:DG}),zG={kernelName:jo,backendName:"webgl",kernelFunc:OG},PG=` float e2x = exp(-2.0 * abs(x)); return sign(x) * (1.0 - e2x) / (1.0 + e2x); -`,PG=Xe({opSnippet:zG}),LG={kernelName:Ys,backendName:"webgl",kernelFunc:PG},BG=class{constructor(e,t){this.variableNames=["A"];let n=new Array(e.length);for(let s=0;s5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[];for(let a=0;av.decodeString(c)),l=We(a.shape,a.dtype,o),u=$P(l,s);return n.makeTensorInfo(u.shape,u.dtype,u.values)}let i=new BG(a.shape,s);return n.runWebGLProgram(i,[a],a.dtype)}var VG={kernelName:Sa,backendName:"webgl",kernelFunc:Sb};function UG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r,o=n.readSync(a.dataId),[l,u]=DP(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var HG={kernelName:Go,backendName:"webgl",kernelFunc:UG},jG=class{constructor(e,t,n,r,a,s){this.variableNames=["Image","Transforms"],this.outputShape=s;let i=n==="nearest"?1:2,o;switch(r){case"constant":o=1;break;case"reflect":o=2;break;case"wrap":o=3;break;case"nearest":o=4;break;default:o=1;break}this.userCode=` + `}};function BG(e){let t=e.length;if(t>5)throw Error(`Tile for rank ${t} is not yet supported`);if(t===1)return`imod(resRC, ${e[0]})`;let n=["resRC.x","resRC.y","resRC.z","resRC.w","resRC.u"],r=[];for(let a=0;av.decodeString(c)),l=We(a.shape,a.dtype,o),u=DP(l,s);return n.makeTensorInfo(u.shape,u.dtype,u.values)}let i=new VG(a.shape,s);return n.runWebGLProgram(i,[a],a.dtype)}var UG={kernelName:Sa,backendName:"webgl",kernelFunc:Tb};function HG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{k:s,sorted:i}=r,o=n.readSync(a.dataId),[l,u]=OP(o,a.shape,a.dtype,s,i);return[n.makeTensorInfo(l.shape,l.dtype,l.values),n.makeTensorInfo(u.shape,u.dtype,u.values)]}var jG={kernelName:Go,backendName:"webgl",kernelFunc:HG},GG=class{constructor(e,t,n,r,a,s){this.variableNames=["Image","Transforms"],this.outputShape=s;let i=n==="nearest"?1:2,o;switch(r){case"constant":o=1;break;case"reflect":o=2;break;case"wrap":o=3;break;case"nearest":o=4;break;default:o=1;break}this.userCode=` float mapCoord(float outCoord, float len) { float inCoord = outCoord; if(${o} == 2) { @@ -4045,7 +4045,7 @@ return a / b;`,EH=` } setOutput(outputValue); } - `}};function GG(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=r,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=new jG(h,d,i,o,l,A);return n.runWebGLProgram(y,[a,s],"float32")}var qG={kernelName:Jh,backendName:"webgl",kernelFunc:GG};function XG(e){let{inputs:t,attrs:n,backend:r}=e,{axis:a}=n,{x:s}=t;vl(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=r.readSync(s.dataId),{outputValues:o,outputShape:l,indices:u}=OP(i,a,s.shape,s.dtype);return[r.makeTensorInfo(l,s.dtype,o),r.makeTensorInfo([u.length],"int32",u)]}var KG={kernelName:Qh,backendName:"webgl",kernelFunc:XG};function ZG(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a,o=i.shape.length,l=a.shape[s],u=new Array(o-1),c=0;for(let m=0;mn.disposeIntermediateTensorInfo(m)),f}var YG={kernelName:qo,backendName:"webgl",kernelFunc:ZG},JG=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,r=e.batchSize,a=e.inSize,s=e.numSegments,i=s*Math.ceil(a/n);this.outputShape=[r,i];let o="0.0",l="sumValue",u=Math.floor(n/4)*4,c=n%4,h=` + `}};function qG(e){let{inputs:t,backend:n,attrs:r}=e,{image:a,transforms:s}=t,{interpolation:i,fillMode:o,fillValue:l,outputShape:u}=r,[c,h,d,p]=a.shape,[f,m]=u!=null?u:[h,d],A=[c,f,m,p],y=new GG(h,d,i,o,l,A);return n.runWebGLProgram(y,[a,s],"float32")}var XG={kernelName:Jh,backendName:"webgl",kernelFunc:qG};function KG(e){let{inputs:t,attrs:n,backend:r}=e,{axis:a}=n,{x:s}=t;vl(s,"unique"),console.warn("WARNING: ","UI might be locked temporarily as data is being downloaded");let i=r.readSync(s.dataId),{outputValues:o,outputShape:l,indices:u}=zP(i,a,s.shape,s.dtype);return[r.makeTensorInfo(l,s.dtype,o),r.makeTensorInfo([u.length],"int32",u)]}var ZG={kernelName:Qh,backendName:"webgl",kernelFunc:KG};function YG(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a,o=i.shape.length,l=a.shape[s],u=new Array(o-1),c=0;for(let m=0;mn.disposeIntermediateTensorInfo(m)),f}var JG={kernelName:qo,backendName:"webgl",kernelFunc:YG},QG=class{constructor(e,t){this.variableNames=["x","segmentIds"];let n=e.windowSize,r=e.batchSize,a=e.inSize,s=e.numSegments,i=s*Math.ceil(a/n);this.outputShape=[r,i];let o="0.0",l="sumValue",u=Math.floor(n/4)*4,c=n%4,h=` sumValue += dot(values, segFilter); `,d="";a%n>0&&(d=` if (inIdx < 0 || inIdx >= ${a}) { @@ -4151,26 +4151,26 @@ return a / b;`,EH=` } setOutput(${l}); } - `}};function QG(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:s}=t,{numSegments:i}=r,o=a.shape.length,l=[],u=0,c=R.getAxesPermutation([u],o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),l.push(h),u=R.getInnerMostAxes(1,o)[0]);let d=R.segment_util.computeOutShape(h.shape,u,i),p=v.sizeFromShape([h.shape[u]]),f=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,p]}});l.push(f);let m=sd(a.dtype),A=(b,w,x,I,S)=>{let T=b.shape[0],M=b.shape[1],D=R.segment_util.segOpComputeOptimalWindowSize(M,S),z={windowSize:D,inSize:M,batchSize:T,numSegments:S},W=new JG(z,w),U=n.compileAndRun(W,[b,x],I);if(l.push(U),U.shape[1]===S)return U;let H=kb({backend:n,attrs:{start:0,stop:S,step:1,dtype:"float32"}}),X=Sb({inputs:{x:H},backend:n,attrs:{reps:[M/D]}});return l.push(H),l.push(X),A(U,w,X,I,S)},y=A(f,"unsortedSegmentSum",s,m,i),g=Ae({inputs:{x:y},backend:n,attrs:{shape:d}}),_=g;if(c!=null){l.push(g);let b=R.getUndoAxesPermutation(c);_=In({inputs:{x:_},backend:n,attrs:{perm:b}})}return l.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var eq={kernelName:ku,backendName:"webgl",kernelFunc:QG},tq=[HU,qU,FL,$L,zL,WL,VL,jL,qL,KL,QL,tW,aW,oW,fW,cW,yW,_W,xW,NW,SW,CW,MW,WW,VW,XW,ZW,eB,rB,pL,oB,yB,xB,hB,vB,NB,_B,TB,RB,$B,OB,PB,BB,qB,KB,UB,JB,tV,sV,uV,pV,AV,yV,gV,wV,bV,kV,IV,TV,FV,OV,PV,WV,UV,qV,YV,tU,dL,rU,iB,iU,uU,dU,mL,AU,wU,bU,CU,IU,MU,OU,WU,KU,rH,tH,oH,uH,hH,QU,pH,mH,xH,vH,SH,DH,wL,zH,WH,UH,GH,HW,KH,YH,QH,nj,ij,yL,lj,uj,jW,RH,dj,wj,Aj,bL,kj,Sj,Ej,Mj,zj,Lj,Vj,jj,qj,Zj,Qj,nG,sG,lG,hG,PW,MH,fG,AG,gG,wG,vG,IG,TG,EG,MG,FH,CL,OG,LG,VG,HG,qG,EL,KG,YG,eq,ZH];for(let e of tq)ni(e);var Pn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Pn||(Pn={}));var fc;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(fc||(fc={}));var Tb;function nq(e){Tb=e.wasm.cwrap(Qs,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function rq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r,d=n.dataIdMap.get(a.dataId).id,p=n.dataIdMap.get(s.dataId).id,f=0;if(i!=null){let S=n.dataIdMap.get(i.dataId);if(S.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${S.shape.length}.`);f=S.id}let m=o==null?0:n.dataIdMap.get(o.dataId).id,A=fc[c];if(A==null)throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?a.shape[2]:a.shape[1],g=u?s.shape[1]:s.shape[2],_=a.shape[0],b=n.makeOutput([_,y,g],a.dtype),w=n.dataIdMap.get(b.dataId).id,x=new Uint8Array(new Int32Array(a.shape).buffer),I=new Uint8Array(new Int32Array(s.shape).buffer);return Tb(d,x,a.shape.length,p,I,s.shape.length,l,u,A,f,m,h||0,w),b}var aq={kernelName:Qs,backendName:"wasm",setupFunc:nq,kernelFunc:rq};function Sn(e){let t;function n(a){t=a.wasm.cwrap(e,null,["number","number"])}function r(a){let{backend:s,inputs:{x:i}}=a,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),u=s.dataIdMap.get(l.dataId).id;return v.sizeFromShape(l.shape)===0||t(o,u),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:r}}var sq=Sn(Zi);function An(e,t,n){let r;function a(i){r=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:u,b:c}=l,h=o.dataIdMap.get(u.dataId).id,d=o.dataIdMap.get(c.dataId).id,p=n!=null?n:u.dtype,f=R.assertAndGetBroadcastShape(u.shape,c.shape),m=o.makeOutput(f,p);if(v.sizeFromShape(f)===0)return m;let A=new Uint8Array(new Int32Array(u.shape).buffer),y=new Uint8Array(new Int32Array(c.shape).buffer),g=o.dataIdMap.get(m.dataId).id,_=()=>r(h,A,u.shape.length,d,y,c.shape.length,Pn[u.dtype],g);if(t&&u.dtype==="float32")return _(),m;let b=R.getBroadcastDims(u.shape,f),w=R.getBroadcastDims(c.shape,f),x=b.every((S,T)=>S===T),I=w.every((S,T)=>S===T);if(x&&I)return _(),m;throw new Error(`Broadcasting along outer dims is not yet supported for ${u.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:a,kernelFunc:s}}var iq=!0,oq=An(Na,iq),Cb;function lq(e){Cb=e.wasm.cwrap(os,null,["array","number","number","number"])}function uq(e){let{inputs:t,backend:n}=e,r=n.makeOutput(t[0].shape,t[0].dtype);if(v.sizeFromShape(r.shape)===0)return r;let a=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(a).buffer),i=n.dataIdMap.get(r.dataId).id;return Cb(s,a.length,Pn[r.dtype],i),r}var cq={kernelName:os,backendName:"wasm",setupFunc:lq,kernelFunc:uq};function xp(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype),a=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(r).set(a),r}var hq={kernelName:ks,backendName:"wasm",kernelFunc:xp},Eb;function dq(e){Eb=e.wasm.cwrap(Js,null,["number","array","number","number","number","array","number"])}function wp(e){let{inputs:t,backend:n,attrs:r}=e,[a,s]=fq(t.x.shape,r.perm),i=!0;for(let f=0;f=a&&(s===-1||r[s]>r[i])&&(s=i);r[s]=a}return[n,r]}var mq={kernelName:Js,backendName:"wasm",kernelFunc:wp,setupFunc:dq};function $l(e,t,n){let r=e.shape,a=e.shape.length,s=v.parseAxisParam(t,r),i=s,o=R.getAxesPermutation(i,a),l=null,u=!1;if(o!=null){let c=new Array(a);for(let d=0;d`new shape: ${i}, old shape: ${r.shape}. New shape and old shape must have the same number of elements.`),e.backend.incRef(r.dataId),{dataId:r.dataId,shape:i,dtype:r.dtype}}var bq={kernelName:Do,backendName:"wasm",kernelFunc:wr},Mb;function vq(e){Mb=e.wasm.cwrap(cs,null,["number","array","number","number","array","number","number","number","number"])}function kq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=wr({inputs:{x:a},backend:n,attrs:{shape:b}}),I=wr({inputs:{x:s},backend:n,attrs:{shape:w}}),S=n.dataIdMap.get(x.dataId).id,T=n.dataIdMap.get(I.dataId).id,M=i?x.shape[2]:x.shape[1],D=o?I.shape[1]:I.shape[2],z=Math.max(A,y),W=n.makeOutput([z,M,D],x.dtype),U=n.dataIdMap.get(W.dataId).id,H=new Uint8Array(new Int32Array(x.shape).buffer),X=new Uint8Array(new Int32Array(I.shape).buffer);return Mb(S,H,x.shape.length,T,X,I.shape.length,i,o,U),n.disposeData(x.dataId),n.disposeData(I.dataId),W.shape=_,W}var Nq={kernelName:cs,backendName:"wasm",setupFunc:vq,kernelFunc:kq};function _p(e){let{inputs:{x:t},attrs:{dtype:n},backend:r}=e,a=r.makeOutput(t.shape,n),s=r.typedArrayFromHeap(t);return r.typedArrayFromHeap(a).set(s),a}var Iq={kernelName:hs,backendName:"wasm",kernelFunc:_p},Sq=Sn(ds),$b;function Tq(e){$b=e.wasm.cwrap(Ia,null,["number","number","number","number"])}function Cq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o=n.dataIdMap.get(a.dataId).id,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(l.dataId).id;return $b(o,s,i,u),l}var Eq={kernelName:Ia,backendName:"wasm",setupFunc:Tq,kernelFunc:Cq};function Db(e){let{inputs:t,backend:n}=e,r=v.parseAxisParam(e.attrs.axis,t[0].shape)[0],a=R.computeOutShape(t.map(p=>p.shape),r),s=t.filter(p=>v.sizeFromShape(p.shape)>0);if(s.length===1)return xp({inputs:{x:s[0]},backend:n});let i=n.makeOutput(a,t[0].dtype);if(v.sizeFromShape(a)===0)return i;let o=s.map(p=>p.shape);if(R.assertParamsConsistent(o,r),s[0].dtype==="string"){let p=s.map(_=>{let b=v.sizeFromShape(_.shape.slice(r));return wr({inputs:{x:_},backend:n,attrs:{shape:[-1,b]}})}),f=p.map(_=>({vals:n.readSync(_.dataId),shape:_.shape}));a=R.computeOutShape(p.map(_=>_.shape),1);let m=p[0].shape[0]===1,A=Sm(f,a,t[0].dtype,m),y=R.computeOutShape(s.map(_=>_.shape),r);i.shape=y;let g=n.dataIdMap.get(i.dataId);return g.stringBytes=R.fromStringArrayToUint8(A),p.forEach(_=>n.disposeData(_.dataId)),i}let l=v.sizeFromShape(s[0].shape.slice(0,r)),u=0,c=s.map(p=>{let f=v.sizeFromShape(p.shape.slice(r));return u+=f,f}),h=s.map(p=>n.typedArrayFromHeap(p)),d=n.typedArrayFromHeap(i);for(let p=0;p`cumsum does not support ${a.dtype} tensors in the WASM backend`);let u=R.getAxesPermutation([s],l),c=a;u!==null&&(c=wp({inputs:{x:a},attrs:{perm:u},backend:n}));let h=R.getInnerMostAxes(1,l)[0];R.assertAxesAreInnerMostDims("cumsum",[h],l);let d=n.makeOutput(c.shape,c.dtype),p=c.shape[h],f=n.dataIdMap.get(c.dataId).id,m=n.dataIdMap.get(d.dataId).id;Lb(f,i?1:0,o?1:0,p,m,Pn[a.dtype]);let A=d;if(u!==null){let y=R.getUndoAxesPermutation(u);A=wp({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(c.dataId),n.disposeData(d.dataId)}return A}var Hq={kernelName:As,backendName:"wasm",setupFunc:Vq,kernelFunc:Uq},Wb;function jq(e){Wb=e.wasm.cwrap(oo,null,["number","number","number","array","number","array","array","number","number"])}function Gq(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=t.makeOutput(f,"float32"),A=t.dataIdMap.get(a.dataId).id,y=new Uint8Array(new Int32Array(v.computeStrides(a.shape)).buffer),g=new Uint8Array(new Int32Array(f).buffer),_=new Uint8Array(new Int32Array(v.computeStrides(f)).buffer),b=t.dataIdMap.get(m.dataId).id;return Wb(A,s,i==="NHWC"?1:0,y,a.shape.length-1,g,_,f.length,b),m}var qq={kernelName:oo,backendName:"wasm",setupFunc:jq,kernelFunc:Gq},Bb;function Xq(e){Bb=e.wasm.cwrap(ys,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Kq(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s}=t,i=r.dataIdMap.get(a.dataId).id,o=r.dataIdMap.get(s.dataId).id,{strides:l,dilations:u,pad:c,dimRoundingMode:h}=n,d=u==null?[1,1]:u,p=R.computeConv2DInfo(a.shape,s.shape,l,d,c,h,!0),f=p.filterHeight,m=p.filterWidth,A=p.padInfo.top,y=p.padInfo.right,g=p.padInfo.bottom,_=p.padInfo.left,b=p.dilationHeight,w=p.dilationWidth,x=p.strideHeight,I=p.strideWidth,S=p.inChannels,T=p.outChannels,M=p.padInfo.type==="SAME"?1:0;if(p.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${p.dataFormat}'. Please use 'channelsLast'.`);let D=r.makeOutput(p.outShape,"float32"),z=r.dataIdMap.get(D.dataId).id;return Bb(i,a.shape[0],a.shape[1],a.shape[2],o,f,m,A,y,g,_,M,b,w,x,I,S,T,z),D}var Zq={kernelName:ys,backendName:"wasm",setupFunc:Xq,kernelFunc:Kq},Yq=!1,Jq=An(co,Yq,"bool"),Qq=Sn(xs);function oA(e){let{inputs:t,attrs:n,backend:r}=e,{input:a}=t,{dim:s}=n,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),wr({inputs:{x:a},backend:r,attrs:{shape:o}})}var eX={kernelName:ho,backendName:"wasm",kernelFunc:oA};function tX(e){let{attrs:{shape:t,value:n,dtype:r},backend:a}=e,s=a.makeOutput(t,r);return a.typedArrayFromHeap(s).fill(n),s}var nX={kernelName:fu,backendName:"wasm",kernelFunc:tX},Vb;function rX(e){Vb=e.wasm.cwrap(fo,null,["number","number","number","number","number","number"])}function aX(e){let{inputs:t,backend:n}=e,{image:r}=t,a=n.makeOutput(r.shape,r.dtype),s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,[o,l,u,c]=r.shape;return Vb(s,o,l,u,c,i),a}var sX={kernelName:fo,backendName:"wasm",kernelFunc:aX,setupFunc:rX},iX=Sn(ws),oX=!1,lX=An(_s,oX),Ub;function uX(e){Ub=e.wasm.cwrap(bs,null,["number","number","number","number","number","number","number"])}function cX(e){let{backend:t,inputs:n,attrs:r}=e,{varianceEpsilon:a}=r,{x:s,mean:i,variance:o,offset:l,scale:u}=n,c=t.dataIdMap.get(s.dataId).id,h=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,p=l!=null?t.dataIdMap.get(l.dataId).id:0,f=u!=null?t.dataIdMap.get(u.dataId).id:0,m=t.makeOutput(s.shape,s.dtype);if(v.sizeFromShape(s.shape)===0)return m;let A=t.dataIdMap.get(m.dataId).id;return Ub(c,h,d,p,f,a,A),m}var hX={kernelName:bs,backendName:"wasm",setupFunc:uX,kernelFunc:cX},Hb;function dX(e){Hb=e.wasm.cwrap(ei,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function pX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return Hb(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var fX={kernelName:ei,backendName:"wasm",setupFunc:dX,kernelFunc:pX},jb;function mX(e){jb=e.wasm.cwrap(ti,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function AX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d,!0),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedDepthwiseConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return jb(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var yX={kernelName:ti,backendName:"wasm",setupFunc:mX,kernelFunc:AX},Gb;function gX(e){Gb=e.wasm.cwrap(Ao,null,["number","number","number","number","number","number","array","number"])}function xX(e){let{backend:t,inputs:n}=e,{params:r,indices:a}=n,[s,i,o,l]=If.prepareAndValidate(r,a),u=t.makeOutput(s,r.dtype);if(i===0)return u;let c=a.shape,h=c[c.length-1],d=t.dataIdMap.get(r.dataId).id,p=t.dataIdMap.get(a.dataId).id,f=new Uint8Array(new Int32Array(l).buffer),m=t.dataIdMap.get(u.dataId).id;return Gb(d,Pn[r.dtype],p,i,h,o,f,m),u}var wX={kernelName:Ao,backendName:"wasm",setupFunc:gX,kernelFunc:xX},qb;function _X(e){qb=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function bX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a,indices:s}=n,{axis:i,batchDims:o}=r,l=v.parseAxisParam(i,a.shape)[0],u=R.segment_util.collectGatherOpShapeInfo(a,s,l,o),c=wr({inputs:{x:a},attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]},backend:t}),h=v.sizeFromShape(s.shape),d=wr({inputs:{x:s},attrs:{shape:[u.batchSize,h/u.batchSize]},backend:t}),p=[u.batchSize,u.outerSize,h/u.batchSize,u.sliceSize],f=t.makeOutput(p,a.dtype);if(v.sizeFromShape(a.shape)===0)return f;let m=c.shape.length-1,A=t.dataIdMap.get(c.dataId).id,y=t.dataIdMap.get(d.dataId).id,g=t.dataIdMap.get(f.dataId).id,_=new Uint8Array(new Int32Array(v.computeStrides(c.shape)).buffer),b=new Uint8Array(new Int32Array(v.computeStrides(p)).buffer);return qb(A,Pn[a.dtype],_,m,y,u.batchSize,b,g),t.disposeData(c.dataId),t.disposeData(d.dataId),f.shape=u.outputShape,f}var vX={kernelName:mo,backendName:"wasm",setupFunc:_X,kernelFunc:bX},kX=!1,NX=An(yo,kX,"bool"),IX=!1,SX=An(vs,IX,"bool"),Xb;function TX(e){Xb=e.wasm.cwrap(Ns,null,["number","number","number"])}function CX(e){let{inputs:{x:t},attrs:{alpha:n},backend:r}=e,a=r.dataIdMap.get(t.dataId).id,s=r.makeOutput(t.shape,t.dtype);if(v.sizeFromShape(t.shape)!==0){let i=r.dataIdMap.get(s.dataId).id;Xb(a,n,i)}return s}var EX={kernelName:Ns,backendName:"wasm",setupFunc:TX,kernelFunc:CX},RX=!1,FX=An(_o,RX,"bool"),MX=!1,$X=An(bo,MX,"bool"),DX=Sn(Is),OX=!1,zX=An(ko,OX,"bool"),Kb;function PX(e){Kb=e.wasm.cwrap(Ss,null,["number, number, number"])}function LX(e){let{backend:t,inputs:n,attrs:r}=e,{reductionIndices:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:u,axes:c,originalAxes:h,inputWasTransposed:d}=$l(i,a,t);if(d){let g=t.dataIdMap.get(u.dataId).id;l=u,o=g}let p=l.shape.length;R.assertAxesAreInnerMostDims("max",c,p);let[f,m]=R.computeOutAndReduceShapes(l.shape,c),A=v.sizeFromShape(m),y=t.makeOutput(f,i.dtype);if(v.sizeFromShape(l.shape)!==0){let g=t.dataIdMap.get(y.dataId).id;Kb(o,A,g)}if(d&&t.disposeData(u.dataId),s){let g=R.expandShapeToKeepDim(y.shape,h);y.shape=g}return y}var WX={kernelName:Ss,backendName:"wasm",setupFunc:PX,kernelFunc:LX},BX=!1,VX=An(Ts,BX),Zb;function UX(e){Zb=e.wasm.cwrap(Cs,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function HX(e){let{inputs:t,attrs:n,backend:r}=e,a=t.x,s=r.dataIdMap.get(a.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=n,c=R.computePool2DInfo(a.shape,i,o,1,l,u),h=c.filterHeight,d=c.filterWidth,p=c.padInfo.top,f=c.padInfo.right,m=c.padInfo.bottom,A=c.padInfo.left,y=c.dilationHeight,g=c.dilationWidth,_=c.strideHeight,b=c.strideWidth,w=c.inChannels,x=c.outChannels;if(c.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);let I=r.makeOutput(c.outShape,"float32"),S=r.dataIdMap.get(I.dataId).id;return Zb(s,a.shape[0],a.shape[1],a.shape[2],h,d,p,f,m,A,y,g,_,b,w,x,S),I}var jX={kernelName:Cs,backendName:"wasm",setupFunc:UX,kernelFunc:HX},Yb;function GX(e){Yb=e.wasm.cwrap(Es,null,["number, number, number"])}function qX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("mean",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=u;u.dtype!=="float32"&&(g=_p({backend:t,inputs:{x:u},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(g.dataId).id);let _=t.makeOutput(m,"float32");if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(_.dataId).id;Yb(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(_.shape,d);_.shape=b}return u.dtype!=="float32"&&t.disposeData(g.dataId),_}var XX={kernelName:Es,backendName:"wasm",setupFunc:GX,kernelFunc:qX},Jb;function KX(e){Jb=e.wasm.cwrap(Rs,null,["number, number, number"])}function ZX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t);if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_)}let f=u.shape.length;R.assertAxesAreInnerMostDims("min",h,f);let[m,A]=R.computeOutAndReduceShapes(u.shape,h),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;Jb(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var YX={kernelName:Rs,backendName:"wasm",setupFunc:KX,kernelFunc:ZX},JX=!1,QX=An(Fs,JX),eK=!0,tK=An(Ms,eK),nK=Sn(Io);function lA(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),r=n[0],a=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:r,selectedSize:a,pSelectedScores:s,pValidOutputs:i}}var Qb;function rK(e){Qb=e.wasm.cwrap(To,"number",["number","number","number","number","number"])}function aK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i}=r,{boxes:o,scores:l}=n,u=t.dataIdMap.get(o.dataId).id,c=t.dataIdMap.get(l.dataId).id,h=Qb(u,c,s,a,i),{pSelectedIndices:d,selectedSize:p,pSelectedScores:f,pValidOutputs:m}=lA(t,h);return t.wasm._free(f),t.wasm._free(m),t.makeOutput([p],"int32",d)}var sK={kernelName:To,backendName:"wasm",setupFunc:rK,kernelFunc:aK},e3;function iK(e){e3=e.wasm.cwrap(Co,"number",["number","number","number","number","number","bool"])}function oK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=e3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(m);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([],"int32",A);return[y,g]}var lK={kernelName:Co,backendName:"wasm",setupFunc:iK,kernelFunc:oK},t3;function uK(e){t3=e.wasm.cwrap(Eo,"number",["number","number","number","number","number","number"])}function cK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=t3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(A);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([f],"float32",m);return[y,g]}var hK={kernelName:Eo,backendName:"wasm",setupFunc:uK,kernelFunc:cK},dK=!1,pK=An(So,dK,"bool"),n3;function fK(e){n3=e.wasm.cwrap($s,null,["number","number","number","number","number"])}function mK(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=n.makeOutput([...a.shape,s],"int32"),u=n.dataIdMap.get(l.dataId).id,c=n.dataIdMap.get(a.dataId).id;return n3(c,s,i,o,u),l}var AK={kernelName:$s,backendName:"wasm",setupFunc:fK,kernelFunc:mK};function yK(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(1),r}var gK={kernelName:Ro,backendName:"wasm",kernelFunc:yK};function xK(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return oA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=oA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=Db({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeData(c.dataId)),u}var wK={kernelName:Fo,backendName:"wasm",kernelFunc:xK},r3;function _K(e){r3=e.wasm.cwrap(Ds,null,["number","array","number","number","array","array","number","number"])}function bK(e){let{inputs:{x:t},backend:n,attrs:{paddings:r,constantValue:a}}=e,s=r.map((f,m)=>f[0]+t.shape[m]+f[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(t.shape).buffer),c=r.map(f=>f[0]),h=r.map(f=>f[1]),d=new Uint8Array(new Int32Array(c).buffer),p=new Uint8Array(new Int32Array(h).buffer);return r3(i,u,t.shape.length,Pn[t.dtype],d,p,a,l),o}var vK={kernelName:Ds,backendName:"wasm",kernelFunc:bK,setupFunc:_K},kK=!1,NK=An(Os,kK),a3;function IK(e){a3=e.wasm.cwrap(zs,null,["number","number","number"])}function SK(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,o=n.makeOutput(r.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return a3(s,i,l),o}var TK={kernelName:zs,backendName:"wasm",setupFunc:IK,kernelFunc:SK},s3;function CK(e){s3=e.wasm.cwrap(Mo,null,["number","number","number","number"])}function EK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("prod",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;s3(l,y,Pn[g.dtype],_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var RK={kernelName:Mo,backendName:"wasm",setupFunc:CK,kernelFunc:EK},FK=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=Em(r,a,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},MK={kernelName:wu,backendName:"wasm",kernelFunc:FK},$K=!0,DK=An(gs,$K),OK=Sn(Ps),zK=Sn(Ws),i3;function PK(e){i3=e.wasm.cwrap(Ls,null,["number","number","number","number","number","number","number","number","number","number"])}function LK(e){let{backend:t,inputs:n,attrs:r}=e,{images:a}=n,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,[c,h,d,p]=a.shape,f=[c,l,u,p],m=t.dataIdMap.get(a.dataId),A;m.dtype!=="float32"&&(A=_p({backend:t,inputs:{x:a},attrs:{dtype:"float32"}}),m=t.dataIdMap.get(A.dataId));let y=m.id,g=t.makeOutput(f,"float32");if(v.sizeFromShape(a.shape)===0)return g;let _=t.dataIdMap.get(g.dataId).id;return i3(y,c,h,d,p,l,u,s?1:0,i?1:0,_),A!=null&&t.disposeData(A.dataId),g}var WK={kernelName:Ls,backendName:"wasm",setupFunc:PK,kernelFunc:LK},o3;function BK(e){o3=e.wasm.cwrap(Bs,null,["number","array","number","array","number","number"])}function VK(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=v.parseAxisParam(s,a.shape);if(a.shape.length===0)return xp({inputs:{x:a},backend:n});let o=n.makeOutput(a.shape,a.dtype),l=n.dataIdMap.get(a.dataId).id,u=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(i).buffer),h=new Uint8Array(new Int32Array(a.shape).buffer);o3(l,c,i.length,h,a.shape.length,u);let d=wr({inputs:{x:o},attrs:{shape:a.shape},backend:n});return n.disposeData(o.dataId),d}var UK={kernelName:Bs,backendName:"wasm",kernelFunc:VK,setupFunc:BK},l3;function HK(e){l3=e.wasm.cwrap(Ko,null,["number","number","number","number","number","number","number","number","array","number","number"])}function jK(e){let{inputs:t,backend:n,attrs:r}=e,{image:a}=t,{radians:s,fillValue:i,center:o}=r,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(a.dataId).id,c=n.dataIdMap.get(l.dataId).id,[h,d,p,f]=a.shape,[m,A]=R.getImageCenter(o,d,p),y=i===0,g=255,_=typeof i=="number"?[i,i,i,y?0:g]:[...i,g],b=new Uint8Array(new Int32Array(_).buffer);return l3(u,h,d,p,f,s,m,A,b,_.length,c),l}var GK={kernelName:Ko,backendName:"wasm",kernelFunc:jK,setupFunc:HK},qK=Sn(Vs),XK=Sn(Us),u3;function KK(e){u3=e.wasm.cwrap(Oo,null,["number","number","number","number","number","number","array","number","number"])}function ZK(e){let{backend:t,inputs:n,attrs:r}=e,{indices:a,updates:s}=n,{shape:i}=r,o=t.makeOutput(i,s.dtype);if(v.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:u,sliceSize:c,strides:h,outputSize:d}=Sf.calculateShapes(s,a,i),p=t.dataIdMap.get(a.dataId).id,f=t.dataIdMap.get(s.dataId).id,m=new Uint8Array(new Int32Array(h).buffer),A=t.dataIdMap.get(o.dataId).id;return u3(p,f,Pn[s.dtype],l,u,c,m,d,A),o}var YK={kernelName:Oo,backendName:"wasm",setupFunc:KK,kernelFunc:ZK},c3;function JK(e){c3=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function QK(e){let{inputs:t,backend:n}=e,{condition:r,t:a,e:s}=t,i=n.dataIdMap.get(r.dataId).id,o=n.dataIdMap.get(a.dataId).id,l=n.dataIdMap.get(s.dataId).id,u=n.makeOutput(a.shape,a.dtype),c=n.dataIdMap.get(u.dataId).id,h=r.shape.length,d=a.shape.length,p=h===0||h>1||d===1?1:v.sizeFromShape(a.shape.slice(1));return c3(i,o,l,p,c),u}var eZ={kernelName:zo,backendName:"wasm",kernelFunc:QK,setupFunc:JK},h3;function tZ(e){h3=e.wasm.cwrap(js,null,["number","number"])}function nZ(e){let{backend:t,inputs:{x:n}}=e,r=t.dataIdMap.get(n.dataId).id,a=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(a.dataId).id;return v.sizeFromShape(a.shape)===0||h3(r,s),a}var rZ={kernelName:"Sigmoid",backendName:"wasm",setupFunc:tZ,kernelFunc:nZ},aZ=Sn(Hs);function bp(e){let{inputs:{x:t},attrs:{begin:n,size:r},backend:a}=e,[s,i]=cn.parseSliceParams(t,n,r),o=cn.isSliceContinous(t.shape,s,i),l=a.readSync(t.dataId),u=a.makeOutput(i,t.dtype),c=v.computeStrides(t.shape),h=a.dataIdMap.get(u.dataId);if(o){let f=cn.computeFlatOffset(s,c);return t.dtype==="string"?h.stringBytes=l.slice(f,f+v.sizeFromShape(i)):a.typedArrayFromHeap(u).set(l.subarray(f,f+v.sizeFromShape(i))),u}if(t.dtype==="string"){let f=Yd(l,s,i,t.shape,t.dtype);return h.stringBytes=f,u}let d=a.typedArrayFromHeap(u),p=t.shape.length;if(p===2)sZ(l,c[0],d,s,i);else if(p===3)iZ(l,c[0],c[1],d,s,i);else if(p===4)oZ(l,c[0],c[1],c[2],d,s,i);else{let f=Yd(l,s,i,t.shape,t.dtype);d.set(f)}return u}function sZ(e,t,n,r,a){let s=0,i=r[0],o=r[1],l=i+a[0];for(let u=i;u{let d=[...c];d[o]=h;let p=bp({inputs:{x:a},attrs:{begin:u,size:d},backend:r});return u[o]+=h,p})}var pZ={kernelName:Uo,backendName:"wasm",kernelFunc:dZ},fZ=Sn(Gs),mZ=Sn(vu),AZ=!0,yZ=An(Ks,AZ),p3;function gZ(e){p3=e.wasm.cwrap(Ta,null,["number","number","number"])}function xZ(e){let{backend:t,inputs:n,attrs:r}=e,{alpha:a}=r,{x:s}=n,i=t.dataIdMap.get(s.dataId).id,o=t.makeOutput(s.shape,s.dtype),l=t.dataIdMap.get(o.dataId).id;return p3(i,a,l),o}var wZ={kernelName:Ta,backendName:"wasm",setupFunc:gZ,kernelFunc:xZ},f3;function _Z(e){f3=e.wasm.cwrap(Ho,null,["number","array","number","array","array","array","array","array","number","number"])}function bZ(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{begin:s,end:i,strides:o}=r;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,p=R.slice_util.maskToAxes(c);if(p.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(c!==0&&h!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(c!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let f=a.shape.length-s.length,m=R.slice_util.maskToAxes(h),A=a.shape.slice();m.forEach(M=>{s[M]=0,i[M]=1,A.splice(M,0,1)});let y=wr({inputs:{x:a},attrs:{shape:A},backend:t}),{begin:g,end:_,strides:b}=R.slice_util.getNormalizedAxes(y.shape,p,f,s,i,o,l,u,c);s=g,i=_,o=b;let w=R.slice_util.maskToAxes(d);w.forEach(M=>{i[M]=s[M]+1,o[M]=1});let x=R.slice_util.computeOutShape(s,i,o),I=x.filter((M,D)=>w.indexOf(D)===-1);if(o.every(M=>M===1)){let M=bp({inputs:{x:y},attrs:{begin:s,size:x},backend:t});t.disposeData(y.dataId);let D=wr({inputs:{x:M},attrs:{shape:I},backend:t});return t.disposeData(M.dataId),D}let S=t.makeOutput(I,"float32");if(!I.some(M=>M===0)){let M=t.dataIdMap.get(y.dataId).id,D=new Uint8Array(new Int32Array(v.computeStrides(y.shape)).buffer),z=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),U=new Uint8Array(new Int32Array(o).buffer),H=new Uint8Array(new Int32Array(I).buffer),X=new Uint8Array(new Int32Array(v.computeStrides(I)).buffer),j=t.dataIdMap.get(S.dataId).id;f3(M,D,y.shape.length,z,W,U,H,X,I.length,j)}t.disposeData(y.dataId);let T=wr({inputs:{x:S},attrs:{shape:I},backend:t});return t.disposeData(S.dataId),T}var vZ={kernelName:Ho,backendName:"wasm",setupFunc:_Z,kernelFunc:bZ},kZ=!0,NZ=An(Zs,kZ),m3;function IZ(e){m3=e.wasm.cwrap(qs,null,["number, number, number"])}function SZ(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("sum",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;m3(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var TZ={kernelName:qs,backendName:"wasm",setupFunc:IZ,kernelFunc:SZ},CZ=Sn(Ys),A3;function EZ(e){A3=e.wasm.cwrap(Sa,null,["number","array","number","array","number","number"])}function RZ(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,s=n.dataIdMap.get(a.dataId).id,{reps:i}=r,o=new Array(a.shape.length);for(let d=0;d{let{x:r}=e,{k:a,sorted:s}=n,i=t.dataIdMap.get(r.dataId).id,o=new Uint8Array(new Int32Array(r.shape).buffer),l=r.shape.slice();l[l.length-1]=a;let u=t.makeOutput(l,r.dtype),c=t.dataIdMap.get(u.dataId).id,h=t.makeOutput(l,"int32"),d=t.dataIdMap.get(h.dataId).id;return y3(i,o,r.shape.length,Pn[r.dtype],a,s,c,d),[u,h]},DZ={kernelName:Go,backendName:"wasm",setupFunc:MZ,kernelFunc:$Z};function OZ(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a.shape[s],o=a.shape.length,l=new Array(o-1),u=0;for(let p=0;p({dataId:p,dtype:f,shape:l}))}var zZ={kernelName:qo,backendName:"wasm",kernelFunc:OZ};function PZ(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(0),r}var LZ={kernelName:Xo,backendName:"wasm",kernelFunc:PZ},WZ=[sq,oq,cq,gq,_q,Nq,Iq,Sq,Eq,Rq,$q,zq,Pq,Bq,Hq,qq,Zq,Jq,Qq,eX,nX,sX,iX,lX,aq,hX,fX,yX,wX,vX,NX,SX,hq,EX,FX,$X,DX,zX,WX,VX,jX,XX,YX,QX,tK,nK,sK,lK,hK,pK,AK,gK,wK,vK,NK,TK,RK,MK,DK,OK,zK,bq,WK,UK,GK,XK,qK,YK,eZ,rZ,aZ,lZ,hZ,pZ,fZ,mZ,yZ,wZ,vZ,NZ,TZ,CZ,FZ,DZ,mq,zZ,LZ];for(let e of WZ)ni(e);var uA=J();uA.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));uA.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(uA.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var g3=qi(G8()),BZ='var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["getNoExitRuntime"]()){}else{Module["PThread"].threadExit(ex.status)}}else{Module["PThread"].threadExit(-2);throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',VZ=qi(q8()),x3=class extends su{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new xh(this,Fr())}write(e,t,n){let r={id:this.dataIdNextNumber++};return this.move(r,e,t,n,1),r}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}move(e,t,n,r,a){let s=this.dataIdNextNumber++;if(r==="string"){let u=t;this.dataIdMap.set(e,{id:s,stringBytes:u,shape:n,dtype:r,memoryOffset:null,refCount:a});return}let i=v.sizeFromShape(n),o=i*v.bytesPerElement(r),l=this.wasm._malloc(o);this.dataIdMap.set(e,{id:s,memoryOffset:l,shape:n,dtype:r,refCount:a}),this.wasm.tfjs.registerTensor(s,i,l),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,o),l)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:r,stringBytes:a}=this.dataIdMap.get(e);if(n==="string")return a;let s=this.wasm.HEAPU8.slice(t,t+v.sizeFromShape(r)*v.bytesPerElement(n));return UZ(s.buffer,n)}disposeData(e,t=!1){if(this.dataIdMap.has(e)){let n=this.dataIdMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;this.wasm._free(n.memoryOffset),this.wasm.tfjs.disposeData(n.id),this.dataIdMap.delete(e)}return!0}refCount(e){return this.dataIdMap.has(e)?this.dataIdMap.get(e).refCount:0}incRef(e){let t=this.dataIdMap.get(e);t!=null&&t.refCount++}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let r;if(n==null)r=this.write(null,e,t);else{let a=this.dataIdNextNumber++;r={id:a},this.dataIdMap.set(r,{id:a,memoryOffset:n,shape:e,dtype:t,refCount:1});let s=v.sizeFromShape(e);this.wasm.tfjs.registerTensor(a,s,n)}return{dataId:r,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let r=this.wasm.HEAPU8.buffer,{memoryOffset:a}=this.dataIdMap.get(n),s=v.sizeFromShape(e);switch(t){case"float32":return new Float32Array(r,a,s);case"int32":return new Int32Array(r,a,s);case"bool":return new Uint8Array(r,a,s);default:throw new Error(`Unknown dtype ${t}`)}}};function HZ(e){return(t,n)=>(v.fetch(e,{credentials:"same-origin"}).then(r=>{r.ok||t.env.a(`failed to load wasm binary file at '${e}'`),r.arrayBuffer().then(a=>{WebAssembly.instantiate(a,t).then(s=>{n(s.instance)})})}),{})}function w3(e,t,n){if(vp!=null)return vp;let r="tfjs-backend-wasm.wasm";return e&&t?r="tfjs-backend-wasm-threaded-simd.wasm":e&&(r="tfjs-backend-wasm-simd.wasm"),mc!=null&&mc[r]!=null?mc[r]:n+r}async function jZ(){let[e,t]=await Promise.all([J().getAsync("WASM_HAS_SIMD_SUPPORT"),J().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,r)=>{let a={};a.locateFile=(o,l)=>{if(o.endsWith(".worker.js")){let u=BZ,c=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(c)}return o.endsWith(".wasm")?w3(e,t,Ac!=null?Ac:l):l+o},cA&&(a.instantiateWasm=HZ(w3(e,t,Ac!=null?Ac:"")));let s=!1;a.onAbort=()=>{s||yc||(yc=!0,r({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))};let i;t&&e&&vp==null?(a.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+g3.default.toString()],{type:"text/javascript"}),i=(0,g3.default)(a)):i=(0,VZ.default)(a),i.then(o=>{s=!0,yc=!1;let l=null;o.tfjs={init:o.cwrap("init",null,[]),registerTensor:o.cwrap("register_tensor",null,["number","number","number"]),disposeData:o.cwrap("dispose_data",l,["number"]),dispose:o.cwrap("dispose",l,[])},n({wasm:o})})})}function UZ(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var GZ=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],vp=null,Ac=null,mc={},yc=!1,cA=!1;function qZ(e,t=!1){if(Mf("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");vp=e,cA=t}function XZ(e,t=!1){if(yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Ac=e;else{mc=e;let n=GZ.filter(r=>mc[r]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}cA=t}var _3="3.3.0",KZ=2;sl("wasm",async()=>{let{wasm:e}=await jZ();return new x3(e)},KZ);Z().prototype.abs=function(){return this.throwIfDisposed(),zt(this)};Z().prototype.acos=function(){return this.throwIfDisposed(),Df(this)};Z().prototype.acosh=function(){return this.throwIfDisposed(),Of(this)};Z().prototype.add=function(e){return this.throwIfDisposed(),se(this,e)};Z().prototype.all=function(e,t){return this.throwIfDisposed(),dd(this,e,t)};Z().prototype.any=function(e,t){return this.throwIfDisposed(),Ou(this,e,t)};Z().prototype.argMax=function(e){return this.throwIfDisposed(),zu(this,e)};Z().prototype.argMin=function(e){return this.throwIfDisposed(),zf(this,e)};Z().prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),G(this,[])};Z().prototype.asType=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.as1D=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.as2D=function(e,t){return this.throwIfDisposed(),G(this,[e,t])};Z().prototype.as3D=function(e,t,n){return this.throwIfDisposed(),G(this,[e,t,n])};Z().prototype.as4D=function(e,t,n,r){return this.throwIfDisposed(),G(this,[e,t,n,r])};Z().prototype.as5D=function(e,t,n,r,a){return this.throwIfDisposed(),G(this,[e,t,n,r,a])};Z().prototype.asin=function(){return this.throwIfDisposed(),Pf(this)};Z().prototype.asinh=function(){return this.throwIfDisposed(),Lf(this)};Z().prototype.atan=function(){return this.throwIfDisposed(),Wf(this)};Z().prototype.atan2=function(e){return this.throwIfDisposed(),Bf(this,e)};Z().prototype.atanh=function(){return this.throwIfDisposed(),Vf(this)};Z().prototype.avgPool=function(e,t,n,r){return this.throwIfDisposed(),Lu(this,e,t,n,r)};Z().prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Wu(this,e,t)};Z().prototype.batchNorm=function(e,t,n,r,a){return this.throwIfDisposed(),li(this,e,t,n,r,a)};Z().prototype.broadcastTo=function(e){return this.throwIfDisposed(),Bu(this,e)};Z().prototype.cast=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.ceil=function(){return this.throwIfDisposed(),Gf(this)};Z().prototype.clipByValue=function(e,t){return this.throwIfDisposed(),vn(this,e,t)};Z().prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof Ue&&(e=[e]),st([this,...e],t)};Z().prototype.conv1d=function(e,t,n,r,a,s){return this.throwIfDisposed(),fd(this,e,t,n,r,a,s)};Z().prototype.conv2dTranspose=function(e,t,n,r,a){return this.throwIfDisposed(),md(this,e,t,n,r,a)};Z().prototype.conv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ra(this,e,t,n,r,a,s)};Z().prototype.cos=function(){return this.throwIfDisposed(),Vu(this)};Z().prototype.cosh=function(){return this.throwIfDisposed(),Ad(this)};Z().prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),yd(this,e,t,n)};Z().prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),Kf(this,e,t)};Z().prototype.depthwiseConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ul(this,e,t,n,r,a,s)};Z().prototype.dilation2d=function(e,t,n,r,a){return this.throwIfDisposed(),Zf(this,e,t,n,r,a)};Z().prototype.divNoNan=function(e){return this.throwIfDisposed(),Yf(this,e)};Z().prototype.div=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.dot=function(e){return this.throwIfDisposed(),Q5(this,e)};Z().prototype.elu=function(){return this.throwIfDisposed(),cl(this)};Z().prototype.equal=function(e){return this.throwIfDisposed(),Da(this,e)};Z().prototype.erf=function(){return this.throwIfDisposed(),Jf(this)};Z().prototype.exp=function(){return this.throwIfDisposed(),qn(this)};Z().prototype.expandDims=function(e){return this.throwIfDisposed(),hn(this,e)};Z().prototype.expm1=function(){return this.throwIfDisposed(),Qf(this)};Z().prototype.fft=function(){return this.throwIfDisposed(),Ju(this)};Z().prototype.flatten=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.floor=function(){return this.throwIfDisposed(),hl(this)};Z().prototype.floorDiv=function(e){return this.throwIfDisposed(),hd(this,e)};Z().prototype.gather=function(e,t){return this.throwIfDisposed(),ui(this,e,t)};Z().prototype.greaterEqual=function(e){return this.throwIfDisposed(),za(this,e)};Z().prototype.greater=function(e){return this.throwIfDisposed(),ar(this,e)};Z().prototype.ifft=function(){return this.throwIfDisposed(),Al(this)};Z().prototype.irfft=function(){return this.throwIfDisposed(),$d(this)};Z().prototype.isFinite=function(){return this.throwIfDisposed(),ex(this)};Z().prototype.isInf=function(){return this.throwIfDisposed(),tx(this)};Z().prototype.isNaN=function(){return this.throwIfDisposed(),nx(this)};Z().prototype.leakyRelu=function(e){return this.throwIfDisposed(),Hu(this,e)};Z().prototype.lessEqual=function(e){return this.throwIfDisposed(),ci(this,e)};Z().prototype.less=function(e){return this.throwIfDisposed(),xd(this,e)};Z().prototype.localResponseNormalization=function(e,t,n,r){return this.throwIfDisposed(),tm(this,e,t,n,r)};Z().prototype.logSigmoid=function(){return this.throwIfDisposed(),sx(this)};Z().prototype.logSoftmax=function(e){return this.throwIfDisposed(),bd(this,e)};Z().prototype.logSumExp=function(e,t){return this.throwIfDisposed(),am(this,e,t)};Z().prototype.log=function(){return this.throwIfDisposed(),Mn(this)};Z().prototype.log1p=function(){return this.throwIfDisposed(),wd(this)};Z().prototype.logicalAnd=function(e){return this.throwIfDisposed(),sr(this,e)};Z().prototype.logicalNot=function(){return this.throwIfDisposed(),ju(this)};Z().prototype.logicalOr=function(e){return this.throwIfDisposed(),vd(this,e)};Z().prototype.logicalXor=function(e){return this.throwIfDisposed(),ux(this,e)};Z().prototype.matMul=function(e,t,n){return this.throwIfDisposed(),Ge(this,e,t,n)};Z().prototype.maxPool=function(e,t,n,r){return this.throwIfDisposed(),Gu(this,e,t,n,r)};Z().prototype.max=function(e,t){return this.throwIfDisposed(),Xn(this,e,t)};Z().prototype.maximum=function(e){return this.throwIfDisposed(),Dr(this,e)};Z().prototype.mean=function(e,t){return this.throwIfDisposed(),kt(this,e,t)};Z().prototype.min=function(e,t){return this.throwIfDisposed(),pl(this,e,t)};Z().prototype.minimum=function(e){return this.throwIfDisposed(),fl(this,e)};Z().prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),im(this,e,t)};Z().prototype.mod=function(e){return this.throwIfDisposed(),om(this,e)};Z().prototype.mul=function(e){return this.throwIfDisposed(),P(this,e)};Z().prototype.neg=function(){return this.throwIfDisposed(),vt(this)};Z().prototype.norm=function(e,t,n){return this.throwIfDisposed(),Pd(this,e,t,n)};Z().prototype.notEqual=function(e){return this.throwIfDisposed(),di(this,e)};Z().prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),nl(this,e,t,n)};Z().prototype.onesLike=function(){return this.throwIfDisposed(),$n(this)};Z().prototype.pad=function(e,t){return this.throwIfDisposed(),aa(this,e,t)};Z().prototype.pool=function(e,t,n,r,a){return this.throwIfDisposed(),dx(this,e,t,n,r,a)};Z().prototype.pow=function(e){return this.throwIfDisposed(),sa(this,e)};Z().prototype.prelu=function(e){return this.throwIfDisposed(),Xu(this,e)};Z().prototype.prod=function(e,t){return this.throwIfDisposed(),Nd(this,e,t)};Z().prototype.reciprocal=function(){return this.throwIfDisposed(),cm(this)};Z().prototype.relu=function(){return this.throwIfDisposed(),zr(this)};Z().prototype.relu6=function(){return this.throwIfDisposed(),Sd(this)};Z().prototype.reshapeAs=function(e){return this.throwIfDisposed(),G(this,e.shape)};Z().prototype.reshape=function(e){return this.throwIfDisposed(),G(this,e)};Z().prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),Ex(this,e,t,n)};Z().prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),Rx(this,e,t,n)};Z().prototype.reverse=function(e){return this.throwIfDisposed(),Dn(this,e)};Z().prototype.rfft=function(){return this.throwIfDisposed(),Qu(this)};Z().prototype.round=function(){return this.throwIfDisposed(),hm(this)};Z().prototype.rsqrt=function(){return this.throwIfDisposed(),Td(this)};Z().prototype.selu=function(){return this.throwIfDisposed(),Cd(this)};Z().prototype.separableConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),dm(this,e,t,n,r,a,s)};Z().prototype.sigmoid=function(){return this.throwIfDisposed(),Fn(this)};Z().prototype.sign=function(){return this.throwIfDisposed(),pm(this)};Z().prototype.sin=function(){return this.throwIfDisposed(),Ed(this)};Z().prototype.sinh=function(){return this.throwIfDisposed(),Rd(this)};Z().prototype.slice=function(e,t){return this.throwIfDisposed(),Re(this,e,t)};Z().prototype.softmax=function(e){return this.throwIfDisposed(),Yu(this,e)};Z().prototype.softplus=function(){return this.throwIfDisposed(),dl(this)};Z().prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),qu(this,e,t)};Z().prototype.split=function(e,t){return this.throwIfDisposed(),Lt(this,e,t)};Z().prototype.sqrt=function(){return this.throwIfDisposed(),en(this)};Z().prototype.square=function(){return this.throwIfDisposed(),lt(this)};Z().prototype.squaredDifference=function(e){return this.throwIfDisposed(),Dd(this,e)};Z().prototype.squeeze=function(e){return this.throwIfDisposed(),Pa(this,e)};Z().prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof Ue?[this,e]:[this,...e];return dn(n,t)};Z().prototype.step=function(e){return this.throwIfDisposed(),yl(this,e)};Z().prototype.stridedSlice=function(e,t,n,r,a,s,i,o){return this.throwIfDisposed(),mm(this,e,t,n,r,a,s,i,o)};Z().prototype.sub=function(e){return this.throwIfDisposed(),ye(this,e)};Z().prototype.sum=function(e,t){return this.throwIfDisposed(),Te(this,e,t)};Z().prototype.tan=function(){return this.throwIfDisposed(),Am(this)};Z().prototype.tanh=function(){return this.throwIfDisposed(),ol(this)};Z().prototype.tile=function(e){return this.throwIfDisposed(),Oa(this,e)};Z().prototype.toBool=function(){return this.throwIfDisposed(),me(this,"bool")};Z().prototype.toFloat=function(){return this.throwIfDisposed(),me(this,"float32")};Z().prototype.toInt=function(){return this.throwIfDisposed(),me(this,"int32")};Z().prototype.topk=function(e,t){return this.throwIfDisposed(),ym(this,e,t)};Z().prototype.transpose=function(e){return this.throwIfDisposed(),at(this,e)};Z().prototype.unique=function(e){return this.throwIfDisposed(),zd(this,e)};Z().prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),gm(this,e,t)};Z().prototype.unstack=function(e){return this.throwIfDisposed(),ir(this,e)};Z().prototype.where=function(e,t){return this.throwIfDisposed(),kn(e,this,t)};Z().prototype.zerosLike=function(){return this.throwIfDisposed(),He(this)};var b3={kernelName:Zi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,yl(me(n,"float32"),-1))}}},ZZ={kernelName:Yi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=lt(me(n,"float32")),a=en(ye(be(1),r));return vt(ge(e,a))}}}},YZ={kernelName:Ji,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(ye(lt(me(n,"float32")),1));return ge(e,r)}}}},JZ={kernelName:Na,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},QZ={kernelName:os,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((r,a)=>{n[a]=()=>e.clone()}),n}},eY={kernelName:ls,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},tY={kernelName:lu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},nY={kernelName:Qi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,en(ye(be(1),lt(me(n,"float32")))))}}},rY={kernelName:eo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(se(be(1),lt(me(n,"float32"))));return ge(e,r)}}}},aY={kernelName:ro,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=se(lt(n),lt(r)),i=P(e,ge(r,s)),o=Pt(n.shape,a);return o.length>0&&(i=Te(i,o)),G(i,n.shape)},b:()=>{let s=se(lt(n),lt(r)),i=vt(P(e,ge(n,s))),o=Pt(r.shape,a);return o.length>0&&(i=Te(i,o)),G(i,r.shape)}}}},sY={kernelName:to,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(lt(me(n,"float32")),1))}}},iY={kernelName:no,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,ye(be(1),lt(me(n,"float32"))))}}};function oY(e,t,n,r,a,s){let i=E(e,"dy","avgPool3dGrad"),o=E(t,"input","avgPool3dGrad"),l=i,u=o,c=!1;o.rank===4&&(c=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),u=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),s!=null&&F(jt(a),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${s} but got pad ${a}.`);let h={dy:l,input:u},d={filterSize:n,strides:r,pad:a,dimRoundingMode:s},p=$.runKernel(Ih,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var lY=O({avgPool3dGrad_:oY}),uY={kernelName:uu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i,dimRoundingMode:o}=n;return{x:()=>lY(e,r,a,s,i,o)}}};function cY(e,t,n,r,a){let s=E(e,"dy","avgPoolGrad"),i=E(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,u=!1;i.rank===3&&(u=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let c={dy:l,input:o},h={filterSize:n,strides:r,pad:a},d=$.runKernel(Nh,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var hY=O({avgPoolGrad_:cY}),dY={kernelName:us,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i}=n;return{x:()=>hY(e,r,a,s,i)}}},pY={kernelName:cs,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[r,a]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>Ge(e,a,!1,!0),b:()=>Ge(r,e,!0,!1)}:!s&&i?{a:()=>Ge(e,a,!1,!1),b:()=>Ge(e,r,!0,!1)}:s&&!i?{a:()=>Ge(a,e,!1,!0),b:()=>Ge(r,e,!1,!1)}:{a:()=>Ge(a,e,!0,!0),b:()=>Ge(e,r,!0,!0)}}},fY={kernelName:cu,gradFunc:(e,t,n)=>{let{blockShape:r,crops:a}=n;return{x:()=>qu(e,r,a)}}},mY={kernelName:qg,gradFunc:(e,t,n)=>{let r=n,a=r.inputShape,s=r.shape,i=Array.from(s);for(let l=a.length-1;l>=0;l--)if(a[l]===s[l])i[l]=1;else if(a[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Te(e,o,!0)}}},AY={kernelName:hs,gradFunc:e=>({x:()=>e.clone()})},yY={kernelName:ds,gradFunc:e=>({x:()=>He(e)})},gY={kernelName:Ia,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{clipValueMin:a,clipValueMax:s}=n;return{x:()=>kn(sr(za(r,a),ci(r,s)),e,He(e))}}},xY={kernelName:hu,inputsToSave:["x"],gradFunc:b3.gradFunc},wY={kernelName:ao,saveAllInputs:!0,gradFunc:(e,t,n)=>{let r=t.map(o=>o.shape),{axis:a}=n,s=nr(a,t[0].shape)[0],i=r.map(o=>o[s]);return Lt(e,i,s).map(o=>()=>o)}},_Y={kernelName:ps,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F($a(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>qf(r.shape,e,a,i,o,l),filter:()=>bm(r,e,a.shape,i,o,l)}}},bY={kernelName:fs,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>ra(e,a,s,i,o,1,l),filter:()=>bm(e,r,a.shape,s,i,o,l)}}};function vY(e,t,n,r,a){let s=e;e.rank===4&&(s=G(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:r,pad:a,filterShape:n};return $.runKernel(Eh,o,l)}var kY=O({conv3DBackpropFilter_:vY}),NY={kernelName:du,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s}=n;F($a(r),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);let[i,o]=t;return{x:()=>Y5(i.shape,e,o,a,s),filter:()=>kY(i,e,o.shape,a,s)}}},IY={kernelName:ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(vt(Ed(me(n,"float32"))),e)}}},SY={kernelName:so,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Rd(me(n,"float32")),e)}}},TY={kernelName:As,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a,exclusive:s,reverse:i}=n;return{x:()=>{let o=lx([a],r.rank),l=yd(e,a,s,!i);return o!=null&&(l=at(l,o)),l}}}},CY={kernelName:ys,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s,dimRoundingMode:i}=n,o=r==null?[1,1]:r;F($a(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,u]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),F(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),F(Mr(a,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${o}'.`),i!=null&&F(jt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>vx(l.shape,e,u,a,s,r,i),filter:()=>bx(l,e,u.shape,a,s,r,i)}}},EY={kernelName:pu,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,s={x:r,filter:a,dy:e},i={x:r,filter:a,dy:e};return{x:()=>$.runKernel(Oh,s,n),filter:()=>$.runKernel(zh,i,n)}}},RY={kernelName:lo,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,r={dy:e,y:n};return{x:()=>$.runKernel(Ph,r)}}},FY={kernelName:uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(qn(vt(lt(n))),2/Math.sqrt(Math.PI));return{x:()=>P(e,r)}}},MY={kernelName:xs,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,n)}}},$Y={kernelName:ho,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>G(e,n.shape)}}},DY={kernelName:po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,qn(n))}}},OY={kernelName:ws,gradFunc:e=>({x:()=>He(e)})},zY={kernelName:_s,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},PY={kernelName:bs,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:r}=n,[a,s,i,o]=t,l=o==null?be(1):o,u=Pt(s.shape,a.shape),c=[];if(s.rank===1){for(let m=0;ms.rank===1?G(P(P(e,Oa(G(p,[1,1,1,s.shape[0]]),c)),l),a.shape):G(P(P(e,p),l),a.shape),mean:()=>{let m=P(P(p,be(-1)),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},variance:()=>{let m=P(P(f,h),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},scale:()=>{let m=P(h,p),A=P(e,m);return s.rank===1&&(A=Te(A,u)),G(A,s.shape)},offset:()=>{let m=e;return s.rank===1&&(m=Te(m,u)),G(m,s.shape)}}}},LY={kernelName:mo,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[r,a]=t,{axis:s}=n,i=nr(s,r.shape)[0];return{x:()=>{let o=r.shape,l=a.size,u=o.slice(0,i),c=u.length,h=o.slice(s,o.length).slice(1),d=h.length,p=v3(0,c),f=v3(c+1,c+1+d),m=k3([u,[l],h]),A=G(e,m),y=G(a,[l]),g=k3([[c],p,f]),_=at(A,g),b=gm(_,y,r.shape[i]),w=rm(g);return b=at(b,w),b},indices:()=>a}}};function v3(e,t){let n=[];for(let r=e;r{let[n,r]=t;return{a:()=>He(n),b:()=>He(r)}}},BY={kernelName:ks,gradFunc:e=>({x:()=>me(e,"float32")})},VY={kernelName:go,gradFunc:e=>({x:()=>He(e)})},UY={kernelName:xo,gradFunc:e=>({x:()=>He(e)})},HY={kernelName:wo,gradFunc:e=>({x:()=>He(e)})},jY={kernelName:Ns,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{alpha:a}=n,s=ar(r,0);return{x:()=>kn(s,e,P(e,a))}}},GY={kernelName:vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(n,1))}}},qY={kernelName:Is,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,me(n,"float32"))}}},XY={kernelName:Xg,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n;return{logits:()=>{let s=!0,i=qn(r);return ye(e,P(Te(e,a,s),i))}}}};function KY(e,t,n,r=5,a=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:r,bias:a,alpha:s,beta:i};return $.runKernel(Uh,o,l)}var ZY=O({localResponseNormalizationBackprop_:KY}),YY={kernelName:yu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>ZY(r,a,e,s,i,o,l)}}};function N3(e,t,n,r){return t.rankP(e,me(Da(n,t),e.dtype))}}var I3={kernelName:Ss,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{reductionIndices:a}=r,s=t[0],i=t[1],o=nr(a,s.shape),l=N3(e,i,s,o);return{x:()=>l.x()}}},JY={kernelName:Ts,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(za(n,r),"float32")),b:()=>P(e,me(xd(n,r),"float32"))}}};function QY(e,t,n,r,a,s,i){let o=E(e,"dy","maxPool3dGrad"),l=E(t,"input","maxPool3dGrad"),u=E(n,"output","maxPool3dGrad"),c=o,h=l,d=u,p=!1;l.rank===4&&(p=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),h=G(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=G(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(c.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let f={dy:c,input:h,output:d},m={filterSize:r,strides:a,pad:s,dimRoundingMode:i},A=$.runKernel(jh,f,m);return p?G(A,[A.shape[1],A.shape[2],A.shape[3],A.shape[4]]):A}var eJ=O({maxPool3dGrad_:QY}),tJ={kernelName:gu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=n;return{x:()=>eJ(e,r,a,s,i,o,l)}}};function nJ(e,t,n,r,a,s,i){let o=E(e,"dy","maxPoolGrad"),l=E(t,"input","maxPoolGrad"),u=E(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let c={dy:o,input:l,output:u},h={filterSize:r,strides:a,pad:s,dimRoundingMode:i};return $.runKernel(Hh,c,h)}var rJ=O({maxPoolGrad_:nJ}),aJ={kernelName:Cs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>rJ(e,r,a,s,i,o)}}},sJ={kernelName:Es,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n,s=nr(a,r.shape),i=ox(r.shape,s)[1],o=Dt(i);return{x:()=>{let l=r.shape.slice();s.forEach(c=>{l[c]=1});let u=G(e,l);return ge(P(u,Or(r.shape,"float32")),o)}}}},iJ={kernelName:Rs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{axis:a}=r,[s,i]=t,o=nr(a,s.shape),l=N3(e,i,s,o);return{x:()=>l.x()}}},oJ={kernelName:Fs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(ci(n,r),"float32")),b:()=>P(e,me(ar(n,r),"float32"))}}},lJ={kernelName:xu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},uJ={kernelName:No,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=Pt(n.shape,a);return s.length>0?G(Te(e,s),n.shape):e},b:()=>{let s=P(e,vt(hl(ge(n,r)))),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},cJ={kernelName:Ms,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=P(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},hJ={kernelName:Io,gradFunc:e=>({x:()=>vt(e)})},dJ={kernelName:$s,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>Et(n.shape,"float32")}}},pJ={kernelName:Ro,gradFunc:e=>({x:()=>He(e)})},fJ={kernelName:Fo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:r}=n;return ir(e,r).map(a=>()=>a)}},S3={kernelName:Ds,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},mJ={kernelName:Os,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,r,a]=t,s=n,i=r,o=yt(s.shape,i.shape);return{a:()=>{let l=me(i,"float32"),u=P(e,P(l,sa(s,ye(l,be(1))))),c=Pt(s.shape,o);return c.length>0&&(u=Te(u,c)),G(u,s.shape)},b:()=>{let l=ar(s,0),u=kn(l,Mn(s),He(s)),c=P(e,P(a,u)),h=Pt(i.shape,o);return h.length>0&&(c=Te(c,h)),G(c,i.shape)}}}},AJ={kernelName:zs,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,r]=t,a=ar(n,0);return{x:()=>kn(a,e,P(e,r)),alpha:()=>{let s=kn(a,He(e),P(e,n)),i=Pt(r.shape,e.shape);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},yJ={kernelName:gs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},gJ={kernelName:$o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,vt(lt(n)))}}},xJ={kernelName:Ws,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(ci(n,6),yl(n));return{x:()=>P(e,me(r,"float32"))}}},wJ={kernelName:Ps,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,me(yl(n),"float32"))}}},_J={kernelName:Do,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>G(e,n.shape)}}},bJ={kernelName:Ls,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Zh,a,n)}}},vJ={kernelName:_u,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Kh,a,n)}}},kJ={kernelName:Bs,gradFunc:(e,t,n)=>{let{dims:r}=n,a=nr(r,e.shape);return{x:()=>Dn(e,a)}}},NJ={kernelName:Vs,gradFunc:e=>({x:()=>He(e)})},IJ={kernelName:Us,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>vt(ge(e,P(sa(n,1.5),2)))}}},SJ={kernelName:zo,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>me(He(n),"float32"),t:()=>P(e,me(n,e.dtype)),e:()=>P(e,me(ju(n),e.dtype))}}},TJ={kernelName:Po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=ar(n,be(0)),a=be($x),s=be(Dx),i=P(e,s),o=P(P(e,a),qn(me(n,"float32")));return kn(r,i,o)}}}},CJ={kernelName:js,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(n,ye(be(1),n)))}}},EJ={kernelName:Bo,gradFunc:e=>({x:()=>He(e)})},RJ={kernelName:Hs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Vu(me(n,"float32")),e)}}},FJ={kernelName:Wo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Ad(me(n,"float32")),e)}}},MJ={kernelName:Lo,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{begin:a,size:s}=n,i=r.shape,[o,l]=M5(r,a,s),u=[];for(let c=0;caa(e,u)}}},$J={kernelName:Xs,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{dim:a}=n,s=!0,i=P(e,r);return{logits:()=>ye(i,P(Te(i,[a],s),r))}}},DJ={kernelName:Vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Fn(n))}}},T3={kernelName:bu,gradFunc:(e,t,n)=>{let{blockShape:r,paddings:a}=n;return{x:()=>Wu(e,r,a)}}},C3={kernelName:Uo,gradFunc:(e,t,n)=>{let{axis:r}=n;return{x:()=>st(e,r)}}},OJ={kernelName:Gs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,P(en(me(n,"float32")),2))}}},zJ={kernelName:vu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(me(n,"float32"),2))}}},PJ={kernelName:Ks,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=be(2);return{a:()=>P(e,P(a,ye(n,r))),b:()=>P(e,P(a,ye(r,n)))}}},LJ={kernelName:Ta,gradFunc:e=>({x:()=>He(e)})},WJ={kernelName:Zs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(vt(s),r.shape)}}}},BJ={kernelName:qs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,a=r.shape.slice(),{axis:s}=n;nr(s,r.shape).forEach(l=>{a[l]=1});let i=G(e,a),o=P(i,Or(r.shape,"float32"));return{x:()=>o}}},VJ={kernelName:jo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,lt(Vu(n)))}}},UJ={kernelName:Ys,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(ye(be(1),lt(n)),e)}}},HJ={kernelName:Sa,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{reps:a}=n;return{x:()=>{let s=He(r);if(r.rank===1)for(let i=0;i{let r=n,{perm:a}=r,s=rm(a);return{x:()=>at(e,s)}}},GJ={kernelName:qo,gradFunc:(e,t,n)=>{let r=n,{axis:a}=r;return{value:()=>dn(e,a)}}},XJ={kernelName:ku,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>qJ(e,n)}}};function qJ(e,t){let n=Dr(t,He(t)),r=ui(e,n),a=za(t,be(0,"int32")),s=r.rank-a.rank;for(let o=0;o({x:()=>He(e)})},ZJ=[b3,ZZ,YZ,JZ,QZ,eY,tY,nY,rY,aY,sY,iY,uY,dY,pY,fY,mY,AY,yY,gY,xY,wY,bY,_Y,NY,IY,SY,TY,CY,EY,yJ,RY,FY,MY,$Y,DY,zY,OY,PY,LY,WY,BY,VY,UY,HY,jY,GY,qY,XY,YY,I3,I3,JY,tJ,aJ,sJ,iJ,oJ,lJ,uJ,cJ,hJ,dJ,pJ,fJ,S3,S3,mJ,AJ,gJ,xJ,wJ,_J,bJ,vJ,kJ,NJ,IJ,SJ,TJ,CJ,EJ,RJ,FJ,MJ,$J,DJ,T3,T3,C3,C3,OJ,PJ,zJ,LJ,WJ,BJ,VJ,UJ,HJ,jJ,GJ,XJ,KJ];for(let e of ZJ)Kg(e);var E3={};ze(E3,{maxNorm:()=>YJ,minMaxNorm:()=>eQ,nonNeg:()=>QJ,unitNorm:()=>JJ});var hA;function Wt(){return hA==null&&(hA=W5().epsilon()),hA}function _r(){return"channelsLast"}var ua=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ua.prototype)}},br=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,br.prototype)}},V=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,V.prototype)}},De=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,De.prototype)}},R3=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,R3.prototype)}};function vi(e,t){if(Array.isArray(e)){let n=[];for(let r=0;rn.toUpperCase())}var lr={};function dA(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function pA(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>pA(t));else{let t=Object.keys(e);for(let n of t){let r=e[n];r!=null&&typeof r=="object"&&(!Array.isArray(r)&&r.type==="ndarray"&&typeof r.value=="number"?e[n]=r.value:pA(r))}}}function gc(e,t={},n={},r="object",a=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in lr)i=lr[s];else if(i=t[s],i==null)throw new V(`Unknown ${r}: ${e}. This may be due to one of the following reasons: + `}};function eq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a,segmentIds:s}=t,{numSegments:i}=r,o=a.shape.length,l=[],u=0,c=R.getAxesPermutation([u],o),h=a;c!=null&&(h=In({inputs:{x:a},backend:n,attrs:{perm:c}}),l.push(h),u=R.getInnerMostAxes(1,o)[0]);let d=R.segment_util.computeOutShape(h.shape,u,i),p=v.sizeFromShape([h.shape[u]]),f=Ae({inputs:{x:h},backend:n,attrs:{shape:[-1,p]}});l.push(f);let m=sd(a.dtype),A=(b,w,x,I,S)=>{let T=b.shape[0],M=b.shape[1],D=R.segment_util.segOpComputeOptimalWindowSize(M,S),z={windowSize:D,inSize:M,batchSize:T,numSegments:S},W=new QG(z,w),U=n.compileAndRun(W,[b,x],I);if(l.push(U),U.shape[1]===S)return U;let H=Nb({backend:n,attrs:{start:0,stop:S,step:1,dtype:"float32"}}),X=Tb({inputs:{x:H},backend:n,attrs:{reps:[M/D]}});return l.push(H),l.push(X),A(U,w,X,I,S)},y=A(f,"unsortedSegmentSum",s,m,i),g=Ae({inputs:{x:y},backend:n,attrs:{shape:d}}),_=g;if(c!=null){l.push(g);let b=R.getUndoAxesPermutation(c);_=In({inputs:{x:_},backend:n,attrs:{perm:b}})}return l.forEach(b=>n.disposeIntermediateTensorInfo(b)),_}var tq={kernelName:ku,backendName:"webgl",kernelFunc:eq},nq=[jU,XU,ML,DL,PL,BL,UL,GL,XL,ZL,eW,nW,sW,lW,mW,hW,gW,bW,wW,IW,TW,EW,$W,BW,UW,KW,YW,tB,aB,fL,lB,gB,wB,dB,kB,IB,bB,CB,FB,DB,zB,LB,VB,XB,ZB,HB,QB,nV,iV,cV,fV,yV,gV,xV,_V,vV,NV,SV,CV,MV,zV,LV,BV,HV,XV,JV,nU,pL,aU,oB,oU,cU,pU,AL,yU,_U,vU,EU,SU,$U,zU,BU,ZU,aH,nH,lH,cH,dH,eH,fH,AH,wH,kH,TH,OH,_L,PH,BH,HH,qH,jW,ZH,JH,ej,rj,oj,gL,uj,cj,GW,FH,pj,_j,yj,vL,Nj,Tj,Rj,$j,Pj,Wj,Uj,Gj,Xj,Yj,eG,rG,iG,uG,dG,LW,$H,mG,yG,xG,_G,kG,SG,CG,RG,$G,MH,EL,zG,WG,UG,jG,XG,RL,ZG,JG,tq,YH];for(let e of nq)ni(e);var Pn;(function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"})(Pn||(Pn={}));var fc;(function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu",e[e.leakyrelu=4]="leakyrelu"})(fc||(fc={}));var Cb;function rq(e){Cb=e.wasm.cwrap(Qs,null,["number","array","number","number","array","number","number","number","number","number","number","number","number"])}function aq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s,bias:i,preluActivationWeights:o}=t;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");let{transposeA:l,transposeB:u,activation:c,leakyreluAlpha:h}=r,d=n.dataIdMap.get(a.dataId).id,p=n.dataIdMap.get(s.dataId).id,f=0;if(i!=null){let S=n.dataIdMap.get(i.dataId);if(S.shape.length!==1)throw new Error(`_FusedMatMul only supports rank-1 bias but got rank ${S.shape.length}.`);f=S.id}let m=o==null?0:n.dataIdMap.get(o.dataId).id,A=fc[c];if(A==null)throw new Error(`${c} activation not yet supported for FusedConv2D in the wasm backend.`);let y=l?a.shape[2]:a.shape[1],g=u?s.shape[1]:s.shape[2],_=a.shape[0],b=n.makeOutput([_,y,g],a.dtype),w=n.dataIdMap.get(b.dataId).id,x=new Uint8Array(new Int32Array(a.shape).buffer),I=new Uint8Array(new Int32Array(s.shape).buffer);return Cb(d,x,a.shape.length,p,I,s.shape.length,l,u,A,f,m,h||0,w),b}var sq={kernelName:Qs,backendName:"wasm",setupFunc:rq,kernelFunc:aq};function Sn(e){let t;function n(a){t=a.wasm.cwrap(e,null,["number","number"])}function r(a){let{backend:s,inputs:{x:i}}=a,o=s.dataIdMap.get(i.dataId).id,l=s.makeOutput(i.shape,i.dtype),u=s.dataIdMap.get(l.dataId).id;return v.sizeFromShape(l.shape)===0||t(o,u),l}return{kernelName:e,backendName:"wasm",setupFunc:n,kernelFunc:r}}var iq=Sn(Zi);function An(e,t,n){let r;function a(i){r=i.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])}function s(i){let{backend:o,inputs:l}=i,{a:u,b:c}=l,h=o.dataIdMap.get(u.dataId).id,d=o.dataIdMap.get(c.dataId).id,p=n!=null?n:u.dtype,f=R.assertAndGetBroadcastShape(u.shape,c.shape),m=o.makeOutput(f,p);if(v.sizeFromShape(f)===0)return m;let A=new Uint8Array(new Int32Array(u.shape).buffer),y=new Uint8Array(new Int32Array(c.shape).buffer),g=o.dataIdMap.get(m.dataId).id,_=()=>r(h,A,u.shape.length,d,y,c.shape.length,Pn[u.dtype],g);if(t&&u.dtype==="float32")return _(),m;let b=R.getBroadcastDims(u.shape,f),w=R.getBroadcastDims(c.shape,f),x=b.every((S,T)=>S===T),I=w.every((S,T)=>S===T);if(x&&I)return _(),m;throw new Error(`Broadcasting along outer dims is not yet supported for ${u.dtype} ${e}.`)}return{kernelName:e,backendName:"wasm",setupFunc:a,kernelFunc:s}}var oq=!0,lq=An(Na,oq),Eb;function uq(e){Eb=e.wasm.cwrap(os,null,["array","number","number","number"])}function cq(e){let{inputs:t,backend:n}=e,r=n.makeOutput(t[0].shape,t[0].dtype);if(v.sizeFromShape(r.shape)===0)return r;let a=t.map(o=>n.dataIdMap.get(o.dataId).id),s=new Uint8Array(new Int32Array(a).buffer),i=n.dataIdMap.get(r.dataId).id;return Eb(s,a.length,Pn[r.dtype],i),r}var hq={kernelName:os,backendName:"wasm",setupFunc:uq,kernelFunc:cq};function xp(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype),a=n.typedArrayFromHeap(t);return n.typedArrayFromHeap(r).set(a),r}var dq={kernelName:ks,backendName:"wasm",kernelFunc:xp},Rb;function pq(e){Rb=e.wasm.cwrap(Js,null,["number","array","number","number","number","array","number"])}function wp(e){let{inputs:t,backend:n,attrs:r}=e,[a,s]=mq(t.x.shape,r.perm),i=!0;for(let f=0;f=a&&(s===-1||r[s]>r[i])&&(s=i);r[s]=a}return[n,r]}var Aq={kernelName:Js,backendName:"wasm",kernelFunc:wp,setupFunc:pq};function $l(e,t,n){let r=e.shape,a=e.shape.length,s=v.parseAxisParam(t,r),i=s,o=R.getAxesPermutation(i,a),l=null,u=!1;if(o!=null){let c=new Array(a);for(let d=0;d`new shape: ${i}, old shape: ${r.shape}. New shape and old shape must have the same number of elements.`),e.backend.incRef(r.dataId),{dataId:r.dataId,shape:i,dtype:r.dtype}}var vq={kernelName:Do,backendName:"wasm",kernelFunc:wr},$b;function kq(e){$b=e.wasm.cwrap(cs,null,["number","array","number","number","array","number","number","number","number"])}function Nq(e){let{inputs:t,backend:n,attrs:r}=e,{a,b:s}=t,{transposeA:i,transposeB:o}=r;if(a.dtype!=="float32"||s.dtype!=="float32")throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");let l=a.shape.length,u=s.shape.length,c=i?a.shape[l-2]:a.shape[l-1],h=o?s.shape[u-1]:s.shape[u-2],d=i?a.shape[l-1]:a.shape[l-2],p=o?s.shape[u-2]:s.shape[u-1],f=a.shape.slice(0,-2),m=s.shape.slice(0,-2),A=v.sizeFromShape(f),y=v.sizeFromShape(m),g=A===y||A===1||y===1;v.assert(l>=2&&u>=2&&g,()=>`Error in matMul: the input batch dimensions must either be the same or at least one input batch dimension must be 1. Got input batch dimensions of (${f}) and (${m}).`);let _=(A>y?a.shape.slice(0,-2):s.shape.slice(0,-2)).concat([d,p]);v.assert(c===h,()=>`Error in matMul: inner shapes (${c}) and (${h}) of Tensors with shapes ${a.shape} and ${s.shape} and transposeA=${i} and transposeB=${o} must match.`);let b=i?[A,c,d]:[A,d,c],w=o?[y,p,h]:[y,h,p],x=wr({inputs:{x:a},backend:n,attrs:{shape:b}}),I=wr({inputs:{x:s},backend:n,attrs:{shape:w}}),S=n.dataIdMap.get(x.dataId).id,T=n.dataIdMap.get(I.dataId).id,M=i?x.shape[2]:x.shape[1],D=o?I.shape[1]:I.shape[2],z=Math.max(A,y),W=n.makeOutput([z,M,D],x.dtype),U=n.dataIdMap.get(W.dataId).id,H=new Uint8Array(new Int32Array(x.shape).buffer),X=new Uint8Array(new Int32Array(I.shape).buffer);return $b(S,H,x.shape.length,T,X,I.shape.length,i,o,U),n.disposeData(x.dataId),n.disposeData(I.dataId),W.shape=_,W}var Iq={kernelName:cs,backendName:"wasm",setupFunc:kq,kernelFunc:Nq};function _p(e){let{inputs:{x:t},attrs:{dtype:n},backend:r}=e,a=r.makeOutput(t.shape,n),s=r.typedArrayFromHeap(t);return r.typedArrayFromHeap(a).set(s),a}var Sq={kernelName:hs,backendName:"wasm",kernelFunc:_p},Tq=Sn(ds),Db;function Cq(e){Db=e.wasm.cwrap(Ia,null,["number","number","number","number"])}function Eq(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{clipValueMin:s,clipValueMax:i}=r,o=n.dataIdMap.get(a.dataId).id,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(l.dataId).id;return Db(o,s,i,u),l}var Rq={kernelName:Ia,backendName:"wasm",setupFunc:Cq,kernelFunc:Eq};function Ob(e){let{inputs:t,backend:n}=e,r=v.parseAxisParam(e.attrs.axis,t[0].shape)[0],a=R.computeOutShape(t.map(p=>p.shape),r),s=t.filter(p=>v.sizeFromShape(p.shape)>0);if(s.length===1)return xp({inputs:{x:s[0]},backend:n});let i=n.makeOutput(a,t[0].dtype);if(v.sizeFromShape(a)===0)return i;let o=s.map(p=>p.shape);if(R.assertParamsConsistent(o,r),s[0].dtype==="string"){let p=s.map(_=>{let b=v.sizeFromShape(_.shape.slice(r));return wr({inputs:{x:_},backend:n,attrs:{shape:[-1,b]}})}),f=p.map(_=>({vals:n.readSync(_.dataId),shape:_.shape}));a=R.computeOutShape(p.map(_=>_.shape),1);let m=p[0].shape[0]===1,A=Sm(f,a,t[0].dtype,m),y=R.computeOutShape(s.map(_=>_.shape),r);i.shape=y;let g=n.dataIdMap.get(i.dataId);return g.stringBytes=R.fromStringArrayToUint8(A),p.forEach(_=>n.disposeData(_.dataId)),i}let l=v.sizeFromShape(s[0].shape.slice(0,r)),u=0,c=s.map(p=>{let f=v.sizeFromShape(p.shape.slice(r));return u+=f,f}),h=s.map(p=>n.typedArrayFromHeap(p)),d=n.typedArrayFromHeap(i);for(let p=0;p`cumsum does not support ${a.dtype} tensors in the WASM backend`);let u=R.getAxesPermutation([s],l),c=a;u!==null&&(c=wp({inputs:{x:a},attrs:{perm:u},backend:n}));let h=R.getInnerMostAxes(1,l)[0];R.assertAxesAreInnerMostDims("cumsum",[h],l);let d=n.makeOutput(c.shape,c.dtype),p=c.shape[h],f=n.dataIdMap.get(c.dataId).id,m=n.dataIdMap.get(d.dataId).id;Wb(f,i?1:0,o?1:0,p,m,Pn[a.dtype]);let A=d;if(u!==null){let y=R.getUndoAxesPermutation(u);A=wp({inputs:{x:d},attrs:{perm:y},backend:n}),n.disposeData(c.dataId),n.disposeData(d.dataId)}return A}var jq={kernelName:As,backendName:"wasm",setupFunc:Uq,kernelFunc:Hq},Bb;function Gq(e){Bb=e.wasm.cwrap(oo,null,["number","number","number","array","number","array","array","number","number"])}function qq(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{blockSize:s,dataFormat:i}=r;v.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);let o=a.shape[0],l=i==="NHWC"?a.shape[1]:a.shape[2],u=i==="NHWC"?a.shape[2]:a.shape[3],c=i==="NHWC"?a.shape[3]:a.shape[1],h=l*s,d=u*s,p=c/(s*s),f=i==="NHWC"?[o,h,d,p]:[o,p,h,d],m=t.makeOutput(f,"float32"),A=t.dataIdMap.get(a.dataId).id,y=new Uint8Array(new Int32Array(v.computeStrides(a.shape)).buffer),g=new Uint8Array(new Int32Array(f).buffer),_=new Uint8Array(new Int32Array(v.computeStrides(f)).buffer),b=t.dataIdMap.get(m.dataId).id;return Bb(A,s,i==="NHWC"?1:0,y,a.shape.length-1,g,_,f.length,b),m}var Xq={kernelName:oo,backendName:"wasm",setupFunc:Gq,kernelFunc:qq},Vb;function Kq(e){Vb=e.wasm.cwrap(ys,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function Zq(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s}=t,i=r.dataIdMap.get(a.dataId).id,o=r.dataIdMap.get(s.dataId).id,{strides:l,dilations:u,pad:c,dimRoundingMode:h}=n,d=u==null?[1,1]:u,p=R.computeConv2DInfo(a.shape,s.shape,l,d,c,h,!0),f=p.filterHeight,m=p.filterWidth,A=p.padInfo.top,y=p.padInfo.right,g=p.padInfo.bottom,_=p.padInfo.left,b=p.dilationHeight,w=p.dilationWidth,x=p.strideHeight,I=p.strideWidth,S=p.inChannels,T=p.outChannels,M=p.padInfo.type==="SAME"?1:0;if(p.dataFormat!=="channelsLast")throw new Error(`wasm backend DepthwiseConv2dNative does not support dataFormat:'${p.dataFormat}'. Please use 'channelsLast'.`);let D=r.makeOutput(p.outShape,"float32"),z=r.dataIdMap.get(D.dataId).id;return Vb(i,a.shape[0],a.shape[1],a.shape[2],o,f,m,A,y,g,_,M,b,w,x,I,S,T,z),D}var Yq={kernelName:ys,backendName:"wasm",setupFunc:Kq,kernelFunc:Zq},Jq=!1,Qq=An(co,Jq,"bool"),eX=Sn(xs);function oA(e){let{inputs:t,attrs:n,backend:r}=e,{input:a}=t,{dim:s}=n,i=a.shape.length,o=a.shape.slice(),l=s;return s<0&&(v.assert(-(i+1)<=s,()=>`Axis must be in the interval [${-(i+1)}, ${i}]`),l=i+s+1),o.splice(l,0,1),wr({inputs:{x:a},backend:r,attrs:{shape:o}})}var tX={kernelName:ho,backendName:"wasm",kernelFunc:oA};function nX(e){let{attrs:{shape:t,value:n,dtype:r},backend:a}=e,s=a.makeOutput(t,r);return a.typedArrayFromHeap(s).fill(n),s}var rX={kernelName:fu,backendName:"wasm",kernelFunc:nX},Ub;function aX(e){Ub=e.wasm.cwrap(fo,null,["number","number","number","number","number","number"])}function sX(e){let{inputs:t,backend:n}=e,{image:r}=t,a=n.makeOutput(r.shape,r.dtype),s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,[o,l,u,c]=r.shape;return Ub(s,o,l,u,c,i),a}var iX={kernelName:fo,backendName:"wasm",kernelFunc:sX,setupFunc:aX},oX=Sn(ws),lX=!1,uX=An(_s,lX),Hb;function cX(e){Hb=e.wasm.cwrap(bs,null,["number","number","number","number","number","number","number"])}function hX(e){let{backend:t,inputs:n,attrs:r}=e,{varianceEpsilon:a}=r,{x:s,mean:i,variance:o,offset:l,scale:u}=n,c=t.dataIdMap.get(s.dataId).id,h=t.dataIdMap.get(i.dataId).id,d=t.dataIdMap.get(o.dataId).id,p=l!=null?t.dataIdMap.get(l.dataId).id:0,f=u!=null?t.dataIdMap.get(u.dataId).id:0,m=t.makeOutput(s.shape,s.dtype);if(v.sizeFromShape(s.shape)===0)return m;let A=t.dataIdMap.get(m.dataId).id;return Hb(c,h,d,p,f,a,A),m}var dX={kernelName:bs,backendName:"wasm",setupFunc:cX,kernelFunc:hX},jb;function pX(e){jb=e.wasm.cwrap(ei,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function fX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return jb(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var mX={kernelName:ei,backendName:"wasm",setupFunc:pX,kernelFunc:fX},Gb;function AX(e){Gb=e.wasm.cwrap(ti,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function yX(e){let{inputs:t,attrs:n,backend:r}=e,{x:a,filter:s,bias:i,preluActivationWeights:o}=t,{strides:l,pad:u,dilations:c,dataFormat:h,dimRoundingMode:d,activation:p,leakyreluAlpha:f}=n,m=R.computeConv2DInfo(a.shape,s.shape,l,c,u,d,!0),A=fc[p];if(A==null)throw new Error(`${p} activation not yet supported for FusedDepthwiseConv2D in the wasm backend.`);let y=r.dataIdMap.get(a.dataId).id,g=r.dataIdMap.get(s.dataId).id,_=m.outChannels,b=0;if(i!=null){let Q=r.dataIdMap.get(i.dataId);if(Q.shape.length!==1)throw new Error(`FusedDepthwiseConv2D only supports rank-1 bias but got rank ${Q.shape.length}.`);if(Q.shape[0]!==_)throw new Error(`FusedDepthwiseConv2D bias shape (${Q.shape}) does not match the number of output channels (${_})`);b=Q.id}let w=m.filterHeight,x=m.filterWidth,I=m.padInfo.top,S=m.padInfo.right,T=m.padInfo.bottom,M=m.padInfo.left,D=m.dilationHeight,z=m.dilationWidth,W=m.strideHeight,U=m.strideWidth,H=m.inChannels,X=m.padInfo.type==="SAME"?1:0,j=m.batchSize,ee=m.inHeight,Y=m.inWidth;if(h!=="NHWC")throw new Error(`wasm backend FusedDepthwiseConv2D does not support dataFormat:'${h}'. Please use 'NHWC'.`);let ae=r.makeOutput(m.outShape,"float32"),te=r.dataIdMap.get(ae.dataId).id,ie=o==null?0:r.dataIdMap.get(o.dataId).id;return Gb(y,j,ee,Y,g,w,x,b,I,S,T,M,X,D,z,W,U,H,_,A,ie,f||0,te),ae}var gX={kernelName:ti,backendName:"wasm",setupFunc:AX,kernelFunc:yX},qb;function xX(e){qb=e.wasm.cwrap(Ao,null,["number","number","number","number","number","number","array","number"])}function wX(e){let{backend:t,inputs:n}=e,{params:r,indices:a}=n,[s,i,o,l]=If.prepareAndValidate(r,a),u=t.makeOutput(s,r.dtype);if(i===0)return u;let c=a.shape,h=c[c.length-1],d=t.dataIdMap.get(r.dataId).id,p=t.dataIdMap.get(a.dataId).id,f=new Uint8Array(new Int32Array(l).buffer),m=t.dataIdMap.get(u.dataId).id;return qb(d,Pn[r.dtype],p,i,h,o,f,m),u}var _X={kernelName:Ao,backendName:"wasm",setupFunc:xX,kernelFunc:wX},Xb;function bX(e){Xb=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])}function vX(e){let{backend:t,inputs:n,attrs:r}=e,{x:a,indices:s}=n,{axis:i,batchDims:o}=r,l=v.parseAxisParam(i,a.shape)[0],u=R.segment_util.collectGatherOpShapeInfo(a,s,l,o),c=wr({inputs:{x:a},attrs:{shape:[u.batchSize,u.outerSize,u.dimSize,u.sliceSize]},backend:t}),h=v.sizeFromShape(s.shape),d=wr({inputs:{x:s},attrs:{shape:[u.batchSize,h/u.batchSize]},backend:t}),p=[u.batchSize,u.outerSize,h/u.batchSize,u.sliceSize],f=t.makeOutput(p,a.dtype);if(v.sizeFromShape(a.shape)===0)return f;let m=c.shape.length-1,A=t.dataIdMap.get(c.dataId).id,y=t.dataIdMap.get(d.dataId).id,g=t.dataIdMap.get(f.dataId).id,_=new Uint8Array(new Int32Array(v.computeStrides(c.shape)).buffer),b=new Uint8Array(new Int32Array(v.computeStrides(p)).buffer);return Xb(A,Pn[a.dtype],_,m,y,u.batchSize,b,g),t.disposeData(c.dataId),t.disposeData(d.dataId),f.shape=u.outputShape,f}var kX={kernelName:mo,backendName:"wasm",setupFunc:bX,kernelFunc:vX},NX=!1,IX=An(yo,NX,"bool"),SX=!1,TX=An(vs,SX,"bool"),Kb;function CX(e){Kb=e.wasm.cwrap(Ns,null,["number","number","number"])}function EX(e){let{inputs:{x:t},attrs:{alpha:n},backend:r}=e,a=r.dataIdMap.get(t.dataId).id,s=r.makeOutput(t.shape,t.dtype);if(v.sizeFromShape(t.shape)!==0){let i=r.dataIdMap.get(s.dataId).id;Kb(a,n,i)}return s}var RX={kernelName:Ns,backendName:"wasm",setupFunc:CX,kernelFunc:EX},FX=!1,MX=An(_o,FX,"bool"),$X=!1,DX=An(bo,$X,"bool"),OX=Sn(Is),zX=!1,PX=An(ko,zX,"bool"),Zb;function LX(e){Zb=e.wasm.cwrap(Ss,null,["number, number, number"])}function WX(e){let{backend:t,inputs:n,attrs:r}=e,{reductionIndices:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=i,{transposed:u,axes:c,originalAxes:h,inputWasTransposed:d}=$l(i,a,t);if(d){let g=t.dataIdMap.get(u.dataId).id;l=u,o=g}let p=l.shape.length;R.assertAxesAreInnerMostDims("max",c,p);let[f,m]=R.computeOutAndReduceShapes(l.shape,c),A=v.sizeFromShape(m),y=t.makeOutput(f,i.dtype);if(v.sizeFromShape(l.shape)!==0){let g=t.dataIdMap.get(y.dataId).id;Zb(o,A,g)}if(d&&t.disposeData(u.dataId),s){let g=R.expandShapeToKeepDim(y.shape,h);y.shape=g}return y}var BX={kernelName:Ss,backendName:"wasm",setupFunc:LX,kernelFunc:WX},VX=!1,UX=An(Ts,VX),Yb;function HX(e){Yb=e.wasm.cwrap(Cs,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])}function jX(e){let{inputs:t,attrs:n,backend:r}=e,a=t.x,s=r.dataIdMap.get(a.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:u}=n,c=R.computePool2DInfo(a.shape,i,o,1,l,u),h=c.filterHeight,d=c.filterWidth,p=c.padInfo.top,f=c.padInfo.right,m=c.padInfo.bottom,A=c.padInfo.left,y=c.dilationHeight,g=c.dilationWidth,_=c.strideHeight,b=c.strideWidth,w=c.inChannels,x=c.outChannels;if(c.dataFormat!=="channelsLast")throw new Error(`wasm backend does not support dataFormat:'${c.dataFormat}'. Please use 'channelsLast'.`);let I=r.makeOutput(c.outShape,"float32"),S=r.dataIdMap.get(I.dataId).id;return Yb(s,a.shape[0],a.shape[1],a.shape[2],h,d,p,f,m,A,y,g,_,b,w,x,S),I}var GX={kernelName:Cs,backendName:"wasm",setupFunc:HX,kernelFunc:jX},Jb;function qX(e){Jb=e.wasm.cwrap(Es,null,["number, number, number"])}function XX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let b=t.dataIdMap.get(c.dataId).id;b!==o&&(u=c,l=b,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("mean",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=u;u.dtype!=="float32"&&(g=_p({backend:t,inputs:{x:u},attrs:{dtype:"float32"}}),l=t.dataIdMap.get(g.dataId).id);let _=t.makeOutput(m,"float32");if(v.sizeFromShape(u.shape)!==0){let b=t.dataIdMap.get(_.dataId).id;Jb(l,y,b)}if(p&&t.disposeData(c.dataId),s){let b=R.expandShapeToKeepDim(_.shape,d);_.shape=b}return u.dtype!=="float32"&&t.disposeData(g.dataId),_}var KX={kernelName:Es,backendName:"wasm",setupFunc:qX,kernelFunc:XX},Qb;function ZX(e){Qb=e.wasm.cwrap(Rs,null,["number, number, number"])}function YX(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t);if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_)}let f=u.shape.length;R.assertAxesAreInnerMostDims("min",h,f);let[m,A]=R.computeOutAndReduceShapes(u.shape,h),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;Qb(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var JX={kernelName:Rs,backendName:"wasm",setupFunc:ZX,kernelFunc:YX},QX=!1,eK=An(Fs,QX),tK=!0,nK=An(Ms,tK),rK=Sn(Io);function lA(e,t){let n=new Int32Array(e.wasm.HEAPU8.buffer,t,4),r=n[0],a=n[1],s=n[2],i=n[3];return e.wasm._free(t),{pSelectedIndices:r,selectedSize:a,pSelectedScores:s,pValidOutputs:i}}var e3;function aK(e){e3=e.wasm.cwrap(To,"number",["number","number","number","number","number"])}function sK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i}=r,{boxes:o,scores:l}=n,u=t.dataIdMap.get(o.dataId).id,c=t.dataIdMap.get(l.dataId).id,h=e3(u,c,s,a,i),{pSelectedIndices:d,selectedSize:p,pSelectedScores:f,pValidOutputs:m}=lA(t,h);return t.wasm._free(f),t.wasm._free(m),t.makeOutput([p],"int32",d)}var iK={kernelName:To,backendName:"wasm",setupFunc:aK,kernelFunc:sK},t3;function oK(e){t3=e.wasm.cwrap(Co,"number",["number","number","number","number","number","bool"])}function lK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,padToMaxOutputSize:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=t3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(m);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([],"int32",A);return[y,g]}var uK={kernelName:Co,backendName:"wasm",setupFunc:oK,kernelFunc:lK},n3;function cK(e){n3=e.wasm.cwrap(Eo,"number",["number","number","number","number","number","number"])}function hK(e){let{backend:t,inputs:n,attrs:r}=e,{iouThreshold:a,maxOutputSize:s,scoreThreshold:i,softNmsSigma:o}=r,{boxes:l,scores:u}=n,c=t.dataIdMap.get(l.dataId).id,h=t.dataIdMap.get(u.dataId).id,d=n3(c,h,s,a,i,o),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:A}=lA(t,d);t.wasm._free(A);let y=t.makeOutput([f],"int32",p),g=t.makeOutput([f],"float32",m);return[y,g]}var dK={kernelName:Eo,backendName:"wasm",setupFunc:cK,kernelFunc:hK},pK=!1,fK=An(So,pK,"bool"),r3;function mK(e){r3=e.wasm.cwrap($s,null,["number","number","number","number","number"])}function AK(e){let{inputs:t,backend:n,attrs:r}=e,{indices:a}=t,{depth:s,onValue:i,offValue:o}=r,l=n.makeOutput([...a.shape,s],"int32"),u=n.dataIdMap.get(l.dataId).id,c=n.dataIdMap.get(a.dataId).id;return r3(c,s,i,o,u),l}var yK={kernelName:$s,backendName:"wasm",setupFunc:mK,kernelFunc:AK};function gK(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(1),r}var xK={kernelName:Ro,backendName:"wasm",kernelFunc:gK};function wK(e){let{inputs:t,backend:n,attrs:r}=e,{axis:a}=r;if(t.length===1)return oA({inputs:{input:t[0]},backend:n,attrs:{dim:a}});let s=t[0].shape,i=t[0].dtype;t.forEach(c=>{v.assertShapesMatch(s,c.shape,"All tensors passed to stack must have matching shapes"),v.assert(i===c.dtype,()=>"All tensors passed to stack must have matching dtypes")});let o=[],l=t.map(c=>{let h=oA({inputs:{input:c},backend:n,attrs:{dim:a}});return o.push(h),h}),u=Ob({inputs:l,backend:n,attrs:{axis:a}});return o.forEach(c=>n.disposeData(c.dataId)),u}var _K={kernelName:Fo,backendName:"wasm",kernelFunc:wK},a3;function bK(e){a3=e.wasm.cwrap(Ds,null,["number","array","number","number","array","array","number","number"])}function vK(e){let{inputs:{x:t},backend:n,attrs:{paddings:r,constantValue:a}}=e,s=r.map((f,m)=>f[0]+t.shape[m]+f[1]),i=n.dataIdMap.get(t.dataId).id,o=n.makeOutput(s,t.dtype),l=n.dataIdMap.get(o.dataId).id,u=new Uint8Array(new Int32Array(t.shape).buffer),c=r.map(f=>f[0]),h=r.map(f=>f[1]),d=new Uint8Array(new Int32Array(c).buffer),p=new Uint8Array(new Int32Array(h).buffer);return a3(i,u,t.shape.length,Pn[t.dtype],d,p,a,l),o}var kK={kernelName:Ds,backendName:"wasm",kernelFunc:vK,setupFunc:bK},NK=!1,IK=An(Os,NK),s3;function SK(e){s3=e.wasm.cwrap(zs,null,["number","number","number"])}function TK(e){let{inputs:t,backend:n}=e,{x:r,alpha:a}=t,s=n.dataIdMap.get(r.dataId).id,i=n.dataIdMap.get(a.dataId).id,o=n.makeOutput(r.shape,"float32"),l=n.dataIdMap.get(o.dataId).id;return s3(s,i,l),o}var CK={kernelName:zs,backendName:"wasm",setupFunc:SK,kernelFunc:TK},i3;function EK(e){i3=e.wasm.cwrap(Mo,null,["number","number","number","number"])}function RK(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("prod",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;i3(l,y,Pn[g.dtype],_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var FK={kernelName:Mo,backendName:"wasm",setupFunc:EK,kernelFunc:RK},MK=e=>{let{backend:t,attrs:n}=e,{start:r,stop:a,step:s,dtype:i}=n,o=Em(r,a,s,i),l=t.makeOutput([o.length],i);return t.typedArrayFromHeap(l).set(o),l},$K={kernelName:wu,backendName:"wasm",kernelFunc:MK},DK=!0,OK=An(gs,DK),zK=Sn(Ps),PK=Sn(Ws),o3;function LK(e){o3=e.wasm.cwrap(Ls,null,["number","number","number","number","number","number","number","number","number","number"])}function WK(e){let{backend:t,inputs:n,attrs:r}=e,{images:a}=n,{alignCorners:s,halfPixelCenters:i,size:o}=r,[l,u]=o,[c,h,d,p]=a.shape,f=[c,l,u,p],m=t.dataIdMap.get(a.dataId),A;m.dtype!=="float32"&&(A=_p({backend:t,inputs:{x:a},attrs:{dtype:"float32"}}),m=t.dataIdMap.get(A.dataId));let y=m.id,g=t.makeOutput(f,"float32");if(v.sizeFromShape(a.shape)===0)return g;let _=t.dataIdMap.get(g.dataId).id;return o3(y,c,h,d,p,l,u,s?1:0,i?1:0,_),A!=null&&t.disposeData(A.dataId),g}var BK={kernelName:Ls,backendName:"wasm",setupFunc:LK,kernelFunc:WK},l3;function VK(e){l3=e.wasm.cwrap(Bs,null,["number","array","number","array","number","number"])}function UK(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,{dims:s}=r,i=v.parseAxisParam(s,a.shape);if(a.shape.length===0)return xp({inputs:{x:a},backend:n});let o=n.makeOutput(a.shape,a.dtype),l=n.dataIdMap.get(a.dataId).id,u=n.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(i).buffer),h=new Uint8Array(new Int32Array(a.shape).buffer);l3(l,c,i.length,h,a.shape.length,u);let d=wr({inputs:{x:o},attrs:{shape:a.shape},backend:n});return n.disposeData(o.dataId),d}var HK={kernelName:Bs,backendName:"wasm",kernelFunc:UK,setupFunc:VK},u3;function jK(e){u3=e.wasm.cwrap(Ko,null,["number","number","number","number","number","number","number","number","array","number","number"])}function GK(e){let{inputs:t,backend:n,attrs:r}=e,{image:a}=t,{radians:s,fillValue:i,center:o}=r,l=n.makeOutput(a.shape,a.dtype),u=n.dataIdMap.get(a.dataId).id,c=n.dataIdMap.get(l.dataId).id,[h,d,p,f]=a.shape,[m,A]=R.getImageCenter(o,d,p),y=i===0,g=255,_=typeof i=="number"?[i,i,i,y?0:g]:[...i,g],b=new Uint8Array(new Int32Array(_).buffer);return u3(u,h,d,p,f,s,m,A,b,_.length,c),l}var qK={kernelName:Ko,backendName:"wasm",kernelFunc:GK,setupFunc:jK},XK=Sn(Vs),KK=Sn(Us),c3;function ZK(e){c3=e.wasm.cwrap(Oo,null,["number","number","number","number","number","number","array","number","number"])}function YK(e){let{backend:t,inputs:n,attrs:r}=e,{indices:a,updates:s}=n,{shape:i}=r,o=t.makeOutput(i,s.dtype);if(v.sizeFromShape(i)===0)return o;let{sliceRank:l,numUpdates:u,sliceSize:c,strides:h,outputSize:d}=Sf.calculateShapes(s,a,i),p=t.dataIdMap.get(a.dataId).id,f=t.dataIdMap.get(s.dataId).id,m=new Uint8Array(new Int32Array(h).buffer),A=t.dataIdMap.get(o.dataId).id;return c3(p,f,Pn[s.dtype],l,u,c,m,d,A),o}var JK={kernelName:Oo,backendName:"wasm",setupFunc:ZK,kernelFunc:YK},h3;function QK(e){h3=e.wasm.cwrap("SelectV2",null,["number","number","number","number","number"])}function eZ(e){let{inputs:t,backend:n}=e,{condition:r,t:a,e:s}=t,i=n.dataIdMap.get(r.dataId).id,o=n.dataIdMap.get(a.dataId).id,l=n.dataIdMap.get(s.dataId).id,u=n.makeOutput(a.shape,a.dtype),c=n.dataIdMap.get(u.dataId).id,h=r.shape.length,d=a.shape.length,p=h===0||h>1||d===1?1:v.sizeFromShape(a.shape.slice(1));return h3(i,o,l,p,c),u}var tZ={kernelName:zo,backendName:"wasm",kernelFunc:eZ,setupFunc:QK},d3;function nZ(e){d3=e.wasm.cwrap(js,null,["number","number"])}function rZ(e){let{backend:t,inputs:{x:n}}=e,r=t.dataIdMap.get(n.dataId).id,a=t.makeOutput(n.shape,n.dtype),s=t.dataIdMap.get(a.dataId).id;return v.sizeFromShape(a.shape)===0||d3(r,s),a}var aZ={kernelName:"Sigmoid",backendName:"wasm",setupFunc:nZ,kernelFunc:rZ},sZ=Sn(Hs);function bp(e){let{inputs:{x:t},attrs:{begin:n,size:r},backend:a}=e,[s,i]=cn.parseSliceParams(t,n,r),o=cn.isSliceContinous(t.shape,s,i),l=a.readSync(t.dataId),u=a.makeOutput(i,t.dtype),c=v.computeStrides(t.shape),h=a.dataIdMap.get(u.dataId);if(o){let f=cn.computeFlatOffset(s,c);return t.dtype==="string"?h.stringBytes=l.slice(f,f+v.sizeFromShape(i)):a.typedArrayFromHeap(u).set(l.subarray(f,f+v.sizeFromShape(i))),u}if(t.dtype==="string"){let f=Yd(l,s,i,t.shape,t.dtype);return h.stringBytes=f,u}let d=a.typedArrayFromHeap(u),p=t.shape.length;if(p===2)iZ(l,c[0],d,s,i);else if(p===3)oZ(l,c[0],c[1],d,s,i);else if(p===4)lZ(l,c[0],c[1],c[2],d,s,i);else{let f=Yd(l,s,i,t.shape,t.dtype);d.set(f)}return u}function iZ(e,t,n,r,a){let s=0,i=r[0],o=r[1],l=i+a[0];for(let u=i;u{let d=[...c];d[o]=h;let p=bp({inputs:{x:a},attrs:{begin:u,size:d},backend:r});return u[o]+=h,p})}var fZ={kernelName:Uo,backendName:"wasm",kernelFunc:pZ},mZ=Sn(Gs),AZ=Sn(vu),yZ=!0,gZ=An(Ks,yZ),f3;function xZ(e){f3=e.wasm.cwrap(Ta,null,["number","number","number"])}function wZ(e){let{backend:t,inputs:n,attrs:r}=e,{alpha:a}=r,{x:s}=n,i=t.dataIdMap.get(s.dataId).id,o=t.makeOutput(s.shape,s.dtype),l=t.dataIdMap.get(o.dataId).id;return f3(i,a,l),o}var _Z={kernelName:Ta,backendName:"wasm",setupFunc:xZ,kernelFunc:wZ},m3;function bZ(e){m3=e.wasm.cwrap(Ho,null,["number","array","number","array","array","array","array","array","number","number"])}function vZ(e){let{backend:t,inputs:n,attrs:r}=e,{x:a}=n,{begin:s,end:i,strides:o}=r;o==null&&(o=new Array(s.length));let{beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:h,shrinkAxisMask:d}=r,p=R.slice_util.maskToAxes(c);if(p.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(c!==0&&h!==0)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(c!==0&&d!==0)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");let f=a.shape.length-s.length,m=R.slice_util.maskToAxes(h),A=a.shape.slice();m.forEach(M=>{s[M]=0,i[M]=1,A.splice(M,0,1)});let y=wr({inputs:{x:a},attrs:{shape:A},backend:t}),{begin:g,end:_,strides:b}=R.slice_util.getNormalizedAxes(y.shape,p,f,s,i,o,l,u,c);s=g,i=_,o=b;let w=R.slice_util.maskToAxes(d);w.forEach(M=>{i[M]=s[M]+1,o[M]=1});let x=R.slice_util.computeOutShape(s,i,o),I=x.filter((M,D)=>w.indexOf(D)===-1);if(o.every(M=>M===1)){let M=bp({inputs:{x:y},attrs:{begin:s,size:x},backend:t});t.disposeData(y.dataId);let D=wr({inputs:{x:M},attrs:{shape:I},backend:t});return t.disposeData(M.dataId),D}let S=t.makeOutput(I,"float32");if(!I.some(M=>M===0)){let M=t.dataIdMap.get(y.dataId).id,D=new Uint8Array(new Int32Array(v.computeStrides(y.shape)).buffer),z=new Uint8Array(new Int32Array(s).buffer),W=new Uint8Array(new Int32Array(i).buffer),U=new Uint8Array(new Int32Array(o).buffer),H=new Uint8Array(new Int32Array(I).buffer),X=new Uint8Array(new Int32Array(v.computeStrides(I)).buffer),j=t.dataIdMap.get(S.dataId).id;m3(M,D,y.shape.length,z,W,U,H,X,I.length,j)}t.disposeData(y.dataId);let T=wr({inputs:{x:S},attrs:{shape:I},backend:t});return t.disposeData(S.dataId),T}var kZ={kernelName:Ho,backendName:"wasm",setupFunc:bZ,kernelFunc:vZ},NZ=!0,IZ=An(Zs,NZ),A3;function SZ(e){A3=e.wasm.cwrap(qs,null,["number, number, number"])}function TZ(e){let{backend:t,inputs:n,attrs:r}=e,{axis:a,keepDims:s}=r,{x:i}=n,o=t.dataIdMap.get(i.dataId).id,l=o,u=i,{transposed:c,axes:h,originalAxes:d,inputWasTransposed:p}=$l(i,a,t),f=h;if(p){let _=t.dataIdMap.get(c.dataId).id;_!==o&&(u=c,l=_,f=R.getInnerMostAxes(f.length,u.shape.length))}R.assertAxesAreInnerMostDims("sum",f,u.shape.length);let[m,A]=R.computeOutAndReduceShapes(u.shape,f),y=v.sizeFromShape(A),g=t.makeOutput(m,u.dtype);if(v.sizeFromShape(u.shape)!==0){let _=t.dataIdMap.get(g.dataId).id;A3(l,y,_)}if(p&&t.disposeData(c.dataId),s){let _=R.expandShapeToKeepDim(g.shape,d);g.shape=_}return g}var CZ={kernelName:qs,backendName:"wasm",setupFunc:SZ,kernelFunc:TZ},EZ=Sn(Ys),y3;function RZ(e){y3=e.wasm.cwrap(Sa,null,["number","array","number","array","number","number"])}function FZ(e){let{inputs:t,backend:n,attrs:r}=e,{x:a}=t,s=n.dataIdMap.get(a.dataId).id,{reps:i}=r,o=new Array(a.shape.length);for(let d=0;d{let{x:r}=e,{k:a,sorted:s}=n,i=t.dataIdMap.get(r.dataId).id,o=new Uint8Array(new Int32Array(r.shape).buffer),l=r.shape.slice();l[l.length-1]=a;let u=t.makeOutput(l,r.dtype),c=t.dataIdMap.get(u.dataId).id,h=t.makeOutput(l,"int32"),d=t.dataIdMap.get(h.dataId).id;return g3(i,o,r.shape.length,Pn[r.dtype],a,s,c,d),[u,h]},OZ={kernelName:Go,backendName:"wasm",setupFunc:$Z,kernelFunc:DZ};function zZ(e){let{inputs:t,backend:n,attrs:r}=e,{value:a}=t,{axis:s}=r;s<0&&(s+=a.shape.length);let i=a.shape[s],o=a.shape.length,l=new Array(o-1),u=0;for(let p=0;p({dataId:p,dtype:f,shape:l}))}var PZ={kernelName:qo,backendName:"wasm",kernelFunc:zZ};function LZ(e){let{inputs:{x:t},backend:n}=e,r=n.makeOutput(t.shape,t.dtype);return n.typedArrayFromHeap(r).fill(0),r}var WZ={kernelName:Xo,backendName:"wasm",kernelFunc:LZ},BZ=[iq,lq,hq,xq,bq,Iq,Sq,Tq,Rq,Fq,Dq,Pq,Lq,Vq,jq,Xq,Yq,Qq,eX,tX,rX,iX,oX,uX,sq,dX,mX,gX,_X,kX,IX,TX,dq,RX,MX,DX,OX,PX,BX,UX,GX,KX,JX,eK,nK,rK,iK,uK,dK,fK,yK,xK,_K,kK,IK,CK,FK,$K,OK,zK,PK,vq,BK,HK,qK,KK,XK,JK,tZ,aZ,sZ,uZ,dZ,fZ,mZ,AZ,gZ,_Z,kZ,IZ,CZ,EZ,MZ,OZ,Aq,PZ,WZ];for(let e of BZ)ni(e);var uA=J();uA.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11])));uA.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(uA.get("IS_NODE"))return!1;try{return new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch(e){return!1}});var x3=qi(q8()),VZ='var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:Module["_pthread_self"]()})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;Module["__emscripten_thread_init"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["invokeEntryPoint"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){if(ex instanceof Module["ExitStatus"]){if(Module["getNoExitRuntime"]()){}else{Module["PThread"].threadExit(ex.status)}}else{Module["PThread"].threadExit(-2);throw ex}}}}else if(e.data.cmd==="cancel"){if(Module["_pthread_self"]()){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(Module["_pthread_self"]()){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}',UZ=qi(X8()),w3=class extends su{constructor(e){super();this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new xh(this,Fr())}write(e,t,n){let r={id:this.dataIdNextNumber++};return this.move(r,e,t,n,1),r}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){let t=v.now();return e(),{kernelMs:v.now()-t}}move(e,t,n,r,a){let s=this.dataIdNextNumber++;if(r==="string"){let u=t;this.dataIdMap.set(e,{id:s,stringBytes:u,shape:n,dtype:r,memoryOffset:null,refCount:a});return}let i=v.sizeFromShape(n),o=i*v.bytesPerElement(r),l=this.wasm._malloc(o);this.dataIdMap.set(e,{id:s,memoryOffset:l,shape:n,dtype:r,refCount:a}),this.wasm.tfjs.registerTensor(s,i,l),t!=null&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,o),l)}async read(e){return this.readSync(e)}readSync(e){let{memoryOffset:t,dtype:n,shape:r,stringBytes:a}=this.dataIdMap.get(e);if(n==="string")return a;let s=this.wasm.HEAPU8.slice(t,t+v.sizeFromShape(r)*v.bytesPerElement(n));return HZ(s.buffer,n)}disposeData(e,t=!1){if(this.dataIdMap.has(e)){let n=this.dataIdMap.get(e);if(n.refCount--,!t&&n.refCount>0)return!1;this.wasm._free(n.memoryOffset),this.wasm.tfjs.disposeData(n.id),this.dataIdMap.delete(e)}return!0}refCount(e){return this.dataIdMap.has(e)?this.dataIdMap.get(e).refCount:0}incRef(e){let t=this.dataIdMap.get(e);t!=null&&t.refCount++}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,n){let r;if(n==null)r=this.write(null,e,t);else{let a=this.dataIdNextNumber++;r={id:a},this.dataIdMap.set(r,{id:a,memoryOffset:n,shape:e,dtype:t,refCount:1});let s=v.sizeFromShape(e);this.wasm.tfjs.registerTensor(a,s,n)}return{dataId:r,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:n}){let r=this.wasm.HEAPU8.buffer,{memoryOffset:a}=this.dataIdMap.get(n),s=v.sizeFromShape(e);switch(t){case"float32":return new Float32Array(r,a,s);case"int32":return new Int32Array(r,a,s);case"bool":return new Uint8Array(r,a,s);default:throw new Error(`Unknown dtype ${t}`)}}};function jZ(e){return(t,n)=>(v.fetch(e,{credentials:"same-origin"}).then(r=>{r.ok||t.env.a(`failed to load wasm binary file at '${e}'`),r.arrayBuffer().then(a=>{WebAssembly.instantiate(a,t).then(s=>{n(s.instance)})})}),{})}function _3(e,t,n){if(vp!=null)return vp;let r="tfjs-backend-wasm.wasm";return e&&t?r="tfjs-backend-wasm-threaded-simd.wasm":e&&(r="tfjs-backend-wasm-simd.wasm"),mc!=null&&mc[r]!=null?mc[r]:n+r}async function GZ(){let[e,t]=await Promise.all([J().getAsync("WASM_HAS_SIMD_SUPPORT"),J().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((n,r)=>{let a={};a.locateFile=(o,l)=>{if(o.endsWith(".worker.js")){let u=VZ,c=new Blob([u],{type:"application/javascript"});return URL.createObjectURL(c)}return o.endsWith(".wasm")?_3(e,t,Ac!=null?Ac:l):l+o},cA&&(a.instantiateWasm=jZ(_3(e,t,Ac!=null?Ac:"")));let s=!1;a.onAbort=()=>{s||yc||(yc=!0,r({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"}))};let i;t&&e&&vp==null?(a.mainScriptUrlOrBlob=new Blob(["var WasmBackendModuleThreadedSimd = "+x3.default.toString()],{type:"text/javascript"}),i=(0,x3.default)(a)):i=(0,UZ.default)(a),i.then(o=>{s=!0,yc=!1;let l=null;o.tfjs={init:o.cwrap("init",null,[]),registerTensor:o.cwrap("register_tensor",null,["number","number","number"]),disposeData:o.cwrap("dispose_data",l,["number"]),dispose:o.cwrap("dispose",l,[])},n({wasm:o})})})}function HZ(e,t){switch(t){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${t}`)}}var qZ=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"],vp=null,Ac=null,mc={},yc=!1,cA=!1;function XZ(e,t=!1){if(Mf("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");vp=e,cA=t}function KZ(e,t=!1){if(yc)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if(typeof e=="string")Ac=e;else{mc=e;let n=qZ.filter(r=>mc[r]==null);if(n.length>0)throw new Error(`There were no entries found for the following binaries: ${n.join(",")}. Please either call setWasmPaths with a map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.`)}cA=t}var b3="3.3.0",ZZ=2;sl("wasm",async()=>{let{wasm:e}=await GZ();return new w3(e)},ZZ);Z().prototype.abs=function(){return this.throwIfDisposed(),zt(this)};Z().prototype.acos=function(){return this.throwIfDisposed(),Df(this)};Z().prototype.acosh=function(){return this.throwIfDisposed(),Of(this)};Z().prototype.add=function(e){return this.throwIfDisposed(),se(this,e)};Z().prototype.all=function(e,t){return this.throwIfDisposed(),dd(this,e,t)};Z().prototype.any=function(e,t){return this.throwIfDisposed(),Ou(this,e,t)};Z().prototype.argMax=function(e){return this.throwIfDisposed(),zu(this,e)};Z().prototype.argMin=function(e){return this.throwIfDisposed(),zf(this,e)};Z().prototype.asScalar=function(){return this.throwIfDisposed(),F(this.size===1,()=>"The array must have only 1 element."),G(this,[])};Z().prototype.asType=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.as1D=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.as2D=function(e,t){return this.throwIfDisposed(),G(this,[e,t])};Z().prototype.as3D=function(e,t,n){return this.throwIfDisposed(),G(this,[e,t,n])};Z().prototype.as4D=function(e,t,n,r){return this.throwIfDisposed(),G(this,[e,t,n,r])};Z().prototype.as5D=function(e,t,n,r,a){return this.throwIfDisposed(),G(this,[e,t,n,r,a])};Z().prototype.asin=function(){return this.throwIfDisposed(),Pf(this)};Z().prototype.asinh=function(){return this.throwIfDisposed(),Lf(this)};Z().prototype.atan=function(){return this.throwIfDisposed(),Wf(this)};Z().prototype.atan2=function(e){return this.throwIfDisposed(),Bf(this,e)};Z().prototype.atanh=function(){return this.throwIfDisposed(),Vf(this)};Z().prototype.avgPool=function(e,t,n,r){return this.throwIfDisposed(),Lu(this,e,t,n,r)};Z().prototype.batchToSpaceND=function(e,t){return this.throwIfDisposed(),Wu(this,e,t)};Z().prototype.batchNorm=function(e,t,n,r,a){return this.throwIfDisposed(),li(this,e,t,n,r,a)};Z().prototype.broadcastTo=function(e){return this.throwIfDisposed(),Bu(this,e)};Z().prototype.cast=function(e){return this.throwIfDisposed(),me(this,e)};Z().prototype.ceil=function(){return this.throwIfDisposed(),Gf(this)};Z().prototype.clipByValue=function(e,t){return this.throwIfDisposed(),vn(this,e,t)};Z().prototype.concat=function(e,t){return this.throwIfDisposed(),e instanceof Ue&&(e=[e]),st([this,...e],t)};Z().prototype.conv1d=function(e,t,n,r,a,s){return this.throwIfDisposed(),fd(this,e,t,n,r,a,s)};Z().prototype.conv2dTranspose=function(e,t,n,r,a){return this.throwIfDisposed(),md(this,e,t,n,r,a)};Z().prototype.conv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ra(this,e,t,n,r,a,s)};Z().prototype.cos=function(){return this.throwIfDisposed(),Vu(this)};Z().prototype.cosh=function(){return this.throwIfDisposed(),Ad(this)};Z().prototype.cumsum=function(e,t,n){return this.throwIfDisposed(),yd(this,e,t,n)};Z().prototype.depthToSpace=function(e,t){return this.throwIfDisposed(),Kf(this,e,t)};Z().prototype.depthwiseConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),ul(this,e,t,n,r,a,s)};Z().prototype.dilation2d=function(e,t,n,r,a){return this.throwIfDisposed(),Zf(this,e,t,n,r,a)};Z().prototype.divNoNan=function(e){return this.throwIfDisposed(),Yf(this,e)};Z().prototype.div=function(e){return this.throwIfDisposed(),ge(this,e)};Z().prototype.dot=function(e){return this.throwIfDisposed(),ex(this,e)};Z().prototype.elu=function(){return this.throwIfDisposed(),cl(this)};Z().prototype.equal=function(e){return this.throwIfDisposed(),Da(this,e)};Z().prototype.erf=function(){return this.throwIfDisposed(),Jf(this)};Z().prototype.exp=function(){return this.throwIfDisposed(),qn(this)};Z().prototype.expandDims=function(e){return this.throwIfDisposed(),hn(this,e)};Z().prototype.expm1=function(){return this.throwIfDisposed(),Qf(this)};Z().prototype.fft=function(){return this.throwIfDisposed(),Ju(this)};Z().prototype.flatten=function(){return this.throwIfDisposed(),G(this,[this.size])};Z().prototype.floor=function(){return this.throwIfDisposed(),hl(this)};Z().prototype.floorDiv=function(e){return this.throwIfDisposed(),hd(this,e)};Z().prototype.gather=function(e,t){return this.throwIfDisposed(),ui(this,e,t)};Z().prototype.greaterEqual=function(e){return this.throwIfDisposed(),za(this,e)};Z().prototype.greater=function(e){return this.throwIfDisposed(),ar(this,e)};Z().prototype.ifft=function(){return this.throwIfDisposed(),Al(this)};Z().prototype.irfft=function(){return this.throwIfDisposed(),$d(this)};Z().prototype.isFinite=function(){return this.throwIfDisposed(),tx(this)};Z().prototype.isInf=function(){return this.throwIfDisposed(),nx(this)};Z().prototype.isNaN=function(){return this.throwIfDisposed(),rx(this)};Z().prototype.leakyRelu=function(e){return this.throwIfDisposed(),Hu(this,e)};Z().prototype.lessEqual=function(e){return this.throwIfDisposed(),ci(this,e)};Z().prototype.less=function(e){return this.throwIfDisposed(),xd(this,e)};Z().prototype.localResponseNormalization=function(e,t,n,r){return this.throwIfDisposed(),tm(this,e,t,n,r)};Z().prototype.logSigmoid=function(){return this.throwIfDisposed(),ix(this)};Z().prototype.logSoftmax=function(e){return this.throwIfDisposed(),bd(this,e)};Z().prototype.logSumExp=function(e,t){return this.throwIfDisposed(),am(this,e,t)};Z().prototype.log=function(){return this.throwIfDisposed(),Mn(this)};Z().prototype.log1p=function(){return this.throwIfDisposed(),wd(this)};Z().prototype.logicalAnd=function(e){return this.throwIfDisposed(),sr(this,e)};Z().prototype.logicalNot=function(){return this.throwIfDisposed(),ju(this)};Z().prototype.logicalOr=function(e){return this.throwIfDisposed(),vd(this,e)};Z().prototype.logicalXor=function(e){return this.throwIfDisposed(),cx(this,e)};Z().prototype.matMul=function(e,t,n){return this.throwIfDisposed(),Ge(this,e,t,n)};Z().prototype.maxPool=function(e,t,n,r){return this.throwIfDisposed(),Gu(this,e,t,n,r)};Z().prototype.max=function(e,t){return this.throwIfDisposed(),Xn(this,e,t)};Z().prototype.maximum=function(e){return this.throwIfDisposed(),Dr(this,e)};Z().prototype.mean=function(e,t){return this.throwIfDisposed(),kt(this,e,t)};Z().prototype.min=function(e,t){return this.throwIfDisposed(),pl(this,e,t)};Z().prototype.minimum=function(e){return this.throwIfDisposed(),fl(this,e)};Z().prototype.mirrorPad=function(e,t){return this.throwIfDisposed(),im(this,e,t)};Z().prototype.mod=function(e){return this.throwIfDisposed(),om(this,e)};Z().prototype.mul=function(e){return this.throwIfDisposed(),P(this,e)};Z().prototype.neg=function(){return this.throwIfDisposed(),vt(this)};Z().prototype.norm=function(e,t,n){return this.throwIfDisposed(),Pd(this,e,t,n)};Z().prototype.notEqual=function(e){return this.throwIfDisposed(),di(this,e)};Z().prototype.oneHot=function(e,t=1,n=0){return this.throwIfDisposed(),nl(this,e,t,n)};Z().prototype.onesLike=function(){return this.throwIfDisposed(),$n(this)};Z().prototype.pad=function(e,t){return this.throwIfDisposed(),aa(this,e,t)};Z().prototype.pool=function(e,t,n,r,a){return this.throwIfDisposed(),px(this,e,t,n,r,a)};Z().prototype.pow=function(e){return this.throwIfDisposed(),sa(this,e)};Z().prototype.prelu=function(e){return this.throwIfDisposed(),Xu(this,e)};Z().prototype.prod=function(e,t){return this.throwIfDisposed(),Nd(this,e,t)};Z().prototype.reciprocal=function(){return this.throwIfDisposed(),cm(this)};Z().prototype.relu=function(){return this.throwIfDisposed(),zr(this)};Z().prototype.relu6=function(){return this.throwIfDisposed(),Sd(this)};Z().prototype.reshapeAs=function(e){return this.throwIfDisposed(),G(this,e.shape)};Z().prototype.reshape=function(e){return this.throwIfDisposed(),G(this,e)};Z().prototype.resizeBilinear=function(e,t,n){return this.throwIfDisposed(),Rx(this,e,t,n)};Z().prototype.resizeNearestNeighbor=function(e,t,n){return this.throwIfDisposed(),Fx(this,e,t,n)};Z().prototype.reverse=function(e){return this.throwIfDisposed(),Dn(this,e)};Z().prototype.rfft=function(){return this.throwIfDisposed(),Qu(this)};Z().prototype.round=function(){return this.throwIfDisposed(),hm(this)};Z().prototype.rsqrt=function(){return this.throwIfDisposed(),Td(this)};Z().prototype.selu=function(){return this.throwIfDisposed(),Cd(this)};Z().prototype.separableConv2d=function(e,t,n,r,a,s){return this.throwIfDisposed(),dm(this,e,t,n,r,a,s)};Z().prototype.sigmoid=function(){return this.throwIfDisposed(),Fn(this)};Z().prototype.sign=function(){return this.throwIfDisposed(),pm(this)};Z().prototype.sin=function(){return this.throwIfDisposed(),Ed(this)};Z().prototype.sinh=function(){return this.throwIfDisposed(),Rd(this)};Z().prototype.slice=function(e,t){return this.throwIfDisposed(),Re(this,e,t)};Z().prototype.softmax=function(e){return this.throwIfDisposed(),Yu(this,e)};Z().prototype.softplus=function(){return this.throwIfDisposed(),dl(this)};Z().prototype.spaceToBatchND=function(e,t){return this.throwIfDisposed(),qu(this,e,t)};Z().prototype.split=function(e,t){return this.throwIfDisposed(),Lt(this,e,t)};Z().prototype.sqrt=function(){return this.throwIfDisposed(),en(this)};Z().prototype.square=function(){return this.throwIfDisposed(),lt(this)};Z().prototype.squaredDifference=function(e){return this.throwIfDisposed(),Dd(this,e)};Z().prototype.squeeze=function(e){return this.throwIfDisposed(),Pa(this,e)};Z().prototype.stack=function(e,t){this.throwIfDisposed();let n=e instanceof Ue?[this,e]:[this,...e];return dn(n,t)};Z().prototype.step=function(e){return this.throwIfDisposed(),yl(this,e)};Z().prototype.stridedSlice=function(e,t,n,r,a,s,i,o){return this.throwIfDisposed(),mm(this,e,t,n,r,a,s,i,o)};Z().prototype.sub=function(e){return this.throwIfDisposed(),ye(this,e)};Z().prototype.sum=function(e,t){return this.throwIfDisposed(),Te(this,e,t)};Z().prototype.tan=function(){return this.throwIfDisposed(),Am(this)};Z().prototype.tanh=function(){return this.throwIfDisposed(),ol(this)};Z().prototype.tile=function(e){return this.throwIfDisposed(),Oa(this,e)};Z().prototype.toBool=function(){return this.throwIfDisposed(),me(this,"bool")};Z().prototype.toFloat=function(){return this.throwIfDisposed(),me(this,"float32")};Z().prototype.toInt=function(){return this.throwIfDisposed(),me(this,"int32")};Z().prototype.topk=function(e,t){return this.throwIfDisposed(),ym(this,e,t)};Z().prototype.transpose=function(e){return this.throwIfDisposed(),at(this,e)};Z().prototype.unique=function(e){return this.throwIfDisposed(),zd(this,e)};Z().prototype.unsortedSegmentSum=function(e,t){return this.throwIfDisposed(),gm(this,e,t)};Z().prototype.unstack=function(e){return this.throwIfDisposed(),ir(this,e)};Z().prototype.where=function(e,t){return this.throwIfDisposed(),kn(e,this,t)};Z().prototype.zerosLike=function(){return this.throwIfDisposed(),He(this)};var v3={kernelName:Zi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,yl(me(n,"float32"),-1))}}},YZ={kernelName:Yi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=lt(me(n,"float32")),a=en(ye(be(1),r));return vt(ge(e,a))}}}},JZ={kernelName:Ji,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(ye(lt(me(n,"float32")),1));return ge(e,r)}}}},QZ={kernelName:Na,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},eY={kernelName:os,saveAllInputs:!0,gradFunc:(e,t)=>{let n={};return t.forEach((r,a)=>{n[a]=()=>e.clone()}),n}},tY={kernelName:ls,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},nY={kernelName:lu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>He(n)}}},rY={kernelName:Qi,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,en(ye(be(1),lt(me(n,"float32")))))}}},aY={kernelName:eo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=en(se(be(1),lt(me(n,"float32"))));return ge(e,r)}}}},sY={kernelName:ro,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=se(lt(n),lt(r)),i=P(e,ge(r,s)),o=Pt(n.shape,a);return o.length>0&&(i=Te(i,o)),G(i,n.shape)},b:()=>{let s=se(lt(n),lt(r)),i=vt(P(e,ge(n,s))),o=Pt(r.shape,a);return o.length>0&&(i=Te(i,o)),G(i,r.shape)}}}},iY={kernelName:to,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(lt(me(n,"float32")),1))}}},oY={kernelName:no,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,ye(be(1),lt(me(n,"float32"))))}}};function lY(e,t,n,r,a,s){let i=E(e,"dy","avgPool3dGrad"),o=E(t,"input","avgPool3dGrad"),l=i,u=o,c=!1;o.rank===4&&(c=!0,l=G(i,[1,i.shape[0],i.shape[1],i.shape[2],i.shape[3]]),u=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]])),F(l.rank===5,()=>`Error in avgPool3dGrad: dy must be rank 5 but got rank ${l.rank}.`),F(u.rank===5,()=>`Error in avgPool3dGrad: input must be rank 5 but got rank ${u.rank}.`),s!=null&&F(jt(a),()=>`Error in avgPool3dGrad: pad must be an integer when using, dimRoundingMode ${s} but got pad ${a}.`);let h={dy:l,input:u},d={filterSize:n,strides:r,pad:a,dimRoundingMode:s},p=$.runKernel(Ih,h,d);return c?G(p,[p.shape[1],p.shape[2],p.shape[3],p.shape[4]]):p}var uY=O({avgPool3dGrad_:lY}),cY={kernelName:uu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i,dimRoundingMode:o}=n;return{x:()=>uY(e,r,a,s,i,o)}}};function hY(e,t,n,r,a){let s=E(e,"dy","avgPoolGrad"),i=E(t,"input","avgPoolGrad");F(i.rank===s.rank,()=>`Rank of input (${i.rank}) does not match rank of dy (${s.rank})`);let o=i,l=s,u=!1;i.rank===3&&(u=!0,o=G(i,[1,i.shape[0],i.shape[1],i.shape[2]]),l=G(s,[1,s.shape[0],s.shape[1],s.shape[2]])),F(l.rank===4,()=>`Error in avgPoolGrad: dy must be rank 4 but got rank ${l.rank}.`),F(o.rank===4,()=>`Error in avgPoolGrad: input must be rank 4 but got rank ${o.rank}.`);let c={dy:l,input:o},h={filterSize:n,strides:r,pad:a},d=$.runKernel(Nh,c,h);return u?G(d,[d.shape[1],d.shape[2],d.shape[3]]):d}var dY=O({avgPoolGrad_:hY}),pY={kernelName:us,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{filterSize:a,strides:s,pad:i}=n;return{x:()=>dY(e,r,a,s,i)}}},fY={kernelName:cs,inputsToSave:["a","b"],gradFunc:(e,t,n)=>{let[r,a]=t,{transposeA:s,transposeB:i}=n;return!s&&!i?{a:()=>Ge(e,a,!1,!0),b:()=>Ge(r,e,!0,!1)}:!s&&i?{a:()=>Ge(e,a,!1,!1),b:()=>Ge(e,r,!0,!1)}:s&&!i?{a:()=>Ge(a,e,!1,!0),b:()=>Ge(r,e,!1,!1)}:{a:()=>Ge(a,e,!0,!0),b:()=>Ge(e,r,!0,!0)}}},mY={kernelName:cu,gradFunc:(e,t,n)=>{let{blockShape:r,crops:a}=n;return{x:()=>qu(e,r,a)}}},AY={kernelName:Xg,gradFunc:(e,t,n)=>{let r=n,a=r.inputShape,s=r.shape,i=Array.from(s);for(let l=a.length-1;l>=0;l--)if(a[l]===s[l])i[l]=1;else if(a[l]!==1)throw new Error(`broadcastTo(): [${a}] cannot be broadcast to [${s}].`);let o=[];for(let l=0;l1&&o.push(l);return{x:()=>Te(e,o,!0)}}},yY={kernelName:hs,gradFunc:e=>({x:()=>e.clone()})},gY={kernelName:ds,gradFunc:e=>({x:()=>He(e)})},xY={kernelName:Ia,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{clipValueMin:a,clipValueMax:s}=n;return{x:()=>kn(sr(za(r,a),ci(r,s)),e,He(e))}}},wY={kernelName:hu,inputsToSave:["x"],gradFunc:v3.gradFunc},_Y={kernelName:ao,saveAllInputs:!0,gradFunc:(e,t,n)=>{let r=t.map(o=>o.shape),{axis:a}=n,s=nr(a,t[0].shape)[0],i=r.map(o=>o[s]);return Lt(e,i,s).map(o=>()=>o)}},bY={kernelName:ps,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{dilations:s,strides:i,pad:o,dataFormat:l}=n;return F($a(s),()=>`Error in gradient of conv2D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${s}'`),{x:()=>qf(r.shape,e,a,i,o,l),filter:()=>bm(r,e,a.shape,i,o,l)}}},vY={kernelName:fs,inputsToSave:["dy","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,{strides:s,pad:i,dataFormat:o,dimRoundingMode:l}=n;return{dy:()=>ra(e,a,s,i,o,1,l),filter:()=>bm(e,r,a.shape,s,i,o,l)}}};function kY(e,t,n,r,a){let s=e;e.rank===4&&(s=G(e,[1,e.shape[0],e.shape[1],e.shape[2],e.shape[3]]));let i=t;i.rank===4&&(i=G(t,[1,t.shape[0],t.shape[1],t.shape[2],t.shape[3]])),F(s.rank===5,()=>`Error in conv3dDerFilter: input must be rank 5, but got shape ${s.shape}.`),F(i.rank===5,()=>`Error in conv3dDerFilter: dy must be rank 5, but got shape ${i.shape}.`),F(n.length===5,()=>`Error in conv3dDerFilter: filterShape must be length 5, but got ${n}.`),F(s.shape[4]===n[3],()=>`Error in conv3dDerFilter: depth of input ${s.shape[4]}) must match input depth in filter (${n[3]}.`),F(i.shape[4]===n[4],()=>`Error in conv3dDerFilter: depth of dy (${i.shape[4]}) must match output depth for filter (${n[4]}).`);let o={x:s,dy:i},l={strides:r,pad:a,filterShape:n};return $.runKernel(Eh,o,l)}var NY=O({conv3DBackpropFilter_:kY}),IY={kernelName:du,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s}=n;F($a(r),()=>`Error in gradient of conv3D: dilation rates greater than 1 are not yet supported in gradients. Got dilations '${r}'`);let[i,o]=t;return{x:()=>J5(i.shape,e,o,a,s),filter:()=>NY(i,e,o.shape,a,s)}}},SY={kernelName:ms,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(vt(Ed(me(n,"float32"))),e)}}},TY={kernelName:so,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Rd(me(n,"float32")),e)}}},CY={kernelName:As,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a,exclusive:s,reverse:i}=n;return{x:()=>{let o=ux([a],r.rank),l=yd(e,a,s,!i);return o!=null&&(l=at(l,o)),l}}}},EY={kernelName:ys,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let{dilations:r,strides:a,pad:s,dimRoundingMode:i}=n,o=r==null?[1,1]:r;F($a(o),()=>`Error in gradient of depthwiseConv2dNative: dilation rates greater than 1 are not yet supported. Got dilations '${o}'`);let[l,u]=t;return F(l.rank===4,()=>`Error in gradient of depthwiseConv2dNative: input must be rank 4, but got rank ${l.rank}.`),F(u.rank===4,()=>`Error in gradient of depthwiseConv2dNative: filter must be rank 4, but got rank ${u.rank}.`),F(l.shape[3]===u.shape[2],()=>`Error in gradient of depthwiseConv2d: number of input channels (${l.shape[3]}) must match the inChannels dimension in filter ${u.shape[2]}.`),F(Mr(a,o),()=>`Error in gradient of depthwiseConv2d: Either strides or dilations must be 1. Got strides ${a} and dilations '${o}'.`),i!=null&&F(jt(s),()=>`Error in depthwiseConv2d: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`),{x:()=>kx(l.shape,e,u,a,s,r,i),filter:()=>vx(l,e,u.shape,a,s,r,i)}}},RY={kernelName:pu,inputsToSave:["x","filter"],gradFunc:(e,t,n)=>{let[r,a]=t,s={x:r,filter:a,dy:e},i={x:r,filter:a,dy:e};return{x:()=>$.runKernel(Oh,s,n),filter:()=>$.runKernel(zh,i,n)}}},FY={kernelName:lo,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t,r={dy:e,y:n};return{x:()=>$.runKernel(Ph,r)}}},MY={kernelName:uo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(qn(vt(lt(n))),2/Math.sqrt(Math.PI));return{x:()=>P(e,r)}}},$Y={kernelName:xs,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,n)}}},DY={kernelName:ho,inputsToSave:["input"],gradFunc:(e,t)=>{let[n]=t;return{input:()=>G(e,n.shape)}}},OY={kernelName:po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,qn(n))}}},zY={kernelName:ws,gradFunc:e=>({x:()=>He(e)})},PY={kernelName:_s,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},LY={kernelName:bs,inputsToSave:["x","mean","variance","scale"],gradFunc:(e,t,n)=>{let{varianceEpsilon:r}=n,[a,s,i,o]=t,l=o==null?be(1):o,u=Pt(s.shape,a.shape),c=[];if(s.rank===1){for(let m=0;ms.rank===1?G(P(P(e,Oa(G(p,[1,1,1,s.shape[0]]),c)),l),a.shape):G(P(P(e,p),l),a.shape),mean:()=>{let m=P(P(p,be(-1)),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},variance:()=>{let m=P(P(f,h),d);return s.rank===1&&(m=Te(m,u)),G(m,s.shape)},scale:()=>{let m=P(h,p),A=P(e,m);return s.rank===1&&(A=Te(A,u)),G(A,s.shape)},offset:()=>{let m=e;return s.rank===1&&(m=Te(m,u)),G(m,s.shape)}}}},WY={kernelName:mo,inputsToSave:["x","indices"],gradFunc:(e,t,n)=>{let[r,a]=t,{axis:s}=n,i=nr(s,r.shape)[0];return{x:()=>{let o=r.shape,l=a.size,u=o.slice(0,i),c=u.length,h=o.slice(s,o.length).slice(1),d=h.length,p=k3(0,c),f=k3(c+1,c+1+d),m=N3([u,[l],h]),A=G(e,m),y=G(a,[l]),g=N3([[c],p,f]),_=at(A,g),b=gm(_,y,r.shape[i]),w=rm(g);return b=at(b,w),b},indices:()=>a}}};function k3(e,t){let n=[];for(let r=e;r{let[n,r]=t;return{a:()=>He(n),b:()=>He(r)}}},VY={kernelName:ks,gradFunc:e=>({x:()=>me(e,"float32")})},UY={kernelName:go,gradFunc:e=>({x:()=>He(e)})},HY={kernelName:xo,gradFunc:e=>({x:()=>He(e)})},jY={kernelName:wo,gradFunc:e=>({x:()=>He(e)})},GY={kernelName:Ns,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{alpha:a}=n,s=ar(r,0);return{x:()=>kn(s,e,P(e,a))}}},qY={kernelName:vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,se(n,1))}}},XY={kernelName:Is,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,me(n,"float32"))}}},KY={kernelName:Kg,inputsToSave:[],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n;return{logits:()=>{let s=!0,i=qn(r);return ye(e,P(Te(e,a,s),i))}}}};function ZY(e,t,n,r=5,a=1,s=1,i=.5){let o={x:e,y:t,dy:n},l={depthRadius:r,bias:a,alpha:s,beta:i};return $.runKernel(Uh,o,l)}var YY=O({localResponseNormalizationBackprop_:ZY}),JY={kernelName:yu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{depthRadius:s,bias:i,alpha:o,beta:l}=n;return{x:()=>YY(r,a,e,s,i,o,l)}}};function I3(e,t,n,r){return t.rankP(e,me(Da(n,t),e.dtype))}}var S3={kernelName:Ss,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{reductionIndices:a}=r,s=t[0],i=t[1],o=nr(a,s.shape),l=I3(e,i,s,o);return{x:()=>l.x()}}},QY={kernelName:Ts,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(za(n,r),"float32")),b:()=>P(e,me(xd(n,r),"float32"))}}};function eJ(e,t,n,r,a,s,i){let o=E(e,"dy","maxPool3dGrad"),l=E(t,"input","maxPool3dGrad"),u=E(n,"output","maxPool3dGrad"),c=o,h=l,d=u,p=!1;l.rank===4&&(p=!0,c=G(o,[1,o.shape[0],o.shape[1],o.shape[2],o.shape[3]]),h=G(l,[1,l.shape[0],l.shape[1],l.shape[2],l.shape[3]]),d=G(u,[1,u.shape[0],u.shape[1],u.shape[2],u.shape[3]])),F(c.rank===5,()=>`Error in maxPool3dGrad: dy must be rank 5 but got rank ${c.rank}.`),F(h.rank===5,()=>`Error in maxPool3dGrad: input must be rank 5 but got rank ${h.rank}.`),F(d.rank===5,()=>`Error in maxPool3dGrad: output must be rank 5 but got rank ${d.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPool3dGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let f={dy:c,input:h,output:d},m={filterSize:r,strides:a,pad:s,dimRoundingMode:i},A=$.runKernel(jh,f,m);return p?G(A,[A.shape[1],A.shape[2],A.shape[3],A.shape[4]]):A}var tJ=O({maxPool3dGrad_:eJ}),nJ={kernelName:gu,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o,dimRoundingMode:l}=n;return{x:()=>tJ(e,r,a,s,i,o,l)}}};function rJ(e,t,n,r,a,s,i){let o=E(e,"dy","maxPoolGrad"),l=E(t,"input","maxPoolGrad"),u=E(n,"output","maxPoolGrad");F(l.rank===o.rank,()=>`Rank of input (${l.rank}) does not match rank of dy (${o.rank})`),F(o.rank===4,()=>`Error in maxPoolGrad: dy must be rank 4 but got rank ${o.rank}.`),F(l.rank===4,()=>`Error in maxPoolGrad: input must be rank 4 but got rank ${l.rank}.`),i!=null&&F(jt(s),()=>`Error in maxPoolGrad: pad must be an integer when using, dimRoundingMode ${i} but got pad ${s}.`);let c={dy:o,input:l,output:u},h={filterSize:r,strides:a,pad:s,dimRoundingMode:i};return $.runKernel(Hh,c,h)}var aJ=O({maxPoolGrad_:rJ}),sJ={kernelName:Cs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r,a]=t,{filterSize:s,strides:i,pad:o}=n;return{x:()=>aJ(e,r,a,s,i,o)}}},iJ={kernelName:Es,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{axis:a}=n,s=nr(a,r.shape),i=lx(r.shape,s)[1],o=Dt(i);return{x:()=>{let l=r.shape.slice();s.forEach(c=>{l[c]=1});let u=G(e,l);return ge(P(u,Or(r.shape,"float32")),o)}}}},oJ={kernelName:Rs,inputsToSave:["x"],outputsToSave:[!0],gradFunc:(e,t,n)=>{let r=n,{axis:a}=r,[s,i]=t,o=nr(a,s.shape),l=I3(e,i,s,o);return{x:()=>l.x()}}},lJ={kernelName:Fs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t;return{a:()=>P(e,me(ci(n,r),"float32")),b:()=>P(e,me(ar(n,r),"float32"))}}},uJ={kernelName:xu,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},cJ={kernelName:No,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=Pt(n.shape,a);return s.length>0?G(Te(e,s),n.shape):e},b:()=>{let s=P(e,vt(hl(ge(n,r)))),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},hJ={kernelName:Ms,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=P(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);return i.length>0?G(Te(s,i),r.shape):s}}}},dJ={kernelName:Io,gradFunc:e=>({x:()=>vt(e)})},pJ={kernelName:$s,inputsToSave:["indices"],gradFunc:(e,t)=>{let n=t[0];return{indices:()=>Et(n.shape,"float32")}}},fJ={kernelName:Ro,gradFunc:e=>({x:()=>He(e)})},mJ={kernelName:Fo,saveAllInputs:!0,gradFunc:(e,t,n)=>{let{axis:r}=n;return ir(e,r).map(a=>()=>a)}},T3={kernelName:Ds,inputsToSave:["x"],gradFunc:(e,t,n)=>{let r=t[0],{paddings:a}=n,s=a.map(i=>i[0]);return{x:()=>Re(e,s,r.shape)}}},AJ={kernelName:Os,inputsToSave:["a","b"],outputsToSave:[!0],gradFunc:(e,t)=>{let[n,r,a]=t,s=n,i=r,o=yt(s.shape,i.shape);return{a:()=>{let l=me(i,"float32"),u=P(e,P(l,sa(s,ye(l,be(1))))),c=Pt(s.shape,o);return c.length>0&&(u=Te(u,c)),G(u,s.shape)},b:()=>{let l=ar(s,0),u=kn(l,Mn(s),He(s)),c=P(e,P(a,u)),h=Pt(i.shape,o);return h.length>0&&(c=Te(c,h)),G(c,i.shape)}}}},yJ={kernelName:zs,inputsToSave:["x","alpha"],gradFunc:(e,t)=>{let[n,r]=t,a=ar(n,0);return{x:()=>kn(a,e,P(e,r)),alpha:()=>{let s=kn(a,He(e),P(e,n)),i=Pt(r.shape,e.shape);return i.length>0&&(s=Te(s,i)),G(s,r.shape)}}}},gJ={kernelName:gs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=ge(e,me(r,"float32")),i=Pt(n.shape,a);return i.length>0?G(Te(s,i),n.shape):s},b:()=>{let s=P(e,me(n,"float32")),i=Pt(r.shape,a);i.length>0&&(s=G(Te(s,i),r.shape));let o=lt(r);return vt(ge(s,me(o,"float32")))}}}},xJ={kernelName:$o,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,vt(lt(n)))}}},wJ={kernelName:Ws,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t,r=P(ci(n,6),yl(n));return{x:()=>P(e,me(r,"float32"))}}},_J={kernelName:Ps,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,me(yl(n),"float32"))}}},bJ={kernelName:Do,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>G(e,n.shape)}}},vJ={kernelName:Ls,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Zh,a,n)}}},kJ={kernelName:_u,inputsToSave:["images"],gradFunc:(e,t,n)=>{let[r]=t,a={dy:e,images:r};return{images:()=>$.runKernel(Kh,a,n)}}},NJ={kernelName:Bs,gradFunc:(e,t,n)=>{let{dims:r}=n,a=nr(r,e.shape);return{x:()=>Dn(e,a)}}},IJ={kernelName:Vs,gradFunc:e=>({x:()=>He(e)})},SJ={kernelName:Us,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>vt(ge(e,P(sa(n,1.5),2)))}}},TJ={kernelName:zo,inputsToSave:["condition"],gradFunc:(e,t)=>{let[n]=t;return{condition:()=>me(He(n),"float32"),t:()=>P(e,me(n,e.dtype)),e:()=>P(e,me(ju(n),e.dtype))}}},CJ={kernelName:Po,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>{let r=ar(n,be(0)),a=be(Dx),s=be(Ox),i=P(e,s),o=P(P(e,a),qn(me(n,"float32")));return kn(r,i,o)}}}},EJ={kernelName:js,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(n,ye(be(1),n)))}}},RJ={kernelName:Bo,gradFunc:e=>({x:()=>He(e)})},FJ={kernelName:Hs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Vu(me(n,"float32")),e)}}},MJ={kernelName:Wo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(Ad(me(n,"float32")),e)}}},$J={kernelName:Lo,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{begin:a,size:s}=n,i=r.shape,[o,l]=$5(r,a,s),u=[];for(let c=0;caa(e,u)}}},DJ={kernelName:Xs,outputsToSave:[!0],gradFunc:(e,t,n)=>{let[r]=t,{dim:a}=n,s=!0,i=P(e,r);return{logits:()=>ye(i,P(Te(i,[a],s),r))}}},OJ={kernelName:Vo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,Fn(n))}}},C3={kernelName:bu,gradFunc:(e,t,n)=>{let{blockShape:r,paddings:a}=n;return{x:()=>Wu(e,r,a)}}},E3={kernelName:Uo,gradFunc:(e,t,n)=>{let{axis:r}=n;return{x:()=>st(e,r)}}},zJ={kernelName:Gs,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,P(en(me(n,"float32")),2))}}},PJ={kernelName:vu,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(e,P(me(n,"float32"),2))}}},LJ={kernelName:Ks,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=be(2);return{a:()=>P(e,P(a,ye(n,r))),b:()=>P(e,P(a,ye(r,n)))}}},WJ={kernelName:Ta,gradFunc:e=>({x:()=>He(e)})},BJ={kernelName:Zs,inputsToSave:["a","b"],gradFunc:(e,t)=>{let[n,r]=t,a=yt(n.shape,r.shape);return{a:()=>{let s=e,i=Pt(n.shape,a);return i.length>0&&(s=Te(s,i)),G(s,n.shape)},b:()=>{let s=e,i=Pt(r.shape,a);return i.length>0&&(s=Te(s,i)),G(vt(s),r.shape)}}}},VJ={kernelName:qs,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,a=r.shape.slice(),{axis:s}=n;nr(s,r.shape).forEach(l=>{a[l]=1});let i=G(e,a),o=P(i,Or(r.shape,"float32"));return{x:()=>o}}},UJ={kernelName:jo,inputsToSave:["x"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>ge(e,lt(Vu(n)))}}},HJ={kernelName:Ys,outputsToSave:[!0],gradFunc:(e,t)=>{let[n]=t;return{x:()=>P(ye(be(1),lt(n)),e)}}},jJ={kernelName:Sa,inputsToSave:["x"],gradFunc:(e,t,n)=>{let[r]=t,{reps:a}=n;return{x:()=>{let s=He(r);if(r.rank===1)for(let i=0;i{let r=n,{perm:a}=r,s=rm(a);return{x:()=>at(e,s)}}},qJ={kernelName:qo,gradFunc:(e,t,n)=>{let r=n,{axis:a}=r;return{value:()=>dn(e,a)}}},KJ={kernelName:ku,inputsToSave:["segmentIds"],gradFunc:(e,t)=>{let[n]=t;return{x:()=>XJ(e,n)}}};function XJ(e,t){let n=Dr(t,He(t)),r=ui(e,n),a=za(t,be(0,"int32")),s=r.rank-a.rank;for(let o=0;o({x:()=>He(e)})},YJ=[v3,YZ,JZ,QZ,eY,tY,nY,rY,aY,sY,iY,oY,cY,pY,fY,mY,AY,yY,gY,xY,wY,_Y,vY,bY,IY,SY,TY,CY,EY,RY,gJ,FY,MY,$Y,DY,OY,PY,zY,LY,WY,BY,VY,UY,HY,jY,GY,qY,XY,KY,JY,S3,S3,QY,nJ,sJ,iJ,oJ,lJ,uJ,cJ,hJ,dJ,pJ,fJ,mJ,T3,T3,AJ,yJ,xJ,wJ,_J,bJ,vJ,kJ,NJ,IJ,SJ,TJ,CJ,EJ,RJ,FJ,MJ,$J,DJ,OJ,C3,C3,E3,E3,zJ,LJ,PJ,WJ,BJ,VJ,UJ,HJ,jJ,GJ,qJ,KJ,ZJ];for(let e of YJ)Zg(e);var R3={};ze(R3,{maxNorm:()=>JJ,minMaxNorm:()=>tQ,nonNeg:()=>eQ,unitNorm:()=>QJ});var hA;function Wt(){return hA==null&&(hA=B5().epsilon()),hA}function _r(){return"channelsLast"}var ua=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,ua.prototype)}},br=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,br.prototype)}},V=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,V.prototype)}},De=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,De.prototype)}},F3=class extends Error{constructor(e){super(e);Object.setPrototypeOf(this,F3.prototype)}};function vi(e,t){if(Array.isArray(e)){let n=[];for(let r=0;rn.toUpperCase())}var lr={};function dA(e){if(e==null)return null;let t={};return t.className=e.getClassName(),t.config=e.getConfig(),t}function pA(e){if(!(e==null||typeof e!="object"))if(Array.isArray(e))e.forEach(t=>pA(t));else{let t=Object.keys(e);for(let n of t){let r=e[n];r!=null&&typeof r=="object"&&(!Array.isArray(r)&&r.type==="ndarray"&&typeof r.value=="number"?e[n]=r.value:pA(r))}}}function gc(e,t={},n={},r="object",a=!1){if(typeof e=="string"){let s=e,i;if(s in n)i=n[s];else if(s in lr)i=lr[s];else if(i=t[s],i==null)throw new V(`Unknown ${r}: ${e}. This may be due to one of the following reasons: 1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. 2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);return i}else{let s=e;if(s.className==null||s.config==null)throw new V(`${r}: Improper config format: ${JSON.stringify(s)}. 'className' and 'config' must set.`);let i=s.className,o,l;if(i in n?[o,l]=n[i]:i in lr?[o,l]=lr.className:i in t&&([o,l]=t[i]),o==null)throw new V(`Unknown ${r}: ${i}. This may be due to one of the following reasons: 1. The ${r} is defined in Python, in which case it needs to be ported to TensorFlow.js or your JavaScript code. -2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let u={};for(let p of Object.keys(lr))u[p]=lr[p];for(let p of Object.keys(n))u[p]=n[p];let c=s.config;c.customObjects=u;let h=Object.assign({},lr);for(let p of Object.keys(n))lr[p]=n[p];pA(s.config);let d=l(o,s.config,n,a);return lr=Object.assign({},h),d}else{let u=Object.assign({},lr);for(let h of Object.keys(n))lr[h]=n[h];let c=new o(s.config);return lr=Object.assign({},u),c}}}function tQ(e,t){return et?1:0}function kp(e,t){return-1*tQ(e,t)}function Ua(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function nQ(e){if(e==null)throw new V(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Ni(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new V(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function fA(e,t,n=0,r=Infinity){return Br(n>=0),Br(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(a=>typeof a===t)}function Xt(e,t){Array.isArray(e)?(v.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,r)=>Xt(n,`element ${r+1} of ${t}`))):v.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${M3(e)}.`)}function M3(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>M3(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function rQ(e,t){let n=v.now(),r;return(...a)=>{let s=v.now();return s-nen(Te(P(e,e),t,!0)))}var xc=class extends re.Serializable{getConfig(){return{}}},AA=class extends xc{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=vn(t,0,this.maxValue);return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};AA.className="MaxNorm";re.registerClass(AA);var yA=class extends xc{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>ge(e,se(Wt(),mA(e,this.axis))))}getConfig(){return{axis:this.axis}}};yA.className="UnitNorm";re.registerClass(yA);var gA=class extends xc{apply(e){return zr(e)}};gA.className="NonNeg";re.registerClass(gA);var xA=class extends xc{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=se(P(this.rate,vn(t,this.minValue,this.maxValue)),P(1-this.rate,t));return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};xA.className="MinMaxNorm";re.registerClass(xA);var D3={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Bt(e){return dA(e)}function O3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"constraint")}function Vt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in D3?D3[e]:e,config:{}};return O3(t)}else return e instanceof xc?e:O3(e)}function YJ(e){return new AA(e)}function JJ(e){return new yA(e)}function QJ(){return new gA}function eQ(e){return new xA(e)}var z3={};ze(z3,{constant:()=>iQ,glorotNormal:()=>pQ,glorotUniform:()=>dQ,heNormal:()=>fQ,heUniform:()=>mQ,identity:()=>cQ,leCunNormal:()=>AQ,leCunUniform:()=>yQ,ones:()=>sQ,orthogonal:()=>gQ,randomNormal:()=>lQ,randomUniform:()=>oQ,truncatedNormal:()=>uQ,varianceScaling:()=>hQ,zeros:()=>aQ});var xQ=["channelsFirst","channelsLast"],wQ=["nearest","bilinear"],_Q=["valid","same","causal"],bQ=["max","avg"],vQ=["sum","mul","concat","ave"],Dl=new Map;function Tt(e){Ni(xQ,"DataFormat",e)}function kQ(e){Ni(wQ,"InterpolationFormat",e)}function Yn(e){Ni(_Q,"PaddingMode",e)}function P3(e){Ni(bQ,"PoolMode",e)}var wc=[],L3="/";function Ii(e,t){wc.push(e);try{let n=t();return wc.pop(),n}catch(n){throw wc.pop(),n}}function NQ(){return wc.length===0?"":wc.join(L3)+L3}function B3(e){if(!W3(e))throw new Error("Not a valid tensor name: '"+e+"'");return NQ()+e}function V3(e){if(!W3(e))throw new Error("Not a valid tensor name: '"+e+"'");Dl.has(e)||Dl.set(e,0);let t=Dl.get(e);if(Dl.set(e,Dl.get(e)+1),t>0){let n=`${e}_${t}`;return Dl.set(n,1),n}else return e}var IQ=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function W3(e){return!!e.match(IQ)}function SQ(e){return e===parseInt(e.toString(),10)}function Ha(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let r=1;for(let a=t;a{if(e.shape.length!==2)throw new V(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=bc(e,1);return wA(n,[1,t,1])})}function CQ(e){let t=[Ha(e.shape)];return e.reshape(t)}function EQ(e){if(e.rank<=1)throw new V(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],Ha(e.shape,1)];return e.reshape(t)}function Si(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[t,0],[n,e.shape[1]]);case 3:return Md(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return Zu(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return Re(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return Re(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new V(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function _A(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[0,t],[e.shape[0],n]);case 3:return Md(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return Zu(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function Np(e,t,n,r){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:switch(r){case 1:return Si(e,t,n);case 2:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 3:switch(r){case 1:return Si(e,t,n);case 2:return Md(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 4:switch(r){case 1:return Si(e,t,n);case 2:return Zu(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return Zu(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function bA(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),st(e,t)}function H3(e,t){switch(e.rank){case 1:return X5([e,t]);case 2:return ll([e,t],0);case 3:return K5([e,t],0);case 4:return Z5([e,t],0);default:throw new V(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function wA(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new V(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return Oa(e,t)}function Ip(e,t=0,n=1,r,a){return px(e,t,n,r,a)}function Vr(e,t,n,r){if(e.rank<2||t.rank<2)throw new De(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let a=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(a!==s)throw new De(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let a=!1,s=!1;return La.matMul({a:e,b:t,transposeA:a,transposeB:s,bias:r?vA(e.rank,r,_r()):null,activation:n})}else{let a=e.shape.slice(),s=a.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),u=[...i,o],c=Array.from({length:t.rank},(f,m)=>m===0?t.rank-2:m<=t.rank-2?m-1:m);t=t.transpose(c).reshape([l,-1]);let h=[...a,...u],d=!1,p=!1;return La.matMul({a:e,b:t,transposeA:d,transposeB:p,bias:r?vA(e.rank,r,_r()):null,activation:n}).reshape(h)}}function j3(e,t,n){return B(()=>(Array.isArray(t)?t=on(t,"int32"):t=t.toInt(),ui(e,t,n)))}function vc(e){return P(e,e)}function vA(e,t,n){let r=t.shape;if(t.rank!==1&&t.rank!==e)throw new V(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1,1]):t.reshape([1,r[3],r[0],r[1],r[2]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===4){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1]):t.reshape([1,r[2],r[0],r[1]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===3){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1]):t.reshape([1,r[1],r[0]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,r[0]]):t.reshape([1].concat(r))}else if(e<3)return t;throw new V(`Unsupported input rank by biasAdd: ${t.rank}`)}function Ur(e,t,n){return B(()=>(n==null&&(n=_r()),Tt(n),e.add(vA(e.rank,t,n))))}function RQ(e,t=1){if(t!==1)throw new De(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return cl(e)}function FQ(e){return B(()=>ge(e,zt(e).add(1)))}function G3(e,t,n,r){return B(()=>wx(e,t,n,r))}function MQ(e){return B(()=>{let t=se(.5,P(.2,e));return vn(t,0,1)})}function kc(e,t,n=!1){return n?e():t()}var $Q=["fanIn","fanOut","fanAvg"],DQ=["normal","uniform","truncatedNormal"];function OQ(e){Ni($Q,"FanMode",e)}function zQ(e){Ni(DQ,"Distribution",e)}var ur=class extends re.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},kA=class extends ur{apply(e,t){return Et(e,t)}};kA.className="Zeros";re.registerClass(kA);var Sp=class extends ur{apply(e,t){return Or(e,t)}};Sp.className="Ones";re.registerClass(Sp);var NA=class extends ur{constructor(e){super();if(typeof e!="object")throw new V(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new V(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return B(()=>P(be(this.value),Or(e,t)))}getConfig(){return{value:this.value}}};NA.className="Constant";re.registerClass(NA);var IA=class extends ur{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return ml(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};IA.className="RandomUniform";re.registerClass(IA);var SA=class extends ur{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`randomNormal does not support dType ${t}.`);return Ip(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};SA.className="RandomNormal";re.registerClass(SA);var TA=class extends ur{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`truncatedNormal does not support dType ${t}.`);return Od(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TA.className="TruncatedNormal";re.registerClass(TA);var CA=class extends ur{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return B(()=>{if(e.length!==2||e[0]!==e[1])throw new V("Identity matrix initializer can only be used for 2D square matrices.");return P(this.gain,em(e[0]))})}getConfig(){return{gain:this.gain}}};CA.className="Identity";re.registerClass(CA);function PQ(e,t="channelsLast"){let n,r;if(Tt(t),e.length===2)n=e[0],r=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let a=Ha(e,2);n=e[1]*a,r=e[0]*a}else if(t==="channelsLast"){let a=Ha(e,0,e.length-2);n=e[e.length-2]*a,r=e[e.length-1]*a}}else{let a=Ha(e);n=Math.sqrt(a),r=Math.sqrt(a)}return[n,r]}var Cn=class extends ur{constructor(e){super();if(e.scale<0)throw new V(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,OQ(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,zQ(this.distribution),this.seed=e.seed}apply(e,t){let n=PQ(e),r=n[0],a=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,r):this.mode==="fanOut"?s/=Math.max(1,a):s/=Math.max(1,(r+a)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`${this.getClassName()} does not support dType ${t}.`);return Od(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return ml(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Cn.className="VarianceScaling";re.registerClass(Cn);var Tp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Tp.className="GlorotUniform";re.registerClass(Tp);var Cp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Cp.className="GlorotNormal";re.registerClass(Cp);var Ep=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Ep.className="HeNormal";re.registerClass(Ep);var Rp=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Rp.className="HeUniform";re.registerClass(Rp);var Fp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Fp.className="LeCunNormal";re.registerClass(Fp);var Mp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Mp.className="LeCunNormal";re.registerClass(Mp);var EA=class extends ur{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new De("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return B(()=>{if(e.length<2)throw new De("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,r=Ip(n,0,1,"float32"),a=Mx.gramSchmidt(r);return e[0]>e[1]&&(a=a.transpose()),P(this.gain,a)})}getConfig(){return{gain:this.gain,seed:this.seed}}};EA.className="Orthogonal";re.registerClass(EA);var q3={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function X3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"initializer")}function Nt(e){return dA(e)}function xt(e){if(typeof e=="string"){let t=e in q3?q3[e]:e;if(t==="GlorotNormal")return new Cp;if(t==="GlorotUniform")return new Tp;if(t==="HeNormal")return new Ep;if(t==="HeUniform")return new Rp;if(t==="LeCunNormal")return new Fp;if(t==="LeCunUniform")return new Mp;{let n={};return n.className=t,n.config={},X3(n)}}else return e instanceof ur?e:X3(e)}function aQ(){return new kA}function sQ(){return new Sp}function iQ(e){return new NA(e)}function oQ(e){return new IA(e)}function lQ(e){return new SA(e)}function uQ(e){return new TA(e)}function cQ(e){return new CA(e)}function hQ(e){return new Cn(e)}function dQ(e){return new Tp(e)}function pQ(e){return new Cp(e)}function fQ(e){return new Ep(e)}function mQ(e){return new Rp(e)}function AQ(e){return new Fp(e)}function yQ(e){return new Mp(e)}function gQ(e){return new EA(e)}var K3={};ze(K3,{Layer:()=>qe,RNN:()=>Hr,RNNCell:()=>Nc,activation:()=>eee,add:()=>uee,alphaDropout:()=>Gee,average:()=>cee,averagePooling1d:()=>RA,averagePooling2d:()=>FA,averagePooling3d:()=>MA,avgPool1d:()=>xee,avgPool2d:()=>_ee,avgPool3d:()=>vee,avgPooling1d:()=>wee,avgPooling2d:()=>bee,avgPooling3d:()=>kee,batchNormalization:()=>Aee,bidirectional:()=>Pee,concatenate:()=>hee,conv1d:()=>GQ,conv2d:()=>qQ,conv2dTranspose:()=>XQ,conv3d:()=>KQ,convLstm2d:()=>$ee,convLstm2dCell:()=>Dee,cropping2D:()=>YQ,dense:()=>tee,depthwiseConv2d:()=>QQ,dot:()=>mee,dropout:()=>nee,elu:()=>WQ,embedding:()=>lee,flatten:()=>aee,gaussianDropout:()=>jee,gaussianNoise:()=>Hee,globalAveragePooling1d:()=>Nee,globalAveragePooling2d:()=>Iee,globalMaxPool1d:()=>Wee,globalMaxPool2d:()=>Bee,globalMaxPooling1d:()=>Y3,globalMaxPooling2d:()=>J3,gru:()=>Tee,gruCell:()=>Cee,input:()=>Z3,inputLayer:()=>LQ,layerNormalization:()=>yee,leakyReLU:()=>VQ,lstm:()=>Eee,lstmCell:()=>Ree,masking:()=>qee,maxPool1d:()=>Vee,maxPool2d:()=>Uee,maxPooling1d:()=>Q3,maxPooling2d:()=>e7,maxPooling3d:()=>See,maximum:()=>dee,minimum:()=>pee,multiply:()=>fee,permute:()=>oee,prelu:()=>UQ,reLU:()=>BQ,repeatVector:()=>see,reshape:()=>iee,rnn:()=>Oee,separableConv2d:()=>ZQ,simpleRNN:()=>Fee,simpleRNNCell:()=>Mee,softmax:()=>HQ,spatialDropout1d:()=>ree,stackedRNNCells:()=>zee,thresholdedReLU:()=>jQ,timeDistributed:()=>Lee,upSampling2d:()=>JQ,zeroPadding2d:()=>gee});var Xee=0;function t7(){return Xee++}var $p={};function Dp(e=""){return e in $p||($p[e]=0),$p[e]+=1,e+$p[e].toString()}function $A(e){return Array.isArray(e)&&Array.isArray(e[0])}function Op(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Pe(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new V(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function ct(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new V(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function zp(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((r,a)=>r*a);return t}var n7="Variable",r7=class{constructor(e,t="float32",n=n7,r=!0,a=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=t7(),n=n==null?n7:n,this.originalName=B3(n),this.name=V3(this.originalName),this.trainable_=r,this.constraint=a,this.val=mx(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),Kee(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function Kee(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function DA(e){return e.map(t=>t.read())}function OA(e){e.forEach(t=>{t[0].write(t[1])})}var Kt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},kr=class{constructor(e,t,n,r,a,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=a,this.outputTensorIndex=i,this.id=t7(),s!=null&&(this.originalName=B3(s),this.name=V3(this.originalName)),this.rank=t.length}},Zee=0,Pp=class{constructor(e,t){this.callArgs=t,this.id=Zee++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},Yee=0,qe=class extends re.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=Yee++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=ca(n)+"_"+Dp(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let a=null;e.batchSize!=null&&(a=e.batchSize),n=[a].concat(e.inputShape)}this.batchInputShape=n;let r=e.dtype;r==null&&(r=e.inputDType),r==null&&(r="float32"),this.dtype=r}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new br(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new V(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Tn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Tn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} is not connected, no input to return.`);return Tn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Tn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=ft(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=ft(this.inputSpec);if(e.length!==t.length)throw new V(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;na.maxNDim)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${a.maxNDim}, found ndim=${s}`);if(a.minNDim!=null&&s=0?i[l]:i[i.length+l];if(u!=null&&[u,null].indexOf(c)===-1)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${u} but got shape ${i}.`)}}if(a.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of ft(e))s.push(i.shape);this.build(Tn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&a&&(this._refCount=1)}if(this.assertInputCompatibility(e),a){let s=this.call(e,t),i=ft(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Tn(o),this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=Jee(e),i=this.computeOutputShape(s),o,l=Qee(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((u,c)=>new kr(l,u,this,ft(e),t,this.name,c)):o=new kr(l,i,this,ft(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,r)=>{n!=null&&e[r]!=null&&e[r]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new ua(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new ua(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new br(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return zp(this.weights)}build(e){this.built=!0}getWeights(e=!1){return DA(e?this.trainableWeights:this.weights)}setWeights(e){B(()=>{let t=this.weights;if(t.length!==e.length)throw new V(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],r=DA(t);for(let a=0;aa.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=ft(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,r,a,s,i=null){let o=ft(e);t=ft(t),n=ft(n),r=ft(r),a=Op(a),s=Op(s);let l=[],u=[],c=[];for(let h of o)l.push(h.sourceLayer),u.push(h.nodeIndex),c.push(h.tensorIndex);new Pp({outboundLayer:this,inboundLayers:l,nodeIndices:u,tensorIndices:c,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:a,outputShapes:s},i);for(let h=0;he.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function Jee(e){e=ft(e);let t=[];for(let n of e)t.push(n.shape);return Tn(t)}function Qee(e){return"float32"}function a7(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let r=t.inboundNodes[n];if(r.inboundLayers.length===0)return r.inputTensors;{let a=[];for(let s=0;s0){let a=await Promise.all(t);for(let s=0;sse(this.totals[r],P(a,n)));this.totals[r]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:B(()=>{let r=P(ge(1,this.seen),this.totals[n]);t[n]=r,this.totals[n].dispose(),Gt(t[n])}))}},u7=class extends Pl{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let a in this.history){let s=this.history[a];for(let i=0;inew c7(n,t))}var cr=class{constructor(){}static registerCallbackConstructor(e,t){v.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),cr.checkForDuplicate(t),cr.constructors[e]==null&&(cr.constructors[e]=[]),cr.constructors[e].push(t)}static checkForDuplicate(e){for(let t in cr.constructors)cr.constructors[+t].forEach(n=>{if(n===e)throw new V("Duplicate callback constructor.")})}static clear(){cr.constructors={}}static createCallbacks(e){let t=[];for(let n in cr.constructors){let r=+n;e>=r&&t.push(...cr.constructors[r])}return t.map(n=>new n)}};cr.constructors={};function d7(e,t,n,r,a,s,i,o,l){let u=new u7,c=[new tte,...cr.createCallbacks(t)];e!=null&&c.push(...e),c.push(u);let h=new l7(c);return h.setParams({epochs:n,initialEpoch:r,samples:a,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function Nr(e,t={},n=!1){return gc(e,re.SerializationMap.getMap().classNameMap,t,"layer",n)}function Lp(e,t){return B(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Te(vc(e),t,!0),r=Uu(n.shape,Wt()),a=en(Dr(n,r));return ge(e,a)})}function Ti(e,t){return B(()=>kt(vc(ye(t,e)),-1))}function Wp(e,t){return B(()=>kt(zt(ye(t,e)),-1))}function Ll(e,t){return B(()=>{let n=ye(e,t),r=vn(zt(e),Wt(),Number.MAX_VALUE),a=zt(ge(n,r));return P(100,kt(a,-1))})}function nte(e,t){return B(()=>{let n=vn(t,Wt(),Number.MAX_VALUE),r=Mn(se(1,n)),a=vn(e,Wt(),Number.MAX_VALUE),s=Mn(se(1,a));return kt(vc(ye(r,s)),-1)})}function rte(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(vc(n),-1)})}function ate(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(n,-1)})}function ste(e,t){return B(()=>{let n=Te(P(e,t),-1),r=Xn(P(ye(1,e),t),-1);return Dr(0,se(1,ye(r,n)))})}function ite(e,t){return B(()=>{let n=Math.log(2),r=ye(t,e),a=ye(se(r,dl(P(-2,r))),n);return kt(a,-1)})}function Ic(e,t,n=!1){return B(()=>{if(n)t=Yu(t);else{let r=Te(t,t.shape.length-1,!0);t=ge(t,r)}return t=vn(t,Wt(),1-Wt()),vt(Te(P(e.toFloat(),Mn(t)),t.shape.length-1))})}function Bp(e,t,n=!1){return B(()=>{let r=hl(CQ(e)).toInt();t=vn(t,Wt(),1-Wt());let a=t.shape,s=nl(r,a[a.length-1]).reshape(a);return Ic(s,t,n)})}function ote(e,t){if(!v.arraysEqual(e.shape,t.shape))throw new V(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return B(()=>{let n=t.relu(),r=t.abs().neg();return n.sub(t.mul(e)).add(r.exp().log1p())})}function Vp(e,t){return B(()=>{let n;return n=vn(t,Wt(),1-Wt()),n=Mn(ge(n,ye(1,n))),kt(ote(e,n),-1)})}function lte(e,t){return B(()=>{let n=vn(e,Wt(),1),r=vn(t,Wt(),1);return Te(P(e,Mn(ge(n,r))),-1)})}function ute(e,t){return B(()=>{let n=Mn(se(Wt(),t));return kt(ye(t,P(e,n)),-1)})}function zA(e,t){return B(()=>{let n=Lp(e,-1),r=Lp(t,-1),a=P(n,r);return vt(Te(a,-1))})}var Up={meanSquaredError:Ti,meanAbsoluteError:Wp,meanAbsolutePercentageError:Ll,meanSquaredLogarithmicError:nte,squaredHinge:rte,hinge:ate,categoricalHinge:ste,logcosh:ite,categoricalCrossentropy:Ic,sparseCategoricalCrossentropy:Bp,binaryCrossentropy:Vp,kullbackLeiblerDivergence:lte,poisson:ute,cosineProximity:zA};function PA(e){if(typeof e=="string"){if(e in Up)return Up[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new V(t)}else return e}function LA(e,t){return B(()=>{let n=P(.5,$n(t)),r=_c(ar(t,n),e.dtype);return kt(Da(e,r),-1)})}function WA(e,t){return B(()=>_c(Da(zu(e,-1),zu(t,-1)),"float32"))}function p7(e,t){return B(()=>sr(e.equal(1),t.equal(1)).sum().cast("float32"))}function cte(e,t){return B(()=>sr(e.equal(1),t.equal(0)).sum().cast("float32"))}function hte(e,t){return B(()=>sr(e.equal(0),t.equal(1)).sum().cast("float32"))}function f7(e,t){return B(()=>{let n=p7(e,t),r=hte(e,t),a=n.add(r);return kn(ar(a,0),n.div(a),0).cast("float32")})}function dte(e,t){return B(()=>{let n=p7(e,t),r=cte(e,t),a=n.add(r);return kn(ar(a,0),n.div(a),0).cast("float32")})}function m7(e,t){return Vp(e,t)}function A7(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Da(e,t).asType("float32")}var pte=Ti,fte=Ti,mte=Wp,Ate=Wp,yte=Ll,gte=Ll,BA=Ic,xte=zA,y7=Bp,Hp={binaryAccuracy:LA,categoricalAccuracy:WA,precision:f7,categoricalCrossentropy:BA,sparseCategoricalCrossentropy:y7,mse:pte,MSE:fte,mae:mte,MAE:Ate,mape:yte,MAPE:gte,cosine:xte};function wte(e){if(typeof e=="string"&&e in Hp)return Hp[e];if(typeof e!="string"&&e!=null)return e;throw new V(`Unknown metric ${e}`)}function jp(e){if(Br(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(Up))if(Up[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(Hp))if(Hp[n]===e){t=n;break}return t!==void 0?t:e.name}}function _te(e){let t={Adagrad:()=>fi.adagrad(.01),Adadelta:()=>fi.adadelta(1,.95,Wt()),Adam:()=>fi.adam(.001,.9,.999,Wt()),Adamax:()=>fi.adamax(.002,.9,.999,Wt(),0),RMSProp:()=>fi.rmsprop(.001,.9,0,Wt()),SGD:()=>fi.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new V(`Unknown Optimizer ${e}`)}var g7=1*1024*1024;function x7(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!VA(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let r=JSON.stringify(e);r.length>g7&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${r.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${g7}.`)}}function VA(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!VA(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!VA(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function Ite(e,t,n,r=console.log){let a=vte(e),s=["Layer (type)","Output shape","Param #"];a?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(c=>Math.floor(t*c)));let i;if(!a){s.push("Receives inputs"),i=[];for(let c in e.nodesByDepth)i.push(...e.nodesByDepth[c])}r("_".repeat(t)),Gp(s,n,r),r("=".repeat(t));let o=e.layers;for(let c=0;c1||a.length===1&&a[0].inboundLayers.length>1){t=!1;break}r.push(...a)}if(t)for(let a of e.layers){let s=!1;for(let i of a.inboundNodes)if(r.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function Gp(e,t,n=console.log){let r="";for(let a=0;a0&&(r=r.slice(0,r.length-1)+" "),r+=e[a],r=r.slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function kte(e,t,n){let r;try{r=JSON.stringify(e.outputShape)}catch(o){r="multiple"}let a=e.name,s=e.getClassName(),i=[`${a} (${s})`,r,e.countParams().toString()];Gp(i,t,n)}function Nte(e,t,n,r){let a;try{a=JSON.stringify(e.outputShape)}catch(c){a="multiple"}let s=[];for(let c of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(c)===-1))for(let h=0;hf.name),l=[],u=t.names();for(let f of o)u.indexOf(f)!==-1?l.push(t.getValue(f)):l.push(null);r!=null&&(r.maxNumTensors=-Infinity,r.minNumTensors=Infinity);let c=o.join(",")+"|"+t.names().join(","),h,d;if(jA[c]==null){let f=Tte(i,t);h=f.sorted,d=f.recipientCounts,jA[c]=h,_7[c]=d}h=jA[c],d={},a||Object.assign(d,_7[c]);let p=new Ci(t);for(let f=0;fr.maxNumTensors&&(r.maxNumTensors=T),T0,()=>"Expected at least one fetch, got none");let n=[],r={};if(e.length===1){let a=b7(e[0],t);n=a.sorted,r=a.recipientMap}else{let a=new Set;for(let s of e){let{sorted:i,recipientMap:o}=b7(s,t);for(let l of i)a.has(l.name)||(n.push(l),a.add(l.name));for(let l in o)r[l]==null&&(r[l]=new Set),o[l].forEach(u=>r[l].add(u))}}return{sorted:n,recipientCounts:Ete(r)}}function Ete(e){let t={};for(let n in e)t[n]=e[n].size;return t}function b7(e,t){let n=new Set,r=[],a={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),r.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let u of o.inputs)a[u.name]==null&&(a[u.name]=new Set),a[u.name].add(o.name),!n.has(u.name)&&s.push(u)}}return{sorted:r,recipientMap:a}}function Cte(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let r=0;ry.name)}`);Ua(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;this.outputLayers.push(g),this.outputLayersNodeIndices.push(_),this.outputLayersTensorIndices.push(b)}for(let y of this.inputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;Br(_===0,"input layer has >1 nodes"),Br(b===0,"input layer has >1 tensors"),this.inputLayers.push(g),this.inputLayersNodeIndices.push(_),this.inputLayersTensorIndices.push(b)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},r={},a={},s={},i=[],o=(y,g,_,b,w,x)=>{(b==null||w==null||x==null)&&(b=y.sourceLayer,w=y.nodeIndex,x=y.tensorIndex);let I=b.inboundNodes[w];if(_.indexOf(I)!==-1)throw new br(`The tensor ${y.name} at layer "${b.name}" is part of a cycle.`);if(g.indexOf(I)!==-1)return;this.containerNodes.add(jr.nodeKey(b,w)),b.id in s||(s[b.id]=Object.keys(s).length),_.indexOf(I)===-1&&_.push(I);let S=I.inboundLayers.length;for(let T=0;T=0;)_.splice(_.indexOf(I),1);i.push(I)},l=[],u=[];for(let y of this.outputs)o(y,l,u);let c=i.slice().reverse();for(let y of c){n[y.id]=y,y.id in t||(t[y.id]=0);let g=t[y.id],_=r[y.outboundLayer.id]==null?0:r[y.outboundLayer.id];g=Math.max(g,_),r[y.outboundLayer.id]=g,a[y.outboundLayer.id]=y.outboundLayer,t[y.id]=g;for(let b=0;bparseInt(y,10)).sort(kp);this.layers=[];for(let y of p){let g=d[y];g.sort((_,b)=>{let w=s[_.id],x=s[b.id];return wx?1:0});for(let _ of g)_ instanceof jr&&this.internalContainerRefs.push(_),this.layers.push(_)}this.layersByDepth=d,p=Object.keys(h).map(y=>parseInt(y,10)).sort(kp);let f=this.inputs.slice(),m=[];for(let y of p)for(let g of h[y]){let _=g.outboundLayer;if(_!=null){for(let b of g.inputTensors)if(f.indexOf(b)===-1)throw new br(`Graph disconnected: cannot obtain value for tensor ${b} at layer "${_.name}". The following previous layers were accessed without issue: ${m}`);for(let b of g.outputTensors)f.push(b);m.push(_.name)}}this.nodesByDepth=h;let A=this.layers.map(y=>y.name);for(let y of A){let g=A.filter(_=>_===y).length;if(g!==1)throw new br(`The name "${y}" is used ${g} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(A))}this.outboundNodes=[],this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new V("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},r=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new V(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,r++}let a=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)a.push([n[i],e[s]]);else if(t)throw new V(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new V(`${s.length} of ${r} weights are not set: ${s}`)}OA(a)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${HA}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=UA(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return B(()=>{e=ft(e);let n=new Ci;for(let r=0;r{e=ft(e);let n;return t==null?n=vi(null,e.length):n=ft(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=Op(e);if(t.length!==this.inputLayers.length)throw new V(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(kp);if(r.length>1)for(let i of r){let o=this.nodesByDepth[i];for(let l of o){let u=l.outboundLayer;if(this.inputLayers.map(f=>f.id).indexOf(u.id)!==-1)continue;let c=[];for(let f=0;fparseInt(o,10)).sort(kp);for(let o of r){let l=this.nodesByDepth[o];for(let u of l){let c=u.outboundLayer,h=u.inputTensors,d=u.outputTensors,p=new Array;for(let f of h)f.id in n&&p.push(n[f.id]);if(p.length===h.length){let f={},m,A,y,g;if(u.callArgs!=null&&(f=u.callArgs),p.length===1){let[_,b]=p[0];f.mask==null&&(f.mask=b),y=ft(c.call(_,f)),g=ft(c.computeMask(_,b)),m=[_],A=[b]}else m=p.map(_=>_[0]),A=p.map(_=>_[1]),f.mask==null&&(f.mask=A),y=ft(c.call(m,f)),g=ft(c.computeMask(m,A));if(c.activityRegularizer)throw new De("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let _=0;_{let e=[];for(let t of this.layers)for(let n=0;n0){let f=[];for(let m=0;m0&&m.apply(Tn(y),g)}function l(m){let A=m.name,y=Nr(m,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(r),a[A]=y,m.inboundNodes.forEach(g=>{if(!(g instanceof Array))throw new V(`Corrupted configuration, expected array for nodeData: ${g}`);i(y,g)})}let u=t.name,c=t.layers;for(let m of c)l(m);for(;!nQ(s);)for(let m of c){let A=a[m.name];if(A.name in s){let y=s[A.name];delete s[A.name];for(let g of y)o(A,g)}}let h=[],d=[],p=t.inputLayers;for(let m of p){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;h.push(_[g])}let f=t.outputLayers;for(let m of f){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;d.push(_[g])}return new e({inputs:h,outputs:d,name:u})}get stateful(){if(this._stateful)throw new V("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){B(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function Rte(e,t,n){let r=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(a=>null);if(r===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${r} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let a=[];return t.forEach(s=>{s in e?a.push(e[s]):a.push(null)}),a}else throw new Error(`The model has multiple (${r}) outputs, so ${n} must be either an array with ${r} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function v7(e,t){return Rte(e,t,"classWeight")}async function k7(e,t,n,r){if(t!=null||r!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let a=B(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await a.data());Ee(a);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),on(i,"float32")}else return null}function Fte(e,t){return P(e,t)}var Mte=32;function I7(e,t){let n,r,a=t;n=a.xs,r=a.ys,v.assert(n!=null&&r!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=N7("input",e.inputNames,n),i=N7("output",e.outputNames,r),o=s[0].shape[0];v.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),v.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function N7(e,t,n){if(n instanceof Ue)return[n];if(Array.isArray(n))return v.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let r=[];for(let a of t){if(n[a]==null)throw new V(`The feature data generated by the dataset lacks the required ${e} key '${a}'.`);r.push(n[a])}return r}}function $te(e){if(e.length===3)throw new De("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function Ote(e,t,n){let r=n.batchesPerEpoch!=null;if(v.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),v.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),v.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),v.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),v.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let a=n.validationData!=null,s,i;if(a)if(S7(n.validationData))v.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let A=$te(n.validationData);s=A.xs,i=A.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),u;a?u=l.slice().concat(l.map(A=>"val_"+A)):u=l.slice();let c=h7(n.callbacks,n.yieldEvery),h=n.verbose==null?1:n.verbose,{callbackList:d,history:p}=d7(c,h,n.epochs,null,null,Dte(t,n),null,a,u);d.setModel(e),e.history=p,await d.onTrainBegin(),e.stopTraining_=!1;let f=n.initialEpoch==null?0:n.initialEpoch,m=await t.iterator();for(;f=n.batchesPerEpoch:_.done){if(a){let b;S7(n.validationData)?b=ft(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):b=ft(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?Mte:n.validationBatchSize,verbose:0}));for(let w=0;w0)throw new De("Verbose mode is not implemented yet.");v.assert(!r||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=zte(t)?t:await t.iterator(),o=0,l=0;for(;r?l{if(u.value){let{xs:c,ys:h}=I7(e,u.value),d=c.concat(h),p=B(()=>a(d));if(Ee(d),l===0)for(let m=0;mse(s[m],P(f,A))),l>0&&Ee(y)}Ee(p),o+=f,++l}return s}),u.done){r&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function Cc(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(r=>Si(r,t,n-t)):Si(e,t,n-t)}function qA(e,t){return B(()=>e==null?null:Array.isArray(e)?e.map(n=>qA(n,t)):j3(e,t.dtype==="int32"?t:t.toInt()))}function XA(e,t){let n=[],r=0,a=null;for(;r=e&&(a=e),n.push([r,a]),r=a;return n}async function Lte(e,t,n,r,a,s,i,o,l,u,c,h,d,p,f){a==null&&(a=32),s==null&&(s=1),c==null&&(c=!0),d==null&&(d=0);let m=!1;if(l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new V("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let A=e.checkNumSamples(n,a,p,"steps_per_epoch"),y;A!=null&&(y=vr(0,A)),i==null&&(i=1);let{callbackList:g,history:_}=d7(o,i,s,d,A,p,a,m,h);g.setModel(e),e.history=_,await g.onTrainBegin(),e.stopTraining_=!1;for(let b=d;b{let M=I[S][0],D=I[S][1],z=Si(x,M,D-M);T.batch=S,T.size=D-M;let W=qA(n,z),U=t(W);for(let H=0;H0){if(f=!0,r.validationData.length===2)i=r.validationData[0],o=r.validationData[1];else throw r.validationData.length===3?new De("validationData including sample weights is not supported yet."):new V(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${r.validationData} is invalid.`);let x=!0,I=await e.standardizeUserData(i,o,null,null,x,h);l=I[0],u=I[1],m=l.concat(u)}else if(r.validationSplit!=null&&r.validationSplit>0&&r.validationSplit<1){f=!0;let x=Math.floor(a[0].shape[0]*(1-r.validationSplit)),I=a[0].shape[0];l=Cc(a,x,I),a=Cc(a,0,x),u=Cc(s,x,I),s=Cc(s,0,x),m=l.concat(u)}else r.validationSteps!=null&&(f=!0);let A=a.concat(s).concat(c);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),g=e.getDedupedMetricsNames(),_,b;f?(e.makeTestFunction(),_=e.testFunction,b=g.slice().concat(g.map(x=>"val_"+x))):(_=null,m=[],b=g.slice());let w=h7(r.callbacks,r.yieldEvery);return await Lte(e,y,A,g,h,r.epochs,r.verbose,w,_,m,r.shuffle,b,r.initialEpoch,null,null)}finally{e.isTraining=!1,Ei(a,t),Ei(s,n),Ei(l,i),Ei(u,o),c!=null&&Ee(c)}}function T7(e){let t=[];e instanceof Ue&&(e=[e]);for(let n=0;nn.push(a.id));else if(t!=null)for(let a in t){let s=t[a];n.push(s.id)}let r=[];if(e instanceof Ue)n.indexOf(e.id)===-1&&r.push(e);else if(Array.isArray(e))e.forEach(a=>{n.indexOf(a.id)===-1&&r.push(a)});else if(e!=null)for(let a in e){let s=e[a];n.indexOf(s.id)===-1&&r.push(s)}r.forEach(a=>{a.isDisposed||a.dispose()})}function Bte(e){return e instanceof Ue}function KA(e){return Array.isArray(e)}function C7(e){return!Bte(e)&&!KA(e)}function E7(e,t,n,r=!0,a=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(KA(e)&&e.length>0)i=!0;else if(C7(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new V(`Error when checking model ${a} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(C7(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new V(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(KA(e)){if(e=e,e.length!==t.length)throw new V(`Error when checking model ${a}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new V(`The model ${a} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=T7(s),n!=null)for(let i=0;i=0&&u!==c)throw new V(`Error when checking ${a}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function Vte(e,t,n){let r=Ua(e.map(s=>s.shape[0]));r.sort();let a=Ua(t.map(s=>s.shape[0]));if(a.sort(),r.length>1)throw new V(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(a.length>1)throw new V(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(r.length>0&&a.length>0&&!v.arraysEqual(r,a))throw new V(`Input Tensors should have the same number of samples as target Tensors. Found ${r[0]} input sample(s) and ${a[0]} target sample(s).`)}function Ute(e,t,n){let r=[Ti,Vp,Ic];for(let a=0;a1)throw new V(`The model expects ${t.length} ${a} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(r=>n);{let r=[];for(let a of t){let s=n.hasOwnProperty(a)?n[a]:[];Array.isArray(s)||(s=[s]),r.push(s)}return r}}var jte="layers-model",ha=class extends jr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new V("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");Ite(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=_te(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof oa))throw new V("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new V(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(PA(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new V(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>PA(s))}else{let s=PA(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let r=Hte(e.metrics,this.outputNames),a=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Ii("metric",()=>{for(let s=0;s{let l="",u,c,h;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let f=this.internalOutputShapes[s];f[f.length-1]===1||this.lossFunctions[s]===Vp?["accuracy","acc"].indexOf(d)!==-1?c=LA:["crossentropy","ce"].indexOf(d)!==-1&&(c=m7):this.lossFunctions[s]===Bp?["accuracy","acc"].indexOf(d)!==-1?c=A7:["crossentropy","ce"].indexOf(d)!==-1&&(c=y7):["accuracy","acc"].indexOf(d)!==-1?c=WA:["crossentropy","ce"].indexOf(d)!==-1&&(c=BA);let m;["accuracy","acc"].indexOf(d)!==-1?m="acc":["crossentropy","ce"].indexOf(d)!==-1&&(m="ce"),h=c,u=l+m}else h=wte(d),u=l+jp(d);let p;Ii(u,()=>{p=h}),a(s,u,p)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let r=n.batchSize==null?32:n.batchSize;GA(r);let a=!0,s=this.standardizeUserDataXY(e,t,a,r);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,r,n.verbose,n.steps);return Tn(l)}finally{Ei(s[0],e),Ei(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),Pte(this,e,t)}checkNumSamples(e,t,n,r="steps"){let a;if(n!=null){if(a=null,t!=null)throw new V(`If ${r} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?a=e[0].shape[0]:a=e.shape[0];else throw new V(`Either the input data should have a defined shape, or ${r} shoud be specified.`);return a}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new V("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),r=n?t:[t],a=this.retrieveSymbolicTensors(r),s=new Ci;if(e instanceof Ue&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new V(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let r=[];throw t.forEach((a,s)=>{a==null&&r.push(e[s])}),new V(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(r)}`)}return t}predictLoop(e,t=32,n=!1){return B(()=>{let r=this.checkNumSamples(e);if(n)throw new De("Verbose predictLoop() is not implemented yet.");let a=XA(r,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=a[i][0],l=a[i][1],u=Cc(e,o,l),c=[];if(Array.isArray(u))for(let d=0;ds[l].push(o));return Tn(s.map(i=>st(i,0)))})}predict(e,t={}){let n=T7(e);R7(n,this.inputNames,this.feedInputShapes,!1);try{let r=t.batchSize==null?32:t.batchSize;return GA(r),this.predictLoop(n,r)}finally{Ei(n,e)}}predictOnBatch(e){R7(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,r){if(this.optimizer_==null)throw new br("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let a=[];for(let s=0;s0&&e[0].shape[0]%r!=0)throw new V(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${r}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,r,a=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,a,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(r!=null){let u=v7(r,this.outputNames);l=[];for(let c=0;c{let s=this.checkNumSamples(t,n,a,"steps"),i=[];if(r>0)throw new De("Verbose mode is not implemented yet.");if(a!=null)throw new De("steps mode in testLoop() is not implemented yet");{let o=XA(s,n),l=on(vr(0,s));for(let u=0;u1&&(a+=`_${F3(e.slice(0,n),r)}`),t.push(a)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let u=[];for(let p=0;p1&&p{d=se(d,p)}),d},o=this.collectedTrainableWeights.map(u=>u.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>B(()=>{let t=[],n,r=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lca(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let r of t)if(typeof n[r]=="string")e[r]=ca(n[r]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[ca(jp(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>ca(jp(e)));{let e={};for(let t in this.metrics)e[t]=ca(jp(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=Sc(e.optimizer_config),n=Nr(t),r;if(typeof e.loss=="string")r=ki(e.loss);else if(Array.isArray(e.loss))r=e.loss.map(s=>ki(s));else if(e.loss!=null){r={};for(let s in e.loss)r[s]=ki(e.loss[s])}let a;if(Array.isArray(e.metrics))a=e.metrics.map(s=>ki(s));else if(e.metrics!=null){a={};for(let s in e.metrics)a[s]=ki(e.metrics[s])}this.compile({loss:r,metrics:a,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=bn.getSaveHandlers(e);if(i.length===0)throw new V(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new V(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new V("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await bn.encodeWeights(this.getNamedWeights(t)),r=!1,a=null,s={modelTopology:this.toJSON(a,r),format:jte,generatedBy:`TensorFlow.js tfjs-layers v${HA}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await bn.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=bn.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;x7(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){x7(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};ha.className="Model";re.registerClass(ha);var F7=class extends ha{};F7.className="Functional";re.registerClass(F7);async function Gte(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let r=Sc(n),a=Nr(r,t);if(e.weightsManifest!=null){let s=await bn.loadWeights(e.weightsManifest,e.pathPrefix,a.weights.map(o=>o.originalName)),i={};for(let o of a.weights)i[o.originalName]=s[o.originalName];a.loadWeights(i),Ee(s)}return a}async function Xte(e,t){if(t==null&&(t={}),typeof e=="string"){let n=bn.getLoadHandlers(e,t);if(n.length===0)n.push(bn.browserHTTPRequest(e,t));else if(n.length>1)throw new V(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return qte(e,void 0,t)}async function qte(e,t,n){if(n==null&&(n={}),e.load==null)throw new V("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let r=await e.load(),a=r.modelTopology;a.model_config!=null&&(a=a.model_config);let s=n.strict==null?!0:n.strict,i=r.weightData!=null&&r.weightSpecs!=null&&s,o=Nr(Sc(a),t,i),l=r.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),r.userDefinedMetadata!=null&&o.setUserDefinedMetadata(r.userDefinedMetadata),r.weightData!=null){if(r.weightSpecs==null)throw new V("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:u,optimizerWeights:c}=Kte(r.weightData,r.weightSpecs);o.loadWeights(u,s),o.optimizer!=null&&c.length>0&&await o.optimizer.setWeights(c),Ee(u),Ee(c.map(h=>h.tensor))}return o}function Kte(e,t){let n=bn.decodeWeights(e,t),r={},a=[];return t.forEach(s=>{s.group==="optimizer"?a.push({name:s.name,tensor:n[s.name]}):r[s.name]=n[s.name]}),{modelWeights:r,optimizerWeights:a}}var Wl=class extends ha{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:Dp("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new V(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof Wl||e instanceof ha,n;if(t){if(n=e,n.outputs.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new V("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new V("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let r=s7({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(r)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new V(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=a7(this.outputs[0])}this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:vi(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(r=>r.shape),outputShapes:this.outputs[0].shape})}else{let r=e.apply(this.outputs[0]);if(Array.isArray(r))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[r],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(ct(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new ha({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},r=!1){let a,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new V("Legacy serialization format not supported yet.");a=t}else v.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),a=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof Wl))throw new De(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of a){let l=Nr(o,void 0,r);r&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new V("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new V("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};Wl.className="Sequential";re.registerClass(Wl);function Zte(e){return new ha(e)}function Yte(e){return new Wl(e)}function Jte(e,t){return t==null&&(t={}),Xte(e,t)}function Z3(e){return s7(e)}function Qte(e,t){cr.registerCallbackConstructor(e,t)}var Ln=class extends re.Serializable{getConfig(){return{}}},M7=class extends Ln{apply(e,t=1){return RQ(e,t)}};M7.className="elu";re.registerClass(M7);var $7=class extends Ln{apply(e){return Cd(e)}};$7.className="selu";re.registerClass($7);var D7=class extends Ln{apply(e){return zr(e)}};D7.className="relu";re.registerClass(D7);var O7=class extends Ln{apply(e){return B(()=>fl(6,zr(e)))}};O7.className="relu6";re.registerClass(O7);var z7=class extends Ln{apply(e){return e}};z7.className="linear";re.registerClass(z7);var P7=class extends Ln{apply(e){return Fn(e)}};P7.className="sigmoid";re.registerClass(P7);var L7=class extends Ln{apply(e){return MQ(e)}};L7.className="hardSigmoid";re.registerClass(L7);var W7=class extends Ln{apply(e){return dl(e)}};W7.className="softplus";re.registerClass(W7);var B7=class extends Ln{apply(e){return FQ(e)}};B7.className="softsign";re.registerClass(B7);var V7=class extends Ln{apply(e){return ol(e)}};V7.className="tanh";re.registerClass(V7);var ZA=class extends Ln{apply(e,t=-1){return Yu(e,t)}};ZA.className="softmax";re.registerClass(ZA);var U7=class extends Ln{apply(e,t=-1){return bd(e,t)}};U7.className="logSoftmax";re.registerClass(U7);var H7=class extends Ln{apply(e,t=1){return B(()=>Fn(e.mul(t)).mul(e))}};H7.className="swish";re.registerClass(H7);function qa(e){return e.getClassName()}function YA(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"activation")}function Xa(e){if(e==null){let t={};return t.className="linear",t.config={},YA(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},YA(t)}else return e instanceof Ln?e:YA(e)}function JA(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var j7=class extends re.Serializable{},Ec=class extends j7{constructor(e){super();JA(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return B(()=>{let t=Et([1]);return this.hasL1&&(t=se(t,Te(P(this.l1,zt(e))))),this.hasL2&&(t=se(t,Te(P(this.l2,vc(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};Ec.className="L1L2";re.registerClass(Ec);function ene(e){return JA(e),new Ec({l1:e!=null?e.l1:null,l2:0})}function tne(e){return JA(e),new Ec({l2:e!=null?e.l2:null,l1:0})}var G7={l1l2:"L1L2"};function ht(e){return dA(e)}function q7(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"regularizer")}function wt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in G7?G7[e]:e,config:{}};return q7(t)}else return e instanceof j7?e:q7(e)}var QA=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Pe(e);let n=zr(e);return this.maxValue!=null&&(n=vn(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};QA.className="ReLU";re.registerClass(QA);var ey=class extends qe{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Pe(e);return Hu(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};ey.className="LeakyReLU";re.registerClass(ey);var ty=class extends qe{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=xt(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=wt(e.alphaRegularizer),this.alphaConstraint=Vt(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new V(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=ct(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let r of this.sharedAxes)t[r-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let r=1;r(Tt(t),t==="channelsFirst"?at(e,[0,2,3,1]):e))}function X7(e,t){return B(()=>(Tt(t),t==="channelsFirst"?at(e,[0,2,3,4,1]):e))}function nne(e,t,n,r=1,a="valid",s,i=1){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.shape.length!==3)throw new V(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new V(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new V(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=at(e,[0,2,1])),a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=fd(e,t,r,a==="same"?"same":"valid","NWC",i);return n!=null&&(o=Ur(o,n)),o})}function K7(e,t,n,r=[1,1],a="valid",s,i,o=null){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==3&&e.rank!==4)throw new V(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new V(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=sy(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=La.conv2d({x:l,filter:t,strides:r,pad:a==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=at(l,[0,3,1,2])),l})}function rne(e,t,n,r=[1,1,1],a="valid",s,i){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==4&&e.rank!==5)throw new V(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new V(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=X7(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=Xf(o,t,r,a==="same"?"same":"valid","NDHWC",i),n!=null&&(o=Ur(o,n)),s==="channelsFirst"&&(o=at(o,[0,4,1,2,3])),o})}var iy=class extends qe{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",iy.verifyArgs(t),this.rank=e,Xt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new De(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Bl(t.kernelSize,e,"kernelSize"),this.strides=Bl(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,Yn(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Tt(this.dataFormat),this.activation=Xa(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=xt(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Vt(t.biasConstraint),this.biasRegularizer=wt(t.biasRegularizer),this.activityRegularizer=wt(t.activityRegularizer),this.dilationRate=Bl(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new V(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new V(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new V(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(Br("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,3))throw new V(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:qa(this.activation),useBias:this.useBias,biasInitializer:Nt(this.biasInitializer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},Rc=class extends iy{constructor(e,t){super(e,t);this.kernel=null,Rc.verifyArgs(t),this.filters=t.filters,Xt(this.filters,"filters"),this.kernelInitializer=xt(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Vt(t.kernelConstraint),this.kernelRegularizer=wt(t.kernelRegularizer)}build(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],r=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",r,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n,r=this.bias==null?null:this.bias.read(),a=$3(this.activation.getClassName());if(a!=null&&this.rank===2)n=K7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate,a);else{if(this.rank===1)n=nne(e,this.kernel.read(),r,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=K7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=rne(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new De("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=ct(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let a=0;a 0 but got ${JSON.stringify(e.filters)}`)}},Fc=class extends Rc{constructor(e){super(2,e);Fc.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,2))throw new V(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};Fc.className="Conv2D";re.registerClass(Fc);var Xp=class extends Rc{constructor(e){super(3,e);Xp.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new V(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};Xp.className="Conv3D";re.registerClass(Xp);var oy=class extends Fc{constructor(e){super(e);if(this.inputSpec=[new Kt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new V(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=ct(e),e.length!==4)throw new V("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],r=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",r,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Kt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return B(()=>{let n=Pe(e);if(n.shape.length!==4)throw new V(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let r=n.shape,a=r[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=r[s],l=r[i],u=this.kernelSize[0],c=this.kernelSize[1],h=this.strides[0],d=this.strides[1],p=qp(o,h,u,this.padding),f=qp(l,d,c,this.padding),m=[a,p,f,this.filters];this.dataFormat!=="channelsLast"&&(n=at(n,[0,2,3,1]));let A=md(n,this.kernel.read(),m,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(A=at(A,[0,3,1,2])),this.bias!=null&&(A=Ur(A,this.bias.read(),this.dataFormat)),this.activation!=null&&(A=this.activation.apply(A)),A})}computeOutputShape(e){e=ct(e);let t=e.slice(),n,r,a;this.dataFormat==="channelsFirst"?(n=1,r=2,a=3):(n=3,r=1,a=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[r]=qp(t[r],o,s,this.padding),t[a]=qp(t[a],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};oy.className="Conv2DTranspose";re.registerClass(oy);var Z7=class extends Rc{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new V("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new V("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new V(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=wt(t.depthwiseRegularizer),this.depthwiseConstraint=Vt(t.depthwiseConstraint),this.pointwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=wt(t.pointwiseRegularizer),this.pointwiseConstraint=Vt(t.pointwiseConstraint)}build(e){if(e=ct(e),e.length{e=Pe(e);let n;if(this.rank===1)throw new De("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=at(e,[0,2,3,1])),n=dm(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=at(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.pointwiseInitializer=Nt(this.pointwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.pointwiseRegularizer=ht(this.pointwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseConstraint),e.pointwiseConstraint=Bt(this.pointwiseConstraint),e}};Z7.className="SeparableConv";var ly=class extends Z7{constructor(e){super(2,e)}};ly.className="SeparableConv2D";re.registerClass(ly);var Kp=class extends Rc{constructor(e){super(1,e);Kp.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,1))throw new V(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};Kp.className="Conv1D";re.registerClass(Kp);var uy=class extends qe{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return B(()=>{if(e=Pe(e),this.dataFormat==="channelsLast"){let n=Np(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return Np(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=Np(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return Np(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};uy.className="Cropping2D";re.registerClass(uy);var cy=class extends qe{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,kQ(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return B(()=>{let n=Pe(e),r=n.shape;if(this.dataFormat==="channelsFirst"){n=at(n,[0,2,3,1]);let a=this.size[0]*r[2],s=this.size[1]*r[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s]);return at(i,[0,3,1,2])}else{let a=this.size[0]*r[1],s=this.size[1]*r[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};cy.className="UpSampling2D";re.registerClass(cy);function ane(e,t,n=[1,1],r="valid",a,s){return B(()=>{a==null&&(a=_r()),Tt(a);let i=sy(e,a);if(e.rank!==4)throw new V(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new V(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=ul(i,t,n,r==="same"?"same":"valid","NHWC",s),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}var hy=class extends iy{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=xt(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Vt(e.depthwiseConstraint),this.depthwiseRegularizer=wt(e.depthwiseRegularizer)}build(e){if(e=ct(e),e.length<4)throw new V(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new V(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n=ane(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,a=Ir(t,this.kernelSize[0],this.padding,this.strides[0]),s=Ir(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],r,a,s]:[e[0],a,s,r]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseRegularizer),e}};hy.className="DepthwiseConv2D";re.registerClass(hy);function Y7(e,t,n,r){if(Array.isArray(e)){if(t!=null||n!=null)throw new V("When inputs is an array, neither initialState or constants should be provided");r!=null&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(s){return s==null||Array.isArray(s)?s:[s]}return t=a(t),n=a(n),{inputs:e,initialState:t,constants:n}}function J7(e,t,n,r=!1,a,s,i=!1,o=!1){return B(()=>{let l=t.shape.length;if(l<3)throw new V(`Input should be at least 3D, but is ${l}D.`);let u=[1,0].concat(vr(2,l));if(t=at(t,u),s!=null)throw new De("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a!=null&&(a=a.asType("bool").asType("float32"),a.rank===l-1&&(a=hn(a,-1)),a=at(a,u)),r&&(t=Dn(t,0),a!=null&&(a=Dn(a,0)));let c=[],h,d=n,p=t.shape[0],f=ir(t),m;a!=null&&(m=ir(a));for(let y=0;ye(g,d));if(a==null)h=_[0],d=_[1];else{let b=B(()=>{let w=m[y],x=$n(w).sub(w),I=_[0].mul(w).add(d[0].mul(x)),S=d.map((T,M)=>_[1][M].mul(w).add(T.mul(x)));return{output:I,newStates:S}});h=b.output,d=b.newStates}o&&c.push(h)}let A;return o&&(A=dn(c,1)),[h,A,d]})}var Hr=class extends qe{constructor(e){super(e);let t;if(e.cell==null)throw new V("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new Zp({cells:e.cell}):t=e.cell,t.stateSize==null)throw new V("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Kt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return vr(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){$A(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],r;if(this.returnSequences?r=[e[0],e[1],n]:r=[e[0],n],this.returnState){let a=[];for(let s of t)a.push([e[0],s]);return[r].concat(a)}else return r}computeMask(e,t){return B(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let r=this.states.map(a=>null);return[n].concat(r)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new V(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Kt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_=[Et([n,this.cell.stateSize])];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_[0]=Et([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let r=0;rGt(r.clone()))})}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=Y7(e,n,r,this.numConstants);e=a.inputs,n=a.initialState,r=a.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Kt({shape:o.shape}));i=i.concat(this.stateSpec)}if(r!=null&&(t.constants=r,s=s.concat(r),this.numConstants=r.length),s[0]instanceof kr){let o=[e].concat(s),l=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=l;let c=super.apply(o,t);return this.inputSpec=u,c}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;e=Pe(e),a==null&&(this.stateful?a=this.states_:a=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(a.length!==s)throw new V(`RNN Layer has ${s} state(s) but was passed ${a.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:r},o=J7((d,p)=>{let f=this.cell.call([d].concat(p),i);return[f[0],f.slice(1)]},e,a,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],u=o[1],c=o[2];this.stateful&&this.resetStates(c,r);let h=this.returnSequences?u:l;return this.returnState?[h].concat(c):h})}getInitialState(e){return B(()=>{let t=Et(e.shape);return t=Te(t,[1,2]),t=bc(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?wA(t,[1,n]):t):this.cell.stateSize>1?[wA(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===Hr.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let r=t.cell,a=Nr(r,n);return new e(Object.assign(t,{cell:a}))}};Hr.className="RNN";re.registerClass(Hr);var Nc=class extends qe{},Yp=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let r=t.training==null?!1:t.training;0$n(e),rate:this.dropout,training:r})),0$n(n),rate:this.recurrentDropout,training:r}));let a,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?a=Vr(P(e,s),this.kernel.read()):a=Vr(e,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),i!=null&&(n=P(n,i));let o=se(a,Vr(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),recurrentInitializer:Nt(this.recurrentInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),recurrentRegularizer:ht(this.recurrentRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),recurrentConstraint:Bt(this.recurrentConstraint),biasConstraint:Bt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};Yp.className="SimpleRNNCell";re.registerClass(Yp);var dy=class extends Hr{constructor(e){e.cell=new Yp(e),super(e)}call(e,t){return B(()=>{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return new e(t)}};dy.className="SimpleRNN";re.registerClass(dy);var Jp=class extends Nc{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new V("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,r=e[1];e=e[0],0$n(e),rate:this.dropout,training:n,count:3})),0$n(r),rate:this.recurrentDropout,training:n,count:3}));let a=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};py.className="GRU";re.registerClass(py);var Mc=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=ct(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let r;if(this.useBias){if(this.unitForgetBias){let a=this.biasInitializer,s=this.units;r=new(t=class extends ur{apply(i,o){let l=a.apply([s]),u=new Sp().apply([s]),c=a.apply([s*2]);return H3(H3(l,u),c)}},t.className="CustomInit",t)}else r=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,r,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new V(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let r=e[1],a=e[2];e=e[0],0$n(e),rate:this.dropout,training:n,count:4})),0$n(r),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,u,c;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};fy.className="LSTM";re.registerClass(fy);var Zp=class extends Nc{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return B(()=>{e=e;let n=e.slice(1),r=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?r.push(n.splice(0,i.stateSize.length)):r.push(n.splice(0,1));r.reverse();let a=[],s;for(let i=0;i{Ii(`RNNCell_${r}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=r=>({className:r.getClassName(),config:r.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let r=[];for(let a of t.cells)r.push(Nr(a,n));return new e({cells:r})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return DA(e)}setWeights(e){let t=[];for(let n of this.cells){let r=n.weights.length,a=e.splice(r);for(let s=0;sG3(t(),n),i=()=>kc(s,t,r);return!a||a<=1?Gt(i().clone()):Array(a).fill(void 0).map(i).map(o=>Gt(o.clone()))}var sne=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a{if(this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new V("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return B(()=>{let{stateSize:t}=this.cell,n=e.shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)],s=Et(a);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)];if(n[0]==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_=[Et(a)];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_[0]=Et(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let s=0;sGt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:r,padding:a,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],u=e[o?4:3],c=Ir(l,r[0],a,s[0],i[0]),h=Ir(u,r[1],a,s[1],i[1]);return[...e.slice(0,2),...o?[n,c,h]:[c,h,n]]}};Q7.className="ConvRNN2D";var Qp=class extends Mc{constructor(e){let{filters:t,kernelSize:n,strides:r,padding:a,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Xt(this.filters,"filters"),this.kernelSize=Bl(n,2,"kernelSize"),this.kernelSize.forEach(o=>Xt(o,"kernelSize")),this.strides=Bl(r||1,2,"strides"),this.strides.forEach(o=>Xt(o,"strides")),this.padding=a||"valid",Yn(this.padding),this.dataFormat=s||"channelsLast",Tt(this.dataFormat),this.dilationRate=Bl(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Xt(o,"dilationRate"))}build(e){var t;e=ct(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[n]}`);let r=e[n],a=4,s=this.kernelSize.concat([r,this.filters*a]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*a]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,u=this.filters;o=new(t=class extends ur{apply(c,h){let d=l.apply([u]),p=Or([u]),f=l.apply([u*2]);return bA([d,p,f])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*a],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return B(()=>{if(e.length!==3)throw new V(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,r=e[0],a=e[1],s=e[2],i=4;0$n(r),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Y,ae,te)=>!ae||!ae[te]?Y:P(ae[te],Y),u=l(r,o,0),c=l(r,o,1),h=l(r,o,2),d=l(r,o,3);0$n(a),rate:this.recurrentDropout,training:n,count:i}));let p=this.recurrentDropoutMask,f=l(a,p,0),m=l(a,p,1),A=l(a,p,2),y=l(a,p,3),g=3,[_,b,w,x]=Lt(this.kernel.read(),i,g),[I,S,T,M]=this.useBias?Lt(this.bias.read(),i):[null,null,null,null];u=this.inputConv(u,_,I,this.padding),c=this.inputConv(c,b,S,this.padding),h=this.inputConv(h,w,T,this.padding),d=this.inputConv(d,x,M,this.padding);let[D,z,W,U]=Lt(this.recurrentKernel.read(),i,g);f=this.recurrentConv(f,D),m=this.recurrentConv(m,z),A=this.recurrentConv(A,W),y=this.recurrentConv(y,U);let H=this.recurrentActivation.apply(se(u,f)),X=this.recurrentActivation.apply(se(c,m)),j=se(P(X,s),P(H,this.activation.apply(se(h,A)))),ee=P(this.recurrentActivation.apply(se(d,y)),this.activation.apply(j));return[ee,ee,j]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=sne(e,["units"]),r={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,r)}inputConv(e,t,n,r){let a=ra(e,t,this.strides,r||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?Ur(a,n,this.dataFormat):a}recurrentConv(e,t){return ra(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};Qp.className="ConvLSTM2DCell";re.registerClass(Qp);var my=class extends Q7{constructor(e){let t=new Qp(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};my.className="ConvLSTM2D";re.registerClass(my);var e0=class extends qe{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);if(0G3(n,this.rate,a,this.seed),()=>n,r)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};e0.className="Dropout";re.registerClass(e0);var Ay=class extends e0{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};Ay.className="SpatialDropout1D";re.registerClass(Ay);var yy=class extends qe{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Vt(e.kernelConstraint),this.biasConstraint=Vt(e.biasConstraint),this.kernelRegularizer=wt(e.kernelRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=ct(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=ct(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=$3(this.activation.getClassName()),a;return r!=null?a=Vr(n,this.kernel.read(),r,this.bias?this.bias.read():null):(a=Vr(n,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),this.activation!=null&&(a=this.activation.apply(a))),a})}getConfig(){let e={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};yy.className="Dense";re.registerClass(yy);var gy=class extends qe{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=ct(e);for(let t of e.slice(1))if(t==null)throw new V(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],Ha(e,1)]}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let r=[0];for(let a=2;a{this.invokeCallHook(e,t);let n=Pe(e);return this.activation.apply(n)})}getConfig(){let e={activation:qa(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};xy.className="Activation";re.registerClass(xy);var wy=class extends qe{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return B(()=>(e=Pe(e),TQ(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};wy.className="RepeatVector";re.registerClass(wy);var _y=class extends qe{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Pe(e),r=n.shape,a=r.slice(0,1).concat(this.fixUnknownDimension(r.slice(1),this.targetShape));return n.reshape(a)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};_y.className="Reshape";re.registerClass(_y);var by=class extends qe{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=vr(1,e.dims.length+1);if(!v.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Kt({ndim:this.dims.length+1})]}computeOutputShape(e){e=ct(e);let t=e.slice();return this.dims.forEach((n,r)=>{t[r+1]=e[n]}),t}call(e,t){return at(Pe(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};by.className="Permute";re.registerClass(by);var vy=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Pe(e),r=-1;return Ou(di(n,this.maskValue),r)}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=-1,a=!0,s=Ou(di(n,this.maskValue),r,a);return n.mul(s.asType(n.dtype))})}};vy.className="Masking";re.registerClass(vy);var ky=class extends qe{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(ft(e.inputLength))}this.inputDim=e.inputDim,Xt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Xt(this.outputDim,"outputDim"),this.embeddingsInitializer=xt(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=wt(e.embeddingsRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.embeddingsConstraint=Vt(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return B(()=>this.maskZero?(e=Pe(e),di(e,He(e))):null)}computeOutputShape(e){if(e=ct(e),this.inputLength==null)return[...e,this.outputDim];let t=ft(this.inputLength);if(t.length!==e.length-1)throw new V(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);return n.dtype!=="int32"&&(n=_c(n,"int32")),j3(this.embeddings.read(),n.as1D()).reshape(ct(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Nt(this.embeddingsInitializer),embeddingsRegularizer:ht(this.embeddingsRegularizer),activityRegularizer:ht(this.activityRegularizer),embeddingsConstraint:Bt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};ky.className="Embedding";re.registerClass(ky);var Ri=class extends qe{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new De}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new V(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let a=1;aa.length);e.indexOf(null)===-1&&Ua(r).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return B(()=>{if(e=e,this.reshapeRequired){let n=[],r=e.map(a=>a.rank);if(r.indexOf(null)===-1){let a=ja(r);for(let s of e){let i=s.rank;for(let o=0;o1){let u=vr(1,l).concat([0]);n.push(at(o,u)),a=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(a){if(i==null){let o=s.shape,l=o.length,u=o[l-1],c=[u].concat(o.slice(0,o.length-1));s=at(s.reshape([-1,u]),[1,0]).reshape(c)}else if(i>1){let o=[i-1].concat(vr(0,i-1));s=at(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let r=1;r{if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an Array");if(!Array.isArray(e))throw new V("`inputs` should be an Array");if(t.length!==e.length)throw new V(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(r=>r==null))return null;t=t.map(r=>r==null?r:hn(r,0));let n=t[0];for(let r=1;r{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new V("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return B(()=>bA(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new V("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis;for(let a of t.slice(1)){if(n[r]==null||a[r]==null){n[r]=null;break}n[r]+=a[r]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new V("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new V(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return B(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let r=[];for(let s=0;s3||t.shape.length>3)throw new De("batchDot is not implemented for tensors of 4D or higher rank yet");if(v.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),v.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new De("batchDot is not implemented for complex64-type Tensors yet.");let r=e.shape.length,a=t.shape.length;n==null&&(n=[r-1,a-2]);let s=n;return B(()=>{let i;if(r>a){i=r-a;let l=[];for(let u=0;ur){i=a-r;let l=[];for(let u=0;u0){let l;r>a?l=r+a-3:l=r-1;let u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new V(`Dimension incompatibility: ${t[r[0]]} !== ${n[r[1]]}`)}mergeFunction(e){if(e.length!==2)throw new V(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],r;return Array.isArray(this.axes)?r=this.axes.map((a,s)=>$c(a,e[s].shape.length)):r=[$c(this.axes,t.shape.length),$c(this.axes,n.shape.length)],this.normalize&&(t=Lp(t,r[0]),n=Lp(n,r[1])),ine(t,n,r)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[$c(this.axes,e.length),$c(this.axes,t.length)],n}computeOutputShape(e){v.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);let a=t.concat(n);return a.length===1&&a.push(1),a}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};Ry.className="Dot";re.registerClass(Ry);var Fy=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return kc(()=>Ip(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Fy.className="GaussianNoise";re.registerClass(Fy);var My=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return this.rate>0&&this.rate<1?kc(()=>{let r=Math.sqrt(this.rate/(1-this.rate));return n.mul(Ip(n.shape,1,r))},()=>n,t.training||!1):n})}};My.className="GaussianDropout";re.registerClass(My);var $y=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Pe(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return kc(()=>{let r=Pe(e),a=1.6732632423543772,s=1.0507009873554805,i=-a*s,o=za(ml(n),this.rate);o=_c(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,u=-l*i*this.rate;return r.mul(o).add(o.add(-1).mul(i)).mul(l).add(u)},()=>Pe(e),t.training||!1)}return e})}};$y.className="AlphaDropout";re.registerClass($y);function Dc(e,t,n,r,a,s=.001){let i;if(e.rank===2)i=H5(e,t,n,r,a,s);else if(e.rank===3)i=j5(e,t,n,r,a,s);else if(e.rank===4)i=G5(e,t,n,r,a,s);else throw new De(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function one(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance;return[Dc(e,i,o,n,t,a),i,o]})}function lne(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance,l=[];for(let p of vr(0,e.rank))r.indexOf(p)!==-1?l.push(1):l.push(e.shape[p]);let u=i.reshape(l),c=o.reshape(l),h=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[Dc(e,u,c,d,h,a),i,o]})}function une(e,t,n,r,a=.001){return v.arraysEqual(r.slice().sort(),vr(0,e.rank-1))?one(e,t,n,r,a):lne(e,t,n,r,a)}var Dy=class extends qe{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.movingMeanInitializer=xt(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=xt(e.movingVarianceInitializer||"ones"),this.betaConstraint=Vt(e.betaConstraint),this.gammaConstraint=Vt(e.gammaConstraint),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer)}build(e){e=ct(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new V(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Kt({ndim:e.length,axes:{[t]:n}})];let r=[n];this.scale&&(this.gamma=this.addWeight("gamma",r,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",r,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",r,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",r,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training,r=Pe(e),a=r.shape,s=a.length,i=vr(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=vi(1,s);l[o]=a[o];let u=i.slice();u.sort();let c=!v.arraysEqual(u,vr(0,s).slice(0,s-1)),h=()=>{if(c){let A=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),g=this.center?this.beta.read().reshape(l):null,_=this.scale?this.gamma.read().reshape(l):null;return Dc(r,A,y,g,_,this.epsilon)}else return Dc(r,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return h();let[d,p,f]=une(r,this.gamma.read(),this.beta.read(),i,this.epsilon),m=(A,y,g)=>{B(()=>{let _=1-g,b=A.read(),w=b.sub(y).mul(_);A.write(b.sub(w))})};return(()=>{m(this.movingMean,p,this.momentum),m(this.movingVariance,f,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Nt(this.betaInitializer),gammaInitializer:Nt(this.gammaInitializer),movingMeanInitializer:Nt(this.movingMeanInitializer),movingVarianceInitializer:Nt(this.movingVarianceInitializer),betaRegularizer:ht(this.betaRegularizer),gammaRegularizer:ht(this.gammaRegularizer),betaConstraint:Bt(this.betaConstraint),gammaConstraint:Bt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Dy.className="BatchNormalization";re.registerClass(Dy);var Oy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=ct(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let a=0;a=t)throw new Error(`Invalid axis: ${a}`);if(this.axis.length!==Ua(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(a=>e[a]),r=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,r):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,r):this.beta=null,this.built=!0}call(e,t){let n=Pe(e),r=n.shape,a=r.length;return B(()=>{let s=!0,{mean:i,variance:o}=kd(n,this.axis,s),l=vi(1,a);for(let f of this.axis)l[f]=r[f];let u=f=>f!=null&&f.shape.length!==a&&this.axis!==[a-1]?f.reshape(l):f,c=u(this.gamma.read()),h=u(this.beta.read()),d=[],p=[];for(let f=0;f{if(e.rank!==4)throw new V(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new V("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=_r()),n!=="channelsLast"&&n!=="channelsFirst")throw new V(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let r;return n==="channelsFirst"?r=[[0,0],[0,0],t[0],t[1]]:r=[[0,0],t[0],t[1],[0,0]],aa(e,r)})}var zy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?_r():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new V(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new V(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new V(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return B(()=>cne(Pe(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};zy.className="ZeroPadding2D";re.registerClass(zy);function t0(e,t,n,r,a,s){return B(()=>{Tt(a),P3(s),Yn(r),n==null&&(n=[1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=sy(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=Gu(e,t,n,o):i=Lu(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}function ev(e,t,n,r,a,s){return B(()=>{Tt(a),P3(s),Yn(r),n==null&&(n=[1,1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=X7(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=sm(e,t,n,o):i=jf(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,4,1,2,3])),i})}var tv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new V(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Xt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new V(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,Yn(this.padding),this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){e=ct(e);let t=Ir(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return B(()=>{this.invokeCallHook(e,t),e=bc(Pe(e),2);let n=this.poolingFunction(Pe(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return Pa(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},Py=class extends tv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Py.className="MaxPooling1D";re.registerClass(Py);var Ly=class extends tv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};Ly.className="AveragePooling1D";re.registerClass(Ly);var nv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new V(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Wy=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Wy.className="MaxPooling2D";re.registerClass(Wy);var By=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};By.className="AveragePooling2D";re.registerClass(By);var rv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new V(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:5})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),r=Ir(r,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Vy=class extends rv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),ev(e,t,n,r,a,"max")}};Vy.className="MaxPooling3D";re.registerClass(Vy);var Uy=class extends rv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),ev(e,t,n,r,a,"avg")}};Uy.className="AveragePooling3D";re.registerClass(Uy);var av=class extends qe{constructor(e){super(e);this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new De}},Hy=class extends av{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return kt(n,1)})}};Hy.className="GlobalAveragePooling1D";re.registerClass(Hy);var jy=class extends av{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return Xn(n,1)})}};jy.className="GlobalMaxPooling1D";re.registerClass(jy);var sv=class extends qe{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new De}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Gy=class extends sv{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?kt(n,[1,2]):kt(n,[2,3])})}};Gy.className="GlobalAveragePooling2D";re.registerClass(Gy);var qy=class extends sv{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?Xn(n,[1,2]):Xn(n,[2,3])})}};qy.className="GlobalMaxPooling2D";re.registerClass(qy);var iv=class extends qe{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let r=t.layer,a=Nr(r,n);delete t.layer;let s={layer:a};return Object.assign(s,t),new e(s)}},Xy=class extends iv{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=ct(e),e.length<3)throw new V(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=ct(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))}call(e,t){return B(()=>(e=Pe(e),J7((n,r)=>[Pe(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};Xy.className="TimeDistributed";re.registerClass(Xy);function hne(e){Ni(vQ,"BidirectionalMergeMode",e)}var dne="concat",Ky=class extends iv{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Nr(n),t.goBackwards=t.goBackwards!==!0;let r={};if(r.className=e.layer.getClassName(),r.config=t,this.backwardLayer=Nr(r),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?dne:e.mergeMode,hne(this.mergeMode),e.weights)throw new De("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,r,a;return this.returnState&&(a=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,r=[n]):this.mergeMode==null?r=[n,n.slice()]:r=[n],this.returnState?this.mergeMode==null?r.concat(a).concat(a.slice()):[n].concat(a).concat(a.slice()):Tn(r)}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=Y7(e,n,r,this.numConstants);if(e=a.inputs,n=a.initialState,r=a.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&r==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new V("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let u=n.map(c=>new Kt({shape:c.shape}));this.forwardLayer.stateSpec=u.slice(0,l/2),this.backwardLayer.stateSpec=u.slice(l/2),i.push(...u)}if(r!=null)throw new De("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof kr;for(let l of s)if(l instanceof kr!==o)throw new V("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),u=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=u;let h=super.apply(l,t);return this.inputSpec=c,h}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t.initialState,r,a;if(n==null)r=this.forwardLayer.call(e,t),a=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);r=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),a=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(r)&&(s=r.slice(1).concat(a.slice(1))),r=r[0],a=a[0]),this.returnSequences&&(a=Dn(a,1));let i;return this.mergeMode==="concat"?i=bA([r,a]):this.mergeMode==="sum"?i=se(r,a):this.mergeMode==="ave"?i=P(.5,se(r,a)):this.mergeMode==="mul"?i=P(r,a):this.mergeMode==null&&(i=[r,a]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Ii(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Ii(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let r=this.forwardLayer.states.map(a=>null);return Array.isArray(n)?n.concat(r).concat(r):[n].concat(r).concat(r)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Nr(t.layer);if(delete t.layer,t.numConstants!=null)throw new De("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let r=t;return r.layer=n,new e(r)}};Ky.className="Bidirectional";re.registerClass(Ky);function LQ(e){return new zl(e)}function WQ(e){return new ny(e)}function BQ(e){return new QA(e)}function VQ(e){return new ey(e)}function UQ(e){return new ty(e)}function HQ(e){return new ay(e)}function jQ(e){return new ry(e)}function GQ(e){return new Kp(e)}function qQ(e){return new Fc(e)}function XQ(e){return new oy(e)}function KQ(e){return new Xp(e)}function ZQ(e){return new ly(e)}function YQ(e){return new uy(e)}function JQ(e){return new cy(e)}function QQ(e){return new hy(e)}function eee(e){return new xy(e)}function tee(e){return new yy(e)}function nee(e){return new e0(e)}function ree(e){return new Ay(e)}function aee(e){return new gy(e)}function see(e){return new wy(e)}function iee(e){return new _y(e)}function oee(e){return new by(e)}function lee(e){return new ky(e)}function uee(e){return new Ny(e)}function cee(e){return new Sy(e)}function hee(e){return new Ey(e)}function dee(e){return new Ty(e)}function pee(e){return new Cy(e)}function fee(e){return new Iy(e)}function mee(e){return new Ry(e)}function Aee(e){return new Dy(e)}function yee(e){return new Oy(e)}function gee(e){return new zy(e)}function RA(e){return new Ly(e)}function xee(e){return RA(e)}function wee(e){return RA(e)}function FA(e){return new By(e)}function _ee(e){return FA(e)}function bee(e){return FA(e)}function MA(e){return new Uy(e)}function vee(e){return MA(e)}function kee(e){return MA(e)}function Nee(e){return new Hy(e)}function Iee(e){return new Gy(e)}function Y3(e){return new jy(e)}function J3(e){return new qy(e)}function Q3(e){return new Py(e)}function e7(e){return new Wy(e)}function See(e){return new Vy(e)}function Tee(e){return new py(e)}function Cee(e){return new Jp(e)}function Eee(e){return new fy(e)}function Ree(e){return new Mc(e)}function Fee(e){return new dy(e)}function Mee(e){return new Yp(e)}function $ee(e){return new my(e)}function Dee(e){return new Qp(e)}function Oee(e){return new Hr(e)}function zee(e){return new Zp(e)}function Pee(e){return new Ky(e)}function Lee(e){return new Xy(e)}var Wee=Y3,Bee=J3,Vee=Q3,Uee=e7;function Hee(e){return new Fy(e)}function jee(e){return new My(e)}function Gee(e){return new $y(e)}function qee(e){return new vy(e)}var ov={};ze(ov,{MAPE:()=>vne,MSE:()=>Ine,binaryAccuracy:()=>pne,binaryCrossentropy:()=>fne,categoricalAccuracy:()=>Ane,categoricalCrossentropy:()=>yne,cosineProximity:()=>wne,mape:()=>kne,meanAbsoluteError:()=>_ne,meanAbsolutePercentageError:()=>bne,meanSquaredError:()=>Nne,mse:()=>Sne,precision:()=>gne,recall:()=>xne,sparseCategoricalAccuracy:()=>mne});function pne(e,t){return LA(e,t)}function fne(e,t){return m7(e,t)}function mne(e,t){return A7(e,t)}function Ane(e,t){return WA(e,t)}function yne(e,t){return BA(e,t)}function gne(e,t){return f7(e,t)}function xne(e,t){return dte(e,t)}function wne(e,t){return zA(e,t)}function _ne(e,t){return Wp(e,t)}function bne(e,t){return Ll(e,t)}function vne(e,t){return Ll(e,t)}function kne(e,t){return Ll(e,t)}function Nne(e,t){return Ti(e,t)}function Ine(e,t){return Ti(e,t)}function Sne(e,t){return Ti(e,t)}var lv={};ze(lv,{modelFromJSON:()=>Gte});var uv={};ze(uv,{l1:()=>Cne,l1l2:()=>Tne,l2:()=>Ene});function Tne(e){return new Ec(e)}function Cne(e){return ene(e)}function Ene(e){return tne(e)}var cv=class extends Pl{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof ha))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function n0(e,t){return et}var dv=class extends cv{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new De("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=n0:this.mode==="max"?this.monitorFunc=hv:this.monitor.indexOf("acc")!==-1?this.monitorFunc=hv:this.monitorFunc=n0,this.monitorFunc===n0&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===n0?Infinity:-Infinity}async onEpochEnd(e,t){await Ga(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function Rne(e){return new dv(e)}var Fne={earlyStopping:Rne},Sr;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Sr||(Sr={}));var pv;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(pv||(pv={}));var Zy={};function Mne(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};Zy[e]=n}function fv(e){return Zy[e]}function $ne(e){delete Zy[e]}function k(e,t,n,r,a){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return En(t.inputNames[s.inputIndexStart],n,r,a);if(s.type==="tensors")return t.inputNames.slice(o,l).map(h=>En(h,n,r,a));let u=En(t.inputNames.slice(o)[0],n,r,a),c=u.dataSync();return s.type==="number"?c[0]:v.toNestedArray(u.shape,c)}let i=t.attrParams[e];return i&&i.value}function En(e,t,n,r){let[a,s]=Wn(e);if(r!=null){let o=r.getHashTableHandleByName(a);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[r0(a,o)]);return i!==void 0?t[r0(a,i)][s]:void 0}function Dne(e,t,n){return t[r0(e,n.currentContextId)]}function da(e,t){let[n,r]=Wn(e);return[r0(n,t&&t.currentContextId),r]}function r0(e,t){return t?`${e}-${t}`:e}function Wn(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function a0(e,t,n){let r=k("pad",e,t,n);if(r==="explicit"){r=k("explicitPaddings",e,t,n);let a=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)a[s][0]=r[s*2],a[s][1]=r[s*2+1];return a}return r}function pa(e){return e.kept?e:Rr(e)}var mv={};ze(mv,{json:()=>One});var One=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Av={};ze(Av,{json:()=>zne});var zne=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],yv={};ze(yv,{json:()=>Pne});var Pne=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],gv={};ze(gv,{json:()=>Lne});var Lne=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],xv={};ze(xv,{json:()=>Wne});var Wne=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],wv={};ze(wv,{json:()=>Bne});var Bne=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],_v={};ze(_v,{json:()=>Vne});var Vne=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],bv={};ze(bv,{json:()=>Une});var Une=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],vv={};ze(vv,{json:()=>Hne});var Hne=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]}],kv={};ze(kv,{json:()=>jne});var jne=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],Nv={};ze(Nv,{json:()=>Gne});var Gne=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Iv={};ze(Iv,{json:()=>qne});var qne=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Sv={};ze(Sv,{json:()=>Xne});var Xne=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],Tv={};ze(Tv,{json:()=>Kne});var Kne=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],Cv={};ze(Cv,{json:()=>Zne});var Zne=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],Ev={};ze(Ev,{json:()=>Yne});var Yne=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],Rv={};ze(Rv,{json:()=>Jne});var Jne=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],Mv=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[mv,Av,yv,gv,xv,wv,_v,Nv,kv,bv,Iv,Sv,Tv,Cv,Ev,Rv,vv],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,r)=>(n[r.tfOpName]=r,n),{})}transformGraph(e,t={}){let n=e.node,r=[],a=[],s=[],i=n.reduce((f,m)=>(f[m.name]=this.mapNode(m),m.op.startsWith("Placeholder")?r.push(f[m.name]):m.op==="Const"?a.push(f[m.name]):(m.input==null||m.input.length===0)&&s.push(f[m.name]),f),{}),o=[],l=[],u={},c={};t!=null&&(u=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));let h=Object.keys(i);h.forEach(f=>{let m=i[f];m.inputNames.forEach(A=>{let[y]=da(A);m.inputs.push(i[y]),i[y].children.push(m)})}),Object.keys(c).length===0?h.forEach(f=>{let m=i[f];m.children.length===0&&l.push(m)}):Object.keys(c).forEach(f=>{let[m]=da(f),A=i[m];A!=null&&(A.signatureKey=c[f],l.push(A))}),Object.keys(u).length>0?Object.keys(u).forEach(f=>{let[m]=da(f),A=i[m];A&&(A.signatureKey=u[f],o.push(A))}):o=r;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((f,m)=>(f[m.signature.name]=this.mapFunction(m),f),{}));let p={nodes:i,inputs:o,outputs:l,weights:a,placeholders:r,signature:t,functions:d};return s.length>0&&(p.initNodes=s),p}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=fv(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(r=>r.startsWith("^")?r.substr(1):r),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((r,a)=>(r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((r,a)=>{let s=a.type,i;switch(a.type){case"string":i=Yy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Yy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":i=s2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=s2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":i=Qy(e.attr,a.tfName,a.defaultValue||0),i===void 0&&!!a.tfDeprecatedName&&(i=Qy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":i=a2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=a2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":i=Jy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Jy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":i=o2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=o2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":i=r2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=r2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":i=i2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=i2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":i=t2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=t2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":i=n2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=n2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":i=Fv(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Fv(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${a.type} for op: ${e.op}`)}return r[a.name]={value:i,type:s},r},{})),n}mapFunction(e){let t=e.nodeDef,n=[],r=[],a={};t!=null&&(a=t.reduce((u,c)=>(u[c.name]=this.mapNode(c),c.op==="Const"&&r.push(u[c.name]),u),{}));let s=[],i=[];e.signature.inputArg.forEach(u=>{let[c]=da(u.name),h={name:c,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:e2(u.type),type:"dtype"}},children:[]};h.signatureKey=u.name,s.push(h),a[c]=h}),Object.keys(a).forEach(u=>{let c=a[u];c.inputNames.forEach(h=>{let[d]=da(h);c.inputs.push(a[d]),a[d].children.push(c)})});let o=e.ret;e.signature.outputArg.forEach(u=>{let[c,h]=da(o[u.name]),d=a[c];d!=null&&(d.defaultOutput=h,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:a,inputs:s,outputs:i,weights:r,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function Qne(e){let t=J().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function $v(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):Qne(e);return t?n:n.toLowerCase()}function Yy(e,t,n,r=!1){let a=e[t];return a!=null?$v(a.s,r):n}function Jy(e,t,n){let r=e[t];return r?r.b:n}function Qy(e,t,n){let r=e[t]||{},a=r.i!=null?r.i:r.f!=null?r.f:n;return typeof a=="number"?a:parseInt(a,10)}function e2(e){switch(typeof e=="string"&&(e=Sr[e]),e){case Sr.DT_FLOAT:return"float32";case Sr.DT_INT32:case Sr.DT_INT64:case Sr.DT_INT8:case Sr.DT_UINT8:return"int32";case Sr.DT_BOOL:return"bool";case Sr.DT_DOUBLE:return"float32";case Sr.DT_STRING:return"string";default:return null}}function Fv(e,t,n){let r=e[t];return r&&r.func?r.func.name:n}function t2(e,t,n){let r=e[t];return r&&r.type?e2(r.type):n}function n2(e,t,n){let r=e[t];return r&&r.list&&r.list.type?r.list.type.map(a=>e2(a)):n}function Dv(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function r2(e,t,n){let r=e[t];return r&&r.shape?Dv(r.shape):n}function a2(e,t,n){let r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map(a=>typeof a=="number"?a:parseInt(a,10)):n}function s2(e,t,n,r=!1){let a=e[t];return a&&a.list&&a.list.s?a.list.s.map(s=>$v(s,r)):n}function i2(e,t,n){let r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map(a=>Dv(a)):n}function o2(e,t,n){let r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var ere=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(r=>this.getInput(r)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((r,a)=>(r[a]=this.getAttr(a),r),{}))}getInput(e){return En(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return En(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return Qy(this.node.rawAttrs,e,t);if(n.s!=null)return Yy(this.node.rawAttrs,e,t);if(n.b!=null)return Jy(this.node.rawAttrs,e,t);if(n.shape!=null)return r2(this.node.rawAttrs,e,t);if(n.type!=null)return t2(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return a2(this.node.rawAttrs,e,t);if(n.list.s!=null)return s2(this.node.rawAttrs,e,t);if(n.list.shape!=null)return i2(this.node.rawAttrs,e,t);if(n.list.b!=null)return o2(this.node.rawAttrs,e,t);if(n.list.type!=null)return n2(this.node.rawAttrs,e,t)}return t}},tre=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[se(k("a",e,t,n),k("b",e,t,n))];case"AddN":return[Ma(k("tensors",e,t,n))];case"FloorMod":case"Mod":return[om(k("a",e,t,n),k("b",e,t,n))];case"Mul":return[P(k("a",e,t,n),k("b",e,t,n))];case"RealDiv":case"Div":return[ge(k("a",e,t,n),k("b",e,t,n))];case"DivNoNan":return[Yf(k("a",e,t,n),k("b",e,t,n))];case"FloorDiv":return[hd(k("a",e,t,n),k("b",e,t,n))];case"Sub":return[ye(k("a",e,t,n),k("b",e,t,n))];case"Minimum":return[fl(k("a",e,t,n),k("b",e,t,n))];case"Maximum":return[Dr(k("a",e,t,n),k("b",e,t,n))];case"Pow":return[sa(k("a",e,t,n),k("b",e,t,n))];case"SquaredDifference":return[Dd(k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},nre=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[zt(k("x",e,t,n))];case"Acos":return[Df(k("x",e,t,n))];case"Acosh":return[Of(k("x",e,t,n))];case"Asin":return[Pf(k("x",e,t,n))];case"Asinh":return[Lf(k("x",e,t,n))];case"Atan":return[Wf(k("x",e,t,n))];case"Atan2":return[Bf(k("x",e,t,n),k("y",e,t,n))];case"Atanh":return[Vf(k("x",e,t,n))];case"Ceil":return[Gf(k("x",e,t,n))];case"Complex":return[Ca(k("real",e,t,n),k("imag",e,t,n))];case"Cos":return[Vu(k("x",e,t,n))];case"Cosh":return[Ad(k("x",e,t,n))];case"Elu":return[cl(k("x",e,t,n))];case"Erf":return[Jf(k("x",e,t,n))];case"Exp":return[qn(k("x",e,t,n))];case"Expm1":return[Qf(k("x",e,t,n))];case"Floor":return[hl(k("x",e,t,n))];case"Log":return[Mn(k("x",e,t,n))];case"Log1p":return[wd(k("x",e,t,n))];case"Imag":return[gd(k("x",e,t,n))];case"Neg":return[vt(k("x",e,t,n))];case"Reciprocal":return[cm(k("x",e,t,n))];case"Real":return[Ku(k("x",e,t,n))];case"Relu":return[zr(k("x",e,t,n))];case"Round":return[hm(k("x",e,t,n))];case"Selu":return[Cd(k("x",e,t,n))];case"Sigmoid":return[Fn(k("x",e,t,n))];case"Sin":return[Ed(k("x",e,t,n))];case"Sign":return[pm(k("x",e,t,n))];case"Sinh":return[Rd(k("x",e,t,n))];case"Softplus":return[dl(k("x",e,t,n))];case"Sqrt":return[en(k("x",e,t,n))];case"Square":return[lt(k("x",e,t,n))];case"Tanh":return[ol(k("x",e,t,n))];case"Tan":return[Am(k("x",e,t,n))];case"ClipByValue":return[vn(k("x",e,t,n),k("clipValueMin",e,t,n),k("clipValueMax",e,t,n))];case"Relu6":return[Sd(k("x",e,t,n))];case"Rsqrt":return[Td(En(e.inputNames[0],t,n))];case"Prod":return[Nd(k("x",e,t,n),k("axes",e,t,n))];case"LeakyRelu":return[Hu(k("x",e,t,n),k("alpha",e,t,n))];case"Prelu":return[Xu(k("x",e,t,n),k("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function hr(e,t,n=""){if(!(typeof e=="number"||typeof t=="number")){v.assert(e.length===t.length,()=>n+` Shapes ${e} and ${t} must match`);for(let r=0;rn+` Shapes ${e} and ${t} must match`)}}}function Ov(e){return!(typeof e=="number"||e.some(t=>t<0))}function Oc(e,t,n){let r=l2(e,n),a=!Ov(r);if(a&&t.length===0)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(a&&t.forEach(s=>{r=l2(s.shape,r)}),!Ov(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function l2(e,t){if(typeof e=="number")return t;if(typeof t=="number")return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);let n=[];for(let r=0;r=0&&s>=0&&a!==s)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=a>=0?a:s}return n}var rre=class{constructor(e,t,n,r,a,s,i){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=a,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=be(0),Gt(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, +2. The custom ${r} is defined in JavaScript, but is not registered properly with tf.serialization.registerClass().`);if(l!=null){let u={};for(let p of Object.keys(lr))u[p]=lr[p];for(let p of Object.keys(n))u[p]=n[p];let c=s.config;c.customObjects=u;let h=Object.assign({},lr);for(let p of Object.keys(n))lr[p]=n[p];pA(s.config);let d=l(o,s.config,n,a);return lr=Object.assign({},h),d}else{let u=Object.assign({},lr);for(let h of Object.keys(n))lr[h]=n[h];let c=new o(s.config);return lr=Object.assign({},u),c}}}function nQ(e,t){return et?1:0}function kp(e,t){return-1*nQ(e,t)}function Ua(e){if(e==null)return e;let t=[];for(let n of e)t.indexOf(n)===-1&&t.push(n);return t}function rQ(e){if(e==null)throw new V(`Invalid value in obj: ${JSON.stringify(e)}`);for(let t in e)if(e.hasOwnProperty(t))return!1;return!0}function Ni(e,t,n){if(n!=null&&e.indexOf(n)<0)throw new V(`${n} is not a valid ${t}. Valid values are ${e} or null/undefined.`)}function fA(e,t,n=0,r=Infinity){return Br(n>=0),Br(r>=n),Array.isArray(e)&&e.length>=n&&e.length<=r&&e.every(a=>typeof a===t)}function Xt(e,t){Array.isArray(e)?(v.assert(e.length>0,()=>`${t} is unexpectedly an empty array.`),e.forEach((n,r)=>Xt(n,`element ${r+1} of ${t}`))):v.assert(Number.isInteger(e)&&e>0,()=>`Expected ${t} to be a positive integer, but got ${$3(e)}.`)}function $3(e){return e===null?"null":Array.isArray(e)?"["+e.map(t=>$3(t)).join(",")+"]":typeof e=="string"?`"${e}"`:`${e}`}function aQ(e,t){let n=v.now(),r;return(...a)=>{let s=v.now();return s-nen(Te(P(e,e),t,!0)))}var xc=class extends re.Serializable{getConfig(){return{}}},AA=class extends xc{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=vn(t,0,this.maxValue);return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};AA.className="MaxNorm";re.registerClass(AA);var yA=class extends xc{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>ge(e,se(Wt(),mA(e,this.axis))))}getConfig(){return{axis:this.axis}}};yA.className="UnitNorm";re.registerClass(yA);var gA=class extends xc{apply(e){return zr(e)}};gA.className="NonNeg";re.registerClass(gA);var xA=class extends xc{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=mA(e,this.axis),n=se(P(this.rate,vn(t,this.minValue,this.maxValue)),P(1-this.rate,t));return P(e,ge(n,se(Wt(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};xA.className="MinMaxNorm";re.registerClass(xA);var O3={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function Bt(e){return dA(e)}function z3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"constraint")}function Vt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in O3?O3[e]:e,config:{}};return z3(t)}else return e instanceof xc?e:z3(e)}function JJ(e){return new AA(e)}function QJ(e){return new yA(e)}function eQ(){return new gA}function tQ(e){return new xA(e)}var P3={};ze(P3,{constant:()=>oQ,glorotNormal:()=>fQ,glorotUniform:()=>pQ,heNormal:()=>mQ,heUniform:()=>AQ,identity:()=>hQ,leCunNormal:()=>yQ,leCunUniform:()=>gQ,ones:()=>iQ,orthogonal:()=>xQ,randomNormal:()=>uQ,randomUniform:()=>lQ,truncatedNormal:()=>cQ,varianceScaling:()=>dQ,zeros:()=>sQ});var wQ=["channelsFirst","channelsLast"],_Q=["nearest","bilinear"],bQ=["valid","same","causal"],vQ=["max","avg"],kQ=["sum","mul","concat","ave"],Dl=new Map;function Tt(e){Ni(wQ,"DataFormat",e)}function NQ(e){Ni(_Q,"InterpolationFormat",e)}function Yn(e){Ni(bQ,"PaddingMode",e)}function L3(e){Ni(vQ,"PoolMode",e)}var wc=[],W3="/";function Ii(e,t){wc.push(e);try{let n=t();return wc.pop(),n}catch(n){throw wc.pop(),n}}function IQ(){return wc.length===0?"":wc.join(W3)+W3}function V3(e){if(!B3(e))throw new Error("Not a valid tensor name: '"+e+"'");return IQ()+e}function U3(e){if(!B3(e))throw new Error("Not a valid tensor name: '"+e+"'");Dl.has(e)||Dl.set(e,0);let t=Dl.get(e);if(Dl.set(e,Dl.get(e)+1),t>0){let n=`${e}_${t}`;return Dl.set(n,1),n}else return e}var SQ=new RegExp(/^[A-Za-z0-9][-A-Za-z0-9\._\/]*$/);function B3(e){return!!e.match(SQ)}function TQ(e){return e===parseInt(e.toString(),10)}function Ha(e,t,n){t==null&&(t=0),n==null&&(n=e.length);let r=1;for(let a=t;a{if(e.shape.length!==2)throw new V(`repeat() expects a rank-2 tensor, but received a rank-${e.shape.length} tensor.`);let n=bc(e,1);return wA(n,[1,t,1])})}function EQ(e){let t=[Ha(e.shape)];return e.reshape(t)}function RQ(e){if(e.rank<=1)throw new V(`batchFlatten requires a minimum rank of 2. Got rank: ${e.rank}.`);let t=[e.shape[0],Ha(e.shape,1)];return e.reshape(t)}function Si(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[t,0],[n,e.shape[1]]);case 3:return Md(e,[t,0,0],[n,e.shape[1],e.shape[2]]);case 4:return Zu(e,[t,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3]]);case 5:return Re(e,[t,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4]]);case 6:return Re(e,[t,0,0,0,0,0],[n,e.shape[1],e.shape[2],e.shape[3],e.shape[4],e.shape[5]]);default:throw new V(`sliceAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}})}function _A(e,t,n){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:return fm(e,[0,t],[e.shape[0],n]);case 3:return Md(e,[0,0,t],[e.shape[0],e.shape[1],n]);case 4:return Zu(e,[0,0,0,t],[e.shape[0],e.shape[1],e.shape[2],n]);default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function Np(e,t,n,r){return B(()=>{switch(e.rank){case 1:return Fd(e,t,n);case 2:switch(r){case 1:return Si(e,t,n);case 2:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 3:switch(r){case 1:return Si(e,t,n);case 2:return Md(e,[0,t,0],[e.shape[0],n,e.shape[2]]);case 3:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}case 4:switch(r){case 1:return Si(e,t,n);case 2:return Zu(e,[0,t,0,0],[e.shape[0],n,e.shape[2],e.shape[3]]);case 3:return Zu(e,[0,0,t,0],[e.shape[0],e.shape[1],n,e.shape[3]]);case 4:return _A(e,t,n);default:throw new V(`The axis is not within the rank of the tensor ${r}`)}default:throw new V(`sliceAlongLastAxis() received an unsupported tensor rank: ${e.rank}`)}})}function bA(e,t=-1){let n;return t<0&&(n=e[0].rank,n!==0?t=n:t=0),t===e[0].rank&&(t=-1),st(e,t)}function j3(e,t){switch(e.rank){case 1:return K5([e,t]);case 2:return ll([e,t],0);case 3:return Z5([e,t],0);case 4:return Y5([e,t],0);default:throw new V(`concatAlongFirstAxis() received an unsupported tensor rank: ${e.rank}`)}}function wA(e,t){if(Array.isArray(t)||(t=[t]),e.rank!==t.length)throw new V(`The length of input n (${t.length}) does not match the number of dimensions in input x (${e.rank})`);return Oa(e,t)}function Ip(e,t=0,n=1,r,a){return fx(e,t,n,r,a)}function Vr(e,t,n,r){if(e.rank<2||t.rank<2)throw new De(`dot requires both inputs to be rank >= 2 but got x shape = ${e.shape} and y shape = ${t.shape}`);if(t.rank>=3){let a=e.shape.slice(-1)[0],s=t.shape.slice(-2)[0];if(a!==s)throw new De(`If rank y >= 3, then the second last dim of y must equal the last dim of x but got x shape = ${e.shape} and y shape = ${t.shape}`)}if(e.rank===2&&t.rank===2){let a=!1,s=!1;return La.matMul({a:e,b:t,transposeA:a,transposeB:s,bias:r?vA(e.rank,r,_r()):null,activation:n})}else{let a=e.shape.slice(),s=a.pop();e=e.reshape([-1,s]);let i=t.shape.slice(),o=i.pop(),l=i.pop(),u=[...i,o],c=Array.from({length:t.rank},(f,m)=>m===0?t.rank-2:m<=t.rank-2?m-1:m);t=t.transpose(c).reshape([l,-1]);let h=[...a,...u],d=!1,p=!1;return La.matMul({a:e,b:t,transposeA:d,transposeB:p,bias:r?vA(e.rank,r,_r()):null,activation:n}).reshape(h)}}function G3(e,t,n){return B(()=>(Array.isArray(t)?t=on(t,"int32"):t=t.toInt(),ui(e,t,n)))}function vc(e){return P(e,e)}function vA(e,t,n){let r=t.shape;if(t.rank!==1&&t.rank!==e)throw new V(`Unexpected bias dimensions: ${t.rank}; expected it to be 1 or ${e}`);if(e===5){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1,1]):t.reshape([1,r[3],r[0],r[1],r[2]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===4){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1,1]):t.reshape([1,r[2],r[0],r[1]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,1,r[0]]):t.reshape([1].concat(r))}else if(e===3){if(n==="channelsFirst")return r.length===1?t.reshape([1,r[0],1]):t.reshape([1,r[1],r[0]]);if(n==="channelsLast")return r.length===1?t.reshape([1,1,r[0]]):t.reshape([1].concat(r))}else if(e<3)return t;throw new V(`Unsupported input rank by biasAdd: ${t.rank}`)}function Ur(e,t,n){return B(()=>(n==null&&(n=_r()),Tt(n),e.add(vA(e.rank,t,n))))}function FQ(e,t=1){if(t!==1)throw new De(`Support for alpha values other than 1 (${t}) is not implemented yet.`);return cl(e)}function MQ(e){return B(()=>ge(e,zt(e).add(1)))}function q3(e,t,n,r){return B(()=>_x(e,t,n,r))}function $Q(e){return B(()=>{let t=se(.5,P(.2,e));return vn(t,0,1)})}function kc(e,t,n=!1){return n?e():t()}var DQ=["fanIn","fanOut","fanAvg"],OQ=["normal","uniform","truncatedNormal"];function zQ(e){Ni(DQ,"FanMode",e)}function PQ(e){Ni(OQ,"Distribution",e)}var ur=class extends re.Serializable{fromConfigUsesCustomObjects(){return!1}getConfig(){return{}}},kA=class extends ur{apply(e,t){return Et(e,t)}};kA.className="Zeros";re.registerClass(kA);var Sp=class extends ur{apply(e,t){return Or(e,t)}};Sp.className="Ones";re.registerClass(Sp);var NA=class extends ur{constructor(e){super();if(typeof e!="object")throw new V(`Expected argument of type ConstantConfig but got ${e}`);if(e.value===void 0)throw new V(`config must have value set but got ${e}`);this.value=e.value}apply(e,t){return B(()=>P(be(this.value),Or(e,t)))}getConfig(){return{value:this.value}}};NA.className="Constant";re.registerClass(NA);var IA=class extends ur{constructor(e){super();this.DEFAULT_MINVAL=-.05,this.DEFAULT_MAXVAL=.05,this.minval=e.minval||this.DEFAULT_MINVAL,this.maxval=e.maxval||this.DEFAULT_MAXVAL,this.seed=e.seed}apply(e,t){return ml(e,this.minval,this.maxval,t)}getConfig(){return{minval:this.minval,maxval:this.maxval,seed:this.seed}}};IA.className="RandomUniform";re.registerClass(IA);var SA=class extends ur{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`randomNormal does not support dType ${t}.`);return Ip(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};SA.className="RandomNormal";re.registerClass(SA);var TA=class extends ur{constructor(e){super();this.DEFAULT_MEAN=0,this.DEFAULT_STDDEV=.05,this.mean=e.mean||this.DEFAULT_MEAN,this.stddev=e.stddev||this.DEFAULT_STDDEV,this.seed=e.seed}apply(e,t){if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`truncatedNormal does not support dType ${t}.`);return Od(e,this.mean,this.stddev,t,this.seed)}getConfig(){return{mean:this.mean,stddev:this.stddev,seed:this.seed}}};TA.className="TruncatedNormal";re.registerClass(TA);var CA=class extends ur{constructor(e){super();this.gain=e.gain!=null?e.gain:1}apply(e,t){return B(()=>{if(e.length!==2||e[0]!==e[1])throw new V("Identity matrix initializer can only be used for 2D square matrices.");return P(this.gain,em(e[0]))})}getConfig(){return{gain:this.gain}}};CA.className="Identity";re.registerClass(CA);function LQ(e,t="channelsLast"){let n,r;if(Tt(t),e.length===2)n=e[0],r=e[1];else if([3,4,5].indexOf(e.length)!==-1){if(t==="channelsFirst"){let a=Ha(e,2);n=e[1]*a,r=e[0]*a}else if(t==="channelsLast"){let a=Ha(e,0,e.length-2);n=e[e.length-2]*a,r=e[e.length-1]*a}}else{let a=Ha(e);n=Math.sqrt(a),r=Math.sqrt(a)}return[n,r]}var Cn=class extends ur{constructor(e){super();if(e.scale<0)throw new V(`scale must be a positive float. Got: ${e.scale}`);this.scale=e.scale==null?1:e.scale,this.mode=e.mode==null?"fanIn":e.mode,zQ(this.mode),this.distribution=e.distribution==null?"normal":e.distribution,PQ(this.distribution),this.seed=e.seed}apply(e,t){let n=LQ(e),r=n[0],a=n[1],s=this.scale;if(this.mode==="fanIn"?s/=Math.max(1,r):this.mode==="fanOut"?s/=Math.max(1,a):s/=Math.max(1,(r+a)/2),this.distribution==="normal"){let i=Math.sqrt(s);if(t=t||"float32",t!=="float32"&&t!=="int32")throw new De(`${this.getClassName()} does not support dType ${t}.`);return Od(e,0,i,t,this.seed)}else{let i=Math.sqrt(3*s);return ml(e,-i,i,t)}}getConfig(){return{scale:this.scale,mode:this.mode,distribution:this.distribution,seed:this.seed}}};Cn.className="VarianceScaling";re.registerClass(Cn);var Tp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Tp.className="GlorotUniform";re.registerClass(Tp);var Cp=class extends Cn{constructor(e){super({scale:1,mode:"fanAvg",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Cp.className="GlorotNormal";re.registerClass(Cp);var Ep=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Ep.className="HeNormal";re.registerClass(Ep);var Rp=class extends Cn{constructor(e){super({scale:2,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Rp.className="HeUniform";re.registerClass(Rp);var Fp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"normal",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Fp.className="LeCunNormal";re.registerClass(Fp);var Mp=class extends Cn{constructor(e){super({scale:1,mode:"fanIn",distribution:"uniform",seed:e==null?null:e.seed})}getClassName(){return Cn.className}};Mp.className="LeCunNormal";re.registerClass(Mp);var EA=class extends ur{constructor(e){super();if(this.DEFAULT_GAIN=1,this.gain=e.gain==null?this.DEFAULT_GAIN:e.gain,this.seed=e.seed,this.seed!=null)throw new De("Random seed is not implemented for Orthogonal Initializer yet.")}apply(e,t){return B(()=>{if(e.length<2)throw new De("Shape must be at least 2D.");e[0]*e[1]>2e3&&console.warn(`Orthogonal initializer is being called on a matrix with more than 2000 (${e[0]*e[1]}) elements: Slowness may result.`);let n=e[0]>e[1]?[e[1],e[0]]:e,r=Ip(n,0,1,"float32"),a=$x.gramSchmidt(r);return e[0]>e[1]&&(a=a.transpose()),P(this.gain,a)})}getConfig(){return{gain:this.gain,seed:this.seed}}};EA.className="Orthogonal";re.registerClass(EA);var X3={constant:"Constant",glorotNormal:"GlorotNormal",glorotUniform:"GlorotUniform",heNormal:"HeNormal",heUniform:"HeUniform",identity:"Identity",leCunNormal:"LeCunNormal",leCunUniform:"LeCunUniform",ones:"Ones",orthogonal:"Orthogonal",randomNormal:"RandomNormal",randomUniform:"RandomUniform",truncatedNormal:"TruncatedNormal",varianceScaling:"VarianceScaling",zeros:"Zeros"};function K3(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"initializer")}function Nt(e){return dA(e)}function xt(e){if(typeof e=="string"){let t=e in X3?X3[e]:e;if(t==="GlorotNormal")return new Cp;if(t==="GlorotUniform")return new Tp;if(t==="HeNormal")return new Ep;if(t==="HeUniform")return new Rp;if(t==="LeCunNormal")return new Fp;if(t==="LeCunUniform")return new Mp;{let n={};return n.className=t,n.config={},K3(n)}}else return e instanceof ur?e:K3(e)}function sQ(){return new kA}function iQ(){return new Sp}function oQ(e){return new NA(e)}function lQ(e){return new IA(e)}function uQ(e){return new SA(e)}function cQ(e){return new TA(e)}function hQ(e){return new CA(e)}function dQ(e){return new Cn(e)}function pQ(e){return new Tp(e)}function fQ(e){return new Cp(e)}function mQ(e){return new Ep(e)}function AQ(e){return new Rp(e)}function yQ(e){return new Fp(e)}function gQ(e){return new Mp(e)}function xQ(e){return new EA(e)}var Z3={};ze(Z3,{Layer:()=>qe,RNN:()=>Hr,RNNCell:()=>Nc,activation:()=>tee,add:()=>cee,alphaDropout:()=>qee,average:()=>hee,averagePooling1d:()=>RA,averagePooling2d:()=>FA,averagePooling3d:()=>MA,avgPool1d:()=>wee,avgPool2d:()=>bee,avgPool3d:()=>kee,avgPooling1d:()=>_ee,avgPooling2d:()=>vee,avgPooling3d:()=>Nee,batchNormalization:()=>yee,bidirectional:()=>Lee,concatenate:()=>dee,conv1d:()=>qQ,conv2d:()=>XQ,conv2dTranspose:()=>KQ,conv3d:()=>ZQ,convLstm2d:()=>Dee,convLstm2dCell:()=>Oee,cropping2D:()=>JQ,dense:()=>nee,depthwiseConv2d:()=>eee,dot:()=>Aee,dropout:()=>ree,elu:()=>BQ,embedding:()=>uee,flatten:()=>see,gaussianDropout:()=>Gee,gaussianNoise:()=>jee,globalAveragePooling1d:()=>Iee,globalAveragePooling2d:()=>See,globalMaxPool1d:()=>Bee,globalMaxPool2d:()=>Vee,globalMaxPooling1d:()=>J3,globalMaxPooling2d:()=>Q3,gru:()=>Cee,gruCell:()=>Eee,input:()=>Y3,inputLayer:()=>WQ,layerNormalization:()=>gee,leakyReLU:()=>UQ,lstm:()=>Ree,lstmCell:()=>Fee,masking:()=>Xee,maxPool1d:()=>Uee,maxPool2d:()=>Hee,maxPooling1d:()=>e7,maxPooling2d:()=>t7,maxPooling3d:()=>Tee,maximum:()=>pee,minimum:()=>fee,multiply:()=>mee,permute:()=>lee,prelu:()=>HQ,reLU:()=>VQ,repeatVector:()=>iee,reshape:()=>oee,rnn:()=>zee,separableConv2d:()=>YQ,simpleRNN:()=>Mee,simpleRNNCell:()=>$ee,softmax:()=>jQ,spatialDropout1d:()=>aee,stackedRNNCells:()=>Pee,thresholdedReLU:()=>GQ,timeDistributed:()=>Wee,upSampling2d:()=>QQ,zeroPadding2d:()=>xee});var Kee=0;function n7(){return Kee++}var $p={};function Dp(e=""){return e in $p||($p[e]=0),$p[e]+=1,e+$p[e].toString()}function $A(e){return Array.isArray(e)&&Array.isArray(e[0])}function Op(e){return e.length===0?[]:Array.isArray(e[0])?e:[e]}function Pe(e){let t;if(Array.isArray(e)){if(e.length!==1)throw new V(`Expected Tensor length to be 1; got ${e.length}`);t=e[0]}else t=e;return t}function ct(e){if(Array.isArray(e)&&Array.isArray(e[0])){if(e.length===1)return e=e,e[0];throw new V(`Expected exactly 1 Shape; got ${e.length}`)}else return e}function zp(e){let t=0;for(let n of e)n.shape.length===0?t+=1:t+=n.shape.reduce((r,a)=>r*a);return t}var r7="Variable",a7=class{constructor(e,t="float32",n=r7,r=!0,a=null){this.dtype=t==null?"float32":t,this.shape=e.shape,this.id=n7(),n=n==null?r7:n,this.originalName=V3(n),this.name=U3(this.originalName),this.trainable_=r,this.constraint=a,this.val=Ax(e,this.trainable_,this.name,this.dtype)}read(){return this.assertNotDisposed(),this.val}write(e){return this.assertNotDisposed(),Zee(this.val,e),this.val.id!==e.id&&(this.val.assign(e),this.constraint!=null&&this.val.assign(this.constraint.apply(this.val))),this}dispose(){this.assertNotDisposed(),this.val.dispose()}assertNotDisposed(){if(this.val.isDisposed)throw new Error(`LayersVariable ${this.name} is already disposed.`)}get trainable(){return this.trainable_}set trainable(e){this.trainable_=e,this.val.trainable=e}};function Zee(e,t){if(e.shape.toString()!==t.shape.toString())throw new Error("Shape mismatch: "+JSON.stringify(e.shape)+" vs. "+JSON.stringify(t.shape))}function DA(e){return e.map(t=>t.read())}function OA(e){e.forEach(t=>{t[0].write(t[1])})}var Kt=class{constructor(e){this.dtype=e.dtype,this.shape=e.shape,e.shape!=null?this.ndim=e.shape.length:this.ndim=e.ndim,this.maxNDim=e.maxNDim,this.minNDim=e.minNDim,this.axes=e.axes||{}}},kr=class{constructor(e,t,n,r,a,s,i){this.dtype=e,this.shape=t,this.sourceLayer=n,this.inputs=r,this.callArgs=a,this.outputTensorIndex=i,this.id=n7(),s!=null&&(this.originalName=V3(s),this.name=U3(this.originalName)),this.rank=t.length}},Yee=0,Pp=class{constructor(e,t){this.callArgs=t,this.id=Yee++,this.outboundLayer=e.outboundLayer,this.inboundLayers=e.inboundLayers,this.nodeIndices=e.nodeIndices,this.tensorIndices=e.tensorIndices,this.inputTensors=e.inputTensors,this.outputTensors=e.outputTensors,this.inputMasks=e.inputMasks,this.outputMasks=e.outputMasks,this.inputShapes=e.inputShapes,this.outputShapes=e.outputShapes;for(let n of e.inboundLayers)n!=null&&n.outboundNodes.push(this);e.outboundLayer.inboundNodes.push(this)}getConfig(){let e=[];for(let t of this.inboundLayers)t!=null?e.push(t.name):e.push(null);return{outboundLayer:this.outboundLayer?this.outboundLayer.name:null,inboundLayers:e,nodeIndices:this.nodeIndices,tensorIndices:this.tensorIndices}}},Jee=0,qe=class extends re.Serializable{constructor(e={}){super();this._callHook=null,this._addedWeightNames=[],this._stateful=!1,this.id=Jee++,this.activityRegularizer=null,this.inputSpec=null,this.supportsMasking=!1,this._trainableWeights=[],this._nonTrainableWeights=[],this._losses=[],this._updates=[],this._built=!1,this.inboundNodes=[],this.outboundNodes=[];let t=e.name;if(!t){let n=this.getClassName();t=ca(n)+"_"+Dp(n)}if(this.name=t,this.trainable_=e.trainable==null?!0:e.trainable,e.inputShape!=null||e.batchInputShape!=null){let n;if(e.batchInputShape!=null)n=e.batchInputShape;else if(e.inputShape!=null){let a=null;e.batchSize!=null&&(a=e.batchSize),n=[a].concat(e.inputShape)}this.batchInputShape=n;let r=e.dtype;r==null&&(r=e.inputDType),r==null&&(r="float32"),this.dtype=r}e.weights!=null?this.initialWeights=e.weights:this.initialWeights=null,this._refCount=null,this.fastWeightInitDuringBuild=!1}static nodeKey(e,t){return e.name+"_ib-"+t.toString()}getNodeAtIndex(e,t){if(this.inboundNodes.length===0)throw new br(`The layer has never been called and thus has no defined ${t}.`);if(this.inboundNodes.length<=e)throw new V(`Asked to get ${t} at node ${e}, but the layer has only ${this.inboundNodes.length} inbound nodes.`);return this.inboundNodes[e]}getInputAt(e){return Tn(this.getNodeAtIndex(e,"input").inputTensors)}getOutputAt(e){return Tn(this.getNodeAtIndex(e,"output").outputTensors)}get input(){if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer input" is ill-defined. Use \`getInputAt(nodeIndex)\` instead.`);if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} is not connected, no input to return.`);return Tn(this.getNodeAtIndex(0,"input").inputTensors)}get output(){if(this.inboundNodes.length===0)throw new ua(`Layer ${this.name} has no inbound nodes.`);if(this.inboundNodes.length>1)throw new ua(`Layer ${this.name} has multiple inbound nodes, hence the notion of "layer output" is ill-defined. Use \`getOutputAt(nodeIndex)\` instead.`);return Tn(this.getNodeAtIndex(0,"output").outputTensors)}get losses(){return this._losses}calculateLosses(){return this.losses.map(e=>e())}get updates(){return this._updates}get built(){return this._built}set built(e){this._built=e}get trainable(){return this.trainable_}set trainable(e){this._trainableWeights.forEach(t=>t.trainable=e),this.trainable_=e}get trainableWeights(){return this.trainable_?this._trainableWeights.filter(e=>e.trainable):[]}set trainableWeights(e){this._trainableWeights=e}get nonTrainableWeights(){return this.trainable?this._trainableWeights.filter(e=>!e.trainable).concat(this._nonTrainableWeights):this._trainableWeights.concat(this._nonTrainableWeights)}set nonTrainableWeights(e){this._nonTrainableWeights=e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}get stateful(){return this._stateful}resetStates(){if(!this.stateful)throw new Error("Cannot call the resetStates() method of a non-stateful Layer object.")}assertInputCompatibility(e){if(e=ft(e),this.inputSpec==null||this.inputSpec.length===0)return;let t=ft(this.inputSpec);if(e.length!==t.length)throw new V(`Layer ${this.name} expects ${t.length} inputs, but it received ${e.length} input tensors. Input received: ${e}`);for(let n=0;na.maxNDim)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected max_ndim=${a.maxNDim}, found ndim=${s}`);if(a.minNDim!=null&&s=0?i[l]:i[i.length+l];if(u!=null&&[u,null].indexOf(c)===-1)throw new V(`Input ${n} is incompatible with layer ${this.name}: expected axis ${l} of input shape to have value ${u} but got shape ${i}.`)}}if(a.shape!=null)for(let i=0;i{if(!this.built){this.assertInputCompatibility(e);let s=[];for(let i of ft(e))s.push(i.shape);this.build(Tn(s)),this.built=!0,this.initialWeights&&this.setWeights(this.initialWeights),this._refCount===null&&a&&(this._refCount=1)}if(this.assertInputCompatibility(e),a){let s=this.call(e,t),i=ft(s),o=[];for(let l of i)n.indexOf(l)!==-1&&(l=l.clone()),o.push(l);if(s=Tn(o),this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return s}else{let s=Qee(e),i=this.computeOutputShape(s),o,l=ete(e);if(this.warnOnIncompatibleInputShape(Array.isArray(e)?s[0]:s),i!=null&&i.length>0&&Array.isArray(i[0])?o=i.map((u,c)=>new kr(l,u,this,ft(e),t,this.name,c)):o=new kr(l,i,this,ft(e),t,this.name),this.addInboundNode(e,o,null,null,s,i,t),this._refCount++,this.activityRegularizer!=null)throw new De("Layer invocation in the presence of activity regularizer(s) is not supported yet.");return o}})}warnOnIncompatibleInputShape(e){if(this.batchInputShape!=null)if(e.length!==this.batchInputShape.length)console.warn(`The rank of the input tensor provided (shape: ${JSON.stringify(e)}) does not match that of the batchInputShape (${JSON.stringify(this.batchInputShape)}) of the layer ${this.name}`);else{let t=!1;this.batchInputShape.forEach((n,r)=>{n!=null&&e[r]!=null&&e[r]!==n&&(t=!0)}),t&&console.warn(`The shape of the input tensor (${JSON.stringify(e)}) does not match the expectation of layer ${this.name}: ${JSON.stringify(this.batchInputShape)}`)}}get outputShape(){if(this.inboundNodes==null||this.inboundNodes.length===0)throw new ua(`The layer ${this.name} has never been called and thus has no defined output shape.`);let e=[];for(let t of this.inboundNodes){let n=JSON.stringify(t.outputShapes);e.indexOf(n)===-1&&e.push(n)}if(e.length===1){let t=this.inboundNodes[0].outputShapes;return Array.isArray(t)&&Array.isArray(t[0])&&t.length===1?t[0]:t}else throw new ua(`The layer ${this.name} has multiple inbound nodes with different output shapes. Hence the notion of "output shape" is ill-defined for the layer.`)}countParams(){if(!this.built)throw new br(`You tried to call countParams() on ${this.name}, but the layer is not built yet. Build it first by calling build(batchInputShape).`);return zp(this.weights)}build(e){this.built=!0}getWeights(e=!1){return DA(e?this.trainableWeights:this.weights)}setWeights(e){B(()=>{let t=this.weights;if(t.length!==e.length)throw new V(`You called setWeights(weights) on layer "${this.name}" with a weight list of length ${e.length}, but the layer was expecting ${t.length} weights. Provided weights: ${e}...`);if(t.length===0)return;let n=[],r=DA(t);for(let a=0;aa.apply(l.read())),s==null&&(s=!0),s?this._trainableWeights.push(l):this._nonTrainableWeights.push(l),l}setFastWeightInitDuringBuild(e){this.fastWeightInitDuringBuild=e}addLoss(e){e==null||Array.isArray(e)&&e.length===0||(e=ft(e),this._losses!==void 0&&this._losses!==null&&this.losses.push(...e))}computeOutputShape(e){return e}computeMask(e,t){if(!this.supportsMasking){if(t!=null)if(Array.isArray(t))t.forEach(n=>{if(n!=null)throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`)});else throw new TypeError(`Layer ${this.name} does not support masking, but was passed an inputMask.`);return null}return t}addInboundNode(e,t,n,r,a,s,i=null){let o=ft(e);t=ft(t),n=ft(n),r=ft(r),a=Op(a),s=Op(s);let l=[],u=[],c=[];for(let h of o)l.push(h.sourceLayer),u.push(h.nodeIndex),c.push(h.tensorIndex);new Pp({outboundLayer:this,inboundLayers:l,nodeIndices:u,tensorIndices:c,inputTensors:o,outputTensors:t,inputMasks:n,outputMasks:r,inputShapes:a,outputShapes:s},i);for(let h=0;he.dispose()),this.weights.length}assertNotDisposed(){if(this._refCount===0)throw new Error(`Layer '${this.name}' is already disposed.`)}dispose(){if(!this.built)throw new Error(`Cannot dispose Layer ${this.name} because it has not been built yet.`);if(this._refCount===null)throw new Error(`Cannot dispose Layer ${this.name} because it has not been used yet.`);this.assertNotDisposed();let e=0;return--this._refCount==0&&(e=this.disposeWeights()),{refCountAfterDispose:this._refCount,numDisposedVariables:e}}};function Qee(e){e=ft(e);let t=[];for(let n of e)t.push(n.shape);return Tn(t)}function ete(e){return"float32"}function s7(e,t,n){if((t==null||n!=null&&n>0)&&(t=e.sourceLayer,n=e.nodeIndex),t.inboundNodes.length===0)return[e];{let r=t.inboundNodes[n];if(r.inboundLayers.length===0)return r.inputTensors;{let a=[];for(let s=0;s0){let a=await Promise.all(t);for(let s=0;sse(this.totals[r],P(a,n)));this.totals[r]=i,s!=null&&s.dispose()}}}async onEpochEnd(e,t){if(t!=null)for(let n of this.params.metrics)this.totals[n]!=null&&(typeof this.totals[n]=="number"?t[n]=this.totals[n]/this.seen:B(()=>{let r=P(ge(1,this.seen),this.totals[n]);t[n]=r,this.totals[n].dispose(),Gt(t[n])}))}},c7=class extends Pl{async onTrainBegin(e){this.epoch=[],this.history={}}async onEpochEnd(e,t){t==null&&(t={}),this.epoch.push(e);for(let n in t)this.history[n]==null&&(this.history[n]=[]),this.history[n].push(t[n])}async syncData(){let e=[],t=[],n=[];for(let a in this.history){let s=this.history[a];for(let i=0;inew h7(n,t))}var cr=class{constructor(){}static registerCallbackConstructor(e,t){v.assert(e>=0&&Number.isInteger(e),()=>`Verbosity level is expected to be an integer >= 0, but got ${e}`),cr.checkForDuplicate(t),cr.constructors[e]==null&&(cr.constructors[e]=[]),cr.constructors[e].push(t)}static checkForDuplicate(e){for(let t in cr.constructors)cr.constructors[+t].forEach(n=>{if(n===e)throw new V("Duplicate callback constructor.")})}static clear(){cr.constructors={}}static createCallbacks(e){let t=[];for(let n in cr.constructors){let r=+n;e>=r&&t.push(...cr.constructors[r])}return t.map(n=>new n)}};cr.constructors={};function p7(e,t,n,r,a,s,i,o,l){let u=new c7,c=[new nte,...cr.createCallbacks(t)];e!=null&&c.push(...e),c.push(u);let h=new u7(c);return h.setParams({epochs:n,initialEpoch:r,samples:a,steps:s,batchSize:i,verbose:t,doValidation:o,metrics:l}),{callbackList:h,history:u}}function Nr(e,t={},n=!1){return gc(e,re.SerializationMap.getMap().classNameMap,t,"layer",n)}function Lp(e,t){return B(()=>{e.dtype!=="float32"&&(e=e.asType("float32"));let n=Te(vc(e),t,!0),r=Uu(n.shape,Wt()),a=en(Dr(n,r));return ge(e,a)})}function Ti(e,t){return B(()=>kt(vc(ye(t,e)),-1))}function Wp(e,t){return B(()=>kt(zt(ye(t,e)),-1))}function Ll(e,t){return B(()=>{let n=ye(e,t),r=vn(zt(e),Wt(),Number.MAX_VALUE),a=zt(ge(n,r));return P(100,kt(a,-1))})}function rte(e,t){return B(()=>{let n=vn(t,Wt(),Number.MAX_VALUE),r=Mn(se(1,n)),a=vn(e,Wt(),Number.MAX_VALUE),s=Mn(se(1,a));return kt(vc(ye(r,s)),-1)})}function ate(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(vc(n),-1)})}function ste(e,t){return B(()=>{let n=Dr(0,ye(1,P(e,t)));return kt(n,-1)})}function ite(e,t){return B(()=>{let n=Te(P(e,t),-1),r=Xn(P(ye(1,e),t),-1);return Dr(0,se(1,ye(r,n)))})}function ote(e,t){return B(()=>{let n=Math.log(2),r=ye(t,e),a=ye(se(r,dl(P(-2,r))),n);return kt(a,-1)})}function Ic(e,t,n=!1){return B(()=>{if(n)t=Yu(t);else{let r=Te(t,t.shape.length-1,!0);t=ge(t,r)}return t=vn(t,Wt(),1-Wt()),vt(Te(P(e.toFloat(),Mn(t)),t.shape.length-1))})}function Bp(e,t,n=!1){return B(()=>{let r=hl(EQ(e)).toInt();t=vn(t,Wt(),1-Wt());let a=t.shape,s=nl(r,a[a.length-1]).reshape(a);return Ic(s,t,n)})}function lte(e,t){if(!v.arraysEqual(e.shape,t.shape))throw new V(`logits and labels must have the same shape, but got shapes ${JSON.stringify(e.shape)} and ${JSON.stringify(t.shape)}`);return B(()=>{let n=t.relu(),r=t.abs().neg();return n.sub(t.mul(e)).add(r.exp().log1p())})}function Vp(e,t){return B(()=>{let n;return n=vn(t,Wt(),1-Wt()),n=Mn(ge(n,ye(1,n))),kt(lte(e,n),-1)})}function ute(e,t){return B(()=>{let n=vn(e,Wt(),1),r=vn(t,Wt(),1);return Te(P(e,Mn(ge(n,r))),-1)})}function cte(e,t){return B(()=>{let n=Mn(se(Wt(),t));return kt(ye(t,P(e,n)),-1)})}function zA(e,t){return B(()=>{let n=Lp(e,-1),r=Lp(t,-1),a=P(n,r);return vt(Te(a,-1))})}var Up={meanSquaredError:Ti,meanAbsoluteError:Wp,meanAbsolutePercentageError:Ll,meanSquaredLogarithmicError:rte,squaredHinge:ate,hinge:ste,categoricalHinge:ite,logcosh:ote,categoricalCrossentropy:Ic,sparseCategoricalCrossentropy:Bp,binaryCrossentropy:Vp,kullbackLeiblerDivergence:ute,poisson:cte,cosineProximity:zA};function PA(e){if(typeof e=="string"){if(e in Up)return Up[e];let t=`Unknown loss ${e}`;throw e.toLowerCase().includes("softmaxcrossentropy")&&(t=`Unknown loss ${e}. Use "categoricalCrossentropy" as the string name for tf.losses.softmaxCrossEntropy`),new V(t)}else return e}function LA(e,t){return B(()=>{let n=P(.5,$n(t)),r=_c(ar(t,n),e.dtype);return kt(Da(e,r),-1)})}function WA(e,t){return B(()=>_c(Da(zu(e,-1),zu(t,-1)),"float32"))}function f7(e,t){return B(()=>sr(e.equal(1),t.equal(1)).sum().cast("float32"))}function hte(e,t){return B(()=>sr(e.equal(1),t.equal(0)).sum().cast("float32"))}function dte(e,t){return B(()=>sr(e.equal(0),t.equal(1)).sum().cast("float32"))}function m7(e,t){return B(()=>{let n=f7(e,t),r=dte(e,t),a=n.add(r);return kn(ar(a,0),n.div(a),0).cast("float32")})}function pte(e,t){return B(()=>{let n=f7(e,t),r=hte(e,t),a=n.add(r);return kn(ar(a,0),n.div(a),0).cast("float32")})}function A7(e,t){return Vp(e,t)}function y7(e,t){return e.rank===t.rank&&(e=e.squeeze([e.rank-1])),t=t.argMax(-1),t.dtype!==e.dtype&&(t=t.asType(e.dtype)),Da(e,t).asType("float32")}var fte=Ti,mte=Ti,Ate=Wp,yte=Wp,gte=Ll,xte=Ll,BA=Ic,wte=zA,g7=Bp,Hp={binaryAccuracy:LA,categoricalAccuracy:WA,precision:m7,categoricalCrossentropy:BA,sparseCategoricalCrossentropy:g7,mse:fte,MSE:mte,mae:Ate,MAE:yte,mape:gte,MAPE:xte,cosine:wte};function _te(e){if(typeof e=="string"&&e in Hp)return Hp[e];if(typeof e!="string"&&e!=null)return e;throw new V(`Unknown metric ${e}`)}function jp(e){if(Br(e!==null,`Unknown LossOrMetricFn ${e}`),typeof e=="string")return e;{let t;for(let n of Object.keys(Up))if(Up[n]===e){t=n;break}if(t!==void 0)return t;for(let n of Object.keys(Hp))if(Hp[n]===e){t=n;break}return t!==void 0?t:e.name}}function bte(e){let t={Adagrad:()=>fi.adagrad(.01),Adadelta:()=>fi.adadelta(1,.95,Wt()),Adam:()=>fi.adam(.001,.9,.999,Wt()),Adamax:()=>fi.adamax(.002,.9,.999,Wt(),0),RMSProp:()=>fi.rmsprop(.001,.9,0,Wt()),SGD:()=>fi.sgd(.01)};if(t.adagrad=t.Adagrad,t.adadelta=t.Adadelta,t.adam=t.Adam,t.adamax=t.Adamax,t.rmsprop=t.RMSProp,t.sgd=t.SGD,e in t)return t[e]();throw new V(`Unknown Optimizer ${e}`)}var x7=1*1024*1024;function w7(e,t,n=!1){if(e==null||typeof e!="object"||Object.getPrototypeOf(e)!==Object.prototype||!VA(e))throw new Error("User-defined metadata is expected to be a JSON object, but is not.");if(n){let r=JSON.stringify(e);r.length>x7&&console.warn(`User-defined metadata of model "${t}" is too large in size (length=${r.length} when serialized). It is not recommended to store such large objects in user-defined metadata. Please make sure its serialized length is <= ${x7}.`)}}function VA(e){if(e===null)return!0;if(typeof e=="object")if(Object.getPrototypeOf(e)===Object.prototype){let t=Object.keys(e);for(let n of t)if(typeof n!="string"||!VA(e[n]))return!1;return!0}else if(Array.isArray(e)){for(let t of e)if(!VA(t))return!1;return!0}else return!1;else{let t=typeof e;return t==="string"||t==="number"||t==="boolean"}}function Ste(e,t,n,r=console.log){let a=kte(e),s=["Layer (type)","Output shape","Param #"];a?(t=t||65,n=n||[.45,.85,1]):(t=t||98,n=n||[.33,.55,.67,1]),n[n.length-1]<=1&&(n=n.map(c=>Math.floor(t*c)));let i;if(!a){s.push("Receives inputs"),i=[];for(let c in e.nodesByDepth)i.push(...e.nodesByDepth[c])}r("_".repeat(t)),Gp(s,n,r),r("=".repeat(t));let o=e.layers;for(let c=0;c1||a.length===1&&a[0].inboundLayers.length>1){t=!1;break}r.push(...a)}if(t)for(let a of e.layers){let s=!1;for(let i of a.inboundNodes)if(r.indexOf(i)!==-1)if(s){t=!1;break}else s=!0;if(!t)break}return t}function Gp(e,t,n=console.log){let r="";for(let a=0;a0&&(r=r.slice(0,r.length-1)+" "),r+=e[a],r=r.slice(0,t[a]),r+=" ".repeat(t[a]-r.length);n(r)}function Nte(e,t,n){let r;try{r=JSON.stringify(e.outputShape)}catch(o){r="multiple"}let a=e.name,s=e.getClassName(),i=[`${a} (${s})`,r,e.countParams().toString()];Gp(i,t,n)}function Ite(e,t,n,r){let a;try{a=JSON.stringify(e.outputShape)}catch(c){a="multiple"}let s=[];for(let c of e.inboundNodes)if(!(n!=null&&n.length>0&&n.indexOf(c)===-1))for(let h=0;hf.name),l=[],u=t.names();for(let f of o)u.indexOf(f)!==-1?l.push(t.getValue(f)):l.push(null);r!=null&&(r.maxNumTensors=-Infinity,r.minNumTensors=Infinity);let c=o.join(",")+"|"+t.names().join(","),h,d;if(jA[c]==null){let f=Cte(i,t);h=f.sorted,d=f.recipientCounts,jA[c]=h,b7[c]=d}h=jA[c],d={},a||Object.assign(d,b7[c]);let p=new Ci(t);for(let f=0;fr.maxNumTensors&&(r.maxNumTensors=T),T0,()=>"Expected at least one fetch, got none");let n=[],r={};if(e.length===1){let a=v7(e[0],t);n=a.sorted,r=a.recipientMap}else{let a=new Set;for(let s of e){let{sorted:i,recipientMap:o}=v7(s,t);for(let l of i)a.has(l.name)||(n.push(l),a.add(l.name));for(let l in o)r[l]==null&&(r[l]=new Set),o[l].forEach(u=>r[l].add(u))}}return{sorted:n,recipientCounts:Rte(r)}}function Rte(e){let t={};for(let n in e)t[n]=e[n].size;return t}function v7(e,t){let n=new Set,r=[],a={};for(let o of t.names())n.add(o);let s=[],i=[];for(s.push(e);s.length>0;){let o=s[s.length-1];if(n.has(o.name)){s.pop();continue}let l=i[i.length-1]===s.length-1;if(o.inputs.length===0||l)s.pop(),r.push(o),n.add(o.name),l&&i.pop();else{i.push(s.length-1);for(let u of o.inputs)a[u.name]==null&&(a[u.name]=new Set),a[u.name].add(o.name),!n.has(u.name)&&s.push(u)}}return{sorted:r,recipientMap:a}}function Ete(e){let t;if(e.sourceLayer.inboundNodes.length===1)t=e.sourceLayer.output;else{let n=null;for(let r=0;ry.name)}`);Ua(this.outputs).length!==this.outputs.length&&console.warn(`The list of outputs passed to the model is redundant. All outputs should only appear once. Found: ${this.outputs.map(y=>y.name)}`),this.inputLayers=[],this.inputLayersNodeIndices=[],this.inputLayersTensorIndices=[],this.outputLayers=[],this.outputLayersNodeIndices=[],this.outputLayersTensorIndices=[],this.layers=[],this.internalContainerRefs=[];for(let y of this.outputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;this.outputLayers.push(g),this.outputLayersNodeIndices.push(_),this.outputLayersTensorIndices.push(b)}for(let y of this.inputs){let g=y.sourceLayer,_=y.nodeIndex,b=y.tensorIndex;Br(_===0,"input layer has >1 nodes"),Br(b===0,"input layer has >1 tensors"),this.inputLayers.push(g),this.inputLayersNodeIndices.push(_),this.inputLayersTensorIndices.push(b)}this.inputNames=[],this.outputNames=[],this.feedInputShapes=[],this.feedInputNames=[],this.feedOutputNames=[];for(let y=0;yy.shape),this.internalOutputShapes=this.outputs.map(y=>y.shape);let t={},n={},r={},a={},s={},i=[],o=(y,g,_,b,w,x)=>{(b==null||w==null||x==null)&&(b=y.sourceLayer,w=y.nodeIndex,x=y.tensorIndex);let I=b.inboundNodes[w];if(_.indexOf(I)!==-1)throw new br(`The tensor ${y.name} at layer "${b.name}" is part of a cycle.`);if(g.indexOf(I)!==-1)return;this.containerNodes.add(jr.nodeKey(b,w)),b.id in s||(s[b.id]=Object.keys(s).length),_.indexOf(I)===-1&&_.push(I);let S=I.inboundLayers.length;for(let T=0;T=0;)_.splice(_.indexOf(I),1);i.push(I)},l=[],u=[];for(let y of this.outputs)o(y,l,u);let c=i.slice().reverse();for(let y of c){n[y.id]=y,y.id in t||(t[y.id]=0);let g=t[y.id],_=r[y.outboundLayer.id]==null?0:r[y.outboundLayer.id];g=Math.max(g,_),r[y.outboundLayer.id]=g,a[y.outboundLayer.id]=y.outboundLayer,t[y.id]=g;for(let b=0;bparseInt(y,10)).sort(kp);this.layers=[];for(let y of p){let g=d[y];g.sort((_,b)=>{let w=s[_.id],x=s[b.id];return wx?1:0});for(let _ of g)_ instanceof jr&&this.internalContainerRefs.push(_),this.layers.push(_)}this.layersByDepth=d,p=Object.keys(h).map(y=>parseInt(y,10)).sort(kp);let f=this.inputs.slice(),m=[];for(let y of p)for(let g of h[y]){let _=g.outboundLayer;if(_!=null){for(let b of g.inputTensors)if(f.indexOf(b)===-1)throw new br(`Graph disconnected: cannot obtain value for tensor ${b} at layer "${_.name}". The following previous layers were accessed without issue: ${m}`);for(let b of g.outputTensors)f.push(b);m.push(_.name)}}this.nodesByDepth=h;let A=this.layers.map(y=>y.name);for(let y of A){let g=A.filter(_=>_===y).length;if(g!==1)throw new br(`The name "${y}" is used ${g} times in the model. All layer names should be unique. Layer names: `+JSON.stringify(A))}this.outboundNodes=[],this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:this.inputs.map(y=>null),outputMasks:this.outputs.map(y=>null),inputShapes:this.inputs.map(y=>y.shape),outputShapes:this.outputs.map(y=>y.shape)}),this.built=!0,this._refCount=1}assertNotDisposed(){if(this._refCount===0)throw new Error(`Container '${this.name}' is already disposed.`)}dispose(){this.assertNotDisposed();let e={refCountAfterDispose:null,numDisposedVariables:0};if(--this._refCount==0){for(let t of this.layers)e.numDisposedVariables+=t.dispose().numDisposedVariables;for(let t of this.internalContainerRefs)e.numDisposedVariables+=t.dispose().numDisposedVariables}return e.refCountAfterDispose=this._refCount,e}get trainable(){return this.trainable_}set trainable(e){this.layers.forEach(t=>{t._trainableWeights.forEach(n=>n.trainable=e)}),this.trainable_=e}get trainableWeights(){if(this._trainableWeights.length>0)throw new V("Container instance unexpectedly contains _trainableWeights.The trainable weights of a Container are a union of the trainable weights of its consituent Layers. Its own _trainableWeights must remain an empty Array.");if(!this.trainable)return[];let e=[];for(let t of this.layers)e=e.concat(t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.layers)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.layers)t.push(...n.trainableWeights);return t.concat(e)}return e}get weights(){return this.trainableWeights.concat(this.nonTrainableWeights)}loadWeights(e,t=!0){let n={},r=0;for(let s of this.layers)for(let i of s.weights){if(n[i.originalName]!=null)throw new V(`Duplicate weight name: ${i.originalName}`);n[i.originalName]=i,r++}let a=[];for(let s in e){let i=s;if(n[s]==null){let o=s.split("/");i=o.slice(0,-2).concat([o[o.length-1]]).join("/")}if(n[i]!=null)a.push([n[i],e[s]]);else if(t)throw new V(`Provided weight data has no target variable: ${s}`);delete n[i]}if(t){let s=[];for(let i in n)s.push(i);if(s.length>0)throw new V(`${s.length} of ${r} weights are not set: ${s}`)}OA(a)}updatedConfig(){let e=this.getConfig(),t={};return t.className=this.getClassName(),t.config=e,t.kerasVersion=`tfjs-layers ${HA}`,t.backend="TensorFlow.js",t}toJSON(e,t=!0){let n=UA(this.updatedConfig());return t?JSON.stringify(n):n}call(e,t){return B(()=>{e=ft(e);let n=new Ci;for(let r=0;r{e=ft(e);let n;return t==null?n=vi(null,e.length):n=ft(t),this.runInternalGraph(e,n)[1]})}computeOutputShape(e){let t=Op(e);if(t.length!==this.inputLayers.length)throw new V(`Invalid inputShape argument ${e}: model has ${this.inputLayers.length} tensor inputs.`);let n={};for(let i=0;iparseInt(i,10)).sort(kp);if(r.length>1)for(let i of r){let o=this.nodesByDepth[i];for(let l of o){let u=l.outboundLayer;if(this.inputLayers.map(f=>f.id).indexOf(u.id)!==-1)continue;let c=[];for(let f=0;fparseInt(o,10)).sort(kp);for(let o of r){let l=this.nodesByDepth[o];for(let u of l){let c=u.outboundLayer,h=u.inputTensors,d=u.outputTensors,p=new Array;for(let f of h)f.id in n&&p.push(n[f.id]);if(p.length===h.length){let f={},m,A,y,g;if(u.callArgs!=null&&(f=u.callArgs),p.length===1){let[_,b]=p[0];f.mask==null&&(f.mask=b),y=ft(c.call(_,f)),g=ft(c.computeMask(_,b)),m=[_],A=[b]}else m=p.map(_=>_[0]),A=p.map(_=>_[1]),f.mask==null&&(f.mask=A),y=ft(c.call(m,f)),g=ft(c.computeMask(m,A));if(c.activityRegularizer)throw new De("LayersModel invocation with concrete Tensor value(s) in the presence of activity regularizer(s) is not supported yet.");for(let _=0;_{let e=[];for(let t of this.layers)for(let n=0;n0){let f=[];for(let m=0;m0&&m.apply(Tn(y),g)}function l(m){let A=m.name,y=Nr(m,t.customObjects!=null?t.customObjects:{});y.setFastWeightInitDuringBuild(r),a[A]=y,m.inboundNodes.forEach(g=>{if(!(g instanceof Array))throw new V(`Corrupted configuration, expected array for nodeData: ${g}`);i(y,g)})}let u=t.name,c=t.layers;for(let m of c)l(m);for(;!rQ(s);)for(let m of c){let A=a[m.name];if(A.name in s){let y=s[A.name];delete s[A.name];for(let g of y)o(A,g)}}let h=[],d=[],p=t.inputLayers;for(let m of p){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;h.push(_[g])}let f=t.outputLayers;for(let m of f){let A=m[0],y=m[1],g=m[2];Br(A in a);let _=a[A].inboundNodes[y].outputTensors;d.push(_[g])}return new e({inputs:h,outputs:d,name:u})}get stateful(){if(this._stateful)throw new V("Container instance unexpectedly has _stateful = true. The statefulness of a Container is determined by the Layers it contains. Its _stateful property must remain the default false.");for(let e of this.layers)if(e.stateful)return!0;return!1}resetStates(){B(()=>{this.layers.forEach(e=>{e.stateful&&e.resetStates()})})}};function Fte(e,t,n){let r=t.length;if(e==null||Array.isArray(e)&&e.length===0)return t.map(a=>null);if(r===1)return Array.isArray(e)&&e.length===1?e:typeof e=="object"&&t[0]in e?[e[t[0]]]:[e];if(Array.isArray(e)){if(e.length!==r)throw new Error(`Provided ${n} is an array of ${e.length} element(s), but the model has ${r} outputs. Make sure a set of weights is provided for each model output.`);return e}else if(typeof e=="object"&&Object.keys(e).length>0&&typeof e[Object.keys(e)[0]]=="object"){let a=[];return t.forEach(s=>{s in e?a.push(e[s]):a.push(null)}),a}else throw new Error(`The model has multiple (${r}) outputs, so ${n} must be either an array with ${r} elements or an object with ${t} keys. Provided ${n} not understood: ${JSON.stringify(e)}`)}function k7(e,t){return Fte(e,t,"classWeight")}async function N7(e,t,n,r){if(t!=null||r!=null)throw new Error("Support sampleWeight is not implemented yet");if(n!=null){let a=B(()=>{if(e.shape.length===1)return e.clone();if(e.shape.length===2)if(e.shape[1]>1){let o=1;return e.argMax(o)}else{if(e.shape[1]===1)return e.reshape([e.shape[0]]);throw new Error(`Encountered unexpected last-dimension size (${e.shape[1]}) during handling of class weights. The size is expected to be >= 1.`)}else throw new Error(`Unexpected rank of target (y) tensor (${e.rank}) during handling of class weights. The rank is expected to be 1 or 2.`)}),s=Array.from(await a.data());Ee(a);let i=[];return s.forEach(o=>{if(n[o]==null)throw new Error(`classWeight must contain all classes in the training data. The class ${o} exists in the data but not in classWeight`);i.push(n[o])}),on(i,"float32")}else return null}function Mte(e,t){return P(e,t)}var $te=32;function S7(e,t){let n,r,a=t;n=a.xs,r=a.ys,v.assert(n!=null&&r!=null,()=>`A Dataset iterator for fitDataset() is expected to generate objects of the form \`{xs: xVal, ys: yVal}\`, where the two values may be \`tf.Tensor\`, an array of Tensors, or a map of string to Tensor. The provided Dataset instead generates ${t}`);let s=I7("input",e.inputNames,n),i=I7("output",e.outputNames,r),o=s[0].shape[0];v.assert(s.length===e.inputs.length,()=>`LayersModel has ${e.inputs.length} inputs, but the dataset provides ${s.length} inputs. (Expected input keys: ${JSON.stringify(e.inputNames)})`),v.assert(i.length===e.outputs.length,()=>`LayersModel has ${e.outputs.length} outputs, but the dataset provides ${i.length} outputs. (Expected output keys: ${JSON.stringify(e.outputNames)})`);for(let l=0;l`Batch size mismatch: input ${e.inputNames[l]} has ${s[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);for(let l=0;l`Batch size mismatch: output ${e.outputNames[l]} has ${i[l].shape[0]}; expected ${o} based on input ${e.inputNames[0]}.`);return{xs:s,ys:i}}function I7(e,t,n){if(n instanceof Ue)return[n];if(Array.isArray(n))return v.assert(n.length===t.length,()=>`Received an array of ${n.length} Tensors, but expected ${t.length} to match the ${e} keys ${t}.`),n;{let r=[];for(let a of t){if(n[a]==null)throw new V(`The feature data generated by the dataset lacks the required ${e} key '${a}'.`);r.push(n[a])}return r}}function Dte(e){if(e.length===3)throw new De("Validation with sample weights is not implemented yet.");return{xs:e[0],ys:e[1]}}async function zte(e,t,n){let r=n.batchesPerEpoch!=null;if(v.assert(e.optimizer!=null,()=>"You must compile a model before training/testing. Use LayersModel.compile(modelCompileConfig)."),v.assert(n!=null,()=>"For fitDataset(), the 2nd argument (config) is required, but it is not provided in this call."),v.assert(n.epochs!=null&&n.epochs>0&&Number.isInteger(n.epochs),()=>`For fitDataset(), config.epochs is expected to be a positive integer, but got ${n.epochs}`),v.assert(!r||n.batchesPerEpoch>0&&Number.isInteger(n.batchesPerEpoch),()=>`For fitDataset(), config.batchesPerEpoch is expected to be a positive integer if specified, but got ${n.batchesPerEpoch}`),v.assert(n.validationSplit==null,()=>"`validationSplit` is not supported by `fitDataset()`. Use validationData instead."),e.isTraining)throw new Error("Cannot start training because another fit() call is ongoing.");e.isTraining=!0;try{let a=n.validationData!=null,s,i;if(a)if(T7(n.validationData))v.assert(n.validationBatches==null||n.validationBatches>0&&Number.isInteger(n.validationBatches),()=>`For fitDataset() with dataset-based validation, config.validationBatches is expected not to be provided, or to be a positive integer, but got ${n.validationBatches}`);else{let A=Dte(n.validationData);s=A.xs,i=A.ys}let o=e.makeTrainFunction(),l=e.getDedupedMetricsNames(),u;a?u=l.slice().concat(l.map(A=>"val_"+A)):u=l.slice();let c=d7(n.callbacks,n.yieldEvery),h=n.verbose==null?1:n.verbose,{callbackList:d,history:p}=p7(c,h,n.epochs,null,null,Ote(t,n),null,a,u);d.setModel(e),e.history=p,await d.onTrainBegin(),e.stopTraining_=!1;let f=n.initialEpoch==null?0:n.initialEpoch,m=await t.iterator();for(;f=n.batchesPerEpoch:_.done){if(a){let b;T7(n.validationData)?b=ft(await e.evaluateDataset(n.validationData,{batches:n.validationBatches})):b=ft(e.evaluate(s,i,{batchSize:n.validationBatchSize==null?$te:n.validationBatchSize,verbose:0}));for(let w=0;w0)throw new De("Verbose mode is not implemented yet.");v.assert(!r||n.batches>0&&Number.isInteger(n.batches),()=>`Test loop expects \`batches\` to be a positive integer, but received ${JSON.stringify(n.batches)}`);let i=Pte(t)?t:await t.iterator(),o=0,l=0;for(;r?l{if(u.value){let{xs:c,ys:h}=S7(e,u.value),d=c.concat(h),p=B(()=>a(d));if(Ee(d),l===0)for(let m=0;mse(s[m],P(f,A))),l>0&&Ee(y)}Ee(p),o+=f,++l}return s}),u.done){r&&console.warn(`Your dataset iterator ran out of data during evaluateDataset(). Interrupting evalution. Make sure that your dataset can generate at least \`batches\` batches (in this case, ${n.batches} batches). You may need to use the repeat() function when building your dataset.`);break}}for(let u=0;u0&&Number.isInteger(e),()=>`batchSize is required to be a positive integer, but got ${e}`)}function Cc(e,t,n){return e==null?[null]:Array.isArray(e)?e.map(r=>Si(r,t,n-t)):Si(e,t,n-t)}function qA(e,t){return B(()=>e==null?null:Array.isArray(e)?e.map(n=>qA(n,t)):G3(e,t.dtype==="int32"?t:t.toInt()))}function XA(e,t){let n=[],r=0,a=null;for(;r=e&&(a=e),n.push([r,a]),r=a;return n}async function Wte(e,t,n,r,a,s,i,o,l,u,c,h,d,p,f){a==null&&(a=32),s==null&&(s=1),c==null&&(c=!0),d==null&&(d=0);let m=!1;if(l!=null&&u!=null&&(m=!0),f!=null&&(m=!0,p==null))throw new V("Can only use `validationSteps` when doing step-wise training, i.e., `stepsPerEpoch` must be set.");let A=e.checkNumSamples(n,a,p,"steps_per_epoch"),y;A!=null&&(y=vr(0,A)),i==null&&(i=1);let{callbackList:g,history:_}=p7(o,i,s,d,A,p,a,m,h);g.setModel(e),e.history=_,await g.onTrainBegin(),e.stopTraining_=!1;for(let b=d;b{let M=I[S][0],D=I[S][1],z=Si(x,M,D-M);T.batch=S,T.size=D-M;let W=qA(n,z),U=t(W);for(let H=0;H0){if(f=!0,r.validationData.length===2)i=r.validationData[0],o=r.validationData[1];else throw r.validationData.length===3?new De("validationData including sample weights is not supported yet."):new V(`When passing validation data, it must contain 2 (valX, valY) or 3 (valX, valY, valSampleWeight) items; ${r.validationData} is invalid.`);let x=!0,I=await e.standardizeUserData(i,o,null,null,x,h);l=I[0],u=I[1],m=l.concat(u)}else if(r.validationSplit!=null&&r.validationSplit>0&&r.validationSplit<1){f=!0;let x=Math.floor(a[0].shape[0]*(1-r.validationSplit)),I=a[0].shape[0];l=Cc(a,x,I),a=Cc(a,0,x),u=Cc(s,x,I),s=Cc(s,0,x),m=l.concat(u)}else r.validationSteps!=null&&(f=!0);let A=a.concat(s).concat(c);e.checkTrainableWeightsConsistency();let y=e.makeTrainFunction(),g=e.getDedupedMetricsNames(),_,b;f?(e.makeTestFunction(),_=e.testFunction,b=g.slice().concat(g.map(x=>"val_"+x))):(_=null,m=[],b=g.slice());let w=d7(r.callbacks,r.yieldEvery);return await Wte(e,y,A,g,h,r.epochs,r.verbose,w,_,m,r.shuffle,b,r.initialEpoch,null,null)}finally{e.isTraining=!1,Ei(a,t),Ei(s,n),Ei(l,i),Ei(u,o),c!=null&&Ee(c)}}function C7(e){let t=[];e instanceof Ue&&(e=[e]);for(let n=0;nn.push(a.id));else if(t!=null)for(let a in t){let s=t[a];n.push(s.id)}let r=[];if(e instanceof Ue)n.indexOf(e.id)===-1&&r.push(e);else if(Array.isArray(e))e.forEach(a=>{n.indexOf(a.id)===-1&&r.push(a)});else if(e!=null)for(let a in e){let s=e[a];n.indexOf(s.id)===-1&&r.push(s)}r.forEach(a=>{a.isDisposed||a.dispose()})}function Vte(e){return e instanceof Ue}function KA(e){return Array.isArray(e)}function E7(e){return!Vte(e)&&!KA(e)}function R7(e,t,n,r=!0,a=""){if(t==null||t.length===0){if(e!=null){let i=!1;if(KA(e)&&e.length>0)i=!0;else if(E7(e)){for(let o in e)if(e.hasOwnProperty(o)){i=!0;break}}else i=!0;if(i)throw new V(`Error when checking model ${a} expected no data, but got ${e}`)}return[]}if(e==null)return t.map(i=>null);let s;if(E7(e)){e=e,s=[];for(let i of t){if(e[i]==null)throw new V(`No data provided for "${i}". Need data for each key in: ${t}`);s.push(e[i])}}else if(KA(e)){if(e=e,e.length!==t.length)throw new V(`Error when checking model ${a}: the Array of Tensors that you are passing to your model is not the size the model expected. Expected to see ${t.length} Tensor(s), but instead got the following list of Tensor(s): ${e}`);s=e}else{if(e=e,t.length>1)throw new V(`The model ${a} expects ${t.length} Tensor(s), but only received one Tensor. Found: Tensor with shape ${e.shape}`);s=[e]}if(s=C7(s),n!=null)for(let i=0;i=0&&u!==c)throw new V(`Error when checking ${a}: expected ${t[i]} to have shape [${n[i]}], but got array with shape [${o.shape}].`)}}return s}function Ute(e,t,n){let r=Ua(e.map(s=>s.shape[0]));r.sort();let a=Ua(t.map(s=>s.shape[0]));if(a.sort(),r.length>1)throw new V(`All input Tensors (x) should have the same number of samples. Got array shapes: ${JSON.stringify(e.map(s=>s.shape))}`);if(a.length>1)throw new V(`All target Tensors (y) should have the same number of samples. Got array shapes: ${JSON.stringify(t.map(s=>s.shape))}`);if(r.length>0&&a.length>0&&!v.arraysEqual(r,a))throw new V(`Input Tensors should have the same number of samples as target Tensors. Found ${r[0]} input sample(s) and ${a[0]} target sample(s).`)}function Hte(e,t,n){let r=[Ti,Vp,Ic];for(let a=0;a1)throw new V(`The model expects ${t.length} ${a} Tensors, but only received one Tensor. Found: array with shape ${JSON.stringify(e.shape)}.`);s=[e]}if(n!=null)for(let i=0;i[]);let n;if(typeof e=="string"||typeof e=="function")n=[e];else if(Array.isArray(e)||typeof e=="object")n=e;else throw new TypeError(`Type of metrics argument not understood. Expected an string,function, Array, or Object, found: ${e}`);if(Array.isArray(n))return t.map(r=>n);{let r=[];for(let a of t){let s=n.hasOwnProperty(a)?n[a]:[];Array.isArray(s)||(s=[s]),r.push(s)}return r}}var Gte="layers-model",ha=class extends jr{constructor(e){super(e);this.isTraining=!1}summary(e,t,n=console.log){if(!this.built)throw new V("This model has never been called, thus its weights have not been created yet. So no summary can be displayed. Build the model first (e.g., by calling it on some test data).");Ste(this,e,t,n)}compile(e){if(e.loss==null&&(e.loss=[]),this.loss=e.loss,typeof e.optimizer=="string")this.optimizer_=bte(e.optimizer),this.isOptimizerOwned=!0;else{if(!(e.optimizer instanceof oa))throw new V("User-defined optimizer must be an instance of tf.Optimizer.");this.optimizer_=e.optimizer,this.isOptimizerOwned=!1}let t=[];if(!Array.isArray(e.loss)&&typeof e.loss!="string"&&typeof e.loss!="function"){e.loss=e.loss;for(let s in e.loss)if(this.outputNames.indexOf(s)===-1)throw new V(`Unknown entry in loss dictionary: "${s}". Only expected the following keys: ${this.outputNames}`);for(let s of this.outputNames)e.loss[s]==null&&console.warn(`Output "${s}" is missing from loss dictionary. We assume this was done on purpose, and we will not be expecting data to be passed to ${s} during training`),t.push(PA(e.loss[s]))}else if(Array.isArray(e.loss)){if(e.loss.length!==this.outputs.length)throw new V(`When passing an Array as loss, it should have one entry per model output. The model has ${this.outputs.length} output(s), but you passed loss=${e.loss}.`);t=e.loss.map(s=>PA(s))}else{let s=PA(e.loss);this.outputs.forEach(i=>{t.push(s)})}this.lossFunctions=t,this.feedOutputNames=[],this.feedOutputShapes=[],this.feedLossFns=[];for(let s=0;s{for(let s=0;s1&&(this.metricsTensors.push([i,s]),this.metricsNames.push(this.outputNames[s]+"_loss"))}});let r=jte(e.metrics,this.outputNames),a=(s,i,o)=>{this.outputNames.length>1&&(i=this.outputNames[s]+"_"+i),this.metricsNames.push(i),this.metricsTensors.push([o,s])};Ii("metric",()=>{for(let s=0;s{let l="",u,c,h;for(let d of o){if(typeof d=="string"&&["accuracy","acc","crossentropy","ce"].indexOf(d)!==-1){let f=this.internalOutputShapes[s];f[f.length-1]===1||this.lossFunctions[s]===Vp?["accuracy","acc"].indexOf(d)!==-1?c=LA:["crossentropy","ce"].indexOf(d)!==-1&&(c=A7):this.lossFunctions[s]===Bp?["accuracy","acc"].indexOf(d)!==-1?c=y7:["crossentropy","ce"].indexOf(d)!==-1&&(c=g7):["accuracy","acc"].indexOf(d)!==-1?c=WA:["crossentropy","ce"].indexOf(d)!==-1&&(c=BA);let m;["accuracy","acc"].indexOf(d)!==-1?m="acc":["crossentropy","ce"].indexOf(d)!==-1&&(m="ce"),h=c,u=l+m}else h=_te(d),u=l+jp(d);let p;Ii(u,()=>{p=h}),a(s,u,p)}})(i)}}),this.collectedTrainableWeights=this.trainableWeights}checkTrainableWeightsConsistency(){this.collectedTrainableWeights!=null&&this.trainableWeights.length!==this.collectedTrainableWeights.length&&console.warn("Discrepancy between trainableweights and collected trainable weights. Did you set `model.trainable` without calling `model.compile()` afterwards?")}evaluate(e,t,n={}){let r=n.batchSize==null?32:n.batchSize;GA(r);let a=!0,s=this.standardizeUserDataXY(e,t,a,r);try{let i=s[0].concat(s[1]);this.makeTestFunction();let o=this.testFunction,l=this.testLoop(o,i,r,n.verbose,n.steps);return Tn(l)}finally{Ei(s[0],e),Ei(s[1],t)}}async evaluateDataset(e,t){return this.makeTestFunction(),Lte(this,e,t)}checkNumSamples(e,t,n,r="steps"){let a;if(n!=null){if(a=null,t!=null)throw new V(`If ${r} is set, batchSize must be null or undefined.Got batchSize = ${t}`)}else if(e!=null)Array.isArray(e)?a=e[0].shape[0]:a=e.shape[0];else throw new V(`Either the input data should have a defined shape, or ${r} shoud be specified.`);return a}execute(e,t){if(Array.isArray(t)&&t.length===0)throw new V("`outputs` is an empty Array, which is not allowed.");let n=Array.isArray(t),r=n?t:[t],a=this.retrieveSymbolicTensors(r),s=new Ci;if(e instanceof Ue&&(e=[e]),Array.isArray(e)){if(e.length!==this.inputs.length)throw new V(`The number of inputs provided (${e.length}) does not match the number of inputs of this model (${this.inputs.length}).`);for(let o=0;oi.name);for(let i=0;i0){let r=[];throw t.forEach((a,s)=>{a==null&&r.push(e[s])}),new V(`Cannot find SymbolicTensors for output name(s): ${JSON.stringify(r)}`)}return t}predictLoop(e,t=32,n=!1){return B(()=>{let r=this.checkNumSamples(e);if(n)throw new De("Verbose predictLoop() is not implemented yet.");let a=XA(r,t),s=this.outputs.map(i=>[]);for(let i=0;i{let o=a[i][0],l=a[i][1],u=Cc(e,o,l),c=[];if(Array.isArray(u))for(let d=0;ds[l].push(o));return Tn(s.map(i=>st(i,0)))})}predict(e,t={}){let n=C7(e);F7(n,this.inputNames,this.feedInputShapes,!1);try{let r=t.batchSize==null?32:t.batchSize;return GA(r),this.predictLoop(n,r)}finally{Ei(n,e)}}predictOnBatch(e){F7(e,this.inputNames,this.feedInputShapes,!0);let t=(Array.isArray(e)?e[0]:e).shape[0];return this.predictLoop(e,t)}standardizeUserDataXY(e,t,n=!0,r){if(this.optimizer_==null)throw new br("You must compile a model before training/testing. Use LayersModel.compile(modelCompileArgs).");let a=[];for(let s=0;s0&&e[0].shape[0]%r!=0)throw new V(`In a stateful network, you should only pass inputs with a number of samples that is divisible by the batch size ${r}. Found: ${e[0].shape[0]} sample(s).`);return[e,t]}async standardizeUserData(e,t,n,r,a=!0,s){let[i,o]=this.standardizeUserDataXY(e,t,a,s);if(n!=null)throw new Error("sample weight is not supported yet.");let l=null;if(r!=null){let u=k7(r,this.outputNames);l=[];for(let c=0;c{let s=this.checkNumSamples(t,n,a,"steps"),i=[];if(r>0)throw new De("Verbose mode is not implemented yet.");if(a!=null)throw new De("steps mode in testLoop() is not implemented yet");{let o=XA(s,n),l=on(vr(0,s));for(let u=0;u1&&(a+=`_${M3(e.slice(0,n),r)}`),t.push(a)}return t}makeTrainFunction(){return e=>{let t=[],n=e.slice(0,this.inputs.length),r=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),a=e.slice(this.inputs.length+this.outputs.length,this.inputs.length+this.outputs.length*2),s=[],i=()=>{let u=[];for(let p=0;p1&&p{d=se(d,p)}),d},o=this.collectedTrainableWeights.map(u=>u.read()),l=!0;return[this.optimizer_.minimize(i,l,o)].concat(s)}}makeTestFunction(){this.testFunction=e=>B(()=>{let t=[],n,r=e.slice(0,this.inputs.length),a=e.slice(this.inputs.length,this.inputs.length+this.outputs.length),s=[];for(let l=0;lca(t))}else{let t=Object.keys(this.loss);e={};let n=this.loss;for(let r of t)if(typeof n[r]=="string")e[r]=ca(n[r]);else throw new Error("Serialization of non-string loss is not supported.")}return e}getMetricIdentifiers(){if(typeof this.metrics=="string"||typeof this.metrics=="function")return[ca(jp(this.metrics))];if(Array.isArray(this.metrics))return this.metrics.map(e=>ca(jp(e)));{let e={};for(let t in this.metrics)e[t]=ca(jp(this.metrics[t]));return e}}getTrainingConfig(){return{loss:this.getLossIdentifiers(),metrics:this.getMetricIdentifiers(),optimizer_config:{class_name:this.optimizer.getClassName(),config:this.optimizer.getConfig()}}}loadTrainingConfig(e){if(e.weighted_metrics!=null)throw new Error("Loading weight_metrics is not supported yet.");if(e.loss_weights!=null)throw new Error("Loading loss_weights is not supported yet.");if(e.sample_weight_mode!=null)throw new Error("Loading sample_weight_mode is not supported yet.");let t=Sc(e.optimizer_config),n=Nr(t),r;if(typeof e.loss=="string")r=ki(e.loss);else if(Array.isArray(e.loss))r=e.loss.map(s=>ki(s));else if(e.loss!=null){r={};for(let s in e.loss)r[s]=ki(e.loss[s])}let a;if(Array.isArray(e.metrics))a=e.metrics.map(s=>ki(s));else if(e.metrics!=null){a={};for(let s in e.metrics)a[s]=ki(e.metrics[s])}this.compile({loss:r,metrics:a,optimizer:n})}async save(e,t){if(typeof e=="string"){let i=bn.getSaveHandlers(e);if(i.length===0)throw new V(`Cannot find any save handlers for URL '${e}'`);if(i.length>1)throw new V(`Found more than one (${i.length}) save handlers for URL '${e}'`);e=i[0]}if(e.save==null)throw new V("LayersModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");let n=await bn.encodeWeights(this.getNamedWeights(t)),r=!1,a=null,s={modelTopology:this.toJSON(a,r),format:Gte,generatedBy:`TensorFlow.js tfjs-layers v${HA}`,convertedBy:null};if((t==null?!1:t.includeOptimizer)&&this.optimizer!=null){s.trainingConfig=this.getTrainingConfig();let i="optimizer",{data:o,specs:l}=await bn.encodeWeights(await this.optimizer.getWeights(),i);n.specs.push(...l),n.data=bn.concatenateArrayBuffers([n.data,o])}if(this.userDefinedMetadata!=null){let i=!0;w7(this.userDefinedMetadata,this.name,i),s.userDefinedMetadata=this.userDefinedMetadata}return s.weightData=n.data,s.weightSpecs=n.specs,e.save(s)}setUserDefinedMetadata(e){w7(e,this.name),this.userDefinedMetadata=e}getUserDefinedMetadata(){return this.userDefinedMetadata}};ha.className="Model";re.registerClass(ha);var M7=class extends ha{};M7.className="Functional";re.registerClass(M7);async function qte(e,t){"modelTopology"in e||(e={modelTopology:e}),e=e;let n=e.modelTopology;n.model_config!=null&&(n=n.model_config);let r=Sc(n),a=Nr(r,t);if(e.weightsManifest!=null){let s=await bn.loadWeights(e.weightsManifest,e.pathPrefix,a.weights.map(o=>o.originalName)),i={};for(let o of a.weights)i[o.originalName]=s[o.originalName];a.loadWeights(i),Ee(s)}return a}async function Kte(e,t){if(t==null&&(t={}),typeof e=="string"){let n=bn.getLoadHandlers(e,t);if(n.length===0)n.push(bn.browserHTTPRequest(e,t));else if(n.length>1)throw new V(`Found more than one (${n.length}) load handlers for URL '${e}'`);e=n[0]}return Xte(e,void 0,t)}async function Xte(e,t,n){if(n==null&&(n={}),e.load==null)throw new V("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let r=await e.load(),a=r.modelTopology;a.model_config!=null&&(a=a.model_config);let s=n.strict==null?!0:n.strict,i=r.weightData!=null&&r.weightSpecs!=null&&s,o=Nr(Sc(a),t,i),l=r.trainingConfig;if(l!=null&&o.loadTrainingConfig(l),r.userDefinedMetadata!=null&&o.setUserDefinedMetadata(r.userDefinedMetadata),r.weightData!=null){if(r.weightSpecs==null)throw new V("LayersModel artifacts contains weight data, but not weight specs. Therefore loading of weights cannot proceed.");let{modelWeights:u,optimizerWeights:c}=Zte(r.weightData,r.weightSpecs);o.loadWeights(u,s),o.optimizer!=null&&c.length>0&&await o.optimizer.setWeights(c),Ee(u),Ee(c.map(h=>h.tensor))}return o}function Zte(e,t){let n=bn.decodeWeights(e,t),r={},a=[];return t.forEach(s=>{s.group==="optimizer"?a.push({name:s.name,tensor:n[s.name]}):r[s.name]=n[s.name]}),{modelWeights:r,optimizerWeights:a}}var Wl=class extends ha{constructor(e){super({inputs:[],outputs:[]});if(e=e||{},this.trainable=!0,this.built=!1,this.name=e.name!=null?e.name:Dp("sequential_"),e.layers!=null)for(let t of e.layers)this.add(t)}checkShape(e){if(e.inboundNodes[0].outputTensors[0].shape.some(t=>t<0))throw new V(`Negative dimension size caused by adding layer ${e.name} with input shape [${e.inboundNodes[0].inputTensors[0].shape}]`)}add(e){let t=e instanceof Wl||e instanceof ha,n;if(t){if(n=e,n.outputs.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");if(n.inputs.length!==1)throw new V("All layers in a Sequential model should have a single input tensor. For multi-input layers, use the functional API.")}if(this.outputs.length===0){if(e.inboundNodes.length===0){if(e.batchInputShape==null)throw new V("The first layer in a Sequential model must get an `inputShape` or `batchInputShape` argument.");let r=i7({batchShape:e.batchInputShape,dtype:e.dtype,name:e.name+"_input"});e.apply(r)}if(t)this.outputs=n.outputs,this.inputs=n.inputs;else{if(e.inboundNodes.length!==1)throw new V(`A layer added to a Sequential model must not already be connected somewhere else. LayersModel received layer ${e.name} which has ${e.inboundNodes.length} pre-existing inbound connections.`);if(e.inboundNodes[0].outputTensors.length!==1)throw new V("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[e.inboundNodes[0].outputTensors[0]],this.inputs=s7(this.outputs[0])}this.inboundNodes=[],new Pp({outboundLayer:this,inboundLayers:[],nodeIndices:[],tensorIndices:[],inputTensors:this.inputs,outputTensors:this.outputs,inputMasks:vi(null,this.inputs.length),outputMasks:[null],inputShapes:this.inputs.map(r=>r.shape),outputShapes:this.outputs[0].shape})}else{let r=e.apply(this.outputs[0]);if(Array.isArray(r))throw new TypeError("All layers in a Sequential model should have a single output tensor. For multi-output layers, use the functional API.");this.checkShape(e),this.outputs=[r],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}this.layers.push(e),this.built=!1}pop(){if(this.layers.length===0)throw new TypeError("There are no layers in the model.");if(this.layers.pop(),this.layers.length===0)this.outputs=[],this.inboundNodes=[],this.outboundNodes=[];else{let e=this.layers.length-1;this.layers[e].outboundNodes=[],this.outputs=[this.layers[e].output],this.inboundNodes[0].outputTensors=this.outputs,this.inboundNodes[0].outputShapes=[this.outputs[0].shape]}}call(e,t){return this.model==null&&this.build(),this.model.call(e,t)}build(e){if(ct(e),this.inputs.length===0||this.outputs.length===0)throw new TypeError("Sequential model cannot be built: model is empty. Add some layers first.");this.model=new ha({inputs:this.inputs,outputs:this.outputs[0],name:this.name+"_model"}),this.model.trainable=this.trainable,this.supportsMasking=this.model.supportsMasking,this.inputLayers=this.model.inputLayers,this.inputLayersNodeIndices=this.model.inputLayersNodeIndices,this.inputLayersTensorIndices=this.model.inputLayersTensorIndices,this.outputLayers=this.model.outputLayers,this.outputLayersNodeIndices=this.model.outputLayersNodeIndices,this.outputLayersTensorIndices=this.model.outputLayersTensorIndices,this.nodesByDepth=this.model.nodesByDepth,this.containerNodes=this.model.containerNodes,this.outputNames=this.model.outputNames,this.inputNames=this.model.inputNames,this.built=!0}countParams(){return this.built||this.build(),super.countParams()}summary(e,t,n=console.log){this.built||this.build(),super.summary(e,t,n)}setWeights(e){this.model==null&&this.build(),this.model.setWeights(e)}evaluate(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluate(e,t,n)}async evaluateDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.evaluateDataset(e,t)}predict(e,t={}){return this.model==null&&this.build(),this.model.predict(e,t)}predictOnBatch(e){return this.model==null&&this.build(),this.model.predictOnBatch(e)}compile(e){this.build(),this.model.compile(e),this.optimizer_=this.model.optimizer,this.isOptimizerOwned=this.model.isOptimizerOwned,this.loss=this.model.loss,this.metrics=this.model.metrics,this.metricsTensors=this.model.metricsTensors,this.metricsNames=this.model.metricsNames}get optimizer(){return this.model==null?void 0:this.model.optimizer}set optimizer(e){this.model.optimizer=e}async fit(e,t,n={}){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fit(e,t,n)}async fitDataset(e,t){if(!this.built)throw new br("The model needs to be compiled before being used.");return this.model.fitDataset(e,t)}async trainOnBatch(e,t){return this.model.trainOnBatch(e,t)}static fromConfig(e,t,n={},r=!1){let a,s={};if(t instanceof Array){if(t[0].className==null||t[0].className==="Merge")throw new V("Legacy serialization format not supported yet.");a=t}else v.assert(t.layers!=null,()=>"When the config data for a Sequential model is not an Array, it must be an Object that contains the 'layers' field."),a=t.layers,delete t.layers,s=t;let i=new e(s);if(!(i instanceof Wl))throw new De(`Sequential.fromConfig called on non-Sequential input: ${i}`);for(let o of a){let l=Nr(o,void 0,r);r&&l.setFastWeightInitDuringBuild(!0),i.add(l)}return i}set stopTraining(e){if(this.model==null)throw new V("Cannot set the stopTraining property of a sequential model before it is compiled.");this.model.stopTraining=e}get stopTraining(){if(this.model==null)throw new V("Cannot get the stopTraining property of a sequential model before it is compiled.");return this.model.stopTraining}getConfig(){let e=[];for(let t of this.layers){let n={};n.className=t.getClassName(),n.config=t.getConfig(),e.push(n)}return{name:this.name,layers:e}}};Wl.className="Sequential";re.registerClass(Wl);function Yte(e){return new ha(e)}function Jte(e){return new Wl(e)}function Qte(e,t){return t==null&&(t={}),Kte(e,t)}function Y3(e){return i7(e)}function ene(e,t){cr.registerCallbackConstructor(e,t)}var Ln=class extends re.Serializable{getConfig(){return{}}},$7=class extends Ln{apply(e,t=1){return FQ(e,t)}};$7.className="elu";re.registerClass($7);var D7=class extends Ln{apply(e){return Cd(e)}};D7.className="selu";re.registerClass(D7);var O7=class extends Ln{apply(e){return zr(e)}};O7.className="relu";re.registerClass(O7);var z7=class extends Ln{apply(e){return B(()=>fl(6,zr(e)))}};z7.className="relu6";re.registerClass(z7);var P7=class extends Ln{apply(e){return e}};P7.className="linear";re.registerClass(P7);var L7=class extends Ln{apply(e){return Fn(e)}};L7.className="sigmoid";re.registerClass(L7);var W7=class extends Ln{apply(e){return $Q(e)}};W7.className="hardSigmoid";re.registerClass(W7);var B7=class extends Ln{apply(e){return dl(e)}};B7.className="softplus";re.registerClass(B7);var V7=class extends Ln{apply(e){return MQ(e)}};V7.className="softsign";re.registerClass(V7);var U7=class extends Ln{apply(e){return ol(e)}};U7.className="tanh";re.registerClass(U7);var ZA=class extends Ln{apply(e,t=-1){return Yu(e,t)}};ZA.className="softmax";re.registerClass(ZA);var H7=class extends Ln{apply(e,t=-1){return bd(e,t)}};H7.className="logSoftmax";re.registerClass(H7);var j7=class extends Ln{apply(e,t=1){return B(()=>Fn(e.mul(t)).mul(e))}};j7.className="swish";re.registerClass(j7);function qa(e){return e.getClassName()}function YA(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"activation")}function Xa(e){if(e==null){let t={};return t.className="linear",t.config={},YA(t)}if(typeof e=="string"){let t={};return t.className=e,t.config={},YA(t)}else return e instanceof Ln?e:YA(e)}function JA(e){if(e!=null&&typeof e!="object")throw new Error(`Argument to L1L2 regularizer's constructor is expected to be an object, but received: ${e}`)}var G7=class extends re.Serializable{},Ec=class extends G7{constructor(e){super();JA(e),this.l1=e==null||e.l1==null?.01:e.l1,this.l2=e==null||e.l2==null?.01:e.l2,this.hasL1=this.l1!==0,this.hasL2=this.l2!==0}apply(e){return B(()=>{let t=Et([1]);return this.hasL1&&(t=se(t,Te(P(this.l1,zt(e))))),this.hasL2&&(t=se(t,Te(P(this.l2,vc(e))))),t.asScalar()})}getConfig(){return{l1:this.l1,l2:this.l2}}static fromConfig(e,t){return new e({l1:t.l1,l2:t.l2})}};Ec.className="L1L2";re.registerClass(Ec);function tne(e){return JA(e),new Ec({l1:e!=null?e.l1:null,l2:0})}function nne(e){return JA(e),new Ec({l2:e!=null?e.l2:null,l1:0})}var q7={l1l2:"L1L2"};function ht(e){return dA(e)}function X7(e,t={}){return gc(e,re.SerializationMap.getMap().classNameMap,t,"regularizer")}function wt(e){if(e==null)return null;if(typeof e=="string"){let t={className:e in q7?q7[e]:e,config:{}};return X7(t)}else return e instanceof G7?e:X7(e)}var QA=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null&&(this.maxValue=e.maxValue)}call(e,t){e=Pe(e);let n=zr(e);return this.maxValue!=null&&(n=vn(n,0,this.maxValue)),n}computeOutputShape(e){return e}getConfig(){let e={maxValue:this.maxValue},t=super.getConfig();return Object.assign(e,t),e}};QA.className="ReLU";re.registerClass(QA);var ey=class extends qe{constructor(e){super(e==null?{}:e);this.DEFAULT_ALPHA=.3,e==null&&(e={}),this.alpha=e.alpha==null?this.DEFAULT_ALPHA:e.alpha}call(e,t){let n=Pe(e);return Hu(n,this.alpha)}computeOutputShape(e){return e}getConfig(){let e={alpha:this.alpha},t=super.getConfig();return Object.assign(e,t),e}};ey.className="LeakyReLU";re.registerClass(ey);var ty=class extends qe{constructor(e){super(e==null?{}:e);if(this.DEFAULT_ALPHA_INITIALIZER="zeros",e==null&&(e={}),this.supportsMasking=!0,this.alphaInitializer=xt(e.alphaInitializer||this.DEFAULT_ALPHA_INITIALIZER),this.alphaRegularizer=wt(e.alphaRegularizer),this.alphaConstraint=Vt(e.alphaConstraint),e.sharedAxes==null)this.sharedAxes=null;else if(Array.isArray(e.sharedAxes))this.sharedAxes=e.sharedAxes;else if(typeof e.sharedAxes=="number")this.sharedAxes=[e.sharedAxes];else throw new V(`Expected sharedAxes to be a number or an array of numbers, but got ${e.sharedAxes}`)}build(e){e=ct(e);let t=e.slice(1);if(this.sharedAxes!=null)for(let r of this.sharedAxes)t[r-1]=1;this.alpha=this.addWeight("alpha",t,"float32",this.alphaInitializer,this.alphaRegularizer,!0,this.alphaConstraint);let n={};if(this.sharedAxes!=null)for(let r=1;r(Tt(t),t==="channelsFirst"?at(e,[0,2,3,1]):e))}function K7(e,t){return B(()=>(Tt(t),t==="channelsFirst"?at(e,[0,2,3,4,1]):e))}function rne(e,t,n,r=1,a="valid",s,i=1){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.shape.length!==3)throw new V(`The input of a conv1dWithBias operation should be 3, but is ${e.shape.length} instead.`);if(t.shape.length!==3)throw new V(`The kernel for a conv1dWithBias operation should be 3, but is ${t.shape.length} instead`);if(n!=null&&n.shape.length!==1)throw new V(`The bias for a conv1dWithBias operation should be 1, but is ${t.shape.length} instead`);if(s==="channelsFirst"&&(e=at(e,[0,2,1])),a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");let o=fd(e,t,r,a==="same"?"same":"valid","NWC",i);return n!=null&&(o=Ur(o,n)),o})}function Z7(e,t,n,r=[1,1],a="valid",s,i,o=null){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==3&&e.rank!==4)throw new V(`conv2dWithBiasActivation expects input to be of rank 3 or 4, but received ${e.rank}.`);if(t.rank!==3&&t.rank!==4)throw new V(`conv2dWithBiasActivation expects kernel to be of rank 3 or 4, but received ${e.rank}.`);let l=sy(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv1dWithBias is not implemented yet.");return l=La.conv2d({x:l,filter:t,strides:r,pad:a==="same"?"same":"valid",dilations:i,dataFormat:"NHWC",bias:n,activation:o}),s==="channelsFirst"&&(l=at(l,[0,3,1,2])),l})}function ane(e,t,n,r=[1,1,1],a="valid",s,i){return B(()=>{if(s==null&&(s=_r()),Tt(s),e.rank!==4&&e.rank!==5)throw new V(`conv3dWithBias expects input to be of rank 4 or 5, but received ${e.rank}.`);if(t.rank!==4&&t.rank!==5)throw new V(`conv3dWithBias expects kernel to be of rank 4 or 5, but received ${e.rank}.`);let o=K7(e,s);if(a==="causal")throw new De("The support for CAUSAL padding mode in conv3dWithBias is not implemented yet.");return o=Xf(o,t,r,a==="same"?"same":"valid","NDHWC",i),n!=null&&(o=Ur(o,n)),s==="channelsFirst"&&(o=at(o,[0,4,1,2,3])),o})}var iy=class extends qe{constructor(e,t){super(t);if(this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",iy.verifyArgs(t),this.rank=e,Xt(this.rank,"rank"),this.rank!==1&&this.rank!==2&&this.rank!==3)throw new De(`Convolution layer for rank other than 1, 2, or 3 (${this.rank}) is not implemented yet.`);if(this.kernelSize=Bl(t.kernelSize,e,"kernelSize"),this.strides=Bl(t.strides==null?1:t.strides,e,"strides"),this.padding=t.padding==null?"valid":t.padding,Yn(this.padding),this.dataFormat=t.dataFormat==null?"channelsLast":t.dataFormat,Tt(this.dataFormat),this.activation=Xa(t.activation),this.useBias=t.useBias==null?!0:t.useBias,this.biasInitializer=xt(t.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.biasConstraint=Vt(t.biasConstraint),this.biasRegularizer=wt(t.biasRegularizer),this.activityRegularizer=wt(t.activityRegularizer),this.dilationRate=Bl(t.dilationRate==null?1:t.dilationRate,e,"dilationRate"),this.rank===1&&Array.isArray(this.dilationRate)&&this.dilationRate.length!==1)throw new V(`dilationRate must be a number or an array of a single number for 1D convolution, but received ${JSON.stringify(this.dilationRate)}`);if(this.rank===2){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==2)throw new V(`dilationRate must be a number or array of two numbers for 2D convolution, but received ${JSON.stringify(this.dilationRate)}`)}else if(this.rank===3){if(typeof this.dilationRate=="number")this.dilationRate=[this.dilationRate,this.dilationRate,this.dilationRate];else if(this.dilationRate.length!==3)throw new V(`dilationRate must be a number or array of three numbers for 3D convolution, but received ${JSON.stringify(this.dilationRate)}`)}}static verifyArgs(e){if(Br("kernelSize"in e,"required key 'kernelSize' not in config"),typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,3))throw new V(`BaseConv expects config.kernelSize to be number or number[] with length 1, 2, or 3, but received ${JSON.stringify(e.kernelSize)}.`)}getConfig(){let e={kernelSize:this.kernelSize,strides:this.strides,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,activation:qa(this.activation),useBias:this.useBias,biasInitializer:Nt(this.biasInitializer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}},Rc=class extends iy{constructor(e,t){super(e,t);this.kernel=null,Rc.verifyArgs(t),this.filters=t.filters,Xt(this.filters,"filters"),this.kernelInitializer=xt(t.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.kernelConstraint=Vt(t.kernelConstraint),this.kernelRegularizer=wt(t.kernelRegularizer)}build(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[t]}`);let n=e[t],r=this.kernelSize.concat([n,this.filters]);this.kernel=this.addWeight("kernel",r,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[{ndim:this.rank+2,axes:{[t]:n}}],this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n,r=this.bias==null?null:this.bias.read(),a=D3(this.activation.getClassName());if(a!=null&&this.rank===2)n=Z7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate,a);else{if(this.rank===1)n=rne(e,this.kernel.read(),r,this.strides[0],this.padding,this.dataFormat,this.dilationRate[0]);else if(this.rank===2)n=Z7(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else if(this.rank===3)n=ane(e,this.kernel.read(),r,this.strides,this.padding,this.dataFormat,this.dilationRate);else throw new De("convolutions greater than 3D are not implemented yet.");this.activation!=null&&(n=this.activation.apply(n))}return n})}computeOutputShape(e){e=ct(e);let t=[],n=this.dataFormat==="channelsLast"?e.slice(1,e.length-1):e.slice(2);for(let a=0;a 0 but got ${JSON.stringify(e.filters)}`)}},Fc=class extends Rc{constructor(e){super(2,e);Fc.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,2))throw new V(`Conv2D expects config.kernelSize to be number or number[] with length 1 or 2, but received ${JSON.stringify(e.kernelSize)}.`)}};Fc.className="Conv2D";re.registerClass(Fc);var Xp=class extends Rc{constructor(e){super(3,e);Xp.verifyArgs(e)}getConfig(){let e=super.getConfig();return delete e.rank,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!(Array.isArray(e.kernelSize)&&(e.kernelSize.length===1||e.kernelSize.length===3)))throw new V(`Conv3D expects config.kernelSize to be number or [number, number, number], but received ${JSON.stringify(e.kernelSize)}.`)}};Xp.className="Conv3D";re.registerClass(Xp);var oy=class extends Fc{constructor(e){super(e);if(this.inputSpec=[new Kt({ndim:4})],this.padding!=="same"&&this.padding!=="valid")throw new V(`Conv2DTranspose currently supports only padding modes 'same' and 'valid', but received padding mode ${this.padding}`)}build(e){if(e=ct(e),e.length!==4)throw new V("Input should have rank 4; Received input shape: "+JSON.stringify(e));let t=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[t]==null)throw new V("The channel dimension of the inputs should be defined. Found `None`.");let n=e[t],r=this.kernelSize.concat([this.filters,n]);this.kernel=this.addWeight("kernel",r,"float32",this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.filters],"float32",this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint)),this.inputSpec=[new Kt({ndim:4,axes:{[t]:n}})],this.built=!0}call(e,t){return B(()=>{let n=Pe(e);if(n.shape.length!==4)throw new V(`Conv2DTranspose.call() expects input tensor to be rank-4, but received a tensor of rank-${n.shape.length}`);let r=n.shape,a=r[0],s,i;this.dataFormat==="channelsFirst"?(s=2,i=3):(s=1,i=2);let o=r[s],l=r[i],u=this.kernelSize[0],c=this.kernelSize[1],h=this.strides[0],d=this.strides[1],p=qp(o,h,u,this.padding),f=qp(l,d,c,this.padding),m=[a,p,f,this.filters];this.dataFormat!=="channelsLast"&&(n=at(n,[0,2,3,1]));let A=md(n,this.kernel.read(),m,this.strides,this.padding);return this.dataFormat!=="channelsLast"&&(A=at(A,[0,3,1,2])),this.bias!=null&&(A=Ur(A,this.bias.read(),this.dataFormat)),this.activation!=null&&(A=this.activation.apply(A)),A})}computeOutputShape(e){e=ct(e);let t=e.slice(),n,r,a;this.dataFormat==="channelsFirst"?(n=1,r=2,a=3):(n=3,r=1,a=2);let s=this.kernelSize[0],i=this.kernelSize[1],o=this.strides[0],l=this.strides[1];return t[n]=this.filters,t[r]=qp(t[r],o,s,this.padding),t[a]=qp(t[a],l,i,this.padding),t}getConfig(){let e=super.getConfig();return delete e.dilationRate,e}};oy.className="Conv2DTranspose";re.registerClass(oy);var Y7=class extends Rc{constructor(e,t){super(e,t);if(this.DEFAULT_DEPTHWISE_INITIALIZER="glorotUniform",this.DEFAULT_POINTWISE_INITIALIZER="glorotUniform",this.depthwiseKernel=null,this.pointwiseKernel=null,t.filters==null)throw new V("The `filters` configuration field is required by SeparableConv, but is unspecified.");if(t.kernelInitializer!=null||t.kernelRegularizer!=null||t.kernelConstraint!=null)throw new V("Fields kernelInitializer, kernelRegularizer and kernelConstraint are invalid for SeparableConv2D. Use depthwiseInitializer, depthwiseRegularizer, depthwiseConstraint, pointwiseInitializer, pointwiseRegularizer and pointwiseConstraint instead.");if(t.padding!=null&&t.padding!=="same"&&t.padding!=="valid")throw new V(`SeparableConv${this.rank}D supports only padding modes: 'same' and 'valid', but received ${JSON.stringify(t.padding)}`);this.depthMultiplier=t.depthMultiplier==null?1:t.depthMultiplier,this.depthwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_DEPTHWISE_INITIALIZER),this.depthwiseRegularizer=wt(t.depthwiseRegularizer),this.depthwiseConstraint=Vt(t.depthwiseConstraint),this.pointwiseInitializer=xt(t.depthwiseInitializer||this.DEFAULT_POINTWISE_INITIALIZER),this.pointwiseRegularizer=wt(t.pointwiseRegularizer),this.pointwiseConstraint=Vt(t.pointwiseConstraint)}build(e){if(e=ct(e),e.length{e=Pe(e);let n;if(this.rank===1)throw new De("1D separable convolution is not implemented yet.");return this.rank===2&&(this.dataFormat==="channelsFirst"&&(e=at(e,[0,2,3,1])),n=dm(e,this.depthwiseKernel.read(),this.pointwiseKernel.read(),this.strides,this.padding,this.dilationRate,"NHWC")),this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),this.dataFormat==="channelsFirst"&&(n=at(n,[0,3,1,2])),n})}getConfig(){let e=super.getConfig();return delete e.rank,delete e.kernelInitializer,delete e.kernelRegularizer,delete e.kernelConstraint,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.pointwiseInitializer=Nt(this.pointwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.pointwiseRegularizer=ht(this.pointwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseConstraint),e.pointwiseConstraint=Bt(this.pointwiseConstraint),e}};Y7.className="SeparableConv";var ly=class extends Y7{constructor(e){super(2,e)}};ly.className="SeparableConv2D";re.registerClass(ly);var Kp=class extends Rc{constructor(e){super(1,e);Kp.verifyArgs(e),this.inputSpec=[{ndim:3}]}getConfig(){let e=super.getConfig();return delete e.rank,delete e.dataFormat,e}static verifyArgs(e){if(typeof e.kernelSize!="number"&&!fA(e.kernelSize,"number",1,1))throw new V(`Conv1D expects config.kernelSize to be number or number[] with length 1, but received ${JSON.stringify(e.kernelSize)}.`)}};Kp.className="Conv1D";re.registerClass(Kp);var uy=class extends qe{constructor(e){super(e);typeof e.cropping=="number"?this.cropping=[[e.cropping,e.cropping],[e.cropping,e.cropping]]:typeof e.cropping[0]=="number"?this.cropping=[[e.cropping[0],e.cropping[0]],[e.cropping[1],e.cropping[1]]]:this.cropping=e.cropping,this.dataFormat=e.dataFormat===void 0?"channelsLast":e.dataFormat,this.inputSpec=[{ndim:4}]}computeOutputShape(e){return this.dataFormat==="channelsFirst"?[e[0],e[1],e[2]-this.cropping[0][0]-this.cropping[0][1],e[3]-this.cropping[1][0]-this.cropping[1][1]]:[e[0],e[1]-this.cropping[0][0]-this.cropping[0][1],e[2]-this.cropping[1][0]-this.cropping[1][1],e[3]]}call(e,t){return B(()=>{if(e=Pe(e),this.dataFormat==="channelsLast"){let n=Np(e,this.cropping[0][0],e.shape[1]-this.cropping[0][0]-this.cropping[0][1],2);return Np(n,this.cropping[1][0],e.shape[2]-this.cropping[1][1]-this.cropping[1][0],3)}else{let n=Np(e,this.cropping[0][0],e.shape[2]-this.cropping[0][0]-this.cropping[0][1],3);return Np(n,this.cropping[1][0],e.shape[3]-this.cropping[1][1]-this.cropping[1][0],4)}})}getConfig(){let e={cropping:this.cropping,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};uy.className="Cropping2D";re.registerClass(uy);var cy=class extends qe{constructor(e){super(e);this.DEFAULT_SIZE=[2,2],this.inputSpec=[{ndim:4}],this.size=e.size==null?this.DEFAULT_SIZE:e.size,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.interpolation=e.interpolation==null?"nearest":e.interpolation,NQ(this.interpolation)}computeOutputShape(e){if(this.dataFormat==="channelsFirst"){let t=e[2]==null?null:this.size[0]*e[2],n=e[3]==null?null:this.size[1]*e[3];return[e[0],e[1],t,n]}else{let t=e[1]==null?null:this.size[0]*e[1],n=e[2]==null?null:this.size[1]*e[2];return[e[0],t,n,e[3]]}}call(e,t){return B(()=>{let n=Pe(e),r=n.shape;if(this.dataFormat==="channelsFirst"){n=at(n,[0,2,3,1]);let a=this.size[0]*r[2],s=this.size[1]*r[3],i=this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s]);return at(i,[0,3,1,2])}else{let a=this.size[0]*r[1],s=this.size[1]*r[2];return this.interpolation==="nearest"?n.resizeNearestNeighbor([a,s]):n.resizeBilinear([a,s])}})}getConfig(){let e={size:this.size,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};cy.className="UpSampling2D";re.registerClass(cy);function sne(e,t,n=[1,1],r="valid",a,s){return B(()=>{a==null&&(a=_r()),Tt(a);let i=sy(e,a);if(e.rank!==4)throw new V(`Input for depthwiseConv2d is required to be 4-D, but is instead ${e.rank}-D`);if(t.rank!==4)throw new V(`depthwiseKernel is required to be 4-D, but is instead ${t.rank}-D`);return i=ul(i,t,n,r==="same"?"same":"valid","NHWC",s),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}var hy=class extends iy{constructor(e){super(2,e);this.depthwiseKernel=null,this.depthMultiplier=e.depthMultiplier==null?1:e.depthMultiplier,this.depthwiseInitializer=xt(e.depthwiseInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.depthwiseConstraint=Vt(e.depthwiseConstraint),this.depthwiseRegularizer=wt(e.depthwiseRegularizer)}build(e){if(e=ct(e),e.length<4)throw new V(`Inputs to DepthwiseConv2D should have rank 4. Received input shape: ${JSON.stringify(e)}.`);let t=this.dataFormat==="channelsFirst"?1:3;if(e[t]==null||e[t]<0)throw new V(`The channel dimension of the inputs to DepthwiseConv2D should be defined, but is not (${e[t]}).`);let n=e[t],r=[this.kernelSize[0],this.kernelSize[1],n,this.depthMultiplier];this.depthwiseKernel=this.addWeight("depthwise_kernel",r,null,this.depthwiseInitializer,this.depthwiseRegularizer,!0,this.depthwiseConstraint),this.useBias?this.bias=this.addWeight("bias",[n*this.depthMultiplier],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{e=Pe(e);let n=sne(e,this.depthwiseKernel.read(),this.strides,this.padding,this.dataFormat,null);return this.useBias&&(n=Ur(n,this.bias.read(),this.dataFormat)),this.activation!=null&&(n=this.activation.apply(n)),n})}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[1]*this.depthMultiplier:e[3]*this.depthMultiplier,a=Ir(t,this.kernelSize[0],this.padding,this.strides[0]),s=Ir(n,this.kernelSize[1],this.padding,this.strides[1]);return this.dataFormat==="channelsFirst"?[e[0],r,a,s]:[e[0],a,s,r]}getConfig(){let e=super.getConfig();return e.depthMultiplier=this.depthMultiplier,e.depthwiseInitializer=Nt(this.depthwiseInitializer),e.depthwiseRegularizer=ht(this.depthwiseRegularizer),e.depthwiseConstraint=Bt(this.depthwiseRegularizer),e}};hy.className="DepthwiseConv2D";re.registerClass(hy);function J7(e,t,n,r){if(Array.isArray(e)){if(t!=null||n!=null)throw new V("When inputs is an array, neither initialState or constants should be provided");r!=null&&(n=e.slice(e.length-r,e.length),e=e.slice(0,e.length-r)),e.length>1&&(t=e.slice(1,e.length)),e=e[0]}function a(s){return s==null||Array.isArray(s)?s:[s]}return t=a(t),n=a(n),{inputs:e,initialState:t,constants:n}}function Q7(e,t,n,r=!1,a,s,i=!1,o=!1){return B(()=>{let l=t.shape.length;if(l<3)throw new V(`Input should be at least 3D, but is ${l}D.`);let u=[1,0].concat(vr(2,l));if(t=at(t,u),s!=null)throw new De("The rnn() functoin of the deeplearn.js backend does not support constants yet.");i&&console.warn("Backend rnn(): the unroll = true option is not applicable to the imperative deeplearn.js backend."),a!=null&&(a=a.asType("bool").asType("float32"),a.rank===l-1&&(a=hn(a,-1)),a=at(a,u)),r&&(t=Dn(t,0),a!=null&&(a=Dn(a,0)));let c=[],h,d=n,p=t.shape[0],f=ir(t),m;a!=null&&(m=ir(a));for(let y=0;ye(g,d));if(a==null)h=_[0],d=_[1];else{let b=B(()=>{let w=m[y],x=$n(w).sub(w),I=_[0].mul(w).add(d[0].mul(x)),S=d.map((T,M)=>_[1][M].mul(w).add(T.mul(x)));return{output:I,newStates:S}});h=b.output,d=b.newStates}o&&c.push(h)}let A;return o&&(A=dn(c,1)),[h,A,d]})}var Hr=class extends qe{constructor(e){super(e);let t;if(e.cell==null)throw new V("cell property is missing for the constructor of RNN.");if(Array.isArray(e.cell)?t=new Zp({cells:e.cell}):t=e.cell,t.stateSize==null)throw new V("The RNN cell should have an attribute `stateSize` (tuple of integers, one integer per RNN state).");this.cell=t,this.returnSequences=e.returnSequences==null?!1:e.returnSequences,this.returnState=e.returnState==null?!1:e.returnState,this.goBackwards=e.goBackwards==null?!1:e.goBackwards,this._stateful=e.stateful==null?!1:e.stateful,this.unroll=e.unroll==null?!1:e.unroll,this.supportsMasking=!0,this.inputSpec=[new Kt({ndim:3})],this.stateSpec=null,this.states_=null,this.numConstants=null,this.keptStates=[]}getStates(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;return vr(0,e).map(t=>null)}else return this.states_}setStates(e){this.states_=e}computeOutputShape(e){$A(e)&&(e=e[0]),e=e;let t=this.cell.stateSize;Array.isArray(t)||(t=[t]);let n=t[0],r;if(this.returnSequences?r=[e[0],e[1],n]:r=[e[0],n],this.returnState){let a=[];for(let s of t)a.push([e[0],s]);return[r].concat(a)}else return r}computeMask(e,t){return B(()=>{Array.isArray(t)&&(t=t[0]);let n=this.returnSequences?t:null;if(this.returnState){let r=this.states.map(a=>null);return[n].concat(r)}else return n})}get states(){if(this.states_==null){let e=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1,t=[];for(let n=0;ni.shape[i.shape.length-1]),s))throw new V(`An initialState was passed that is not compatible with cell.stateSize. Received stateSpec=${this.stateSpec}; However cell.stateSize is ${this.cell.stateSize}`)}else this.stateSpec=s.map(i=>new Kt({shape:[null,i]}));this.stateful&&this.resetStates()}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape[0];if(n==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.states_==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_=[Et([n,this.cell.stateSize])];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(r=>Et([n,r])):this.states_[0]=Et([n,this.cell.stateSize]);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t===!0?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let r=0;rGt(r.clone()))})}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=J7(e,n,r,this.numConstants);e=a.inputs,n=a.initialState,r=a.constants;let s=[],i=[];if(n!=null){t.initialState=n,s=s.concat(n),this.stateSpec=[];for(let o of n)this.stateSpec.push(new Kt({shape:o.shape}));i=i.concat(this.stateSpec)}if(r!=null&&(t.constants=r,s=s.concat(r),this.numConstants=r.length),s[0]instanceof kr){let o=[e].concat(s),l=this.inputSpec.concat(i),u=this.inputSpec;this.inputSpec=l;let c=super.apply(o,t);return this.inputSpec=u,c}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;e=Pe(e),a==null&&(this.stateful?a=this.states_:a=this.getInitialState(e));let s=Array.isArray(this.cell.stateSize)?this.cell.stateSize.length:1;if(a.length!==s)throw new V(`RNN Layer has ${s} state(s) but was passed ${a.length} initial state(s).`);this.unroll&&console.warn("Ignoring unroll = true for RNN layer, due to imperative backend.");let i={training:r},o=Q7((d,p)=>{let f=this.cell.call([d].concat(p),i);return[f[0],f.slice(1)]},e,a,this.goBackwards,n,null,this.unroll,this.returnSequences),l=o[0],u=o[1],c=o[2];this.stateful&&this.resetStates(c,r);let h=this.returnSequences?u:l;return this.returnState?[h].concat(c):h})}getInitialState(e){return B(()=>{let t=Et(e.shape);return t=Te(t,[1,2]),t=bc(t),Array.isArray(this.cell.stateSize)?this.cell.stateSize.map(n=>n>1?wA(t,[1,n]):t):this.cell.stateSize>1?[wA(t,[1,this.cell.stateSize])]:[t]})}get trainableWeights(){return this.trainable?this.cell.trainableWeights:[]}get nonTrainableWeights(){return this.trainable?this.cell.nonTrainableWeights:this.cell.weights}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.cell!=null&&this.cell.setFastWeightInitDuringBuild(e)}getConfig(){let e=super.getConfig(),t={returnSequences:this.returnSequences,returnState:this.returnState,goBackwards:this.goBackwards,stateful:this.stateful,unroll:this.unroll};this.numConstants!=null&&(t.numConstants=this.numConstants);let n=this.cell.getConfig();return this.getClassName()===Hr.className&&(t.cell={className:this.cell.getClassName(),config:n}),Object.assign({},n,e,t)}static fromConfig(e,t,n={}){let r=t.cell,a=Nr(r,n);return new e(Object.assign(t,{cell:a}))}};Hr.className="RNN";re.registerClass(Hr);var Nc=class extends qe{},Yp=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation==null?this.DEFAULT_ACTIVATION:e.activation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e),this.kernel=this.addWeight("kernel",[e[e.length-1],this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`SimpleRNNCell expects 2 input Tensors, got ${e.length}.`);let n=e[1];e=e[0];let r=t.training==null?!1:t.training;0$n(e),rate:this.dropout,training:r})),0$n(n),rate:this.recurrentDropout,training:r}));let a,s=this.dropoutMask,i=this.recurrentDropoutMask;s!=null?a=Vr(P(e,s),this.kernel.read()):a=Vr(e,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),i!=null&&(n=P(n,i));let o=se(a,Vr(n,this.recurrentKernel.read()));return this.activation!=null&&(o=this.activation.apply(o)),[o,o]})}getConfig(){let e=super.getConfig(),t={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),recurrentInitializer:Nt(this.recurrentInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),recurrentRegularizer:ht(this.recurrentRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),recurrentConstraint:Bt(this.recurrentConstraint),biasConstraint:Bt(this.biasConstraint),dropout:this.dropout,recurrentDropout:this.recurrentDropout};return Object.assign({},e,t)}};Yp.className="SimpleRNNCell";re.registerClass(Yp);var dy=class extends Hr{constructor(e){e.cell=new Yp(e),super(e)}call(e,t){return B(()=>{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return new e(t)}};dy.className="SimpleRNN";re.registerClass(dy);var Jp=class extends Nc{constructor(e){super(e);if(this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.resetAfter)throw new V("GRUCell does not support reset_after parameter set to true.");this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=this.units,this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){e=ct(e);let t=e[e.length-1];this.kernel=this.addWeight("kernel",[t,this.units*3],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*3],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias?this.bias=this.addWeight("bias",[this.units*3],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint):this.bias=null,this.built=!0}call(e,t){return B(()=>{if(e=e,e.length!==2)throw new V(`GRUCell expects 2 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training==null?!1:t.training,r=e[1];e=e[0],0$n(e),rate:this.dropout,training:n,count:3})),0$n(r),rate:this.recurrentDropout,training:n,count:3}));let a=this.dropoutMask,s=this.recurrentDropoutMask,i,o,l;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};py.className="GRU";re.registerClass(py);var Mc=class extends Nc{constructor(e){super(e);this.DEFAULT_ACTIVATION="tanh",this.DEFAULT_RECURRENT_ACTIVATION="hardSigmoid",this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_RECURRENT_INITIALIZER="orthogonal",this.DEFAULT_BIAS_INITIALIZER="zeros",this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation===void 0?this.DEFAULT_ACTIVATION:e.activation),this.recurrentActivation=Xa(e.recurrentActivation===void 0?this.DEFAULT_RECURRENT_ACTIVATION:e.recurrentActivation),this.useBias=e.useBias==null?!0:e.useBias,this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.recurrentInitializer=xt(e.recurrentInitializer||this.DEFAULT_RECURRENT_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.unitForgetBias=e.unitForgetBias,this.kernelRegularizer=wt(e.kernelRegularizer),this.recurrentRegularizer=wt(e.recurrentRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.kernelConstraint=Vt(e.kernelConstraint),this.recurrentConstraint=Vt(e.recurrentConstraint),this.biasConstraint=Vt(e.biasConstraint),this.dropout=Ol([1,ja([0,e.dropout==null?0:e.dropout])]),this.recurrentDropout=Ol([1,ja([0,e.recurrentDropout==null?0:e.recurrentDropout])]),this.implementation=e.implementation,this.stateSize=[this.units,this.units],this.dropoutMask=null,this.recurrentDropoutMask=null}build(e){var t;e=ct(e);let n=e[e.length-1];this.kernel=this.addWeight("kernel",[n,this.units*4],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.recurrentKernel=this.addWeight("recurrent_kernel",[this.units,this.units*4],null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint);let r;if(this.useBias){if(this.unitForgetBias){let a=this.biasInitializer,s=this.units;r=new(t=class extends ur{apply(i,o){let l=a.apply([s]),u=new Sp().apply([s]),c=a.apply([s*2]);return j3(j3(l,u),c)}},t.className="CustomInit",t)}else r=this.biasInitializer;this.bias=this.addWeight("bias",[this.units*4],null,r,this.biasRegularizer,!0,this.biasConstraint)}else this.bias=null;this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training;if(e=e,e.length!==3)throw new V(`LSTMCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let r=e[1],a=e[2];e=e[0],0$n(e),rate:this.dropout,training:n,count:4})),0$n(r),rate:this.recurrentDropout,training:n,count:4}));let s=this.dropoutMask,i=this.recurrentDropoutMask,o,l,u,c;0{this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null);let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}static fromConfig(e,t){return t.implmentation===0&&(t.implementation=1),new e(t)}};fy.className="LSTM";re.registerClass(fy);var Zp=class extends Nc{constructor(e){super(e);this.cells=e.cells}get stateSize(){let e=[];for(let t of this.cells.slice().reverse())Array.isArray(t.stateSize)?e.push(...t.stateSize):e.push(t.stateSize);return e}call(e,t){return B(()=>{e=e;let n=e.slice(1),r=[];for(let i of this.cells.slice().reverse())Array.isArray(i.stateSize)?r.push(n.splice(0,i.stateSize.length)):r.push(n.splice(0,1));r.reverse();let a=[],s;for(let i=0;i{Ii(`RNNCell_${r}`,()=>{n.build(e),Array.isArray(n.stateSize)?t=n.stateSize[0]:t=n.stateSize,e=[e[0],t]})}),this.built=!0}getConfig(){let e=super.getConfig(),t=r=>({className:r.getClassName(),config:r.getConfig()}),n={cells:this.cells.map(t)};return Object.assign({},e,n)}static fromConfig(e,t,n={}){let r=[];for(let a of t.cells)r.push(Nr(a,n));return new e({cells:r})}get trainableWeights(){if(!this.trainable)return[];let e=[];for(let t of this.cells)e.push(...t.trainableWeights);return e}get nonTrainableWeights(){let e=[];for(let t of this.cells)e.push(...t.nonTrainableWeights);if(!this.trainable){let t=[];for(let n of this.cells)t.push(...n.trainableWeights);return t.concat(e)}return e}getWeights(){let e=[];for(let t of this.cells)e.push(...t.weights);return DA(e)}setWeights(e){let t=[];for(let n of this.cells){let r=n.weights.length,a=e.splice(r);for(let s=0;sq3(t(),n),i=()=>kc(s,t,r);return!a||a<=1?Gt(i().clone()):Array(a).fill(void 0).map(i).map(o=>Gt(o.clone()))}var ine=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function")for(var a=0,r=Object.getOwnPropertySymbols(e);a{if(this.cell.dropoutMask!=null&&(Ee(this.cell.dropoutMask),this.cell.dropoutMask=null),this.cell.recurrentDropoutMask!=null&&(Ee(this.cell.recurrentDropoutMask),this.cell.recurrentDropoutMask=null),t&&t.constants)throw new V("ConvRNN2D cell does not support constants");let n=t==null?null:t.mask,r=t==null?null:t.training,a=t==null?null:t.initialState;return super.call(e,{mask:n,training:r,initialState:a})})}computeOutputShape(e){let t=this.computeSingleOutputShape(e);return this.returnSequences||(t=[t[0],...t.slice(2)]),this.returnState&&(t=[t,...Array(2).fill([e[0],...t.slice(-3)])]),t}getInitialState(e){return B(()=>{let{stateSize:t}=this.cell,n=e.shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)],s=Et(a);return Array.isArray(t)?Array(t.length).fill(s):[s]})}resetStates(e,t=!1){B(()=>{if(!this.stateful)throw new ua("Cannot call resetStates() on an RNN Layer that is not stateful.");let n=this.inputSpec[0].shape,r=this.computeSingleOutputShape(n),a=[r[0],...r.slice(2)];if(n[0]==null)throw new V("If an RNN is stateful, it needs to know its batch size. Specify the batch size of your input tensors: \n- If using a Sequential model, specify the batch size by passing a `batchInputShape` option to your first layer.\n- If using the functional API, specify the batch size by passing a `batchShape` option to your Input layer.");if(this.getStates()==null)Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_=[Et(a)];else if(e==null)Ee(this.states_),this.keptStates!=null&&(Ee(this.keptStates),this.keptStates=[]),Array.isArray(this.cell.stateSize)?this.states_=this.cell.stateSize.map(()=>Et(a)):this.states_[0]=Et(a);else{if(Array.isArray(e)||(e=[e]),e.length!==this.states_.length)throw new V(`Layer ${this.name} expects ${this.states_.length} state(s), but it received ${e.length} state value(s). Input received: ${e}`);t?this.keptStates.push(this.states_.slice()):Ee(this.states_);for(let s=0;sGt(s.clone()))})}computeSingleOutputShape(e){let{dataFormat:t,filters:n,kernelSize:r,padding:a,strides:s,dilationRate:i}=this.cell,o=t==="channelsFirst",l=e[o?3:2],u=e[o?4:3],c=Ir(l,r[0],a,s[0],i[0]),h=Ir(u,r[1],a,s[1],i[1]);return[...e.slice(0,2),...o?[n,c,h]:[c,h,n]]}};ev.className="ConvRNN2D";var Qp=class extends Mc{constructor(e){let{filters:t,kernelSize:n,strides:r,padding:a,dataFormat:s,dilationRate:i}=e;super(Object.assign({},e,{units:t}));this.filters=t,Xt(this.filters,"filters"),this.kernelSize=Bl(n,2,"kernelSize"),this.kernelSize.forEach(o=>Xt(o,"kernelSize")),this.strides=Bl(r||1,2,"strides"),this.strides.forEach(o=>Xt(o,"strides")),this.padding=a||"valid",Yn(this.padding),this.dataFormat=s||"channelsLast",Tt(this.dataFormat),this.dilationRate=Bl(i||1,2,"dilationRate"),this.dilationRate.forEach(o=>Xt(o,"dilationRate"))}build(e){var t;e=ct(e);let n=this.dataFormat==="channelsFirst"?1:e.length-1;if(e[n]==null)throw new V(`The channel dimension of the input should be defined. Found ${e[n]}`);let r=e[n],a=4,s=this.kernelSize.concat([r,this.filters*a]);this.kernel=this.addWeight("kernel",s,null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint);let i=this.kernelSize.concat([this.filters,this.filters*a]);if(this.recurrentKernel=this.addWeight("recurrent_kernel",i,null,this.recurrentInitializer,this.recurrentRegularizer,!0,this.recurrentConstraint),this.useBias){let o;if(this.unitForgetBias){let l=this.biasInitializer,u=this.filters;o=new(t=class extends ur{apply(c,h){let d=l.apply([u]),p=Or([u]),f=l.apply([u*2]);return bA([d,p,f])}},t.className="CustomInit",t)}else o=this.biasInitializer;this.bias=this.addWeight("bias",[this.filters*a],null,o,this.biasRegularizer,!0,this.biasConstraint)}this.built=!0}call(e,t){return B(()=>{if(e.length!==3)throw new V(`ConvLSTM2DCell expects 3 input Tensors (inputs, h, c), got ${e.length}.`);let n=t.training||!1,r=e[0],a=e[1],s=e[2],i=4;0$n(r),rate:this.dropout,training:n,count:i}));let o=this.dropoutMask,l=(Y,ae,te)=>!ae||!ae[te]?Y:P(ae[te],Y),u=l(r,o,0),c=l(r,o,1),h=l(r,o,2),d=l(r,o,3);0$n(a),rate:this.recurrentDropout,training:n,count:i}));let p=this.recurrentDropoutMask,f=l(a,p,0),m=l(a,p,1),A=l(a,p,2),y=l(a,p,3),g=3,[_,b,w,x]=Lt(this.kernel.read(),i,g),[I,S,T,M]=this.useBias?Lt(this.bias.read(),i):[null,null,null,null];u=this.inputConv(u,_,I,this.padding),c=this.inputConv(c,b,S,this.padding),h=this.inputConv(h,w,T,this.padding),d=this.inputConv(d,x,M,this.padding);let[D,z,W,U]=Lt(this.recurrentKernel.read(),i,g);f=this.recurrentConv(f,D),m=this.recurrentConv(m,z),A=this.recurrentConv(A,W),y=this.recurrentConv(y,U);let H=this.recurrentActivation.apply(se(u,f)),X=this.recurrentActivation.apply(se(c,m)),j=se(P(X,s),P(H,this.activation.apply(se(h,A)))),ee=P(this.recurrentActivation.apply(se(d,y)),this.activation.apply(j));return[ee,ee,j]})}getConfig(){let e=super.getConfig(),{units:t}=e,n=ine(e,["units"]),r={filters:this.filters,kernelSize:this.kernelSize,padding:this.padding,dataFormat:this.dataFormat,dilationRate:this.dilationRate,strides:this.strides};return Object.assign({},n,r)}inputConv(e,t,n,r){let a=ra(e,t,this.strides,r||"valid",this.dataFormat==="channelsFirst"?"NCHW":"NHWC",this.dilationRate);return n?Ur(a,n,this.dataFormat):a}recurrentConv(e,t){return ra(e,t,1,"same",this.dataFormat==="channelsFirst"?"NCHW":"NHWC")}};Qp.className="ConvLSTM2DCell";re.registerClass(Qp);var my=class extends ev{constructor(e){let t=new Qp(e);super(Object.assign({},e,{cell:t}))}static fromConfig(e,t){return new e(t)}};my.className="ConvLSTM2D";re.registerClass(my);var e0=class extends qe{constructor(e){super(e);this.rate=Math.max(Math.min(e.rate,1),0),this.noiseShape=e.noiseShape,this.seed=e.seed,this.supportsMasking=!0}getNoiseShape(e){if(this.noiseShape==null)return this.noiseShape;let t=e.shape,n=[];for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);if(0q3(n,this.rate,a,this.seed),()=>n,r)}return e})}getConfig(){let e={rate:this.rate,noiseShape:this.noiseShape,seed:this.seed},t=super.getConfig();return Object.assign(e,t),e}dispose(){return super.dispose()}};e0.className="Dropout";re.registerClass(e0);var Ay=class extends e0{constructor(e){super(e);this.inputSpec=[{ndim:3}]}getNoiseShape(e){let t=e.shape;return[t[0],1,t[2]]}};Ay.className="SpatialDropout1D";re.registerClass(Ay);var yy=class extends qe{constructor(e){super(e);if(this.activation=null,this.useBias=!0,this.kernel=null,this.bias=null,this.DEFAULT_KERNEL_INITIALIZER="glorotNormal",this.DEFAULT_BIAS_INITIALIZER="zeros",e.batchInputShape==null&&e.inputShape==null&&e.inputDim!=null){let t=null;e.batchSize!=null&&(t=e.batchSize),this.batchInputShape=[t,e.inputDim]}this.units=e.units,Xt(this.units,"units"),this.activation=Xa(e.activation),e.useBias!=null&&(this.useBias=e.useBias),this.kernelInitializer=xt(e.kernelInitializer||this.DEFAULT_KERNEL_INITIALIZER),this.biasInitializer=xt(e.biasInitializer||this.DEFAULT_BIAS_INITIALIZER),this.kernelConstraint=Vt(e.kernelConstraint),this.biasConstraint=Vt(e.biasConstraint),this.kernelRegularizer=wt(e.kernelRegularizer),this.biasRegularizer=wt(e.biasRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.supportsMasking=!0,this.inputSpec=[{minNDim:2}]}build(e){e=ct(e);let t=e[e.length-1];this.kernel==null&&(this.kernel=this.addWeight("kernel",[t,this.units],null,this.kernelInitializer,this.kernelRegularizer,!0,this.kernelConstraint),this.useBias&&(this.bias=this.addWeight("bias",[this.units],null,this.biasInitializer,this.biasRegularizer,!0,this.biasConstraint))),this.inputSpec=[{minNDim:2,axes:{[-1]:t}}],this.built=!0}computeOutputShape(e){e=ct(e);let t=e.slice();return t[t.length-1]=this.units,t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=D3(this.activation.getClassName()),a;return r!=null?a=Vr(n,this.kernel.read(),r,this.bias?this.bias.read():null):(a=Vr(n,this.kernel.read()),this.bias!=null&&(a=Ur(a,this.bias.read())),this.activation!=null&&(a=this.activation.apply(a))),a})}getConfig(){let e={units:this.units,activation:qa(this.activation),useBias:this.useBias,kernelInitializer:Nt(this.kernelInitializer),biasInitializer:Nt(this.biasInitializer),kernelRegularizer:ht(this.kernelRegularizer),biasRegularizer:ht(this.biasRegularizer),activityRegularizer:ht(this.activityRegularizer),kernelConstraint:Bt(this.kernelConstraint),biasConstraint:Bt(this.biasConstraint)},t=super.getConfig();return Object.assign(e,t),e}};yy.className="Dense";re.registerClass(yy);var gy=class extends qe{constructor(e){e=e||{},super(e),this.inputSpec=[{minNDim:3}],this.dataFormat=e.dataFormat}computeOutputShape(e){e=ct(e);for(let t of e.slice(1))if(t==null)throw new V(`The shape of the input to "Flatten" is not fully defined (got ${e.slice(1)}). Make sure to pass a complete "input_shape" or "batch_input_shape" argument to the first layer in your model.`);return[e[0],Ha(e,1)]}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);if(this.dataFormat==="channelsFirst"&&n.rank>1){let r=[0];for(let a=2;a{this.invokeCallHook(e,t);let n=Pe(e);return this.activation.apply(n)})}getConfig(){let e={activation:qa(this.activation)},t=super.getConfig();return Object.assign(e,t),e}};xy.className="Activation";re.registerClass(xy);var wy=class extends qe{constructor(e){super(e);this.n=e.n,this.inputSpec=[{ndim:2}]}computeOutputShape(e){return[e[0],this.n,e[1]]}call(e,t){return B(()=>(e=Pe(e),CQ(e,this.n)))}getConfig(){let e={n:this.n},t=super.getConfig();return Object.assign(e,t),e}};wy.className="RepeatVector";re.registerClass(wy);var _y=class extends qe{constructor(e){super(e);this.targetShape=e.targetShape;for(let t=0;t{this.invokeCallHook(e,t);let n=Pe(e),r=n.shape,a=r.slice(0,1).concat(this.fixUnknownDimension(r.slice(1),this.targetShape));return n.reshape(a)})}getConfig(){let e={targetShape:this.targetShape},t=super.getConfig();return Object.assign(e,t),e}};_y.className="Reshape";re.registerClass(_y);var by=class extends qe{constructor(e){super(e);if(e.dims==null)throw new Error("Required configuration field `dims` is missing during Permute constructor call.");if(!Array.isArray(e.dims))throw new Error(`Permute constructor requires \`dims\` to be an Array, but received ${e.dims} instead.`);let t=vr(1,e.dims.length+1);if(!v.arraysEqual(e.dims.slice().sort(),t))throw new Error("Invalid permutation `dims`: "+JSON.stringify(e.dims)+" `dims` must contain consecutive integers starting from 1.");this.dims=e.dims,this.dimsIncludingBatch=[0].concat(this.dims),this.inputSpec=[new Kt({ndim:this.dims.length+1})]}computeOutputShape(e){e=ct(e);let t=e.slice();return this.dims.forEach((n,r)=>{t[r+1]=e[n]}),t}call(e,t){return at(Pe(e),this.dimsIncludingBatch)}getConfig(){let e={dims:this.dims},t=super.getConfig();return Object.assign(e,t),e}};by.className="Permute";re.registerClass(by);var vy=class extends qe{constructor(e){super(e==null?{}:e);this.supportsMasking=!0,e!=null?this.maskValue=e.maskValue==null?0:e.maskValue:this.maskValue=0}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={maskValue:this.maskValue};return Object.assign(t,e),t}computeMask(e,t){let n=Pe(e),r=-1;return Ou(di(n,this.maskValue),r)}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e),r=-1,a=!0,s=Ou(di(n,this.maskValue),r,a);return n.mul(s.asType(n.dtype))})}};vy.className="Masking";re.registerClass(vy);var ky=class extends qe{constructor(e){super(e);if(this.embeddings=null,this.DEFAULT_EMBEDDINGS_INITIALIZER="randomUniform",e.batchInputShape==null&&e.inputShape==null){let t=null;e.batchSize!=null&&(t=e.batchSize),e.inputLength==null?this.batchInputShape=[t,null]:this.batchInputShape=[t].concat(ft(e.inputLength))}this.inputDim=e.inputDim,Xt(this.inputDim,"inputDim"),this.outputDim=e.outputDim,Xt(this.outputDim,"outputDim"),this.embeddingsInitializer=xt(e.embeddingsInitializer||this.DEFAULT_EMBEDDINGS_INITIALIZER),this.embeddingsRegularizer=wt(e.embeddingsRegularizer),this.activityRegularizer=wt(e.activityRegularizer),this.embeddingsConstraint=Vt(e.embeddingsConstraint),this.maskZero=e.maskZero,this.supportsMasking=e.maskZero,this.inputLength=e.inputLength}build(e){this.embeddings=this.addWeight("embeddings",[this.inputDim,this.outputDim],this.dtype,this.embeddingsInitializer,this.embeddingsRegularizer,!0,this.embeddingsConstraint),this.built=!0}warnOnIncompatibleInputShape(e){}computeMask(e,t){return B(()=>this.maskZero?(e=Pe(e),di(e,He(e))):null)}computeOutputShape(e){if(e=ct(e),this.inputLength==null)return[...e,this.outputDim];let t=ft(this.inputLength);if(t.length!==e.length-1)throw new V(`"inputLength" is ${this.inputLength}, but received input shape has shape ${e}`);{let n=0;for(let r=0;r{this.invokeCallHook(e,t);let n=Pe(e);return n.dtype!=="int32"&&(n=_c(n,"int32")),G3(this.embeddings.read(),n.as1D()).reshape(ct(this.computeOutputShape(n.shape)))})}getConfig(){let e={inputDim:this.inputDim,outputDim:this.outputDim,embeddingsInitializer:Nt(this.embeddingsInitializer),embeddingsRegularizer:ht(this.embeddingsRegularizer),activityRegularizer:ht(this.activityRegularizer),embeddingsConstraint:Bt(this.embeddingsConstraint),maskZero:this.maskZero,inputLength:this.inputLength},t=super.getConfig();return Object.assign(e,t),e}};ky.className="Embedding";re.registerClass(ky);var Ri=class extends qe{constructor(e){super(e||{});this.supportsMasking=!0}mergeFunction(e){throw new De}computeElementwiseOpOutputShape(e,t){if(e==null||t==null)return null;if(e.length1)throw new V(`Can not merge tensors with different batch sizes. Got tensors with shapes: ${JSON.stringify(e)}.`);let n=e[0]==null?null:e[0].slice(1);for(let a=1;aa.length);e.indexOf(null)===-1&&Ua(r).length===1?this.reshapeRequired=!1:this.reshapeRequired=!0}call(e,t){return B(()=>{if(e=e,this.reshapeRequired){let n=[],r=e.map(a=>a.rank);if(r.indexOf(null)===-1){let a=ja(r);for(let s of e){let i=s.rank;for(let o=0;o1){let u=vr(1,l).concat([0]);n.push(at(o,u)),a=!0}else n.push(o)}let s=this.mergeFunction(n),i=s.rank;if(a){if(i==null){let o=s.shape,l=o.length,u=o[l-1],c=[u].concat(o.slice(0,o.length-1));s=at(s.reshape([-1,u]),[1,0]).reshape(c)}else if(i>1){let o=[i-1].concat(vr(0,i-1));s=at(s,o)}}return s}}else return this.mergeFunction(e)})}computeOutputShape(e){e=e;let t;e[0]==null?t=null:t=e[0].slice(1);for(let r=1;r{if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an Array");if(!Array.isArray(e))throw new V("`inputs` should be an Array");if(t.length!==e.length)throw new V(`The Array 'inputs' and 'mask' are expected to have the same length, but have different lengths (${e.length} vs ${t.length})`);if(t.every(r=>r==null))return null;t=t.map(r=>r==null?r:hn(r,0));let n=t[0];for(let r=1;r{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0].clone();for(let n=1;n{let t=e[0];for(let n=1;n{let t=e[0];for(let n=1;n1)throw new V("A `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got input shapes: "+JSON.stringify(e))}mergeFunction(e){return B(()=>bA(e,this.axis))}computeOutputShape(e){if(!(Array.isArray(e)&&Array.isArray(e[0])))throw new V("A `Concatenate` layer should be called on a list of inputs.");let t=e,n=t[0].slice(),r=this.axis<0?n.length+this.axis:this.axis;for(let a of t.slice(1)){if(n[r]==null||a[r]==null){n[r]=null;break}n[r]+=a[r]}return n}computeMask(e,t){if(t==null)return null;if(!Array.isArray(t))throw new V("`mask` should be an array for Concatenate");if(!Array.isArray(e))throw new V("`inputs` should be an array for Concatenate");if(t.length!==e.length)throw new V(`Mismatch in the length of mask (${t.length}) and the legnth of inputs (${e.length})`);return B(()=>{let n=!0;if(t.forEach(s=>{if(s!=null){n=!1;return}}),n)return null;let r=[];for(let s=0;s3||t.shape.length>3)throw new De("batchDot is not implemented for tensors of 4D or higher rank yet");if(v.assert(e.shape.length>=2,()=>`batchDot requires the rank of x to be >= 2, but got ${e.shape.length}`),v.assert(e.shape.length>=2,()=>`batchDot requires the rank of y to be >= 2, but got ${t.shape.length}`),typeof n=="number"&&(n=[n,n]),e.dtype==="complex64"||t.dtype==="complex64")throw new De("batchDot is not implemented for complex64-type Tensors yet.");let r=e.shape.length,a=t.shape.length;n==null&&(n=[r-1,a-2]);let s=n;return B(()=>{let i;if(r>a){i=r-a;let l=[];for(let u=0;ur){i=a-r;let l=[];for(let u=0;u0){let l;r>a?l=r+a-3:l=r-1;let u=[];for(let c=l;c"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0],n=e[1];if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);if(t[r[0]]!==n[r[1]])throw new V(`Dimension incompatibility: ${t[r[0]]} !== ${n[r[1]]}`)}mergeFunction(e){if(e.length!==2)throw new V(`A \`Dot\` layer must be called on exactly 2 inputs, but received ${e.length} input(s).`);let t=e[0],n=e[1],r;return Array.isArray(this.axes)?r=this.axes.map((a,s)=>$c(a,e[s].shape.length)):r=[$c(this.axes,t.shape.length),$c(this.axes,n.shape.length)],this.normalize&&(t=Lp(t,r[0]),n=Lp(n,r[1])),one(t,n,r)}interpretAxes(e,t){let n;return Array.isArray(this.axes)?n=this.axes:n=[$c(this.axes,e.length),$c(this.axes,t.length)],n}computeOutputShape(e){v.assert(Array.isArray(e)&&e.length===2&&Array.isArray(e[0])&&Array.isArray(e[1]),()=>"A `Dot` layer should be called on a list of exactly 2 inputs.");let t=e[0].slice(),n=e[1].slice();if(t.length>3||n.length>3)throw new De("Dot layer does not support tensors of 4D or higher rank yet.");let r=this.interpretAxes(t,n);t.splice(r[0],1),n.splice(r[1],1),n.splice(0,1);let a=t.concat(n);return a.length===1&&a.push(1),a}computeMask(e,t){return null}getConfig(){let e={axes:this.axes,normalize:this.normalize},t=super.getConfig();return Object.assign(e,t),e}};Ry.className="Dot";re.registerClass(Ry);var Fy=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.stddev=e.stddev}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={stddev:this.stddev};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return kc(()=>Ip(n.shape,0,this.stddev).add(n),()=>n,t.training||!1)})}};Fy.className="GaussianNoise";re.registerClass(Fy);var My=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{this.invokeCallHook(e,t);let n=Pe(e);return this.rate>0&&this.rate<1?kc(()=>{let r=Math.sqrt(this.rate/(1-this.rate));return n.mul(Ip(n.shape,1,r))},()=>n,t.training||!1):n})}};My.className="GaussianDropout";re.registerClass(My);var $y=class extends qe{constructor(e){super(e);this.supportsMasking=!0,this.rate=e.rate,this.noiseShape=e.noiseShape}_getNoiseShape(e){return this.noiseShape||Pe(e).shape}computeOutputShape(e){return e}getConfig(){let e=super.getConfig(),t={rate:this.rate};return Object.assign(t,e),t}call(e,t){return B(()=>{if(this.rate<1&&this.rate>0){let n=this._getNoiseShape(e);return kc(()=>{let r=Pe(e),a=1.6732632423543772,s=1.0507009873554805,i=-a*s,o=za(ml(n),this.rate);o=_c(o,"float32");let l=((1-this.rate)*(1+this.rate*i**2))**-.5,u=-l*i*this.rate;return r.mul(o).add(o.add(-1).mul(i)).mul(l).add(u)},()=>Pe(e),t.training||!1)}return e})}};$y.className="AlphaDropout";re.registerClass($y);function Dc(e,t,n,r,a,s=.001){let i;if(e.rank===2)i=j5(e,t,n,r,a,s);else if(e.rank===3)i=G5(e,t,n,r,a,s);else if(e.rank===4)i=q5(e,t,n,r,a,s);else throw new De(`batchNormalization is not implemented for array of rank ${e.rank} yet`);return i}function lne(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance;return[Dc(e,i,o,n,t,a),i,o]})}function une(e,t,n,r,a=.001){return B(()=>{let s=kd(e,r),i=s.mean,o=s.variance,l=[];for(let p of vr(0,e.rank))r.indexOf(p)!==-1?l.push(1):l.push(e.shape[p]);let u=i.reshape(l),c=o.reshape(l),h=t==null?null:t.reshape(l),d=n==null?null:n.reshape(l);return[Dc(e,u,c,d,h,a),i,o]})}function cne(e,t,n,r,a=.001){return v.arraysEqual(r.slice().sort(),vr(0,e.rank-1))?lne(e,t,n,r,a):une(e,t,n,r,a)}var Dy=class extends qe{constructor(e){e==null&&(e={}),super(e),this.supportsMasking=!0,this.axis=e.axis==null?-1:e.axis,this.momentum=e.momentum==null?.99:e.momentum,this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.movingMeanInitializer=xt(e.movingMeanInitializer||"zeros"),this.movingVarianceInitializer=xt(e.movingVarianceInitializer||"ones"),this.betaConstraint=Vt(e.betaConstraint),this.gammaConstraint=Vt(e.gammaConstraint),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer)}build(e){e=ct(e);let t=this.axis>=0?this.axis:this.axis+e.length,n=e[t];if(n==null)throw new V(`Axis ${t} of input tensor should have a defined dimension but the layer received an input with shape ${JSON.stringify(e)}.`);this.inputSpec=[new Kt({ndim:e.length,axes:{[t]:n}})];let r=[n];this.scale&&(this.gamma=this.addWeight("gamma",r,null,this.gammaInitializer,this.gammaRegularizer,!0,this.gammaConstraint)),this.center&&(this.beta=this.addWeight("beta",r,null,this.betaInitializer,this.betaRegularizer,!0,this.betaConstraint)),this.movingMean=this.addWeight("moving_mean",r,null,this.movingMeanInitializer,null,!1),this.movingVariance=this.addWeight("moving_variance",r,null,this.movingVarianceInitializer,null,!1),this.built=!0}call(e,t){return B(()=>{let n=t.training==null?!1:t.training,r=Pe(e),a=r.shape,s=a.length,i=vr(0,s),o=this.axis>=0?this.axis:this.axis+s;i.splice(o,1);let l=vi(1,s);l[o]=a[o];let u=i.slice();u.sort();let c=!v.arraysEqual(u,vr(0,s).slice(0,s-1)),h=()=>{if(c){let A=this.movingMean.read().reshape(l),y=this.movingVariance.read().reshape(l),g=this.center?this.beta.read().reshape(l):null,_=this.scale?this.gamma.read().reshape(l):null;return Dc(r,A,y,g,_,this.epsilon)}else return Dc(r,this.movingMean.read(),this.movingVariance.read(),this.beta==null?null:this.beta.read(),this.gamma==null?null:this.gamma.read(),this.epsilon)};if(!n)return h();let[d,p,f]=cne(r,this.gamma.read(),this.beta.read(),i,this.epsilon),m=(A,y,g)=>{B(()=>{let _=1-g,b=A.read(),w=b.sub(y).mul(_);A.write(b.sub(w))})};return(()=>{m(this.movingMean,p,this.momentum),m(this.movingVariance,f,this.momentum)})(),d})}getConfig(){let e={axis:this.axis,momentum:this.momentum,epsilon:this.epsilon,center:this.center,scale:this.scale,betaInitializer:Nt(this.betaInitializer),gammaInitializer:Nt(this.gammaInitializer),movingMeanInitializer:Nt(this.movingMeanInitializer),movingVarianceInitializer:Nt(this.movingVarianceInitializer),betaRegularizer:ht(this.betaRegularizer),gammaRegularizer:ht(this.gammaRegularizer),betaConstraint:Bt(this.betaConstraint),gammaConstraint:Bt(this.gammaConstraint)},t=super.getConfig();return Object.assign(e,t),e}};Dy.className="BatchNormalization";re.registerClass(Dy);var Oy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.axis=e.axis==null?-1:e.axis,typeof this.axis=="number"){if(!Number.isInteger(this.axis))throw new Error(`Expected axis to be an integer, but received ${this.axis}`)}else if(Array.isArray(this.axis)){for(let t of this.axis)if(!Number.isInteger(t))throw new Error(`Expected axis to be an array of integers, but received ${JSON.stringify(this.axis)}`)}else throw new Error(`Expected axis to be an integer or an array of integers, but received ${JSON.stringify(this.axis)}`);this.epsilon=e.epsilon==null?.001:e.epsilon,this.center=e.center==null?!0:e.center,this.scale=e.scale==null?!0:e.scale,this.betaInitializer=xt(e.betaInitializer||"zeros"),this.gammaInitializer=xt(e.gammaInitializer||"ones"),this.betaRegularizer=wt(e.betaRegularizer),this.gammaRegularizer=wt(e.gammaRegularizer),this.supportsMasking=!0}build(e){e=ct(e);let t=e.length;typeof this.axis=="number"&&(this.axis=[this.axis]);for(let a=0;a=t)throw new Error(`Invalid axis: ${a}`);if(this.axis.length!==Ua(this.axis).length)throw new Error(`Found duplicate axes in: ${this.axis}`);let n=this.axis.map(a=>e[a]),r=!0;this.scale?this.gamma=this.addWeight("gamma",n,"float32",this.gammaInitializer,this.gammaRegularizer,r):this.gamma=null,this.center?this.beta=this.addWeight("beta",n,"float32",this.betaInitializer,this.betaRegularizer,r):this.beta=null,this.built=!0}call(e,t){let n=Pe(e),r=n.shape,a=r.length;return B(()=>{let s=!0,{mean:i,variance:o}=kd(n,this.axis,s),l=vi(1,a);for(let f of this.axis)l[f]=r[f];let u=f=>f!=null&&f.shape.length!==a&&this.axis!==[a-1]?f.reshape(l):f,c=u(this.gamma.read()),h=u(this.beta.read()),d=[],p=[];for(let f=0;f{if(e.rank!==4)throw new V(`temporalPadding expects input tensor to be 4-D, but received a ${e.rank}-D tensor.`);if(t==null&&(t=[[1,1],[1,1]]),t.length!==2||t[0].length!==2||t[1].length!==2)throw new V("spatial2dPadding expects `padding` to be an Array of two Arrays, each of which is an Array of two integers.");if(n==null&&(n=_r()),n!=="channelsLast"&&n!=="channelsFirst")throw new V(`Unknown data format: ${n}. Supported data formats are 'channelsLast' and 'channelsFirst.`);let r;return n==="channelsFirst"?r=[[0,0],[0,0],t[0],t[1]]:r=[[0,0],t[0],t[1],[0,0]],aa(e,r)})}var zy=class extends qe{constructor(e){if(e==null&&(e={}),super(e),this.dataFormat=e.dataFormat==null?_r():e.dataFormat,e.padding==null)this.padding=[[1,1],[1,1]];else if(typeof e.padding=="number")this.padding=[[e.padding,e.padding],[e.padding,e.padding]];else{if(e.padding=e.padding,e.padding.length!==2)throw new V(`ZeroPadding2D expects padding to be a length-2 array, but received a length-${e.padding.length} array.`);let t,n;if(typeof e.padding[0]=="number")t=[e.padding[0],e.padding[0]],n=[e.padding[1],e.padding[1]];else{if(e.padding=e.padding,e.padding[0].length!==2)throw new V(`ZeroPadding2D expects height padding to be a length-2 array, but received a length-${e.padding[0].length} array.`);if(t=e.padding[0],e.padding[1].length!==2)throw new V(`ZeroPadding2D expects width padding to be a length-2 array, but received a length-${e.padding[1].length} array.`);n=e.padding[1]}this.padding=[t,n]}this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t,n;return this.dataFormat==="channelsFirst"?(e[2]!=null&&e[2]>=0?t=e[2]+this.padding[0][0]+this.padding[0][1]:t=null,e[3]!=null&&e[3]>=0?n=e[3]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],e[1],t,n]):(e[1]!=null&&e[1]>=0?t=e[1]+this.padding[0][0]+this.padding[0][1]:t=null,e[2]!=null&&e[2]>=0?n=e[2]+this.padding[1][0]+this.padding[1][1]:n=null,[e[0],t,n,e[3]])}call(e,t){return B(()=>hne(Pe(e),this.padding,this.dataFormat))}getConfig(){let e={padding:this.padding,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}};zy.className="ZeroPadding2D";re.registerClass(zy);function t0(e,t,n,r,a,s){return B(()=>{Tt(a),L3(s),Yn(r),n==null&&(n=[1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=sy(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=Gu(e,t,n,o):i=Lu(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,3,1,2])),i})}function tv(e,t,n,r,a,s){return B(()=>{Tt(a),L3(s),Yn(r),n==null&&(n=[1,1,1]),r==null&&(r="valid"),a==null&&(a=_r()),s==null&&(s="max"),e=K7(e,a);let i,o=r==="same"?"same":"valid";return s==="max"?i=sm(e,t,n,o):i=jf(e,t,n,o),a==="channelsFirst"&&(i=at(i,[0,4,1,2,3])),i})}var nv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=2),super(e),typeof e.poolSize=="number")this.poolSize=[e.poolSize];else if(Array.isArray(e.poolSize)&&e.poolSize.length===1&&typeof e.poolSize[0]=="number")this.poolSize=e.poolSize;else throw new V(`poolSize for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.poolSize)}`);if(Xt(this.poolSize,"poolSize"),e.strides==null)this.strides=this.poolSize;else if(typeof e.strides=="number")this.strides=[e.strides];else if(Array.isArray(e.strides)&&e.strides.length===1&&typeof e.strides[0]=="number")this.strides=e.strides;else throw new V(`strides for 1D convolutional layer must be a number or an Array of a single number, but received ${JSON.stringify(e.strides)}`);Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,Yn(this.padding),this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){e=ct(e);let t=Ir(e[1],this.poolSize[0],this.padding,this.strides[0]);return[e[0],t,e[2]]}call(e,t){return B(()=>{this.invokeCallHook(e,t),e=bc(Pe(e),2);let n=this.poolingFunction(Pe(e),[this.poolSize[0],1],[this.strides[0],1],this.padding,"channelsLast");return Pa(n,[2])})}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides},t=super.getConfig();return Object.assign(e,t),e}},Py=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Py.className="MaxPooling1D";re.registerClass(Py);var Ly=class extends nv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};Ly.className="AveragePooling1D";re.registerClass(Ly);var rv=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==2)throw new V(`If the strides property of a 2D pooling layer is an Array, it is expected to have a length of 2, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n]:[e[0],t,n,e[3]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Wy=class extends rv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"max")}};Wy.className="MaxPooling2D";re.registerClass(Wy);var By=class extends rv{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),t0(e,t,n,r,a,"avg")}};By.className="AveragePooling2D";re.registerClass(By);var av=class extends qe{constructor(e){if(e.poolSize==null&&(e.poolSize=[2,2,2]),super(e),this.poolSize=Array.isArray(e.poolSize)?e.poolSize:[e.poolSize,e.poolSize,e.poolSize],e.strides==null)this.strides=this.poolSize;else if(Array.isArray(e.strides)){if(e.strides.length!==3)throw new V(`If the strides property of a 3D pooling layer is an Array, it is expected to have a length of 3, but received length ${e.strides.length}.`);this.strides=e.strides}else this.strides=[e.strides,e.strides,e.strides];Xt(this.poolSize,"poolSize"),Xt(this.strides,"strides"),this.padding=e.padding==null?"valid":e.padding,this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),Yn(this.padding),this.inputSpec=[new Kt({ndim:5})]}computeOutputShape(e){e=ct(e);let t=this.dataFormat==="channelsFirst"?e[2]:e[1],n=this.dataFormat==="channelsFirst"?e[3]:e[2],r=this.dataFormat==="channelsFirst"?e[4]:e[3];return t=Ir(t,this.poolSize[0],this.padding,this.strides[0]),n=Ir(n,this.poolSize[1],this.padding,this.strides[1]),r=Ir(r,this.poolSize[2],this.padding,this.strides[2]),this.dataFormat==="channelsFirst"?[e[0],e[1],t,n,r]:[e[0],t,n,r,e[4]]}call(e,t){return B(()=>(this.invokeCallHook(e,t),this.poolingFunction(Pe(e),this.poolSize,this.strides,this.padding,this.dataFormat)))}getConfig(){let e={poolSize:this.poolSize,padding:this.padding,strides:this.strides,dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Vy=class extends av{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),tv(e,t,n,r,a,"max")}};Vy.className="MaxPooling3D";re.registerClass(Vy);var Uy=class extends av{constructor(e){super(e)}poolingFunction(e,t,n,r,a){return Tt(a),Yn(r),tv(e,t,n,r,a,"avg")}};Uy.className="AveragePooling3D";re.registerClass(Uy);var sv=class extends qe{constructor(e){super(e);this.inputSpec=[new Kt({ndim:3})]}computeOutputShape(e){return[e[0],e[2]]}call(e,t){throw new De}},Hy=class extends sv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return kt(n,1)})}};Hy.className="GlobalAveragePooling1D";re.registerClass(Hy);var jy=class extends sv{constructor(e){super(e||{})}call(e,t){return B(()=>{let n=Pe(e);return Xn(n,1)})}};jy.className="GlobalMaxPooling1D";re.registerClass(jy);var iv=class extends qe{constructor(e){super(e);this.dataFormat=e.dataFormat==null?"channelsLast":e.dataFormat,Tt(this.dataFormat),this.inputSpec=[new Kt({ndim:4})]}computeOutputShape(e){return e=e,this.dataFormat==="channelsLast"?[e[0],e[3]]:[e[0],e[1]]}call(e,t){throw new De}getConfig(){let e={dataFormat:this.dataFormat},t=super.getConfig();return Object.assign(e,t),e}},Gy=class extends iv{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?kt(n,[1,2]):kt(n,[2,3])})}};Gy.className="GlobalAveragePooling2D";re.registerClass(Gy);var qy=class extends iv{call(e,t){return B(()=>{let n=Pe(e);return this.dataFormat==="channelsLast"?Xn(n,[1,2]):Xn(n,[2,3])})}};qy.className="GlobalMaxPooling2D";re.registerClass(qy);var ov=class extends qe{constructor(e){super(e);this.layer=e.layer}build(e){this.built=!0}get trainable(){return this.layer!=null?this.layer.trainable:!1}set trainable(e){this.layer!=null&&(this.layer.trainable=e)}get trainableWeights(){return this.layer.trainableWeights}get nonTrainableWeights(){return this.layer.nonTrainableWeights}get updates(){return this.layer._updates}get losses(){return this.layer.losses}getWeights(){return this.layer.getWeights()}setWeights(e){this.layer.setWeights(e)}getConfig(){let e={layer:{className:this.layer.getClassName(),config:this.layer.getConfig()}},t=super.getConfig();return Object.assign(e,t),e}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.layer!=null&&this.layer.setFastWeightInitDuringBuild(e)}static fromConfig(e,t,n={}){let r=t.layer,a=Nr(r,n);delete t.layer;let s={layer:a};return Object.assign(s,t),new e(s)}},Xy=class extends ov{constructor(e){super(e);this.supportsMasking=!0}build(e){if(e=ct(e),e.length<3)throw new V(`TimeDistributed layer expects an input shape >= 3D, but received input shape ${JSON.stringify(e)}`);this.inputSpec=[{shape:e}];let t=[e[0]].concat(e.slice(2));this.layer.built||(this.layer.build(t),this.layer.built=!0),super.build(e)}computeOutputShape(e){e=ct(e);let t=[e[0]].concat(e.slice(2)),n=this.layer.computeOutputShape(t),r=e[1];return[n[0],r].concat(n.slice(1))}call(e,t){return B(()=>(e=Pe(e),Q7((n,r)=>[Pe(this.layer.call(n,t)),[]],e,[],!1,null,null,!1,!0)[1]))}};Xy.className="TimeDistributed";re.registerClass(Xy);function dne(e){Ni(kQ,"BidirectionalMergeMode",e)}var pne="concat",Ky=class extends ov{constructor(e){super(e);let t=e.layer.getConfig(),n={};n.className=e.layer.getClassName(),n.config=t,this.forwardLayer=Nr(n),t.goBackwards=t.goBackwards!==!0;let r={};if(r.className=e.layer.getClassName(),r.config=t,this.backwardLayer=Nr(r),this.forwardLayer.name="forward_"+this.forwardLayer.name,this.backwardLayer.name="backward_"+this.backwardLayer.name,this.mergeMode=e.mergeMode===void 0?pne:e.mergeMode,dne(this.mergeMode),e.weights)throw new De("weights support is not implemented for Bidirectional layer yet.");this._stateful=e.layer.stateful,this.returnSequences=e.layer.returnSequences,this.returnState=e.layer.returnState,this.supportsMasking=!0,this._trainable=!0,this.inputSpec=e.layer.inputSpec,this.numConstants=null}get trainable(){return this._trainable}set trainable(e){this._trainable=e,this.forwardLayer!=null&&(this.forwardLayer.trainable=e),this.backwardLayer!=null&&(this.backwardLayer.trainable=e)}getWeights(){return this.forwardLayer.getWeights().concat(this.backwardLayer.getWeights())}setWeights(e){let t=e.length,n=Math.floor(t/2);this.forwardLayer.setWeights(e.slice(0,n)),this.backwardLayer.setWeights(e.slice(n))}computeOutputShape(e){let t=this.forwardLayer.computeOutputShape(e);Array.isArray(t)&&Array.isArray(t[0])||(t=[t]),t=t;let n,r,a;return this.returnState&&(a=t.slice(1)),n=t[0],n=n,this.mergeMode==="concat"?(n[n.length-1]*=2,r=[n]):this.mergeMode==null?r=[n,n.slice()]:r=[n],this.returnState?this.mergeMode==null?r.concat(a).concat(a.slice()):[n].concat(a).concat(a.slice()):Tn(r)}apply(e,t){let n=t==null?null:t.initialState,r=t==null?null:t.constants;t==null&&(t={});let a=J7(e,n,r,this.numConstants);if(e=a.inputs,n=a.initialState,r=a.constants,Array.isArray(e)&&(n=e.slice(1),e=e[0]),(n==null||n.length===0)&&r==null)return super.apply(e,t);let s=[],i=[];if(n!=null){let l=n.length;if(l%2>0)throw new V("When passing `initialState` to a Bidrectional RNN, the state should be an Array containing the states of the underlying RNNs.");t.initialState=n,s.push(...n);let u=n.map(c=>new Kt({shape:c.shape}));this.forwardLayer.stateSpec=u.slice(0,l/2),this.backwardLayer.stateSpec=u.slice(l/2),i.push(...u)}if(r!=null)throw new De("Support for constants in Bidirectional layers is not implemented yet.");let o=s[0]instanceof kr;for(let l of s)if(l instanceof kr!==o)throw new V("The initial state of a Bidirectional layer cannot be specified as a mix of symbolic and non-symbolic tensors");if(o){let l=[e].concat(s),u=this.inputSpec.concat(i),c=this.inputSpec;this.inputSpec=u;let h=super.apply(l,t);return this.inputSpec=c,h}else return super.apply(e,t)}call(e,t){return B(()=>{let n=t.initialState,r,a;if(n==null)r=this.forwardLayer.call(e,t),a=this.backwardLayer.call(e,t);else{let o=n.slice(0,n.length/2),l=n.slice(n.length/2);r=this.forwardLayer.call(e,Object.assign(t,{initialState:o})),a=this.backwardLayer.call(e,Object.assign(t,{initialState:l}))}let s;this.returnState&&(Array.isArray(r)&&(s=r.slice(1).concat(a.slice(1))),r=r[0],a=a[0]),this.returnSequences&&(a=Dn(a,1));let i;return this.mergeMode==="concat"?i=bA([r,a]):this.mergeMode==="sum"?i=se(r,a):this.mergeMode==="ave"?i=P(.5,se(r,a)):this.mergeMode==="mul"?i=P(r,a):this.mergeMode==null&&(i=[r,a]),this.returnState?this.mergeMode==null?i.concat(s):[i].concat(s):i})}resetStates(e){this.forwardLayer.resetStates(),this.backwardLayer.resetStates()}build(e){Ii(this.forwardLayer.name,()=>{this.forwardLayer.build(e)}),Ii(this.backwardLayer.name,()=>{this.backwardLayer.build(e)}),this.built=!0}computeMask(e,t){Array.isArray(t)&&(t=t[0]);let n;if(this.returnSequences?this.mergeMode==null?n=[t,t]:n=t:this.mergeMode==null?n=[null,null]:n=null,this.returnState){let r=this.forwardLayer.states.map(a=>null);return Array.isArray(n)?n.concat(r).concat(r):[n].concat(r).concat(r)}else return n}get trainableWeights(){return this.forwardLayer.trainableWeights.concat(this.backwardLayer.trainableWeights)}get nonTrainableWeights(){return this.forwardLayer.nonTrainableWeights.concat(this.backwardLayer.nonTrainableWeights)}setFastWeightInitDuringBuild(e){super.setFastWeightInitDuringBuild(e),this.forwardLayer!=null&&this.forwardLayer.setFastWeightInitDuringBuild(e),this.backwardLayer!=null&&this.backwardLayer.setFastWeightInitDuringBuild(e)}getConfig(){let e={mergeMode:this.mergeMode},t=super.getConfig();return Object.assign(e,t),e}static fromConfig(e,t){let n=Nr(t.layer);if(delete t.layer,t.numConstants!=null)throw new De("Deserialization of a Bidirectional layer with numConstants present is not supported yet.");let r=t;return r.layer=n,new e(r)}};Ky.className="Bidirectional";re.registerClass(Ky);function WQ(e){return new zl(e)}function BQ(e){return new ny(e)}function VQ(e){return new QA(e)}function UQ(e){return new ey(e)}function HQ(e){return new ty(e)}function jQ(e){return new ay(e)}function GQ(e){return new ry(e)}function qQ(e){return new Kp(e)}function XQ(e){return new Fc(e)}function KQ(e){return new oy(e)}function ZQ(e){return new Xp(e)}function YQ(e){return new ly(e)}function JQ(e){return new uy(e)}function QQ(e){return new cy(e)}function eee(e){return new hy(e)}function tee(e){return new xy(e)}function nee(e){return new yy(e)}function ree(e){return new e0(e)}function aee(e){return new Ay(e)}function see(e){return new gy(e)}function iee(e){return new wy(e)}function oee(e){return new _y(e)}function lee(e){return new by(e)}function uee(e){return new ky(e)}function cee(e){return new Ny(e)}function hee(e){return new Sy(e)}function dee(e){return new Ey(e)}function pee(e){return new Ty(e)}function fee(e){return new Cy(e)}function mee(e){return new Iy(e)}function Aee(e){return new Ry(e)}function yee(e){return new Dy(e)}function gee(e){return new Oy(e)}function xee(e){return new zy(e)}function RA(e){return new Ly(e)}function wee(e){return RA(e)}function _ee(e){return RA(e)}function FA(e){return new By(e)}function bee(e){return FA(e)}function vee(e){return FA(e)}function MA(e){return new Uy(e)}function kee(e){return MA(e)}function Nee(e){return MA(e)}function Iee(e){return new Hy(e)}function See(e){return new Gy(e)}function J3(e){return new jy(e)}function Q3(e){return new qy(e)}function e7(e){return new Py(e)}function t7(e){return new Wy(e)}function Tee(e){return new Vy(e)}function Cee(e){return new py(e)}function Eee(e){return new Jp(e)}function Ree(e){return new fy(e)}function Fee(e){return new Mc(e)}function Mee(e){return new dy(e)}function $ee(e){return new Yp(e)}function Dee(e){return new my(e)}function Oee(e){return new Qp(e)}function zee(e){return new Hr(e)}function Pee(e){return new Zp(e)}function Lee(e){return new Ky(e)}function Wee(e){return new Xy(e)}var Bee=J3,Vee=Q3,Uee=e7,Hee=t7;function jee(e){return new Fy(e)}function Gee(e){return new My(e)}function qee(e){return new $y(e)}function Xee(e){return new vy(e)}var lv={};ze(lv,{MAPE:()=>kne,MSE:()=>Sne,binaryAccuracy:()=>fne,binaryCrossentropy:()=>mne,categoricalAccuracy:()=>yne,categoricalCrossentropy:()=>gne,cosineProximity:()=>_ne,mape:()=>Nne,meanAbsoluteError:()=>bne,meanAbsolutePercentageError:()=>vne,meanSquaredError:()=>Ine,mse:()=>Tne,precision:()=>xne,recall:()=>wne,sparseCategoricalAccuracy:()=>Ane});function fne(e,t){return LA(e,t)}function mne(e,t){return A7(e,t)}function Ane(e,t){return y7(e,t)}function yne(e,t){return WA(e,t)}function gne(e,t){return BA(e,t)}function xne(e,t){return m7(e,t)}function wne(e,t){return pte(e,t)}function _ne(e,t){return zA(e,t)}function bne(e,t){return Wp(e,t)}function vne(e,t){return Ll(e,t)}function kne(e,t){return Ll(e,t)}function Nne(e,t){return Ll(e,t)}function Ine(e,t){return Ti(e,t)}function Sne(e,t){return Ti(e,t)}function Tne(e,t){return Ti(e,t)}var uv={};ze(uv,{modelFromJSON:()=>qte});var cv={};ze(cv,{l1:()=>Ene,l1l2:()=>Cne,l2:()=>Rne});function Cne(e){return new Ec(e)}function Ene(e){return tne(e)}function Rne(e){return nne(e)}var hv=class extends Pl{constructor(){super(...arguments);this.model=null}setModel(e){if(!(e instanceof ha))throw new Error("model must be a LayersModel, not some other Container");this.model=e}};function n0(e,t){return et}var pv=class extends hv{constructor(e){super();if(e==null&&(e={}),e.restoreBestWeights)throw new De("restoreBestWeights = True is not implemented in EarlyStopping yet.");this.monitor=e.monitor||"val_loss",this.minDelta=Math.abs(e.minDelta||0),this.patience=e.patience||0,this.verbose=e.verbose||0,this.mode=e.mode||"auto",this.baseline=e.baseline,["auto","min","max"].indexOf(this.mode)===-1&&(console.warn(`EarlyStopping mode '${this.mode}' is invalid. Falling back to mode 'auto'.`),this.mode="auto"),this.mode==="min"?this.monitorFunc=n0:this.mode==="max"?this.monitorFunc=dv:this.monitor.indexOf("acc")!==-1?this.monitorFunc=dv:this.monitorFunc=n0,this.monitorFunc===n0&&(this.minDelta*=-1)}async onTrainBegin(e){this.wait=0,this.stoppedEpoch=0,this.baseline!=null?this.best=this.baseline:this.best=this.monitorFunc===n0?Infinity:-Infinity}async onEpochEnd(e,t){await Ga(t);let n=this.getMonitorValue(t);n!=null&&(this.monitorFunc(n-this.minDelta,this.best)?(this.best=n,this.wait=0):(this.wait++,this.wait>=this.patience&&(this.stoppedEpoch=e,this.model.stopTraining=!0)))}async onTrainEnd(e){this.stoppedEpoch>0&&this.verbose&&console.log(`Epoch ${this.stoppedEpoch}: early stopping.`)}getMonitorValue(e){e==null&&(e={});let t=e[this.monitor];return t==null&&console.warn(`Metric for EarlyStopping ${this.monitor} is not available. Available metrics are: ${Object.keys(e)}`),t}};function Fne(e){return new pv(e)}var Mne={earlyStopping:Fne},Sr;(function(e){e[e.DT_INVALID=0]="DT_INVALID",e[e.DT_FLOAT=1]="DT_FLOAT",e[e.DT_DOUBLE=2]="DT_DOUBLE",e[e.DT_INT32=3]="DT_INT32",e[e.DT_UINT8=4]="DT_UINT8",e[e.DT_INT16=5]="DT_INT16",e[e.DT_INT8=6]="DT_INT8",e[e.DT_STRING=7]="DT_STRING",e[e.DT_COMPLEX64=8]="DT_COMPLEX64",e[e.DT_INT64=9]="DT_INT64",e[e.DT_BOOL=10]="DT_BOOL",e[e.DT_QINT8=11]="DT_QINT8",e[e.DT_QUINT8=12]="DT_QUINT8",e[e.DT_QINT32=13]="DT_QINT32",e[e.DT_BFLOAT16=14]="DT_BFLOAT16",e[e.DT_FLOAT_REF=101]="DT_FLOAT_REF",e[e.DT_DOUBLE_REF=102]="DT_DOUBLE_REF",e[e.DT_INT32_REF=103]="DT_INT32_REF",e[e.DT_UINT8_REF=104]="DT_UINT8_REF",e[e.DT_INT16_REF=105]="DT_INT16_REF",e[e.DT_INT8_REF=106]="DT_INT8_REF",e[e.DT_STRING_REF=107]="DT_STRING_REF",e[e.DT_COMPLEX64_REF=108]="DT_COMPLEX64_REF",e[e.DT_INT64_REF=109]="DT_INT64_REF",e[e.DT_BOOL_REF=110]="DT_BOOL_REF",e[e.DT_QINT8_REF=111]="DT_QINT8_REF",e[e.DT_QUINT8_REF=112]="DT_QUINT8_REF",e[e.DT_QINT32_REF=113]="DT_QINT32_REF",e[e.DT_BFLOAT16_REF=114]="DT_BFLOAT16_REF"})(Sr||(Sr={}));var fv;(function(e){let t;(function(n){n[n.LEGACY=0]="LEGACY",n[n.V1=1]="V1",n[n.V2=2]="V2"})(t=e.CheckpointFormatVersion||(e.CheckpointFormatVersion={}))})(fv||(fv={}));var Zy={};function $ne(e,t){let n={tfOpName:e,category:"custom",inputs:[],attrs:[],customExecutor:t};Zy[e]=n}function mv(e){return Zy[e]}function Dne(e){delete Zy[e]}function k(e,t,n,r,a){let s=t.inputParams[e];if(s&&s.inputIndexStart!==void 0){let o=s.inputIndexStart,l=s.inputIndexEnd===0?void 0:s.inputIndexEnd===void 0?o+1:s.inputIndexEnd;if(s.type==="tensor")return En(t.inputNames[s.inputIndexStart],n,r,a);if(s.type==="tensors")return t.inputNames.slice(o,l).map(h=>En(h,n,r,a));let u=En(t.inputNames.slice(o)[0],n,r,a),c=u.dataSync();return s.type==="number"?c[0]:v.toNestedArray(u.shape,c)}let i=t.attrParams[e];return i&&i.value}function En(e,t,n,r){let[a,s]=Wn(e);if(r!=null){let o=r.getHashTableHandleByName(a);if(o!=null)return o}let i=n.currentContextIds.find(o=>!!t[r0(a,o)]);return i!==void 0?t[r0(a,i)][s]:void 0}function One(e,t,n){return t[r0(e,n.currentContextId)]}function da(e,t){let[n,r]=Wn(e);return[r0(n,t&&t.currentContextId),r]}function r0(e,t){return t?`${e}-${t}`:e}function Wn(e){let t=e.split(":");return t.length===1?[e,0]:[t[0],Number(t[t.length-1])]}function a0(e,t,n){let r=k("pad",e,t,n);if(r==="explicit"){r=k("explicitPaddings",e,t,n);let a=[[0,0],[0,0],[0,0],[0,0]];for(let s=0;s<4;s++)a[s][0]=r[s*2],a[s][1]=r[s*2+1];return a}return r}function pa(e){return e.kept?e:Rr(e)}var Av={};ze(Av,{json:()=>zne});var zne=[{tfOpName:"Add",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddV2",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AddN",category:"arithmetic",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"BiasAdd",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"Sub",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"RealDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Div",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"DivNoNan",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorDiv",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mul",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Maximum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Minimum",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Pow",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SquaredDifference",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Mod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"FloorMod",category:"arithmetic",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],yv={};ze(yv,{json:()=>Pne});var Pne=[{tfOpName:"Abs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atan2",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ceil",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ClipByValue",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"clipValueMin",type:"number"},{start:2,name:"clipValueMax",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Complex",category:"basic_math",inputs:[{start:0,name:"real",type:"tensor"},{start:1,name:"imag",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ComplexAbs",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cos",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Cosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Elu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Exp",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Floor",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Imag",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Neg",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Real",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"Tout",name:"outputType",type:"dtype",notSupported:!0}]},{tfOpName:"Prelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"alpha",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Relu6",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Selu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sigmoid",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sin",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Rsqrt",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Square",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tan",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Tanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Sign",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Round",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Expm1",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Log1p",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Reciprocal",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Softplus",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Asinh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Acosh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Atanh",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Erf",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Prod",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axes",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LeakyRelu",category:"basic_math",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"alpha",name:"alpha",type:"number",defaultValue:.2},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],gv={};ze(gv,{json:()=>Lne});var Lne=[{tfOpName:"EmptyTensorList",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"maxNumElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"LoopCond",category:"control",inputs:[{start:0,name:"pred",type:"tensor"}]},{tfOpName:"Switch",category:"control",inputs:[{start:0,name:"data",type:"tensor"},{start:1,name:"pred",type:"tensor"}]},{tfOpName:"Merge",category:"control",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}]},{tfOpName:"Enter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"frame_name",name:"frameName",type:"string"},{tfName:"is_constant",name:"isConstant",type:"bool"}]},{tfOpName:"Exit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NextIteration",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayV3",category:"control",inputs:[{start:0,name:"size",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"dynamic_size",name:"dynamicSize",type:"bool"},{tfName:"clear_after_read",name:"clearAfterRead",type:"bool"},{tfName:"identical_element_shapes",name:"identicalElementShapes",type:"bool"},{tfName:"tensor_array_name",name:"name",type:"string"}]},{tfOpName:"TensorArrayWriteV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayReadV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"TensorArrayGatherV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape",name:"elementShape",type:"shape"}]},{tfOpName:"TensorArrayScatterV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"tensor",type:"tensor"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArrayConcatV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"element_shape_except0",name:"elementShapeExcept0",type:"shape",notSupported:!0}]},{tfOpName:"TensorArraySplitV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"tensor",type:"tensor"},{start:2,name:"lengths",type:"number[]"},{start:3,name:"flowIn",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"TensorArraySizeV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"},{start:1,name:"flowIn",type:"number"}]},{tfOpName:"TensorArrayCloseV3",category:"control",inputs:[{start:0,name:"tensorArrayId",type:"tensor"}]},{tfOpName:"StatelessIf",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"If",category:"control",inputs:[{start:0,name:"cond",type:"tensor"},{start:1,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"then_branch",name:"thenBranch",type:"func"},{tfName:"else_branch",name:"elseBranch",type:"func"}]},{tfOpName:"StatelessWhile",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"While",category:"control",inputs:[{start:0,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"cond",name:"cond",type:"func"},{tfName:"body",name:"body",type:"func"}]},{tfOpName:"TensorListScatter",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListScatterV2",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"},{start:3,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGather",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"indices",type:"number[]"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListGetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListSetItem",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"index",type:"number"},{start:2,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListReserve",category:"control",inputs:[{start:0,name:"elementShape",type:"shape"},{start:1,name:"numElements",type:"number"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListFromTensor",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListStack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"},{tfName:"num_elements",name:"numElements",type:"dtype"}]},{tfOpName:"TensorListSplit",category:"control",inputs:[{start:0,name:"tensor",type:"tensor"},{start:1,name:"elementShape",type:"shape"},{start:2,name:"lengths",type:"number[]"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListConcat",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"}],attrs:[{tfName:"element_shape",name:"elementShape",type:"shape"},{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPopBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"elementShape",type:"shape"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]},{tfOpName:"TensorListPushBack",category:"control",inputs:[{start:0,name:"tensorListId",type:"tensor"},{start:1,name:"tensor",type:"tensor"}],attrs:[{tfName:"element_dtype",name:"elementDType",type:"dtype"}]}],xv={};ze(xv,{json:()=>Wne});var Wne=[{tfOpName:"AvgPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[],notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPoolWithArgmax",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"include_batch_in_index",name:"includeBatchInIndex",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"AvgPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MaxPool3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"ksize",name:"kernelSize",type:"number[]"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Conv1D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"stride",name:"stride",type:"number"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NWC"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"dilation",name:"dilation",type:"number",defaultValue:1}]},{tfOpName:"Conv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"useCudnnOnGpu",name:"useCudnnOnGpu",type:"bool"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"_FusedConv2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"use_cudnn_on_gpu",name:"useCudnnOnGpu",type:"bool",defaultValue:!0},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"leakyrelu_alpha",name:"leakyreluAlpha",type:"number"}]},{tfOpName:"Conv2DBackpropInput",category:"convolution",inputs:[{start:2,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:0,name:"outputShape",type:"number[]"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]",notSupported:!0}]},{tfOpName:"DepthwiseConv2d",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"DepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"input",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"FusedDepthwiseConv2dNative",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]",defaultValue:[1,1,1,1]},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"explicit_paddings",name:"explicitPaddings",type:"number[]",defaultValue:[]}]},{tfOpName:"Conv3D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"padding",name:"pad",type:"string"},{tfName:"data_format",name:"dataFormat",type:"string",defaultValue:"NHWC"},{tfName:"dilations",name:"dilations",type:"number[]"}]},{tfOpName:"Dilation2D",category:"convolution",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"filter",type:"tensor"}],attrs:[{tfName:"strides",name:"strides",type:"number[]"},{tfName:"rates",name:"dilations",type:"number[]"},{tfName:"padding",name:"pad",type:"string"}]}],wv={};ze(wv,{json:()=>Bne});var Bne=[{tfOpName:"Fill",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"},{start:1,name:"value",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"LinSpace",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"num",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"OneHot",category:"creation",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"depth",type:"number"},{start:2,name:"onValue",type:"number",defaultValue:1},{start:3,name:"offValue",type:"number",defaultValue:0}],attrs:[{tfName:"axis",name:"axis",type:"number",notSupported:!0},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Ones",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"OnesLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"RandomUniform",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"minval",name:"minval",type:"number",defaultValue:0},{tfName:"maxval",name:"maxval",type:"number",defaultValue:1},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"seed",name:"seed",type:"number",defaultValue:0},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Range",category:"creation",inputs:[{start:0,name:"start",type:"number"},{start:1,name:"stop",type:"number"},{start:2,name:"step",type:"number",defaultValue:0}],attrs:[{tfName:"Tidx",name:"dtype",type:"dtype"}]},{tfOpName:"TruncatedNormal",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"means",name:"mean",type:"number",defaultValue:0},{tfName:"stddev",name:"stdDev",type:"number",defaultValue:1},{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number",defaultValue:0,notSupported:!0},{tfName:"dtype",name:"dtype",type:"dtype"},{tfName:"T",name:"T",type:"number",notSupported:!0}]},{tfOpName:"Zeros",category:"creation",inputs:[{start:0,name:"shape",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"ZerosLike",category:"creation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype"}]},{tfOpName:"Multinomial",category:"creation",inputs:[{start:0,name:"logits",type:"tensor"},{start:1,name:"numSamples",type:"number"}],attrs:[{tfName:"seed",name:"seed",type:"number"},{tfName:"seed2",name:"seed2",type:"number"},{tfName:"T",name:"dtype",type:"dtype"},{tfName:"output_dtype",name:"output_dtype",type:"dtype"}]}],_v={};ze(_v,{json:()=>Vne});var Vne=[{tfOpName:"NonMaxSuppressionV2",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV3",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}]},{tfOpName:"NonMaxSuppressionV4",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0},{tfName:"T_threshold",name:"threshold",type:"dtype",notSupported:!0},{tfName:"pad_to_max_output_size",name:"padToMaxOutputSize",type:"bool"}]},{tfOpName:"NonMaxSuppressionV5",category:"dynamic",inputs:[{start:0,name:"boxes",type:"tensor"},{start:1,name:"scores",type:"tensor"},{start:2,name:"maxOutputSize",type:"number"},{start:3,name:"iouThreshold",type:"number"},{start:4,name:"scoreThreshold",type:"number"},{start:5,name:"softNmsSigma",type:"number"}]},{tfOpName:"Where",category:"dynamic",inputs:[{start:0,name:"condition",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ListDiff",category:"dynamic",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"y",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],bv={};ze(bv,{json:()=>Une});var Une=[{tfOpName:"TopKV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"k",type:"number"}],attrs:[{tfName:"sorted",name:"sorted",type:"bool"}]},{tfOpName:"Unique",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"UniqueV2",category:"evaluation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]}],vv={};ze(vv,{json:()=>Hne});var Hne=[{tfOpName:"PlaceholderWithDefault",category:"graph",inputs:[{start:0,name:"default",type:"tensor"}],attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Placeholder",category:"graph",attrs:[{tfName:"shape",name:"shape",type:"shape"},{tfName:"dtype",name:"dtype",type:"dtype"}]},{tfOpName:"Const",category:"graph"},{tfOpName:"Identity",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IdentityN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Snapshot",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Rank",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Size",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"Shape",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"ShapeN",category:"graph",inputs:[{start:0,end:0,name:"x",type:"tensors"}]},{tfOpName:"Print",category:"graph",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"data",type:"tensors"}],attrs:[{tfName:"message",name:"message",type:"string"},{tfName:"first_n",name:"firstN",type:"number",notSupported:!0},{tfName:"summarize",name:"summarize",type:"number",defaultValue:3}]},{tfOpName:"NoOp",category:"graph",inputs:[]},{tfOpName:"StopGradient",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"FakeQuantWithMinMaxVars",category:"graph",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"min",name:"min",type:"number"},{tfName:"max",name:"max",type:"number"}]}],kv={};ze(kv,{json:()=>jne});var jne=[{tfOpName:"HashTable",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"HashTableV2",category:"hash_table",inputs:[],attrs:[{tfName:"shared_name",name:"sharedName",type:"string"},{tfName:"use_node_name_sharing",name:"useNodeNameSharing",type:"bool"},{tfName:"key_dtype",name:"keyDType",type:"dtype"},{tfName:"value_dtype",name:"valueDType",type:"dtype"}]},{tfOpName:"LookupTableImport",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableImportV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"values",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFind",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableFindV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"},{start:1,name:"keys",type:"tensor"},{start:2,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"Tin",name:"tIn",type:"dtype",notSupported:!0},{tfName:"Tout",name:"tOut",type:"dtype",notSupported:!0}]},{tfOpName:"LookupTableSize",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]},{tfOpName:"LookupTableSizeV2",category:"hash_table",inputs:[{start:0,name:"tableHandle",type:"tensor"}]}],Nv={};ze(Nv,{json:()=>Gne});var Gne=[{tfOpName:"ResizeBilinear",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"ResizeNearestNeighbor",category:"image",inputs:[{start:0,name:"images",type:"tensor"},{start:1,name:"size",type:"number[]"}],attrs:[{tfName:"align_corners",name:"alignCorners",type:"bool"},{tfName:"half_pixel_centers",name:"halfPixelCenters",type:"bool"},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"CropAndResize",category:"image",inputs:[{start:0,name:"image",type:"tensor"},{start:1,name:"boxes",type:"tensor"},{start:2,name:"boxInd",type:"tensor"},{start:3,name:"cropSize",type:"number[]"}],attrs:[{tfName:"method",name:"method",type:"string"},{tfName:"extrapolation_value",name:"extrapolationValue",type:"number"}]}],Iv={};ze(Iv,{json:()=>qne});var qne=[{tfOpName:"Equal",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"NotEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Greater",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"GreaterEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Less",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LessEqual",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalAnd",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalNot",category:"logical",inputs:[{start:0,name:"a",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"LogicalOr",category:"logical",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Select",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"SelectV2",category:"logical",inputs:[{start:0,name:"condition",type:"tensor"},{start:1,name:"a",type:"tensor"},{start:2,name:"b",type:"tensor"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Sv={};ze(Sv,{json:()=>Xne});var Xne=[{tfOpName:"_FusedMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"},{start:2,end:0,name:"args",type:"tensors"}],attrs:[{tfName:"num_args",name:"numArgs",type:"number"},{tfName:"fused_ops",name:"fusedOps",type:"string[]",defaultValue:[]},{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:1e-4},{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"MatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"transpose_a",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"transpose_b",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMul",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"BatchMatMulV2",category:"matrices",inputs:[{start:0,name:"a",type:"tensor"},{start:1,name:"b",type:"tensor"}],attrs:[{tfName:"adj_x",name:"transposeA",type:"bool",defaultValue:!1},{tfName:"adj_y",name:"transposeB",type:"bool",defaultValue:!1},{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]},{tfOpName:"Transpose",category:"matrices",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"perm",type:"number[]"}],attrs:[{tfName:"T",name:"dtype",type:"dtype",notSupported:!0}]}],Tv={};ze(Tv,{json:()=>Kne});var Kne=[{tfOpName:"FusedBatchNorm",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV2",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"FusedBatchNormV3",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"scale",type:"tensor"},{start:2,name:"offset",type:"tensor"},{start:3,name:"mean",type:"tensor"},{start:4,name:"variance",type:"tensor"}],attrs:[{tfName:"epsilon",name:"epsilon",type:"number",defaultValue:.001},{tfName:"data_format",name:"dataFormat",type:"string",notSupported:!0}]},{tfOpName:"LRN",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"depth_radius",name:"radius",type:"number",defaultValue:5},{tfName:"bias",name:"bias",type:"number",defaultValue:1},{tfName:"alpha",name:"alpha",type:"number",defaultValue:1},{tfName:"beta",name:"beta",type:"number",defaultValue:.5}]},{tfOpName:"Softmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"LogSoftmax",category:"normalization",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"SparseToDense",category:"normalization",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!0,notSupported:!0}]}],Cv={};ze(Cv,{json:()=>Zne});var Zne=[{tfOpName:"Bincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}]},{tfOpName:"DenseBincount",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"size",type:"number"},{start:2,name:"weights",type:"tensor"}],attrs:[{tfName:"binary_output",name:"binaryOutput",type:"bool"}]},{tfOpName:"Max",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Mean",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Min",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Sum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"All",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Any",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"ArgMax",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"ArgMin",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"Prod",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}],attrs:[{tfName:"keep_dims",name:"keepDims",type:"bool"}]},{tfOpName:"Cumsum",category:"reduction",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}],attrs:[{tfName:"exclusive",name:"exclusive",type:"bool"},{tfName:"reverse",name:"reverse",type:"bool"}]}],Ev={};ze(Ev,{json:()=>Yne});var Yne=[{tfOpName:"ConcatV2",category:"slice_join",inputs:[{start:0,end:-1,name:"tensors",type:"tensors"},{start:-1,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"Concat",category:"slice_join",inputs:[{start:1,end:0,name:"tensors",type:"tensors"},{start:0,name:"axis",type:"number"}],attrs:[{tfName:"N",name:"n",type:"number",defaultValue:2}]},{tfOpName:"GatherV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"},{start:2,name:"axis",type:"number",defaultValue:0}],attrs:[{tfName:"batch_dims",name:"batchDims",type:"number",defaultValue:0}]},{tfOpName:"Gather",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",notSupported:!0}]},{tfOpName:"Reverse",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"dims",type:"bool[]"}]},{tfOpName:"ReverseV2",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number[]"}]},{tfOpName:"Slice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"size",type:"number[]"}]},{tfOpName:"StridedSlice",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"begin",type:"number[]"},{start:2,name:"end",type:"number[]"},{start:3,name:"strides",type:"number[]"}],attrs:[{tfName:"begin_mask",name:"beginMask",type:"number",defaultValue:0},{tfName:"end_mask",name:"endMask",type:"number",defaultValue:0},{tfName:"new_axis_mask",name:"newAxisMask",type:"number",defaultValue:0},{tfName:"ellipsis_mask",name:"ellipsisMask",type:"number",defaultValue:0},{tfName:"shrink_axis_mask",name:"shrinkAxisMask",type:"number",defaultValue:0}]},{tfOpName:"Pack",category:"slice_join",inputs:[{start:0,end:0,name:"tensors",type:"tensors"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0}]},{tfOpName:"Unpack",category:"slice_join",inputs:[{start:0,name:"tensor",type:"tensor"}],attrs:[{tfName:"axis",name:"axis",type:"number",defaultValue:0},{tfName:"num",name:"num",type:"number",defaultValue:0,notSupported:!0}]},{tfOpName:"Tile",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"reps",type:"number[]"}]},{tfOpName:"Split",category:"slice_join",inputs:[{start:0,name:"axis",type:"number",defaultValue:0},{start:1,name:"x",type:"tensor"}],attrs:[{tfName:"num_split",name:"numOrSizeSplits",type:"number",defaultValue:1}]},{tfOpName:"SplitV",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"numOrSizeSplits",type:"number[]"},{start:2,name:"axis",type:"number",defaultValue:0}]},{tfOpName:"ScatterNd",category:"slice_join",inputs:[{start:0,name:"indices",type:"tensor"},{start:1,name:"values",type:"tensor"},{start:2,name:"shape",type:"number[]"}]},{tfOpName:"GatherNd",category:"slice_join",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"indices",type:"tensor"}]},{tfOpName:"SparseToDense",category:"slice_join",inputs:[{start:0,name:"sparseIndices",type:"tensor"},{start:1,name:"outputShape",type:"number[]"},{start:2,name:"sparseValues",type:"tensor"},{start:3,name:"defaultValue",type:"tensor"}],attrs:[{tfName:"validate_indices",name:"validateIndices",type:"bool",defaultValue:!1,notSupported:!0}]}],Rv={};ze(Rv,{json:()=>Jne});var Jne=[{tfOpName:"FFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"IFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"}]},{tfOpName:"RFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]},{tfOpName:"IRFFT",category:"spectral",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"fft_length",type:"number",notSupported:!0}]}],Fv={};ze(Fv,{json:()=>Qne});var Qne=[{tfOpName:"Cast",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"SrcT",name:"sdtype",type:"dtype",notSupported:!0},{tfName:"DstT",name:"dtype",type:"dtype"}]},{tfOpName:"ExpandDims",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"axis",type:"number"}]},{tfOpName:"MirrorPad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"mode",name:"mode",type:"string"}]},{tfOpName:"Pad",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"}],attrs:[{tfName:"constant_value",name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"PadV2",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"padding",type:"number[]"},{start:2,name:"constantValue",type:"number",defaultValue:0}]},{tfOpName:"Reshape",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}]},{tfOpName:"Squeeze",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"axis",tfDeprecatedName:"squeeze_dims",name:"axis",type:"number[]"}]},{tfOpName:"SpaceToBatchND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"paddings",type:"number[]"}]},{tfOpName:"BatchToSpaceND",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"blockShape",type:"number[]"},{start:2,name:"crops",type:"number[]"}]},{tfOpName:"DepthToSpace",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"}],attrs:[{tfName:"block_size",name:"blockSize",type:"number"},{tfName:"data_format",name:"dataFormat",type:"string"}]},{tfOpName:"BroadcastTo",category:"transformation",inputs:[{start:0,name:"x",type:"tensor"},{start:1,name:"shape",type:"number[]"}],attrs:[]}],$v=class{static get Instance(){return this._instance||(this._instance=new this)}constructor(){let e=[Av,yv,gv,xv,wv,_v,bv,Iv,Nv,vv,Sv,Tv,Cv,Ev,Rv,Fv,kv],t=[].concat(...e.map(n=>n.json));this.opMappers=t.reduce((n,r)=>(n[r.tfOpName]=r,n),{})}transformGraph(e,t={}){let n=e.node,r=[],a=[],s=[],i=n.reduce((f,m)=>(f[m.name]=this.mapNode(m),m.op.startsWith("Placeholder")?r.push(f[m.name]):m.op==="Const"?a.push(f[m.name]):(m.input==null||m.input.length===0)&&s.push(f[m.name]),f),{}),o=[],l=[],u={},c={};t!=null&&(u=this.mapSignatureEntries(t.inputs),c=this.mapSignatureEntries(t.outputs));let h=Object.keys(i);h.forEach(f=>{let m=i[f];m.inputNames.forEach(A=>{let[y]=da(A);m.inputs.push(i[y]),i[y].children.push(m)})}),Object.keys(c).length===0?h.forEach(f=>{let m=i[f];m.children.length===0&&l.push(m)}):Object.keys(c).forEach(f=>{let[m]=da(f),A=i[m];A!=null&&(A.signatureKey=c[f],l.push(A))}),Object.keys(u).length>0?Object.keys(u).forEach(f=>{let[m]=da(f),A=i[m];A&&(A.signatureKey=u[f],o.push(A))}):o=r;let d={};e.library!=null&&e.library.function!=null&&(d=e.library.function.reduce((f,m)=>(f[m.signature.name]=this.mapFunction(m),f),{}));let p={nodes:i,inputs:o,outputs:l,weights:a,placeholders:r,signature:t,functions:d};return s.length>0&&(p.initNodes=s),p}mapSignatureEntries(e){return Object.keys(e||{}).reduce((t,n)=>(t[e[n].name]=n,t),{})}mapNode(e){let t=mv(e.op)||this.opMappers[e.op]||{};e.attr==null&&(e.attr={});let n={name:e.name,op:e.op,category:t.category,inputNames:(e.input||[]).map(r=>r.startsWith("^")?r.substr(1):r),inputs:[],children:[],inputParams:{},attrParams:{},rawAttrs:e.attr};return t.inputs!=null&&(n.inputParams=t.inputs.reduce((r,a)=>(r[a.name]={type:a.type,inputIndexStart:a.start,inputIndexEnd:a.end},r),{})),t.attrs!=null&&(n.attrParams=t.attrs.reduce((r,a)=>{let s=a.type,i;switch(a.type){case"string":i=Yy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Yy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"string[]":i=s2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=s2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number":i=Qy(e.attr,a.tfName,a.defaultValue||0),i===void 0&&!!a.tfDeprecatedName&&(i=Qy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"number[]":i=a2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=a2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool":i=Jy(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Jy(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"bool[]":i=o2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=o2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape":i=r2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=r2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"shape[]":i=i2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=i2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype":i=t2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=t2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"dtype[]":i=n2(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=n2(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"func":i=Mv(e.attr,a.tfName,a.defaultValue),i===void 0&&!!a.tfDeprecatedName&&(i=Mv(e.attr,a.tfDeprecatedName,a.defaultValue));break;case"tensor":case"tensors":break;default:throw new Error(`Unsupported param type: ${a.type} for op: ${e.op}`)}return r[a.name]={value:i,type:s},r},{})),n}mapFunction(e){let t=e.nodeDef,n=[],r=[],a={};t!=null&&(a=t.reduce((u,c)=>(u[c.name]=this.mapNode(c),c.op==="Const"&&r.push(u[c.name]),u),{}));let s=[],i=[];e.signature.inputArg.forEach(u=>{let[c]=da(u.name),h={name:c,op:"Placeholder",inputs:[],inputNames:[],category:"graph",inputParams:{},attrParams:{dtype:{value:e2(u.type),type:"dtype"}},children:[]};h.signatureKey=u.name,s.push(h),a[c]=h}),Object.keys(a).forEach(u=>{let c=a[u];c.inputNames.forEach(h=>{let[d]=da(h);c.inputs.push(a[d]),a[d].children.push(c)})});let o=e.ret;e.signature.outputArg.forEach(u=>{let[c,h]=da(o[u.name]),d=a[c];d!=null&&(d.defaultOutput=h,i.push(d))});let l=this.mapArgsToSignature(e);return{nodes:a,inputs:s,outputs:i,weights:r,placeholders:n,signature:l}}mapArgsToSignature(e){return{methodName:e.signature.name,inputs:e.signature.inputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n),t),{}),outputs:e.signature.outputArg.reduce((t,n)=>(t[n.name]=this.mapArgToTensorInfo(n,e.ret),t),{})}}mapArgToTensorInfo(e,t){let n=e.name;return t!=null&&(n=t[n]),{name:n,dtype:e.type}}};function ere(e){let t=J().global;if(typeof t.atob!="undefined")return t.atob(e);if(typeof Buffer!="undefined")return new Buffer(e,"base64").toString();throw new Error("Unable to decode base64 in this environment. Missing built-in atob() or Buffer()")}function Dv(e,t){let n=Array.isArray(e)?String.fromCharCode.apply(null,e):ere(e);return t?n:n.toLowerCase()}function Yy(e,t,n,r=!1){let a=e[t];return a!=null?Dv(a.s,r):n}function Jy(e,t,n){let r=e[t];return r?r.b:n}function Qy(e,t,n){let r=e[t]||{},a=r.i!=null?r.i:r.f!=null?r.f:n;return typeof a=="number"?a:parseInt(a,10)}function e2(e){switch(typeof e=="string"&&(e=Sr[e]),e){case Sr.DT_FLOAT:return"float32";case Sr.DT_INT32:case Sr.DT_INT64:case Sr.DT_INT8:case Sr.DT_UINT8:return"int32";case Sr.DT_BOOL:return"bool";case Sr.DT_DOUBLE:return"float32";case Sr.DT_STRING:return"string";default:return null}}function Mv(e,t,n){let r=e[t];return r&&r.func?r.func.name:n}function t2(e,t,n){let r=e[t];return r&&r.type?e2(r.type):n}function n2(e,t,n){let r=e[t];return r&&r.list&&r.list.type?r.list.type.map(a=>e2(a)):n}function Ov(e){if(!e.unknownRank)return e.dim!=null?e.dim.map(t=>typeof t.size=="number"?t.size:parseInt(t.size,10)):[]}function r2(e,t,n){let r=e[t];return r&&r.shape?Ov(r.shape):n}function a2(e,t,n){let r=e[t];return r?((r.list.f&&r.list.f.length?r.list.f:r.list.i)||[]).map(a=>typeof a=="number"?a:parseInt(a,10)):n}function s2(e,t,n,r=!1){let a=e[t];return a&&a.list&&a.list.s?a.list.s.map(s=>Dv(s,r)):n}function i2(e,t,n){let r=e[t];return r&&r.list&&r.list.shape?r.list.shape.map(a=>Ov(a)):n}function o2(e,t,n){let r=e[t];return r&&r.list&&r.list.b?r.list.b:n}var tre=class{constructor(e,t,n){this.node=e,this.tensorMap=t,this.context=n,this.inputs=[],this.attrs={},this.inputs=e.inputNames.map(r=>this.getInput(r)),e.rawAttrs!=null&&(this.attrs=Object.keys(e.rawAttrs).reduce((r,a)=>(r[a]=this.getAttr(a),r),{}))}getInput(e){return En(e,this.tensorMap,this.context)}getAttr(e,t){let n=this.node.rawAttrs[e];if(n.tensor!=null)return En(e,this.tensorMap,this.context);if(n.i!=null||n.f!=null)return Qy(this.node.rawAttrs,e,t);if(n.s!=null)return Yy(this.node.rawAttrs,e,t);if(n.b!=null)return Jy(this.node.rawAttrs,e,t);if(n.shape!=null)return r2(this.node.rawAttrs,e,t);if(n.type!=null)return t2(this.node.rawAttrs,e,t);if(n.list!=null){if(n.list.i!=null||n.list.f!=null)return a2(this.node.rawAttrs,e,t);if(n.list.s!=null)return s2(this.node.rawAttrs,e,t);if(n.list.shape!=null)return i2(this.node.rawAttrs,e,t);if(n.list.b!=null)return o2(this.node.rawAttrs,e,t);if(n.list.type!=null)return n2(this.node.rawAttrs,e,t)}return t}},nre=(e,t,n)=>{switch(e.op){case"BiasAdd":case"AddV2":case"Add":return[se(k("a",e,t,n),k("b",e,t,n))];case"AddN":return[Ma(k("tensors",e,t,n))];case"FloorMod":case"Mod":return[om(k("a",e,t,n),k("b",e,t,n))];case"Mul":return[P(k("a",e,t,n),k("b",e,t,n))];case"RealDiv":case"Div":return[ge(k("a",e,t,n),k("b",e,t,n))];case"DivNoNan":return[Yf(k("a",e,t,n),k("b",e,t,n))];case"FloorDiv":return[hd(k("a",e,t,n),k("b",e,t,n))];case"Sub":return[ye(k("a",e,t,n),k("b",e,t,n))];case"Minimum":return[fl(k("a",e,t,n),k("b",e,t,n))];case"Maximum":return[Dr(k("a",e,t,n),k("b",e,t,n))];case"Pow":return[sa(k("a",e,t,n),k("b",e,t,n))];case"SquaredDifference":return[Dd(k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},rre=(e,t,n)=>{switch(e.op){case"Abs":case"ComplexAbs":return[zt(k("x",e,t,n))];case"Acos":return[Df(k("x",e,t,n))];case"Acosh":return[Of(k("x",e,t,n))];case"Asin":return[Pf(k("x",e,t,n))];case"Asinh":return[Lf(k("x",e,t,n))];case"Atan":return[Wf(k("x",e,t,n))];case"Atan2":return[Bf(k("x",e,t,n),k("y",e,t,n))];case"Atanh":return[Vf(k("x",e,t,n))];case"Ceil":return[Gf(k("x",e,t,n))];case"Complex":return[Ca(k("real",e,t,n),k("imag",e,t,n))];case"Cos":return[Vu(k("x",e,t,n))];case"Cosh":return[Ad(k("x",e,t,n))];case"Elu":return[cl(k("x",e,t,n))];case"Erf":return[Jf(k("x",e,t,n))];case"Exp":return[qn(k("x",e,t,n))];case"Expm1":return[Qf(k("x",e,t,n))];case"Floor":return[hl(k("x",e,t,n))];case"Log":return[Mn(k("x",e,t,n))];case"Log1p":return[wd(k("x",e,t,n))];case"Imag":return[gd(k("x",e,t,n))];case"Neg":return[vt(k("x",e,t,n))];case"Reciprocal":return[cm(k("x",e,t,n))];case"Real":return[Ku(k("x",e,t,n))];case"Relu":return[zr(k("x",e,t,n))];case"Round":return[hm(k("x",e,t,n))];case"Selu":return[Cd(k("x",e,t,n))];case"Sigmoid":return[Fn(k("x",e,t,n))];case"Sin":return[Ed(k("x",e,t,n))];case"Sign":return[pm(k("x",e,t,n))];case"Sinh":return[Rd(k("x",e,t,n))];case"Softplus":return[dl(k("x",e,t,n))];case"Sqrt":return[en(k("x",e,t,n))];case"Square":return[lt(k("x",e,t,n))];case"Tanh":return[ol(k("x",e,t,n))];case"Tan":return[Am(k("x",e,t,n))];case"ClipByValue":return[vn(k("x",e,t,n),k("clipValueMin",e,t,n),k("clipValueMax",e,t,n))];case"Relu6":return[Sd(k("x",e,t,n))];case"Rsqrt":return[Td(En(e.inputNames[0],t,n))];case"Prod":return[Nd(k("x",e,t,n),k("axes",e,t,n))];case"LeakyRelu":return[Hu(k("x",e,t,n),k("alpha",e,t,n))];case"Prelu":return[Xu(k("x",e,t,n),k("alpha",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function hr(e,t,n=""){if(!(typeof e=="number"||typeof t=="number")){v.assert(e.length===t.length,()=>n+` Shapes ${e} and ${t} must match`);for(let r=0;rn+` Shapes ${e} and ${t} must match`)}}}function zv(e){return!(typeof e=="number"||e.some(t=>t<0))}function Oc(e,t,n){let r=l2(e,n),a=!zv(r);if(a&&t.length===0)throw new Error(`Tried to calculate elements of an empty list with non-fully-defined elementShape: ${r}`);if(a&&t.forEach(s=>{r=l2(s.shape,r)}),!zv(r))throw new Error(`Non-fully-defined elementShape: ${r}`);return r}function l2(e,t){if(typeof e=="number")return t;if(typeof t=="number")return e;if(e.length!==t.length)throw new Error(`Incompatible ranks during merge: ${e} vs. ${t}`);let n=[];for(let r=0;r=0&&s>=0&&a!==s)throw new Error(`Incompatible shape during merge: ${e} vs. ${t}`);n[r]=a>=0?a:s}return n}var are=class{constructor(e,t,n,r,a,s,i){this.name=e,this.dtype=t,this.maxSize=n,this.elementShape=r,this.identicalElementShapes=a,this.dynamicSize=s,this.clearAfterRead=i,this.tensors=[],this.closed_=!1,this.idTensor=be(0),Gt(this.idTensor)}get id(){return this.idTensor.id}get closed(){return this.closed_}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.tensor.id))&&t.tensor.dispose()}),this.tensors=[],this.closed_=!0,this.idTensor.dispose()}size(){return this.tensors.length}read(e){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||e>=this.size())throw new Error(`Tried to read from index ${e}, but array size is: ${this.size()}`);let t=this.tensors[e];if(t.cleared)throw new Error(`TensorArray ${this.name}: Could not read index ${e} twice because it was cleared after a previous read (perhaps try setting clear_after_read = false?).`);return this.clearAfterRead&&(t.cleared=!0),t.read=!0,t.tensor}readMany(e){return e.map(t=>this.read(t))}write(e,t){if(this.closed_)throw new Error(`TensorArray ${this.name} has already been closed.`);if(e<0||!this.dynamicSize&&e>=this.maxSize)throw new Error(`Tried to write to index ${e}, but array is not resizeable and size is: ${this.maxSize}`);let n=this.tensors[e]||{};if(t.dtype!==this.dtype)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because the value dtype is ${t.dtype}, but TensorArray dtype is ${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),hr(this.elementShape,t.shape,`TensorArray ${this.name}: Could not write to TensorArray index ${e}.`),n.read)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been read.`);if(n.written)throw new Error(`TensorArray ${this.name}: Could not write to TensorArray index ${e}, because it has already been written.`);n.tensor=t,Gt(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray ${this.name}: could not write multiple tensors,because the index size: ${e.length} is not the same as tensors size: ${t.length}.`);e.forEach((n,r)=>this.write(n,t[r]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but gather requested dtype ${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let r=0;r=this.maxSize)throw new Error(`Max index must be < array size (${n} vs. ${this.maxSize})`);this.writeMany(e,ir(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArray dtype is ${this.dtype} but tensor has dtype ${t.dtype}`);let n=0,r=e.map(o=>(n+=o,n));if(n!==t.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let a=n===0?0:t.size/n,s=[];B(()=>{t=G(t,[1,n,a]);for(let o=0;o{if(n!==a.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${a.dtype}`);hr(t,a.shape,"TensorList shape mismatch: "),Gt(a)}),this.idTensor=be(0),this.maxNumElements=r,Gt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new zc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);hr(e,this.elementShape,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,e);return B(()=>{let a=this.tensors.map(s=>G(s,r));return dn(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=Oc(this.elementShape,this.tensors,e),r=this.tensors.pop();return hr(r.shape,e,"TensorList shape mismatch: "),G(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(hr(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Gt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);hr(this.tensors[e].shape,t,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,t);return G(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);hr(this.elementShape,t.shape,"TensorList shape mismatch: "),Gt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);hr(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let r=Oc(this.elementShape,this.tensors,n);return e.length===0?yr([],[0].concat(r)):B(()=>{let a=e.map(s=>G(this.tensors[s],r));return dn(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);hr(this.elementShape,t,"TensorList shape mismatch: ");let n=Oc(this.elementShape,this.tensors,t);return this.size()===0?yr([],[0].concat(n)):B(()=>{let r=this.tensors.map(a=>G(a,n));return st(r,0)})}};function are(e,t,n){let r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let a=e.shape.slice(1);hr(a,t,"TensorList shape mismatch: ");let s=ir(e);return new zc(s,t,r)}function sre(e,t,n){return new zc([],e,t,n)}function ire(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let a=Math.max(...t);if(r!=null&&r!==-1&&a>=r)throw new Error(`Max index must be < array size (${a} vs. ${r})`);let s=new zc([],n,e.dtype,r),i=ir(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function ore(e,t,n){let r=0,a=t.map(c=>(r+=c,r));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to + ${n}, and tensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray's size is not equal to the size of lengths (${this.maxSize} vs. ${e.length}), and the TensorArray is not marked as dynamically resizeable`);let a=n===0?0:t.size/n,s=[];B(()=>{t=G(t,[1,n,a]);for(let o=0;o{if(n!==a.dtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${a.dtype}`);hr(t,a.shape,"TensorList shape mismatch: "),Gt(a)}),this.idTensor=be(0),this.maxNumElements=r,Gt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new zc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operation expected a list with ${n} elements but got a list with ${this.tensors.length} elements.`);hr(e,this.elementShape,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,e);return B(()=>{let a=this.tensors.map(s=>G(s,r));return dn(a,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=Oc(this.elementShape,this.tensors,e),r=this.tensors.pop();return hr(r.shape,e,"TensorList shape mismatch: "),G(r,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${this.elementDtype}`);if(hr(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Gt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResize expects size to be non-negative. Got: ${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResize input size ${e} is greater maxNumElement ${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invalid data types; op elements ${n}, but list elements ${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Trying to access element ${e} in a list with ${this.tensors.length} elements.`);if(this.tensors[e]==null)throw new Error(`element at index ${e} is null.`);hr(this.tensors[e].shape,t,"TensorList shape mismatch: ");let r=Oc(this.elementShape,this.tensors,t);return G(this.tensors[e],r)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t.dtype}, but list elements ${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Trying to set element ${e} in a list with max ${this.maxNumElements} elements.`);hr(this.elementShape,t.shape,"TensorList shape mismatch: "),Gt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invalid data types; op elements ${t}, but list elements ${this.elementDtype}`);hr(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let r=Oc(this.elementShape,this.tensors,n);return e.length===0?yr([],[0].concat(r)):B(()=>{let a=e.map(s=>G(this.tensors[s],r));return dn(a,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorList dtype is ${this.elementDtype} but concat requested dtype ${e}`);hr(this.elementShape,t,"TensorList shape mismatch: ");let n=Oc(this.elementShape,this.tensors,t);return this.size()===0?yr([],[0].concat(n)):B(()=>{let r=this.tensors.map(a=>G(a,n));return st(r,0)})}};function sre(e,t,n){let r=e.dtype;if(e.shape.length<1)throw new Error(`Tensor must be at least a vector, but saw shape: ${e.shape}`);if(e.dtype!==n)throw new Error(`Invalid data types; op elements ${e.dtype}, but list elements ${n}`);let a=e.shape.slice(1);hr(a,t,"TensorList shape mismatch: ");let s=ir(e);return new zc(s,t,r)}function ire(e,t,n){return new zc([],e,t,n)}function ore(e,t,n,r){if(t.length!==e.shape[0])throw new Error(`Expected len(indices) == tensor.shape[0], but saw: ${t.length} vs. ${e.shape[0]}`);let a=Math.max(...t);if(r!=null&&r!==-1&&a>=r)throw new Error(`Max index must be < array size (${a} vs. ${r})`);let s=new zc([],n,e.dtype,r),i=ir(e,0);return t.forEach((o,l)=>{s.setItem(o,i[l])}),s}function lre(e,t,n){let r=0,a=t.map(c=>(r+=c,r));if(r!==e.shape[0])throw new Error(`Expected sum of lengths to be equal to tensor.shape[0], but sum of lengths is - ${r}, and tensor's shape is: ${e.shape}`);let s=e.shape.slice(1),i=l2(s,n),o=r===0?0:e.size/r,l=B(()=>{let c=[];e=G(e,[1,r,o]);for(let h=0;h{switch(e.op){case"If":case"StatelessIf":{let r=k("thenBranch",e,t,n),a=k("elseBranch",e,t,n),s=k("cond",e,t,n),i=k("args",e,t,n);return(await s.data())[0]?n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let r=k("body",e,t,n),a=k("cond",e,t,n),s=k("args",e,t,n),i=await n.functionMap[a].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(c=>c.id),l=await i[0].data();i.forEach(c=>{!c.kept&&o.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;l[0];){let c=u;u=await n.functionMap[r].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);let h=u.map(p=>p.id);c.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()});let d=await n.functionMap[a].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()})}return u}case"LoopCond":{let r=k("pred",e,t,n);return[pa(r)]}case"Switch":{let r=k("pred",e,t,n),a=k("data",e,t,n);return a.kept||(a=pa(a)),(await r.data())[0]?[void 0,a]:[a,void 0]}case"Merge":{let r=e.inputNames.find(a=>En(a,t,n)!==void 0);if(r){let a=En(r,t,n);return[pa(a)]}return}case"Enter":{let r=k("frameName",e,t,n),a=k("tensor",e,t,n);return n.enterFrame(r),[pa(a)]}case"Exit":{let r=k("tensor",e,t,n);return n.exitFrame(),[pa(r)]}case"NextIteration":{let r=k("tensor",e,t,n);return n.nextIteration(),[pa(r)]}case"TensorArrayV3":{let r=k("size",e,t,n),a=k("dtype",e,t,n),s=k("elementShape",e,t,n),i=k("dynamicSize",e,t,n),o=k("clearAfterRead",e,t,n),l=k("identicalElementShapes",e,t,n),u=k("name",e,t,n),c=new rre(u,a,r,s,l,i,o);return n.addTensorArray(c),[c.idTensor,be(1)]}case"TensorArrayWriteV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.write(a,s),[i.idTensor]}case"TensorArrayReadV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n);return[n.getTensorArray(r.id).read(a)]}case"TensorArrayGatherV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("dtype",e,t,n);return[n.getTensorArray(r.id).gather(a,s)]}case"TensorArrayScatterV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.scatter(a,s),[i.idTensor]}case"TensorArrayConcatV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id),s=k("dtype",e,t,n);return[a.concat(s)]}case"TensorArraySplitV3":{let r=k("tensorArrayId",e,t,n),a=k("tensor",e,t,n),s=k("lengths",e,t,n),i=n.getTensorArray(r.id);return i.split(s,a),[i.idTensor]}case"TensorArraySizeV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return[be(a.size(),"int32")]}case"TensorArrayCloseV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return a.clearAndClose(),[a.idTensor]}case"TensorListSetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorList(r.id);return i.setItem(a,s),[i.idTensor]}case"TensorListGetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(a,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let r=k("indices",e,t,n),a=k("tensor",e,t,n),s=k("elementShape",e,t,n),i=k("numElements",e,t,n),o=ire(a,r,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let r=k("elementShape",e,t,n),a=k("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=k(s,e,t,n),o=sre(r,a,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let r=k("tensorListId",e,t,n),a=k("indices",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).gather(a,i,s)]}case"TensorListStack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=k("numElements",e,t,n);return[n.getTensorList(r.id).stack(a,s,i)]}case"TensorListFromTensor":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=are(r,a,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let r=k("tensorListId",e,t,n),a=n.getTensorList(r.id),s=k("dtype",e,t,n),i=k("elementShape",e,t,n);return[a.concat(s,i)]}case"TensorListPushBack":{let r=k("tensorListId",e,t,n),a=k("tensor",e,t,n),s=n.getTensorList(r.id);return s.pushBack(a),[s.idTensor]}case"TensorListPopBack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(a,s)]}case"TensorListSplit":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("lengths",e,t,n),i=ore(r,s,a);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function zv(e,t,n){let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=r==="fusedbatchnorm",l=k("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let u=k("strides",e,t,n),c=a0(e,t,n),h=k("dataFormat",e,t,n).toUpperCase(),d=k("dilations",e,t,n),[p,f]=k("args",e,t,n),m=k("leakyreluAlpha",e,t,n);return{stride:u,pad:c,dataFormat:h,dilations:d,biasArg:p,preluArg:f,activationFunc:a,leakyreluAlpha:m}}var ure=(e,t,n)=>{switch(e.op){case"Conv1D":{let r=k("stride",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilation",e,t,n);return[fd(k("x",e,t,n),k("filter",e,t,n),r,a,s,i)]}case"Conv2D":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[ra(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=zv(e,t,n);return[La.conv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"FusedDepthwiseConv2dNative":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=zv(e,t,n);return[La.depthwiseConv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let r=k("outputShape",e,t,n),a=k("strides",e,t,n),s=a0(e,t,n);return[md(k("x",e,t,n),k("filter",e,t,n),r,[a[1],a[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dilations",e,t,n),i=k("dataFormat",e,t,n).toUpperCase();return[ul(k("input",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,i,[s[1],s[2]])]}case"Conv3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[Xf(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2],r[3]],a,s,[i[1],i[2],i[3]])]}case"AvgPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Lu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Gu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPoolWithArgmax":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n),i=k("includeBatchInIndex",e,t,n),{result:o,indexes:l}=cx(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a,i);return[o,l]}case"AvgPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[jf(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"MaxPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[sm(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"Dilation2D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dilations",e,t,n),i=r[1],o=r[2],l=s[1],u=s[2];return[Zf(k("x",e,t,n),k("filter",e,t,n),[i,o],a,[l,u],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},cre=(e,t,n)=>{switch(e.op){case"Fill":{let r=k("shape",e,t,n),a=k("dtype",e,t,n),s=k("value",e,t,n);return[Uu(r,s,a)]}case"LinSpace":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("num",e,t,n);return[rx(r,a,s)]}case"Multinomial":{let r=k("logits",e,t,n),a=k("numSamples",e,t,n),s=k("seed",e,t,n);return[hx(r,a,s)]}case"OneHot":{let r=k("indices",e,t,n),a=k("depth",e,t,n),s=k("onValue",e,t,n),i=k("offValue",e,t,n);return[nl(r,a,s,i)]}case"Ones":return[Or(k("shape",e,t,n),k("dtype",e,t,n))];case"OnesLike":return[$n(k("x",e,t,n))];case"RandomUniform":return[ml(k("shape",e,t,n),k("minval",e,t,n),k("maxval",e,t,n),k("dtype",e,t,n))];case"Range":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("step",e,t,n);return[Id(r,a,s,k("dtype",e,t,n))]}case"TruncatedNormal":{let r=k("shape",e,t,n),a=k("mean",e,t,n),s=k("stdDev",e,t,n),i=k("seed",e,t,n);return[Od(r,a,s,k("dtype",e,t,n),i)]}case"Zeros":return[Et(k("shape",e,t,n),k("dtype",e,t,n))];case"ZerosLike":return[He(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function u2(e,t,n){let r=k("boxes",e,t,n),a=k("scores",e,t,n),s=k("maxOutputSize",e,t,n),i=k("iouThreshold",e,t,n),o=k("scoreThreshold",e,t,n),l=k("softNmsSigma",e,t,n);return{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var hre=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=u2(e,t,n),u=await Je.nonMaxSuppressionWithScoreAsync(r,a,s,i,o,l);return[u.selectedIndices,u.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n),l=k("padToMaxOutputSize",e,t,n),u=await Je.nonMaxSuppressionPaddedAsync(r,a,s,i,o,l);return[u.selectedIndices,u.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n);return[await Je.nonMaxSuppressionAsync(r,a,s,i,o)]}case"Where":{let r=me(k("condition",e,t,n),"bool"),a=[await xm(r)];return r.dispose(),a}case"ListDiff":return fx(k("x",e,t,n),k("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},dre=(e,t,n)=>{switch(e.op){case"TopKV2":{let r=k("x",e,t,n),a=k("k",e,t,n),s=k("sorted",e,t,n),i=ym(r,a,s);return[i.values,i.indices]}case"Unique":{let r=k("x",e,t,n),a=zd(r);return[a.values,a.indices]}case"UniqueV2":{let r=k("x",e,t,n),a=k("axis",e,t,n),s=zd(r,a);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},pre=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let r=k("default",e,t,n);return[En(e.name,t,n)||r];case"Placeholder":return[En(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let u=k("x",e,t,n);return[pa(u)]}case"IdentityN":return k("x",e,t,n).map(u=>pa(u));case"Snapshot":let a=k("x",e,t,n);return[pa(a)];case"Shape":return[on(k("x",e,t,n).shape,"int32")];case"ShapeN":return k("x",e,t,n).map(u=>on(u.shape));case"Size":return[be(k("x",e,t,n).size,"int32")];case"Rank":return[be(k("x",e,t,n).rank,"int32")];case"NoOp":return[be(1)];case"Print":let s=k("x",e,t,n),i=k("data",e,t,n),o=k("message",e,t,n),l=k("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let u=0;ue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return be(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(r=>r.dispose()),this.tensorMap.clear(),B(()=>{let r=ir(t),a=n.length,s=r.length;v.assert(a===s,()=>`The number of elements doesn't match, keys has ${a} elements, the values has ${s} elements.`);for(let i=0;i{let r=[];for(let a=0;a{switch(e.op){case"HashTable":case"HashTableV2":{let a=k("keyDType",e,t,n),s=k("valueDType",e,t,n),i=new fre(a,s);return r.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("values",e,t,n);return[await r.getHashTableById(a.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("defaultValue",e,t,n);return[await r.getHashTableById(a.id).find(s,i)]}case"LookupTableSize":case"LookupTableSizeV2":{let a=k("tableHandle",e,t,n,r);return[r.getHashTableById(a.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},Are=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeBilinear(r,[a[0],a[1]],s,i)]}case"ResizeNearestNeighbor":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeNearestNeighbor(r,[a[0],a[1]],s,i)]}case"CropAndResize":{let r=k("image",e,t,n),a=k("boxes",e,t,n),s=k("boxInd",e,t,n),i=k("cropSize",e,t,n),o=k("method",e,t,n),l=k("extrapolationValue",e,t,n);return[Je.cropAndResize(r,a,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},yre=(e,t,n)=>{switch(e.op){case"Equal":return[Da(k("a",e,t,n),k("b",e,t,n))];case"NotEqual":return[di(k("a",e,t,n),k("b",e,t,n))];case"Greater":return[ar(k("a",e,t,n),k("b",e,t,n))];case"GreaterEqual":return[za(k("a",e,t,n),k("b",e,t,n))];case"Less":return[xd(k("a",e,t,n),k("b",e,t,n))];case"LessEqual":return[ci(k("a",e,t,n),k("b",e,t,n))];case"LogicalAnd":return[sr(k("a",e,t,n),k("b",e,t,n))];case"LogicalNot":return[ju(k("a",e,t,n))];case"LogicalOr":return[vd(k("a",e,t,n),k("b",e,t,n))];case"Select":case"SelectV2":return[kn(k("condition",e,t,n),k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},gre=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[Ge(k("a",e,t,n),k("b",e,t,n),k("transposeA",e,t,n),k("transposeB",e,t,n))];case"Transpose":return[at(k("x",e,t,n),k("perm",e,t,n))];case"_FusedMatMul":let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=k("numArgs",e,t,n),l=k("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[u,c]=k("args",e,t,n);return[La.matMul({a:k("a",e,t,n),b:k("b",e,t,n),transposeA:k("transposeA",e,t,n),transposeB:k("transposeB",e,t,n),bias:u,activation:a,preluActivationWeights:c,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},xre=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"FusedBatchNormV3":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"LRN":return[tm(k("x",e,t,n),k("radius",e,t,n),k("bias",e,t,n),k("alpha",e,t,n),k("beta",e,t,n))];case"Softmax":return[Yu(k("x",e,t,n))];case"LogSoftmax":return[bd(k("x",e,t,n))];case"SparseToDense":return[wm(k("sparseIndices",e,t,n),k("outputShape",e,t,n),k("sparseValues",e,t,n),k("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},wre=(e,t,n)=>{switch(e.op){case"Max":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Xn(k("x",e,t,n),i,o)]}case"Mean":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[kt(k("x",e,t,n),i,o)]}case"Min":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[pl(k("x",e,t,n),i,o)]}case"Sum":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Te(k("x",e,t,n),i,o)]}case"All":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[dd(k("x",e,t,n),i,o)]}case"Any":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Ou(k("x",e,t,n),i,o)]}case"ArgMax":{let i=k("axis",e,t,n);return[zu(k("x",e,t,n),i)]}case"ArgMin":{let i=k("axis",e,t,n);return[zf(k("x",e,t,n),i)]}case"Prod":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Nd(k("x",e,t,n),i,o)]}case"Cumsum":{let i=k("axis",e,t,n),o=k("exclusive",e,t,n),l=k("reverse",e,t,n);return[yd(k("x",e,t,n),i,o,l)]}case"Bincount":let r=k("x",e,t,n),a=k("weights",e,t,n),s=k("size",e,t,n);return[q5(r,a,s)];case"DenseBincount":{let i=k("x",e,t,n),o=k("weights",e,t,n),l=k("size",e,t,n),u=k("binaryOutput",e,t,n);return[J5(i,o,l,u)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},_re=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let r=k("n",e,t,n),a=k("axis",e,t,n),s=k("tensors",e,t,n);return s=s.slice(0,r),[st(s,a)]}case"Gather":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[ui(r,me(a,"int32"),0)]}case"GatherV2":{let r=k("axis",e,t,n),a=k("batchDims",e,t,n),s=k("x",e,t,n),i=k("indices",e,t,n);return[ui(s,me(i,"int32"),r,a)]}case"Reverse":{let r=k("dims",e,t,n),a=[];for(let i=0;i{let r=k("axis",e,t,n),a=k("tensors",e,t,n),s=a[0].shape,i=Pa(a[0]).shape,o=a.map(l=>{let u=v.arraysEqual(l.shape,s);if(!u&&!v.arraysEqual(Pa(l).shape,i))throw new Error("the input tensors shape does not match");return u?l:G(l,s)});return[dn(o,r)]});case"Unpack":{let r=k("axis",e,t,n),a=k("tensor",e,t,n);return ir(a,r)}case"Tile":{let r=k("reps",e,t,n);return[Oa(k("x",e,t,n),r)]}case"Split":case"SplitV":{let r=k("axis",e,t,n),a=k("numOrSizeSplits",e,t,n),s=k("x",e,t,n);return Lt(s,a,r)}case"ScatterNd":{let r=k("indices",e,t,n),a=k("values",e,t,n),s=k("shape",e,t,n);return[gx(r,a,s)]}case"GatherNd":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[xx(r,a)]}case"SparseToDense":{let r=k("sparseIndices",e,t,n),a=k("outputShape",e,t,n),s=k("sparseValues",e,t,n),i=k("defaultValue",e,t,n);return[wm(r,s,a,s.dtype===i.dtype?i:me(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},bre=(e,t,n)=>{switch(e.op){case"FFT":return[Ju(k("x",e,t,n))];case"IFFT":return[Al(k("x",e,t,n))];case"RFFT":return[Qu(k("x",e,t,n))];case"IRFFT":return[$d(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},vre=(e,t,n)=>{switch(e.op){case"Cast":return[me(k("x",e,t,n),k("dtype",e,t,n))];case"ExpandDims":{let r=k("axis",e,t,n);return[hn(k("x",e,t,n),r)]}case"Squeeze":{let r=k("axis",e,t,n);return[Pa(k("x",e,t,n),r)]}case"Reshape":return[G(k("x",e,t,n),k("shape",e,t,n))];case"MirrorPad":return[im(k("x",e,t,n),k("padding",e,t,n),k("mode",e,t,n))];case"PadV2":case"Pad":return[aa(k("x",e,t,n),k("padding",e,t,n),k("constantValue",e,t,n))];case"SpaceToBatchND":{let r=k("blockShape",e,t,n),a=k("paddings",e,t,n);return[qu(k("x",e,t,n),r,a)]}case"BatchToSpaceND":{let r=k("blockShape",e,t,n),a=k("crops",e,t,n);return[Wu(k("x",e,t,n),r,a)]}case"DepthToSpace":{let r=k("blockSize",e,t,n),a=k("dataFormat",e,t,n).toUpperCase();return[Kf(k("x",e,t,n),r,a)]}case"BroadcastTo":return[Bu(k("x",e,t,n),k("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Pv(e,t,n,r){let a=((s,i,o)=>{switch(s.category){case"arithmetic":return B(()=>tre(s,i,o));case"basic_math":return B(()=>nre(s,i,o));case"control":return lre(s,i,o);case"convolution":return B(()=>ure(s,i,o));case"creation":return B(()=>cre(s,i,o));case"dynamic":return hre(s,i,o);case"evaluation":return B(()=>dre(s,i,o));case"image":return B(()=>Are(s,i,o));case"graph":return B(()=>pre(s,i,o));case"logical":return B(()=>yre(s,i,o));case"matrices":return B(()=>gre(s,i,o));case"normalization":return B(()=>xre(s,i,o));case"reduction":return B(()=>wre(s,i,o));case"slice_join":return B(()=>_re(s,i,o));case"spectral":return B(()=>bre(s,i,o));case"transformation":return B(()=>vre(s,i,o));case"hash_table":return mre(s,i,o,r);case"custom":let l=fv(s.op);if(l&&l.customExecutor)return l.customExecutor(new ere(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(a)?a.then(s=>[].concat(s)):[].concat(a)}var Lv=class{constructor(e={},t={},n={},r={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function Bv(e,t,n,r){let a=new Set,s=[],i=null,o=null,l=new Set,u=Object.keys(e).map(d=>Wn(d)[0]),c=[];r!=null&&(c=r.map(d=>Wn(d.name)[0]));let h=[...t];for(;h.length>0;){let d=h.pop();if((Wv(d)||kre(d)||Nre(d))&&i==null&&(i=d,o=i.children.map(p=>p.name).filter(p=>a.has(p))),a.add(d.name),n[d.name]==null&&u.indexOf(d.name)===-1&&c.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(p=>{l.has(p.name)||(l.add(p.name),h.push(p))})}}return{inputs:e,outputs:t,usedNodes:a,missingInputs:s,dynamicNode:i,syncInputs:o}}function Ire(e,t,n){let{usedNodes:r,inputs:a}=n,s=[],i=Object.keys(a).map(c=>Wn(c)[0]).map(c=>e.nodes[c]),o=e.initNodes;i.forEach(c=>{r.has(c.name)&&s.push(c)}),e.weights.forEach(c=>{r.has(c.name)&&s.push(c)}),o!=null&&o.forEach(c=>{r.has(c.name)&&s.push(c)});let l=new Set,u=[];for(;s.length>0;){let c=s.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(h=>{!l.has(h.name)&&r.has(h.name)&&h.inputs.every(d=>l.has(d.name))&&s.push(h)})}return u}var Sre=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],Tre=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],Cre=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function Wv(e){return Sre.indexOf(e.op)>=0}function kre(e){return Tre.indexOf(e.op)>=0}function Nre(e){return Cre.indexOf(e.op)>=0}var c2=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new c2(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(r=>r.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(a=>a.name).sort(),r=t.map(a=>a.name).sort();return n.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)}compile(e,t){let n=Bv(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:a,syncInputs:s}=n;if(a!=null)throw new Error(`This execution contains the node '${a.name}', which has the dynamic op '${a.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(r.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${r}]`)}return Ire(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let r=n.map(c=>this.graph.nodes[Wn(c)[0]]),a=t.map(c=>Wn(c)[0]),s=a.map(c=>this.graph.nodes[c]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(r,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},u={};return B(()=>{let c=new Lv(this.weightMap,l,u,this.functionExecutorMap),h=Object.assign({},this.weightMap);Object.keys(e).forEach(f=>{let[m,A]=Wn(f),y=[];y[A]=e[f],h[m]=y});let d=this.getFrozenTensorIds(h),p={};for(let f=0;fEn(f,h,c))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(r=>r.id)));return new Set(t)}checkTensorForDisposal(e,t,n,r,a,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=Dne(o.name,n,r);l!=null&&l.forEach(u=>{if(u&&!a.has(u.id)){let c=i[u.id];c===1?(u.dispose(),delete i[u.id]):c!=null&&i[u.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,r={},a={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new Lv(this.weightMap,r,a,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(h=>En(h,i,s)),l=o.map(h=>h.id),u=Object.keys(e).map(h=>e[h].id),c=new Set([...l,...u,...this.weightIds]);return Object.keys(i).forEach(h=>{i[h].forEach(d=>{d&&!d.isDisposed&&!c.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(c),o}async executeFunctionAsync(e,t,n){let r=e.reduce((a,s,i)=>(a[this.inputs[i].name]=s,a),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){let a=Object.keys(e),s=a.map(g=>this.graph.nodes[Wn(g)[0]]),i=n.map(g=>Wn(g)[0]),o=i.map(g=>this.graph.nodes[g]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:u,dynamicNode:c,syncInputs:h}=Bv(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(g=>({node:g,contexts:t.currentContext})),p=Object.assign({},this.weightMap);Object.keys(e).forEach(g=>{let[_,b]=Wn(g),w=[];w[b]=e[g],p[_]=w});let f={},m=this.getFrozenTensorIds(p),A={};for(;d.length>0;){let g=this.processStack(s,d,t,p,A,m,i,f,l);await Promise.all(g)}c==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(g=>!Wv(g)&&!En(g.name,p,t)).map(g=>g.name);if(y.length>0){let g="";throw c!=null&&(g=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${h}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${a}]. Consider providing the following inputs: [${u}]. ${g}`)}return p}processStack(e,t,n,r,a,s,i,o,l){let u=[];for(;t.length>0;){let c=t.pop();n.currentContext=c.contexts;let h="";if(c.node.op==="Enter"&&k("isConstant",c.node,r,n)&&([h]=da(c.node.name,n)),r[c.node.name]==null){let d=Pv(c.node,r,n,this._resourceManager);h||([h]=da(c.node.name,n));let p=n.currentContext;v.isPromise(d)?u.push(d.then(f=>(r[h]=f,n.currentContext=p,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l),f))):(r[h]=d,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l))}else this.processChildNodes(c.node,t,n,r,a,l)}return u}processChildNodes(e,t,n,r,a,s){e.children.forEach(i=>{let[o]=da(i.name,n);a[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[r]=Wn(t),a=this.graph.nodes[r];if(a.attrParams.shape&&a.attrParams.shape.value){let s=a.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);v.assert(i,()=>`The shape of dict['${a.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}a.attrParams.dtype&&a.attrParams.dtype.value&&v.assert(n.dtype===a.attrParams.dtype.value,()=>`The dtype of dict['${a.name}'] provided in model.execute(dict) must be ${a.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let r=this._signature.inputs[n];t[r.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[r]=Wn(n);return this.graph.nodes[r]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Wn(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},Ere=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},Rre="?tfjs-format=file",Fre="model.json",Vv=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new Ere}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=bn.browserHTTPRequest(e,this.loadOptions);else{let t=bn.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(bn.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let r=bn.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new c2(Mv.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let a=Mv.Instance.transformGraph(e.modelInitializer);this.initializer=new c2(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=bn.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof Ue)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,r)=>(t[n]=e[r],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Ft(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${Fre}${Rre}`);let n=new Vv(e,t);return await n.load(),n}var Mre="3.3.0",Uv={};ze(Uv,{CSVDataset:()=>jv,Dataset:()=>Vl,FileDataSource:()=>Gv,TextLineDataset:()=>Hv,URLDataSource:()=>qv,array:()=>$re,csv:()=>Ore,func:()=>zre,generator:()=>Pre,microphone:()=>Wre,version_data:()=>Bre,webcam:()=>Lre,zip:()=>Dre});var Vre=qi(Mg()),Ure=qi(Mg());function Hre(e,t){return s0(e,t)}function s0(e,t,n=new Map,r=new Set){if(e==null)return null;if(r.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(a.recurse)if(Ul(e)){let s=Array.isArray(e)?[]:{};r.add(e);for(let i in e){let o=e[i],l=s0(o,t,n,r);s[i]=l}return r.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,a.value),a.value}function jre(e,t=Kv){return Xv(e,t)}function Xv(e,t,n=new Set){let r=e[0];if(n.has(r))throw new Error("Circular references are not supported.");let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(a.recurse)if(Ul(r)){let s=Array.isArray(r)?[]:{};n.add(r);for(let i in r){let o=e.map(u=>u[i]),l=Xv(o,t,n);s[i]=l}return n.delete(r),s}else throw new Error(`Can't recurse into non-iterable type: ${r}`);else return a.value}function Kv(e){return e===null?null:Ul(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function Zv(e,t){let n=new Map;s0(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let s=await a;n.set(r,s)}}return s0(e,t,n)}function Ul(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof Ue))}function qre(e){return e==null||Gre(e)||Array.isArray(e)||typeof e=="object"&&e instanceof Ue||v.isTypedArray(e)}function Gre(e){return e===null||typeof e!="object"&&typeof e!="function"}function Kre(e){return Hre(e,Xre)}function Xre(e){return e instanceof Ue?{value:e.clone(),recurse:!1}:Ul(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var Yv=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},h2=class extends Yv{constructor(){super(h2.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let r=0;rt===!0)}rowMajorBatch(e,t=!0){return new aae(this,e,t)}columnMajorBatch(e,t=!0,n=Kv){return this.rowMajorBatch(e,t).map(r=>jre(r,n))}concatenate(e,t){return new Qv(Jv([this,e]),t)}take(e){return e<0||e==null?this:new rae(this,e)}skip(e){return e<0||e==null?this:new nae(this,e)}prefetch(e){return new t6(this,e)}shuffle(e,t){return new uae(this,e,t)}serial(){return new tae(this)}},Zre=class extends Zt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:Kre(e),done:!1}}},Yre=class extends Zt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},tae=class extends Zt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},nae=class extends Zt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},aae=class extends Zt{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},sae=class extends Zt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Ee(e.value)}}},iae=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},oae=class extends Zt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},e6=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=await this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},p2=class extends Zt{constructor(){super();this.outputQueue=new h2,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},lae=class extends p2{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return!0}},Qv=class extends Zt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},Za;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(Za||(Za={}));var Qre=class extends Zt{constructor(e,t=Za.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function r(s){return s instanceof Zt?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let a=await Zv(this.iterators,r);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case Za.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case Za.SHORTEST:return{value:null,done:!0};case Za.LONGEST:default:}return this.count++,{value:a,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},t6=class extends Zt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new Yv(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},uae=class extends t6{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=Ure.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},Vl=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is - ${e}`);let r;return this.size===Infinity||this.size==null?r=this.size:t?r=Math.ceil(this.size/e):r=Math.floor(this.size/e),Bn(async()=>(await n.iterator()).columnMajorBatch(e,t,cae),r)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,Bn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,Bn(async()=>(await t.iterator()).filter(r=>B(()=>e(r))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return Bn(async()=>(await t.iterator()).map(n=>B(()=>e(n))),this.size)}mapAsync(e){let t=this;return Bn(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return Bn(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,Bn(async()=>{let r=d2(async()=>({value:await t.iterator(),done:!1}));return Jre(r.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let r=this,a=Vre.alea(t||v.now().toString());return Bn(async()=>{let s=a.int32();return n&&(s+=a.int32()),(await r.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,Bn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Vl.MAX_BUFFER_SIZE=1e4;function Bn(e,t=null){return new class extends Vl{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function $re(e){return Bn(async()=>Jv(e),e.length)}function Dre(e){if(!Ul(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await Zv(e,r=>{if(r instanceof Vl)return{value:r.iterator(),recurse:!1};if(Ul(r))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return eae(n,Za.SHORTEST)},t)}function cae(e){if(e===null)return null;let t=e[0];return qre(t)?{value:hae(e),recurse:!1}:{value:null,recurse:!0}}function hae(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof Ue?dn(e):yr(e)}var Hv=class extends Vl{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` -`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},i0='"',Pc=Symbol("out"),n6=Symbol("field"),o0=Symbol("quote"),f2=Symbol("quoteafterquote"),r6=Symbol("quoteinquote"),jv=class extends Vl{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new Hv(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((r,a)=>(r[a]=r[a]+1||1,r),{}),n=Object.keys(t).filter(r=>t[r]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let r of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(r)===-1)throw new Error('The key "'+r+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},r={};for(let a=0;a14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(J().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new a6(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let r=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(r,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let r=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(r,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(r=>{let a=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&r({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(a),r({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((r,a)=>n.set(r,a*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),yr(n,t)}},s6=class extends Zt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=on([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,r=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,a=(1-n)/2,s=(1-r)/2,i=a+n,o=r+s;this.cropBox=Nn([s,a,o,i],[1,4])}else this.cropBox=Nn([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(J().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new s6(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=rl.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return B(()=>{let t=hn(me(e,"float32"),0),n;n=Je.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let r=n.shape;return G(n,r.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},i6=class{},o6=class extends Zt{split(e){return new dae(this,e)}},dae=class extends o6{constructor(e,t){super();this.upstream=e,this.impl=new pae(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},pae=class extends p2{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},mae=class extends Zt{decodeUTF8(){return new fae(this)}},fae=class extends o6{constructor(e){super();this.upstream=e,this.impl=new Aae(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},Aae=class extends p2{constructor(e){super();if(this.upstream=e,J().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=tk();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return J().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},l6=class extends mae{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(J().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let r=new FileReader;r.onload=s=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},r.onabort=s=>t(new Error("Aborted")),r.onerror=s=>t(new Error(s.type));let a=this.file.slice(this.offset,n);r.readAsArrayBuffer(a)}this.offset=n}),done:!1}}};async function gae(e,t={}){let n,r;typeof e=="string"?n=e:(n=e.url,r=yae(e));let a=await v.fetch(n,r);if(a.ok){let s=new Uint8Array(await a.arrayBuffer());return new l6(s,t)}else throw new Error(a.statusText)}var yae=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function u6(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var Gv=class extends i6{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(u6(this.input)&&J().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new l6(this.input,this.options)}},qv=class extends i6{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return u6(this.url)?new Gv(this.url,this.fileOptions).iterator():gae(this.url,this.fileOptions)}};function Ore(e,t={}){return new jv(new qv(e),t)}function zre(e){let t=d2(e);return Bn(async()=>t)}function Pre(e){return Bn(async()=>{let t=await e();return d2(()=>t.next())})}async function Lre(e,t){return s6.create(e,t)}async function Wre(e){return a6.create(e)}var Bre="3.3.0",xae={tfjs:nk,"tfjs-core":rk,"tfjs-data":ak,"tfjs-layers":sk,"tfjs-converter":ik,"tfjs-backend-cpu":uw,"tfjs-backend-webgl":R_,"tfjs-backend-wasm":_3};var Vn={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function c6(){if(!$f(Vn.name)){Ce("backend registration:",Vn.name);try{Vn.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Vn.width,Vn.height):document.createElement("canvas")}catch(e){Ce("error: cannot create canvas:",e);return}try{Vn.gl=Vn.canvas.getContext("webgl2",Vn.webGLattr)}catch(e){Ce("error: cannot get WebGL2 context:",e);return}try{sp(2,Vn.gl)}catch(e){Ce("error: cannot set WebGL2 context:",e);return}try{let e=new up(Vn.gl);sl(Vn.name,()=>new El(e),Vn.priority)}catch(e){Ce("error: cannot register WebGL backend:",e);return}try{Yo("webgl").forEach(t=>{let n={...t,backendName:Vn.name};ni(n)})}catch(e){Ce("error: cannot update WebGL backend registration:",e);return}try{fr.set("WEBGL_VERSION",2)}catch(e){Ce("error: cannot set WebGL backend flags:",e);return}Ce("backend registered:",Vn.name)}}var h6=6;function wae(e){let t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let r=0;r({startEndTensor:e,startPoint:Re(e,[0,0],[-1,2]),endPoint:Re(e,[0,2],[-1,2])});function bae(e,t,n){let r=Re(e,[0,1],[-1,2]),a=se(r,t),s=Re(e,[0,3],[-1,2]),i=ge(s,n),o=ge(a,n),l=ge(i,2),u=ye(o,l),c=se(o,l),h=P(u,n),d=P(c,n);return ll([h,d],1)}var d6=class{constructor(t,n){this.model=t,this.anchorsData=wae(t.inputs[0].shape[1]),this.anchors=Nn(this.anchorsData),this.inputSize=t.inputs[0].shape[2],this.config=n}async getBoundingBoxes(t){if(!t||t.isDisposedInternal||t.shape.length!==4||t.shape[1]<1||t.shape[2]<1)return null;let[n,r,a]=B(()=>{let d=t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),p=this.model.predict(d),f;if(Array.isArray(p)){let g=p.sort((x,I)=>x.size-I.size),_=st([g[0],g[2]],2),b=st([g[1],g[3]],2);f=st([b,_],1).squeeze(0)}else f=p.squeeze();let m=bae(f,this.anchors,[this.inputSize,this.inputSize]),A=Re(f,[0,0],[-1,1]),y=Fn(A).squeeze();return[f,m,y]}),s=await Je.nonMaxSuppressionAsync(r,a,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),i=s.arraySync();s.dispose();let l=i.map(h=>Re(r,[h,0],[1,-1])).map(h=>{let d=h.arraySync();return h.dispose(),d}),u=a.dataSync(),c=[];for(let h=0;hthis.config.face.detector.minConfidence){let f=_ae(l[h]),m=this.anchorsData[d],A=B(()=>Re(n,[d,h6-1],[1,-1]).squeeze().reshape([h6,-1]));c.push({box:f,landmarks:A,anchor:m,confidence:p})}}return n.dispose(),r.dispose(),a.dispose(),{boxes:c,scaleFactor:[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]}}};async function p6(e){let t=await Ft(e.face.detector.modelPath,{fromTFHub:e.face.detector.modelPath.includes("tfhub.dev")}),n=new d6(t,e);return e.debug&&Ce(`load model: ${e.face.detector.modelPath.match(/\/(.*)\./)[1]}`),n}function f6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:n,endPoint:r}}function Lc(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Hl(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function jl(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function l0(e,t=1.5){let n=Hl(e),r=Lc(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}function u0(e){let t=Hl(e),n=Lc(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}var c0=[[1,0,0],[0,1,0],[0,0,1]];function vae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function m2(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return vae(n)}function m6(e,t){return[[1,0,e],[0,1,t],[0,0,1]]}function Ya(e,t){let n=0;for(let r=0;ry2[e]),Jce=Iae.map(e=>y2[e]),Qce=Sae.map(e=>y2[e]);var g2=Gr.leftEyeLower0,x2=Gr.rightEyeLower0,Gl={leftBounds:[g2[0],g2[g2.length-1]],rightBounds:[x2[0],x2[x2.length-1]]},d0={count:468,mouth:13,symmetryLine:[13,Gr.midwayBetweenEyes[0]]},x6={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},ql={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function p0(e,t,n,r){for(let a=0;a[s[0]/this.meshSize*(h[0]-this.meshSize/2),s[1]/this.meshSize*(h[1]-this.meshSize/2),h[2]]),o=r!==0?h0(r,[0,0]):c0,l=r!==0?i.map(h=>[...g6(h,o),h[2]]):i,u=r!==0?y6(a):c0,c=[...Hl({startPoint:n.startPoint,endPoint:n.endPoint}),1];return l.map(h=>[h[0]+Ya(c,u[0]),h[1]+Ya(c,u[1]),h[2]])}getLeftToRightEyeDepthDifference(t){let n=t[Gl.leftBounds[0]][2],r=t[Gl.rightBounds[0]][2];return n-r}getEyeBox(t,n,r,a,s=!1){let i=u0(l0(this.calculateLandmarksBoundingBox([t[r],t[a]]),this.irisEnlarge)),o=Lc(i),l=Je.cropAndResize(n,[[i.startPoint[1]/this.meshSize,i.startPoint[0]/this.meshSize,i.endPoint[1]/this.meshSize,i.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return s&&fr.flags.IS_BROWSER&&(l=Je.flipLeftRight(l)),{box:i,boxSize:o,crop:l}}getEyeCoords(t,n,r,a=!1){let s=[];for(let i=0;i{let u=i;return l===2?u=a:l===4&&(u=s),[o[0],o[1],u]})}async predict(t,n){let r=!1,a;if((this.skipped===0||this.skipped>n.face.detector.skipFrames||!n.face.mesh.enabled||!n.videoOptimized)&&(a=await this.boundingBoxDetector.getBoundingBoxes(t),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.boxes&&(!n.face.mesh.enabled||a.boxes.length!==this.detectedFaces&&this.detectedFaces!==n.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let i of a.boxes)this.storedBoxes.push({startPoint:i.box.startPoint.dataSync(),endPoint:i.box.endPoint.dataSync(),landmarks:i.landmarks,confidence:i.confidence});this.storedBoxes.length>0&&(r=!0)}if(n.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),r){if(!a||!a.boxes||a.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{i.box.startPoint.dispose(),i.box.endPoint.dispose(),i.landmarks.dispose()});let s=B(()=>this.storedBoxes.map((i,o)=>{let l=i.confidence,u,c=0,h;if(n.face.detector.rotation&&n.face.mesh.enabled&&fr.flags.IS_BROWSER){let[w,x]=i.landmarks.length>=d0.count?d0.symmetryLine:x6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.boxSize,this.boxSize]).div(255)}else{h=c0;let w=t.clone();n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.boxSize,this.boxSize]).div(255)}if(!n.face.mesh.enabled)return{coords:null,box:i,faceConfidence:null,boxConfidence:i.confidence,confidence:i.confidence,image:u};let[,d,p]=this.meshDetector.predict(u),f=d.dataSync()[0];if(f=d0.count?d0.symmetryLine:x6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255)}let _={coords:g,box:i,faceConfidence:f,boxConfidence:l,image:u,rawCoords:A},b=u0(i);return this.storedBoxes[o]={...b,landmarks:y,confidence:i.confidence,faceConfidence:f},_}));return s=s.filter(i=>i!==null),n.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(i=>i.faceConfidence>n.face.detector.minConfidence)),this.detectedFaces=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s,landmarks:t}}};var Ag=Ah(_6());var v2={};er(v2,{load:()=>k2,predict:()=>N2});var b2={};function qr(e,t){if(!t||!t.kernels)return;let n=5,r=t.kernels.filter(o=>o.kernelTimeMs>0).reduce((o,l)=>o+=l.kernelTimeMs,0),a=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.kernelTimeMs>0).sort((o,l)=>l.kernelTimeMs-o.kernelTimeMs),s=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.totalBytesSnapshot>0).sort((o,l)=>l.totalBytesSnapshot-o.totalBytesSnapshot);a.length>n&&(a.length=n),s.length>n&&(s.length=n);let i={newBytes:t.newBytes,newTensors:t.newTensors,peakBytes:t.peakBytes,numKernelOps:t.kernels.length,timeKernelOps:r,slowestKernelOps:a,largestKernelOps:s};b2[e]=i,Ce("Human profiler",e,i)}var Ja,f0={age:0},m0=Number.MAX_SAFE_INTEGER;async function k2(e){return Ja||(Ja=await Ft(e.face.age.modelPath),e.debug&&Ce(`load model: ${e.face.age.modelPath.match(/\/(.*)\./)[1]}`)),Ja}async function N2(e,t){return Ja?m00?(m0++,f0):(t.videoOptimized?m0=0:m0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Ja.inputs[0].shape[2],Ja.inputs[0].shape[1]],!1),a=P(r,[255]);Ee(r);let s,i={age:0};if(!t.profile)t.face.age.enabled&&(s=await Ja.predict(a));else{let o=t.face.age.enabled?await gr(()=>Ja.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("age",o)}if(a.dispose(),s){let o=s.dataSync();i.age=Math.trunc(10*o[0])/10}s.dispose(),f0=i,n(i)})):null}var I2={};er(I2,{load:()=>E2,predict:()=>R2});var fa,S2={gender:""},A0=Number.MAX_SAFE_INTEGER,T2=!1,C2=[.2989,.587,.114];async function E2(e){return fa||(fa=await Ft(e.face.gender.modelPath),T2=fa.inputs[0].shape[3]===1,e.debug&&Ce(`load model: ${e.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),fa}async function R2(e,t){return fa?A0{let r=Je.resizeBilinear(e,[fa.inputs[0].shape[2],fa.inputs[0].shape[1]],!1),a;T2?a=B(()=>{let[o,l,u]=Lt(r,3,3),c=P(o,C2[0]),h=P(l,C2[1]),d=P(u,C2[2]);return Ma([c,h,d]).sub(.5).mul(2)}):a=P(r,[255]),Ee(r);let s,i={gender:"",confidence:0};if(!t.profile)t.face.gender.enabled&&(s=await fa.predict(a));else{let o=t.face.gender.enabled?await gr(()=>fa.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("gender",o)}if(a.dispose(),s){let o=s.dataSync();if(T2)(o[0]>t.face.gender.minConfidence||o[1]>t.face.gender.minConfidence)&&(i.gender=o[0]>o[1]?"female":"male",i.confidence=o[0]>o[1]?Math.trunc(100*o[0])/100:Math.trunc(100*o[1])/100);else{let l=Math.trunc(200*Math.abs(o[0]-.5))/100;l>t.face.gender.minConfidence&&(i.gender=o[0]<=.5?"female":"male",i.confidence=Math.min(.99,l))}}s.dispose(),S2=i,n(i)})):null}var F2={};er(F2,{load:()=>D2,predict:()=>O2});var Cae=["angry","disgust","fear","happy","sad","surprise","neutral"],Qa,M2=[],y0=Number.MAX_SAFE_INTEGER,$2=[.2989,.587,.114];async function D2(e){return Qa||(Qa=await Ft(e.face.emotion.modelPath),e.debug&&Ce(`load model: ${e.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),Qa}async function O2(e,t){return Qa?y00?(y0++,M2):(t.videoOptimized?y0=0:y0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Qa.inputs[0].shape[2],Qa.inputs[0].shape[1]],!1),[a,s,i]=Lt(r,3,3);r.dispose();let o=P(a,$2[0]),l=P(s,$2[1]),u=P(i,$2[2]);a.dispose(),s.dispose(),i.dispose();let c=Ma([o,l,u]);o.dispose(),l.dispose(),u.dispose();let h=B(()=>c.sub(.5).mul(2));c.dispose();let d=[];if(t.face.emotion.enabled){let p;if(t.profile){let f=await gr(()=>Qa.predict(h));p=f.result.dataSync(),f.result.dispose(),qr("emotion",f)}else{let f=await Qa.predict(h);p=f.dataSync(),Ee(f)}for(let f=0;ft.face.emotion.minConfidence&&d.push({score:Math.min(.99,Math.trunc(100*p[f])/100),emotion:Cae[f]});d.sort((f,m)=>m.score-f.score)}h.dispose(),M2=d,n(d)})):null}var Xr;async function z2(e){return Xr||(Xr=await Ft(e.face.embedding.modelPath),e.debug&&Ce(`load model: ${e.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),Xr}function b6(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let r=e.map((s,i)=>Math.abs(e[i]-t[i])**n).reduce((s,i)=>s+i,0)**(1/n);return Math.max(Math.trunc(1e3*(1-r))/1e3,0)}function P2(e){return B(()=>{let n=[[.05,.15,.85,.85]],r=e.image||e.tensor;if(!(r instanceof Ue))return null;let a=r.shape.length===3?Je.cropAndResize(hn(r,0),n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]):Je.cropAndResize(r,n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]),s=[.2989,.587,.114],[i,o,l]=Lt(a,3,3),u=P(i,s[0]),c=P(o,s[1]),h=P(l,s[2]),d=Ma([u,c,h]),p=dn([d,d,d],3).squeeze(4),f=p.sub(p.min());return f.div(f.max())})}async function L2(e,t){return Xr?new Promise(async n=>{let r=[];if(t.face.embedding.enabled){let a=P2(e);if(!t.profile)r=B(()=>Xr.predict(a).reshape([128,2]).logSumExp(1).dataSync());else{let s=await gr(()=>Xr.predict({img_inputs:a}));r=[...s.result.dataSync()],s.result.dispose(),qr("emotion",s)}a.dispose()}n(r)}):null}var Y2={};er(Y2,{PoseNet:()=>J2,load:()=>Q2});function Eae(e){let[t,n,r,a]=e;return{offsets:t,heatmap:n,displacementFwd:r,displacementBwd:a}}var W2=class{constructor(t){this.model=t}predict(t){return B(()=>{let r=t.toFloat().div(127.5).sub(1).expandDims(0),s=this.model.predict(r).map(o=>o.squeeze([0])),i=Eae(s);return{heatmapScores:i.heatmap.sigmoid(),offsets:i.offsets,displacementFwd:i.displacementFwd,displacementBwd:i.displacementBwd}})}dispose(){this.model.dispose()}};function B2(e){return Math.floor(e/2)}var V2=class{constructor(t,n){this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=n}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(B2(t),t);)this.exchange(t,B2(t)),t=B2(t)}sink(t){for(;2*t<=this.numberOfElements;){let n=2*t;if(nt){l=!1;break}if(!l)break}return l}function v6(e,t,n){let[r,a,s]=n.shape,i=new V2(r*a*s,({score:o})=>o);for(let o=0;on?n:e}function N6(e,t,n,r){let a=n-e,s=r-t;return a*a+s*s}function q2(e,t){return{x:e.x+t.x,y:e.y+t.y}}var w0=Ah(g0());function I6(e,t){let n=t.shape[0],r=new Float32Array(n);for(let a=0;ae.toTensor().mul(be(t,"int32")).toFloat().add(Lae(e,n)))}function Wae(e,t){return B(()=>{let n=e.div(be(t,"int32"));return e.sub(n.mul(be(t,"int32")))})}function T6(e){let[t,n,r]=e.shape;return B(()=>{let s=e.reshape([t*n,r]).argMax(0),i=s.div(be(n,"int32")).expandDims(1),o=Wae(s,n).expandDims(1);return st([i,o],1)})}var C6=ma.poseChain.map(([e,t])=>[ma.partIds[e],ma.partIds[t]]),X2=C6.map(([,e])=>e),E6=C6.map(([e])=>e),Bae=16;function Vae(e,t,n){let r=n.shape[2]/2;return{y:n.get(t.y,t.x,e),x:n.get(t.y,t.x,r+e)}}function K2(e,t,n,r){return{y:G2(Math.round(e.y/t),0,n-1),x:G2(Math.round(e.x/t),0,r-1)}}function R6(e,t,n,r,a,s,i,o=2){let[l,u]=r.shape,c=K2(t.position,s,l,u),h=Vae(e,c,i),p=q2(t.position,h);for(let A=0;A=0;--d){let p=X2[d],f=E6[d];l[p]&&!l[f]&&(l[f]=R6(d,l[p],f,t,n,r,s))}for(let d=0;d(r+=f,{position:{y:c.get(m,0),x:c.get(m,1)},part:ma.partNames[m],score:f})),p=d.filter(f=>f.score>n);return a.dispose(),u.dispose(),{keypoints:p,score:r/d.length}}var Uae=1,$6=16;function D6(e,t,{x:n,y:r},a){return e.some(({keypoints:s})=>{let i=s[a].position;return N6(r,n,i.y,i.x)<=t})}function Hae(e,t,n){return n.reduce((a,{position:s,score:i},o)=>(D6(e,t,s,o)||(a+=i),a),0)/n.length}function O6(e,t,n,r,a,s,i){let o=[],l=v6(i,Uae,e),u=a^2;for(;o.lengthi&&o.push({keypoints:d,score:p})}return o}async function z6(e){return Promise.all(e.map(t=>t.buffer()))}function jae(e,t,n){return{score:e.score,keypoints:e.keypoints.map(({score:r,part:a,position:s})=>({score:r,part:a,position:{x:Math.trunc(s.x*n),y:Math.trunc(s.y*t)}}))}}function P6(e,[t,n]){let r=e.squeeze(0),a=r.resizeBilinear([t,n]);return r.dispose(),a}function Z2(e,[t,n],[r,a]){return e.map(i=>jae(i,t/r,n/a))}async function Gae(e,t,n,r){return new Promise(async a=>{let s=await z6([t.heatmapScores,t.offsets,t.displacementFwd,t.displacementBwd]),i=s[0],o=s[1],l=s[2],u=s[3],c=await O6(i,o,l,u,n.body.nmsRadius,n.body.maxDetections,n.body.scoreThreshold),h=Z2(c,[e.shape[1],e.shape[2]],[r,r]);a(h)})}async function qae(e,t,n,r){return new Promise(async a=>{let s=await M6(t.heatmapScores,t.offsets,n.body.scoreThreshold),i=Z2([s],[e.shape[1],e.shape[2]],[r,r]);a(i)})}var J2=class{constructor(t){this.baseModel=t,this.inputSize=t.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(t,n){let r=P6(t,[this.inputSize,this.inputSize]),a=this.baseModel.predict(r,n),s=n.body.maxDetections<2?await qae(t,a,n,this.inputSize):await Gae(t,a,n,this.inputSize);return a.heatmapScores.dispose(),a.offsets.dispose(),a.displacementFwd.dispose(),a.displacementBwd.dispose(),r.dispose(),s}dispose(){this.baseModel.dispose()}};async function Q2(e){let t=await Ft(e.body.modelPath),n=new W2(t);return e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`),new J2(n)}var ag={};er(ag,{HandPose:()=>ig,load:()=>og});function _0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Wc(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function L6(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function W6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],a=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:n,endPoint:r,palmLandmarks:a,confidence:e.confidence}}function b0(e,t=1.5){let n=Wc(e),r=_0(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function v0(e){let t=Wc(e),n=_0(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}var eg=class{constructor(t,n,r){this.model=t,this.anchors=r.map(a=>[a.x_center,a.y_center]),this.anchorsTensor=Nn(this.anchors),this.inputSize=n,this.inputSizeTensor=on([n,n]),this.doubleInputSizeTensor=on([n*2,n*2])}normalizeBoxes(t){return B(()=>{let n=Re(t,[0,0],[-1,2]),r=Re(t,[0,2],[-1,2]),a=se(ge(n,this.inputSizeTensor),this.anchorsTensor),s=ge(r,this.doubleInputSizeTensor),i=P(ye(a,s),this.inputSizeTensor),o=P(se(a,s),this.inputSizeTensor);return ll([i,o],1)})}normalizeLandmarks(t,n){return B(()=>{let r=se(ge(t.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[n]);return P(r,this.inputSizeTensor)})}async getBoxes(t,n){let r=this.model.predict(t),a=r.squeeze();r.dispose();let s=B(()=>Fn(Re(a,[0,0],[-1,1])).squeeze()),i=s.dataSync(),o=Re(a,[0,1],[-1,4]),l=this.normalizeBoxes(o);o.dispose();let u=await Je.nonMaxSuppressionAsync(l,i,n.hand.maxHands,n.hand.iouThreshold,n.hand.scoreThreshold),c=u.arraySync();s.dispose(),u.dispose();let h=[];for(let d of c)if(i[d]>=n.hand.minConfidence){let p=Re(l,[d,0],[1,-1]),f=Re(a,[d,5],[1,14]),m=B(()=>this.normalizeLandmarks(f,d).reshape([-1,2]));f.dispose(),h.push({box:p,palmLandmarks:m,confidence:i[d]})}return a.dispose(),l.dispose(),h}async estimateHandBounds(t,n){let r=t.shape[1],a=t.shape[2],s=B(()=>t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),i=await this.getBoxes(s,n);s.dispose();let o=[];if(!i||i.length===0)return o;for(let l of i){let u=l.box.dataSync(),c=u.slice(0,2),h=u.slice(2,4),d=l.palmLandmarks.arraySync();l.box.dispose(),l.palmLandmarks.dispose(),o.push(W6({startPoint:c,endPoint:h,palmLandmarks:d,confidence:l.confidence},[a/this.inputSize,r/this.inputSize]))}return o}};function Xae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function B6(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Xae(n)}var V6=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function es(e,t){let n=0;for(let r=0;rng([...s,1],n)),a=this.calculateLandmarksBoundingBox(r);return b0(v0(a),Zae)}getBoxForHandLandmarks(t){let n=this.calculateLandmarksBoundingBox(t),r=b0(v0(n),j6);r.palmLandmarks=[];for(let a=0;a[i[0]*(p[0]-this.inputSize/2),i[1]*(p[1]-this.inputSize/2),i[2]*p[2]]),l=tg(r,[0,0]),u=o.map(p=>[...ng(p,l),p[2]]),c=H6(a),h=[...Wc(n),1],d=[es(h,c[0]),es(h,c[1])];return u.map(p=>[p[0]+d[0],p[1]+d[1],p[2]])}async estimateHands(t,n){let r=!1,a;(this.skipped===0||this.skipped>n.hand.skipFrames||!n.hand.landmarks||!n.videoOptimized)&&(a=await this.handDetector.estimateHandBounds(t,n),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.length>0&&(a.length!==this.detectedHands&&this.detectedHands!==n.hand.maxHands||!n.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...a],this.storedBoxes.length>0&&(r=!0));let s=[];n.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let i=0;i=n.hand.minConfidence){let _=G(y,[-1,3]),b=_.arraySync();y.dispose(),_.dispose();let w=this.transformRawCoords(b,p,l,d),x=this.getBoxForHandLandmarks(w);this.storedBoxes[i]=x;let I={landmarks:w,confidence:g,box:{topLeft:x.startPoint,bottomRight:x.endPoint}};s.push(I)}else this.storedBoxes[i]=null;y.dispose()}else{let l=b0(v0(o),j6),u={confidence:o.confidence,box:{topLeft:l.startPoint,bottomRight:l.endPoint}};s.push(u)}}return this.storedBoxes=this.storedBoxes.filter(i=>i!==null),this.detectedHands=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s}}};var q6=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var sg={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},ig=class{constructor(t){this.handPipeline=t}static getAnnotations(){return sg}async estimateHands(t,n){let r=await this.handPipeline.estimateHands(t,n);if(!r)return[];let a=[];for(let s of r){let i={};if(s.landmarks)for(let l of Object.keys(sg))i[l]=sg[l].map(u=>s.landmarks[u]);let o=s.box?[Math.max(0,s.box.topLeft[0]),Math.max(0,s.box.topLeft[1]),Math.min(t.shape[2],s.box.bottomRight[0])-s.box.topLeft[0],Math.min(t.shape[1],s.box.bottomRight[1])-s.box.topLeft[1]]:0;a.push({confidence:s.confidence,box:o,landmarks:s.landmarks,annotations:i})}return a}};async function og(e){let[t,n]=await Promise.all([e.hand.enabled?Ft(e.hand.detector.modelPath,{fromTFHub:e.hand.detector.modelPath.includes("tfhub.dev")}):null,e.hand.landmarks?Ft(e.hand.skeleton.modelPath,{fromTFHub:e.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),r=new eg(t,t==null?void 0:t.inputs[0].shape[2],q6),a=new rg(r,n,n==null?void 0:n.inputs[0].shape[2]),s=new ig(a);return e.hand.enabled&&e.debug&&Ce(`load model: ${e.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),e.hand.landmarks&&e.debug&&Ce(`load model: ${e.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),s}var lg={};er(lg,{load:()=>ug,predict:()=>cg});var X6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],K6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var dr;async function ug(e){return dr||(dr=await Ft(e.body.modelPath),dr.width=parseInt(dr.signature.inputs["input_1:0"].tensorShape.dim[2].size),dr.height=parseInt(dr.signature.inputs["input_1:0"].tensorShape.dim[1].size),e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`)),dr}async function cg(e,t){if(!dr||!t.body.enabled)return null;let n={width:e.shape[2],height:e.shape[1]},r=Je.resizeBilinear(e,[dr.width,dr.height],!1),a=ge(r,[255]);r.dispose();let s;if(t.profile){let u=await gr(()=>dr.predict(a));s=u.result.find(c=>c.size===195||c.size===155).dataSync(),u.result.forEach(c=>c.dispose()),qr("blazepose",u)}else{let u=await dr.predict(a);s=u.find(c=>c.size===195||c.size===155).dataSync(),u.forEach(c=>c.dispose())}a.dispose();let i=[],o=s.length===195?X6:K6,l=5;for(let u=0;u{if(!e)return[];let t=[];for(let n=0;nl.part==="leftWrist"),a=e[n].keypoints.find(l=>l.part==="rightWrist"),s=e[n].keypoints.find(l=>l.part==="nose");s&&r&&a&&r.position.yl.part==="leftShoulder"),o=e[n].keypoints.find(l=>l.part==="rightShoulder");i&&o&&t.push({body:n,gesture:`leaning ${i.position.y>o.position.y?"left":"right"}`})}return t},Y6=e=>{if(!e)return[];let t=[];for(let n=0;n0){let r=e[n].mesh[33][2]-e[n].mesh[263][2];Math.abs(r)<10?t.push({face:n,gesture:"facing camera"}):t.push({face:n,gesture:`facing ${r<0?"right":"left"}`}),Math.abs(e[n].mesh[374][1]-e[n].mesh[386][1])/Math.abs(e[n].mesh[443][1]-e[n].mesh[450][1])<.2&&t.push({face:n,gesture:"blink left eye"}),Math.abs(e[n].mesh[145][1]-e[n].mesh[159][1])/Math.abs(e[n].mesh[223][1]-e[n].mesh[230][1])<.2&&t.push({face:n,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[n].mesh[13][1]-e[n].mesh[14][1])/Math.abs(e[n].mesh[10][1]-e[n].mesh[152][1]));i>10&&t.push({face:n,gesture:`mouth ${Math.trunc(i)}% open`});let o=e[n].mesh[152][2];Math.abs(o)>10&&t.push({face:n,gesture:`head ${o<0?"up":"down"}`})}return t},J6=e=>{if(!e)return[];let t=[];for(let n=0;n{if(!e)return[];let t=[];for(let n=0;n0){let a=r.reduce((i,o)=>i.position[2]i.position[1](u[d]=0,h))},a=function(o,l){let u=e.createShader(l);if(e.shaderSource(u,o),e.compileShader(u),!e.getShaderParameter(u,e.COMPILE_STATUS))throw new Error("Filter: GL compile failed",e.getShaderInfoLog(u));return u};this.uniform={},this.attribute={};let s=a(t,e.VERTEX_SHADER),i=a(n,e.FRAGMENT_SHADER);if(this.id=e.createProgram(),e.attachShader(this.id,s),e.attachShader(this.id,i),e.linkProgram(this.id),!e.getProgramParameter(this.id,e.LINK_STATUS))throw new Error("Filter: GL link failed",e.getProgramInfoLog(this.id));e.useProgram(this.id),r(t,"attribute",this.attribute);for(let o in this.attribute)this.attribute[o]=e.getAttribLocation(this.id,o);r(t,"uniform",this.uniform),r(n,"uniform",this.uniform);for(let o in this.uniform)this.uniform[o]=e.getUniformLocation(this.id,o)}function e4(e){e||(e={});let t=0,n=null,r=!1,a=-1,s=[null,null],i=[],o=-1,l=-1,u=null,c=null,h={},d=e.canvas||document.createElement("canvas"),p={},f={INTERMEDIATE:1},m=d.getContext("webgl");if(!m)throw new Error("Filter: getContext() failed");this.addFilter=function(w){let x=Array.prototype.slice.call(arguments,1),I=h[w];i.push({func:I,args:x})},this.reset=function(){i=[]};let A=function(w,x){if(!(w===o&&x===l)){if(d.width=w,o=w,d.height=x,l=x,!u){let I=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);u=m.createBuffer(),m.bindBuffer(m.ARRAY_BUFFER,u),m.bufferData(m.ARRAY_BUFFER,I,m.STATIC_DRAW),m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}m.viewport(0,0,o,l),s=[null,null]}},y=function(w,x){let I=m.createFramebuffer();m.bindFramebuffer(m.FRAMEBUFFER,I);let S=m.createRenderbuffer();m.bindRenderbuffer(m.RENDERBUFFER,S);let T=m.createTexture();return m.bindTexture(m.TEXTURE_2D,T),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,w,x,0,m.RGBA,m.UNSIGNED_BYTE,null),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,m.TEXTURE_2D,T,0),m.bindTexture(m.TEXTURE_2D,null),m.bindFramebuffer(m.FRAMEBUFFER,null),{fbo:I,texture:T}},g=function(w){return s[w]=s[w]||y(o,l),s[w]},_=function(w=null){var T,M;let x=null,I=null,S=!1;t===0?x=n:x=(T=g(a))==null?void 0:T.texture,t++,r&&!(w&f.INTERMEDIATE)?(I=null,S=t%2==0):(a=(a+1)%2,I=(M=g(a))==null?void 0:M.fbo),m.bindTexture(m.TEXTURE_2D,x),m.bindFramebuffer(m.FRAMEBUFFER,I),m.uniform1f(c.uniform.flipY,S?-1:1),m.drawArrays(m.TRIANGLES,0,6)};this.apply=function(w){if(A(w.width,w.height),t=0,n||(n=m.createTexture()),m.bindTexture(m.TEXTURE_2D,n),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,w),i.length===0)return _(),d;for(let x=0;x{let c=[];e=G(e,[1,r,o]);for(let h=0;h{switch(e.op){case"If":case"StatelessIf":{let r=k("thenBranch",e,t,n),a=k("elseBranch",e,t,n),s=k("cond",e,t,n),i=k("args",e,t,n);return(await s.data())[0]?n.functionMap[r].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap):n.functionMap[a].executeFunctionAsync(i,n.tensorArrayMap,n.tensorListMap)}case"While":case"StatelessWhile":{let r=k("body",e,t,n),a=k("cond",e,t,n),s=k("args",e,t,n),i=await n.functionMap[a].executeFunctionAsync(s,n.tensorArrayMap,n.tensorListMap),o=s.map(c=>c.id),l=await i[0].data();i.forEach(c=>{!c.kept&&o.indexOf(c.id)===-1&&c.dispose()});let u=s;for(;l[0];){let c=u;u=await n.functionMap[r].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);let h=u.map(p=>p.id);c.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()});let d=await n.functionMap[a].executeFunctionAsync(u,n.tensorArrayMap,n.tensorListMap);l=await d[0].data(),d.forEach(p=>{!p.kept&&o.indexOf(p.id)===-1&&h.indexOf(p.id)===-1&&p.dispose()})}return u}case"LoopCond":{let r=k("pred",e,t,n);return[pa(r)]}case"Switch":{let r=k("pred",e,t,n),a=k("data",e,t,n);return a.kept||(a=pa(a)),(await r.data())[0]?[void 0,a]:[a,void 0]}case"Merge":{let r=e.inputNames.find(a=>En(a,t,n)!==void 0);if(r){let a=En(r,t,n);return[pa(a)]}return}case"Enter":{let r=k("frameName",e,t,n),a=k("tensor",e,t,n);return n.enterFrame(r),[pa(a)]}case"Exit":{let r=k("tensor",e,t,n);return n.exitFrame(),[pa(r)]}case"NextIteration":{let r=k("tensor",e,t,n);return n.nextIteration(),[pa(r)]}case"TensorArrayV3":{let r=k("size",e,t,n),a=k("dtype",e,t,n),s=k("elementShape",e,t,n),i=k("dynamicSize",e,t,n),o=k("clearAfterRead",e,t,n),l=k("identicalElementShapes",e,t,n),u=k("name",e,t,n),c=new are(u,a,r,s,l,i,o);return n.addTensorArray(c),[c.idTensor,be(1)]}case"TensorArrayWriteV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.write(a,s),[i.idTensor]}case"TensorArrayReadV3":{let r=k("tensorArrayId",e,t,n),a=k("index",e,t,n);return[n.getTensorArray(r.id).read(a)]}case"TensorArrayGatherV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("dtype",e,t,n);return[n.getTensorArray(r.id).gather(a,s)]}case"TensorArrayScatterV3":{let r=k("tensorArrayId",e,t,n),a=k("indices",e,t,n),s=k("tensor",e,t,n),i=n.getTensorArray(r.id);return i.scatter(a,s),[i.idTensor]}case"TensorArrayConcatV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id),s=k("dtype",e,t,n);return[a.concat(s)]}case"TensorArraySplitV3":{let r=k("tensorArrayId",e,t,n),a=k("tensor",e,t,n),s=k("lengths",e,t,n),i=n.getTensorArray(r.id);return i.split(s,a),[i.idTensor]}case"TensorArraySizeV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return[be(a.size(),"int32")]}case"TensorArrayCloseV3":{let r=k("tensorArrayId",e,t,n),a=n.getTensorArray(r.id);return a.clearAndClose(),[a.idTensor]}case"TensorListSetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("tensor",e,t,n),i=n.getTensorList(r.id);return i.setItem(a,s),[i.idTensor]}case"TensorListGetItem":{let r=k("tensorListId",e,t,n),a=k("index",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).getItem(a,s,i)]}case"TensorListScatterV2":case"TensorListScatter":{let r=k("indices",e,t,n),a=k("tensor",e,t,n),s=k("elementShape",e,t,n),i=k("numElements",e,t,n),o=ore(a,r,s,i);return n.addTensorList(o),[o.idTensor]}case"TensorListReserve":case"EmptyTensorList":{let r=k("elementShape",e,t,n),a=k("elementDType",e,t,n),s;e.op==="TensorListReserve"?s="numElements":s="maxNumElements";let i=k(s,e,t,n),o=ire(r,a,i);return n.addTensorList(o),[o.idTensor]}case"TensorListGather":{let r=k("tensorListId",e,t,n),a=k("indices",e,t,n),s=k("elementShape",e,t,n),i=k("elementDType",e,t,n);return[n.getTensorList(r.id).gather(a,i,s)]}case"TensorListStack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=k("numElements",e,t,n);return[n.getTensorList(r.id).stack(a,s,i)]}case"TensorListFromTensor":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n),i=sre(r,a,s);return n.addTensorList(i),[i.idTensor]}case"TensorListConcat":{let r=k("tensorListId",e,t,n),a=n.getTensorList(r.id),s=k("dtype",e,t,n),i=k("elementShape",e,t,n);return[a.concat(s,i)]}case"TensorListPushBack":{let r=k("tensorListId",e,t,n),a=k("tensor",e,t,n),s=n.getTensorList(r.id);return s.pushBack(a),[s.idTensor]}case"TensorListPopBack":{let r=k("tensorListId",e,t,n),a=k("elementShape",e,t,n),s=k("elementDType",e,t,n);return[n.getTensorList(r.id).popBack(a,s)]}case"TensorListSplit":{let r=k("tensor",e,t,n),a=k("elementShape",e,t,n),s=k("lengths",e,t,n),i=lre(r,s,a);return n.addTensorList(i),[i.idTensor]}default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Pv(e,t,n){let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=r==="fusedbatchnorm",l=k("numArgs",e,t,n);if(s){if(i&&l!==2)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&l!==1)throw new Error("FusedConv2d and DepthwiseConv2d with BiasAdd must have one extra argument: bias.")}if(o)throw new Error("FusedConv2d and DepthwiseConv2d with FusedBatchNorm is not supported.");let u=k("strides",e,t,n),c=a0(e,t,n),h=k("dataFormat",e,t,n).toUpperCase(),d=k("dilations",e,t,n),[p,f]=k("args",e,t,n),m=k("leakyreluAlpha",e,t,n);return{stride:u,pad:c,dataFormat:h,dilations:d,biasArg:p,preluArg:f,activationFunc:a,leakyreluAlpha:m}}var cre=(e,t,n)=>{switch(e.op){case"Conv1D":{let r=k("stride",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilation",e,t,n);return[fd(k("x",e,t,n),k("filter",e,t,n),r,a,s,i)]}case"Conv2D":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[ra(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,s,[i[1],i[2]])]}case"_FusedConv2D":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=Pv(e,t,n);return[La.conv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"FusedDepthwiseConv2dNative":{let{stride:r,pad:a,dataFormat:s,dilations:i,biasArg:o,preluArg:l,activationFunc:u,leakyreluAlpha:c}=Pv(e,t,n);return[La.depthwiseConv2d({x:k("x",e,t,n),filter:k("filter",e,t,n),strides:[r[1],r[2]],pad:a,dataFormat:s,dilations:[i[1],i[2]],bias:o,activation:u,preluActivationWeights:l,leakyreluAlpha:c})]}case"Conv2DBackpropInput":case"Conv2dTranspose":{let r=k("outputShape",e,t,n),a=k("strides",e,t,n),s=a0(e,t,n);return[md(k("x",e,t,n),k("filter",e,t,n),r,[a[1],a[2]],s)]}case"DepthwiseConv2dNative":case"DepthwiseConv2d":{let r=k("strides",e,t,n),a=a0(e,t,n),s=k("dilations",e,t,n),i=k("dataFormat",e,t,n).toUpperCase();return[ul(k("input",e,t,n),k("filter",e,t,n),[r[1],r[2]],a,i,[s[1],s[2]])]}case"Conv3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dataFormat",e,t,n).toUpperCase(),i=k("dilations",e,t,n);return[Xf(k("x",e,t,n),k("filter",e,t,n),[r[1],r[2],r[3]],a,s,[i[1],i[2],i[3]])]}case"AvgPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Lu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPool":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[Gu(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a)]}case"MaxPoolWithArgmax":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n),i=k("includeBatchInIndex",e,t,n),{result:o,indexes:l}=hx(k("x",e,t,n),[s[1],s[2]],[r[1],r[2]],a,i);return[o,l]}case"AvgPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[jf(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"MaxPool3D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("kernelSize",e,t,n);return[sm(k("x",e,t,n),[s[1],s[2],s[3]],[r[1],r[2],r[3]],a)]}case"Dilation2D":{let r=k("strides",e,t,n),a=k("pad",e,t,n),s=k("dilations",e,t,n),i=r[1],o=r[2],l=s[1],u=s[2];return[Zf(k("x",e,t,n),k("filter",e,t,n),[i,o],a,[l,u],"NHWC")]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},hre=(e,t,n)=>{switch(e.op){case"Fill":{let r=k("shape",e,t,n),a=k("dtype",e,t,n),s=k("value",e,t,n);return[Uu(r,s,a)]}case"LinSpace":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("num",e,t,n);return[ax(r,a,s)]}case"Multinomial":{let r=k("logits",e,t,n),a=k("numSamples",e,t,n),s=k("seed",e,t,n);return[dx(r,a,s)]}case"OneHot":{let r=k("indices",e,t,n),a=k("depth",e,t,n),s=k("onValue",e,t,n),i=k("offValue",e,t,n);return[nl(r,a,s,i)]}case"Ones":return[Or(k("shape",e,t,n),k("dtype",e,t,n))];case"OnesLike":return[$n(k("x",e,t,n))];case"RandomUniform":return[ml(k("shape",e,t,n),k("minval",e,t,n),k("maxval",e,t,n),k("dtype",e,t,n))];case"Range":{let r=k("start",e,t,n),a=k("stop",e,t,n),s=k("step",e,t,n);return[Id(r,a,s,k("dtype",e,t,n))]}case"TruncatedNormal":{let r=k("shape",e,t,n),a=k("mean",e,t,n),s=k("stdDev",e,t,n),i=k("seed",e,t,n);return[Od(r,a,s,k("dtype",e,t,n),i)]}case"Zeros":return[Et(k("shape",e,t,n),k("dtype",e,t,n))];case"ZerosLike":return[He(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function u2(e,t,n){let r=k("boxes",e,t,n),a=k("scores",e,t,n),s=k("maxOutputSize",e,t,n),i=k("iouThreshold",e,t,n),o=k("scoreThreshold",e,t,n),l=k("softNmsSigma",e,t,n);return{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}}var dre=async(e,t,n)=>{switch(e.op){case"NonMaxSuppressionV5":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o,softNmsSigma:l}=u2(e,t,n),u=await Je.nonMaxSuppressionWithScoreAsync(r,a,s,i,o,l);return[u.selectedIndices,u.selectedScores]}case"NonMaxSuppressionV4":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n),l=k("padToMaxOutputSize",e,t,n),u=await Je.nonMaxSuppressionPaddedAsync(r,a,s,i,o,l);return[u.selectedIndices,u.validOutputs]}case"NonMaxSuppressionV3":case"NonMaxSuppressionV2":{let{boxes:r,scores:a,maxOutputSize:s,iouThreshold:i,scoreThreshold:o}=u2(e,t,n);return[await Je.nonMaxSuppressionAsync(r,a,s,i,o)]}case"Where":{let r=me(k("condition",e,t,n),"bool"),a=[await xm(r)];return r.dispose(),a}case"ListDiff":return mx(k("x",e,t,n),k("y",e,t,n));default:throw TypeError(`Node type ${e.op} is not implemented`)}},pre=(e,t,n)=>{switch(e.op){case"TopKV2":{let r=k("x",e,t,n),a=k("k",e,t,n),s=k("sorted",e,t,n),i=ym(r,a,s);return[i.values,i.indices]}case"Unique":{let r=k("x",e,t,n),a=zd(r);return[a.values,a.indices]}case"UniqueV2":{let r=k("x",e,t,n),a=k("axis",e,t,n),s=zd(r,a);return[s.values,s.indices]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},fre=(e,t,n)=>{switch(e.op){case"Const":return t[e.name];case"PlaceholderWithDefault":let r=k("default",e,t,n);return[En(e.name,t,n)||r];case"Placeholder":return[En(e.name,t,n)];case"Identity":case"StopGradient":case"FakeQuantWithMinMaxVars":{let u=k("x",e,t,n);return[pa(u)]}case"IdentityN":return k("x",e,t,n).map(u=>pa(u));case"Snapshot":let a=k("x",e,t,n);return[pa(a)];case"Shape":return[on(k("x",e,t,n).shape,"int32")];case"ShapeN":return k("x",e,t,n).map(u=>on(u.shape));case"Size":return[be(k("x",e,t,n).size,"int32")];case"Rank":return[be(k("x",e,t,n).rank,"int32")];case"NoOp":return[be(1)];case"Print":let s=k("x",e,t,n),i=k("data",e,t,n),o=k("message",e,t,n),l=k("summarize",e,t,n);console.warn("The graph has a tf.print() operation,usually used for debugging, which slows down performance."),console.log(o);for(let u=0;ue.dispose()),this.tensorMap.clear(),this.handle.dispose()}size(){return this.tensorMap.size}tensorSize(){return be(this.size(),"int32")}async import(e,t){this.checkKeyAndValueTensor(e,t);let n=await e.data();return this.tensorMap.forEach(r=>r.dispose()),this.tensorMap.clear(),B(()=>{let r=ir(t),a=n.length,s=r.length;v.assert(a===s,()=>`The number of elements doesn't match, keys has ${a} elements, the values has ${s} elements.`);for(let i=0;i{let r=[];for(let a=0;a{switch(e.op){case"HashTable":case"HashTableV2":{let a=k("keyDType",e,t,n),s=k("valueDType",e,t,n),i=new mre(a,s);return r.addHashTable(e.name,i),[i.handle]}case"LookupTableImport":case"LookupTableImportV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("values",e,t,n);return[await r.getHashTableById(a.id).import(s,i)]}case"LookupTableFind":case"LookupTableFindV2":{let a=k("tableHandle",e,t,n,r),s=k("keys",e,t,n),i=k("defaultValue",e,t,n);return[await r.getHashTableById(a.id).find(s,i)]}case"LookupTableSize":case"LookupTableSizeV2":{let a=k("tableHandle",e,t,n,r);return[r.getHashTableById(a.id).tensorSize()]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},yre=(e,t,n)=>{switch(e.op){case"ResizeBilinear":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeBilinear(r,[a[0],a[1]],s,i)]}case"ResizeNearestNeighbor":{let r=k("images",e,t,n),a=k("size",e,t,n),s=k("alignCorners",e,t,n),i=k("halfPixelCenters",e,t,n);return[Je.resizeNearestNeighbor(r,[a[0],a[1]],s,i)]}case"CropAndResize":{let r=k("image",e,t,n),a=k("boxes",e,t,n),s=k("boxInd",e,t,n),i=k("cropSize",e,t,n),o=k("method",e,t,n),l=k("extrapolationValue",e,t,n);return[Je.cropAndResize(r,a,s,i,o,l)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},gre=(e,t,n)=>{switch(e.op){case"Equal":return[Da(k("a",e,t,n),k("b",e,t,n))];case"NotEqual":return[di(k("a",e,t,n),k("b",e,t,n))];case"Greater":return[ar(k("a",e,t,n),k("b",e,t,n))];case"GreaterEqual":return[za(k("a",e,t,n),k("b",e,t,n))];case"Less":return[xd(k("a",e,t,n),k("b",e,t,n))];case"LessEqual":return[ci(k("a",e,t,n),k("b",e,t,n))];case"LogicalAnd":return[sr(k("a",e,t,n),k("b",e,t,n))];case"LogicalNot":return[ju(k("a",e,t,n))];case"LogicalOr":return[vd(k("a",e,t,n),k("b",e,t,n))];case"Select":case"SelectV2":return[kn(k("condition",e,t,n),k("a",e,t,n),k("b",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},xre=(e,t,n)=>{switch(e.op){case"BatchMatMul":case"BatchMatMulV2":case"MatMul":return[Ge(k("a",e,t,n),k("b",e,t,n),k("transposeA",e,t,n),k("transposeB",e,t,n))];case"Transpose":return[at(k("x",e,t,n),k("perm",e,t,n))];case"_FusedMatMul":let[r,a]=k("fusedOps",e,t,n),s=r==="biasadd",i=a==="prelu",o=k("numArgs",e,t,n),l=k("leakyreluAlpha",e,t,n);if(s){if(i&&o!==2)throw new Error("Fused MatMul with BiasAdd and Prelu must have two extra arguments: bias and alpha.");if(!i&&o!==1)throw new Error("Fused MatMul with BiasAdd must have one extra argument: bias.")}let[u,c]=k("args",e,t,n);return[La.matMul({a:k("a",e,t,n),b:k("b",e,t,n),transposeA:k("transposeA",e,t,n),transposeB:k("transposeB",e,t,n),bias:u,activation:a,preluActivationWeights:c,leakyreluAlpha:l})];default:throw TypeError(`Node type ${e.op} is not implemented`)}},wre=(e,t,n)=>{switch(e.op){case"FusedBatchNorm":case"FusedBatchNormV2":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"FusedBatchNormV3":return[li(k("x",e,t,n),k("mean",e,t,n),k("variance",e,t,n),k("offset",e,t,n),k("scale",e,t,n),k("epsilon",e,t,n))];case"LRN":return[tm(k("x",e,t,n),k("radius",e,t,n),k("bias",e,t,n),k("alpha",e,t,n),k("beta",e,t,n))];case"Softmax":return[Yu(k("x",e,t,n))];case"LogSoftmax":return[bd(k("x",e,t,n))];case"SparseToDense":return[wm(k("sparseIndices",e,t,n),k("outputShape",e,t,n),k("sparseValues",e,t,n),k("defaultValue",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},_re=(e,t,n)=>{switch(e.op){case"Max":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Xn(k("x",e,t,n),i,o)]}case"Mean":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[kt(k("x",e,t,n),i,o)]}case"Min":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[pl(k("x",e,t,n),i,o)]}case"Sum":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Te(k("x",e,t,n),i,o)]}case"All":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[dd(k("x",e,t,n),i,o)]}case"Any":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Ou(k("x",e,t,n),i,o)]}case"ArgMax":{let i=k("axis",e,t,n);return[zu(k("x",e,t,n),i)]}case"ArgMin":{let i=k("axis",e,t,n);return[zf(k("x",e,t,n),i)]}case"Prod":{let i=k("axis",e,t,n),o=k("keepDims",e,t,n);return[Nd(k("x",e,t,n),i,o)]}case"Cumsum":{let i=k("axis",e,t,n),o=k("exclusive",e,t,n),l=k("reverse",e,t,n);return[yd(k("x",e,t,n),i,o,l)]}case"Bincount":let r=k("x",e,t,n),a=k("weights",e,t,n),s=k("size",e,t,n);return[X5(r,a,s)];case"DenseBincount":{let i=k("x",e,t,n),o=k("weights",e,t,n),l=k("size",e,t,n),u=k("binaryOutput",e,t,n);return[Q5(i,o,l,u)]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},bre=(e,t,n)=>{switch(e.op){case"ConcatV2":case"Concat":{let r=k("n",e,t,n),a=k("axis",e,t,n),s=k("tensors",e,t,n);return s=s.slice(0,r),[st(s,a)]}case"Gather":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[ui(r,me(a,"int32"),0)]}case"GatherV2":{let r=k("axis",e,t,n),a=k("batchDims",e,t,n),s=k("x",e,t,n),i=k("indices",e,t,n);return[ui(s,me(i,"int32"),r,a)]}case"Reverse":{let r=k("dims",e,t,n),a=[];for(let i=0;i{let r=k("axis",e,t,n),a=k("tensors",e,t,n),s=a[0].shape,i=Pa(a[0]).shape,o=a.map(l=>{let u=v.arraysEqual(l.shape,s);if(!u&&!v.arraysEqual(Pa(l).shape,i))throw new Error("the input tensors shape does not match");return u?l:G(l,s)});return[dn(o,r)]});case"Unpack":{let r=k("axis",e,t,n),a=k("tensor",e,t,n);return ir(a,r)}case"Tile":{let r=k("reps",e,t,n);return[Oa(k("x",e,t,n),r)]}case"Split":case"SplitV":{let r=k("axis",e,t,n),a=k("numOrSizeSplits",e,t,n),s=k("x",e,t,n);return Lt(s,a,r)}case"ScatterNd":{let r=k("indices",e,t,n),a=k("values",e,t,n),s=k("shape",e,t,n);return[xx(r,a,s)]}case"GatherNd":{let r=k("x",e,t,n),a=k("indices",e,t,n);return[wx(r,a)]}case"SparseToDense":{let r=k("sparseIndices",e,t,n),a=k("outputShape",e,t,n),s=k("sparseValues",e,t,n),i=k("defaultValue",e,t,n);return[wm(r,s,a,s.dtype===i.dtype?i:me(i,s.dtype))]}default:throw TypeError(`Node type ${e.op} is not implemented`)}},vre=(e,t,n)=>{switch(e.op){case"FFT":return[Ju(k("x",e,t,n))];case"IFFT":return[Al(k("x",e,t,n))];case"RFFT":return[Qu(k("x",e,t,n))];case"IRFFT":return[$d(k("x",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}},kre=(e,t,n)=>{switch(e.op){case"Cast":return[me(k("x",e,t,n),k("dtype",e,t,n))];case"ExpandDims":{let r=k("axis",e,t,n);return[hn(k("x",e,t,n),r)]}case"Squeeze":{let r=k("axis",e,t,n);return[Pa(k("x",e,t,n),r)]}case"Reshape":return[G(k("x",e,t,n),k("shape",e,t,n))];case"MirrorPad":return[im(k("x",e,t,n),k("padding",e,t,n),k("mode",e,t,n))];case"PadV2":case"Pad":return[aa(k("x",e,t,n),k("padding",e,t,n),k("constantValue",e,t,n))];case"SpaceToBatchND":{let r=k("blockShape",e,t,n),a=k("paddings",e,t,n);return[qu(k("x",e,t,n),r,a)]}case"BatchToSpaceND":{let r=k("blockShape",e,t,n),a=k("crops",e,t,n);return[Wu(k("x",e,t,n),r,a)]}case"DepthToSpace":{let r=k("blockSize",e,t,n),a=k("dataFormat",e,t,n).toUpperCase();return[Kf(k("x",e,t,n),r,a)]}case"BroadcastTo":return[Bu(k("x",e,t,n),k("shape",e,t,n))];default:throw TypeError(`Node type ${e.op} is not implemented`)}};function Lv(e,t,n,r){let a=((s,i,o)=>{switch(s.category){case"arithmetic":return B(()=>nre(s,i,o));case"basic_math":return B(()=>rre(s,i,o));case"control":return ure(s,i,o);case"convolution":return B(()=>cre(s,i,o));case"creation":return B(()=>hre(s,i,o));case"dynamic":return dre(s,i,o);case"evaluation":return B(()=>pre(s,i,o));case"image":return B(()=>yre(s,i,o));case"graph":return B(()=>fre(s,i,o));case"logical":return B(()=>gre(s,i,o));case"matrices":return B(()=>xre(s,i,o));case"normalization":return B(()=>wre(s,i,o));case"reduction":return B(()=>_re(s,i,o));case"slice_join":return B(()=>bre(s,i,o));case"spectral":return B(()=>vre(s,i,o));case"transformation":return B(()=>kre(s,i,o));case"hash_table":return Are(s,i,o,r);case"custom":let l=mv(s.op);if(l&&l.customExecutor)return l.customExecutor(new tre(s,i,o));throw TypeError(`Custom op ${s.op} is not registered.`);default:throw TypeError(`Unknown op '${s.op}'. File an issue at https://github.com/tensorflow/tfjs/issues so we can add it, or register a custom execution with tf.registerOp()`)}})(e,t,n);return v.isPromise(a)?a.then(s=>[].concat(s)):[].concat(a)}var Wv=class{constructor(e={},t={},n={},r={}){this.weightMap=e,this.tensorArrayMap=t,this.tensorListMap=n,this.functionMap=r,this.rootContext={id:0,frameName:"",iterationId:0},this.contexts=[this.rootContext],this.lastId=0,this.generateCurrentContextIds()}newFrame(e,t){return{id:e,frameName:t,iterationId:0}}set currentContext(e){this.contexts!==e&&(this.contexts=e,this.generateCurrentContextIds())}get currentContext(){return this.contexts}get currentContextId(){return this._currentContextIds[0]}get currentContextIds(){return this._currentContextIds}generateCurrentContextIds(){let e=[];for(let t=0;tt.id===0&&t.iterationId===0?"":`${t.frameName}-${t.iterationId}`).join("/"):""}enterFrame(e){this.contexts&&(this.lastId++,this.contexts=this.contexts.slice(),this.contexts.push(this.newFrame(this.lastId,e)),this._currentContextIds.unshift(this.contextIdforContexts(this.contexts)))}exitFrame(){if(this.contexts&&this.contexts.length>1)this.contexts=this.contexts.slice(),this.contexts.splice(-1),this.currentContextIds.shift();else throw new Error("Cannot exit frame, the context is empty")}nextIteration(){if(this.contexts&&this.contexts.length>0){this.contexts=this.contexts.slice(),this.lastId++;let e=Object.assign({},this.contexts[this.contexts.length-1]);e.iterationId+=1,e.id=this.lastId,this.contexts.splice(-1,1,e),this._currentContextIds.splice(0,1,this.contextIdforContexts(this.contexts))}else throw new Error("Cannot increase frame iteration, the context is empty")}getWeight(e){return this.weightMap[e]}addTensorArray(e){this.tensorArrayMap[e.id]=e}getTensorArray(e){return this.tensorArrayMap[e]}addTensorList(e){this.tensorListMap[e.id]=e}getTensorList(e){return this.tensorListMap[e]}dispose(e){for(let t in this.tensorArrayMap)this.tensorArrayMap[t].clearAndClose(e);for(let t in this.tensorListMap)this.tensorListMap[t].clearAndClose(e)}};function Vv(e,t,n,r){let a=new Set,s=[],i=null,o=null,l=new Set,u=Object.keys(e).map(d=>Wn(d)[0]),c=[];r!=null&&(c=r.map(d=>Wn(d.name)[0]));let h=[...t];for(;h.length>0;){let d=h.pop();if((Bv(d)||Nre(d)||Ire(d))&&i==null&&(i=d,o=i.children.map(p=>p.name).filter(p=>a.has(p))),a.add(d.name),n[d.name]==null&&u.indexOf(d.name)===-1&&c.indexOf(d.name)===-1){if(d.inputs.length===0){s.push(d.name);continue}d.inputs.forEach(p=>{l.has(p.name)||(l.add(p.name),h.push(p))})}}return{inputs:e,outputs:t,usedNodes:a,missingInputs:s,dynamicNode:i,syncInputs:o}}function Sre(e,t,n){let{usedNodes:r,inputs:a}=n,s=[],i=Object.keys(a).map(c=>Wn(c)[0]).map(c=>e.nodes[c]),o=e.initNodes;i.forEach(c=>{r.has(c.name)&&s.push(c)}),e.weights.forEach(c=>{r.has(c.name)&&s.push(c)}),o!=null&&o.forEach(c=>{r.has(c.name)&&s.push(c)});let l=new Set,u=[];for(;s.length>0;){let c=s.pop();l.add(c.name),t[c.name]||u.push(c),c.children.forEach(h=>{!l.has(h.name)&&r.has(h.name)&&h.inputs.every(d=>l.has(d.name))&&s.push(h)})}return u}var Tre=["Switch","Merge","Enter","Exit","NextIteration","StatelessIf","StatelessWhile","if","While"],Cre=["NonMaxSuppressionV2","NonMaxSuppressionV3","NonMaxSuppressionV5","Where"],Ere=["HashTable","HashTableV2","LookupTableImport","LookupTableImportV2","LookupTableFind","LookupTableFindV2","LookupTableSize","LookupTableSizeV2"];function Bv(e){return Tre.indexOf(e.op)>=0}function Nre(e){return Cre.indexOf(e.op)>=0}function Ire(e){return Ere.indexOf(e.op)>=0}var c2=class{constructor(e,t){this.graph=e,this.parent=t,this.compiledMap=new Map,this._weightMap={},this.SEPERATOR=",",this._functions={},this._functionExecutorMap={},this._outputs=e.outputs,this._inputs=e.inputs,this._initNodes=e.initNodes,this._signature=e.signature,this._functions=e.functions,e.functions!=null&&Object.keys(e.functions).forEach(n=>{this._functionExecutorMap[n]=new c2(e.functions[n],this)})}get weightIds(){return this.parent?this.parent.weightIds:this._weightIds}get functionExecutorMap(){return this.parent?this.parent.functionExecutorMap:this._functionExecutorMap}get weightMap(){return this.parent?this.parent.weightMap:this._weightMap}set weightMap(e){let t=Object.keys(e).map(n=>e[n].map(r=>r.id));this._weightIds=[].concat(...t),this._weightMap=e}set resourceManager(e){this._resourceManager=e}get inputs(){return this._inputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get outputs(){return this._outputs.map(e=>({name:e.name,shape:e.attrParams.shape?e.attrParams.shape.value:void 0,dtype:e.attrParams.dtype?e.attrParams.dtype.value:void 0}))}get inputNodes(){return this._inputs.map(e=>e.signatureKey||e.name)}get outputNodes(){return this._outputs.map(e=>{let t=e.signatureKey||e.name;return e.defaultOutput?`${t}:${e.defaultOutput}`:t})}get functions(){return Object.keys(this._functions).reduce((e,t)=>(e[t]=this._functions[t].signature,e),{})}getCompilationKey(e,t){let n=e.map(a=>a.name).sort(),r=t.map(a=>a.name).sort();return n.join(this.SEPERATOR)+"--"+r.join(this.SEPERATOR)}compile(e,t){let n=Vv(e,t,this.weightMap,this._initNodes),{missingInputs:r,dynamicNode:a,syncInputs:s}=n;if(a!=null)throw new Error(`This execution contains the node '${a.name}', which has the dynamic op '${a.op}'. Please use model.executeAsync() instead. Alternatively, to avoid the dynamic ops, specify the inputs [${s}]`);if(r.length>0){let i=t.map(l=>l.name),o=Object.keys(e);throw new Error(`Cannot compute the outputs [${i}] from the provided inputs [${o}]. Missing the following inputs: [${r}]`)}return Sre(this.graph,this.weightMap,n)}execute(e,t){e=this.mapInputs(e);let n=Object.keys(e).sort();this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t);let r=n.map(c=>this.graph.nodes[Wn(c)[0]]),a=t.map(c=>Wn(c)[0]),s=a.map(c=>this.graph.nodes[c]);s.length===0&&(s=this._outputs);let i=this.getCompilationKey(r,s),o=this.compiledMap.get(i);o==null&&(o=this.compile(e,s),this.compiledMap.set(i,o));let l={},u={};return B(()=>{let c=new Wv(this.weightMap,l,u,this.functionExecutorMap),h=Object.assign({},this.weightMap);Object.keys(e).forEach(f=>{let[m,A]=Wn(f),y=[];y[A]=e[f],h[m]=y});let d=this.getFrozenTensorIds(h),p={};for(let f=0;fEn(f,h,c))})}getFrozenTensorIds(e){let t=[].concat.apply([],Object.keys(e).map(n=>e[n]).map(n=>n.map(r=>r.id)));return new Set(t)}checkTensorForDisposal(e,t,n,r,a,s,i){t.category==="control"||s.indexOf(e)!==-1||(n[e].forEach(o=>{o!=null&&(i[o.id]=(i[o.id]||0)+t.children.length)}),t.inputs.forEach(o=>{if(o.category!=="control"){let l=One(o.name,n,r);l!=null&&l.forEach(u=>{if(u&&!a.has(u.id)){let c=i[u.id];c===1?(u.dispose(),delete i[u.id]):c!=null&&i[u.id]--}})}}))}async executeAsync(e,t){return this._executeAsync(e,t)}async _executeAsync(e,t,n=!1,r={},a={}){n||(e=this.mapInputs(e),this.checkInputs(e),this.checkInputShapeAndType(e),t=this.mapOutputs(t),this.checkOutputs(t));let s=new Wv(this.weightMap,r,a,this.functionExecutorMap),i=await this.executeWithControlFlow(e,s,t,n),o=t.map(h=>En(h,i,s)),l=o.map(h=>h.id),u=Object.keys(e).map(h=>e[h].id),c=new Set([...l,...u,...this.weightIds]);return Object.keys(i).forEach(h=>{i[h].forEach(d=>{d&&!d.isDisposed&&!c.has(d.id)&&d.dispose()})}),this.parent==null&&s.dispose(c),o}async executeFunctionAsync(e,t,n){let r=e.reduce((a,s,i)=>(a[this.inputs[i].name]=s,a),{});return this._executeAsync(r,this.outputNodes,!0,t,n)}async executeWithControlFlow(e,t,n,r){let a=Object.keys(e),s=a.map(g=>this.graph.nodes[Wn(g)[0]]),i=n.map(g=>Wn(g)[0]),o=i.map(g=>this.graph.nodes[g]);o.length===0&&(o=this._outputs);let{usedNodes:l,missingInputs:u,dynamicNode:c,syncInputs:h}=Vv(e,o,this.weightMap,this._initNodes),d=[...s,...this.graph.weights,...this._initNodes||[]].map(g=>({node:g,contexts:t.currentContext})),p=Object.assign({},this.weightMap);Object.keys(e).forEach(g=>{let[_,b]=Wn(g),w=[];w[b]=e[g],p[_]=w});let f={},m=this.getFrozenTensorIds(p),A={};for(;d.length>0;){let g=this.processStack(s,d,t,p,A,m,i,f,l);await Promise.all(g)}c==null&&!r&&console.warn("This model execution did not contain any nodes with control flow or dynamic output shapes. You can use model.execute() instead.");let y=o.filter(g=>!Bv(g)&&!En(g.name,p,t)).map(g=>g.name);if(y.length>0){let g="";throw c!=null&&(g=`Alternatively, to avoid the dynamic ops, use model.execute() and specify the inputs [${h}]`),new Error(`Cannot compute the outputs [${y}] from the provided inputs [${a}]. Consider providing the following inputs: [${u}]. ${g}`)}return p}processStack(e,t,n,r,a,s,i,o,l){let u=[];for(;t.length>0;){let c=t.pop();n.currentContext=c.contexts;let h="";if(c.node.op==="Enter"&&k("isConstant",c.node,r,n)&&([h]=da(c.node.name,n)),r[c.node.name]==null){let d=Lv(c.node,r,n,this._resourceManager);h||([h]=da(c.node.name,n));let p=n.currentContext;v.isPromise(d)?u.push(d.then(f=>(r[h]=f,n.currentContext=p,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l),f))):(r[h]=d,this.checkTensorForDisposal(h,c.node,r,n,s,i,o),this.processChildNodes(c.node,t,n,r,a,l))}else this.processChildNodes(c.node,t,n,r,a,l)}return u}processChildNodes(e,t,n,r,a,s){e.children.forEach(i=>{let[o]=da(i.name,n);a[o]||!s.has(i.name)||(i.op==="Merge"?i.inputNames.some(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})):i.inputNames.every(l=>!!En(l,r,n))&&(a[o]=!0,t.push({contexts:n.currentContext,node:i})))})}dispose(){Object.keys(this.weightMap).forEach(e=>this.weightMap[e].forEach(t=>t.dispose()))}checkInputShapeAndType(e){Object.keys(e).forEach(t=>{let n=e[t],[r]=Wn(t),a=this.graph.nodes[r];if(a.attrParams.shape&&a.attrParams.shape.value){let s=a.attrParams.shape.value,i=s.length===n.shape.length&&n.shape.every((o,l)=>s[l]===-1||s[l]===o);v.assert(i,()=>`The shape of dict['${a.name}'] provided in model.execute(dict) must be [${s}], but was [${n.shape}]`)}a.attrParams.dtype&&a.attrParams.dtype.value&&v.assert(n.dtype===a.attrParams.dtype.value,()=>`The dtype of dict['${a.name}'] provided in model.execute(dict) must be ${a.attrParams.dtype.value}, but was ${n.dtype}`)})}mapInputs(e){let t={};for(let n in e)if(this._signature!=null&&this._signature.inputs!=null&&this._signature.inputs[n]!=null){let r=this._signature.inputs[n];t[r.name]=e[n]}else t[n]=e[n];return t}checkInputs(e){let t=Object.keys(e).filter(n=>{let[r]=Wn(n);return this.graph.nodes[r]==null});if(t.length>0)throw new Error(`The dict provided in model.execute(dict) has keys: [${t}] that are not part of graph`)}mapOutputs(e){return e.map(t=>this._signature!=null&&this._signature.outputs!=null&&this._signature.outputs[t]!=null?this._signature.outputs[t].name:t,{})}checkOutputs(e){e.forEach(t=>{let[n]=Wn(t);if(!this.graph.nodes[n])throw new Error(`The output '${t}' is not found in the graph`)})}},Rre=class{constructor(e={},t={}){this.hashTableNameToHandle=e,this.hashTableMap=t}addHashTable(e,t){this.hashTableNameToHandle[e]=t.handle,this.hashTableMap[t.id]=t}getHashTableHandleByName(e){return this.hashTableNameToHandle[e]}getHashTableById(e){return this.hashTableMap[e]}dispose(){for(let e in this.hashTableMap)this.hashTableMap[e].clearAndClose(),delete this.hashTableMap[e];for(let e in this.hashTableNameToHandle)this.hashTableNameToHandle[e].dispose(),delete this.hashTableNameToHandle[e]}},Fre="?tfjs-format=file",Mre="model.json",Uv=class{constructor(e,t={}){this.modelUrl=e,this.loadOptions=t,this.version="n/a",t==null&&(this.loadOptions={}),this.resourceManager=new Rre}get modelVersion(){return this.version}get inputNodes(){return this.executor.inputNodes}get outputNodes(){return this.executor.outputNodes}get inputs(){return this.executor.inputs}get outputs(){return this.executor.outputs}get weights(){return this.executor.weightMap}get metadata(){return this.artifacts.userDefinedMetadata}get modelSignature(){return this.signature}findIOHandler(){let e=this.modelUrl;if(e.load!=null)this.handler=e;else if(this.loadOptions.requestInit!=null)this.handler=bn.browserHTTPRequest(e,this.loadOptions);else{let t=bn.getLoadHandlers(e,this.loadOptions);if(t.length===0)t.push(bn.browserHTTPRequest(e,this.loadOptions));else if(t.length>1)throw new Error(`Found more than one (${t.length}) load handlers for URL '${[e]}'`);this.handler=t[0]}}async load(){if(this.findIOHandler(),this.handler.load==null)throw new Error("Cannot proceed with model loading because the IOHandler provided does not have the `load` method implemented.");let e=await this.handler.load();return this.loadSync(e)}loadSync(e){this.artifacts=e;let t=this.artifacts.modelTopology,n;this.artifacts.userDefinedMetadata!=null&&this.artifacts.userDefinedMetadata.signature!=null?n=this.artifacts.userDefinedMetadata.signature:n=this.artifacts.signature,this.signature=n,this.version=`${t.versions.producer}.${t.versions.minConsumer}`;let r=bn.decodeWeights(this.artifacts.weightData,this.artifacts.weightSpecs);if(this.executor=new c2($v.Instance.transformGraph(t,this.signature)),this.executor.weightMap=this.convertTensorMapToTensorsMap(r),this.executor.resourceManager=this.resourceManager,e.modelInitializer!=null&&e.modelInitializer.node!=null){let a=$v.Instance.transformGraph(e.modelInitializer);this.initializer=new c2(a),this.initializer.weightMap=this.executor.weightMap,this.initializer.resourceManager=this.resourceManager,this.initializer.executeAsync({},[])}return!0}async save(e,t){if(typeof e=="string"){let n=bn.getSaveHandlers(e);if(n.length===0)throw new Error(`Cannot find any save handlers for URL '${e}'`);if(n.length>1)throw new Error(`Found more than one (${n.length}) save handlers for URL '${e}'`);e=n[0]}if(e.save==null)throw new Error("GraphModel.save() cannot proceed because the IOHandler provided does not have the `save` attribute defined.");return e.save(this.artifacts)}predict(e,t){return this.execute(e,this.outputNodes)}normalizeInputs(e){if(!(e instanceof Ue)&&!Array.isArray(e))return e;if(e=Array.isArray(e)?e:[e],e.length!==this.inputNodes.length)throw new Error(`Input tensor count mismatch,the graph model has ${this.inputNodes.length} placeholders, while there are ${e.length} input tensors.`);return this.inputNodes.reduce((t,n,r)=>(t[n]=e[r],t),{})}normalizeOutputs(e){return e=e||this.outputNodes,Array.isArray(e)?e:[e]}execute(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=this.executor.execute(e,t);return n.length>1?n:n[0]}async executeAsync(e,t){e=this.normalizeInputs(e),t=this.normalizeOutputs(t);let n=await this.executor.executeAsync(e,t);return n.length>1?n:n[0]}convertTensorMapToTensorsMap(e){return Object.keys(e).reduce((t,n)=>(t[n]=[e[n]],t),{})}dispose(){this.executor.dispose(),this.initializer&&this.initializer.dispose(),this.resourceManager.dispose()}};async function Ft(e,t={}){if(e==null)throw new Error("modelUrl in loadGraphModel() cannot be null. Please provide a url or an IOHandler that loads the model");t==null&&(t={}),t.fromTFHub&&e.load==null&&(e.endsWith("/")||(e=e+"/"),e=`${e}${Mre}${Fre}`);let n=new Uv(e,t);return await n.load(),n}var $re="3.3.0",Hv={};ze(Hv,{CSVDataset:()=>Gv,Dataset:()=>Vl,FileDataSource:()=>qv,TextLineDataset:()=>jv,URLDataSource:()=>Xv,array:()=>Dre,csv:()=>zre,func:()=>Pre,generator:()=>Lre,microphone:()=>Bre,version_data:()=>Vre,webcam:()=>Wre,zip:()=>Ore});var Ure=qi($g()),Hre=qi($g());function jre(e,t){return s0(e,t)}function s0(e,t,n=new Map,r=new Set){if(e==null)return null;if(r.has(e))throw new Error("Circular references are not supported.");if(n.has(e))return n.get(e);let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep map function may not return both a value and recurse=true.");if(a.recurse)if(Ul(e)){let s=Array.isArray(e)?[]:{};r.add(e);for(let i in e){let o=e[i],l=s0(o,t,n,r);s[i]=l}return r.delete(e),s}else throw new Error(`Can't recurse into non-iterable type: ${e}`);else return n.set(e,a.value),a.value}function Gre(e,t=Zv){return Kv(e,t)}function Kv(e,t,n=new Set){let r=e[0];if(n.has(r))throw new Error("Circular references are not supported.");let a=t(e);if(a.recurse&&a.value!==null)throw new Error("A deep zip function may not return both a value and recurse=true.");if(a.recurse)if(Ul(r)){let s=Array.isArray(r)?[]:{};n.add(r);for(let i in r){let o=e.map(u=>u[i]),l=Kv(o,t,n);s[i]=l}return n.delete(r),s}else throw new Error(`Can't recurse into non-iterable type: ${r}`);else return a.value}function Zv(e){return e===null?null:Ul(e[0])?{value:null,recurse:!0}:{value:e,recurse:!1}}async function Yv(e,t){let n=new Map;s0(e,t,n);for(let r of Array.from(n.keys())){let a=n.get(r);if(v.isPromise(a)){let s=await a;n.set(r,s)}}return s0(e,t,n)}function Ul(e){return e!=null&&!ArrayBuffer.isView(e)&&(Array.isArray(e)||typeof e=="object"&&!(e instanceof Ue))}function Xre(e){return e==null||qre(e)||Array.isArray(e)||typeof e=="object"&&e instanceof Ue||v.isTypedArray(e)}function qre(e){return e===null||typeof e!="object"&&typeof e!="function"}function Zre(e){return jre(e,Kre)}function Kre(e){return e instanceof Ue?{value:e.clone(),recurse:!1}:Ul(e)?{value:null,recurse:!0}:{value:e,recurse:!1}}var Jv=class{constructor(e){if(this.capacity=e,this.begin=0,this.end=0,e==null)throw new RangeError("Can't create a ring buffer of unknown capacity.");if(e<1)throw new RangeError("Can't create ring buffer of capacity < 1.");this.data=new Array(e),this.doubledCapacity=2*e}wrap(e){for(;e<0;)e+=this.doubledCapacity;return e%this.doubledCapacity}get(e){if(e<0)throw new RangeError("Can't get item at a negative index.");return this.data[e%this.capacity]}set(e,t){if(e<0)throw new RangeError("Can't set item at a negative index.");this.data[e%this.capacity]=t}length(){let e=this.end-this.begin;return e<0&&(e=this.doubledCapacity+e),e}isFull(){return this.length()===this.capacity}isEmpty(){return this.length()===0}push(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.set(this.end,e),this.end=this.wrap(this.end+1)}pushAll(e){for(let t of e)this.push(t)}pop(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");this.end=this.wrap(this.end-1);let e=this.get(this.end);return this.set(this.end,void 0),e}unshift(e){if(this.isFull())throw new RangeError("Ring buffer is full.");this.begin=this.wrap(this.begin-1),this.set(this.begin,e)}shift(){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let e=this.get(this.begin);return this.set(this.begin,void 0),this.begin=this.wrap(this.begin+1),e}shuffleExcise(e){if(this.isEmpty())throw new RangeError("Ring buffer is empty.");let t=this.wrap(this.begin+e),n=this.get(t);return this.set(t,this.pop()),n}},h2=class extends Jv{constructor(){super(h2.INITIAL_CAPACITY)}isFull(){return!1}push(e){super.isFull()&&this.expand(),super.push(e)}unshift(e){super.isFull()&&this.expand(),super.unshift(e)}expand(){let e=this.capacity*2,t=new Array(e),n=this.length();for(let r=0;rt===!0)}rowMajorBatch(e,t=!0){return new sae(this,e,t)}columnMajorBatch(e,t=!0,n=Zv){return this.rowMajorBatch(e,t).map(r=>Gre(r,n))}concatenate(e,t){return new e6(Qv([this,e]),t)}take(e){return e<0||e==null?this:new aae(this,e)}skip(e){return e<0||e==null?this:new rae(this,e)}prefetch(e){return new n6(this,e)}shuffle(e,t){return new cae(this,e,t)}serial(){return new nae(this)}},Yre=class extends Zt{constructor(e){super();this.items=e,this.trav=0}summary(){return`Array of ${this.items.length} items`}async next(){if(this.trav>=this.items.length)return{value:null,done:!0};let e=this.items[this.trav];return this.trav++,{value:Zre(e),done:!1}}},Jre=class extends Zt{constructor(e){super();this.nextFn=e}summary(){return"Function call"}async next(){try{return this.nextFn()}catch(e){throw e.message=`Error thrown while iterating through a dataset: ${e.message}`,e}}},nae=class extends Zt{constructor(e){super();this.upstream=e,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Serial`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){return this.upstream.next()}},rae=class extends Zt{constructor(e,t){super();this.upstream=e,this.maxCount=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Skip`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.count++ Take`}async next(){return this.count++>=this.maxCount?{value:null,done:!0}:this.upstream.next()}},sae=class extends Zt{constructor(e,t,n=!0){super();this.upstream=e,this.batchSize=t,this.enableSmallLastBatch=n,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> RowMajorBatch`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){let e=[];for(;e.length0?{value:e,done:!1}:{value:null,done:!0};e.push(t.value)}return{value:e,done:!1}}},iae=class extends Zt{constructor(e,t){super();this.upstream=e,this.predicate=t,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> Filter`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;){let e=await this.upstream.next();if(e.done||this.predicate(e.value))return e;Ee(e.value)}}},oae=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Map`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},lae=class extends Zt{constructor(e,t){super();this.upstream=e,this.handler=t,this.count=0,this.lastRead=Promise.resolve({value:null,done:!1})}summary(){return`${this.upstream.summary()} -> handleErrors`}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;;)try{return await this.upstream.next()}catch(e){if(!this.handler(e))return{value:null,done:!0}}}},t6=class extends Zt{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> AsyncMap`}async next(){let e=await this.upstream.next();if(e.done)return{value:null,done:!0};let t=mr.getTensorsInContainer(e.value),n=await this.transform(e.value),r=mr.getTensorsInContainer(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return{value:n,done:!1}}},p2=class extends Zt{constructor(){super();this.outputQueue=new h2,this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}async serialNext(){for(;this.outputQueue.length()===0;)if(!await this.pump())return{value:null,done:!0};return{value:this.outputQueue.shift(),done:!1}}},uae=class extends p2{constructor(e,t){super();this.upstream=e,this.transform=t}summary(){return`${this.upstream.summary()} -> Flatmap`}async pump(){let e=await this.upstream.next();if(e.done)return!1;let t=mr.getTensorsInContainer(e.value),n=this.transform(e.value),r=mr.getTensorsInContainer(n);this.outputQueue.pushAll(n);for(let a of t)mr.isTensorInList(a,r)||a.dispose();return!0}},e6=class extends Zt{constructor(e,t){super();this.baseErrorHandler=t,this.lastRead=null,this.iterator=null,this.moreIterators=e}summary(){return"TODO: fill in upstream of chained summaries -> Chained"}async next(){return this.lastRead=this.readFromChain(this.lastRead),this.lastRead}async readFromChain(e){if(await e,this.iterator==null){let n=await this.moreIterators.next();if(n.done)return{value:null,done:!0};this.iterator=n.value,this.baseErrorHandler!=null&&(this.iterator=this.iterator.handleErrors(this.baseErrorHandler))}let t=await this.iterator.next();return t.done?(this.iterator=null,this.readFromChain(e)):t}},Za;(function(e){e[e.FAIL=0]="FAIL",e[e.SHORTEST=1]="SHORTEST",e[e.LONGEST=2]="LONGEST"})(Za||(Za={}));var eae=class extends Zt{constructor(e,t=Za.FAIL){super();this.iterators=e,this.mismatchMode=t,this.count=0,this.currentPromise=null}summary(){return"{TODO: fill in upstream of zip summaries} -> Zip"}async nextState(e){await e;let t=0,n=0;function r(s){return s instanceof Zt?{value:s.next().then(i=>(t++,i.done&&n++,i.value)),recurse:!1}:{value:null,recurse:!0}}let a=await Yv(this.iterators,r);if(t===n)return{value:null,done:!0};if(n>0)switch(this.mismatchMode){case Za.FAIL:throw new Error(`Zipped streams should have the same length. Mismatched at element ${this.count}.`);case Za.SHORTEST:return{value:null,done:!0};case Za.LONGEST:default:}return this.count++,{value:a,done:!1}}async next(){return this.currentPromise=this.nextState(this.currentPromise),this.currentPromise}},n6=class extends Zt{constructor(e,t){super();this.upstream=e,this.bufferSize=t,this.buffer=new Jv(t)}summary(){return`${this.upstream.summary()} -> Prefetch`}refill(){for(;!this.buffer.isFull();){let e=this.upstream.next();this.buffer.push(e)}}next(){return this.refill(),this.buffer.shift()}},cae=class extends n6{constructor(e,t,n){super(e,t);this.upstream=e,this.windowSize=t,this.upstreamExhausted=!1,this.random=Hre.alea(n||v.now().toString()),this.lastRead=Promise.resolve({value:null,done:!1})}async next(){return this.lastRead=this.lastRead.then(()=>this.serialNext()),this.lastRead}randomInt(e){return Math.floor(this.random()*e)}chooseIndex(){return this.randomInt(this.buffer.length())}async serialNext(){for(this.upstreamExhausted||this.refill();!this.buffer.isEmpty();){let e=this.chooseIndex(),t=await this.buffer.shuffleExcise(e);if(t.done)this.upstreamExhausted=!0;else return this.refill(),t}return{value:null,done:!0}}},Vl=class{constructor(){this.size=null}batch(e,t=!0){let n=this;v.assert(e>0,()=>`batchSize needs to be positive, but it is + ${e}`);let r;return this.size===Infinity||this.size==null?r=this.size:t?r=Math.ceil(this.size/e):r=Math.floor(this.size/e),Bn(async()=>(await n.iterator()).columnMajorBatch(e,t,hae),r)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,Bn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,Bn(async()=>(await t.iterator()).filter(r=>B(()=>e(r))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return Bn(async()=>(await t.iterator()).map(n=>B(()=>e(n))),this.size)}mapAsync(e){let t=this;return Bn(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return Bn(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,Bn(async()=>{let r=d2(async()=>({value:await t.iterator(),done:!1}));return Qre(r.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);let r=this,a=Ure.alea(t||v.now().toString());return Bn(async()=>{let s=a.int32();return n&&(s+=a.int32()),(await r.iterator()).shuffle(e,s.toString())},this.size)}take(e){let t=this,n;return this.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,Bn(async()=>(await t.iterator()).take(e),n)}async toArray(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArray()}async toArrayForTest(){if(this.size===Infinity)throw new Error("Can not convert infinite data stream to array.");return(await this.iterator()).toArrayForTest()}};Vl.MAX_BUFFER_SIZE=1e4;function Bn(e,t=null){return new class extends Vl{constructor(){super(...arguments);this.size=t}async iterator(){return e()}}}function Dre(e){return Bn(async()=>Qv(e),e.length)}function Ore(e){if(!Ul(e))throw new Error("The argument to zip() must be an object or array.");let t;if(Array.isArray(e))for(let n=0;n{let n=await Yv(e,r=>{if(r instanceof Vl)return{value:r.iterator(),recurse:!1};if(Ul(r))return{value:null,recurse:!0};throw new Error("Leaves of the structure passed to zip() must be Datasets, not primitives.")});return tae(n,Za.SHORTEST)},t)}function hae(e){if(e===null)return null;let t=e[0];return Xre(t)?{value:dae(e),recurse:!1}:{value:null,recurse:!0}}function dae(e){if(e.length===0)throw new Error("Can't make a batch of zero elements.");return e[0]instanceof Ue?dn(e):yr(e)}var jv=class extends Vl{constructor(e){super();this.input=e}async iterator(){return(await this.input.iterator()).decodeUTF8().split(` +`).map(e=>(e.endsWith("\r")&&(e=e.slice(0,-1)),e))}},i0='"',Pc=Symbol("out"),r6=Symbol("field"),o0=Symbol("quote"),f2=Symbol("quoteafterquote"),a6=Symbol("quoteinquote"),Gv=class extends Vl{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new jv(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(v.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&v.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((r,a)=>(r[a]=r[a]+1||1,r),{}),n=Object.keys(t).filter(r=>t[r]>1);if(v.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let r of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(r)===-1)throw new Error('The key "'+r+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let e=await(await this.base.iterator()).next();if(e.done)throw new Error("No data was found for CSV parsing.");let t=e.value;return this.parseRow(t,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},r={};for(let a=0;a14||!Number.isInteger(t))throw new Error(`Invalid fftSize: it must be a power of 2 between 2 to 4 and 2 to 14, but got ${this.fftSize}`);if(this.numFrames=e.numFramesPerSpectrogram||43,this.sampleRateHz=e.sampleRateHz,this.columnTruncateLength=e.columnTruncateLength||this.fftSize,this.audioTrackConstraints=e.audioTrackConstraints,this.smoothingTimeConstant=e.smoothingTimeConstant||0,this.includeSpectrogram=e.includeSpectrogram!==!1,this.includeWaveform=e.includeWaveform===!0,!this.includeSpectrogram&&!this.includeWaveform)throw new Error("Both includeSpectrogram and includeWaveform are false. At least one type of data should be returned.")}summary(){return"microphone"}static async create(e={}){if(J().get("IS_NODE"))throw new Error("microphone API is only supported in browser environment.");let t=new s6(e);return await t.start(),t}async start(){try{this.stream=await navigator.mediaDevices.getUserMedia({audio:this.audioTrackConstraints==null?!0:this.audioTrackConstraints,video:!1})}catch(n){throw new Error(`Error thrown while initializing video stream: ${n.message}`)}if(!this.stream)throw new Error("Could not obtain audio from microphone.");let e=window.AudioContext||window.webkitAudioContext;if(this.audioContext=new e,!this.sampleRateHz)this.sampleRateHz=this.audioContext.sampleRate;else if(this.audioContext.sampleRate!==this.sampleRateHz)throw new Error(`Mismatch in sampling rate: Expected: ${this.sampleRateHz}; Actual: ${this.audioContext.sampleRate}`);let t=this.audioContext.createMediaStreamSource(this.stream);this.analyser=this.audioContext.createAnalyser(),this.analyser.fftSize=this.fftSize*2,this.analyser.smoothingTimeConstant=this.smoothingTimeConstant,t.connect(this.analyser),this.freqData=new Float32Array(this.fftSize),this.timeData=new Float32Array(this.fftSize)}async next(){if(this.isClosed)return{value:null,done:!0};let e,t,n=await this.getAudioData();if(this.includeSpectrogram){let r=this.flattenQueue(n.freqDataQueue);e=this.getTensorFromAudioDataArray(r,[this.numFrames,this.columnTruncateLength,1])}if(this.includeWaveform){let r=this.flattenQueue(n.timeDataQueue);t=this.getTensorFromAudioDataArray(r,[this.numFrames*this.fftSize,1])}return{value:{spectrogram:e,waveform:t},done:!1}}async capture(){return(await this.next()).value}async getAudioData(){let e=[],t=[],n=0;return new Promise(r=>{let a=setInterval(()=>{this.includeSpectrogram&&(this.analyser.getFloatFrequencyData(this.freqData),this.freqData[0]===-Infinity&&r({freqDataQueue:e,timeDataQueue:t}),e.push(this.freqData.slice(0,this.columnTruncateLength))),this.includeWaveform&&(this.analyser.getFloatTimeDomainData(this.timeData),t.push(this.timeData.slice())),++n===this.numFrames&&(clearInterval(a),r({freqDataQueue:e,timeDataQueue:t}))},this.fftSize/this.sampleRateHz*1e3)})}stop(){this.isClosed||(this.isClosed=!0,this.analyser.disconnect(),this.audioContext.close(),this.stream!=null&&this.stream.getTracks().length>0&&this.stream.getTracks()[0].stop())}toArray(){throw new Error("Can not convert infinite audio stream to array.")}getSampleRate(){return this.sampleRateHz}flattenQueue(e){let t=e[0].length,n=new Float32Array(e.length*t);return e.forEach((r,a)=>n.set(r,a*t)),n}getTensorFromAudioDataArray(e,t){let n=new Float32Array(v.sizeFromShape(t));return n.set(e,n.length-e.length),yr(n,t)}},i6=class extends Zt{constructor(e,t){super();if(this.webcamVideoElement=e,this.webcamConfig=t,this.isClosed=!0,this.resize=!1,this.needToResize())if(this.resize=!0,this.cropSize=[this.webcamConfig.resizeHeight,this.webcamConfig.resizeWidth],this.cropBoxInd=on([0],"int32"),this.webcamConfig.centerCrop){let n=this.webcamConfig.resizeWidth*1/this.webcamVideoElement.width,r=this.webcamConfig.resizeHeight*1/this.webcamVideoElement.height,a=(1-n)/2,s=(1-r)/2,i=a+n,o=r+s;this.cropBox=Nn([s,a,o,i],[1,4])}else this.cropBox=Nn([0,0,1,1],[1,4])}summary(){return"webcam"}static async create(e,t={}){if(J().get("IS_NODE"))throw new Error("tf.data.webcam is only supported in browser environment.");if(!e){if(e=document.createElement("video"),!t.resizeWidth||!t.resizeHeight)throw new Error("Please provide webcam video element, or resizeWidth and resizeHeight to create a hidden video element.");e.width=t.resizeWidth,e.height=t.resizeHeight}let n=new i6(e,t);return await n.start(),n}async start(){this.webcamConfig.facingMode&&v.assert(this.webcamConfig.facingMode==="user"||this.webcamConfig.facingMode==="environment",()=>`Invalid webcam facing mode: ${this.webcamConfig.facingMode}. Please provide 'user' or 'environment'`);try{this.stream=await navigator.mediaDevices.getUserMedia({video:{deviceId:this.webcamConfig.deviceId,facingMode:this.webcamConfig.facingMode?this.webcamConfig.facingMode:"user",width:this.webcamVideoElement.width,height:this.webcamVideoElement.height}})}catch(e){throw e.message=`Error thrown while initializing video stream: ${e.message}`,e}if(!this.stream)throw new Error("Could not obtain video from webcam.");try{this.webcamVideoElement.srcObject=this.stream}catch(e){console.log(e),this.webcamVideoElement.src=window.URL.createObjectURL(this.stream)}return this.webcamVideoElement.play(),this.isClosed=!1,new Promise(e=>{this.webcamVideoElement.onloadedmetadata=()=>{e()}})}async next(){if(this.isClosed)return{value:null,done:!0};let e;try{e=rl.fromPixels(this.webcamVideoElement)}catch(t){throw new Error(`Error thrown converting video to pixels: ${JSON.stringify(t)}`)}if(this.resize)try{return{value:this.cropAndResizeFrame(e),done:!1}}catch(t){throw new Error(`Error thrown cropping the video: ${t.message}`)}finally{e.dispose()}else return{value:e,done:!1}}needToResize(){return!!(this.webcamConfig.resizeWidth&&this.webcamConfig.resizeHeight&&(this.webcamVideoElement.width!==this.webcamConfig.resizeWidth||this.webcamVideoElement.height!==this.webcamConfig.resizeHeight))}cropAndResizeFrame(e){return B(()=>{let t=hn(me(e,"float32"),0),n;n=Je.cropAndResize(t,this.cropBox,this.cropBoxInd,this.cropSize,"bilinear");let r=n.shape;return G(n,r.slice(1))})}async capture(){return(await this.next()).value}stop(){this.stream.getTracks().forEach(e=>e.stop());try{this.webcamVideoElement.srcObject=null}catch(e){console.log(e),this.webcamVideoElement.src=null}this.isClosed=!0}toArray(){throw new Error("Can not convert infinite video stream to array.")}},o6=class{},l6=class extends Zt{split(e){return new pae(this,e)}},pae=class extends l6{constructor(e,t){super();this.upstream=e,this.impl=new fae(e,t)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},fae=class extends p2{constructor(e,t){super();this.upstream=e,this.separator=t,this.carryover=""}summary(){return`${this.upstream.summary()} -> Split('${this.separator}')`}async pump(){let e=await this.upstream.next();if(e.done)return this.carryover===""?!1:(this.outputQueue.push(this.carryover),this.carryover="",!0);let t=e.value.split(this.separator);t[0]=this.carryover+t[0];for(let n of t.slice(0,-1))this.outputQueue.push(n);return this.carryover=t[t.length-1],!0}},Aae=class extends Zt{decodeUTF8(){return new mae(this)}},mae=class extends l6{constructor(e){super();this.upstream=e,this.impl=new yae(e)}summary(){return this.impl.summary()}async next(){return this.impl.next()}},yae=class extends p2{constructor(e){super();if(this.upstream=e,J().get("IS_BROWSER"))this.decoder=new TextDecoder("utf-8");else{let{StringDecoder:t}=nk();this.decoder=new t("utf8")}}summary(){return`${this.upstream.summary()} -> Utf8`}async pump(){let e=await this.upstream.next(),t;if(e.done)return!1;t=e.value;let n;return J().get("IS_BROWSER")?n=this.decoder.decode(t,{stream:!0}):n=this.decoder.write(Buffer.from(t.buffer)),this.outputQueue.push(n),!0}},u6=class extends Aae{constructor(e,t={}){super();this.file=e,this.options=t,v.assert(e instanceof Uint8Array||(J().get("IS_BROWSER")?e instanceof File||e instanceof Blob:!1),()=>"FileChunkIterator only supports File, Blob and Uint8Array right now."),this.offset=t.offset||0,this.chunkSize=t.chunkSize||1024*1024}summary(){return`FileChunks ${this.file}`}async next(){return this.offset>=(this.file instanceof Uint8Array?this.file.byteLength:this.file.size)?{value:null,done:!0}:{value:await new Promise((e,t)=>{let n=this.offset+this.chunkSize;if(this.file instanceof Uint8Array)e(new Uint8Array(this.file.slice(this.offset,n)));else{let r=new FileReader;r.onload=s=>{let i=r.result;if(i instanceof ArrayBuffer&&(i=new Uint8Array(i)),!(i instanceof Uint8Array))return t(new TypeError("FileReader returned unknown type."));e(i)},r.onabort=s=>t(new Error("Aborted")),r.onerror=s=>t(new Error(s.type));let a=this.file.slice(this.offset,n);r.readAsArrayBuffer(a)}this.offset=n}),done:!1}}};async function xae(e,t={}){let n,r;typeof e=="string"?n=e:(n=e.url,r=gae(e));let a=await v.fetch(n,r);if(a.ok){let s=new Uint8Array(await a.arrayBuffer());return new u6(s,t)}else throw new Error(a.statusText)}var gae=e=>({method:e.method,headers:e.headers,body:e.body,mode:e.mode,credentials:e.credentials,cache:e.cache,redirect:e.redirect,referrer:e.referrer,integrity:e.integrity});function c6(e){return typeof e=="string"&&e.substr(0,7)==="file://"}var qv=class extends o6{constructor(e,t={}){super();this.input=e,this.options=t}async iterator(){if(c6(this.input)&&J().get("IS_NODE")){let e=require("fs");this.input=e.readFileSync(this.input.substr(7))}return new u6(this.input,this.options)}},Xv=class extends o6{constructor(e,t={}){super();this.url=e,this.fileOptions=t}async iterator(){return c6(this.url)?new qv(this.url,this.fileOptions).iterator():xae(this.url,this.fileOptions)}};function zre(e,t={}){return new Gv(new Xv(e),t)}function Pre(e){let t=d2(e);return Bn(async()=>t)}function Lre(e){return Bn(async()=>{let t=await e();return d2(()=>t.next())})}async function Wre(e,t){return i6.create(e,t)}async function Bre(e){return s6.create(e)}var Vre="3.3.0",wae={tfjs:rk,"tfjs-core":ak,"tfjs-data":sk,"tfjs-layers":ik,"tfjs-converter":ok,"tfjs-backend-cpu":cw,"tfjs-backend-webgl":F_,"tfjs-backend-wasm":b3};var Vn={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function h6(){if(!$f(Vn.name)){Ce("backend registration:",Vn.name);try{Vn.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Vn.width,Vn.height):document.createElement("canvas")}catch(e){Ce("error: cannot create canvas:",e);return}try{Vn.gl=Vn.canvas.getContext("webgl2",Vn.webGLattr)}catch(e){Ce("error: cannot get WebGL2 context:",e);return}try{sp(2,Vn.gl)}catch(e){Ce("error: cannot set WebGL2 context:",e);return}try{let e=new up(Vn.gl);sl(Vn.name,()=>new El(e),Vn.priority)}catch(e){Ce("error: cannot register WebGL backend:",e);return}try{Yo("webgl").forEach(t=>{let n={...t,backendName:Vn.name};ni(n)})}catch(e){Ce("error: cannot update WebGL backend registration:",e);return}try{fr.set("WEBGL_VERSION",2)}catch(e){Ce("error: cannot set WebGL backend flags:",e);return}Ce("backend registered:",Vn.name)}}var d6=6;function _ae(e){let t={strides:[e/16,e/8],anchors:[2,6]},n=[];for(let r=0;r({startEndTensor:e,startPoint:Re(e,[0,0],[-1,2]),endPoint:Re(e,[0,2],[-1,2])});function vae(e,t,n){let r=Re(e,[0,1],[-1,2]),a=se(r,t),s=Re(e,[0,3],[-1,2]),i=ge(s,n),o=ge(a,n),l=ge(i,2),u=ye(o,l),c=se(o,l),h=P(u,n),d=P(c,n);return ll([h,d],1)}var p6=class{constructor(t,n){this.model=t,this.anchorsData=_ae(t.inputs[0].shape[1]),this.anchors=Nn(this.anchorsData),this.inputSize=t.inputs[0].shape[2],this.config=n}async getBoundingBoxes(t){if(!t||t.isDisposedInternal||t.shape.length!==4||t.shape[1]<1||t.shape[2]<1)return null;let[n,r,a]=B(()=>{let d=t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),p=this.model.predict(d),f;if(Array.isArray(p)){let g=p.sort((x,I)=>x.size-I.size),_=st([g[0],g[2]],2),b=st([g[1],g[3]],2);f=st([b,_],1).squeeze(0)}else f=p.squeeze();let m=vae(f,this.anchors,[this.inputSize,this.inputSize]),A=Re(f,[0,0],[-1,1]),y=Fn(A).squeeze();return[f,m,y]}),s=await Je.nonMaxSuppressionAsync(r,a,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),i=s.arraySync();s.dispose();let l=i.map(h=>Re(r,[h,0],[1,-1])).map(h=>{let d=h.arraySync();return h.dispose(),d}),u=a.dataSync(),c=[];for(let h=0;hthis.config.face.detector.minConfidence){let f=bae(l[h]),m=this.anchorsData[d],A=B(()=>Re(n,[d,d6-1],[1,-1]).squeeze().reshape([d6,-1]));c.push({box:f,landmarks:A,anchor:m,confidence:p})}}return n.dispose(),r.dispose(),a.dispose(),{boxes:c,scaleFactor:[t.shape[2]/this.inputSize,t.shape[1]/this.inputSize]}}};async function f6(e){let t=await Ft(e.face.detector.modelPath,{fromTFHub:e.face.detector.modelPath.includes("tfhub.dev")}),n=new p6(t,e);return e.debug&&Ce(`load model: ${e.face.detector.modelPath.match(/\/(.*)\./)[1]}`),n}function m6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]];return{startPoint:n,endPoint:r}}function Lc(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Hl(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function jl(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function l0(e,t=1.5){let n=Hl(e),r=Lc(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}function u0(e){let t=Hl(e),n=Lc(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,landmarks:e.landmarks}}var c0=[[1,0,0],[0,1,0],[0,0,1]];function kae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function m2(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return kae(n)}function A6(e,t){return[[1,0,e],[0,1,t],[0,0,1]]}function Ya(e,t){let n=0;for(let r=0;ry2[e]),Qce=Sae.map(e=>y2[e]),ehe=Tae.map(e=>y2[e]);var g2=Gr.leftEyeLower0,x2=Gr.rightEyeLower0,Gl={leftBounds:[g2[0],g2[g2.length-1]],rightBounds:[x2[0],x2[x2.length-1]]},d0={count:468,mouth:13,symmetryLine:[13,Gr.midwayBetweenEyes[0]]},w6={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},ql={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function p0(e,t,n,r){for(let a=0;a[s[0]/this.meshSize*(h[0]-this.meshSize/2),s[1]/this.meshSize*(h[1]-this.meshSize/2),h[2]]),o=r!==0?h0(r,[0,0]):c0,l=r!==0?i.map(h=>[...x6(h,o),h[2]]):i,u=r!==0?g6(a):c0,c=[...Hl({startPoint:n.startPoint,endPoint:n.endPoint}),1];return l.map(h=>[h[0]+Ya(c,u[0]),h[1]+Ya(c,u[1]),h[2]])}getLeftToRightEyeDepthDifference(t){let n=t[Gl.leftBounds[0]][2],r=t[Gl.rightBounds[0]][2];return n-r}getEyeBox(t,n,r,a,s=!1){let i=u0(l0(this.calculateLandmarksBoundingBox([t[r],t[a]]),this.irisEnlarge)),o=Lc(i),l=Je.cropAndResize(n,[[i.startPoint[1]/this.meshSize,i.startPoint[0]/this.meshSize,i.endPoint[1]/this.meshSize,i.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return s&&fr.flags.IS_BROWSER&&(l=Je.flipLeftRight(l)),{box:i,boxSize:o,crop:l}}getEyeCoords(t,n,r,a=!1){let s=[];for(let i=0;i{let u=i;return l===2?u=a:l===4&&(u=s),[o[0],o[1],u]})}async predict(t,n){let r=!1,a;if((this.skipped===0||this.skipped>n.face.detector.skipFrames||!n.face.mesh.enabled||!n.videoOptimized)&&(a=await this.boundingBoxDetector.getBoundingBoxes(t),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.boxes&&(!n.face.mesh.enabled||a.boxes.length!==this.detectedFaces&&this.detectedFaces!==n.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let i of a.boxes)this.storedBoxes.push({startPoint:i.box.startPoint.dataSync(),endPoint:i.box.endPoint.dataSync(),landmarks:i.landmarks,confidence:i.confidence});this.storedBoxes.length>0&&(r=!0)}if(n.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),r){if(!a||!a.boxes||a.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let i=0;i{i.box.startPoint.dispose(),i.box.endPoint.dispose(),i.landmarks.dispose()});let s=B(()=>this.storedBoxes.map((i,o)=>{let l=i.confidence,u,c=0,h;if(n.face.detector.rotation&&n.face.mesh.enabled&&fr.flags.IS_BROWSER){let[w,x]=i.landmarks.length>=d0.count?d0.symmetryLine:w6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.boxSize,this.boxSize]).div(255)}else{h=c0;let w=t.clone();n.face.mesh.enabled?u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.meshSize,this.meshSize]).div(255):u=jl({startPoint:i.startPoint,endPoint:i.endPoint},w,[this.boxSize,this.boxSize]).div(255)}if(!n.face.mesh.enabled)return{coords:null,box:i,faceConfidence:null,boxConfidence:i.confidence,confidence:i.confidence,image:u};let[,d,p]=this.meshDetector.predict(u),f=d.dataSync()[0];if(f=d0.count?d0.symmetryLine:w6.symmetryLine;c=m2(i.landmarks[w],i.landmarks[x]);let I=Hl({startPoint:i.startPoint,endPoint:i.endPoint}),S=[I[0]/t.shape[2],I[1]/t.shape[1]],T=Je.rotateWithOffset(t,c,0,S);h=h0(-c,I),u=jl({startPoint:i.startPoint,endPoint:i.endPoint},T,[this.meshSize,this.meshSize]).div(255)}let _={coords:g,box:i,faceConfidence:f,boxConfidence:l,image:u,rawCoords:A},b=u0(i);return this.storedBoxes[o]={...b,landmarks:y,confidence:i.confidence,faceConfidence:f},_}));return s=s.filter(i=>i!==null),n.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(i=>i.faceConfidence>n.face.detector.minConfidence)),this.detectedFaces=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s,landmarks:t}}};var yg=Ah(b6());var v2={};er(v2,{load:()=>k2,predict:()=>N2});var b2={};function qr(e,t){if(!t||!t.kernels)return;let n=5,r=t.kernels.filter(o=>o.kernelTimeMs>0).reduce((o,l)=>o+=l.kernelTimeMs,0),a=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.kernelTimeMs>0).sort((o,l)=>l.kernelTimeMs-o.kernelTimeMs),s=t.kernels.map((o,l)=>(o.id=l,o)).filter(o=>o.totalBytesSnapshot>0).sort((o,l)=>l.totalBytesSnapshot-o.totalBytesSnapshot);a.length>n&&(a.length=n),s.length>n&&(s.length=n);let i={newBytes:t.newBytes,newTensors:t.newTensors,peakBytes:t.peakBytes,numKernelOps:t.kernels.length,timeKernelOps:r,slowestKernelOps:a,largestKernelOps:s};b2[e]=i,Ce("Human profiler",e,i)}var Ja,f0={age:0},m0=Number.MAX_SAFE_INTEGER;async function k2(e){return Ja||(Ja=await Ft(e.face.age.modelPath),e.debug&&Ce(`load model: ${e.face.age.modelPath.match(/\/(.*)\./)[1]}`)),Ja}async function N2(e,t){return Ja?m00?(m0++,f0):(t.videoOptimized?m0=0:m0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Ja.inputs[0].shape[2],Ja.inputs[0].shape[1]],!1),a=P(r,[255]);Ee(r);let s,i={age:0};if(!t.profile)t.face.age.enabled&&(s=await Ja.predict(a));else{let o=t.face.age.enabled?await gr(()=>Ja.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("age",o)}if(a.dispose(),s){let o=s.dataSync();i.age=Math.trunc(10*o[0])/10}s.dispose(),f0=i,n(i)})):null}var I2={};er(I2,{load:()=>E2,predict:()=>R2});var fa,S2={gender:""},A0=Number.MAX_SAFE_INTEGER,T2=!1,C2=[.2989,.587,.114];async function E2(e){return fa||(fa=await Ft(e.face.gender.modelPath),T2=fa.inputs[0].shape[3]===1,e.debug&&Ce(`load model: ${e.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),fa}async function R2(e,t){return fa?A0{let r=Je.resizeBilinear(e,[fa.inputs[0].shape[2],fa.inputs[0].shape[1]],!1),a;T2?a=B(()=>{let[o,l,u]=Lt(r,3,3),c=P(o,C2[0]),h=P(l,C2[1]),d=P(u,C2[2]);return Ma([c,h,d]).sub(.5).mul(2)}):a=P(r,[255]),Ee(r);let s,i={gender:"",confidence:0};if(!t.profile)t.face.gender.enabled&&(s=await fa.predict(a));else{let o=t.face.gender.enabled?await gr(()=>fa.predict(a)):{};s=o.result.clone(),o.result.dispose(),qr("gender",o)}if(a.dispose(),s){let o=s.dataSync();if(T2)(o[0]>t.face.gender.minConfidence||o[1]>t.face.gender.minConfidence)&&(i.gender=o[0]>o[1]?"female":"male",i.confidence=o[0]>o[1]?Math.trunc(100*o[0])/100:Math.trunc(100*o[1])/100);else{let l=Math.trunc(200*Math.abs(o[0]-.5))/100;l>t.face.gender.minConfidence&&(i.gender=o[0]<=.5?"female":"male",i.confidence=Math.min(.99,l))}}s.dispose(),S2=i,n(i)})):null}var F2={};er(F2,{load:()=>D2,predict:()=>O2});var Eae=["angry","disgust","fear","happy","sad","surprise","neutral"],Qa,M2=[],y0=Number.MAX_SAFE_INTEGER,$2=[.2989,.587,.114];async function D2(e){return Qa||(Qa=await Ft(e.face.emotion.modelPath),e.debug&&Ce(`load model: ${e.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),Qa}async function O2(e,t){return Qa?y00?(y0++,M2):(t.videoOptimized?y0=0:y0=Number.MAX_SAFE_INTEGER,new Promise(async n=>{let r=Je.resizeBilinear(e,[Qa.inputs[0].shape[2],Qa.inputs[0].shape[1]],!1),[a,s,i]=Lt(r,3,3);r.dispose();let o=P(a,$2[0]),l=P(s,$2[1]),u=P(i,$2[2]);a.dispose(),s.dispose(),i.dispose();let c=Ma([o,l,u]);o.dispose(),l.dispose(),u.dispose();let h=B(()=>c.sub(.5).mul(2));c.dispose();let d=[];if(t.face.emotion.enabled){let p;if(t.profile){let f=await gr(()=>Qa.predict(h));p=f.result.dataSync(),f.result.dispose(),qr("emotion",f)}else{let f=await Qa.predict(h);p=f.dataSync(),Ee(f)}for(let f=0;ft.face.emotion.minConfidence&&d.push({score:Math.min(.99,Math.trunc(100*p[f])/100),emotion:Eae[f]});d.sort((f,m)=>m.score-f.score)}h.dispose(),M2=d,n(d)})):null}var Xr;async function z2(e){return Xr||(Xr=await Ft(e.face.embedding.modelPath),e.debug&&Ce(`load model: ${e.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),Xr}function P2(e,t,n=2){if(!e||!t||(e==null?void 0:e.length)===0||(t==null?void 0:t.length)===0||(e==null?void 0:e.length)!==(t==null?void 0:t.length))return 0;let r=e.map((s,i)=>Math.abs(e[i]-t[i])**n).reduce((s,i)=>s+i,0)**(1/n);return Math.max(Math.trunc(1e3*(1-r))/1e3,0)}function v6(e,t,n=0){let r={simmilarity:0,name:"",source:"",embedding:[]};if(!e||!t||!Array.isArray(e)||!Array.isArray(t))return r;for(let a of t)if(a.embedding&&a.name){let s=P2(e,a.embedding);s>n&&s>r.simmilarity&&(r={...a,simmilarity:s})}return r}function L2(e){return B(()=>{let n=[[.05,.15,.85,.85]],r=e.image||e.tensor;if(!(r instanceof Ue))return null;let a=r.shape.length===3?Je.cropAndResize(hn(r,0),n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]):Je.cropAndResize(r,n,[0],[Xr.inputs[0].shape[2],Xr.inputs[0].shape[1]]),s=[.2989,.587,.114],[i,o,l]=Lt(a,3,3),u=P(i,s[0]),c=P(o,s[1]),h=P(l,s[2]),d=Ma([u,c,h]),p=dn([d,d,d],3).squeeze(4),f=p.sub(p.min());return f.div(f.max())})}async function W2(e,t){return Xr?new Promise(async n=>{let r=[];if(t.face.embedding.enabled){let a=L2(e);if(!t.profile)r=B(()=>[...Xr.predict(a).reshape([128,2]).logSumExp(1).dataSync()]);else{let s=await gr(()=>Xr.predict({img_inputs:a}));r=[...s.result.dataSync()],s.result.dispose(),qr("emotion",s)}Ee(a)}n(r)}):[]}var J2={};er(J2,{PoseNet:()=>Q2,load:()=>eg});function Rae(e){let[t,n,r,a]=e;return{offsets:t,heatmap:n,displacementFwd:r,displacementBwd:a}}var B2=class{constructor(t){this.model=t}predict(t){return B(()=>{let r=t.toFloat().div(127.5).sub(1).expandDims(0),s=this.model.predict(r).map(o=>o.squeeze([0])),i=Rae(s);return{heatmapScores:i.heatmap.sigmoid(),offsets:i.offsets,displacementFwd:i.displacementFwd,displacementBwd:i.displacementBwd}})}dispose(){this.model.dispose()}};function V2(e){return Math.floor(e/2)}var U2=class{constructor(t,n){this.priorityQueue=new Array(t),this.numberOfElements=-1,this.getElementValue=n}enqueue(t){this.priorityQueue[++this.numberOfElements]=t,this.swim(this.numberOfElements)}dequeue(){let t=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,t}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(t){for(;t>0&&this.less(V2(t),t);)this.exchange(t,V2(t)),t=V2(t)}sink(t){for(;2*t<=this.numberOfElements;){let n=2*t;if(nt){l=!1;break}if(!l)break}return l}function k6(e,t,n){let[r,a,s]=n.shape,i=new U2(r*a*s,({score:o})=>o);for(let o=0;on?n:e}function I6(e,t,n,r){let a=n-e,s=r-t;return a*a+s*s}function X2(e,t){return{x:e.x+t.x,y:e.y+t.y}}var w0=Ah(g0());function S6(e,t){let n=t.shape[0],r=new Float32Array(n);for(let a=0;ae.toTensor().mul(be(t,"int32")).toFloat().add(Wae(e,n)))}function Bae(e,t){return B(()=>{let n=e.div(be(t,"int32"));return e.sub(n.mul(be(t,"int32")))})}function C6(e){let[t,n,r]=e.shape;return B(()=>{let s=e.reshape([t*n,r]).argMax(0),i=s.div(be(n,"int32")).expandDims(1),o=Bae(s,n).expandDims(1);return st([i,o],1)})}var E6=ma.poseChain.map(([e,t])=>[ma.partIds[e],ma.partIds[t]]),K2=E6.map(([,e])=>e),R6=E6.map(([e])=>e),Vae=16;function Uae(e,t,n){let r=n.shape[2]/2;return{y:n.get(t.y,t.x,e),x:n.get(t.y,t.x,r+e)}}function Z2(e,t,n,r){return{y:q2(Math.round(e.y/t),0,n-1),x:q2(Math.round(e.x/t),0,r-1)}}function F6(e,t,n,r,a,s,i,o=2){let[l,u]=r.shape,c=Z2(t.position,s,l,u),h=Uae(e,c,i),p=X2(t.position,h);for(let A=0;A=0;--d){let p=K2[d],f=R6[d];l[p]&&!l[f]&&(l[f]=F6(d,l[p],f,t,n,r,s))}for(let d=0;d(r+=f,{position:{y:c.get(m,0),x:c.get(m,1)},part:ma.partNames[m],score:f})),p=d.filter(f=>f.score>n);return a.dispose(),u.dispose(),{keypoints:p,score:r/d.length}}var Hae=1,D6=16;function O6(e,t,{x:n,y:r},a){return e.some(({keypoints:s})=>{let i=s[a].position;return I6(r,n,i.y,i.x)<=t})}function jae(e,t,n){return n.reduce((a,{position:s,score:i},o)=>(O6(e,t,s,o)||(a+=i),a),0)/n.length}function z6(e,t,n,r,a,s,i){let o=[],l=k6(i,Hae,e),u=a^2;for(;o.lengthi&&o.push({keypoints:d,score:p})}return o}async function P6(e){return Promise.all(e.map(t=>t.buffer()))}function Gae(e,t,n){return{score:e.score,keypoints:e.keypoints.map(({score:r,part:a,position:s})=>({score:r,part:a,position:{x:Math.trunc(s.x*n),y:Math.trunc(s.y*t)}}))}}function L6(e,[t,n]){let r=e.squeeze(0),a=r.resizeBilinear([t,n]);return r.dispose(),a}function Y2(e,[t,n],[r,a]){return e.map(i=>Gae(i,t/r,n/a))}async function qae(e,t,n,r){return new Promise(async a=>{let s=await P6([t.heatmapScores,t.offsets,t.displacementFwd,t.displacementBwd]),i=s[0],o=s[1],l=s[2],u=s[3],c=await z6(i,o,l,u,n.body.nmsRadius,n.body.maxDetections,n.body.scoreThreshold),h=Y2(c,[e.shape[1],e.shape[2]],[r,r]);a(h)})}async function Xae(e,t,n,r){return new Promise(async a=>{let s=await $6(t.heatmapScores,t.offsets,n.body.scoreThreshold),i=Y2([s],[e.shape[1],e.shape[2]],[r,r]);a(i)})}var Q2=class{constructor(t){this.baseModel=t,this.inputSize=t.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(t,n){let r=L6(t,[this.inputSize,this.inputSize]),a=this.baseModel.predict(r,n),s=n.body.maxDetections<2?await Xae(t,a,n,this.inputSize):await qae(t,a,n,this.inputSize);return a.heatmapScores.dispose(),a.offsets.dispose(),a.displacementFwd.dispose(),a.displacementBwd.dispose(),r.dispose(),s}dispose(){this.baseModel.dispose()}};async function eg(e){let t=await Ft(e.body.modelPath),n=new B2(t);return e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`),new Q2(n)}var sg={};er(sg,{HandPose:()=>og,load:()=>lg});function _0(e){return[Math.abs(e.endPoint[0]-e.startPoint[0]),Math.abs(e.endPoint[1]-e.startPoint[1])]}function Wc(e){return[e.startPoint[0]+(e.endPoint[0]-e.startPoint[0])/2,e.startPoint[1]+(e.endPoint[1]-e.startPoint[1])/2]}function W6(e,t,n){let r=t.shape[1],a=t.shape[2],s=[[e.startPoint[1]/r,e.startPoint[0]/a,e.endPoint[1]/r,e.endPoint[0]/a]];return Je.cropAndResize(t,s,[0],n)}function B6(e,t){let n=[e.startPoint[0]*t[0],e.startPoint[1]*t[1]],r=[e.endPoint[0]*t[0],e.endPoint[1]*t[1]],a=e.palmLandmarks.map(s=>[s[0]*t[0],s[1]*t[1]]);return{startPoint:n,endPoint:r,palmLandmarks:a,confidence:e.confidence}}function b0(e,t=1.5){let n=Wc(e),r=_0(e),a=[t*r[0]/2,t*r[1]/2],s=[n[0]-a[0],n[1]-a[1]],i=[n[0]+a[0],n[1]+a[1]];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}function v0(e){let t=Wc(e),n=_0(e),a=Math.max(...n)/2,s=[t[0]-a,t[1]-a],i=[t[0]+a,t[1]+a];return{startPoint:s,endPoint:i,palmLandmarks:e.palmLandmarks}}var tg=class{constructor(t,n,r){this.model=t,this.anchors=r.map(a=>[a.x_center,a.y_center]),this.anchorsTensor=Nn(this.anchors),this.inputSize=n,this.inputSizeTensor=on([n,n]),this.doubleInputSizeTensor=on([n*2,n*2])}normalizeBoxes(t){return B(()=>{let n=Re(t,[0,0],[-1,2]),r=Re(t,[0,2],[-1,2]),a=se(ge(n,this.inputSizeTensor),this.anchorsTensor),s=ge(r,this.doubleInputSizeTensor),i=P(ye(a,s),this.inputSizeTensor),o=P(se(a,s),this.inputSizeTensor);return ll([i,o],1)})}normalizeLandmarks(t,n){return B(()=>{let r=se(ge(t.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[n]);return P(r,this.inputSizeTensor)})}async getBoxes(t,n){let r=this.model.predict(t),a=r.squeeze();r.dispose();let s=B(()=>Fn(Re(a,[0,0],[-1,1])).squeeze()),i=s.dataSync(),o=Re(a,[0,1],[-1,4]),l=this.normalizeBoxes(o);o.dispose();let u=await Je.nonMaxSuppressionAsync(l,i,n.hand.maxHands,n.hand.iouThreshold,n.hand.scoreThreshold),c=u.arraySync();s.dispose(),u.dispose();let h=[];for(let d of c)if(i[d]>=n.hand.minConfidence){let p=Re(l,[d,0],[1,-1]),f=Re(a,[d,5],[1,14]),m=B(()=>this.normalizeLandmarks(f,d).reshape([-1,2]));f.dispose(),h.push({box:p,palmLandmarks:m,confidence:i[d]})}return a.dispose(),l.dispose(),h}async estimateHandBounds(t,n){let r=t.shape[1],a=t.shape[2],s=B(()=>t.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),i=await this.getBoxes(s,n);s.dispose();let o=[];if(!i||i.length===0)return o;for(let l of i){let u=l.box.dataSync(),c=u.slice(0,2),h=u.slice(2,4),d=l.palmLandmarks.arraySync();l.box.dispose(),l.palmLandmarks.dispose(),o.push(B6({startPoint:c,endPoint:h,palmLandmarks:d,confidence:l.confidence},[a/this.inputSize,r/this.inputSize]))}return o}};function Kae(e){return e-2*Math.PI*Math.floor((e+Math.PI)/(2*Math.PI))}function V6(e,t){let n=Math.PI/2-Math.atan2(-(t[1]-e[1]),t[0]-e[0]);return Kae(n)}var U6=(e,t)=>[[1,0,e],[0,1,t],[0,0,1]];function es(e,t){let n=0;for(let r=0;rrg([...s,1],n)),a=this.calculateLandmarksBoundingBox(r);return b0(v0(a),Yae)}getBoxForHandLandmarks(t){let n=this.calculateLandmarksBoundingBox(t),r=b0(v0(n),G6);r.palmLandmarks=[];for(let a=0;a[i[0]*(p[0]-this.inputSize/2),i[1]*(p[1]-this.inputSize/2),i[2]*p[2]]),l=ng(r,[0,0]),u=o.map(p=>[...rg(p,l),p[2]]),c=j6(a),h=[...Wc(n),1],d=[es(h,c[0]),es(h,c[1])];return u.map(p=>[p[0]+d[0],p[1]+d[1],p[2]])}async estimateHands(t,n){let r=!1,a;(this.skipped===0||this.skipped>n.hand.skipFrames||!n.hand.landmarks||!n.videoOptimized)&&(a=await this.handDetector.estimateHandBounds(t,n),this.skipped=0),n.videoOptimized&&this.skipped++,a&&a.length>0&&(a.length!==this.detectedHands&&this.detectedHands!==n.hand.maxHands||!n.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...a],this.storedBoxes.length>0&&(r=!0));let s=[];n.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let i=0;i=n.hand.minConfidence){let _=G(y,[-1,3]),b=_.arraySync();y.dispose(),_.dispose();let w=this.transformRawCoords(b,p,l,d),x=this.getBoxForHandLandmarks(w);this.storedBoxes[i]=x;let I={landmarks:w,confidence:g,box:{topLeft:x.startPoint,bottomRight:x.endPoint}};s.push(I)}else this.storedBoxes[i]=null;y.dispose()}else{let l=b0(v0(o),G6),u={confidence:o.confidence,box:{topLeft:l.startPoint,bottomRight:l.endPoint}};s.push(u)}}return this.storedBoxes=this.storedBoxes.filter(i=>i!==null),this.detectedHands=s.length,s}calculateLandmarksBoundingBox(t){let n=t.map(i=>i[0]),r=t.map(i=>i[1]),a=[Math.min(...n),Math.min(...r)],s=[Math.max(...n),Math.max(...r)];return{startPoint:a,endPoint:s}}};var X6=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var ig={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},og=class{constructor(t){this.handPipeline=t}static getAnnotations(){return ig}async estimateHands(t,n){let r=await this.handPipeline.estimateHands(t,n);if(!r)return[];let a=[];for(let s of r){let i={};if(s.landmarks)for(let l of Object.keys(ig))i[l]=ig[l].map(u=>s.landmarks[u]);let o=s.box?[Math.max(0,s.box.topLeft[0]),Math.max(0,s.box.topLeft[1]),Math.min(t.shape[2],s.box.bottomRight[0])-s.box.topLeft[0],Math.min(t.shape[1],s.box.bottomRight[1])-s.box.topLeft[1]]:0;a.push({confidence:s.confidence,box:o,landmarks:s.landmarks,annotations:i})}return a}};async function lg(e){let[t,n]=await Promise.all([e.hand.enabled?Ft(e.hand.detector.modelPath,{fromTFHub:e.hand.detector.modelPath.includes("tfhub.dev")}):null,e.hand.landmarks?Ft(e.hand.skeleton.modelPath,{fromTFHub:e.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),r=new tg(t,t==null?void 0:t.inputs[0].shape[2],X6),a=new ag(r,n,n==null?void 0:n.inputs[0].shape[2]),s=new og(a);return e.hand.enabled&&e.debug&&Ce(`load model: ${e.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),e.hand.landmarks&&e.debug&&Ce(`load model: ${e.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),s}var ug={};er(ug,{load:()=>cg,predict:()=>hg});var K6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],Z6=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var dr;async function cg(e){return dr||(dr=await Ft(e.body.modelPath),dr.width=parseInt(dr.signature.inputs["input_1:0"].tensorShape.dim[2].size),dr.height=parseInt(dr.signature.inputs["input_1:0"].tensorShape.dim[1].size),e.debug&&Ce(`load model: ${e.body.modelPath.match(/\/(.*)\./)[1]}`)),dr}async function hg(e,t){if(!dr||!t.body.enabled)return null;let n={width:e.shape[2],height:e.shape[1]},r=Je.resizeBilinear(e,[dr.width,dr.height],!1),a=ge(r,[255]);r.dispose();let s;if(t.profile){let u=await gr(()=>dr.predict(a));s=u.result.find(c=>c.size===195||c.size===155).dataSync(),u.result.forEach(c=>c.dispose()),qr("blazepose",u)}else{let u=await dr.predict(a);s=u.find(c=>c.size===195||c.size===155).dataSync(),u.forEach(c=>c.dispose())}a.dispose();let i=[],o=s.length===195?K6:Z6,l=5;for(let u=0;u{if(!e)return[];let t=[];for(let n=0;nl.part==="leftWrist"),a=e[n].keypoints.find(l=>l.part==="rightWrist"),s=e[n].keypoints.find(l=>l.part==="nose");s&&r&&a&&r.position.yl.part==="leftShoulder"),o=e[n].keypoints.find(l=>l.part==="rightShoulder");i&&o&&t.push({body:n,gesture:`leaning ${i.position.y>o.position.y?"left":"right"}`})}return t},J6=e=>{if(!e)return[];let t=[];for(let n=0;n0){let r=e[n].mesh[33][2]-e[n].mesh[263][2];Math.abs(r)<10?t.push({face:n,gesture:"facing camera"}):t.push({face:n,gesture:`facing ${r<0?"right":"left"}`}),Math.abs(e[n].mesh[374][1]-e[n].mesh[386][1])/Math.abs(e[n].mesh[443][1]-e[n].mesh[450][1])<.2&&t.push({face:n,gesture:"blink left eye"}),Math.abs(e[n].mesh[145][1]-e[n].mesh[159][1])/Math.abs(e[n].mesh[223][1]-e[n].mesh[230][1])<.2&&t.push({face:n,gesture:"blink right eye"});let i=Math.min(100,500*Math.abs(e[n].mesh[13][1]-e[n].mesh[14][1])/Math.abs(e[n].mesh[10][1]-e[n].mesh[152][1]));i>10&&t.push({face:n,gesture:`mouth ${Math.trunc(i)}% open`});let o=e[n].mesh[152][2];Math.abs(o)>10&&t.push({face:n,gesture:`head ${o<0?"up":"down"}`})}return t},Q6=e=>{if(!e)return[];let t=[];for(let n=0;n{if(!e)return[];let t=[];for(let n=0;n0){let a=r.reduce((i,o)=>i.position[2]i.position[1](u[d]=0,h))},a=function(o,l){let u=e.createShader(l);if(e.shaderSource(u,o),e.compileShader(u),!e.getShaderParameter(u,e.COMPILE_STATUS))throw new Error("Filter: GL compile failed",e.getShaderInfoLog(u));return u};this.uniform={},this.attribute={};let s=a(t,e.VERTEX_SHADER),i=a(n,e.FRAGMENT_SHADER);if(this.id=e.createProgram(),e.attachShader(this.id,s),e.attachShader(this.id,i),e.linkProgram(this.id),!e.getProgramParameter(this.id,e.LINK_STATUS))throw new Error("Filter: GL link failed",e.getProgramInfoLog(this.id));e.useProgram(this.id),r(t,"attribute",this.attribute);for(let o in this.attribute)this.attribute[o]=e.getAttribLocation(this.id,o);r(t,"uniform",this.uniform),r(n,"uniform",this.uniform);for(let o in this.uniform)this.uniform[o]=e.getUniformLocation(this.id,o)}function t4(e){e||(e={});let t=0,n=null,r=!1,a=-1,s=[null,null],i=[],o=-1,l=-1,u=null,c=null,h={},d=e.canvas||document.createElement("canvas"),p={},f={INTERMEDIATE:1},m=d.getContext("webgl");if(!m)throw new Error("Filter: getContext() failed");this.addFilter=function(w){let x=Array.prototype.slice.call(arguments,1),I=h[w];i.push({func:I,args:x})},this.reset=function(){i=[]};let A=function(w,x){if(!(w===o&&x===l)){if(d.width=w,o=w,d.height=x,l=x,!u){let I=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);u=m.createBuffer(),m.bindBuffer(m.ARRAY_BUFFER,u),m.bufferData(m.ARRAY_BUFFER,I,m.STATIC_DRAW),m.pixelStorei(m.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}m.viewport(0,0,o,l),s=[null,null]}},y=function(w,x){let I=m.createFramebuffer();m.bindFramebuffer(m.FRAMEBUFFER,I);let S=m.createRenderbuffer();m.bindRenderbuffer(m.RENDERBUFFER,S);let T=m.createTexture();return m.bindTexture(m.TEXTURE_2D,T),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,w,x,0,m.RGBA,m.UNSIGNED_BYTE,null),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.LINEAR),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,m.TEXTURE_2D,T,0),m.bindTexture(m.TEXTURE_2D,null),m.bindFramebuffer(m.FRAMEBUFFER,null),{fbo:I,texture:T}},g=function(w){return s[w]=s[w]||y(o,l),s[w]},_=function(w=null){var T,M;let x=null,I=null,S=!1;t===0?x=n:x=(T=g(a))==null?void 0:T.texture,t++,r&&!(w&f.INTERMEDIATE)?(I=null,S=t%2==0):(a=(a+1)%2,I=(M=g(a))==null?void 0:M.fbo),m.bindTexture(m.TEXTURE_2D,x),m.bindFramebuffer(m.FRAMEBUFFER,I),m.uniform1f(c.uniform.flipY,S?-1:1),m.drawArrays(m.TRIANGLES,0,6)};this.apply=function(w){if(A(w.width,w.height),t=0,n||(n=m.createTexture()),m.bindTexture(m.TEXTURE_2D,n),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_S,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_WRAP_T,m.CLAMP_TO_EDGE),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MIN_FILTER,m.NEAREST),m.texParameteri(m.TEXTURE_2D,m.TEXTURE_MAG_FILTER,m.NEAREST),m.texImage2D(m.TEXTURE_2D,0,m.RGBA,m.RGBA,m.UNSIGNED_BYTE,w),i.length===0)return _(),d;for(let x=0;x0,s=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0,i=a,o=s;if(i>k0&&(i=k0,o=i*s/a),o>k0&&(o=k0,i=o*a/s),t.filter.width>0?i=t.filter.width:t.filter.height>0&&(i=a*(t.filter.height/s)),t.filter.height>0?o=t.filter.height:t.filter.width>0&&(o=s*(t.filter.width/a)),!i||!o)return Ce("Human: invalid input",e),{tensor:null,canvas:null};(!Ct||Ct.width!==i||Ct.height!==o)&&(Ct=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas"),Ct.width!==i&&(Ct.width=i),Ct.height!==o&&(Ct.height=o));let l=Ct.getContext("2d");if(e instanceof ImageData?l.putImageData(e,0,0):l.drawImage(e,0,0,a,s,0,0,Ct.width,Ct.height),t.filter.enabled){if((!Mt||!rn||Ct.width!==rn.width||Ct.height!==rn.height)&&(rn=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Ct.width,Ct.height):document.createElement("canvas"),rn.width!==Ct.width&&(rn.width=Ct.width),rn.height!==Ct.height&&(rn.height=Ct.height),Mt=fr.flags.IS_BROWSER?new e4({canvas:rn}):null),!Mt)return{tensor:null,canvas:Ct};Mt.reset(),Mt.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&Mt.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&Mt.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&Mt.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&Mt.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&Mt.addFilter("hue",t.filter.hue),t.filter.negative&&Mt.addFilter("negative"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.vintage&&Mt.addFilter("brownie"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.kodachrome&&Mt.addFilter("kodachrome"),t.filter.technicolor&&Mt.addFilter("technicolor"),t.filter.polaroid&&Mt.addFilter("polaroid"),t.filter.pixelate!==0&&Mt.addFilter("pixelate",t.filter.pixelate),Mt.apply(Ct)}else rn=Ct,Mt&&(Mt=null);let u;if(rn.data){let h=[rn.height,rn.width,3];u=ld(rn.data,h,"int32")}else if(t.backend==="webgl"||rn instanceof ImageData)u=rl.fromPixels(rn);else{let h=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas");h.width=i,h.height=o;let d=h.getContext("2d");d==null||d.drawImage(rn,0,0);let p=d==null?void 0:d.getImageData(0,0,i,o);u=rl.fromPixels(p)}let c=u.toFloat();n=c.expandDims(0),u.dispose(),c.dispose()}let r=t.filter.return?rn:null;return{tensor:n,canvas:r}}var mt={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var N0=` +`)}var k0=2048,Ct=null,rn=null,Mt=null;function dg(e,t){let n;if(e instanceof Ue)n=Rr(e);else{let a=e.naturalWidth||e.videoWidth||e.width||e.shape&&e.shape[1]>0,s=e.naturalHeight||e.videoHeight||e.height||e.shape&&e.shape[2]>0,i=a,o=s;if(i>k0&&(i=k0,o=i*s/a),o>k0&&(o=k0,i=o*a/s),t.filter.width>0?i=t.filter.width:t.filter.height>0&&(i=a*(t.filter.height/s)),t.filter.height>0?o=t.filter.height:t.filter.width>0&&(o=s*(t.filter.width/a)),!i||!o)return Ce("Human: invalid input",e),{tensor:null,canvas:null};(!Ct||Ct.width!==i||Ct.height!==o)&&(Ct=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas"),Ct.width!==i&&(Ct.width=i),Ct.height!==o&&(Ct.height=o));let l=Ct.getContext("2d");if(e instanceof ImageData?l.putImageData(e,0,0):l.drawImage(e,0,0,a,s,0,0,Ct.width,Ct.height),t.filter.enabled){if((!Mt||!rn||Ct.width!==rn.width||Ct.height!==rn.height)&&(rn=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Ct.width,Ct.height):document.createElement("canvas"),rn.width!==Ct.width&&(rn.width=Ct.width),rn.height!==Ct.height&&(rn.height=Ct.height),Mt=fr.flags.IS_BROWSER?new t4({canvas:rn}):null),!Mt)return{tensor:null,canvas:Ct};Mt.reset(),Mt.addFilter("brightness",t.filter.brightness),t.filter.contrast!==0&&Mt.addFilter("contrast",t.filter.contrast),t.filter.sharpness!==0&&Mt.addFilter("sharpen",t.filter.sharpness),t.filter.blur!==0&&Mt.addFilter("blur",t.filter.blur),t.filter.saturation!==0&&Mt.addFilter("saturation",t.filter.saturation),t.filter.hue!==0&&Mt.addFilter("hue",t.filter.hue),t.filter.negative&&Mt.addFilter("negative"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.vintage&&Mt.addFilter("brownie"),t.filter.sepia&&Mt.addFilter("sepia"),t.filter.kodachrome&&Mt.addFilter("kodachrome"),t.filter.technicolor&&Mt.addFilter("technicolor"),t.filter.polaroid&&Mt.addFilter("polaroid"),t.filter.pixelate!==0&&Mt.addFilter("pixelate",t.filter.pixelate),Mt.apply(Ct)}else rn=Ct,Mt&&(Mt=null);let u;if(rn.data){let h=[rn.height,rn.width,3];u=ld(rn.data,h,"int32")}else if(t.backend==="webgl"||rn instanceof ImageData)u=rl.fromPixels(rn);else{let h=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(i,o):document.createElement("canvas");h.width=i,h.height=o;let d=h.getContext("2d");d==null||d.drawImage(rn,0,0);let p=d==null?void 0:d.getImageData(0,0,i,o);u=rl.fromPixels(p)}let c=u.toFloat();n=c.expandDims(0),u.dispose(),c.dispose()}let r=t.filter.return?rn:null;return{tensor:n,canvas:r}}var mt={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var N0=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -4889,7 +4889,7 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var dg={};er(dg,{author:()=>l4,browser:()=>i4,bugs:()=>u4,default:()=>ese,description:()=>n4,devDependencies:()=>A4,engines:()=>d4,homepage:()=>c4,keywords:()=>m4,license:()=>h4,main:()=>a4,module:()=>s4,name:()=>t4,repository:()=>p4,scripts:()=>f4,sideEffects:()=>r4,types:()=>o4,version:()=>pg});var t4="@vladmandic/human",pg="1.1.4",n4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",r4=!1,a4="dist/human.node.js",s4="dist/human.esm.js",i4="dist/human.esm.js",o4="types/src/human.d.ts",l4="Vladimir Mandic ",u4={url:"https://github.com/vladmandic/human/issues"},c4="https://vladmandic.github.io/human/demo/index.html",h4="MIT",d4={node:">=12.0.0"},p4={type:"git",url:"git+https://github.com/vladmandic/human.git"},f4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},m4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],A4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},ese={name:t4,version:pg,description:n4,sideEffects:r4,main:a4,module:s4,browser:i4,types:o4,author:l4,bugs:u4,homepage:c4,license:h4,engines:d4,repository:p4,scripts:f4,keywords:m4,devDependencies:A4};var fg={};er(fg,{all:()=>nse,body:()=>w4,canvas:()=>tse,drawOptions:()=>ce,face:()=>x4,gesture:()=>g4,hand:()=>_4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function y4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function mg(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){mg(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function x4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&y4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);mg(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&mg(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function _4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,y4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function tse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function nse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(x4(e,t.face),w4(e,t.body),_4(e,t.hand),g4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,yg=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&c6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?L2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await L2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=fg,ea(this,C0,dg),this.version=pg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>hg(n,this.config),this.classes={facemesh:Ag,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?Y2:lg,hand:ag},this.sysinfo=Fg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?b6(t,n):0}enhance(t){return this.config.face.embedding.enabled?P2(t):null}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?Ag.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?og(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Q2(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?ug(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await Ag.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await og(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Q2(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await ug(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=hg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?cg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await cg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...Y6(c),...Z6(l),...Q6(u),...J6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;return rse;})(); +2Q==`;var pg={};er(pg,{author:()=>u4,browser:()=>o4,bugs:()=>c4,default:()=>tse,description:()=>r4,devDependencies:()=>y4,engines:()=>p4,homepage:()=>h4,keywords:()=>A4,license:()=>d4,main:()=>s4,module:()=>i4,name:()=>n4,repository:()=>f4,scripts:()=>m4,sideEffects:()=>a4,types:()=>l4,version:()=>fg});var n4="@vladmandic/human",fg="1.1.5",r4="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",a4=!1,s4="dist/human.node.js",i4="dist/human.esm.js",o4="dist/human.esm.js",l4="types/src/human.d.ts",u4="Vladimir Mandic ",c4={url:"https://github.com/vladmandic/human/issues"},h4="https://vladmandic.github.io/human/demo/index.html",d4="MIT",p4={node:">=12.0.0"},f4={type:"git",url:"git+https://github.com/vladmandic/human.git"},m4={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},A4=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],y4={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},tse={name:n4,version:fg,description:r4,sideEffects:a4,main:s4,module:i4,browser:o4,types:l4,author:u4,bugs:c4,homepage:h4,license:d4,engines:p4,repository:f4,scripts:m4,keywords:A4,devDependencies:y4};var mg={};er(mg,{all:()=>rse,body:()=>_4,canvas:()=>nse,drawOptions:()=>ce,face:()=>w4,gesture:()=>x4,hand:()=>b4});var ce={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function S0(e,t,n,r=null){e.fillStyle=ce.useDepth&&r?`rgba(${127.5+2*(r||0)}, ${127.5-2*(r||0)}, 255, 0.3)`:ce.color,e.beginPath(),e.arc(t,n,ce.pointSize,0,2*Math.PI),e.fill()}function g4(e,t,n,r,a){if(e.beginPath(),ce.useCurves){let s=(t+t+r)/2,i=(n+n+a)/2;e.ellipse(s,i,r/2,a/2,0,0,2*Math.PI)}else e.lineWidth=ce.lineWidth,e.moveTo(t+ce.roundRect,n),e.lineTo(t+r-ce.roundRect,n),e.quadraticCurveTo(t+r,n,t+r,n+ce.roundRect),e.lineTo(t+r,n+a-ce.roundRect),e.quadraticCurveTo(t+r,n+a,t+r-ce.roundRect,n+a),e.lineTo(t+ce.roundRect,n+a),e.quadraticCurveTo(t,n+a,t,n+a-ce.roundRect),e.lineTo(t,n+ce.roundRect),e.quadraticCurveTo(t,n,t+ce.roundRect,n),e.closePath();e.stroke()}function Ag(e,t=[]){if(!(t===void 0||t.length===0)){e.beginPath(),e.moveTo(t[0][0],t[0][1]);for(let n of t)e.strokeStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.fillStyle=ce.useDepth&&n[2]?`rgba(${127.5+2*n[2]}, ${127.5-2*n[2]}, 255, 0.3)`:ce.color,e.lineTo(n[0],parseInt(n[1]));e.stroke(),ce.fillPolygons&&(e.closePath(),e.fill())}}function T0(e,t=[]){if(!(t===void 0||t.length===0)){if(!ce.useCurves||t.length<=2){Ag(e,t);return}e.moveTo(t[0][0],t[0][1]);for(let n=0;n1&&i[1].length>0){let o=s[1]>0?`#${s[1]}`:"",l=`${s[0]} ${o}: ${i[1]}`;ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(l,8,2+r*ce.lineHeight)),n.fillStyle=ce.labelColor,n.fillText(l,6,0+r*ce.lineHeight),r+=1}}}async function w4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n)for(let r of t){n.font=ce.font,n.strokeStyle=ce.color,n.fillStyle=ce.color,ce.drawBoxes&&g4(n,r.box[0],r.box[1],r.box[2],r.box[3]);let a=[];if(a.push(`face confidence: ${Math.trunc(100*r.confidence)}%`),r.genderConfidence&&a.push(`${r.gender||""} ${Math.trunc(100*r.genderConfidence)}% confident`),r.age&&a.push(`age: ${r.age||""}`),r.iris&&a.push(`iris distance: ${r.iris}`),r.emotion&&r.emotion.length>0){let s=r.emotion.map(i=>`${Math.trunc(100*i.score)}% ${i.emotion}`);a.push(s.join(" "))}r.angle&&r.angle.roll&&a.push(`roll: ${Math.trunc(100*r.angle.roll)/100} yaw:${Math.trunc(100*r.angle.yaw)/100} pitch:${Math.trunc(100*r.angle.pitch)/100}`),a.length===0&&a.push("face"),n.fillStyle=ce.color;for(let s=a.length-1;s>=0;s--){let i=Math.max(r.box[0],0),o=s*ce.lineHeight+r.box[1];ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText(a[s],i+5,o+16)),n.fillStyle=ce.labelColor,n.fillText(a[s],i+4,o+15)}if(n.lineWidth=1,r.mesh){if(ce.drawPoints)for(let s of r.mesh)S0(n,s[0],s[1],s[2]);if(ce.drawPolygons){n.lineWidth=1;for(let s=0;sr.mesh[o]);Ag(n,i)}if(r.annotations&&r.annotations.leftEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.leftEyeIris[3][0]-r.annotations.leftEyeIris[1][0])/2,i=Math.abs(r.annotations.leftEyeIris[4][1]-r.annotations.leftEyeIris[2][1])/2;n.ellipse(r.annotations.leftEyeIris[0][0],r.annotations.leftEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}if(r.annotations&&r.annotations.rightEyeIris){n.strokeStyle=ce.useDepth?"rgba(255, 200, 255, 0.3)":ce.color,n.beginPath();let s=Math.abs(r.annotations.rightEyeIris[3][0]-r.annotations.rightEyeIris[1][0])/2,i=Math.abs(r.annotations.rightEyeIris[4][1]-r.annotations.rightEyeIris[2][1])/2;n.ellipse(r.annotations.rightEyeIris[0][0],r.annotations.rightEyeIris[0][1],s,i,0,0,2*Math.PI),n.stroke(),ce.fillPolygons&&(n.fillStyle=ce.useDepth?"rgba(255, 255, 200, 0.3)":ce.color,n.fill())}}}}}var ts=[];async function _4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round";for(let r=0;ri.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),s.length===5&&Ag(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightHip"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightKnee"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightAnkle"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightHeel"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightFoot"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="leftShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="leftPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s),s.length=0,a=t[r].keypoints.find(i=>i.part==="rightShoulder"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightElbow"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightWrist"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),a=t[r].keypoints.find(i=>i.part==="rightPalm"),a&&a.score>mt.body.scoreThreshold&&s.push([a.position.x,a.position.y]),T0(n,s)}}}}async function b4(e,t){if(!t||!e||!(e instanceof HTMLCanvasElement))return;let n=e.getContext("2d");if(!!n){n.lineJoin="round",n.font=ce.font;for(let r of t){if(ce.drawBoxes&&(n.strokeStyle=ce.color,n.fillStyle=ce.color,g4(n,r.box[0],r.box[1],r.box[2],r.box[3]),ce.shadowColor&&ce.shadowColor!==""&&(n.fillStyle=ce.shadowColor,n.fillText("hand",r.box[0]+3,1+r.box[1]+ce.lineHeight,r.box[2])),n.fillStyle=ce.labelColor,n.fillText("hand",r.box[0]+2,0+r.box[1]+ce.lineHeight,r.box[2]),n.stroke()),ce.drawPoints&&r.landmarks&&r.landmarks.length>0)for(let a of r.landmarks)n.fillStyle=ce.useDepth?`rgba(${127.5+2*a[2]}, ${127.5-2*a[2]}, 255, 0.5)`:ce.color,S0(n,a[0],a[1]);if(ce.drawPolygons){let a=s=>{if(!!s)for(let i=0;i0?i-1:0][0],s[i>0?i-1:0][1]),n.lineTo(s[i][0],s[i][1]),n.stroke()};a(r.annotations.indexFinger),a(r.annotations.middleFinger),a(r.annotations.ringFinger),a(r.annotations.pinky),a(r.annotations.thumb)}}}}async function nse(e,t){if(!e||!t||!(e instanceof HTMLCanvasElement)||!(t instanceof HTMLCanvasElement))return;let n=e.getContext("2d");n==null||n.drawImage(e,0,0)}async function rse(e,t){!t||!e||e instanceof HTMLCanvasElement&&(w4(e,t.face),_4(e,t.body),b4(e,t.hand),x4(e,t.gesture))}var dt=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function Bc(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,r)=>(Object.keys(r||{}).forEach(a=>{let s=n[a],i=r[a];Array.isArray(s)&&Array.isArray(i)?n[a]=s.concat(...i):t(s)&&t(i)?n[a]=Bc(s,i):n[a]=i}),n),{})}var C0,Ke,Xl,Vc,Uc,$i,Ut,E0,Hc,R0,jc,F0,M0,$0,gg=class{constructor(t={}){C0.set(this,void 0);Ke.set(this,void 0);Xl.set(this,void 0);Vc.set(this,void 0);Uc.set(this,void 0);$i.set(this,void 0);Ut.set(this,(...t)=>{if(!ve(this,Vc))return;let n=this.tf.engine().state.numTensors,r=ve(this,Xl);ea(this,Xl,n);let a=n-r;a!==0&&Ce(...t,a)});E0.set(this,t=>{if(!ve(this,Uc))return null;if(!t)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(t instanceof Ue))return"input must be a tensor";try{this.tf.getBackend()}catch(n){return"backend not loaded"}return null});Hc.set(this,async(t=!1)=>{if(this.config.backend&&this.config.backend!==""&&t||this.tf.getBackend()!==this.config.backend){let n=dt();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&Ce("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&Ce("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let r=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),a=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&Ce(`wasm execution: ${r?"SIMD":"no SIMD"} ${a?"multithreaded":"singlethreaded"}`),r||Ce("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&h6();try{await this.tf.setBackend(this.config.backend)}catch(r){Ce("error: cannot set backend:",this.config.backend,r)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(Ce("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let r=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&Ce(`gl version:${r.getParameter(r.VERSION)} renderer:${r.getParameter(r.RENDERER)}`)}await this.tf.ready(),ve(this,Ke).backend=Math.trunc(dt()-n)}});R0.set(this,t=>{if(!t||t.length<300)return{roll:null,yaw:null,pitch:null};let n=(s,i,o,l)=>Math.atan2(l-i,o-s),r=s=>Math.abs(s*180/Math.PI%360);return{roll:n(t[33][0],t[33][1],t[263][0],t[263][1]),yaw:n(t[33][0],t[33][2],t[263][0],t[263][2]),pitch:n(t[10][1],t[10][2],t[152][1],t[152][2])}});jc.set(this,async t=>{var u,c,h,d,p,f,m;let n,r,a,s,i,o=[];this.state="run:face",n=dt();let l=await((u=this.models.face)==null?void 0:u.estimateFaces(t,this.config));if(ve(this,Ke).face=Math.trunc(dt()-n),!l)return[];for(let A of l){if(ve(this,Ut).call(this,"Get Face"),!A.image||A.image.isDisposedInternal){Ce("Face object is disposed:",A.image);continue}let y=ve(this,R0).call(this,A.mesh);ve(this,Ut).call(this,"Start Age:"),this.config.async?r=this.config.face.age.enabled?N2(A.image,this.config):{}:(this.state="run:age",n=dt(),r=this.config.face.age.enabled?await N2(A.image,this.config):{},ve(this,Ke).age=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Gender:"),this.config.async?a=this.config.face.gender.enabled?R2(A.image,this.config):{}:(this.state="run:gender",n=dt(),a=this.config.face.gender.enabled?await R2(A.image,this.config):{},ve(this,Ke).gender=Math.trunc(dt()-n)),ve(this,Ut).call(this,"Start Emotion:"),this.config.async?s=this.config.face.emotion.enabled?O2(A.image,this.config):{}:(this.state="run:emotion",n=dt(),s=this.config.face.emotion.enabled?await O2(A.image,this.config):{},ve(this,Ke).emotion=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),ve(this,Ut).call(this,"Start Embedding:"),this.config.async?i=this.config.face.embedding.enabled?W2(A,this.config):[]:(this.state="run:embedding",n=dt(),i=this.config.face.embedding.enabled?await W2(A,this.config):[],ve(this,Ke).embedding=Math.trunc(dt()-n)),ve(this,Ut).call(this,"End Emotion:"),this.config.async&&([r,a,s,i]=await Promise.all([r,a,s,i])),ve(this,Ut).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((c=A==null?void 0:A.annotations)==null?void 0:c.leftEyeIris)&&((h=A==null?void 0:A.annotations)==null?void 0:h.rightEyeIris)&&(delete A.annotations.leftEyeIris,delete A.annotations.rightEyeIris);let g=((d=A.annotations)==null?void 0:d.leftEyeIris)&&((p=A.annotations)==null?void 0:p.rightEyeIris)?11.7*Math.max(Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0]),Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])):0;o.push({...A,age:r.age,gender:a.gender,genderConfidence:a.confidence,emotion:s,embedding:i,iris:g!==0?Math.trunc(g)/100:0,angle:y,tensor:this.config.face.detector.return?(f=A.image)==null?void 0:f.squeeze():null}),(m=A.image)==null||m.dispose(),ve(this,Ut).call(this,"End Face")}return ve(this,Ut).call(this,"End FaceMesh:"),this.config.async&&(ve(this,Ke).face&&delete ve(this,Ke).face,ve(this,Ke).age&&delete ve(this,Ke).age,ve(this,Ke).gender&&delete ve(this,Ke).gender,ve(this,Ke).emotion&&delete ve(this,Ke).emotion),o});F0.set(this,async()=>{let t=(a,s="application/octet-stream")=>fetch(`data:${s};base64,${a}`).then(i=>i.blob()),n,r;switch(this.config.warmup){case"face":n=await t(N0);break;case"full":n=await t(I0);break;default:n=null}if(n){let a=await createImageBitmap(n);r=await this.detect(a,this.config),a.close()}return r});M0.set(this,async()=>new Promise(t=>{let n,r=0;switch(this.config.warmup){case"face":r=256,n="data:image/jpeg;base64,"+N0;break;case"full":case"body":r=1200,n="data:image/jpeg;base64,"+I0;break;default:n=null}let a=new Image;a.onload=async()=>{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(r,r):document.createElement("canvas");s.width=a.naturalWidth,s.height=a.naturalHeight;let i=s.getContext("2d");i==null||i.drawImage(a,0,0);let o=await this.detect(s,this.config);t(o)},n?a.src=n:t(null)}));$0.set(this,async()=>{let t=i=>Buffer.from(i,"base64"),n=this.config.warmup==="face"?t(N0):t(I0),r=(void 0).decodeJpeg(n),a=r.expandDims(0);this.tf.dispose(r);let s=await this.detect(a,this.config);return this.tf.dispose(a),s});this.tf=yh,this.draw=mg,ea(this,C0,pg),this.version=fg,this.config=Bc(mt,t),this.state="idle",ea(this,Xl,0),ea(this,Vc,!1),ea(this,Uc,!1),ea(this,$i,!0),ea(this,Ke,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=n=>dg(n,this.config),this.classes={facemesh:yg,age:v2,gender:I2,emotion:F2,body:this.config.body.modelPath.includes("posenet")?J2:ug,hand:sg},this.sysinfo=Mg()}profileData(){return this.config.profile?b2:{}}simmilarity(t,n){return this.config.face.embedding.enabled?P2(t,n):0}enhance(t){return L2(t)}match(t,n,r=0){return v6(t,n,r)}async load(t={}){this.state="load";let n=dt();t&&(this.config=Bc(this.config,t)),ve(this,$i)&&(this.config.debug&&Ce(`version: ${this.version}`),this.config.debug&&Ce(`tfjs version: ${this.tf.version_core}`),this.config.debug&&Ce("platform:",this.sysinfo.platform),this.config.debug&&Ce("agent:",this.sysinfo.agent),await ve(this,Hc).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&Ce("configuration:",this.config),this.config.debug&&Ce("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?yg.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?k2(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?E2(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?D2(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?z2(this.config):null),this.models.handpose||(this.config.hand.enabled?lg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?eg(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?cg(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await yg.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await k2(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await E2(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await D2(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await z2(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await lg(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await eg(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await cg(this.config))),ve(this,$i)&&(this.config.debug&&Ce("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ea(this,$i,!1));let r=Math.trunc(dt()-n);r>(ve(this,Ke).load||0)&&(ve(this,Ke).load=r)}async detect(t,n={}){return new Promise(async r=>{var d,p,f,m;this.state="config";let a;this.config=Bc(this.config,n),this.state="check";let s=ve(this,E0).call(this,t);s&&(Ce(s,t),r({error:s}));let i=dt();await ve(this,Hc).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),ve(this,Ut).call(this,"Start Scope:"),a=dt();let o=dg(t,this.config);if(!o||!o.tensor){Ce("could not convert input to tensor"),r({error:"could not convert input to tensor"});return}ve(this,Ke).image=Math.trunc(dt()-a),ve(this,Ut).call(this,"Get Image:");let l,u,c;this.config.async?(c=this.config.face.enabled?ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face&&delete ve(this,Ke).face):(this.state="run:face",a=dt(),c=this.config.face.enabled?await ve(this,jc).call(this,o.tensor):[],ve(this,Ke).face=Math.trunc(dt()-a)),ve(this,Ut).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?(d=this.models.posenet)==null?void 0:d.estimatePoses(o.tensor,this.config):[]:l=this.config.body.enabled?hg(o.tensor,this.config):[],ve(this,Ke).body&&delete ve(this,Ke).body):(this.state="run:body",a=dt(),this.config.body.modelPath.includes("posenet")?l=this.config.body.enabled?await((p=this.models.posenet)==null?void 0:p.estimatePoses(o.tensor,this.config)):[]:l=this.config.body.enabled?await hg(o.tensor,this.config):[],ve(this,Ke).body=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Body:"),ve(this,Ut).call(this,"Start Hand:"),this.config.async?(u=this.config.hand.enabled?(f=this.models.handpose)==null?void 0:f.estimateHands(o.tensor,this.config):[],ve(this,Ke).hand&&delete ve(this,Ke).hand):(this.state="run:hand",a=dt(),u=this.config.hand.enabled?await((m=this.models.handpose)==null?void 0:m.estimateHands(o.tensor,this.config)):[],ve(this,Ke).hand=Math.trunc(dt()-a)),ve(this,Ut).call(this,"End Hand:"),this.config.async&&([c,l,u]=await Promise.all([c,l,u])),o.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),ve(this,Ut).call(this,"End Scope:");let h=[];this.config.gesture.enabled&&(a=dt(),h=[...J6(c),...Y6(l),...e4(u),...Q6(c)],this.config.async?ve(this,Ke).gesture&&delete ve(this,Ke).gesture:ve(this,Ke).gesture=Math.trunc(dt()-a)),ve(this,Ke).total=Math.trunc(dt()-i),this.state="idle",r({face:c,body:l,hand:u,gesture:h,performance:ve(this,Ke),canvas:o.canvas})})}async warmup(t={}){let n=dt();t&&(this.config=Bc(this.config,t));let r=this.config.videoOptimized;this.config.videoOptimized=!1;let a;typeof createImageBitmap=="function"?a=await ve(this,F0).call(this):typeof Image!="undefined"?a=await ve(this,M0).call(this):a=await ve(this,$0).call(this),this.config.videoOptimized=r;let s=dt();return this.config.debug&&Ce("Warmup",this.config.warmup,Math.round(s-n),"ms",a),a}};C0=new WeakMap,Ke=new WeakMap,Xl=new WeakMap,Vc=new WeakMap,Uc=new WeakMap,$i=new WeakMap,Ut=new WeakMap,E0=new WeakMap,Hc=new WeakMap,R0=new WeakMap,jc=new WeakMap,F0=new WeakMap,M0=new WeakMap,$0=new WeakMap;return ase;})(); /** * @license * Copyright 2017 Google LLC. All Rights Reserved. diff --git a/dist/human.js.map b/dist/human.js.map index 37d9fed5..52764703 100644 --- a/dist/human.js.map +++ b/dist/human.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/human.ts", "../src/log.ts", "../src/sysinfo.ts", "../node_modules/node-fetch/browser.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/lib/tychei.js", "(disabled):crypto", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-core/node_modules/seedrandom/index.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/alea.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor128.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorwow.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xorshift7.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/xor4096.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/lib/tychei.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/seedrandom.js", "../node_modules/@tensorflow/tfjs-backend-cpu/node_modules/seedrandom/index.js", "(disabled):path", "(disabled):worker_threads", "(disabled):perf_hooks", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.js", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js", "../node_modules/seedrandom/lib/alea.js", "../node_modules/seedrandom/lib/xor128.js", "../node_modules/seedrandom/lib/xorwow.js", "../node_modules/seedrandom/lib/xorshift7.js", "../node_modules/seedrandom/lib/xor4096.js", "../node_modules/seedrandom/lib/tychei.js", "../node_modules/seedrandom/seedrandom.js", "../node_modules/seedrandom/index.js", "../node_modules/string_decoder/lib/string_decoder.js", "../node_modules/@tensorflow/tfjs-core/src/backends/backend.ts", "../node_modules/@tensorflow/tfjs-core/src/util_base.ts", "../node_modules/@tensorflow/tfjs-core/src/environment.ts", "../node_modules/@tensorflow/tfjs-core/src/global_util.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_names.ts", "../node_modules/@tensorflow/tfjs-core/src/kernel_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/util.ts", "../node_modules/@tensorflow/tfjs-core/src/profiler.ts", "../node_modules/@tensorflow/tfjs-core/src/tape.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_format.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util.ts", "../node_modules/@tensorflow/tfjs-core/src/types.ts", "../node_modules/@tensorflow/tfjs-core/src/engine.ts", "../node_modules/@tensorflow/tfjs-core/src/device_util.ts", "../node_modules/@tensorflow/tfjs-core/src/flags.ts", "../node_modules/@tensorflow/tfjs-core/src/tensor_util_env.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/operation.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/complex.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor.ts", "../node_modules/@tensorflow/tfjs-core/src/io/types.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/io/router_registry.ts", "../node_modules/@tensorflow/tfjs-core/src/io/indexed_db.ts", "../node_modules/@tensorflow/tfjs-core/src/io/local_storage.ts", "../node_modules/@tensorflow/tfjs-core/src/io/model_management.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_browser.ts", "../node_modules/@tensorflow/tfjs-core/src/platforms/platform_node.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/buffer.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clone.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/print.ts", "../node_modules/@tensorflow/tfjs-core/src/base_side_effects.ts", "../node_modules/@tensorflow/tfjs-core/src/io/io.ts", "../node_modules/@tensorflow/tfjs-core/src/io/browser_files.ts", "../node_modules/@tensorflow/tfjs-core/src/io/progress.ts", "../node_modules/@tensorflow/tfjs-core/src/io/weights_loader.ts", "../node_modules/@tensorflow/tfjs-core/src/io/http.ts", "../node_modules/@tensorflow/tfjs-core/src/io/passthrough.ts", "../node_modules/@tensorflow/tfjs-core/src/math.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/confusion_matrix.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/browser.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice_util.ts", "../node_modules/@tensorflow/tfjs-core/src/serialization.ts", "../node_modules/@tensorflow/tfjs-core/src/test_util.ts", "../node_modules/@tensorflow/tfjs-core/src/version.ts", "../node_modules/@tensorflow/tfjs-core/src/globals.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/add_n.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/basic_lstm_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/batchnorm4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dense_bincount.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/diag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/broadcast_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/eye.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fill.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/imag.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linspace.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/axis_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_with_argmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moments.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multi_rnn_cell.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/multinomial.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/zeros.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/outer_product.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pad4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rand_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_gamma.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/random_uniform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/range.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/real.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reverse_4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/setdiff1d_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice3d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/slice4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/spectral/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor1d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor4d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor5d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/tensor6d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/truncated_normal.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/variable.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/where_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/where_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/boolean_mask.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/moving_average.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/scatter_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/sparse_to_dense.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/gather_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/dropout.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/in_top_k.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv2d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/depthwise_conv2d_native_backprop_input.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/fused/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hamming_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/hann_window.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/frame.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/signal/stft.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/crop_and_resize.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/flip_left_right.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/rotate_with_offset.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/nonmax_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/non_max_suppression_impl.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_with_score_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/non_max_suppression_padded_async.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/image/transform.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/band_part.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/gram_schmidt.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/linalg/qr.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/loss_ops_utils.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/compute_weighted_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/absolute_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/cosine_distance.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/hinge_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/huber_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/log_loss.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/mean_squared_error.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/sigmoid_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/losses/softmax_cross_entropy.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/ops.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adadelta_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adagrad_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adam_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/adamax_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/sgd_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/momentum_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/rmsprop_optimizer.ts", "../node_modules/@tensorflow/tfjs-core/src/optimizers/optimizer_constructors.ts", "../node_modules/@tensorflow/tfjs-core/src/train.ts", "../node_modules/@tensorflow/tfjs-core/src/browser_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/backend_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/concat_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/reduce_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/rotate_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/array_ops_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/selu_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/erf_util.ts", "../node_modules/@tensorflow/tfjs-core/src/log.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/complex_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/split_util.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/segment_util.ts", "../node_modules/@tensorflow/tfjs-core/src/backends/kernel_impls.ts", "../node_modules/@tensorflow/tfjs-core/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/cpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/backend_cpu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/shared.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/zeros_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/binary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/unary_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fused_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/pool_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Clip.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Dilation2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/utils/fft_utils.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Scatter_impl.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Transform.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-cpu/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/canvas_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tex_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flags_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/glsl_version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/decode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_float_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/encode_matrix_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_context.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/shader_compiler.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gpgpu_math.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/shared.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/packing_util.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reshape_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/texture_manager.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/unpack_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/backend_webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/webgl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Complex.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/kernel_funcs_utils.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mulmat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/binaryop_complex_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mean_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reduce_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/reduce.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transpose_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Acosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/addn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/All.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Any.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/argminmax_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/arg_min_max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ArgMin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Asinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atan2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Atanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pool_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/avg_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/AvgPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/batchnorm_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/slice_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/BatchToSpaceND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Bincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Real.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernel_utils/int.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/clip_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/complex_abs_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ComplexAbs.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/concat_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Imag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/im2col_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropFilterV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Conv3DBackpropInputV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cosh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/crop_and_resize_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/cumsum_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DenseBincount.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/depth_to_space_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_packed_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/conv_backprop_gpu_depthwise.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropFilter.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/DepthwiseConv2dNativeBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/diag_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Diag.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/dilation_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Dilation2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Elu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/EluGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Erf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Expm1.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fft_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/fill_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/flip_left_right_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels_utils/from_pixels_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FromPixels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_nd_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/gather_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IFFT.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsFinite.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsInf.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/IsNaN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LinSpace.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Log1p.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalNot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LogicalOr.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRN.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/lrn_grad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/LRNGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3D.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/max_pool_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPool3DGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MaxPoolWithArgmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean_impl.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/mirror_pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/MirrorPad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Mod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/multinomial_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Multinomial.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/onehot_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/pad_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reciprocal.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_bilinear_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeBilinearGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighbor.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/resize_nearest_neighbor_backprop_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ResizeNearestNeighborGrad.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/reverse_packed_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/rotate_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/scatter_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/select_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Selu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sign.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sinh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Softplus.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SpaceToBatchND.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SparseToDense.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/strided_slice_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tan.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/tile_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/transform_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Transform.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unique.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/segment_gpu.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/kernels/UnsortedSegmentSum.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-webgl/src/index.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/types.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/_FusedMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/unary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Abs.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/binary_kernel.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Add.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AddN.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Identity.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Transpose.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/kernel_utils.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ArgMax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/AvgPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reshape.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/BatchMatMul.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cast.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Ceil.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ClipByValue.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Concat.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Conv2DBackpropInput.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cos.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/CropAndResize.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Cumsum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthToSpace.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/DepthwiseConv2dNative.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Equal.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Exp.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ExpandDims.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Fill.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FlipLeftRight.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Floor.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FloorDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedBatchNorm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/FusedDepthwiseConv2D.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GatherV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Greater.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/GreaterEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LeakyRelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Less.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LessEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Log.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/LogicalAnd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Max.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Maximum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/MaxPool.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Mean.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Min.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Minimum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Multiply.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Neg.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppression_util.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV3.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV4.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NonMaxSuppressionV5.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/NotEqual.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OneHot.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/OnesLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/PadV2.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Pow.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prelu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Prod.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Range.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RealDiv.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Relu6.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ResizeBilinear.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Reverse.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/RotateWithOffset.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Round.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Rsqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ScatterNd.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Select.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sigmoid.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sin.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Slice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Softmax.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SplitV.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sqrt.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Square.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/SquaredDifference.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Step.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/StridedSlice.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sub.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Sum.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tanh.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Tile.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/TopK.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/Unpack.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/kernels/ZerosLike.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/register_all_kernels.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/flags_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/backend_wasm.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm-threaded-simd.worker.js", "../node_modules/@tensorflow/tfjs-backend-wasm/src/version.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/base.ts", "../node_modules/@tensorflow/tfjs-backend-wasm/src/index.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/abs.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/acosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/add.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/all.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/any.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/arg_min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_scalar.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as_type.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as3d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as4d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/as5d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/asinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atan2.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/atanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/avg_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batch_to_space_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/batchnorm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/broadcast_to.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cast.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ceil.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/clip_by_value.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/concat.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv1d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d_transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cos.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cosh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/cumsum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depth_to_space.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/depthwise_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dilation2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div_no_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/div.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/dot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/elu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/erf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expand_dims.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/expm1.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/fft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/flatten.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/floorDiv.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/gather.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/greater.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ifft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/irfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_finite.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_inf.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/is_nan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/leaky_relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/less.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/local_response_normalization.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log_sum_exp.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/log1p.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_and.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_not.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_or.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/logical_xor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mat_mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max_pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/max.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/maximum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mean.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/min.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/minimum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mirror_pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/mul.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/neg.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/norm.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/not_equal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/one_hot.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/ones_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pad.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/pow.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prelu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/prod.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reciprocal.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/relu6.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape_as.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reshape.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_bilinear.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/resize_nearest_neighbor.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/reverse.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rfft.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/round.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/rsqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/selu.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/separable_conv2d.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sigmoid.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sign.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sin.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sinh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softmax.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/softplus.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/space_to_batch_nd.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/split.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sqrt.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/square.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squared_difference.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/squeeze.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/stack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/step.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/strided_slice.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sub.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tan.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tanh.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/tile.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_bool.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_float.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/to_int.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/topk.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/transpose.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unique.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unsorted_segment_sum.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/unstack.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/where.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/zeros_like.ts", "../node_modules/@tensorflow/tfjs-core/src/public/chained_ops/register_all_chained_ops.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Abs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Acosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Add_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AddN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ArgMin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Asinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Atanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/avg_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/AvgPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchMatMul_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BatchToSpaceND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/BroadcastTo_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cast_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Ceil_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ClipByValue_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ComplexAbs_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Concat_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv2DBackpropInput_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/conv3d_backprop_filter.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Conv3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cos_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cosh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Cumsum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/DepthwiseConv2dNative_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Dilation2D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Elu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Erf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Exp_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ExpandDims_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Expm1_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Floor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FloorDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/FusedBatchNorm_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GatherV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/GreaterEqual_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Identity_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsFinite_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsInf_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/IsNan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LeakyRelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log1p_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Log_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LogSoftmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/local_response_normalization_backprop.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/LRN_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/min_max_grad_util.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Max_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Maximum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_3d_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool3D_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/ops/max_pool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MaxPool_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mean_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Min_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Minimum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/MirrorPad_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Mod_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Multiply_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Neg_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OneHot_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/OnesLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/PadV2_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Pow_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Prelu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/RealDiv_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reciprocal_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu6_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Relu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reshape_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeBilinear_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ResizeNearestNeighbor_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Reverse_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Round_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Rsqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Select_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Selu_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sigmoid_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sign_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sin_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sinh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Slice_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softmax_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Softplus_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SpaceToBatchND_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SplitV_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sqrt_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Square_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/SquaredDifference_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Step_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sub_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Sum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tan_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tanh_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Tile_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Transpose_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/Unpack_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/UnsortedSegmentSum_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/gradients/ZerosLike_grad.ts", "../node_modules/@tensorflow/tfjs-core/src/register_all_gradients.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/errors.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/generic_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/constraints.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/common.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/math_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/tfjs_backend.ts", "../node_modules/@tensorflow/tfjs-layers/src/keras_format/initializer_config.ts", "../node_modules/@tensorflow/tfjs-layers/src/initializers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_layers.ts", "../node_modules/@tensorflow/tfjs-layers/src/backend/state.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/types_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/variable_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/variables.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/topology.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/input_layer.ts", "../node_modules/@tensorflow/tfjs-layers/src/logs.ts", "../node_modules/@tensorflow/tfjs-layers/src/base_callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/serialization.ts", "../node_modules/@tensorflow/tfjs-layers/src/losses.ts", "../node_modules/@tensorflow/tfjs-layers/src/metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/optimizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/user_defined_metadata.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/layer_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/serialization_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/version.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/executor.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/container.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_dataset.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training_tensors.ts", "../node_modules/@tensorflow/tfjs-layers/src/engine/training.ts", "../node_modules/@tensorflow/tfjs-layers/src/models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports.ts", "../node_modules/@tensorflow/tfjs-layers/src/activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/advanced_activations.ts", "../node_modules/@tensorflow/tfjs-layers/src/utils/conv_utils.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_depthwise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/convolutional_recurrent.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/core.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/embeddings.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/merge.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/noise.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/normalization.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/padding.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/pooling.ts", "../node_modules/@tensorflow/tfjs-layers/src/layers/wrappers.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_metrics.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_models.ts", "../node_modules/@tensorflow/tfjs-layers/src/exports_regularizers.ts", "../node_modules/@tensorflow/tfjs-layers/src/callbacks.ts", "../node_modules/@tensorflow/tfjs-layers/src/index.ts", "../node_modules/@tensorflow/tfjs-converter/src/data/compiled_api.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/register.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/arithmetic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/basic_math.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/control.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/convolution.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/creation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/dynamic.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/evaluation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/graph.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/image.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/logical.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/matrices.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/normalization.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/reduction.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/slice_join.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/spectral.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/op_list/transformation.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_mapper.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/custom_op/node_value_impl.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/arithmetic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/basic_math_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_utils.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_array.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/tensor_list.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/control_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/convolution_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/creation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/dynamic_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/evaluation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/hash_table.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/hash_table_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/image_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/logical_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/matrices_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/normalization_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/reduction_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/slice_join_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/spectral_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/executors/transformation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/operations/operation_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/execution_context.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/model_analysis.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_executor.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/resource_manager.ts", "../node_modules/@tensorflow/tfjs-converter/src/executor/graph_model.ts", "../node_modules/@tensorflow/tfjs-converter/src/version.ts", "../node_modules/@tensorflow/tfjs-converter/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/index.ts", "../node_modules/@tensorflow/tfjs-data/src/dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/lazy_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_map.ts", "../node_modules/@tensorflow/tfjs-data/src/util/deep_clone.ts", "../node_modules/@tensorflow/tfjs-data/src/util/ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/util/growing_ring_buffer.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/text_line_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/datasets/csv_dataset.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/microphone_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/webcam_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/datasource.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/string_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/byte_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/file_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/iterators/url_chunk_iterator.ts", "../node_modules/@tensorflow/tfjs-data/src/util/source_util.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/file_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/sources/url_data_source.ts", "../node_modules/@tensorflow/tfjs-data/src/readers.ts", "../node_modules/@tensorflow/tfjs-data/src/version.ts", "../src/tfjs/tf-browser.ts", "../src/tfjs/backend.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/blazeface/facepipeline.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/box.ts", "../src/handpose/handdetector.ts", "../src/handpose/util.ts", "../src/handpose/handpipeline.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/gesture/gesture.ts", "../src/imagefx.js", "../src/image.ts", "../config.ts", "../src/sample.ts", "../src/draw.ts"], - "sourcesContent": ["import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n enhance(input: Tensor): Tensor | null {\n if (this.config.face.embedding.enabled) return embedding.enhance(input);\n return null;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\n// Detect the global object, even if operating in strict mode.\n// http://stackoverflow.com/a/14387057/265298\nvar global = (0, eval)('this'),\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2) {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function enhance(input) {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config) {\n if (!model) return null;\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return output;\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n image.dispose();\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], - "mappings": "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,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC4FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GE/UjB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,8BAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,yBAAA,IAAA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,CAAC,KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IC6DR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GExTjB,GAAY,IAAZ,AAAA,UAAY,EAAQ,CAClB,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,UAAA,GAAA,cALU,IAAA,IAAQ,KASpB,GAAY,IAAZ,AAAA,UAAY,EAAiB,CAC3B,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EA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C,EAAc,EAAiB,IAAuB,CAC/D,GAAM,GAA2B,EAC3B,CAAC,KAAA,GAAQ,EACf,MAAO,CAAC,MAAO,IAAM,GAAM,EAAI,MCItB,GAA2C,CACtD,WAAY,GACZ,aAAc,CAAC,cACf,SAAU,CAAC,EAAY,IAAmB,CACxC,GAAM,CAAC,GAAc,EAKrB,MAAO,CAAC,EAHK,IACJ,GAAoB,EAAI,MAMrC,YAA+C,EAAM,EAAiB,CAIpE,GAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GACvB,EAAa,GAAa,EAAS,GAAO,EAAG,UAC3C,EAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCpOnB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,WAAA,IAAA,GAAA,OAAA,IAAA,GAAA,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AAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK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AG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CA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AAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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", + "sourcesContent": ["import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return embedding.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: String, source: String | undefined, embedding: Array }>, threshold = 0): { name: String, source: String | undefined, simmilarity: Number, embedding: Array } {\n return embedding.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\nvar global = this,\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", "", "", "\nvar WasmBackendModuleThreadedSimd = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModuleThreadedSimd) {\n WasmBackendModuleThreadedSimd = WasmBackendModuleThreadedSimd || {};\n\nfunction GROWABLE_HEAP_I8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP8}function GROWABLE_HEAP_U8(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU8}function GROWABLE_HEAP_I32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAP32}function GROWABLE_HEAP_U32(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPU32}function GROWABLE_HEAP_F64(){if(wasmMemory.buffer!=buffer){updateGlobalBufferAndViews(wasmMemory.buffer)}return HEAPF64}var Module=typeof WasmBackendModuleThreadedSimd!==\"undefined\"?WasmBackendModuleThreadedSimd:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var ENVIRONMENT_IS_PTHREAD=Module[\"ENVIRONMENT_IS_PTHREAD\"]||false;if(ENVIRONMENT_IS_PTHREAD){buffer=Module[\"buffer\"]}var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"};var nodeWorkerThreads;try{nodeWorkerThreads=require(\"worker_threads\")}catch(e){console.error('The \"worker_threads\" module is not supported in this node.js build - perhaps a newer version is needed?');throw e}global.Worker=nodeWorkerThreads.Worker}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(typeof _scriptDir !== \"undefined\" && _scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}if(ENVIRONMENT_IS_NODE){read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret}}else{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}if(ENVIRONMENT_IS_NODE){if(typeof performance===\"undefined\"){global.performance=require(\"perf_hooks\").performance}}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var Atomics_load=Atomics.load;var Atomics_store=Atomics.store;var Atomics_compareExchange=Atomics.compareExchange;var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var wasmModule;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx)){var u0=heap[idx++];if(!u0)return str;if(!(u0&128)){str+=String.fromCharCode(u0);continue}var u1=heap[idx++]&63;if((u0&224)==192){str+=String.fromCharCode((u0&31)<<6|u1);continue}var u2=heap[idx++]&63;if((u0&240)==224){u0=(u0&15)<<12|u1<<6|u2}else{u0=(u0&7)<<18|u1<<12|u2<<6|heap[idx++]&63}if(u0<65536){str+=String.fromCharCode(u0)}else{var ch=u0-65536;str+=String.fromCharCode(55296|ch>>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(GROWABLE_HEAP_U8(),ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,GROWABLE_HEAP_U8(),outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}function writeArrayToMemory(array,buffer){GROWABLE_HEAP_I8().set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;if(ENVIRONMENT_IS_PTHREAD){wasmMemory=Module[\"wasmMemory\"];buffer=Module[\"buffer\"]}else{if(Module[\"wasmMemory\"]){wasmMemory=Module[\"wasmMemory\"]}else{wasmMemory=new WebAssembly.Memory({\"initial\":INITIAL_MEMORY/65536,\"maximum\":2147483648/65536,\"shared\":true});if(!(wasmMemory.buffer instanceof SharedArrayBuffer)){err(\"requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag\");if(ENVIRONMENT_IS_NODE){console.log(\"(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)\")}throw Error(\"bad memory\")}}}if(wasmMemory){buffer=wasmMemory.buffer}INITIAL_MEMORY=buffer.byteLength;updateGlobalBufferAndViews(buffer);var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;if(!ENVIRONMENT_IS_PTHREAD)__ATINIT__.push({func:function(){___wasm_call_ctors()}});if(ENVIRONMENT_IS_PTHREAD)runtimeInitialized=true;function preRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){if(ENVIRONMENT_IS_PTHREAD)return;callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){if(ENVIRONMENT_IS_PTHREAD)return;runtimeExited=true}function postRun(){if(ENVIRONMENT_IS_PTHREAD)return;if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){assert(!ENVIRONMENT_IS_PTHREAD,\"addRunDependency cannot be used in a pthread worker\");runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}if(ENVIRONMENT_IS_PTHREAD)console.error(\"Pthread aborting at \"+(new Error).stack);what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm-threaded-simd.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmTable=Module[\"asm\"][\"F\"];wasmModule=module;if(!ENVIRONMENT_IS_PTHREAD){var numWorkersToLoad=PThread.unusedWorkers.length;PThread.unusedWorkers.forEach(function(w){PThread.loadWasmModuleToWorker(w,function(){if(!--numWorkersToLoad)removeRunDependency(\"wasm-instantiate\")})})}}if(!ENVIRONMENT_IS_PTHREAD){addRunDependency(\"wasm-instantiate\")}function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"],output[\"module\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}var ASM_CONSTS={8991:function($0,$1){setTimeout(function(){__emscripten_do_dispatch_to_thread($0,$1)},0)}};function initPthreadsJS(){PThread.initRuntime()}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _emscripten_futex_wake(addr,count){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0||count<0)return-28;if(count==0)return 0;if(count>=2147483647)count=Infinity;var mainThreadWaitAddress=Atomics.load(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2);var mainThreadWoken=0;if(mainThreadWaitAddress==addr){var loadedAddr=Atomics.compareExchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,mainThreadWaitAddress,0);if(loadedAddr==mainThreadWaitAddress){--count;mainThreadWoken=1;if(count<=0)return 1}}var ret=Atomics.notify(GROWABLE_HEAP_I32(),addr>>2,count);if(ret>=0)return ret+mainThreadWoken;throw\"Atomics.notify returned an unexpected value \"+ret}Module[\"_emscripten_futex_wake\"]=_emscripten_futex_wake;function killThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! killThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in killThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];pthread.worker.terminate();PThread.freeThreadData(pthread);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(pthread.worker),1);pthread.worker.pthread=undefined}function cancelThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cancelThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cancelThread!\";var pthread=PThread.pthreads[pthread_ptr];pthread.worker.postMessage({\"cmd\":\"cancel\"})}function cleanupThread(pthread_ptr){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! cleanupThread() can only ever be called from main application thread!\";if(!pthread_ptr)throw\"Internal Error! Null pthread_ptr in cleanupThread!\";GROWABLE_HEAP_I32()[pthread_ptr+12>>2]=0;var pthread=PThread.pthreads[pthread_ptr];if(pthread){var worker=pthread.worker;PThread.returnWorkerToPool(worker)}}var PThread={unusedWorkers:[],runningWorkers:[],initMainThreadBlock:function(){var pthreadPoolSize=8;for(var i=0;i>2]=tb;var headPtr=tb+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var tlsMemory=_malloc(512);for(var i=0;i<128;++i)GROWABLE_HEAP_U32()[tlsMemory/4+i]=0;Atomics.store(GROWABLE_HEAP_U32(),tb+100>>2,tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tb+40>>2,tb);__emscripten_thread_init(tb,!ENVIRONMENT_IS_WORKER,1);_emscripten_register_main_browser_thread_id(tb)},initWorker:function(){},pthreads:{},threadExitHandlers:[],setThreadStatus:function(){},runExitHandlers:function(){while(PThread.threadExitHandlers.length>0){PThread.threadExitHandlers.pop()()}if(ENVIRONMENT_IS_PTHREAD&&_pthread_self())___pthread_tsd_run_dtors()},threadExit:function(exitCode){var tb=_pthread_self();if(tb){Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,exitCode);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+56>>2,1);Atomics.store(GROWABLE_HEAP_U32(),tb+60>>2,0);PThread.runExitHandlers();_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exit\"})}}},threadCancel:function(){PThread.runExitHandlers();var tb=_pthread_self();Atomics.store(GROWABLE_HEAP_U32(),tb+4>>2,-1);Atomics.store(GROWABLE_HEAP_U32(),tb+0>>2,1);_emscripten_futex_wake(tb+0,2147483647);__emscripten_thread_init(0,0,0);postMessage({\"cmd\":\"cancelDone\"})},terminateAllThreads:function(){for(var t in PThread.pthreads){var pthread=PThread.pthreads[t];if(pthread&&pthread.worker){PThread.returnWorkerToPool(pthread.worker)}}PThread.pthreads={};for(var i=0;i>2];GROWABLE_HEAP_I32()[pthread.threadInfoStruct+100>>2]=0;_free(tlsMemory);_free(pthread.threadInfoStruct)}pthread.threadInfoStruct=0;if(pthread.allocatedOwnStack&&pthread.stackBase)_free(pthread.stackBase);pthread.stackBase=0;if(pthread.worker)pthread.worker.pthread=null},returnWorkerToPool:function(worker){PThread.runWithoutMainThreadQueuedCalls(function(){delete PThread.pthreads[worker.pthread.threadInfoStruct];PThread.unusedWorkers.push(worker);PThread.runningWorkers.splice(PThread.runningWorkers.indexOf(worker),1);PThread.freeThreadData(worker.pthread);worker.pthread=undefined})},runWithoutMainThreadQueuedCalls:function(func){GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=0;try{func()}finally{GROWABLE_HEAP_I32()[__emscripten_allow_main_runtime_queued_calls>>2]=1}},receiveObjectTransfer:function(data){},loadWasmModuleToWorker:function(worker,onFinishedLoading){worker.onmessage=function(e){var d=e[\"data\"];var cmd=d[\"cmd\"];if(worker.pthread)PThread.currentProxiedOperationCallerThread=worker.pthread.threadInfoStruct;if(d[\"targetThread\"]&&d[\"targetThread\"]!=_pthread_self()){var thread=PThread.pthreads[d.targetThread];if(thread){thread.worker.postMessage(e.data,d[\"transferList\"])}else{console.error('Internal error! Worker sent a message \"'+cmd+'\" to target pthread '+d[\"targetThread\"]+\", but that thread no longer exists!\")}PThread.currentProxiedOperationCallerThread=undefined;return}if(cmd===\"processQueuedMainThreadWork\"){_emscripten_main_thread_process_queued_calls()}else if(cmd===\"spawnThread\"){spawnThread(e.data)}else if(cmd===\"cleanupThread\"){cleanupThread(d[\"thread\"])}else if(cmd===\"killThread\"){killThread(d[\"thread\"])}else if(cmd===\"cancelThread\"){cancelThread(d[\"thread\"])}else if(cmd===\"loaded\"){worker.loaded=true;if(onFinishedLoading)onFinishedLoading(worker);if(worker.runPthread){worker.runPthread();delete worker.runPthread}}else if(cmd===\"print\"){out(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"printErr\"){err(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"alert\"){alert(\"Thread \"+d[\"threadId\"]+\": \"+d[\"text\"])}else if(cmd===\"exit\"){var detached=worker.pthread&&Atomics.load(GROWABLE_HEAP_U32(),worker.pthread.threadInfoStruct+64>>2);if(detached){PThread.returnWorkerToPool(worker)}}else if(cmd===\"exitProcess\"){try{exit(d[\"returnCode\"])}catch(e){if(e instanceof ExitStatus)return;throw e}}else if(cmd===\"cancelDone\"){PThread.returnWorkerToPool(worker)}else if(cmd===\"objectTransfer\"){PThread.receiveObjectTransfer(e.data)}else if(e.data.target===\"setimmediate\"){worker.postMessage(e.data)}else{err(\"worker sent an unknown command \"+cmd)}PThread.currentProxiedOperationCallerThread=undefined};worker.onerror=function(e){err(\"pthread sent an error! \"+e.filename+\":\"+e.lineno+\": \"+e.message)};if(ENVIRONMENT_IS_NODE){worker.on(\"message\",function(data){worker.onmessage({data:data})});worker.on(\"error\",function(data){worker.onerror(data)});worker.on(\"exit\",function(data){})}worker.postMessage({\"cmd\":\"load\",\"urlOrBlob\":Module[\"mainScriptUrlOrBlob\"]||_scriptDir,\"wasmMemory\":wasmMemory,\"wasmModule\":wasmModule})},allocateUnusedWorker:function(){var pthreadMainJs=locateFile(\"tfjs-backend-wasm-threaded-simd.worker.js\");PThread.unusedWorkers.push(new Worker(pthreadMainJs))},getNewWorker:function(){if(PThread.unusedWorkers.length==0){PThread.allocateUnusedWorker();PThread.loadWasmModuleToWorker(PThread.unusedWorkers[0])}if(PThread.unusedWorkers.length>0)return PThread.unusedWorkers.pop();else return null},busySpinWait:function(msecs){var t=performance.now()+msecs;while(performance.now()>2]=value;return value}function _atexit(func,arg){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(1,1,func,arg)}function __emscripten_notify_thread_queue(targetThreadId,mainThreadId){if(targetThreadId==mainThreadId){postMessage({\"cmd\":\"processQueuedMainThreadWork\"})}else if(ENVIRONMENT_IS_PTHREAD){postMessage({\"targetThread\":targetThreadId,\"cmd\":\"processThreadQueue\"})}else{var pthread=PThread.pthreads[targetThreadId];var worker=pthread&&pthread.worker;if(!worker){return}worker.postMessage({\"cmd\":\"processThreadQueue\"})}return 1}function _abort(){abort()}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_conditional_set_current_thread_status(expectedStatus,newStatus){}function _emscripten_futex_wait(addr,val,timeout){if(addr<=0||addr>GROWABLE_HEAP_I8().length||addr&3!=0)return-28;if(!ENVIRONMENT_IS_WEB){var ret=Atomics.wait(GROWABLE_HEAP_I32(),addr>>2,val,timeout);if(ret===\"timed-out\")return-73;if(ret===\"not-equal\")return-6;if(ret===\"ok\")return 0;throw\"Atomics.wait returned an unexpected value \"+ret}else{if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}var tNow=performance.now();var tEnd=tNow+timeout;var lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr);while(1){tNow=performance.now();if(tNow>tEnd){lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);return-73}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,0);if(lastAddr==0){break}_emscripten_main_thread_process_queued_calls();if(Atomics.load(GROWABLE_HEAP_I32(),addr>>2)!=val){return-6}lastAddr=Atomics.exchange(GROWABLE_HEAP_I32(),__emscripten_main_thread_futex>>2,addr)}return 0}}function _emscripten_memcpy_big(dest,src,num){GROWABLE_HEAP_U8().copyWithin(dest,src,src+num)}function _emscripten_num_logical_cores(){if(ENVIRONMENT_IS_NODE)return require(\"os\").cpus().length;return navigator[\"hardwareConcurrency\"]}function _emscripten_proxy_to_main_thread_js(index,sync){var numCallArgs=arguments.length-2;var stack=stackSave();var serializedNumCallArgs=numCallArgs;var args=stackAlloc(serializedNumCallArgs*8);var b=args>>3;for(var i=0;i>=2;while(ch=GROWABLE_HEAP_U8()[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?GROWABLE_HEAP_F64()[buf++>>1]:GROWABLE_HEAP_I32()[buf]);++buf}return readAsmConstArgsArray}function _emscripten_receive_on_main_thread_js(index,numCallArgs,args){_emscripten_receive_on_main_thread_js_callArgs.length=numCallArgs;var b=args>>3;for(var i=0;i>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();if(requestedSize<=oldSize){return false}var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var JSEvents={inEventHandler:0,removeAllEventListeners:function(){for(var i=JSEvents.eventHandlers.length-1;i>=0;--i){JSEvents._removeHandler(i)}JSEvents.eventHandlers=[];JSEvents.deferredCalls=[]},registerRemoveEventListeners:function(){if(!JSEvents.removeEventListenersRegistered){__ATEXIT__.push(JSEvents.removeAllEventListeners);JSEvents.removeEventListenersRegistered=true}},deferredCalls:[],deferCall:function(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort(function(x,y){return x.precedence>2]=eventTypeId;GROWABLE_HEAP_I32()[varargs+4>>2]=eventData;GROWABLE_HEAP_I32()[varargs+8>>2]=userData;__emscripten_call_on_thread(0,targetThread,637534208,eventHandlerFunc,eventData,varargs);stackRestore(stackTop)},getTargetThreadForEventCallback:function(targetThread){switch(targetThread){case 1:return 0;case 2:return PThread.currentProxiedOperationCallerThread;default:return targetThread}},getNodeNameForTarget:function(target){if(!target)return\"\";if(target==window)return\"#window\";if(target==screen)return\"#screen\";return target&&target.nodeName?target.nodeName:\"\"},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function stringToNewUTF8(jsString){var length=lengthBytesUTF8(jsString)+1;var cString=_malloc(length);stringToUTF8(jsString,cString,length);return cString}function _emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height){var stackTop=stackSave();var varargs=stackAlloc(12);var targetCanvasPtr=0;if(targetCanvas){targetCanvasPtr=stringToNewUTF8(targetCanvas)}GROWABLE_HEAP_I32()[varargs>>2]=targetCanvasPtr;GROWABLE_HEAP_I32()[varargs+4>>2]=width;GROWABLE_HEAP_I32()[varargs+8>>2]=height;__emscripten_call_on_thread(0,targetThread,657457152,0,targetCanvasPtr,varargs);stackRestore(stackTop)}function _emscripten_set_offscreencanvas_size_on_target_thread(targetThread,targetCanvas,width,height){targetCanvas=targetCanvas?UTF8ToString(targetCanvas):\"\";_emscripten_set_offscreencanvas_size_on_target_thread_js(targetThread,targetCanvas,width,height)}function maybeCStringToJsString(cString){return cString>2?UTF8ToString(cString):cString}var specialHTMLTargets=[0,typeof document!==\"undefined\"?document:0,typeof window!==\"undefined\"?window:0];function findEventTarget(target){target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!==\"undefined\"?document.querySelector(target):undefined);return domElement}function findCanvasEventTarget(target){return findEventTarget(target)}function _emscripten_set_canvas_element_size_calling_thread(target,width,height){var canvas=findCanvasEventTarget(target);if(!canvas)return-4;if(canvas.canvasSharedPtr){GROWABLE_HEAP_I32()[canvas.canvasSharedPtr>>2]=width;GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+4>>2]=height}if(canvas.offscreenCanvas||!canvas.controlTransferredOffscreen){if(canvas.offscreenCanvas)canvas=canvas.offscreenCanvas;var autoResizeViewport=false;if(canvas.GLctxObject&&canvas.GLctxObject.GLctx){var prevViewport=canvas.GLctxObject.GLctx.getParameter(2978);autoResizeViewport=prevViewport[0]===0&&prevViewport[1]===0&&prevViewport[2]===canvas.width&&prevViewport[3]===canvas.height}canvas.width=width;canvas.height=height;if(autoResizeViewport){canvas.GLctxObject.GLctx.viewport(0,0,width,height)}}else if(canvas.canvasSharedPtr){var targetThread=GROWABLE_HEAP_I32()[canvas.canvasSharedPtr+8>>2];_emscripten_set_offscreencanvas_size_on_target_thread(targetThread,target,width,height);return 1}else{return-4}return 0}function _emscripten_set_canvas_element_size_main_thread(target,width,height){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(2,1,target,width,height);return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}function _emscripten_set_canvas_element_size(target,width,height){var canvas=findCanvasEventTarget(target);if(canvas){return _emscripten_set_canvas_element_size_calling_thread(target,width,height)}else{return _emscripten_set_canvas_element_size_main_thread(target,width,height)}}function _emscripten_set_current_thread_status(newStatus){}function _emscripten_set_thread_name(threadId,name){}function __webgl_enable_ANGLE_instanced_arrays(ctx){var ext=ctx.getExtension(\"ANGLE_instanced_arrays\");if(ext){ctx[\"vertexAttribDivisor\"]=function(index,divisor){ext[\"vertexAttribDivisorANGLE\"](index,divisor)};ctx[\"drawArraysInstanced\"]=function(mode,first,count,primcount){ext[\"drawArraysInstancedANGLE\"](mode,first,count,primcount)};ctx[\"drawElementsInstanced\"]=function(mode,count,type,indices,primcount){ext[\"drawElementsInstancedANGLE\"](mode,count,type,indices,primcount)};return 1}}function __webgl_enable_OES_vertex_array_object(ctx){var ext=ctx.getExtension(\"OES_vertex_array_object\");if(ext){ctx[\"createVertexArray\"]=function(){return ext[\"createVertexArrayOES\"]()};ctx[\"deleteVertexArray\"]=function(vao){ext[\"deleteVertexArrayOES\"](vao)};ctx[\"bindVertexArray\"]=function(vao){ext[\"bindVertexArrayOES\"](vao)};ctx[\"isVertexArray\"]=function(vao){return ext[\"isVertexArrayOES\"](vao)};return 1}}function __webgl_enable_WEBGL_draw_buffers(ctx){var ext=ctx.getExtension(\"WEBGL_draw_buffers\");if(ext){ctx[\"drawBuffers\"]=function(n,bufs){ext[\"drawBuffersWEBGL\"](n,bufs)};return 1}}function __webgl_enable_WEBGL_multi_draw(ctx){return!!(ctx.multiDrawWebgl=ctx.getExtension(\"WEBGL_multi_draw\"))}var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,recordError:function recordError(errorCode){if(!GL.lastError){GL.lastError=errorCode}},getNewId:function(table){var ret=GL.counter++;for(var i=table.length;i>2]:-1;source+=UTF8ToString(GROWABLE_HEAP_I32()[string+i*4>>2],len<0?undefined:len)}return source},createContext:function(canvas,webGLContextAttributes){var ctx=canvas.getContext(\"webgl\",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:function(ctx,webGLContextAttributes){var handle=_malloc(8);GROWABLE_HEAP_I32()[handle+4>>2]=_pthread_self();var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault===\"undefined\"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:function(contextHandle){GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext&&GL.currentContext.GLctx;return!(contextHandle&&!GLctx)},getContext:function(contextHandle){return GL.contexts[contextHandle]},deleteContext:function(contextHandle){if(GL.currentContext===GL.contexts[contextHandle])GL.currentContext=null;if(typeof JSEvents===\"object\")JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas);if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas)GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined;_free(GL.contexts[contextHandle].handle);GL.contexts[contextHandle]=null},initExtensions:function(context){if(!context)context=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;__webgl_enable_ANGLE_instanced_arrays(GLctx);__webgl_enable_OES_vertex_array_object(GLctx);__webgl_enable_WEBGL_draw_buffers(GLctx);GLctx.disjointTimerQueryExt=GLctx.getExtension(\"EXT_disjoint_timer_query\");__webgl_enable_WEBGL_multi_draw(GLctx);var exts=GLctx.getSupportedExtensions()||[];exts.forEach(function(ext){if(ext.indexOf(\"lose_context\")<0&&ext.indexOf(\"debug\")<0){GLctx.getExtension(ext)}})},populateUniformTable:function(program){var p=GL.programs[program];var ptable=GL.programInfos[program]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1};var utable=ptable.uniforms;var numUniforms=GLctx.getProgramParameter(p,35718);for(var i=0;i>2;var powerPreference=GROWABLE_HEAP_I32()[a+(24>>2)];var contextAttributes={\"alpha\":!!GROWABLE_HEAP_I32()[a+(0>>2)],\"depth\":!!GROWABLE_HEAP_I32()[a+(4>>2)],\"stencil\":!!GROWABLE_HEAP_I32()[a+(8>>2)],\"antialias\":!!GROWABLE_HEAP_I32()[a+(12>>2)],\"premultipliedAlpha\":!!GROWABLE_HEAP_I32()[a+(16>>2)],\"preserveDrawingBuffer\":!!GROWABLE_HEAP_I32()[a+(20>>2)],\"powerPreference\":__emscripten_webgl_power_preferences[powerPreference],\"failIfMajorPerformanceCaveat\":!!GROWABLE_HEAP_I32()[a+(28>>2)],majorVersion:GROWABLE_HEAP_I32()[a+(32>>2)],minorVersion:GROWABLE_HEAP_I32()[a+(36>>2)],enableExtensionsByDefault:GROWABLE_HEAP_I32()[a+(40>>2)],explicitSwapControl:GROWABLE_HEAP_I32()[a+(44>>2)],proxyContextToMainThread:GROWABLE_HEAP_I32()[a+(48>>2)],renderViaOffscreenBackBuffer:GROWABLE_HEAP_I32()[a+(52>>2)]};var canvas=findCanvasEventTarget(target);if(!canvas){return 0}if(contextAttributes.explicitSwapControl){return 0}var contextHandle=GL.createContext(canvas,contextAttributes);return contextHandle}function _emscripten_webgl_create_context(a0,a1){return _emscripten_webgl_do_create_context(a0,a1)}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=GROWABLE_HEAP_I32()[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(3,1,fd);return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(4,1,fd,offset_low,offset_high,whence,newOffset)}function _fd_write(fd,iov,iovcnt,pnum){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(5,1,fd,iov,iovcnt,pnum);var num=0;for(var i=0;i>2];var len=GROWABLE_HEAP_I32()[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}function _pthread_cleanup_pop(execute){var routine=PThread.threadExitHandlers.pop();if(execute)routine()}function _pthread_cleanup_push(routine,arg){PThread.threadExitHandlers.push(function(){wasmTable.get(routine)(arg)})}function spawnThread(threadParams){if(ENVIRONMENT_IS_PTHREAD)throw\"Internal Error! spawnThread() can only ever be called from main application thread!\";var worker=PThread.getNewWorker();if(worker.pthread!==undefined)throw\"Internal error!\";if(!threadParams.pthread_ptr)throw\"Internal error, no pthread ptr!\";PThread.runningWorkers.push(worker);var tlsMemory=_malloc(128*4);for(var i=0;i<128;++i){GROWABLE_HEAP_I32()[tlsMemory+i*4>>2]=0}var stackHigh=threadParams.stackBase+threadParams.stackSize;var pthread=PThread.pthreads[threadParams.pthread_ptr]={worker:worker,stackBase:threadParams.stackBase,stackSize:threadParams.stackSize,allocatedOwnStack:threadParams.allocatedOwnStack,threadInfoStruct:threadParams.pthread_ptr};var tis=pthread.threadInfoStruct>>2;Atomics.store(GROWABLE_HEAP_U32(),tis+(64>>2),threadParams.detached);Atomics.store(GROWABLE_HEAP_U32(),tis+(100>>2),tlsMemory);Atomics.store(GROWABLE_HEAP_U32(),tis+(40>>2),pthread.threadInfoStruct);Atomics.store(GROWABLE_HEAP_U32(),tis+(80>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(76>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104>>2),threadParams.stackSize);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+8>>2),stackHigh);Atomics.store(GROWABLE_HEAP_U32(),tis+(104+12>>2),threadParams.detached);var global_libc=_emscripten_get_global_libc();var global_locale=global_libc+40;Atomics.store(GROWABLE_HEAP_U32(),tis+(172>>2),global_locale);worker.pthread=pthread;var msg={\"cmd\":\"run\",\"start_routine\":threadParams.startRoutine,\"arg\":threadParams.arg,\"threadInfoStruct\":threadParams.pthread_ptr,\"stackBase\":threadParams.stackBase,\"stackSize\":threadParams.stackSize};worker.runPthread=function(){msg.time=performance.now();worker.postMessage(msg,threadParams.transferList)};if(worker.loaded){worker.runPthread();delete worker.runPthread}}function _pthread_create(pthread_ptr,attr,start_routine,arg){if(typeof SharedArrayBuffer===\"undefined\"){err(\"Current environment does not support SharedArrayBuffer, pthreads are not available!\");return 6}if(!pthread_ptr){err(\"pthread_create called with a null thread pointer!\");return 28}var transferList=[];var error=0;if(ENVIRONMENT_IS_PTHREAD&&(transferList.length===0||error)){return _emscripten_sync_run_in_main_thread_4(687865856,pthread_ptr,attr,start_routine,arg)}if(error)return error;var stackSize=0;var stackBase=0;var detached=0;if(attr&&attr!=-1){stackSize=GROWABLE_HEAP_I32()[attr>>2];stackSize+=81920;stackBase=GROWABLE_HEAP_I32()[attr+8>>2];detached=GROWABLE_HEAP_I32()[attr+12>>2]!==0}else{stackSize=2097152}var allocatedOwnStack=stackBase==0;if(allocatedOwnStack){stackBase=_memalign(16,stackSize)}else{stackBase-=stackSize;assert(stackBase>0)}var threadInfoStruct=_malloc(228);for(var i=0;i<228>>2;++i)GROWABLE_HEAP_U32()[(threadInfoStruct>>2)+i]=0;GROWABLE_HEAP_I32()[pthread_ptr>>2]=threadInfoStruct;GROWABLE_HEAP_I32()[threadInfoStruct+12>>2]=threadInfoStruct;var headPtr=threadInfoStruct+152;GROWABLE_HEAP_I32()[headPtr>>2]=headPtr;var threadParams={stackBase:stackBase,stackSize:stackSize,allocatedOwnStack:allocatedOwnStack,detached:detached,startRoutine:start_routine,pthread_ptr:threadInfoStruct,arg:arg,transferList:transferList};if(ENVIRONMENT_IS_PTHREAD){threadParams.cmd=\"spawnThread\";postMessage(threadParams,transferList)}else{spawnThread(threadParams)}return 0}function _sysconf(name){if(ENVIRONMENT_IS_PTHREAD)return _emscripten_proxy_to_main_thread_js(6,1,name);switch(name){case 30:return 16384;case 85:var maxHeapSize=2147483648;return maxHeapSize/16384;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:case 80:case 81:case 79:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:{if(typeof navigator===\"object\")return navigator[\"hardwareConcurrency\"]||1;return 1}}setErrNo(28);return-1}if(!ENVIRONMENT_IS_PTHREAD)PThread.initMainThreadBlock();var GLctx;var proxiedFunctionTable=[null,_atexit,_emscripten_set_canvas_element_size_main_thread,_fd_close,_fd_seek,_fd_write,_sysconf];var asmLibraryArg={\"e\":___assert_fail,\"r\":___call_main,\"x\":__emscripten_notify_thread_queue,\"b\":_abort,\"y\":_emscripten_asm_const_int,\"j\":_emscripten_conditional_set_current_thread_status,\"c\":_emscripten_futex_wait,\"d\":_emscripten_futex_wake,\"f\":_emscripten_get_now,\"p\":_emscripten_memcpy_big,\"z\":_emscripten_num_logical_cores,\"u\":_emscripten_receive_on_main_thread_js,\"q\":_emscripten_resize_heap,\"v\":_emscripten_set_canvas_element_size,\"i\":_emscripten_set_current_thread_status,\"t\":_emscripten_set_thread_name,\"w\":_emscripten_webgl_create_context,\"m\":_fd_close,\"n\":_fd_seek,\"g\":_fd_write,\"o\":initPthreadsJS,\"a\":wasmMemory||Module[\"wasmMemory\"],\"k\":_pthread_cleanup_pop,\"l\":_pthread_cleanup_push,\"h\":_pthread_create,\"s\":_sysconf};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"Ma\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"Na\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"Oa\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"Pa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"Qa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"Ra\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"Sa\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Ta\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ua\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Va\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Wa\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Xa\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Ya\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Za\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"_a\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"$a\"]).apply(null,arguments)};var ___errno_location=Module[\"___errno_location\"]=function(){return(___errno_location=Module[\"___errno_location\"]=Module[\"asm\"][\"ab\"]).apply(null,arguments)};var _emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=function(){return(_emscripten_get_global_libc=Module[\"_emscripten_get_global_libc\"]=Module[\"asm\"][\"bb\"]).apply(null,arguments)};var _pthread_self=Module[\"_pthread_self\"]=function(){return(_pthread_self=Module[\"_pthread_self\"]=Module[\"asm\"][\"cb\"]).apply(null,arguments)};var ___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=function(){return(___pthread_tsd_run_dtors=Module[\"___pthread_tsd_run_dtors\"]=Module[\"asm\"][\"db\"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=function(){return(_emscripten_main_thread_process_queued_calls=Module[\"_emscripten_main_thread_process_queued_calls\"]=Module[\"asm\"][\"eb\"]).apply(null,arguments)};var _emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=function(){return(_emscripten_current_thread_process_queued_calls=Module[\"_emscripten_current_thread_process_queued_calls\"]=Module[\"asm\"][\"fb\"]).apply(null,arguments)};var _emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=function(){return(_emscripten_register_main_browser_thread_id=Module[\"_emscripten_register_main_browser_thread_id\"]=Module[\"asm\"][\"gb\"]).apply(null,arguments)};var __emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=function(){return(__emscripten_do_dispatch_to_thread=Module[\"__emscripten_do_dispatch_to_thread\"]=Module[\"asm\"][\"hb\"]).apply(null,arguments)};var _emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=function(){return(_emscripten_sync_run_in_main_thread_4=Module[\"_emscripten_sync_run_in_main_thread_4\"]=Module[\"asm\"][\"ib\"]).apply(null,arguments)};var _emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=function(){return(_emscripten_run_in_main_runtime_thread_js=Module[\"_emscripten_run_in_main_runtime_thread_js\"]=Module[\"asm\"][\"jb\"]).apply(null,arguments)};var __emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=function(){return(__emscripten_call_on_thread=Module[\"__emscripten_call_on_thread\"]=Module[\"asm\"][\"kb\"]).apply(null,arguments)};var _emscripten_tls_init=Module[\"_emscripten_tls_init\"]=function(){return(_emscripten_tls_init=Module[\"_emscripten_tls_init\"]=Module[\"asm\"][\"lb\"]).apply(null,arguments)};var __emscripten_thread_init=Module[\"__emscripten_thread_init\"]=function(){return(__emscripten_thread_init=Module[\"__emscripten_thread_init\"]=Module[\"asm\"][\"mb\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"nb\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"ob\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"pb\"]).apply(null,arguments)};var _emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=function(){return(_emscripten_stack_set_limits=Module[\"_emscripten_stack_set_limits\"]=Module[\"asm\"][\"qb\"]).apply(null,arguments)};var _memalign=Module[\"_memalign\"]=function(){return(_memalign=Module[\"_memalign\"]=Module[\"asm\"][\"rb\"]).apply(null,arguments)};var __emscripten_allow_main_runtime_queued_calls=Module[\"__emscripten_allow_main_runtime_queued_calls\"]=9880;var __emscripten_main_thread_futex=Module[\"__emscripten_main_thread_futex\"]=11368;Module[\"cwrap\"]=cwrap;Module[\"PThread\"]=PThread;Module[\"PThread\"]=PThread;Module[\"wasmMemory\"]=wasmMemory;Module[\"ExitStatus\"]=ExitStatus;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}if(ENVIRONMENT_IS_PTHREAD){readyPromiseResolve(Module);postMessage({\"cmd\":\"loaded\"});return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;function exit(status,implicit){if(implicit&&noExitRuntime&&status===0){return}if(!implicit){if(ENVIRONMENT_IS_PTHREAD){postMessage({\"cmd\":\"exitProcess\",\"returnCode\":status});throw new ExitStatus(status)}else{}}if(noExitRuntime){}else{PThread.terminateAllThreads();EXITSTATUS=status;exitRuntime();if(Module[\"onExit\"])Module[\"onExit\"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}if(ENVIRONMENT_IS_PTHREAD){noExitRuntime=false;PThread.initWorker()}run();\n\n\n return WasmBackendModuleThreadedSimd.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModuleThreadedSimd;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModuleThreadedSimd; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModuleThreadedSimd\"] = WasmBackendModuleThreadedSimd;\n", "\nvar WasmBackendModule = (function() {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename;\n return (\nfunction(WasmBackendModule) {\n WasmBackendModule = WasmBackendModule || {};\n\nvar Module=typeof WasmBackendModule!==\"undefined\"?WasmBackendModule:{};var readyPromiseResolve,readyPromiseReject;Module[\"ready\"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram=\"./this.program\";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window===\"object\";ENVIRONMENT_IS_WORKER=typeof importScripts===\"function\";ENVIRONMENT_IS_NODE=typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory=\"\";function locateFile(path){if(Module[\"locateFile\"]){return Module[\"locateFile\"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require(\"path\").dirname(scriptDirectory)+\"/\"}else{scriptDirectory=__dirname+\"/\"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require(\"fs\");if(!nodePath)nodePath=require(\"path\");filename=nodePath[\"normalize\"](filename);return nodeFS[\"readFileSync\"](filename,binary?null:\"utf8\")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process[\"argv\"].length>1){thisProgram=process[\"argv\"][1].replace(/\\\\/g,\"/\")}arguments_=process[\"argv\"].slice(2);process[\"on\"](\"uncaughtException\",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process[\"on\"](\"unhandledRejection\",abort);quit_=function(status){process[\"exit\"](status)};Module[\"inspect\"]=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!=\"undefined\"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer===\"function\"){return new Uint8Array(readbuffer(f))}data=read(f,\"binary\");assert(typeof data===\"object\");return data};if(typeof scriptArgs!=\"undefined\"){arguments_=scriptArgs}else if(typeof arguments!=\"undefined\"){arguments_=arguments}if(typeof quit===\"function\"){quit_=function(status){quit(status)}}if(typeof print!==\"undefined\"){if(typeof console===\"undefined\")console={};console.log=print;console.warn=console.error=typeof printErr!==\"undefined\"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!==\"undefined\"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf(\"blob:\")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf(\"/\")+1)}else{scriptDirectory=\"\"}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,false);xhr.responseType=\"arraybuffer\";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open(\"GET\",url,true);xhr.responseType=\"arraybuffer\";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module[\"print\"]||console.log.bind(console);var err=Module[\"printErr\"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module[\"arguments\"])arguments_=Module[\"arguments\"];if(Module[\"thisProgram\"])thisProgram=Module[\"thisProgram\"];if(Module[\"quit\"])quit_=Module[\"quit\"];var wasmBinary;if(Module[\"wasmBinary\"])wasmBinary=Module[\"wasmBinary\"];var noExitRuntime=Module[\"noExitRuntime\"]||true;if(typeof WebAssembly!==\"object\"){abort(\"no native wasm support detected\")}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort(\"Assertion failed: \"+text)}}function getCFunc(ident){var func=Module[\"_\"+ident];assert(func,\"Cannot call unknown function \"+ident+\", make sure it is exported\");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={\"string\":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},\"array\":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType===\"string\")return UTF8ToString(ret);if(returnType===\"boolean\")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str=\"\";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):\"\"}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module[\"HEAP8\"]=HEAP8=new Int8Array(buf);Module[\"HEAP16\"]=HEAP16=new Int16Array(buf);Module[\"HEAP32\"]=HEAP32=new Int32Array(buf);Module[\"HEAPU8\"]=HEAPU8=new Uint8Array(buf);Module[\"HEAPU16\"]=HEAPU16=new Uint16Array(buf);Module[\"HEAPU32\"]=HEAPU32=new Uint32Array(buf);Module[\"HEAPF32\"]=HEAPF32=new Float32Array(buf);Module[\"HEAPF64\"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module[\"INITIAL_MEMORY\"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;__ATINIT__.push({func:function(){___wasm_call_ctors()}});function preRun(){if(Module[\"preRun\"]){if(typeof Module[\"preRun\"]==\"function\")Module[\"preRun\"]=[Module[\"preRun\"]];while(Module[\"preRun\"].length){addOnPreRun(Module[\"preRun\"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function postRun(){if(Module[\"postRun\"]){if(typeof Module[\"postRun\"]==\"function\")Module[\"postRun\"]=[Module[\"postRun\"]];while(Module[\"postRun\"].length){addOnPostRun(Module[\"postRun\"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module[\"monitorRunDependencies\"]){Module[\"monitorRunDependencies\"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module[\"preloadedImages\"]={};Module[\"preloadedAudios\"]={};function abort(what){if(Module[\"onAbort\"]){Module[\"onAbort\"](what)}what+=\"\";err(what);ABORT=true;EXITSTATUS=1;what=\"abort(\"+what+\"). Build with -s ASSERTIONS=1 for more info.\";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}function hasPrefix(str,prefix){return String.prototype.startsWith?str.startsWith(prefix):str.indexOf(prefix)===0}var dataURIPrefix=\"data:application/octet-stream;base64,\";function isDataURI(filename){return hasPrefix(filename,dataURIPrefix)}var fileURIPrefix=\"file://\";function isFileURI(filename){return hasPrefix(filename,fileURIPrefix)}var wasmBinaryFile=\"tfjs-backend-wasm.wasm\";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw\"both async and sync fetching of the wasm failed\"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch===\"function\"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){if(!response[\"ok\"]){throw\"failed to load wasm binary file at '\"+wasmBinaryFile+\"'\"}return response[\"arrayBuffer\"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={\"a\":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module[\"asm\"]=exports;wasmMemory=Module[\"asm\"][\"g\"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module[\"asm\"][\"m\"];removeRunDependency(\"wasm-instantiate\")}addRunDependency(\"wasm-instantiate\");function receiveInstantiatedSource(output){receiveInstance(output[\"instance\"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(receiver,function(reason){err(\"failed to asynchronously prepare wasm: \"+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming===\"function\"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch===\"function\"){return fetch(wasmBinaryFile,{credentials:\"same-origin\"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiatedSource,function(reason){err(\"wasm streaming compile failed: \"+reason);err(\"falling back to ArrayBuffer instantiation\");return instantiateArrayBuffer(receiveInstantiatedSource)})})}else{return instantiateArrayBuffer(receiveInstantiatedSource)}}if(Module[\"instantiateWasm\"]){try{var exports=Module[\"instantiateWasm\"](info,receiveInstance);return exports}catch(e){err(\"Module.instantiateWasm callback failed with error: \"+e);return false}}instantiateAsync().catch(readyPromiseReject);return{}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback==\"function\"){callback(Module);continue}var func=callback.func;if(typeof func===\"number\"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function _abort(){abort()}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function _emscripten_get_heap_size(){return HEAPU8.length}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=_emscripten_get_heap_size();var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}var SYSCALLS={mappings:{},buffers:[null,[],[]],printChar:function(stream,curr){var buffer=SYSCALLS.buffers[stream];if(curr===0||curr===10){(stream===1?out:err)(UTF8ArrayToString(buffer,0));buffer.length=0}else{buffer.push(curr)}},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},get64:function(low,high){return low}};function _fd_close(fd){return 0}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){}function _fd_write(fd,iov,iovcnt,pnum){var num=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];for(var j=0;j>2]=num;return 0}var asmLibraryArg={\"a\":_abort,\"d\":_emscripten_memcpy_big,\"e\":_emscripten_resize_heap,\"f\":_fd_close,\"c\":_fd_seek,\"b\":_fd_write};var asm=createWasm();var ___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=function(){return(___wasm_call_ctors=Module[\"___wasm_call_ctors\"]=Module[\"asm\"][\"h\"]).apply(null,arguments)};var _init=Module[\"_init\"]=function(){return(_init=Module[\"_init\"]=Module[\"asm\"][\"i\"]).apply(null,arguments)};var _register_tensor=Module[\"_register_tensor\"]=function(){return(_register_tensor=Module[\"_register_tensor\"]=Module[\"asm\"][\"j\"]).apply(null,arguments)};var _dispose_data=Module[\"_dispose_data\"]=function(){return(_dispose_data=Module[\"_dispose_data\"]=Module[\"asm\"][\"k\"]).apply(null,arguments)};var _dispose=Module[\"_dispose\"]=function(){return(_dispose=Module[\"_dispose\"]=Module[\"asm\"][\"l\"]).apply(null,arguments)};var _Abs=Module[\"_Abs\"]=function(){return(_Abs=Module[\"_Abs\"]=Module[\"asm\"][\"n\"]).apply(null,arguments)};var _Add=Module[\"_Add\"]=function(){return(_Add=Module[\"_Add\"]=Module[\"asm\"][\"o\"]).apply(null,arguments)};var _AddN=Module[\"_AddN\"]=function(){return(_AddN=Module[\"_AddN\"]=Module[\"asm\"][\"p\"]).apply(null,arguments)};var _ArgMax=Module[\"_ArgMax\"]=function(){return(_ArgMax=Module[\"_ArgMax\"]=Module[\"asm\"][\"q\"]).apply(null,arguments)};var _AvgPool=Module[\"_AvgPool\"]=function(){return(_AvgPool=Module[\"_AvgPool\"]=Module[\"asm\"][\"r\"]).apply(null,arguments)};var _BatchMatMul=Module[\"_BatchMatMul\"]=function(){return(_BatchMatMul=Module[\"_BatchMatMul\"]=Module[\"asm\"][\"s\"]).apply(null,arguments)};var _Ceil=Module[\"_Ceil\"]=function(){return(_Ceil=Module[\"_Ceil\"]=Module[\"asm\"][\"t\"]).apply(null,arguments)};var _ClipByValue=Module[\"_ClipByValue\"]=function(){return(_ClipByValue=Module[\"_ClipByValue\"]=Module[\"asm\"][\"u\"]).apply(null,arguments)};var _Conv2D=Module[\"_Conv2D\"]=function(){return(_Conv2D=Module[\"_Conv2D\"]=Module[\"asm\"][\"v\"]).apply(null,arguments)};var _Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=function(){return(_Conv2DBackpropInput=Module[\"_Conv2DBackpropInput\"]=Module[\"asm\"][\"w\"]).apply(null,arguments)};var _Cos=Module[\"_Cos\"]=function(){return(_Cos=Module[\"_Cos\"]=Module[\"asm\"][\"x\"]).apply(null,arguments)};var _CropAndResize=Module[\"_CropAndResize\"]=function(){return(_CropAndResize=Module[\"_CropAndResize\"]=Module[\"asm\"][\"y\"]).apply(null,arguments)};var _Cumsum=Module[\"_Cumsum\"]=function(){return(_Cumsum=Module[\"_Cumsum\"]=Module[\"asm\"][\"z\"]).apply(null,arguments)};var _DepthToSpace=Module[\"_DepthToSpace\"]=function(){return(_DepthToSpace=Module[\"_DepthToSpace\"]=Module[\"asm\"][\"A\"]).apply(null,arguments)};var _DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=function(){return(_DepthwiseConv2dNative=Module[\"_DepthwiseConv2dNative\"]=Module[\"asm\"][\"B\"]).apply(null,arguments)};var _Equal=Module[\"_Equal\"]=function(){return(_Equal=Module[\"_Equal\"]=Module[\"asm\"][\"C\"]).apply(null,arguments)};var _Exp=Module[\"_Exp\"]=function(){return(_Exp=Module[\"_Exp\"]=Module[\"asm\"][\"D\"]).apply(null,arguments)};var _FlipLeftRight=Module[\"_FlipLeftRight\"]=function(){return(_FlipLeftRight=Module[\"_FlipLeftRight\"]=Module[\"asm\"][\"E\"]).apply(null,arguments)};var _Floor=Module[\"_Floor\"]=function(){return(_Floor=Module[\"_Floor\"]=Module[\"asm\"][\"F\"]).apply(null,arguments)};var _FloorDiv=Module[\"_FloorDiv\"]=function(){return(_FloorDiv=Module[\"_FloorDiv\"]=Module[\"asm\"][\"G\"]).apply(null,arguments)};var _FusedBatchNorm=Module[\"_FusedBatchNorm\"]=function(){return(_FusedBatchNorm=Module[\"_FusedBatchNorm\"]=Module[\"asm\"][\"H\"]).apply(null,arguments)};var _FusedConv2D=Module[\"_FusedConv2D\"]=function(){return(_FusedConv2D=Module[\"_FusedConv2D\"]=Module[\"asm\"][\"I\"]).apply(null,arguments)};var _FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=function(){return(_FusedDepthwiseConv2D=Module[\"_FusedDepthwiseConv2D\"]=Module[\"asm\"][\"J\"]).apply(null,arguments)};var _Gather=Module[\"_Gather\"]=function(){return(_Gather=Module[\"_Gather\"]=Module[\"asm\"][\"K\"]).apply(null,arguments)};var _GatherNd=Module[\"_GatherNd\"]=function(){return(_GatherNd=Module[\"_GatherNd\"]=Module[\"asm\"][\"L\"]).apply(null,arguments)};var _Greater=Module[\"_Greater\"]=function(){return(_Greater=Module[\"_Greater\"]=Module[\"asm\"][\"M\"]).apply(null,arguments)};var _GreaterEqual=Module[\"_GreaterEqual\"]=function(){return(_GreaterEqual=Module[\"_GreaterEqual\"]=Module[\"asm\"][\"N\"]).apply(null,arguments)};var _LeakyRelu=Module[\"_LeakyRelu\"]=function(){return(_LeakyRelu=Module[\"_LeakyRelu\"]=Module[\"asm\"][\"O\"]).apply(null,arguments)};var _Less=Module[\"_Less\"]=function(){return(_Less=Module[\"_Less\"]=Module[\"asm\"][\"P\"]).apply(null,arguments)};var _LessEqual=Module[\"_LessEqual\"]=function(){return(_LessEqual=Module[\"_LessEqual\"]=Module[\"asm\"][\"Q\"]).apply(null,arguments)};var _Log=Module[\"_Log\"]=function(){return(_Log=Module[\"_Log\"]=Module[\"asm\"][\"R\"]).apply(null,arguments)};var _LogicalAnd=Module[\"_LogicalAnd\"]=function(){return(_LogicalAnd=Module[\"_LogicalAnd\"]=Module[\"asm\"][\"S\"]).apply(null,arguments)};var _Max=Module[\"_Max\"]=function(){return(_Max=Module[\"_Max\"]=Module[\"asm\"][\"T\"]).apply(null,arguments)};var _MaxPool=Module[\"_MaxPool\"]=function(){return(_MaxPool=Module[\"_MaxPool\"]=Module[\"asm\"][\"U\"]).apply(null,arguments)};var _Maximum=Module[\"_Maximum\"]=function(){return(_Maximum=Module[\"_Maximum\"]=Module[\"asm\"][\"V\"]).apply(null,arguments)};var _Mean=Module[\"_Mean\"]=function(){return(_Mean=Module[\"_Mean\"]=Module[\"asm\"][\"W\"]).apply(null,arguments)};var _Min=Module[\"_Min\"]=function(){return(_Min=Module[\"_Min\"]=Module[\"asm\"][\"X\"]).apply(null,arguments)};var _Minimum=Module[\"_Minimum\"]=function(){return(_Minimum=Module[\"_Minimum\"]=Module[\"asm\"][\"Y\"]).apply(null,arguments)};var _Multiply=Module[\"_Multiply\"]=function(){return(_Multiply=Module[\"_Multiply\"]=Module[\"asm\"][\"Z\"]).apply(null,arguments)};var _Neg=Module[\"_Neg\"]=function(){return(_Neg=Module[\"_Neg\"]=Module[\"asm\"][\"_\"]).apply(null,arguments)};var _NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=function(){return(_NonMaxSuppressionV3=Module[\"_NonMaxSuppressionV3\"]=Module[\"asm\"][\"$\"]).apply(null,arguments)};var _NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=function(){return(_NonMaxSuppressionV4=Module[\"_NonMaxSuppressionV4\"]=Module[\"asm\"][\"aa\"]).apply(null,arguments)};var _NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=function(){return(_NonMaxSuppressionV5=Module[\"_NonMaxSuppressionV5\"]=Module[\"asm\"][\"ba\"]).apply(null,arguments)};var _NotEqual=Module[\"_NotEqual\"]=function(){return(_NotEqual=Module[\"_NotEqual\"]=Module[\"asm\"][\"ca\"]).apply(null,arguments)};var _OneHot=Module[\"_OneHot\"]=function(){return(_OneHot=Module[\"_OneHot\"]=Module[\"asm\"][\"da\"]).apply(null,arguments)};var _PadV2=Module[\"_PadV2\"]=function(){return(_PadV2=Module[\"_PadV2\"]=Module[\"asm\"][\"ea\"]).apply(null,arguments)};var _Pow=Module[\"_Pow\"]=function(){return(_Pow=Module[\"_Pow\"]=Module[\"asm\"][\"fa\"]).apply(null,arguments)};var _Prelu=Module[\"_Prelu\"]=function(){return(_Prelu=Module[\"_Prelu\"]=Module[\"asm\"][\"ga\"]).apply(null,arguments)};var _Prod=Module[\"_Prod\"]=function(){return(_Prod=Module[\"_Prod\"]=Module[\"asm\"][\"ha\"]).apply(null,arguments)};var _RealDiv=Module[\"_RealDiv\"]=function(){return(_RealDiv=Module[\"_RealDiv\"]=Module[\"asm\"][\"ia\"]).apply(null,arguments)};var _Relu=Module[\"_Relu\"]=function(){return(_Relu=Module[\"_Relu\"]=Module[\"asm\"][\"ja\"]).apply(null,arguments)};var _Relu6=Module[\"_Relu6\"]=function(){return(_Relu6=Module[\"_Relu6\"]=Module[\"asm\"][\"ka\"]).apply(null,arguments)};var _ResizeBilinear=Module[\"_ResizeBilinear\"]=function(){return(_ResizeBilinear=Module[\"_ResizeBilinear\"]=Module[\"asm\"][\"la\"]).apply(null,arguments)};var _Reverse=Module[\"_Reverse\"]=function(){return(_Reverse=Module[\"_Reverse\"]=Module[\"asm\"][\"ma\"]).apply(null,arguments)};var _RotateWithOffset=Module[\"_RotateWithOffset\"]=function(){return(_RotateWithOffset=Module[\"_RotateWithOffset\"]=Module[\"asm\"][\"na\"]).apply(null,arguments)};var _Round=Module[\"_Round\"]=function(){return(_Round=Module[\"_Round\"]=Module[\"asm\"][\"oa\"]).apply(null,arguments)};var _Rsqrt=Module[\"_Rsqrt\"]=function(){return(_Rsqrt=Module[\"_Rsqrt\"]=Module[\"asm\"][\"pa\"]).apply(null,arguments)};var _ScatterNd=Module[\"_ScatterNd\"]=function(){return(_ScatterNd=Module[\"_ScatterNd\"]=Module[\"asm\"][\"qa\"]).apply(null,arguments)};var _SelectV2=Module[\"_SelectV2\"]=function(){return(_SelectV2=Module[\"_SelectV2\"]=Module[\"asm\"][\"ra\"]).apply(null,arguments)};var _Sigmoid=Module[\"_Sigmoid\"]=function(){return(_Sigmoid=Module[\"_Sigmoid\"]=Module[\"asm\"][\"sa\"]).apply(null,arguments)};var _Sin=Module[\"_Sin\"]=function(){return(_Sin=Module[\"_Sin\"]=Module[\"asm\"][\"ta\"]).apply(null,arguments)};var _Softmax=Module[\"_Softmax\"]=function(){return(_Softmax=Module[\"_Softmax\"]=Module[\"asm\"][\"ua\"]).apply(null,arguments)};var _Sqrt=Module[\"_Sqrt\"]=function(){return(_Sqrt=Module[\"_Sqrt\"]=Module[\"asm\"][\"va\"]).apply(null,arguments)};var _Square=Module[\"_Square\"]=function(){return(_Square=Module[\"_Square\"]=Module[\"asm\"][\"wa\"]).apply(null,arguments)};var _SquaredDifference=Module[\"_SquaredDifference\"]=function(){return(_SquaredDifference=Module[\"_SquaredDifference\"]=Module[\"asm\"][\"xa\"]).apply(null,arguments)};var _Step=Module[\"_Step\"]=function(){return(_Step=Module[\"_Step\"]=Module[\"asm\"][\"ya\"]).apply(null,arguments)};var _StridedSlice=Module[\"_StridedSlice\"]=function(){return(_StridedSlice=Module[\"_StridedSlice\"]=Module[\"asm\"][\"za\"]).apply(null,arguments)};var _Sub=Module[\"_Sub\"]=function(){return(_Sub=Module[\"_Sub\"]=Module[\"asm\"][\"Aa\"]).apply(null,arguments)};var _Sum=Module[\"_Sum\"]=function(){return(_Sum=Module[\"_Sum\"]=Module[\"asm\"][\"Ba\"]).apply(null,arguments)};var _Tanh=Module[\"_Tanh\"]=function(){return(_Tanh=Module[\"_Tanh\"]=Module[\"asm\"][\"Ca\"]).apply(null,arguments)};var _Tile=Module[\"_Tile\"]=function(){return(_Tile=Module[\"_Tile\"]=Module[\"asm\"][\"Da\"]).apply(null,arguments)};var _TopK=Module[\"_TopK\"]=function(){return(_TopK=Module[\"_TopK\"]=Module[\"asm\"][\"Ea\"]).apply(null,arguments)};var _Transpose=Module[\"_Transpose\"]=function(){return(_Transpose=Module[\"_Transpose\"]=Module[\"asm\"][\"Fa\"]).apply(null,arguments)};var __FusedMatMul=Module[\"__FusedMatMul\"]=function(){return(__FusedMatMul=Module[\"__FusedMatMul\"]=Module[\"asm\"][\"Ga\"]).apply(null,arguments)};var _malloc=Module[\"_malloc\"]=function(){return(_malloc=Module[\"_malloc\"]=Module[\"asm\"][\"Ha\"]).apply(null,arguments)};var _free=Module[\"_free\"]=function(){return(_free=Module[\"_free\"]=Module[\"asm\"][\"Ia\"]).apply(null,arguments)};var stackSave=Module[\"stackSave\"]=function(){return(stackSave=Module[\"stackSave\"]=Module[\"asm\"][\"Ja\"]).apply(null,arguments)};var stackRestore=Module[\"stackRestore\"]=function(){return(stackRestore=Module[\"stackRestore\"]=Module[\"asm\"][\"Ka\"]).apply(null,arguments)};var stackAlloc=Module[\"stackAlloc\"]=function(){return(stackAlloc=Module[\"stackAlloc\"]=Module[\"asm\"][\"La\"]).apply(null,arguments)};Module[\"cwrap\"]=cwrap;var calledRun;function ExitStatus(status){this.name=\"ExitStatus\";this.message=\"Program terminated with exit(\"+status+\")\";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module[\"calledRun\"]=true;if(ABORT)return;initRuntime();preMain();readyPromiseResolve(Module);if(Module[\"onRuntimeInitialized\"])Module[\"onRuntimeInitialized\"]();postRun()}if(Module[\"setStatus\"]){Module[\"setStatus\"](\"Running...\");setTimeout(function(){setTimeout(function(){Module[\"setStatus\"](\"\")},1);doRun()},1)}else{doRun()}}Module[\"run\"]=run;if(Module[\"preInit\"]){if(typeof Module[\"preInit\"]==\"function\")Module[\"preInit\"]=[Module[\"preInit\"]];while(Module[\"preInit\"].length>0){Module[\"preInit\"].pop()()}}run();\n\n\n return WasmBackendModule.ready\n}\n);\n})();\nif (typeof exports === 'object' && typeof module === 'object')\n module.exports = WasmBackendModule;\nelse if (typeof define === 'function' && define['amd'])\n define([], function() { return WasmBackendModule; });\nelse if (typeof exports === 'object')\n exports[\"WasmBackendModule\"] = WasmBackendModule;\n", "// A port of an algorithm by Johannes Baag\u00F8e , 2010\n// http://baagoe.com/en/RandomMusings/javascript/\n// https://github.com/nquinlan/better-random-numbers-for-javascript-mirror\n// Original work is under MIT license -\n\n// Copyright (C) 2010 by Johannes Baag\u00F8e \n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n// \n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n\n\n(function(global, module, define) {\n\nfunction Alea(seed) {\n var me = this, mash = Mash();\n\n me.next = function() {\n var t = 2091639 * me.s0 + me.c * 2.3283064365386963e-10; // 2^-32\n me.s0 = me.s1;\n me.s1 = me.s2;\n return me.s2 = t - (me.c = t | 0);\n };\n\n // Apply the seeding algorithm from Baagoe.\n me.c = 1;\n me.s0 = mash(' ');\n me.s1 = mash(' ');\n me.s2 = mash(' ');\n me.s0 -= mash(seed);\n if (me.s0 < 0) { me.s0 += 1; }\n me.s1 -= mash(seed);\n if (me.s1 < 0) { me.s1 += 1; }\n me.s2 -= mash(seed);\n if (me.s2 < 0) { me.s2 += 1; }\n mash = null;\n}\n\nfunction copy(f, t) {\n t.c = f.c;\n t.s0 = f.s0;\n t.s1 = f.s1;\n t.s2 = f.s2;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new Alea(seed),\n state = opts && opts.state,\n prng = xg.next;\n prng.int32 = function() { return (xg.next() * 0x100000000) | 0; }\n prng.double = function() {\n return prng() + (prng() * 0x200000 | 0) * 1.1102230246251565e-16; // 2^-53\n };\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nfunction Mash() {\n var n = 0xefc8249d;\n\n var mash = function(data) {\n data = data.toString();\n for (var i = 0; i < data.length; i++) {\n n += data.charCodeAt(i);\n var h = 0.02519603282416938 * n;\n n = h >>> 0;\n h -= n;\n h *= n;\n n = h >>> 0;\n h -= n;\n n += h * 0x100000000; // 2^32\n }\n return (n >>> 0) * 2.3283064365386963e-10; // 2^-32\n };\n\n return mash;\n}\n\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.alea = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xor128\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n\n // Set up generator function.\n me.next = function() {\n var t = me.x ^ (me.x << 11);\n me.x = me.y;\n me.y = me.z;\n me.z = me.w;\n return me.w ^= (me.w >>> 19) ^ t ^ (t >>> 8);\n };\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor128 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorwow\" prng algorithm by\n// George Marsaglia. See http://www.jstatsoft.org/v08/i14/paper\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var t = (me.x ^ (me.x >>> 2));\n me.x = me.y; me.y = me.z; me.z = me.w; me.w = me.v;\n return (me.d = (me.d + 362437 | 0)) +\n (me.v = (me.v ^ (me.v << 4)) ^ (t ^ (t << 1))) | 0;\n };\n\n me.x = 0;\n me.y = 0;\n me.z = 0;\n me.w = 0;\n me.v = 0;\n\n if (seed === (seed | 0)) {\n // Integer seed.\n me.x = seed;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 64; k++) {\n me.x ^= strseed.charCodeAt(k) | 0;\n if (k == strseed.length) {\n me.d = me.x << 10 ^ me.x >>> 4;\n }\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.x = f.x;\n t.y = f.y;\n t.z = f.z;\n t.w = f.w;\n t.v = f.v;\n t.d = f.d;\n return t;\n}\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorwow = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "// A Javascript implementaion of the \"xorshift7\" algorithm by\n// Fran\u00E7ois Panneton and Pierre L'ecuyer:\n// \"On the Xorgshift Random Number Generators\"\n// http://saluc.engr.uconn.edu/refs/crypto/rng/panneton05onthexorshift.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n // Update xor generator.\n var X = me.x, i = me.i, t, v, w;\n t = X[i]; t ^= (t >>> 7); v = t ^ (t << 24);\n t = X[(i + 1) & 7]; v ^= t ^ (t >>> 10);\n t = X[(i + 3) & 7]; v ^= t ^ (t >>> 3);\n t = X[(i + 4) & 7]; v ^= t ^ (t << 7);\n t = X[(i + 7) & 7]; t = t ^ (t << 13); v ^= t ^ (t << 9);\n X[i] = v;\n me.i = (i + 1) & 7;\n return v;\n };\n\n function init(me, seed) {\n var j, w, X = [];\n\n if (seed === (seed | 0)) {\n // Seed state array using a 32-bit integer.\n w = X[0] = seed;\n } else {\n // Seed state using a string.\n seed = '' + seed;\n for (j = 0; j < seed.length; ++j) {\n X[j & 7] = (X[j & 7] << 15) ^\n (seed.charCodeAt(j) + X[(j + 1) & 7] << 13);\n }\n }\n // Enforce an array length of 8, not all zeroes.\n while (X.length < 8) X.push(0);\n for (j = 0; j < 8 && X[j] === 0; ++j);\n if (j == 8) w = X[7] = -1; else w = X[j];\n\n me.x = X;\n me.i = 0;\n\n // Discard an initial 256 values.\n for (j = 256; j > 0; --j) {\n me.next();\n }\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.x = f.x.slice();\n t.i = f.i;\n return t;\n}\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.x) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xorshift7 = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n", "// A Javascript implementaion of Richard Brent's Xorgens xor4096 algorithm.\n//\n// This fast non-cryptographic random number generator is designed for\n// use in Monte-Carlo algorithms. It combines a long-period xorshift\n// generator with a Weyl generator, and it passes all common batteries\n// of stasticial tests for randomness while consuming only a few nanoseconds\n// for each prng generated. For background on the generator, see Brent's\n// paper: \"Some long-period random number generators using shifts and xors.\"\n// http://arxiv.org/pdf/1004.3115v1.pdf\n//\n// Usage:\n//\n// var xor4096 = require('xor4096');\n// random = xor4096(1); // Seed with int32 or string.\n// assert.equal(random(), 0.1520436450538547); // (0, 1) range, 53 bits.\n// assert.equal(random.int32(), 1806534897); // signed int32, 32 bits.\n//\n// For nonzero numeric keys, this impelementation provides a sequence\n// identical to that by Brent's xorgens 3 implementaion in C. This\n// implementation also provides for initalizing the generator with\n// string seeds, or for saving and restoring the state of the generator.\n//\n// On Chrome, this prng benchmarks about 2.1 times slower than\n// Javascript's built-in Math.random().\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this;\n\n // Set up generator function.\n me.next = function() {\n var w = me.w,\n X = me.X, i = me.i, t, v;\n // Update Weyl generator.\n me.w = w = (w + 0x61c88647) | 0;\n // Update xor generator.\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n // Update Xor generator array state.\n v = X[i] = v ^ t;\n me.i = i;\n // Result is the combination.\n return (v + (w ^ (w >>> 16))) | 0;\n };\n\n function init(me, seed) {\n var t, v, i, j, w, X = [], limit = 128;\n if (seed === (seed | 0)) {\n // Numeric seeds initialize v, which is used to generates X.\n v = seed;\n seed = null;\n } else {\n // String seeds are mixed into v and X one character at a time.\n seed = seed + '\\0';\n v = 0;\n limit = Math.max(limit, seed.length);\n }\n // Initialize circular array and weyl value.\n for (i = 0, j = -32; j < limit; ++j) {\n // Put the unicode characters into the array, and shuffle them.\n if (seed) v ^= seed.charCodeAt((j + 32) % seed.length);\n // After 32 shuffles, take v as the starting w value.\n if (j === 0) w = v;\n v ^= v << 10;\n v ^= v >>> 15;\n v ^= v << 4;\n v ^= v >>> 13;\n if (j >= 0) {\n w = (w + 0x61c88647) | 0; // Weyl.\n t = (X[j & 127] ^= (v + w)); // Combine xor and weyl to init array.\n i = (0 == t) ? i + 1 : 0; // Count zeroes.\n }\n }\n // We have detected all zeroes; make the key nonzero.\n if (i >= 128) {\n X[(seed && seed.length || 0) & 127] = -1;\n }\n // Run the generator 512 times to further mix the state before using it.\n // Factoring this as a function slows the main generator, so it is just\n // unrolled here. The weyl generator is not advanced while warming up.\n i = 127;\n for (j = 4 * 128; j > 0; --j) {\n v = X[(i + 34) & 127];\n t = X[i = ((i + 1) & 127)];\n v ^= v << 13;\n t ^= t << 17;\n v ^= v >>> 15;\n t ^= t >>> 12;\n X[i] = v ^ t;\n }\n // Storing state as object members is faster than using closure variables.\n me.w = w;\n me.X = X;\n me.i = i;\n }\n\n init(me, seed);\n}\n\nfunction copy(f, t) {\n t.i = f.i;\n t.w = f.w;\n t.X = f.X.slice();\n return t;\n};\n\nfunction impl(seed, opts) {\n if (seed == null) seed = +(new Date);\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (state.X) copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.xor4096 = impl;\n}\n\n})(\n this, // window object or global\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n", "// A Javascript implementaion of the \"Tyche-i\" prng algorithm by\n// Samuel Neves and Filipe Araujo.\n// See https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n\n(function(global, module, define) {\n\nfunction XorGen(seed) {\n var me = this, strseed = '';\n\n // Set up generator function.\n me.next = function() {\n var b = me.b, c = me.c, d = me.d, a = me.a;\n b = (b << 25) ^ (b >>> 7) ^ c;\n c = (c - d) | 0;\n d = (d << 24) ^ (d >>> 8) ^ a;\n a = (a - b) | 0;\n me.b = b = (b << 20) ^ (b >>> 12) ^ c;\n me.c = c = (c - d) | 0;\n me.d = (d << 16) ^ (c >>> 16) ^ a;\n return me.a = (a - b) | 0;\n };\n\n /* The following is non-inverted tyche, which has better internal\n * bit diffusion, but which is about 25% slower than tyche-i in JS.\n me.next = function() {\n var a = me.a, b = me.b, c = me.c, d = me.d;\n a = (me.a + me.b | 0) >>> 0;\n d = me.d ^ a; d = d << 16 ^ d >>> 16;\n c = me.c + d | 0;\n b = me.b ^ c; b = b << 12 ^ d >>> 20;\n me.a = a = a + b | 0;\n d = d ^ a; me.d = d = d << 8 ^ d >>> 24;\n me.c = c = c + d | 0;\n b = b ^ c;\n return me.b = (b << 7 ^ b >>> 25);\n }\n */\n\n me.a = 0;\n me.b = 0;\n me.c = 2654435769 | 0;\n me.d = 1367130551;\n\n if (seed === Math.floor(seed)) {\n // Integer seed.\n me.a = (seed / 0x100000000) | 0;\n me.b = seed | 0;\n } else {\n // String seed.\n strseed += seed;\n }\n\n // Mix in string seed, then discard an initial batch of 64 values.\n for (var k = 0; k < strseed.length + 20; k++) {\n me.b ^= strseed.charCodeAt(k) | 0;\n me.next();\n }\n}\n\nfunction copy(f, t) {\n t.a = f.a;\n t.b = f.b;\n t.c = f.c;\n t.d = f.d;\n return t;\n};\n\nfunction impl(seed, opts) {\n var xg = new XorGen(seed),\n state = opts && opts.state,\n prng = function() { return (xg.next() >>> 0) / 0x100000000; };\n prng.double = function() {\n do {\n var top = xg.next() >>> 11,\n bot = (xg.next() >>> 0) / 0x100000000,\n result = (top + bot) / (1 << 21);\n } while (result === 0);\n return result;\n };\n prng.int32 = xg.next;\n prng.quick = prng;\n if (state) {\n if (typeof(state) == 'object') copy(state, xg);\n prng.state = function() { return copy(xg, {}); }\n }\n return prng;\n}\n\nif (module && module.exports) {\n module.exports = impl;\n} else if (define && define.amd) {\n define(function() { return impl; });\n} else {\n this.tychei = impl;\n}\n\n})(\n this,\n (typeof module) == 'object' && module, // present in node.js\n (typeof define) == 'function' && define // present with an AMD loader\n);\n\n\n", "/*\nCopyright 2014 David Bau.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n(function (pool, math) {\n//\n// The following constants are related to IEEE 754 limits.\n//\n\n// Detect the global object, even if operating in strict mode.\n// http://stackoverflow.com/a/14387057/265298\nvar global = (0, eval)('this'),\n width = 256, // each RC4 output is 0 <= x < 256\n chunks = 6, // at least six RC4 outputs for each double\n digits = 52, // there are 52 significant digits in a double\n rngname = 'random', // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n\n//\n// seedrandom()\n// This is the seedrandom function described above.\n//\nfunction seedrandom(seed, options, callback) {\n var key = [];\n options = (options == true) ? { entropy: true } : (options || {});\n\n // Flatten the seed string or build one from local entropy if needed.\n var shortseed = mixkey(flatten(\n options.entropy ? [seed, tostring(pool)] :\n (seed == null) ? autoseed() : seed, 3), key);\n\n // Use the seed to initialize an ARC4 generator.\n var arc4 = new ARC4(key);\n\n // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n var prng = function() {\n var n = arc4.g(chunks), // Start with a numerator n < 2 ^ 48\n d = startdenom, // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n while (n < significance) { // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n d *= width; // denominator and generating a\n x = arc4.g(1); // new least-significant-byte.\n }\n while (n >= overflow) { // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n d /= 2; // right using integer math until\n x >>>= 1; // we have exactly the desired bits.\n }\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function() { return arc4.g(4) | 0; }\n prng.quick = function() { return arc4.g(4) / 0x100000000; }\n prng.double = prng;\n\n // Mix the randomness into accumulated entropy.\n mixkey(tostring(arc4.S), pool);\n\n // Calling convention: what to return as a function of prng, seed, is_math.\n return (options.pass || callback ||\n function(prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) { copy(state, arc4); }\n // Only provide the .state method if requested via options.state.\n prng.state = function() { return copy(arc4, {}); }\n }\n\n // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n if (is_math_call) { math[rngname] = prng; return seed; }\n\n // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(\n prng,\n shortseed,\n 'global' in options ? options.global : (this == math),\n options.state);\n}\nmath['seed' + rngname] = seedrandom;\n\n//\n// ARC4\n//\n// An ARC4 implementation. The constructor takes a key in the form of\n// an array of at most (width) integers that should be 0 <= x < (width).\n//\n// The g(count) method returns a pseudorandom integer that concatenates\n// the next (count) outputs from ARC4. Its return value is a number x\n// that is in the range 0 <= x < (width ^ count).\n//\nfunction ARC4(key) {\n var t, keylen = key.length,\n me = this, i = 0, j = me.i = me.j = 0, s = me.S = [];\n\n // The empty key [] is treated as [0].\n if (!keylen) { key = [keylen++]; }\n\n // Set up S using the standard key scheduling algorithm.\n while (i < width) {\n s[i] = i++;\n }\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & (j + key[i % keylen] + (t = s[i]))];\n s[j] = t;\n }\n\n // The \"g\" method returns the next (count) outputs as one number.\n (me.g = function(count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t, r = 0,\n i = me.i, j = me.j, s = me.S;\n while (count--) {\n t = s[i = mask & (i + 1)];\n r = r * width + s[mask & ((s[i] = s[j = mask & (j + t)]) + (s[j] = t))];\n }\n me.i = i; me.j = j;\n return r;\n // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n })(width);\n}\n\n//\n// copy()\n// Copies internal state of ARC4 to or from a plain object.\n//\nfunction copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n};\n\n//\n// flatten()\n// Converts an object tree to nested arrays of strings.\n//\nfunction flatten(obj, depth) {\n var result = [], typ = (typeof obj), prop;\n if (depth && typ == 'object') {\n for (prop in obj) {\n try { result.push(flatten(obj[prop], depth - 1)); } catch (e) {}\n }\n }\n return (result.length ? result : typ == 'string' ? obj : obj + '\\0');\n}\n\n//\n// mixkey()\n// Mixes a string seed into a key that is an array of integers, and\n// returns a shortened string seed that is equivalent to the result key.\n//\nfunction mixkey(seed, key) {\n var stringseed = seed + '', smear, j = 0;\n while (j < stringseed.length) {\n key[mask & j] =\n mask & ((smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++));\n }\n return tostring(key);\n}\n\n//\n// autoseed()\n// Returns an object for autoseeding, using window.crypto and Node crypto\n// module if available.\n//\nfunction autoseed() {\n try {\n var out;\n if (nodecrypto && (out = nodecrypto.randomBytes)) {\n // The use of 'out' to remember randomBytes makes tight minified code.\n out = out(width);\n } else {\n out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n }\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date, global, plugins, global.screen, tostring(pool)];\n }\n}\n\n//\n// tostring()\n// Converts an array of charcodes to a string\n//\nfunction tostring(a) {\n return String.fromCharCode.apply(0, a);\n}\n\n//\n// When seedrandom.js is loaded, we immediately mix a few bits\n// from the built-in RNG into the entropy pool. Because we do\n// not want to interfere with deterministic PRNG state later,\n// seedrandom will not call math.random on its own again after\n// initialization.\n//\nmixkey(math.random(), pool);\n\n//\n// Nodejs and AMD support: export the implementation as a module using\n// either convention.\n//\nif ((typeof module) == 'object' && module.exports) {\n module.exports = seedrandom;\n // When in node.js, try using crypto package for autoseeding.\n try {\n nodecrypto = require('crypto');\n } catch (ex) {}\n} else if ((typeof define) == 'function' && define.amd) {\n define(function() { return seedrandom; });\n}\n\n// End anonymous scope, and pass initial values.\n})(\n [], // pool: entropy pool starts empty\n Math // math: package containing random, pow, and seedrandom\n);\n", "// A library of seedable RNGs implemented in Javascript.\n//\n// Usage:\n//\n// var seedrandom = require('seedrandom');\n// var random = seedrandom(1); // or any seed.\n// var x = random(); // 0 <= x < 1. Every bit is random.\n// var x = random.quick(); // 0 <= x < 1. 32 bits of randomness.\n\n// alea, a 53-bit multiply-with-carry generator by Johannes Baag\u00F8e.\n// Period: ~2^116\n// Reported to pass all BigCrush tests.\nvar alea = require('./lib/alea');\n\n// xor128, a pure xor-shift generator by George Marsaglia.\n// Period: 2^128-1.\n// Reported to fail: MatrixRank and LinearComp.\nvar xor128 = require('./lib/xor128');\n\n// xorwow, George Marsaglia's 160-bit xor-shift combined plus weyl.\n// Period: 2^192-2^32\n// Reported to fail: CollisionOver, SimpPoker, and LinearComp.\nvar xorwow = require('./lib/xorwow');\n\n// xorshift7, by Fran\u00E7ois Panneton and Pierre L'ecuyer, takes\n// a different approach: it adds robustness by allowing more shifts\n// than Marsaglia's original three. It is a 7-shift generator\n// with 256 bits, that passes BigCrush with no systmatic failures.\n// Period 2^256-1.\n// No systematic BigCrush failures reported.\nvar xorshift7 = require('./lib/xorshift7');\n\n// xor4096, by Richard Brent, is a 4096-bit xor-shift with a\n// very long period that also adds a Weyl generator. It also passes\n// BigCrush with no systematic failures. Its long period may\n// be useful if you have many generators and need to avoid\n// collisions.\n// Period: 2^4128-2^32.\n// No systematic BigCrush failures reported.\nvar xor4096 = require('./lib/xor4096');\n\n// Tyche-i, by Samuel Neves and Filipe Araujo, is a bit-shifting random\n// number generator derived from ChaCha, a modern stream cipher.\n// https://eden.dei.uc.pt/~sneves/pubs/2011-snfa2.pdf\n// Period: ~2^127\n// No systematic BigCrush failures reported.\nvar tychei = require('./lib/tychei');\n\n// The original ARC4-based prng included in this library.\n// Period: ~2^1600\nvar sr = require('./seedrandom');\n\nsr.alea = alea;\nsr.xor128 = xor128;\nsr.xorwow = xorwow;\nsr.xorshift7 = xorshift7;\nsr.xor4096 = xor4096;\nsr.tychei = tychei;\n\nmodule.exports = sr;\n", "", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "export const wasmWorkerContents = 'var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(\" \");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(\" \");postMessage({cmd:\"alert\",text:text,threadId:Module[\"_pthread_self\"]()})}var err=threadPrintErr;this.alert=threadAlert;Module[\"instantiateWasm\"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module[\"wasmModule\"],info);Module[\"wasmModule\"]=null;receiveInstance(instance);return instance.exports};function moduleLoaded(){}this.onmessage=function(e){try{if(e.data.cmd===\"load\"){Module[\"wasmModule\"]=e.data.wasmModule;Module[\"wasmMemory\"]=e.data.wasmMemory;Module[\"buffer\"]=Module[\"wasmMemory\"].buffer;Module[\"ENVIRONMENT_IS_PTHREAD\"]=true;if(typeof e.data.urlOrBlob===\"string\"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}WasmBackendModuleThreadedSimd(Module).then(function(instance){Module=instance;moduleLoaded()})}else if(e.data.cmd===\"objectTransfer\"){Module[\"PThread\"].receiveObjectTransfer(e.data)}else if(e.data.cmd===\"run\"){Module[\"__performance_now_clock_drift\"]=performance.now()-e.data.time;Module[\"__emscripten_thread_init\"](e.data.threadInfoStruct,0,0);var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module[\"establishStackSpace\"](top,max);Module[\"_emscripten_tls_init\"]();Module[\"PThread\"].receiveObjectTransfer(e.data);Module[\"PThread\"].setThreadStatus(Module[\"_pthread_self\"](),1);try{var result=Module[\"invokeEntryPoint\"](e.data.start_routine,e.data.arg);if(!Module[\"getNoExitRuntime\"]())Module[\"PThread\"].threadExit(result)}catch(ex){if(ex===\"Canceled!\"){Module[\"PThread\"].threadCancel()}else if(ex!=\"unwind\"){if(ex instanceof Module[\"ExitStatus\"]){if(Module[\"getNoExitRuntime\"]()){}else{Module[\"PThread\"].threadExit(ex.status)}}else{Module[\"PThread\"].threadExit(-2);throw ex}}}}else if(e.data.cmd===\"cancel\"){if(Module[\"_pthread_self\"]()){Module[\"PThread\"].threadCancel()}}else if(e.data.target===\"setimmediate\"){}else if(e.data.cmd===\"processThreadQueue\"){if(Module[\"_pthread_self\"]()){Module[\"_emscripten_current_thread_process_queued_calls\"]()}}else{err(\"worker.js received unknown command \"+e.data.cmd);err(e.data)}}catch(ex){err(\"worker.js onmessage() captured an uncaught exception: \"+ex);if(ex&&ex.stack)err(ex.stack);throw ex}};if(typeof process===\"object\"&&typeof process.versions===\"object\"&&typeof process.versions.node===\"string\"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require(\"worker_threads\");global.Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on(\"message\",function(data){onmessage({data:data})});var nodeFS=require(\"fs\");var nodeRead=function(filename){return nodeFS.readFileSync(filename,\"utf8\")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance===\"undefined\"){performance={now:function(){return Date.now()}}}}';", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// wrapper to load tfjs in a single place so version can be changed quickly\n\n// simplified\n// { modules: 1061, moduleBytes: 3772720, outputBytes: 1531035 }\n\n// export * from '@tensorflow/tfjs/dist/index.js';\n// export * from '@tensorflow/tfjs-backend-wasm';\n\n// modular\n// { modules: 1064, moduleBytes: 3793219, outputBytes: 1535600 }\n\n// get versions of all packages.\nimport * as packageBundle from '@tensorflow/tfjs/package.json';\nimport * as packageCore from '@tensorflow/tfjs-core/package.json';\nimport * as packageData from '@tensorflow/tfjs-data/package.json';\nimport * as packageLayers from '@tensorflow/tfjs-layers/package.json';\nimport * as packageConverter from '@tensorflow/tfjs-converter/package.json';\n// for backends, get version from source so it can register backend during import\nimport { version_cpu } from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nimport { version_webgl } from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nimport { version_wasm } from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export all\nexport * from '@tensorflow/tfjs-core/dist/index.js';\nexport * from '@tensorflow/tfjs-layers/dist/index.js';\nexport * from '@tensorflow/tfjs-converter/dist/index.js';\nexport * as data from '@tensorflow/tfjs-data/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-cpu/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-webgl/dist/index.js';\nexport * from '@tensorflow/tfjs-backend-wasm/dist/index.js';\n\n// export versions\nexport const version = {\n tfjs: packageBundle.version,\n 'tfjs-core': packageCore.version,\n 'tfjs-data': packageData.version,\n 'tfjs-layers': packageLayers.version,\n 'tfjs-converter': packageConverter.version,\n 'tfjs-backend-cpu': version_cpu,\n 'tfjs-backend-webgl': version_webgl,\n 'tfjs-backend-wasm': version_wasm,\n};\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = {};\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2): Number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: Array, threshold = 0) {\n let best = { simmilarity: 0, name: '', source: '', embedding: [] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = simmilarity(embedding, f.embedding);\n if (perc > threshold && perc > best.simmilarity) best = { ...f, simmilarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], + "mappings": "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,GAGrB,GAAM,GAAS,GAAK,CAAC,OAAQ,EAAK,QAAA,EAAS,MAAO,CAAC,KAAM,KAEzD,MAAA,GAAc,QAAQ,GAAK,EAAQ,8BAA8B,IAE1D,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,MACb,WAAY,IC4FR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GE/UjB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,iBAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,8BAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,gBAAA,IAAA,GAAA,mCAAA,IAAA,GAAA,aAAA,IAAA,GAAA,iBAAA,IAAA,GAAA,qBAAA,IAAA,GAAA,kBAAA,IAAA,GAAA,cAAA,IAAA,GAAA,wBAAA,IAAA,GAAA,yBAAA,IAAA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,CAAC,KAAA,KAG5D,MAAA,GAAU,QAAQ,GAAK,EAAQ,8BAA8B,IACtD,EAGF,GAAM,IAAyC,CACpD,WAAY,GACZ,YAAa,QACb,WAAY,IC6DR,GAAgC,CACpC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAgB,IACzB,GAAe,GExTjB,GAAY,IAAZ,AAAA,UAAY,EAAQ,CAClB,EAAA,EAAA,QAAA,GAAA,UACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,UAAA,GAAA,cALU,IAAA,IAAQ,KASpB,GAAY,IAAZ,AAAA,UAAY,EAAiB,CAC3B,EAAA,EAAA,OAAA,GAAA,SACA,EAAA,EAAA,KAAA,GAAA,OACA,EAAA,EAAA,MAAA,GAAA,QACA,EAAA,EA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C,EAAc,EAAiB,IAAuB,CAC/D,GAAM,GAA2B,EAC3B,CAAC,KAAA,GAAQ,EACf,MAAO,CAAC,MAAO,IAAM,GAAM,EAAI,MCItB,GAA2C,CACtD,WAAY,GACZ,aAAc,CAAC,cACf,SAAU,CAAC,EAAY,IAAmB,CACxC,GAAM,CAAC,GAAc,EAKrB,MAAO,CAAC,EAHK,IACJ,GAAoB,EAAI,MAMrC,YAA+C,EAAM,EAAiB,CAIpE,GAAM,GAAqB,GAAQ,EAAS,GAAU,IAChD,EAAW,GAAO,EAAG,GACvB,EAAa,GAAa,EAAS,GAAO,EAAG,UAC3C,EAAW,EAAS,KAAO,EAAW,KAC5C,OAAS,GAAI,EAAG,EAAI,EAAU,EAAE,EAC9B,EAAa,GAAW,EAAY,EAAI,GAE1C,EAAa,GAAW,EAAY,GAAK,EAAS,MAAO,SACzD,GAAM,GAAY,GAAU,GAC5B,MAAO,IAAM,EAAY,EAAU,GClC9B,GAAM,IAAkC,CAC7C,WAAY,GACZ,SAAW,GACF,EAAC,EAAG,IAAM,GAAU,MC+FzB,GAA4B,CAChC,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,IAGF,OAAW,KAAkB,IAC3B,GAAiB,GCpOnB,GAAA,IAAA,GAAA,GAAA,GAAA,CAAA,QAAA,IAAA,GAAA,WAAA,IAAA,GAAA,OAAA,IAAA,GAAA,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AAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,cAAgB,kBACjB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,mBAGT,GAAS,CACpB,IAAK,GAAI,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,EACtJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GACrJ,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAC7I,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAClJ,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK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G,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EAC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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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", "names": [] } diff --git a/dist/human.node-gpu.js b/dist/human.node-gpu.js index 75e1a7ee..751392e9 100644 --- a/dist/human.node-gpu.js +++ b/dist/human.node-gpu.js @@ -5,14 +5,14 @@ author: ' */ -var Xt=Object.create,ze=Object.defineProperty,Ft=Object.getPrototypeOf,qt=Object.prototype.hasOwnProperty,Yt=Object.getOwnPropertyNames,Bt=Object.getOwnPropertyDescriptor;var Me=n=>ze(n,"__esModule",{value:!0});var n1=(n,e)=>()=>(e||(e={exports:{}},n(e.exports,e)),e.exports),U=(n,e)=>{for(var t in e)ze(n,t,{get:e[t],enumerable:!0})},Ct=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Yt(e))!qt.call(n,A)&&A!=="default"&&ze(n,A,{get:()=>e[A],enumerable:!(t=Bt(e,A))||t.enumerable});return n},N=n=>Ct(Me(ze(n!=null?Xt(Ft(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var l0=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)},m=(n,e,t)=>(l0(n,e,"read from private field"),t?t.call(n):e.get(n)),ne=(n,e,t,A)=>(l0(n,e,"write to private field"),A?A.call(n,t):e.set(n,t),t);var O=n1(r1=>{var Jt=Object.create,A1=Object.defineProperty,Kt=Object.getPrototypeOf,Ut=Object.prototype.hasOwnProperty,Dt=Object.getOwnPropertyNames,Gt=Object.getOwnPropertyDescriptor,f0=n=>A1(n,"__esModule",{value:!0}),m0=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Dt(e))!Ut.call(n,A)&&A!=="default"&&A1(n,A,{get:()=>e[A],enumerable:!(t=Gt(e,A))||t.enumerable});return n},Qt=n=>m0(f0(A1(n!=null?Jt(Kt(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);f0(r1);m0(r1,Qt(require("@tensorflow/tfjs-node-gpu")))});var N0=n1(S0=>{Me(S0);U(S0,{MediaPipeFaceMesh:()=>y1,load:()=>hn});var x1=N(O()),y1=class{constructor(e,t,A,r){this.facePipeline=new i1(e,t,A),this.config=r}async estimateFaces(e,t){let A=await this.facePipeline.predict(e,t),r=[];for(let c of A||[]){if(c.isDisposedInternal)continue;let _=c.coords?c.coords.arraySync():[],h=_.map(s=>[s[0]/e.shape[2],s[1]/e.shape[1],s[2]/this.facePipeline.meshSize]),o={};if(_&&_.length>0)for(let s of Object.keys(Q))o[s]=Q[s].map(w=>_[w]);let i=c.box?[Math.max(0,c.box.startPoint[0]),Math.max(0,c.box.startPoint[1]),Math.min(e.shape[1],c.box.endPoint[0])-c.box.startPoint[0],Math.min(e.shape[2],c.box.endPoint[1])-c.box.startPoint[1]]:0,y=c.box?[Math.max(0,c.box.startPoint[0]/e.shape[2]),Math.max(0,c.box.startPoint[1]/e.shape[1]),Math.min(e.shape[1],c.box.endPoint[0]-c.box.startPoint[0])/e.shape[2],Math.min(e.shape[2],c.box.endPoint[1]-c.box.startPoint[1])/e.shape[1]]:[];r.push({confidence:c.faceConfidence||c.boxConfidence||0,boxConfidence:c.boxConfidence,faceConfidence:c.faceConfidence,box:i,mesh:_,boxRaw:y,meshRaw:h,annotations:o,image:c.image?c.image.clone():null}),c.coords&&c.coords.dispose(),c.image&&c.image.dispose()}return r}},ye=[null,null,null];async function hn(n){ye=await Promise.all([!ye[0]&&n.face.enabled?g0(n):null,!ye[1]&&n.face.mesh.enabled?x1.loadGraphModel(n.face.mesh.modelPath,{fromTFHub:n.face.mesh.modelPath.includes("tfhub.dev")}):null,!ye[2]&&n.face.iris.enabled?x1.loadGraphModel(n.face.iris.modelPath,{fromTFHub:n.face.iris.modelPath.includes("tfhub.dev")}):null]);let e=new y1(ye[0],ye[1],ye[2],n);return n.face.mesh.enabled&&n.debug&&g(`load model: ${n.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),n.face.iris.enabled&&n.debug&&g(`load model: ${n.face.iris.modelPath.match(/\/(.*)\./)[1]}`),e}S0.triangulation=xe});var Ve=n1(O1=>{Me(O1);U(O1,{NUM_KEYPOINTS:()=>an,connectedPartIndices:()=>ln,partChannels:()=>fn,partIds:()=>k1,partNames:()=>yn,poseChain:()=>dn});var yn=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],an=O1.partNames.length,k1=O1.partNames.reduce((n,e,t)=>(n[e]=t,n),{}),wn=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],ln=wn.map(([n,e])=>[k1[n],k1[e]]),dn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],fn=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});Me(exports);U(exports,{Human:()=>i0,default:()=>i0});function g(...n){let e=new Date,t=`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;n&&console.log(t,"Human:",...n)}function d0(){let n,e;if(typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);t&&t[0]&&(n=t[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),e=navigator.userAgent.replace(t[0],""),n[1]&&(e=e.replace(t[1],"")),e=e.replace(/ /g," "))}else typeof process!="undefined"&&(n=`${process.platform} ${process.arch}`,e=`NodeJS ${process.version}`);return{platform:n,agent:e}}var o0=N(O());var q=N(O()),Y={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function u0(){if(!q.findBackend(Y.name)){g("backend registration:",Y.name);try{Y.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Y.width,Y.height):document.createElement("canvas")}catch(n){g("error: cannot create canvas:",n);return}try{Y.gl=Y.canvas.getContext("webgl2",Y.webGLattr)}catch(n){g("error: cannot get WebGL2 context:",n);return}try{q.setWebGLContext(2,Y.gl)}catch(n){g("error: cannot set WebGL2 context:",n);return}try{let n=new q.GPGPUContext(Y.gl);q.registerBackend(Y.name,()=>new q.MathBackendWebGL(n),Y.priority)}catch(n){g("error: cannot register WebGL backend:",n);return}try{q.getKernelsForBackend("webgl").forEach(e=>{let t={...e,backendName:Y.name};q.registerKernel(t)})}catch(n){g("error: cannot update WebGL backend registration:",n);return}try{q.ENV.set("WEBGL_VERSION",2)}catch(n){g("error: cannot set WebGL backend flags:",n);return}g("backend registered:",Y.name)}}var P=N(O()),p0=6;function $t(n){let e={strides:[n/16,n/8],anchors:[2,6]},t=[];for(let A=0;A({startEndTensor:n,startPoint:P.slice(n,[0,0],[-1,2]),endPoint:P.slice(n,[0,2],[-1,2])});function tn(n,e,t){let A=P.slice(n,[0,1],[-1,2]),r=P.add(A,e),c=P.slice(n,[0,3],[-1,2]),_=P.div(c,t),h=P.div(r,t),o=P.div(_,2),i=P.sub(h,o),y=P.add(h,o),s=P.mul(i,t),w=P.mul(y,t);return P.concat2d([s,w],1)}var b0=class{constructor(e,t){this.model=e,this.anchorsData=$t(e.inputs[0].shape[1]),this.anchors=P.tensor2d(this.anchorsData),this.inputSize=e.inputs[0].shape[2],this.config=t}async getBoundingBoxes(e){if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return null;let[t,A,r]=P.tidy(()=>{let w=e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),f=this.model.predict(w),d;if(Array.isArray(f)){let V=f.sort((a,p)=>a.size-p.size),B=P.concat([V[0],V[2]],2),G=P.concat([V[1],V[3]],2);d=P.concat([G,B],1).squeeze(0)}else d=f.squeeze();let x=tn(d,this.anchors,[this.inputSize,this.inputSize]),b=P.slice(d,[0,0],[-1,1]),Z=P.sigmoid(b).squeeze();return[d,x,Z]}),c=await P.image.nonMaxSuppressionAsync(A,r,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),_=c.arraySync();c.dispose();let o=_.map(s=>P.slice(A,[s,0],[1,-1])).map(s=>{let w=s.arraySync();return s.dispose(),w}),i=r.dataSync(),y=[];for(let s=0;sthis.config.face.detector.minConfidence){let d=en(o[s]),x=this.anchorsData[w],b=P.tidy(()=>P.slice(t,[w,p0-1],[1,-1]).squeeze().reshape([p0,-1]));y.push({box:d,landmarks:b,anchor:x,confidence:f})}}return t.dispose(),A.dispose(),r.dispose(),{boxes:y,scaleFactor:[e.shape[2]/this.inputSize,e.shape[1]/this.inputSize]}}};async function g0(n){let e=await P.loadGraphModel(n.face.detector.modelPath,{fromTFHub:n.face.detector.modelPath.includes("tfhub.dev")}),t=new b0(e,n);return n.debug&&g(`load model: ${n.face.detector.modelPath.match(/\/(.*)\./)[1]}`),t}var X=N(O());var T0=N(O());function P0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]];return{startPoint:t,endPoint:A}}function ue(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function we(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function le(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return T0.image.cropAndResize(e,c,[0],t)}function Ee(n,e=1.5){let t=we(n),A=ue(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}function Re(n){let e=we(n),t=ue(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}var Se=[[1,0,0],[0,1,0],[0,0,1]];function nn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function c1(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return nn(t)}function v0(n,e){return[[1,0,n],[0,1,e],[0,0,1]]}function ce(n,e){let t=0;for(let A=0;Ah1[n]),Dn=cn.map(n=>h1[n]),Gn=_n.map(n=>h1[n]);var o1=Q.leftEyeLower0,s1=Q.rightEyeLower0,de={leftBounds:[o1[0],o1[o1.length-1]],rightBounds:[s1[0],s1[s1.length-1]]},We={count:468,mouth:13,symmetryLine:[13,Q.midwayBetweenEyes[0]]},R0={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},fe={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function je(n,e,t,A){for(let r=0;r<_1.length;r++){let{key:c,indices:_}=_1[r],h=Q[`${t}${c}`];if(!A||A.includes(c))for(let o=0;o<_.length;o++){let i=_[o];n[h[o]]=[e[i][0],e[i][1],(e[i][2]+n[h[o]][2])/2]}}}var i1=class{constructor(e,t,A){var r,c;this.storedBoxes=[],this.boundingBoxDetector=e,this.meshDetector=t,this.irisModel=A,this.boxSize=((r=e==null?void 0:e.model)==null?void 0:r.inputs[0].shape[2])||0,this.meshSize=(t==null?void 0:t.inputs[0].shape[2])||((c=e==null?void 0:e.model)==null?void 0:c.inputs[0].shape[2]),this.irisSize=(A==null?void 0:A.inputs[0].shape[1])||0,this.irisEnlarge=2.3,this.skipped=0,this.detectedFaces=0}transformRawCoords(e,t,A,r){let c=ue({startPoint:t.startPoint,endPoint:t.endPoint}),_=e.map(s=>[c[0]/this.meshSize*(s[0]-this.meshSize/2),c[1]/this.meshSize*(s[1]-this.meshSize/2),s[2]]),h=A!==0?Ne(A,[0,0]):Se,o=A!==0?_.map(s=>[...E0(s,h),s[2]]):_,i=A!==0?M0(r):Se,y=[...we({startPoint:t.startPoint,endPoint:t.endPoint}),1];return o.map(s=>[s[0]+ce(y,i[0]),s[1]+ce(y,i[1]),s[2]])}getLeftToRightEyeDepthDifference(e){let t=e[de.leftBounds[0]][2],A=e[de.rightBounds[0]][2];return t-A}getEyeBox(e,t,A,r,c=!1){let _=Re(Ee(this.calculateLandmarksBoundingBox([e[A],e[r]]),this.irisEnlarge)),h=ue(_),o=X.image.cropAndResize(t,[[_.startPoint[1]/this.meshSize,_.startPoint[0]/this.meshSize,_.endPoint[1]/this.meshSize,_.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return c&&X.ENV.flags.IS_BROWSER&&(o=X.image.flipLeftRight(o)),{box:_,boxSize:h,crop:o}}getEyeCoords(e,t,A,r=!1){let c=[];for(let _=0;_{let i=_;return o===2?i=r:o===4&&(i=c),[h[0],h[1],i]})}async predict(e,t){let A=!1,r;if((this.skipped===0||this.skipped>t.face.detector.skipFrames||!t.face.mesh.enabled||!t.videoOptimized)&&(r=await this.boundingBoxDetector.getBoundingBoxes(e),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.boxes&&(!t.face.mesh.enabled||r.boxes.length!==this.detectedFaces&&this.detectedFaces!==t.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let _ of r.boxes)this.storedBoxes.push({startPoint:_.box.startPoint.dataSync(),endPoint:_.box.endPoint.dataSync(),landmarks:_.landmarks,confidence:_.confidence});this.storedBoxes.length>0&&(A=!0)}if(t.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),A){if(!r||!r.boxes||r.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let _=0;_{_.box.startPoint.dispose(),_.box.endPoint.dispose(),_.landmarks.dispose()});let c=X.tidy(()=>this.storedBoxes.map((_,h)=>{let o=_.confidence,i,y=0,s;if(t.face.detector.rotation&&t.face.mesh.enabled&&X.ENV.flags.IS_BROWSER){let[u,a]=_.landmarks.length>=We.count?We.symmetryLine:R0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],R=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.boxSize,this.boxSize]).div(255)}else{s=Se;let u=e.clone();t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.boxSize,this.boxSize]).div(255)}if(!t.face.mesh.enabled)return{coords:null,box:_,faceConfidence:null,boxConfidence:_.confidence,confidence:_.confidence,image:i};let[,w,f]=this.meshDetector.predict(i),d=w.dataSync()[0];if(d=We.count?We.symmetryLine:R0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],R=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),i=le({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.meshSize,this.meshSize]).div(255)}let B={coords:V,box:_,faceConfidence:d,boxConfidence:o,image:i,rawCoords:b},G=Re(_);return this.storedBoxes[h]={...G,landmarks:Z,confidence:_.confidence,faceConfidence:d},B}));return c=c.filter(_=>_!==null),t.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(_=>_.faceConfidence>t.face.detector.minConfidence)),this.detectedFaces=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c,landmarks:e}}};var s0=N(N0());var w1={};U(w1,{load:()=>l1,predict:()=>d1});var ee=N(O());var a1={};function $(n,e){if(!e||!e.kernels)return;let t=5,A=e.kernels.filter(h=>h.kernelTimeMs>0).reduce((h,o)=>h+=o.kernelTimeMs,0),r=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.kernelTimeMs>0).sort((h,o)=>o.kernelTimeMs-h.kernelTimeMs),c=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.totalBytesSnapshot>0).sort((h,o)=>o.totalBytesSnapshot-h.totalBytesSnapshot);r.length>t&&(r.length=t),c.length>t&&(c.length=t);let _={newBytes:e.newBytes,newTensors:e.newTensors,peakBytes:e.peakBytes,numKernelOps:e.kernels.length,timeKernelOps:A,slowestKernelOps:r,largestKernelOps:c};a1[n]=_,g("Human profiler",n,_)}var _e,Oe={age:0},ke=Number.MAX_SAFE_INTEGER;async function l1(n){return _e||(_e=await ee.loadGraphModel(n.face.age.modelPath),n.debug&&g(`load model: ${n.face.age.modelPath.match(/\/(.*)\./)[1]}`)),_e}async function d1(n,e){return _e?ke0?(ke++,Oe):(e.videoOptimized?ke=0:ke=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=ee.image.resizeBilinear(n,[_e.inputs[0].shape[2],_e.inputs[0].shape[1]],!1),r=ee.mul(A,[255]);ee.dispose(A);let c,_={age:0};if(!e.profile)e.face.age.enabled&&(c=await _e.predict(r));else{let h=e.face.age.enabled?await ee.profile(()=>_e.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("age",h)}if(r.dispose(),c){let h=c.dataSync();_.age=Math.trunc(10*h[0])/10}c.dispose(),Oe=_,t(_)})):null}var f1={};U(f1,{load:()=>b1,predict:()=>g1});var I=N(O());var re,m1={gender:""},Ie=Number.MAX_SAFE_INTEGER,u1=!1,p1=[.2989,.587,.114];async function b1(n){return re||(re=await I.loadGraphModel(n.face.gender.modelPath),u1=re.inputs[0].shape[3]===1,n.debug&&g(`load model: ${n.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),re}async function g1(n,e){return re?Ie{let A=I.image.resizeBilinear(n,[re.inputs[0].shape[2],re.inputs[0].shape[1]],!1),r;u1?r=I.tidy(()=>{let[h,o,i]=I.split(A,3,3),y=I.mul(h,p1[0]),s=I.mul(o,p1[1]),w=I.mul(i,p1[2]);return I.addN([y,s,w]).sub(.5).mul(2)}):r=I.mul(A,[255]),I.dispose(A);let c,_={gender:"",confidence:0};if(!e.profile)e.face.gender.enabled&&(c=await re.predict(r));else{let h=e.face.gender.enabled?await I.profile(()=>re.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("gender",h)}if(r.dispose(),c){let h=c.dataSync();if(u1)(h[0]>e.face.gender.minConfidence||h[1]>e.face.gender.minConfidence)&&(_.gender=h[0]>h[1]?"female":"male",_.confidence=h[0]>h[1]?Math.trunc(100*h[0])/100:Math.trunc(100*h[1])/100);else{let o=Math.trunc(200*Math.abs(h[0]-.5))/100;o>e.face.gender.minConfidence&&(_.gender=h[0]<=.5?"female":"male",_.confidence=Math.min(.99,o))}}c.dispose(),m1=_,t(_)})):null}var T1={};U(T1,{load:()=>z1,predict:()=>M1});var L=N(O());var on=["angry","disgust","fear","happy","sad","surprise","neutral"],he,P1=[],Ze=Number.MAX_SAFE_INTEGER,v1=[.2989,.587,.114];async function z1(n){return he||(he=await L.loadGraphModel(n.face.emotion.modelPath),n.debug&&g(`load model: ${n.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),he}async function M1(n,e){return he?Ze0?(Ze++,P1):(e.videoOptimized?Ze=0:Ze=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=L.image.resizeBilinear(n,[he.inputs[0].shape[2],he.inputs[0].shape[1]],!1),[r,c,_]=L.split(A,3,3);A.dispose();let h=L.mul(r,v1[0]),o=L.mul(c,v1[1]),i=L.mul(_,v1[2]);r.dispose(),c.dispose(),_.dispose();let y=L.addN([h,o,i]);h.dispose(),o.dispose(),i.dispose();let s=L.tidy(()=>y.sub(.5).mul(2));y.dispose();let w=[];if(e.face.emotion.enabled){let f;if(e.profile){let d=await L.profile(()=>he.predict(s));f=d.result.dataSync(),d.result.dispose(),$("emotion",d)}else{let d=await he.predict(s);f=d.dataSync(),L.dispose(d)}for(let d=0;de.face.emotion.minConfidence&&w.push({score:Math.min(.99,Math.trunc(100*f[d])/100),emotion:on[d]});w.sort((d,x)=>x.score-d.score)}s.dispose(),P1=w,t(w)})):null}var S=N(O());var te;async function E1(n){return te||(te=await S.loadGraphModel(n.face.embedding.modelPath),n.debug&&g(`load model: ${n.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),te}function W0(n,e,t=2){if(!n||!e||(n==null?void 0:n.length)===0||(e==null?void 0:e.length)===0||(n==null?void 0:n.length)!==(e==null?void 0:e.length))return 0;let A=n.map((c,_)=>Math.abs(n[_]-e[_])**t).reduce((c,_)=>c+_,0)**(1/t);return Math.max(Math.trunc(1e3*(1-A))/1e3,0)}function R1(n){return S.tidy(()=>{let t=[[.05,.15,.85,.85]],A=n.image||n.tensor;if(!(A instanceof S.Tensor))return null;let r=A.shape.length===3?S.image.cropAndResize(S.expandDims(A,0),t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]):S.image.cropAndResize(A,t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]),c=[.2989,.587,.114],[_,h,o]=S.split(r,3,3),i=S.mul(_,c[0]),y=S.mul(h,c[1]),s=S.mul(o,c[2]),w=S.addN([i,y,s]),f=S.stack([w,w,w],3).squeeze(4),d=f.sub(f.min());return d.div(d.max())})}async function S1(n,e){return te?new Promise(async t=>{let A=[];if(e.face.embedding.enabled){let r=R1(n);if(!e.profile)A=S.tidy(()=>te.predict(r).reshape([128,2]).logSumExp(1).dataSync());else{let c=await S.profile(()=>te.predict({img_inputs:r}));A=[...c.result.dataSync()],c.result.dispose(),$("emotion",c)}r.dispose()}t(A)}):null}var F1={};U(F1,{PoseNet:()=>q1,load:()=>Y1});var D0=N(O());var j0=N(O());function sn(n){let[e,t,A,r]=n;return{offsets:e,heatmap:t,displacementFwd:A,displacementBwd:r}}var N1=class{constructor(e){this.model=e}predict(e){return j0.tidy(()=>{let A=e.toFloat().div(127.5).sub(1).expandDims(0),c=this.model.predict(A).map(h=>h.squeeze([0])),_=sn(c);return{heatmapScores:_.heatmap.sigmoid(),offsets:_.offsets,displacementFwd:_.displacementFwd,displacementBwd:_.displacementBwd}})}dispose(){this.model.dispose()}};function W1(n){return Math.floor(n/2)}var j1=class{constructor(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}enqueue(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)}dequeue(){let e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(e){for(;e>0&&this.less(W1(e),e);)this.exchange(e,W1(e)),e=W1(e)}sink(e){for(;2*e<=this.numberOfElements;){let t=2*e;if(te){o=!1;break}if(!o)break}return o}function O0(n,e,t){let[A,r,c]=t.shape,_=new j1(A*r*c,({score:h})=>h);for(let h=0;ht?t:n}function I0(n,e,t,A){let r=t-n,c=A-e;return r*r+c*c}function V1(n,e){return{x:n.x+e.x,y:n.y+e.y}}var J=N(O()),He=N(Ve());function Z0(n,e){let t=e.shape[0],A=new Float32Array(t);for(let r=0;rn.toTensor().mul(J.scalar(e,"int32")).toFloat().add(un(n,t)))}function pn(n,e){return J.tidy(()=>{let t=n.div(J.scalar(e,"int32"));return n.sub(t.mul(J.scalar(e,"int32")))})}function L0(n){let[e,t,A]=n.shape;return J.tidy(()=>{let c=n.reshape([e*t,A]).argMax(0),_=c.div(J.scalar(t,"int32")).expandDims(1),h=pn(c,t).expandDims(1);return J.concat([_,h],1)})}var H0=Ae.poseChain.map(([n,e])=>[Ae.partIds[n],Ae.partIds[e]]),L1=H0.map(([,n])=>n),X0=H0.map(([n])=>n),bn=16;function gn(n,e,t){let A=t.shape[2]/2;return{y:t.get(e.y,e.x,n),x:t.get(e.y,e.x,A+n)}}function H1(n,e,t,A){return{y:Z1(Math.round(n.y/e),0,t-1),x:Z1(Math.round(n.x/e),0,A-1)}}function F0(n,e,t,A,r,c,_,h=2){let[o,i]=A.shape,y=H1(e.position,c,o,i),s=gn(n,y,_),f=V1(e.position,s);for(let b=0;b=0;--w){let f=L1[w],d=X0[w];o[f]&&!o[d]&&(o[d]=F0(w,o[f],d,e,t,A,c))}for(let w=0;w(A+=d,{position:{y:y.get(x,0),x:y.get(x,1)},part:Ae.partNames[x],score:d})),f=w.filter(d=>d.score>t);return r.dispose(),i.dispose(),{keypoints:f,score:A/w.length}}var Tn=1,B0=16;function C0(n,e,{x:t,y:A},r){return n.some(({keypoints:c})=>{let _=c[r].position;return I0(A,t,_.y,_.x)<=e})}function Pn(n,e,t){return t.reduce((r,{position:c,score:_},h)=>(C0(n,e,c,h)||(r+=_),r),0)/t.length}function J0(n,e,t,A,r,c,_){let h=[],o=O0(_,Tn,n),i=r^2;for(;h.length_&&h.push({keypoints:w,score:f})}return h}async function K0(n){return Promise.all(n.map(e=>e.buffer()))}function vn(n,e,t){return{score:n.score,keypoints:n.keypoints.map(({score:A,part:r,position:c})=>({score:A,part:r,position:{x:Math.trunc(c.x*t),y:Math.trunc(c.y*e)}}))}}function U0(n,[e,t]){let A=n.squeeze(0),r=A.resizeBilinear([e,t]);return A.dispose(),r}function X1(n,[e,t],[A,r]){return n.map(_=>vn(_,e/A,t/r))}async function zn(n,e,t,A){return new Promise(async r=>{let c=await K0([e.heatmapScores,e.offsets,e.displacementFwd,e.displacementBwd]),_=c[0],h=c[1],o=c[2],i=c[3],y=await J0(_,h,o,i,t.body.nmsRadius,t.body.maxDetections,t.body.scoreThreshold),s=X1(y,[n.shape[1],n.shape[2]],[A,A]);r(s)})}async function Mn(n,e,t,A){return new Promise(async r=>{let c=await Y0(e.heatmapScores,e.offsets,t.body.scoreThreshold),_=X1([c],[n.shape[1],n.shape[2]],[A,A]);r(_)})}var q1=class{constructor(e){this.baseModel=e,this.inputSize=e.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(e,t){let A=U0(e,[this.inputSize,this.inputSize]),r=this.baseModel.predict(A,t),c=t.body.maxDetections<2?await Mn(e,r,t,this.inputSize):await zn(e,r,t,this.inputSize);return r.heatmapScores.dispose(),r.offsets.dispose(),r.displacementFwd.dispose(),r.displacementBwd.dispose(),A.dispose(),c}dispose(){this.baseModel.dispose()}};async function Y1(n){let e=await D0.loadGraphModel(n.body.modelPath),t=new N1(e);return n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`),new q1(t)}var U1={};U(U1,{HandPose:()=>Q1,load:()=>$1});var D1=N(O());var T=N(O());var G0=N(O());function Xe(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function pe(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function Q0(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return G0.image.cropAndResize(e,c,[0],t)}function $0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]],r=n.palmLandmarks.map(c=>[c[0]*e[0],c[1]*e[1]]);return{startPoint:t,endPoint:A,palmLandmarks:r,confidence:n.confidence}}function Fe(n,e=1.5){let t=pe(n),A=Xe(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}function qe(n){let e=pe(n),t=Xe(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}var B1=class{constructor(e,t,A){this.model=e,this.anchors=A.map(r=>[r.x_center,r.y_center]),this.anchorsTensor=T.tensor2d(this.anchors),this.inputSize=t,this.inputSizeTensor=T.tensor1d([t,t]),this.doubleInputSizeTensor=T.tensor1d([t*2,t*2])}normalizeBoxes(e){return T.tidy(()=>{let t=T.slice(e,[0,0],[-1,2]),A=T.slice(e,[0,2],[-1,2]),r=T.add(T.div(t,this.inputSizeTensor),this.anchorsTensor),c=T.div(A,this.doubleInputSizeTensor),_=T.mul(T.sub(r,c),this.inputSizeTensor),h=T.mul(T.add(r,c),this.inputSizeTensor);return T.concat2d([_,h],1)})}normalizeLandmarks(e,t){return T.tidy(()=>{let A=T.add(T.div(e.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return T.mul(A,this.inputSizeTensor)})}async getBoxes(e,t){let A=this.model.predict(e),r=A.squeeze();A.dispose();let c=T.tidy(()=>T.sigmoid(T.slice(r,[0,0],[-1,1])).squeeze()),_=c.dataSync(),h=T.slice(r,[0,1],[-1,4]),o=this.normalizeBoxes(h);h.dispose();let i=await T.image.nonMaxSuppressionAsync(o,_,t.hand.maxHands,t.hand.iouThreshold,t.hand.scoreThreshold),y=i.arraySync();c.dispose(),i.dispose();let s=[];for(let w of y)if(_[w]>=t.hand.minConfidence){let f=T.slice(o,[w,0],[1,-1]),d=T.slice(r,[w,5],[1,14]),x=T.tidy(()=>this.normalizeLandmarks(d,w).reshape([-1,2]));d.dispose(),s.push({box:f,palmLandmarks:x,confidence:_[w]})}return r.dispose(),o.dispose(),s}async estimateHandBounds(e,t){let A=e.shape[1],r=e.shape[2],c=T.tidy(()=>e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),_=await this.getBoxes(c,t);c.dispose();let h=[];if(!_||_.length===0)return h;for(let o of _){let i=o.box.dataSync(),y=i.slice(0,2),s=i.slice(2,4),w=o.palmLandmarks.arraySync();o.box.dispose(),o.palmLandmarks.dispose(),h.push($0({startPoint:y,endPoint:s,palmLandmarks:w,confidence:o.confidence},[r/this.inputSize,A/this.inputSize]))}return h}};var Ye=N(O());function En(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function et(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return En(t)}var tt=(n,e)=>[[1,0,n],[0,1,e],[0,0,1]];function oe(n,e){let t=0;for(let A=0;AJ1([...c,1],t)),r=this.calculateLandmarksBoundingBox(A);return Fe(qe(r),Sn)}getBoxForHandLandmarks(e){let t=this.calculateLandmarksBoundingBox(e),A=Fe(qe(t),At);A.palmLandmarks=[];for(let r=0;r[_[0]*(f[0]-this.inputSize/2),_[1]*(f[1]-this.inputSize/2),_[2]*f[2]]),o=C1(A,[0,0]),i=h.map(f=>[...J1(f,o),f[2]]),y=rt(r),s=[...pe(t),1],w=[oe(s,y[0]),oe(s,y[1])];return i.map(f=>[f[0]+w[0],f[1]+w[1],f[2]])}async estimateHands(e,t){let A=!1,r;(this.skipped===0||this.skipped>t.hand.skipFrames||!t.hand.landmarks||!t.videoOptimized)&&(r=await this.handDetector.estimateHandBounds(e,t),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.length>0&&(r.length!==this.detectedHands&&this.detectedHands!==t.hand.maxHands||!t.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...r],this.storedBoxes.length>0&&(A=!0));let c=[];t.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let _=0;_=t.hand.minConfidence){let B=Ye.reshape(Z,[-1,3]),G=B.arraySync();Z.dispose(),B.dispose();let u=this.transformRawCoords(G,f,o,w),a=this.getBoxForHandLandmarks(u);this.storedBoxes[_]=a;let p={landmarks:u,confidence:V,box:{topLeft:a.startPoint,bottomRight:a.endPoint}};c.push(p)}else this.storedBoxes[_]=null;Z.dispose()}else{let o=Fe(qe(h),At),i={confidence:h.confidence,box:{topLeft:o.startPoint,bottomRight:o.endPoint}};c.push(i)}}return this.storedBoxes=this.storedBoxes.filter(_=>_!==null),this.detectedHands=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c}}};var _t=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var G1={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},Q1=class{constructor(e){this.handPipeline=e}static getAnnotations(){return G1}async estimateHands(e,t){let A=await this.handPipeline.estimateHands(e,t);if(!A)return[];let r=[];for(let c of A){let _={};if(c.landmarks)for(let o of Object.keys(G1))_[o]=G1[o].map(i=>c.landmarks[i]);let h=c.box?[Math.max(0,c.box.topLeft[0]),Math.max(0,c.box.topLeft[1]),Math.min(e.shape[2],c.box.bottomRight[0])-c.box.topLeft[0],Math.min(e.shape[1],c.box.bottomRight[1])-c.box.topLeft[1]]:0;r.push({confidence:c.confidence,box:h,landmarks:c.landmarks,annotations:_})}return r}};async function $1(n){let[e,t]=await Promise.all([n.hand.enabled?D1.loadGraphModel(n.hand.detector.modelPath,{fromTFHub:n.hand.detector.modelPath.includes("tfhub.dev")}):null,n.hand.landmarks?D1.loadGraphModel(n.hand.skeleton.modelPath,{fromTFHub:n.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),A=new B1(e,e==null?void 0:e.inputs[0].shape[2],_t),r=new K1(A,t,t==null?void 0:t.inputs[0].shape[2]),c=new Q1(r);return n.hand.enabled&&n.debug&&g(`load model: ${n.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),n.hand.landmarks&&n.debug&&g(`load model: ${n.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),c}var e0={};U(e0,{load:()=>t0,predict:()=>n0});var se=N(O());var ht=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],ot=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var K;async function t0(n){return K||(K=await se.loadGraphModel(n.body.modelPath),K.width=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[2].size),K.height=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[1].size),n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`)),K}async function n0(n,e){if(!K||!e.body.enabled)return null;let t={width:n.shape[2],height:n.shape[1]},A=se.image.resizeBilinear(n,[K.width,K.height],!1),r=se.div(A,[255]);A.dispose();let c;if(e.profile){let i=await se.profile(()=>K.predict(r));c=i.result.find(y=>y.size===195||y.size===155).dataSync(),i.result.forEach(y=>y.dispose()),$("blazepose",i)}else{let i=await K.predict(r);c=i.find(y=>y.size===195||y.size===155).dataSync(),i.forEach(y=>y.dispose())}r.dispose();let _=[],h=c.length===195?ht:ot,o=5;for(let i=0;i{if(!n)return[];let e=[];for(let t=0;to.part==="leftWrist"),r=n[t].keypoints.find(o=>o.part==="rightWrist"),c=n[t].keypoints.find(o=>o.part==="nose");c&&A&&r&&A.position.yo.part==="leftShoulder"),h=n[t].keypoints.find(o=>o.part==="rightShoulder");_&&h&&e.push({body:t,gesture:`leaning ${_.position.y>h.position.y?"left":"right"}`})}return e},it=n=>{if(!n)return[];let e=[];for(let t=0;t0){let A=n[t].mesh[33][2]-n[t].mesh[263][2];Math.abs(A)<10?e.push({face:t,gesture:"facing camera"}):e.push({face:t,gesture:`facing ${A<0?"right":"left"}`}),Math.abs(n[t].mesh[374][1]-n[t].mesh[386][1])/Math.abs(n[t].mesh[443][1]-n[t].mesh[450][1])<.2&&e.push({face:t,gesture:"blink left eye"}),Math.abs(n[t].mesh[145][1]-n[t].mesh[159][1])/Math.abs(n[t].mesh[223][1]-n[t].mesh[230][1])<.2&&e.push({face:t,gesture:"blink right eye"});let _=Math.min(100,500*Math.abs(n[t].mesh[13][1]-n[t].mesh[14][1])/Math.abs(n[t].mesh[10][1]-n[t].mesh[152][1]));_>10&&e.push({face:t,gesture:`mouth ${Math.trunc(_)}% open`});let h=n[t].mesh[152][2];Math.abs(h)>10&&e.push({face:t,gesture:`head ${h<0?"up":"down"}`})}return e},xt=n=>{if(!n)return[];let e=[];for(let t=0;t{if(!n)return[];let e=[];for(let t=0;t0){let r=A.reduce((_,h)=>_.position[2]_.position[1](i[w]=0,s))},r=function(h,o){let i=n.createShader(o);if(n.shaderSource(i,h),n.compileShader(i),!n.getShaderParameter(i,n.COMPILE_STATUS))throw new Error("Filter: GL compile failed",n.getShaderInfoLog(i));return i};this.uniform={},this.attribute={};let c=r(e,n.VERTEX_SHADER),_=r(t,n.FRAGMENT_SHADER);if(this.id=n.createProgram(),n.attachShader(this.id,c),n.attachShader(this.id,_),n.linkProgram(this.id),!n.getProgramParameter(this.id,n.LINK_STATUS))throw new Error("Filter: GL link failed",n.getProgramInfoLog(this.id));n.useProgram(this.id),A(e,"attribute",this.attribute);for(let h in this.attribute)this.attribute[h]=n.getAttribLocation(this.id,h);A(e,"uniform",this.uniform),A(t,"uniform",this.uniform);for(let h in this.uniform)this.uniform[h]=n.getUniformLocation(this.id,h)}function at(n){n||(n={});let e=0,t=null,A=!1,r=-1,c=[null,null],_=[],h=-1,o=-1,i=null,y=null,s={},w=n.canvas||document.createElement("canvas"),f={},d={INTERMEDIATE:1},x=w.getContext("webgl");if(!x)throw new Error("Filter: getContext() failed");this.addFilter=function(u){let a=Array.prototype.slice.call(arguments,1),p=s[u];_.push({func:p,args:a})},this.reset=function(){_=[]};let b=function(u,a){if(!(u===h&&a===o)){if(w.width=u,h=u,w.height=a,o=a,!i){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=x.createBuffer(),x.bindBuffer(x.ARRAY_BUFFER,i),x.bufferData(x.ARRAY_BUFFER,p,x.STATIC_DRAW),x.pixelStorei(x.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}x.viewport(0,0,h,o),c=[null,null]}},Z=function(u,a){let p=x.createFramebuffer();x.bindFramebuffer(x.FRAMEBUFFER,p);let z=x.createRenderbuffer();x.bindRenderbuffer(x.RENDERBUFFER,z);let R=x.createTexture();return x.bindTexture(x.TEXTURE_2D,R),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,u,a,0,x.RGBA,x.UNSIGNED_BYTE,null),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_2D,R,0),x.bindTexture(x.TEXTURE_2D,null),x.bindFramebuffer(x.FRAMEBUFFER,null),{fbo:p,texture:R}},V=function(u){return c[u]=c[u]||Z(h,o),c[u]},B=function(u=null){var R,C;let a=null,p=null,z=!1;e===0?a=t:a=(R=V(r))==null?void 0:R.texture,e++,A&&!(u&d.INTERMEDIATE)?(p=null,z=e%2==0):(r=(r+1)%2,p=(C=V(r))==null?void 0:C.fbo),x.bindTexture(x.TEXTURE_2D,a),x.bindFramebuffer(x.FRAMEBUFFER,p),x.uniform1f(y.uniform.flipY,z?-1:1),x.drawArrays(x.TRIANGLES,0,6)};this.apply=function(u){if(b(u.width,u.height),e=0,t||(t=x.createTexture()),x.bindTexture(x.TEXTURE_2D,t),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.NEAREST),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.NEAREST),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,x.RGBA,x.UNSIGNED_BYTE,u),_.length===0)return B(),w;for(let a=0;a<_.length;a++){A=a===_.length-1;let p=_[a];p.func.apply(this,p.args||[])}return w};let G=function(u){if(f[u])return y=f[u],x.useProgram(y.id),y;let a={};a.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var Ft=Object.create,ze=Object.defineProperty,qt=Object.getPrototypeOf,Yt=Object.prototype.hasOwnProperty,Bt=Object.getOwnPropertyNames,Ct=Object.getOwnPropertyDescriptor;var Me=n=>ze(n,"__esModule",{value:!0});var n1=(n,e)=>()=>(e||(e={exports:{}},n(e.exports,e)),e.exports),U=(n,e)=>{for(var t in e)ze(n,t,{get:e[t],enumerable:!0})},Jt=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Bt(e))!Yt.call(n,A)&&A!=="default"&&ze(n,A,{get:()=>e[A],enumerable:!(t=Ct(e,A))||t.enumerable});return n},N=n=>Jt(Me(ze(n!=null?Ft(qt(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var d0=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)},m=(n,e,t)=>(d0(n,e,"read from private field"),t?t.call(n):e.get(n)),ne=(n,e,t,A)=>(d0(n,e,"write to private field"),A?A.call(n,t):e.set(n,t),t);var O=n1(r1=>{var Kt=Object.create,A1=Object.defineProperty,Ut=Object.getPrototypeOf,Dt=Object.prototype.hasOwnProperty,Gt=Object.getOwnPropertyNames,Qt=Object.getOwnPropertyDescriptor,m0=n=>A1(n,"__esModule",{value:!0}),u0=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Gt(e))!Dt.call(n,A)&&A!=="default"&&A1(n,A,{get:()=>e[A],enumerable:!(t=Qt(e,A))||t.enumerable});return n},$t=n=>u0(m0(A1(n!=null?Kt(Ut(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);m0(r1);u0(r1,$t(require("@tensorflow/tfjs-node-gpu")))});var W0=n1(N0=>{Me(N0);U(N0,{MediaPipeFaceMesh:()=>y1,load:()=>on});var x1=N(O()),y1=class{constructor(e,t,A,r){this.facePipeline=new i1(e,t,A),this.config=r}async estimateFaces(e,t){let A=await this.facePipeline.predict(e,t),r=[];for(let c of A||[]){if(c.isDisposedInternal)continue;let _=c.coords?c.coords.arraySync():[],h=_.map(s=>[s[0]/e.shape[2],s[1]/e.shape[1],s[2]/this.facePipeline.meshSize]),o={};if(_&&_.length>0)for(let s of Object.keys(Q))o[s]=Q[s].map(w=>_[w]);let i=c.box?[Math.max(0,c.box.startPoint[0]),Math.max(0,c.box.startPoint[1]),Math.min(e.shape[1],c.box.endPoint[0])-c.box.startPoint[0],Math.min(e.shape[2],c.box.endPoint[1])-c.box.startPoint[1]]:0,y=c.box?[Math.max(0,c.box.startPoint[0]/e.shape[2]),Math.max(0,c.box.startPoint[1]/e.shape[1]),Math.min(e.shape[1],c.box.endPoint[0]-c.box.startPoint[0])/e.shape[2],Math.min(e.shape[2],c.box.endPoint[1]-c.box.startPoint[1])/e.shape[1]]:[];r.push({confidence:c.faceConfidence||c.boxConfidence||0,boxConfidence:c.boxConfidence,faceConfidence:c.faceConfidence,box:i,mesh:_,boxRaw:y,meshRaw:h,annotations:o,image:c.image?c.image.clone():null}),c.coords&&c.coords.dispose(),c.image&&c.image.dispose()}return r}},ye=[null,null,null];async function on(n){ye=await Promise.all([!ye[0]&&n.face.enabled?T0(n):null,!ye[1]&&n.face.mesh.enabled?x1.loadGraphModel(n.face.mesh.modelPath,{fromTFHub:n.face.mesh.modelPath.includes("tfhub.dev")}):null,!ye[2]&&n.face.iris.enabled?x1.loadGraphModel(n.face.iris.modelPath,{fromTFHub:n.face.iris.modelPath.includes("tfhub.dev")}):null]);let e=new y1(ye[0],ye[1],ye[2],n);return n.face.mesh.enabled&&n.debug&&g(`load model: ${n.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),n.face.iris.enabled&&n.debug&&g(`load model: ${n.face.iris.modelPath.match(/\/(.*)\./)[1]}`),e}N0.triangulation=xe});var Ve=n1(k1=>{Me(k1);U(k1,{NUM_KEYPOINTS:()=>wn,connectedPartIndices:()=>dn,partChannels:()=>mn,partIds:()=>I1,partNames:()=>an,poseChain:()=>fn});var an=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],wn=k1.partNames.length,I1=k1.partNames.reduce((n,e,t)=>(n[e]=t,n),{}),ln=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],dn=ln.map(([n,e])=>[I1[n],I1[e]]),fn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],mn=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});Me(exports);U(exports,{Human:()=>x0,default:()=>x0});function g(...n){let e=new Date,t=`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;n&&console.log(t,"Human:",...n)}function f0(){let n,e;if(typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);t&&t[0]&&(n=t[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),e=navigator.userAgent.replace(t[0],""),n[1]&&(e=e.replace(t[1],"")),e=e.replace(/ /g," "))}else typeof process!="undefined"&&(n=`${process.platform} ${process.arch}`,e=`NodeJS ${process.version}`);return{platform:n,agent:e}}var s0=N(O());var q=N(O()),Y={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function p0(){if(!q.findBackend(Y.name)){g("backend registration:",Y.name);try{Y.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Y.width,Y.height):document.createElement("canvas")}catch(n){g("error: cannot create canvas:",n);return}try{Y.gl=Y.canvas.getContext("webgl2",Y.webGLattr)}catch(n){g("error: cannot get WebGL2 context:",n);return}try{q.setWebGLContext(2,Y.gl)}catch(n){g("error: cannot set WebGL2 context:",n);return}try{let n=new q.GPGPUContext(Y.gl);q.registerBackend(Y.name,()=>new q.MathBackendWebGL(n),Y.priority)}catch(n){g("error: cannot register WebGL backend:",n);return}try{q.getKernelsForBackend("webgl").forEach(e=>{let t={...e,backendName:Y.name};q.registerKernel(t)})}catch(n){g("error: cannot update WebGL backend registration:",n);return}try{q.ENV.set("WEBGL_VERSION",2)}catch(n){g("error: cannot set WebGL backend flags:",n);return}g("backend registered:",Y.name)}}var P=N(O()),b0=6;function en(n){let e={strides:[n/16,n/8],anchors:[2,6]},t=[];for(let A=0;A({startEndTensor:n,startPoint:P.slice(n,[0,0],[-1,2]),endPoint:P.slice(n,[0,2],[-1,2])});function nn(n,e,t){let A=P.slice(n,[0,1],[-1,2]),r=P.add(A,e),c=P.slice(n,[0,3],[-1,2]),_=P.div(c,t),h=P.div(r,t),o=P.div(_,2),i=P.sub(h,o),y=P.add(h,o),s=P.mul(i,t),w=P.mul(y,t);return P.concat2d([s,w],1)}var g0=class{constructor(e,t){this.model=e,this.anchorsData=en(e.inputs[0].shape[1]),this.anchors=P.tensor2d(this.anchorsData),this.inputSize=e.inputs[0].shape[2],this.config=t}async getBoundingBoxes(e){if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return null;let[t,A,r]=P.tidy(()=>{let w=e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),f=this.model.predict(w),d;if(Array.isArray(f)){let V=f.sort((a,p)=>a.size-p.size),B=P.concat([V[0],V[2]],2),G=P.concat([V[1],V[3]],2);d=P.concat([G,B],1).squeeze(0)}else d=f.squeeze();let x=nn(d,this.anchors,[this.inputSize,this.inputSize]),b=P.slice(d,[0,0],[-1,1]),Z=P.sigmoid(b).squeeze();return[d,x,Z]}),c=await P.image.nonMaxSuppressionAsync(A,r,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),_=c.arraySync();c.dispose();let o=_.map(s=>P.slice(A,[s,0],[1,-1])).map(s=>{let w=s.arraySync();return s.dispose(),w}),i=r.dataSync(),y=[];for(let s=0;sthis.config.face.detector.minConfidence){let d=tn(o[s]),x=this.anchorsData[w],b=P.tidy(()=>P.slice(t,[w,b0-1],[1,-1]).squeeze().reshape([b0,-1]));y.push({box:d,landmarks:b,anchor:x,confidence:f})}}return t.dispose(),A.dispose(),r.dispose(),{boxes:y,scaleFactor:[e.shape[2]/this.inputSize,e.shape[1]/this.inputSize]}}};async function T0(n){let e=await P.loadGraphModel(n.face.detector.modelPath,{fromTFHub:n.face.detector.modelPath.includes("tfhub.dev")}),t=new g0(e,n);return n.debug&&g(`load model: ${n.face.detector.modelPath.match(/\/(.*)\./)[1]}`),t}var X=N(O());var P0=N(O());function v0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]];return{startPoint:t,endPoint:A}}function ue(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function we(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function le(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return P0.image.cropAndResize(e,c,[0],t)}function Ee(n,e=1.5){let t=we(n),A=ue(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}function Re(n){let e=we(n),t=ue(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}var Se=[[1,0,0],[0,1,0],[0,0,1]];function rn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function c1(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return rn(t)}function z0(n,e){return[[1,0,n],[0,1,e],[0,0,1]]}function ce(n,e){let t=0;for(let A=0;Ah1[n]),Gn=_n.map(n=>h1[n]),Qn=hn.map(n=>h1[n]);var o1=Q.leftEyeLower0,s1=Q.rightEyeLower0,de={leftBounds:[o1[0],o1[o1.length-1]],rightBounds:[s1[0],s1[s1.length-1]]},We={count:468,mouth:13,symmetryLine:[13,Q.midwayBetweenEyes[0]]},S0={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},fe={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function je(n,e,t,A){for(let r=0;r<_1.length;r++){let{key:c,indices:_}=_1[r],h=Q[`${t}${c}`];if(!A||A.includes(c))for(let o=0;o<_.length;o++){let i=_[o];n[h[o]]=[e[i][0],e[i][1],(e[i][2]+n[h[o]][2])/2]}}}var i1=class{constructor(e,t,A){var r,c;this.storedBoxes=[],this.boundingBoxDetector=e,this.meshDetector=t,this.irisModel=A,this.boxSize=((r=e==null?void 0:e.model)==null?void 0:r.inputs[0].shape[2])||0,this.meshSize=(t==null?void 0:t.inputs[0].shape[2])||((c=e==null?void 0:e.model)==null?void 0:c.inputs[0].shape[2]),this.irisSize=(A==null?void 0:A.inputs[0].shape[1])||0,this.irisEnlarge=2.3,this.skipped=0,this.detectedFaces=0}transformRawCoords(e,t,A,r){let c=ue({startPoint:t.startPoint,endPoint:t.endPoint}),_=e.map(s=>[c[0]/this.meshSize*(s[0]-this.meshSize/2),c[1]/this.meshSize*(s[1]-this.meshSize/2),s[2]]),h=A!==0?Ne(A,[0,0]):Se,o=A!==0?_.map(s=>[...R0(s,h),s[2]]):_,i=A!==0?E0(r):Se,y=[...we({startPoint:t.startPoint,endPoint:t.endPoint}),1];return o.map(s=>[s[0]+ce(y,i[0]),s[1]+ce(y,i[1]),s[2]])}getLeftToRightEyeDepthDifference(e){let t=e[de.leftBounds[0]][2],A=e[de.rightBounds[0]][2];return t-A}getEyeBox(e,t,A,r,c=!1){let _=Re(Ee(this.calculateLandmarksBoundingBox([e[A],e[r]]),this.irisEnlarge)),h=ue(_),o=X.image.cropAndResize(t,[[_.startPoint[1]/this.meshSize,_.startPoint[0]/this.meshSize,_.endPoint[1]/this.meshSize,_.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return c&&X.ENV.flags.IS_BROWSER&&(o=X.image.flipLeftRight(o)),{box:_,boxSize:h,crop:o}}getEyeCoords(e,t,A,r=!1){let c=[];for(let _=0;_{let i=_;return o===2?i=r:o===4&&(i=c),[h[0],h[1],i]})}async predict(e,t){let A=!1,r;if((this.skipped===0||this.skipped>t.face.detector.skipFrames||!t.face.mesh.enabled||!t.videoOptimized)&&(r=await this.boundingBoxDetector.getBoundingBoxes(e),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.boxes&&(!t.face.mesh.enabled||r.boxes.length!==this.detectedFaces&&this.detectedFaces!==t.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let _ of r.boxes)this.storedBoxes.push({startPoint:_.box.startPoint.dataSync(),endPoint:_.box.endPoint.dataSync(),landmarks:_.landmarks,confidence:_.confidence});this.storedBoxes.length>0&&(A=!0)}if(t.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),A){if(!r||!r.boxes||r.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let _=0;_{_.box.startPoint.dispose(),_.box.endPoint.dispose(),_.landmarks.dispose()});let c=X.tidy(()=>this.storedBoxes.map((_,h)=>{let o=_.confidence,i,y=0,s;if(t.face.detector.rotation&&t.face.mesh.enabled&&X.ENV.flags.IS_BROWSER){let[u,a]=_.landmarks.length>=We.count?We.symmetryLine:S0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],S=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.boxSize,this.boxSize]).div(255)}else{s=Se;let u=e.clone();t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.boxSize,this.boxSize]).div(255)}if(!t.face.mesh.enabled)return{coords:null,box:_,faceConfidence:null,boxConfidence:_.confidence,confidence:_.confidence,image:i};let[,w,f]=this.meshDetector.predict(i),d=w.dataSync()[0];if(d=We.count?We.symmetryLine:S0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],S=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.meshSize,this.meshSize]).div(255)}let B={coords:V,box:_,faceConfidence:d,boxConfidence:o,image:i,rawCoords:b},G=Re(_);return this.storedBoxes[h]={...G,landmarks:Z,confidence:_.confidence,faceConfidence:d},B}));return c=c.filter(_=>_!==null),t.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(_=>_.faceConfidence>t.face.detector.minConfidence)),this.detectedFaces=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c,landmarks:e}}};var i0=N(W0());var w1={};U(w1,{load:()=>l1,predict:()=>d1});var ee=N(O());var a1={};function $(n,e){if(!e||!e.kernels)return;let t=5,A=e.kernels.filter(h=>h.kernelTimeMs>0).reduce((h,o)=>h+=o.kernelTimeMs,0),r=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.kernelTimeMs>0).sort((h,o)=>o.kernelTimeMs-h.kernelTimeMs),c=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.totalBytesSnapshot>0).sort((h,o)=>o.totalBytesSnapshot-h.totalBytesSnapshot);r.length>t&&(r.length=t),c.length>t&&(c.length=t);let _={newBytes:e.newBytes,newTensors:e.newTensors,peakBytes:e.peakBytes,numKernelOps:e.kernels.length,timeKernelOps:A,slowestKernelOps:r,largestKernelOps:c};a1[n]=_,g("Human profiler",n,_)}var _e,Oe={age:0},ke=Number.MAX_SAFE_INTEGER;async function l1(n){return _e||(_e=await ee.loadGraphModel(n.face.age.modelPath),n.debug&&g(`load model: ${n.face.age.modelPath.match(/\/(.*)\./)[1]}`)),_e}async function d1(n,e){return _e?ke0?(ke++,Oe):(e.videoOptimized?ke=0:ke=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=ee.image.resizeBilinear(n,[_e.inputs[0].shape[2],_e.inputs[0].shape[1]],!1),r=ee.mul(A,[255]);ee.dispose(A);let c,_={age:0};if(!e.profile)e.face.age.enabled&&(c=await _e.predict(r));else{let h=e.face.age.enabled?await ee.profile(()=>_e.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("age",h)}if(r.dispose(),c){let h=c.dataSync();_.age=Math.trunc(10*h[0])/10}c.dispose(),Oe=_,t(_)})):null}var f1={};U(f1,{load:()=>b1,predict:()=>g1});var I=N(O());var re,m1={gender:""},Ie=Number.MAX_SAFE_INTEGER,u1=!1,p1=[.2989,.587,.114];async function b1(n){return re||(re=await I.loadGraphModel(n.face.gender.modelPath),u1=re.inputs[0].shape[3]===1,n.debug&&g(`load model: ${n.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),re}async function g1(n,e){return re?Ie{let A=I.image.resizeBilinear(n,[re.inputs[0].shape[2],re.inputs[0].shape[1]],!1),r;u1?r=I.tidy(()=>{let[h,o,i]=I.split(A,3,3),y=I.mul(h,p1[0]),s=I.mul(o,p1[1]),w=I.mul(i,p1[2]);return I.addN([y,s,w]).sub(.5).mul(2)}):r=I.mul(A,[255]),I.dispose(A);let c,_={gender:"",confidence:0};if(!e.profile)e.face.gender.enabled&&(c=await re.predict(r));else{let h=e.face.gender.enabled?await I.profile(()=>re.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("gender",h)}if(r.dispose(),c){let h=c.dataSync();if(u1)(h[0]>e.face.gender.minConfidence||h[1]>e.face.gender.minConfidence)&&(_.gender=h[0]>h[1]?"female":"male",_.confidence=h[0]>h[1]?Math.trunc(100*h[0])/100:Math.trunc(100*h[1])/100);else{let o=Math.trunc(200*Math.abs(h[0]-.5))/100;o>e.face.gender.minConfidence&&(_.gender=h[0]<=.5?"female":"male",_.confidence=Math.min(.99,o))}}c.dispose(),m1=_,t(_)})):null}var T1={};U(T1,{load:()=>z1,predict:()=>M1});var L=N(O());var sn=["angry","disgust","fear","happy","sad","surprise","neutral"],he,P1=[],Ze=Number.MAX_SAFE_INTEGER,v1=[.2989,.587,.114];async function z1(n){return he||(he=await L.loadGraphModel(n.face.emotion.modelPath),n.debug&&g(`load model: ${n.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),he}async function M1(n,e){return he?Ze0?(Ze++,P1):(e.videoOptimized?Ze=0:Ze=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=L.image.resizeBilinear(n,[he.inputs[0].shape[2],he.inputs[0].shape[1]],!1),[r,c,_]=L.split(A,3,3);A.dispose();let h=L.mul(r,v1[0]),o=L.mul(c,v1[1]),i=L.mul(_,v1[2]);r.dispose(),c.dispose(),_.dispose();let y=L.addN([h,o,i]);h.dispose(),o.dispose(),i.dispose();let s=L.tidy(()=>y.sub(.5).mul(2));y.dispose();let w=[];if(e.face.emotion.enabled){let f;if(e.profile){let d=await L.profile(()=>he.predict(s));f=d.result.dataSync(),d.result.dispose(),$("emotion",d)}else{let d=await he.predict(s);f=d.dataSync(),L.dispose(d)}for(let d=0;de.face.emotion.minConfidence&&w.push({score:Math.min(.99,Math.trunc(100*f[d])/100),emotion:sn[d]});w.sort((d,x)=>x.score-d.score)}s.dispose(),P1=w,t(w)})):null}var E=N(O());var te;async function E1(n){return te||(te=await E.loadGraphModel(n.face.embedding.modelPath),n.debug&&g(`load model: ${n.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),te}function R1(n,e,t=2){if(!n||!e||(n==null?void 0:n.length)===0||(e==null?void 0:e.length)===0||(n==null?void 0:n.length)!==(e==null?void 0:e.length))return 0;let A=n.map((c,_)=>Math.abs(n[_]-e[_])**t).reduce((c,_)=>c+_,0)**(1/t);return Math.max(Math.trunc(1e3*(1-A))/1e3,0)}function j0(n,e,t=0){let A={simmilarity:0,name:"",source:"",embedding:[]};if(!n||!e||!Array.isArray(n)||!Array.isArray(e))return A;for(let r of e)if(r.embedding&&r.name){let c=R1(n,r.embedding);c>t&&c>A.simmilarity&&(A={...r,simmilarity:c})}return A}function S1(n){return E.tidy(()=>{let t=[[.05,.15,.85,.85]],A=n.image||n.tensor;if(!(A instanceof E.Tensor))return null;let r=A.shape.length===3?E.image.cropAndResize(E.expandDims(A,0),t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]):E.image.cropAndResize(A,t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]),c=[.2989,.587,.114],[_,h,o]=E.split(r,3,3),i=E.mul(_,c[0]),y=E.mul(h,c[1]),s=E.mul(o,c[2]),w=E.addN([i,y,s]),f=E.stack([w,w,w],3).squeeze(4),d=f.sub(f.min());return d.div(d.max())})}async function N1(n,e){return te?new Promise(async t=>{let A=[];if(e.face.embedding.enabled){let r=S1(n);if(!e.profile)A=E.tidy(()=>[...te.predict(r).reshape([128,2]).logSumExp(1).dataSync()]);else{let c=await E.profile(()=>te.predict({img_inputs:r}));A=[...c.result.dataSync()],c.result.dispose(),$("emotion",c)}E.dispose(r)}t(A)}):[]}var q1={};U(q1,{PoseNet:()=>Y1,load:()=>B1});var G0=N(O());var O0=N(O());function xn(n){let[e,t,A,r]=n;return{offsets:e,heatmap:t,displacementFwd:A,displacementBwd:r}}var W1=class{constructor(e){this.model=e}predict(e){return O0.tidy(()=>{let A=e.toFloat().div(127.5).sub(1).expandDims(0),c=this.model.predict(A).map(h=>h.squeeze([0])),_=xn(c);return{heatmapScores:_.heatmap.sigmoid(),offsets:_.offsets,displacementFwd:_.displacementFwd,displacementBwd:_.displacementBwd}})}dispose(){this.model.dispose()}};function j1(n){return Math.floor(n/2)}var O1=class{constructor(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}enqueue(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)}dequeue(){let e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(e){for(;e>0&&this.less(j1(e),e);)this.exchange(e,j1(e)),e=j1(e)}sink(e){for(;2*e<=this.numberOfElements;){let t=2*e;if(te){o=!1;break}if(!o)break}return o}function k0(n,e,t){let[A,r,c]=t.shape,_=new O1(A*r*c,({score:h})=>h);for(let h=0;ht?t:n}function Z0(n,e,t,A){let r=t-n,c=A-e;return r*r+c*c}function L1(n,e){return{x:n.x+e.x,y:n.y+e.y}}var J=N(O()),He=N(Ve());function V0(n,e){let t=e.shape[0],A=new Float32Array(t);for(let r=0;rn.toTensor().mul(J.scalar(e,"int32")).toFloat().add(pn(n,t)))}function bn(n,e){return J.tidy(()=>{let t=n.div(J.scalar(e,"int32"));return n.sub(t.mul(J.scalar(e,"int32")))})}function H0(n){let[e,t,A]=n.shape;return J.tidy(()=>{let c=n.reshape([e*t,A]).argMax(0),_=c.div(J.scalar(t,"int32")).expandDims(1),h=bn(c,t).expandDims(1);return J.concat([_,h],1)})}var X0=Ae.poseChain.map(([n,e])=>[Ae.partIds[n],Ae.partIds[e]]),H1=X0.map(([,n])=>n),F0=X0.map(([n])=>n),gn=16;function Tn(n,e,t){let A=t.shape[2]/2;return{y:t.get(e.y,e.x,n),x:t.get(e.y,e.x,A+n)}}function X1(n,e,t,A){return{y:V1(Math.round(n.y/e),0,t-1),x:V1(Math.round(n.x/e),0,A-1)}}function q0(n,e,t,A,r,c,_,h=2){let[o,i]=A.shape,y=X1(e.position,c,o,i),s=Tn(n,y,_),f=L1(e.position,s);for(let b=0;b=0;--w){let f=H1[w],d=F0[w];o[f]&&!o[d]&&(o[d]=q0(w,o[f],d,e,t,A,c))}for(let w=0;w(A+=d,{position:{y:y.get(x,0),x:y.get(x,1)},part:Ae.partNames[x],score:d})),f=w.filter(d=>d.score>t);return r.dispose(),i.dispose(),{keypoints:f,score:A/w.length}}var Pn=1,C0=16;function J0(n,e,{x:t,y:A},r){return n.some(({keypoints:c})=>{let _=c[r].position;return Z0(A,t,_.y,_.x)<=e})}function vn(n,e,t){return t.reduce((r,{position:c,score:_},h)=>(J0(n,e,c,h)||(r+=_),r),0)/t.length}function K0(n,e,t,A,r,c,_){let h=[],o=k0(_,Pn,n),i=r^2;for(;h.length_&&h.push({keypoints:w,score:f})}return h}async function U0(n){return Promise.all(n.map(e=>e.buffer()))}function zn(n,e,t){return{score:n.score,keypoints:n.keypoints.map(({score:A,part:r,position:c})=>({score:A,part:r,position:{x:Math.trunc(c.x*t),y:Math.trunc(c.y*e)}}))}}function D0(n,[e,t]){let A=n.squeeze(0),r=A.resizeBilinear([e,t]);return A.dispose(),r}function F1(n,[e,t],[A,r]){return n.map(_=>zn(_,e/A,t/r))}async function Mn(n,e,t,A){return new Promise(async r=>{let c=await U0([e.heatmapScores,e.offsets,e.displacementFwd,e.displacementBwd]),_=c[0],h=c[1],o=c[2],i=c[3],y=await K0(_,h,o,i,t.body.nmsRadius,t.body.maxDetections,t.body.scoreThreshold),s=F1(y,[n.shape[1],n.shape[2]],[A,A]);r(s)})}async function En(n,e,t,A){return new Promise(async r=>{let c=await B0(e.heatmapScores,e.offsets,t.body.scoreThreshold),_=F1([c],[n.shape[1],n.shape[2]],[A,A]);r(_)})}var Y1=class{constructor(e){this.baseModel=e,this.inputSize=e.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(e,t){let A=D0(e,[this.inputSize,this.inputSize]),r=this.baseModel.predict(A,t),c=t.body.maxDetections<2?await En(e,r,t,this.inputSize):await Mn(e,r,t,this.inputSize);return r.heatmapScores.dispose(),r.offsets.dispose(),r.displacementFwd.dispose(),r.displacementBwd.dispose(),A.dispose(),c}dispose(){this.baseModel.dispose()}};async function B1(n){let e=await G0.loadGraphModel(n.body.modelPath),t=new W1(e);return n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`),new Y1(t)}var D1={};U(D1,{HandPose:()=>$1,load:()=>e0});var G1=N(O());var T=N(O());var Q0=N(O());function Xe(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function pe(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function $0(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return Q0.image.cropAndResize(e,c,[0],t)}function et(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]],r=n.palmLandmarks.map(c=>[c[0]*e[0],c[1]*e[1]]);return{startPoint:t,endPoint:A,palmLandmarks:r,confidence:n.confidence}}function Fe(n,e=1.5){let t=pe(n),A=Xe(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}function qe(n){let e=pe(n),t=Xe(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}var C1=class{constructor(e,t,A){this.model=e,this.anchors=A.map(r=>[r.x_center,r.y_center]),this.anchorsTensor=T.tensor2d(this.anchors),this.inputSize=t,this.inputSizeTensor=T.tensor1d([t,t]),this.doubleInputSizeTensor=T.tensor1d([t*2,t*2])}normalizeBoxes(e){return T.tidy(()=>{let t=T.slice(e,[0,0],[-1,2]),A=T.slice(e,[0,2],[-1,2]),r=T.add(T.div(t,this.inputSizeTensor),this.anchorsTensor),c=T.div(A,this.doubleInputSizeTensor),_=T.mul(T.sub(r,c),this.inputSizeTensor),h=T.mul(T.add(r,c),this.inputSizeTensor);return T.concat2d([_,h],1)})}normalizeLandmarks(e,t){return T.tidy(()=>{let A=T.add(T.div(e.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return T.mul(A,this.inputSizeTensor)})}async getBoxes(e,t){let A=this.model.predict(e),r=A.squeeze();A.dispose();let c=T.tidy(()=>T.sigmoid(T.slice(r,[0,0],[-1,1])).squeeze()),_=c.dataSync(),h=T.slice(r,[0,1],[-1,4]),o=this.normalizeBoxes(h);h.dispose();let i=await T.image.nonMaxSuppressionAsync(o,_,t.hand.maxHands,t.hand.iouThreshold,t.hand.scoreThreshold),y=i.arraySync();c.dispose(),i.dispose();let s=[];for(let w of y)if(_[w]>=t.hand.minConfidence){let f=T.slice(o,[w,0],[1,-1]),d=T.slice(r,[w,5],[1,14]),x=T.tidy(()=>this.normalizeLandmarks(d,w).reshape([-1,2]));d.dispose(),s.push({box:f,palmLandmarks:x,confidence:_[w]})}return r.dispose(),o.dispose(),s}async estimateHandBounds(e,t){let A=e.shape[1],r=e.shape[2],c=T.tidy(()=>e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),_=await this.getBoxes(c,t);c.dispose();let h=[];if(!_||_.length===0)return h;for(let o of _){let i=o.box.dataSync(),y=i.slice(0,2),s=i.slice(2,4),w=o.palmLandmarks.arraySync();o.box.dispose(),o.palmLandmarks.dispose(),h.push(et({startPoint:y,endPoint:s,palmLandmarks:w,confidence:o.confidence},[r/this.inputSize,A/this.inputSize]))}return h}};var Ye=N(O());function Rn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function tt(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return Rn(t)}var nt=(n,e)=>[[1,0,n],[0,1,e],[0,0,1]];function oe(n,e){let t=0;for(let A=0;AK1([...c,1],t)),r=this.calculateLandmarksBoundingBox(A);return Fe(qe(r),Nn)}getBoxForHandLandmarks(e){let t=this.calculateLandmarksBoundingBox(e),A=Fe(qe(t),ct);A.palmLandmarks=[];for(let r=0;r<_t.length;r++)A.palmLandmarks.push(e[_t[r]].slice(0,2));return A}transformRawCoords(e,t,A,r){let c=Xe(t),_=[c[0]/this.inputSize,c[1]/this.inputSize,(c[0]+c[1])/this.inputSize/2],h=e.map(f=>[_[0]*(f[0]-this.inputSize/2),_[1]*(f[1]-this.inputSize/2),_[2]*f[2]]),o=J1(A,[0,0]),i=h.map(f=>[...K1(f,o),f[2]]),y=At(r),s=[...pe(t),1],w=[oe(s,y[0]),oe(s,y[1])];return i.map(f=>[f[0]+w[0],f[1]+w[1],f[2]])}async estimateHands(e,t){let A=!1,r;(this.skipped===0||this.skipped>t.hand.skipFrames||!t.hand.landmarks||!t.videoOptimized)&&(r=await this.handDetector.estimateHandBounds(e,t),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.length>0&&(r.length!==this.detectedHands&&this.detectedHands!==t.hand.maxHands||!t.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...r],this.storedBoxes.length>0&&(A=!0));let c=[];t.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let _=0;_=t.hand.minConfidence){let B=Ye.reshape(Z,[-1,3]),G=B.arraySync();Z.dispose(),B.dispose();let u=this.transformRawCoords(G,f,o,w),a=this.getBoxForHandLandmarks(u);this.storedBoxes[_]=a;let p={landmarks:u,confidence:V,box:{topLeft:a.startPoint,bottomRight:a.endPoint}};c.push(p)}else this.storedBoxes[_]=null;Z.dispose()}else{let o=Fe(qe(h),ct),i={confidence:h.confidence,box:{topLeft:o.startPoint,bottomRight:o.endPoint}};c.push(i)}}return this.storedBoxes=this.storedBoxes.filter(_=>_!==null),this.detectedHands=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c}}};var ht=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var Q1={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},$1=class{constructor(e){this.handPipeline=e}static getAnnotations(){return Q1}async estimateHands(e,t){let A=await this.handPipeline.estimateHands(e,t);if(!A)return[];let r=[];for(let c of A){let _={};if(c.landmarks)for(let o of Object.keys(Q1))_[o]=Q1[o].map(i=>c.landmarks[i]);let h=c.box?[Math.max(0,c.box.topLeft[0]),Math.max(0,c.box.topLeft[1]),Math.min(e.shape[2],c.box.bottomRight[0])-c.box.topLeft[0],Math.min(e.shape[1],c.box.bottomRight[1])-c.box.topLeft[1]]:0;r.push({confidence:c.confidence,box:h,landmarks:c.landmarks,annotations:_})}return r}};async function e0(n){let[e,t]=await Promise.all([n.hand.enabled?G1.loadGraphModel(n.hand.detector.modelPath,{fromTFHub:n.hand.detector.modelPath.includes("tfhub.dev")}):null,n.hand.landmarks?G1.loadGraphModel(n.hand.skeleton.modelPath,{fromTFHub:n.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),A=new C1(e,e==null?void 0:e.inputs[0].shape[2],ht),r=new U1(A,t,t==null?void 0:t.inputs[0].shape[2]),c=new $1(r);return n.hand.enabled&&n.debug&&g(`load model: ${n.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),n.hand.landmarks&&n.debug&&g(`load model: ${n.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),c}var t0={};U(t0,{load:()=>n0,predict:()=>r0});var se=N(O());var ot=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],st=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var K;async function n0(n){return K||(K=await se.loadGraphModel(n.body.modelPath),K.width=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[2].size),K.height=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[1].size),n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`)),K}async function r0(n,e){if(!K||!e.body.enabled)return null;let t={width:n.shape[2],height:n.shape[1]},A=se.image.resizeBilinear(n,[K.width,K.height],!1),r=se.div(A,[255]);A.dispose();let c;if(e.profile){let i=await se.profile(()=>K.predict(r));c=i.result.find(y=>y.size===195||y.size===155).dataSync(),i.result.forEach(y=>y.dispose()),$("blazepose",i)}else{let i=await K.predict(r);c=i.find(y=>y.size===195||y.size===155).dataSync(),i.forEach(y=>y.dispose())}r.dispose();let _=[],h=c.length===195?ot:st,o=5;for(let i=0;i{if(!n)return[];let e=[];for(let t=0;to.part==="leftWrist"),r=n[t].keypoints.find(o=>o.part==="rightWrist"),c=n[t].keypoints.find(o=>o.part==="nose");c&&A&&r&&A.position.yo.part==="leftShoulder"),h=n[t].keypoints.find(o=>o.part==="rightShoulder");_&&h&&e.push({body:t,gesture:`leaning ${_.position.y>h.position.y?"left":"right"}`})}return e},xt=n=>{if(!n)return[];let e=[];for(let t=0;t0){let A=n[t].mesh[33][2]-n[t].mesh[263][2];Math.abs(A)<10?e.push({face:t,gesture:"facing camera"}):e.push({face:t,gesture:`facing ${A<0?"right":"left"}`}),Math.abs(n[t].mesh[374][1]-n[t].mesh[386][1])/Math.abs(n[t].mesh[443][1]-n[t].mesh[450][1])<.2&&e.push({face:t,gesture:"blink left eye"}),Math.abs(n[t].mesh[145][1]-n[t].mesh[159][1])/Math.abs(n[t].mesh[223][1]-n[t].mesh[230][1])<.2&&e.push({face:t,gesture:"blink right eye"});let _=Math.min(100,500*Math.abs(n[t].mesh[13][1]-n[t].mesh[14][1])/Math.abs(n[t].mesh[10][1]-n[t].mesh[152][1]));_>10&&e.push({face:t,gesture:`mouth ${Math.trunc(_)}% open`});let h=n[t].mesh[152][2];Math.abs(h)>10&&e.push({face:t,gesture:`head ${h<0?"up":"down"}`})}return e},yt=n=>{if(!n)return[];let e=[];for(let t=0;t{if(!n)return[];let e=[];for(let t=0;t0){let r=A.reduce((_,h)=>_.position[2]_.position[1](i[w]=0,s))},r=function(h,o){let i=n.createShader(o);if(n.shaderSource(i,h),n.compileShader(i),!n.getShaderParameter(i,n.COMPILE_STATUS))throw new Error("Filter: GL compile failed",n.getShaderInfoLog(i));return i};this.uniform={},this.attribute={};let c=r(e,n.VERTEX_SHADER),_=r(t,n.FRAGMENT_SHADER);if(this.id=n.createProgram(),n.attachShader(this.id,c),n.attachShader(this.id,_),n.linkProgram(this.id),!n.getProgramParameter(this.id,n.LINK_STATUS))throw new Error("Filter: GL link failed",n.getProgramInfoLog(this.id));n.useProgram(this.id),A(e,"attribute",this.attribute);for(let h in this.attribute)this.attribute[h]=n.getAttribLocation(this.id,h);A(e,"uniform",this.uniform),A(t,"uniform",this.uniform);for(let h in this.uniform)this.uniform[h]=n.getUniformLocation(this.id,h)}function wt(n){n||(n={});let e=0,t=null,A=!1,r=-1,c=[null,null],_=[],h=-1,o=-1,i=null,y=null,s={},w=n.canvas||document.createElement("canvas"),f={},d={INTERMEDIATE:1},x=w.getContext("webgl");if(!x)throw new Error("Filter: getContext() failed");this.addFilter=function(u){let a=Array.prototype.slice.call(arguments,1),p=s[u];_.push({func:p,args:a})},this.reset=function(){_=[]};let b=function(u,a){if(!(u===h&&a===o)){if(w.width=u,h=u,w.height=a,o=a,!i){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=x.createBuffer(),x.bindBuffer(x.ARRAY_BUFFER,i),x.bufferData(x.ARRAY_BUFFER,p,x.STATIC_DRAW),x.pixelStorei(x.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}x.viewport(0,0,h,o),c=[null,null]}},Z=function(u,a){let p=x.createFramebuffer();x.bindFramebuffer(x.FRAMEBUFFER,p);let z=x.createRenderbuffer();x.bindRenderbuffer(x.RENDERBUFFER,z);let S=x.createTexture();return x.bindTexture(x.TEXTURE_2D,S),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,u,a,0,x.RGBA,x.UNSIGNED_BYTE,null),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_2D,S,0),x.bindTexture(x.TEXTURE_2D,null),x.bindFramebuffer(x.FRAMEBUFFER,null),{fbo:p,texture:S}},V=function(u){return c[u]=c[u]||Z(h,o),c[u]},B=function(u=null){var S,C;let a=null,p=null,z=!1;e===0?a=t:a=(S=V(r))==null?void 0:S.texture,e++,A&&!(u&d.INTERMEDIATE)?(p=null,z=e%2==0):(r=(r+1)%2,p=(C=V(r))==null?void 0:C.fbo),x.bindTexture(x.TEXTURE_2D,a),x.bindFramebuffer(x.FRAMEBUFFER,p),x.uniform1f(y.uniform.flipY,z?-1:1),x.drawArrays(x.TRIANGLES,0,6)};this.apply=function(u){if(b(u.width,u.height),e=0,t||(t=x.createTexture()),x.bindTexture(x.TEXTURE_2D,t),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.NEAREST),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.NEAREST),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,x.RGBA,x.UNSIGNED_BYTE,u),_.length===0)return B(),w;for(let a=0;a<_.length;a++){A=a===_.length-1;let p=_[a];p.func.apply(this,p.args||[])}return w};let G=function(u){if(f[u])return y=f[u],x.useProgram(y.id),y;let a={};a.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),a.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` -`),y=new jn(x,a.VERTEX_IDENTITY,u);let p=Float32Array.BYTES_PER_ELEMENT,z=4*p;return x.enableVertexAttribArray(y.attribute.pos),x.vertexAttribPointer(y.attribute.pos,2,x.FLOAT,!1,z,0*p),x.enableVertexAttribArray(y.attribute.uv),x.vertexAttribPointer(y.attribute.uv,2,x.FLOAT,!1,z,2*p),f[u]=y,y};s.colorMatrix=function(u){let a=new Float32Array(u);a[4]/=255,a[9]/=255,a[14]/=255,a[19]/=255;let p=a[18]===1&&a[3]===0&&a[8]===0&&a[13]===0&&a[15]===0&&a[16]===0&&a[17]===0&&a[19]===0?s.colorMatrix.SHADER.WITHOUT_ALPHA:s.colorMatrix.SHADER.WITH_ALPHA,z=G(p);x.uniform1fv(z.uniform.m,a),B()},s.colorMatrix.SHADER={},s.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` +`),y=new On(x,a.VERTEX_IDENTITY,u);let p=Float32Array.BYTES_PER_ELEMENT,z=4*p;return x.enableVertexAttribArray(y.attribute.pos),x.vertexAttribPointer(y.attribute.pos,2,x.FLOAT,!1,z,0*p),x.enableVertexAttribArray(y.attribute.uv),x.vertexAttribPointer(y.attribute.uv,2,x.FLOAT,!1,z,2*p),f[u]=y,y};s.colorMatrix=function(u){let a=new Float32Array(u);a[4]/=255,a[9]/=255,a[14]/=255,a[19]/=255;let p=a[18]===1&&a[3]===0&&a[8]===0&&a[13]===0&&a[15]===0&&a[16]===0&&a[17]===0&&a[19]===0?s.colorMatrix.SHADER.WITHOUT_ALPHA:s.colorMatrix.SHADER.WITH_ALPHA,z=G(p);x.uniform1fv(z.uniform.m,a),B()},s.colorMatrix.SHADER={},s.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),s.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` -`),s.brightness=function(u){let a=(u||0)+1;s.colorMatrix([a,0,0,0,0,0,a,0,0,0,0,0,a,0,0,0,0,0,1,0])},s.saturation=function(u){let a=(u||0)*2/3+1,p=(a-1)*-.5;s.colorMatrix([a,p,p,0,0,p,a,p,0,0,p,p,a,0,0,0,0,0,1,0])},s.desaturate=function(){s.saturation(-1)},s.contrast=function(u){let a=(u||0)+1,p=-128*(a-1);s.colorMatrix([a,0,0,0,p,0,a,0,0,p,0,0,a,0,p,0,0,0,1,0])},s.negative=function(){s.contrast(-2)},s.hue=function(u){u=(u||0)/180*Math.PI;let a=Math.cos(u),p=Math.sin(u),z=.213,R=.715,C=.072;s.colorMatrix([z+a*(1-z)+p*-z,R+a*-R+p*-R,C+a*-C+p*(1-C),0,0,z+a*-z+p*.143,R+a*(1-R)+p*.14,C+a*-C+p*-.283,0,0,z+a*-z+p*-(1-z),R+a*-R+p*R,C+a*(1-C)+p*C,0,0,0,0,0,1,0])},s.desaturateLuminance=function(){s.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},s.sepia=function(){s.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},s.brownie=function(){s.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},s.vintagePinhole=function(){s.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},s.kodachrome=function(){s.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},s.technicolor=function(){s.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},s.polaroid=function(){s.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},s.shiftToBGR=function(){s.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},s.convolution=function(u){let a=new Float32Array(u),p=1/h,z=1/o,R=G(s.convolution.SHADER);x.uniform1fv(R.uniform.m,a),x.uniform2f(R.uniform.px,p,z),B()},s.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` +`),s.brightness=function(u){let a=(u||0)+1;s.colorMatrix([a,0,0,0,0,0,a,0,0,0,0,0,a,0,0,0,0,0,1,0])},s.saturation=function(u){let a=(u||0)*2/3+1,p=(a-1)*-.5;s.colorMatrix([a,p,p,0,0,p,a,p,0,0,p,p,a,0,0,0,0,0,1,0])},s.desaturate=function(){s.saturation(-1)},s.contrast=function(u){let a=(u||0)+1,p=-128*(a-1);s.colorMatrix([a,0,0,0,p,0,a,0,0,p,0,0,a,0,p,0,0,0,1,0])},s.negative=function(){s.contrast(-2)},s.hue=function(u){u=(u||0)/180*Math.PI;let a=Math.cos(u),p=Math.sin(u),z=.213,S=.715,C=.072;s.colorMatrix([z+a*(1-z)+p*-z,S+a*-S+p*-S,C+a*-C+p*(1-C),0,0,z+a*-z+p*.143,S+a*(1-S)+p*.14,C+a*-C+p*-.283,0,0,z+a*-z+p*-(1-z),S+a*-S+p*S,C+a*(1-C)+p*C,0,0,0,0,0,1,0])},s.desaturateLuminance=function(){s.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},s.sepia=function(){s.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},s.brownie=function(){s.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},s.vintagePinhole=function(){s.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},s.kodachrome=function(){s.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},s.technicolor=function(){s.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},s.polaroid=function(){s.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},s.shiftToBGR=function(){s.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},s.convolution=function(u){let a=new Float32Array(u),p=1/h,z=1/o,S=G(s.convolution.SHADER);x.uniform1fv(S.uniform.m,a),x.uniform2f(S.uniform.px,p,z),B()},s.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),s.detectEdges=function(){s.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},s.sobelX=function(){s.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},s.sobelY=function(){s.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},s.sharpen=function(u){let a=u||1;s.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},s.emboss=function(u){let a=u||1;s.convolution.call(this,[-2*a,-1*a,0,-1*a,1,1*a,0,1*a,2*a])},s.blur=function(u){let a=u/7/h,p=u/7/o,z=G(s.blur.SHADER);x.uniform2f(z.uniform.px,0,p),B(d.INTERMEDIATE),x.uniform2f(z.uniform.px,a,0),B()},s.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),s.pixelate=function(u){let a=u/h,p=u/o,z=G(s.pixelate.SHADER);x.uniform2f(z.uniform.size,a,p),B()},s.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)}var Be=2048,W=null,H=null,j=null;function r0(n,e){let t;if(n instanceof D.Tensor)t=D.clone(n);else{let r=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0,c=n.naturalHeight||n.videoHeight||n.height||n.shape&&n.shape[2]>0,_=r,h=c;if(_>Be&&(_=Be,h=_*c/r),h>Be&&(h=Be,_=h*r/c),e.filter.width>0?_=e.filter.width:e.filter.height>0&&(_=r*(e.filter.height/c)),e.filter.height>0?h=e.filter.height:e.filter.width>0&&(h=c*(e.filter.width/r)),!_||!h)return g("Human: invalid input",n),{tensor:null,canvas:null};(!W||W.width!==_||W.height!==h)&&(W=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas"),W.width!==_&&(W.width=_),W.height!==h&&(W.height=h));let o=W.getContext("2d");if(n instanceof ImageData?o.putImageData(n,0,0):o.drawImage(n,0,0,r,c,0,0,W.width,W.height),e.filter.enabled){if((!j||!H||W.width!==H.width||W.height!==H.height)&&(H=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(W.width,W.height):document.createElement("canvas"),H.width!==W.width&&(H.width=W.width),H.height!==W.height&&(H.height=W.height),j=D.ENV.flags.IS_BROWSER?new at({canvas:H}):null),!j)return{tensor:null,canvas:W};j.reset(),j.addFilter("brightness",e.filter.brightness),e.filter.contrast!==0&&j.addFilter("contrast",e.filter.contrast),e.filter.sharpness!==0&&j.addFilter("sharpen",e.filter.sharpness),e.filter.blur!==0&&j.addFilter("blur",e.filter.blur),e.filter.saturation!==0&&j.addFilter("saturation",e.filter.saturation),e.filter.hue!==0&&j.addFilter("hue",e.filter.hue),e.filter.negative&&j.addFilter("negative"),e.filter.sepia&&j.addFilter("sepia"),e.filter.vintage&&j.addFilter("brownie"),e.filter.sepia&&j.addFilter("sepia"),e.filter.kodachrome&&j.addFilter("kodachrome"),e.filter.technicolor&&j.addFilter("technicolor"),e.filter.polaroid&&j.addFilter("polaroid"),e.filter.pixelate!==0&&j.addFilter("pixelate",e.filter.pixelate),j.apply(W)}else H=W,j&&(j=null);let i;if(H.data){let s=[H.height,H.width,3];i=D.tensor3d(H.data,s,"int32")}else if(e.backend==="webgl"||H instanceof ImageData)i=D.browser.fromPixels(H);else{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas");s.width=_,s.height=h;let w=s.getContext("2d");w==null||w.drawImage(H,0,0);let f=w==null?void 0:w.getImageData(0,0,_,h);i=D.browser.fromPixels(f)}let y=i.toFloat();t=y.expandDims(0),i.dispose(),y.dispose()}let A=e.filter.return?H:null;return{tensor:t,canvas:A}}var E={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var Ce=` +`)}var Be=2048,W=null,H=null,j=null;function A0(n,e){let t;if(n instanceof D.Tensor)t=D.clone(n);else{let r=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0,c=n.naturalHeight||n.videoHeight||n.height||n.shape&&n.shape[2]>0,_=r,h=c;if(_>Be&&(_=Be,h=_*c/r),h>Be&&(h=Be,_=h*r/c),e.filter.width>0?_=e.filter.width:e.filter.height>0&&(_=r*(e.filter.height/c)),e.filter.height>0?h=e.filter.height:e.filter.width>0&&(h=c*(e.filter.width/r)),!_||!h)return g("Human: invalid input",n),{tensor:null,canvas:null};(!W||W.width!==_||W.height!==h)&&(W=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas"),W.width!==_&&(W.width=_),W.height!==h&&(W.height=h));let o=W.getContext("2d");if(n instanceof ImageData?o.putImageData(n,0,0):o.drawImage(n,0,0,r,c,0,0,W.width,W.height),e.filter.enabled){if((!j||!H||W.width!==H.width||W.height!==H.height)&&(H=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(W.width,W.height):document.createElement("canvas"),H.width!==W.width&&(H.width=W.width),H.height!==W.height&&(H.height=W.height),j=D.ENV.flags.IS_BROWSER?new wt({canvas:H}):null),!j)return{tensor:null,canvas:W};j.reset(),j.addFilter("brightness",e.filter.brightness),e.filter.contrast!==0&&j.addFilter("contrast",e.filter.contrast),e.filter.sharpness!==0&&j.addFilter("sharpen",e.filter.sharpness),e.filter.blur!==0&&j.addFilter("blur",e.filter.blur),e.filter.saturation!==0&&j.addFilter("saturation",e.filter.saturation),e.filter.hue!==0&&j.addFilter("hue",e.filter.hue),e.filter.negative&&j.addFilter("negative"),e.filter.sepia&&j.addFilter("sepia"),e.filter.vintage&&j.addFilter("brownie"),e.filter.sepia&&j.addFilter("sepia"),e.filter.kodachrome&&j.addFilter("kodachrome"),e.filter.technicolor&&j.addFilter("technicolor"),e.filter.polaroid&&j.addFilter("polaroid"),e.filter.pixelate!==0&&j.addFilter("pixelate",e.filter.pixelate),j.apply(W)}else H=W,j&&(j=null);let i;if(H.data){let s=[H.height,H.width,3];i=D.tensor3d(H.data,s,"int32")}else if(e.backend==="webgl"||H instanceof ImageData)i=D.browser.fromPixels(H);else{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas");s.width=_,s.height=h;let w=s.getContext("2d");w==null||w.drawImage(H,0,0);let f=w==null?void 0:w.getImageData(0,0,_,h);i=D.browser.fromPixels(f)}let y=i.toFloat();t=y.expandDims(0),i.dispose(),y.dispose()}let A=e.filter.return?H:null;return{tensor:t,canvas:A}}var R={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var Ce=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -731,5 +731,5 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var A0={};U(A0,{author:()=>bt,browser:()=>ut,bugs:()=>gt,default:()=>On,description:()=>lt,devDependencies:()=>Rt,engines:()=>vt,homepage:()=>Tt,keywords:()=>Et,license:()=>Pt,main:()=>ft,module:()=>mt,name:()=>wt,repository:()=>zt,scripts:()=>Mt,sideEffects:()=>dt,types:()=>pt,version:()=>c0});var wt="@vladmandic/human",c0="1.1.4",lt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",dt=!1,ft="dist/human.node.js",mt="dist/human.esm.js",ut="dist/human.esm.js",pt="types/src/human.d.ts",bt="Vladimir Mandic ",gt={url:"https://github.com/vladmandic/human/issues"},Tt="https://vladmandic.github.io/human/demo/index.html",Pt="MIT",vt={node:">=12.0.0"},zt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Mt={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Et=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],Rt={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},On={name:wt,version:c0,description:lt,sideEffects:dt,main:ft,module:mt,browser:ut,types:pt,author:bt,bugs:gt,homepage:Tt,license:Pt,engines:vt,repository:zt,scripts:Mt,keywords:Et,devDependencies:Rt};var _0={};U(_0,{all:()=>In,body:()=>jt,canvas:()=>kn,drawOptions:()=>l,face:()=>Wt,gesture:()=>Nt,hand:()=>Ot});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function St(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function h0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){h0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function Wt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&St(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);h0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&h0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,St(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function kn(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function In(n,e){!e||!n||n instanceof HTMLCanvasElement&&(Wt(n,e.face),jt(n,e.body),Ot(n,e.hand),Nt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,i0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof o0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&u0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?S1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await S1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=o0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=o0,this.draw=_0,ne(this,De,A0),this.version=c0,this.config=be(E,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>r0(t,this.config),this.classes={facemesh:s0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?F1:e0,hand:U1},this.sysinfo=d0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?W0(e,t):0}enhance(e){return this.config.face.embedding.enabled?R1(e):null}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?s0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?$1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Y1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?t0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await s0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await $1(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Y1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await t0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=r0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?n0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await n0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...it(y),...st(o),...yt(i),...xt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); +2Q==`;var c0={};U(c0,{author:()=>gt,browser:()=>pt,bugs:()=>Tt,default:()=>kn,description:()=>dt,devDependencies:()=>St,engines:()=>zt,homepage:()=>Pt,keywords:()=>Rt,license:()=>vt,main:()=>mt,module:()=>ut,name:()=>lt,repository:()=>Mt,scripts:()=>Et,sideEffects:()=>ft,types:()=>bt,version:()=>_0});var lt="@vladmandic/human",_0="1.1.5",dt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",ft=!1,mt="dist/human.node.js",ut="dist/human.esm.js",pt="dist/human.esm.js",bt="types/src/human.d.ts",gt="Vladimir Mandic ",Tt={url:"https://github.com/vladmandic/human/issues"},Pt="https://vladmandic.github.io/human/demo/index.html",vt="MIT",zt={node:">=12.0.0"},Mt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Et={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Rt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],St={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kn={name:lt,version:_0,description:dt,sideEffects:ft,main:mt,module:ut,browser:pt,types:bt,author:gt,bugs:Tt,homepage:Pt,license:vt,engines:zt,repository:Mt,scripts:Et,keywords:Rt,devDependencies:St};var h0={};U(h0,{all:()=>Zn,body:()=>Ot,canvas:()=>In,drawOptions:()=>l,face:()=>jt,gesture:()=>Wt,hand:()=>kt});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function Nt(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function o0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){o0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);o0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&o0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function kt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function In(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Zn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(jt(n,e.face),Ot(n,e.body),kt(n,e.hand),Wt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,x0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof s0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&p0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?N1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await N1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=s0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=s0,this.draw=h0,ne(this,De,c0),this.version=_0,this.config=be(R,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>A0(t,this.config),this.classes={facemesh:i0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?q1:t0,hand:D1},this.sysinfo=f0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?R1(e,t):0}enhance(e){return S1(e)}match(e,t,A=0){return j0(e,t,A)}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?i0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?e0(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?B1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?n0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await i0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await e0(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await B1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await n0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=A0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?r0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await r0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...xt(y),...it(o),...at(i),...yt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); //# sourceMappingURL=human.node-gpu.js.map diff --git a/dist/human.node-gpu.js.map b/dist/human.node-gpu.js.map index 6554c515..0a9ccc10 100644 --- a/dist/human.node-gpu.js.map +++ b/dist/human.node-gpu.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/tfjs/tf-node-gpu.ts", "../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/human.ts", "../src/log.ts", "../src/sysinfo.ts", "../src/tfjs/backend.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/facepipeline.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/handdetector.ts", "../src/handpose/box.ts", "../src/handpose/handpipeline.ts", "../src/handpose/util.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/gesture/gesture.ts", "../src/image.ts", "../src/imagefx.js", "../config.ts", "../src/sample.ts", "../src/draw.ts"], - "sourcesContent": ["export * from '@tensorflow/tfjs-node-gpu';\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n enhance(input: Tensor): Tensor | null {\n if (this.config.face.embedding.enabled) return embedding.enhance(input);\n return null;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2) {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function enhance(input) {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config) {\n if (!model) return null;\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return output;\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n image.dispose();\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], - "mappings": "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AmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kB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K,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,QLvviBd,GAAM,IAAmB,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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", + "sourcesContent": ["export * from '@tensorflow/tfjs-node-gpu';\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return embedding.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: String, source: String | undefined, embedding: Array }>, threshold = 0): { name: String, source: String | undefined, simmilarity: Number, embedding: Array } {\n return embedding.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = {};\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2): Number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: Array, threshold = 0) {\n let best = { simmilarity: 0, name: '', source: '', embedding: [] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = simmilarity(embedding, f.embedding);\n if (perc > threshold && perc > best.simmilarity) best = { ...f, simmilarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n/9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA\nAAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu\nbmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob\nIxwWFiAsICMmJykqKRkfLTAtKDAlKCko/9sAQwEHBwcKCAoTCgoTKBoWGigoKCgoKCgoKCgoKCgo\nKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo/8AAEQgBAAEAAwEhAAIRAQMRAf/E\nAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAE\nEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZH\nSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1\ntre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEB\nAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXET\nIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFla\nY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXG\nx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+qaKACigApGOKAML\nXp8xlF5A7V4X8RtYs7PzfNImnx8sa8Kp9z3q2tEgp6angWs62ZZ5CTGoJ6DArGNz5p+UrID6EUrF\nPUlW1EuN0XNW7PQ2L5j3JnoKXN0KijqNP0eYoqXBdgPuuo+ZPeupisWn2Jd4+0r924XgsQOCff3/\nAJ1FzRKxDqGii6m3siiQ8F1XGfXI6YNWLfRbiRQMkcZI9fpTDluT2/h6Qy8gDPbtmtG38JeY480Z\n5zSLUTZg8M28YwYxjAArXtdPt402qgHbpSaLWhma3o0Uqk7Nx9DWLaaVblgPs6qRyds2M/gRSQp9\nzZOni2iWS2hlQ+kjYz9OMGrdjq89vIPPVhj+8M/lQyDq9P1WOYBlMZz1AOD+VdDaTiReOKulK0jO\ntHmi0WDTlr0TyxRVhT8tJjIX+9SUxHXUV553BRQAVBcPhSBTSuxPY86+IGti0s5I7dsORy9fM3i6\n8e8mfDO5P90ZrWWiJicNPpZZtxV/xrW0jQt4DOv6Vk2dEEdTY6BHuB25rpbPSo0QARjP0qTRI17W\nwA/hFaMWmoQMgflQXYsDS142rU9tpqqenfNA7GgtihxkdKuRW6qMY/GkDZY8sY4Ap4hXbyB+VArk\nEtuH4wPyrk/EGkOm+a3jw3suRQLc5i38SX9hJ9nnY+XnBUdPyNdFY6pa3KkkAE9l6f8AfJ/pSJT6\nGhDmI+Zb4ZRycdv6ium0nUhKFydrelTsNnS2829RnrVgV6NKXNG55lWPLIM81Op+WrZkRMfmNNzT\nA7GivPO4KKAEY4XNYWt3vkwPg4OK0giJdjw/xrqhm87Zs8tc7pX5A+leSajf6aHYJ50kn4AZpTep\nrBWRm2Vobm4BXfyehPFdnpmnBFUY5rI2SN63tlToK0YI+KZpFF+3QdavwoKTLtoW0Toaswpk5pCb\nLCxipAhoIuP2dKevHXoaYDylRyxhlwRQI4nxVoCXWZI1GfpXGtbSWjYPGP73+NIGupt6TqMsLruZ\nih4xnP5V09mQ+JLd8gn0xSYJnVaVdkook69K34zuUGunDS3Rx4qOzHVIp4rrOMY3NJQI7GivPO8K\nKAILt9kZrz3xlebYiu8KCCWb0XvW0NFch6ysfO3jLVjfXLIn+pQkKorl7WxNxIPl71g2dUUdpo+l\npBGvHPet23iC8ihFosrxirkHQUFo0IF4FXI1O726CpKLacCrMJoJLYHAPpTwucHpSRJJ5e4AZI9x\nUqpxzVpCuOC8cUpQUMRnXttuB4rjNdsYyeVwfXpmpGmcvcQyafMCFJjPY10eg34BUg4DcZP8jUO4\nHaRq3lLNF+IHet7R7jz7c56rwa2wz9+xhiVeFy/T1PFegeaNPWigDsc0ZrzzvDNIaAM7VpNqdegr\nxL4l6kywyRhseZ19lrdfAZL4jxYg3Fw20d63tJsdrDI5rm3Z3R0R0Mce1eKnQYAplIkWrMJ45oZS\nNO3PHbNXIyfpSGWowSOasxLUiZdjFSqtNEMkUemKlAGKsRJjAppFAiORMjmsTVrNZEO4cfSoZSOD\n1eJ7WXBUzQZ+7nkfSo7e2Ei+ZaMzxntjBX2NSU1Y6/wxqojiEFzkA8KTXYaUoWRyv3W5rSjpNHPX\n+BmpSg8V6J5gUUAdhRXnneFFAGHrTfu5PpXzj8S70/aZtxzztXFbv4DKHxHI+H4GZiz9zxXXW8G3\nGBXMjvLRXAx0oPGPSmMVeOnWrMTYpFI0bcg1fh54xmgovRcD3qxETSIZcRvzp+/BpEkqsBUqsM9K\nq4Em4Gkxk0yRGXrVW6i8yFhkg+tJjRxGsWrxllkUMh9eK5uMz6bcebbnfG33kPcVkay2OntPKuo0\nnhXI67c8qa7Lw3c+adjcEDGK1paSRhVV4s6A0or0jyRRQ1AHX0V553hRQBz+vNtt5z3xXzX8Qbdm\nuic5YnOMdK3l8JnTXvlbwpYl+WySOgrp5YfLOOB9O1c62O7qQkc+9RsKChFPWp4DluOlSykaNruH\nArUgHShFNF2NT1qxGO3NBmyxGcE1N2560CFzjrUysO9JAPDDjFOVuKoQuSRTWouBkazbCa3cd8cV\nwF7IISQccHBzUSWpV9C3o1x5b5GAjdQD1rs9DjC3kckbEhqKfxIzn8LOupRXqnkPccBSkUAzraK8\n87wooA5rxMSI3HqK8B8bQl9Q8sffY5b/AAraXwkUviNrw9pH2W1ViMMRTdRjw4HpWNtDti9TPc4P\nFQs2M5qdyyMHLcfjV63HTAoBGtap0wK0YxigpsuRDtVhVYd6GQydVwwIqdRnqKCR23I5pCMUW6gD\nYNKuetAEise9KTxQBWuFyhrznxNZkXjFeN3I+tTIZg2OqmzmxNF0PO3vXp/g2+hukVl4zyPanTXv\nJmVR+60dpThXpnlPceopWFAbnV0V553hSGgRynjC5FujOey14Ssp1HxNmTnc+a3kvcIpv37HoEYQ\nQmMdVHSsnVbYJF5jVk0dsNzlruVIsl2wKxbjWrVHILjg1CRbZJb+ILHPzyhfStODWLQgFJFYd+el\nUJM27HUIXxhga1Y5lLVLKLkMnoauxnPPrSEx7ShF+Y/n2qrc6xBbhizDAqkK1zJuvG9nbg8ZA681\nly/Ei052RO3uKAsZlx8QGd8xxvt9Aa1NH8dK7AXMcip64zigdkdrZX8F7EJLdwwNXMkrz1qRMRly\nCK4TxmpidWI49felPYSOMmi80NIoOV6qRzXYeA5SskYPfirpfEjGr8LPWVHyD6U4CvQPL3ZItOYc\nUDOoNFeed4Uhpks4H4iE/Z5MeleMeGULeLgjds10S+BGdL+Jc9OSBU2Huc5Nc74yvUtrcDBrJnZF\n63PJdXvLy/lKWw46bvQVz82jXhkLO5Y+9ZlsYthcRnbIjY9R3q3awTRkEM3WmJI6C0ea3dGRsr1x\nXY6TqW9FLHnjrUs0izpLK5DDjofSta3ckH09KRUkZuuTvFGdvPauE1Y3U6Mqbssf/rUxHPTaJPK2\nZmJPbBqzY6DCZh5xJC9s9aBJHU6dpemJjfEmfetJtI0+VPkUr/unFOxdiextHs33W07YHQHk11mk\nXb3KbZ1xIvcd6LEyWho4Nct41sTPYb16ipexCPPZN+wYGCvH1rrPAEJmvkPoc1VL4kZVvgZ6yFwK\ncBXoHkkqinFaVyzo80GuE7WJRQSziPiGdthK5HQV4x4J/wBI8WPIewNdEvgRNL42emO/yj1UHNef\neNpRczbC+I17DvWT2OqJxc0sMK4TCisy41q0hfEkqj8aixdwTXNOlwvmqD9anS9tXH7uVG+hosO4\n/wC0oOhrR0+6G4YNIEzsNEuCxAPNdjZruA4xxUmjINSjURksOlcbqFykbnjFA1sYGoassaknCqO5\nrl7rxhGm7yBnBxuJq0rkSlYpw+NLlsfd5P8AerVsvHEqSBHwPVgcgVpyMyVXU3rXxcHYETAk+hru\n/DWti6ZSTyOKzZqndHaxvvUGq2rQ+dYyqR24qWI8dvbr7LqDxyDAzXpvw6FvIxePGSM06Xxoyr/A\nzviKFHNegeX1J41zUhXioGbuaSuM6wpCaBHG/EcA6HN/exxXjXw2jL67cv8A3Qa6H8CFR+NnoWpO\nI4XI44rxLxrqjQzSEsQM1gdSPM9U1uR1YbmWIdXHf2rmpIb67YS28UrRlsLI3c/jW0VZGUpO5pW1\njfLNOjahawzwReYI5cjzMkDavHJ5/SrVv9uhtPtVxCPLBwzxnlT9KGghLU3tKvvPjHzbl7EGuisJ\nGRxWLOg7nRXJEbDjmvSNK+aFSfSoZr0KutRkphc4NcRrdkVjL9aVio7Hk3iqS8ubhrWzUlsZY9kG\ncZNc5D4aee5MclzJIFTzHAO0MfatqSOWu7bFS1srDUZEis0vIZoUxPvfcC+4/dx2xjr712XiTwXb\nWmlQ6hol3cRhoFd4rlg3zY5wR0GelavQwjq7GD4etdVvSnk2wAB+9v8A8mvcfA2kXiRo0/UdcDis\nZnTTulqeoWqbUAJqWUb42X1FZlnjfjSwlGrr5S/eNdD4RkvLAAQ4yRyaUZcruVKl7TQ9I0G+mnzH\nckFwM8VuIK7ac3KF2eXiKapz5UWYxipNtMyNejNch0jSar3cjR27uoyQCRVRWom9DxTx54gu5fMi\nlbKdMVjfCZPNlv5v9rFbVHpYqjGzbOn8SzFI9o715L4u0r7arYzk+lYdTqSujy7U/C0u4vHk+WwO\nxuh9q3J9dgvbdVukMV1EwbDDgn04rZMwlHoZ+orZ6hfQ3RWVnQYCgZAq+8U0ln5NtBsV2yxYcfgK\nJtW0CnB31LlroVwJ1nQLGDjeP7w+lb0dsFxjrWB0tHS6NuWPJ6A16ToUm63T3Gallr4S7cxiTjrX\nPaxaF7dlVeSMUhxZ5jd+H7qCa4eF3DSE5x3zXN3Wk6jbyeaiFWUY6ZyPStYS5SalPmVipFbX0E4c\nW0alvmPHJrag0rVvEE6LdljGpG2NRtQD+tW5XMI0uU9M8NeFo9PiQhecDIIrtrOMIoG3H4VlJm9t\nC6CB06VPGM1IHLeItGS6uw+ORT7e3jsbQvj7gzUNam0JaWE+HN7NqOqX80n3FO1RXo8YzXdS+BHk\n4z+KyzGPapcU2YIv7qQtiuaxvcaWqG4O6FwfSrS1JbPnrxoxkv7qIfejcitj4V2f2exumI+8+aKn\nxHTT+G5d8Txlm4rjLxMsQwzWT3OiK0Mm6sEkVsAcjFc1d+FEmlGwEDPQVopaEuOpr6f4ZWNAu3tW\nvHpAj5ZQcUFIWaDjGMVUMQ3cVDBmvbhY7QAV2nh+T/R1yeKhlrY31+b61FcQK6nIoJMi401WblRi\nqr6PCw5UYq9y+YgOgWzNkRrx3xWjp+nx2v3FQcelAbmko9anQ4GBUNisPHWr1qMrQhS2K11HvmYV\nhamcxSRZ5xRIqluS/DKAQQXZxyXrvo2FdlL4EeZjH+/ZbjNSZpswLNBrE1Gt7VE4ODVIlnh/j61F\nj4lmeTGyUbq6LwdEqWbeX0YbhSqfEddP4Bddj4JIrhL5d8h7VjI6oLQqKNzelWre3yc4/ClFjaL6\nwqBxxUUxwCKu5BmXRA6c+9ZjP83FSBoQuPs4BrsNBlUW659KmRrDY6G1lyQtW3Hy0lqQ1qVJnAbm\noy3b9KYJCqRj3o4zRctIlhjLHmpSuOBRbQOpLGpPFaES7UqkZzKN1KsEc87/AHUUmvPLTVGv72aQ\nk7WJwKmRrQ3ud74Ltilgz4++2a6iNDXdS0gjyMU71my7GpqTbxSbMki3SViajTTHqkSeR/GeyZmg\nnQHkEE1S+F+oPPavBL96I4/Cia1udVF+4dVrkW+Fq8+v4tjMDWUkdVJ6WM0cNV+F+MVmjUcZgqnP\n1qpNNnkcVRLiZtxIS1UzzIF7mghlxUZpVQdq6nTVdAoAOKzkbQWhvwM6gMM1twOJYx3NOJE11Kt1\nH1/pVVlwBkk+9NocXoOQ45FPj+fkUJFF2NSB700v/hTEty5ZpkjvVyUgcCq6GM9zC14/8Se6GcZQ\n1574Xs5WkI2HBPHFQ1dm1KSSZ7Rotn9l0+KPHIHNacae1dy0Vjxaj5ptlhVp+2s2CJ9ppCKzuWNx\nzSFc1SYrHNeNdIGpaYw25ZeRXmvheyk0jVpEdcLJ0q3ZxNKTa0O3vQHg/DNcHrsJDmsmjspnNzNt\nfFIJ24GazOhC+azDmgZIOOKBsp3J2qSaZodubq58yQ4QAnmhGT3NO18pb7BORmu205LfYpyKVkWp\nOxr5gKYWoIZWgfGfloFq1qTPLubnGO1RPtxg4P0oBAkY/hBz6VNDDkZ6AU0W2WSdqkdKr9ZOaGSj\nVtcLHmnOcgmmYvcz7mBLy3MbdD1q9ouiRK6bUAVeelOC1InPlidSsWMDFOCEdq3uefykqrinYqGy\nrFvApMVka2DAowKAsMkRXQqwyDXn/iWyitNQ3qPl6itIvRoF8RXinW4tQ6HI6GuW8SIVBPalc6qe\n5x9x97r3qruwTjrWZ0ksZ9TUmcDNAmZ9/wAoao63rR0+w22MLPtAzt6mghmfofiB76LdJBJBIp5D\nd/oa7bSdWLIPnpDi9TM8TeKdas51XTbIyxd3J/pXS+E/EFxqNoFu7do5OmD60maHWrnZyDRkn/69\nMlEyOR0xntVoNx+FUgYjPxg4FLCuWDZyKQr2RoRnP0qO+nEFpJITgAUzLqZnhu6+0rknOTXpOmwJ\nFbrt5yMmnHYyr6Oxb2ijaKLnPYMClwKQWK3n0hn+lachHOJ9pNNN0apQFzsY10a4v4hXQh0xpieQ\nMA1XLZNjhK80cT8OdV+3Wl3A7ZZJCw+hrR1qLcjZ/CsbnfHRnFXseHJArOYYbrUs1uPhYbuatqFP\nByfSkMq3UIINYkto+87Tx6GkSxfsDbflGD7CtTw/pk4nzITtPIFMFudsukh4Rxz71paTpKwP5jcn\n0qTRy0NORMDgVCqewoJTJgAoxjntTiTu7fWmFxAcnn1q3EPl+X8KZMi4gKqB1Peob/Tv7Us5bfeU\nyOoq4R5nYxqT5I8xieH9J1DTbvyJELRg8ODwa9Ms5mSFV9BWiptbnNVrKdmif7Q1KLg96XIZc5Is\npNL5pqeUrmMtZs0jzV08phchaY00zH1p2ZNxjS1g+LdJOt6U9ssmxjyGp2urDjLlaZzng/wUPDqz\nTSTmWeTrjpVjVk3Rvjr2rnqQ5dDvo1XUd2cTqSNk9OKxXGCeKxZ1DAxHTr2q5C/y8GokUhsz54qu\nuCxzSQjQ0+FZblR2ro4bZYiMVQ0dBb7Qi5x0qzuG5QOh71LYErDufpSeWrHnimIXbjkUjLkH1Hem\ngGxryc+tXI19KYmWegq9YLiLJ7mtqS945cS7QsWehqxA9dEjz4krPSxyZqbFFhGxUm6smjRM55Lk\nHvSvNxXTY57kLT+9MNwKdhXGm5FIbkU7Bca1wMEVhaiuQcVhXWiZ14R6tHGanGBI2OtYkqEHjgVy\ns9ErEeo6UBsHipKEZs5qpPdRxcbhx70NCSuybTNWihc5brW9Fq6vjMnFSdEIdDRi8RRKygZbHFbu\nm6nb3RA3gMegNJhOm0jbXGOoxTuCc1Rz3FyoGKawz9KaAVcZqeMgCmIkB4FaUTbYwB6V00Fuzixb\n0SFMuDU8Mlbs4UPeXHeiOXkUrDuXYnyKk3cVk0ap6HMxxketSMhrcwRC0dMMZFMQ3yzSeVQAeUaz\n9Vj8uPd271nVV4m+GdpnHX67pCeKyLtBtNcR6xlk9RVeWTb3qRnO6trgttyIfm71z7ai8j7/AJmN\nDNqUVa5Yi1AnjynHuBV+11YJhWWXcP8AZNSzqgmaEerSsf3NtIQP4mGKtRavdRgMIpVI9KjU0a7n\nR6T43uYQI7qN2Tpkqciu503VVuQGAYZHQjFVc4alPlZrpKGAznpTwxOc9+lWjIlUACnM4XApiLNk\nnmvnsK0NvpXZRVonmYqV52GsmanhXitTmFkSiJTSAvwrxUxXIrJ7miOfjf1pzNWxkRlqYWpgJupu\n6gQbuahvIxPA6eo4pNXVioS5WmefakGhndH4INZs5DJXA10PaTurmLO21uKpSZqGMoXGnRzBiyjd\n9Kx5rcQS428fSkjanLoaOliHGZFB56VswW+mtPufcBsGOAfmxz+tFkd8HpoaUx09FAtFY8DO71qb\nSms/Nb7RbecG6AEjFLS5c78t+p0djpVs9wsyQiJAdyr1rW+zqjErzSe559Sbk9S3C+MA1bjbgE1S\nMSXzMVG0vNUI2tPKrAuCMnrVzNd0PhR49W/O2xrHmp4TxVMzQshpIzzQBehqesnuaI5VGzT2bitz\nFEbNTC1ADS1JupgG6l3UAc14s04yR/aYRll+8BXCtLncDXFWjys9TCz5oW7GddH5qqNzWDOgQnC8\nVSuo1kHzAGkPYopEY2+RWxV23Vzj5G/Kg3jWaNazhZuqNXS6TaKhB2c0jR1nJWOlhOxRxU4YkCgx\nY0OQatQyDbyaaFYe8uF4NY3iC9ltbVGj43NTIL3h7WzMihjzXVQXYYDdW9Cf2WcOJpfaRZ3g9KsQ\nmupnCLIabGeaAL0LcVY3cVmzRHIxtUhetzEjZqjLUAIWpN1ArhupwagAfDKQ3Q1594v0c2bm6tx+\n5Y8j+6ayrR5onThp8s7dzkZjuqAAmuBnqC7c0iwgtzSA0rWzjfGRW3ZadDu4AoNYo2rfS4v7orSh\n05UA2r0pDbsTm29KRottBNyJ0wpJ9KhD7f6U0ikNWffIFBz60zVUW52ow4UcUN6EPcx44WsbgOmd\nua7TT5Bd24KHnFKnLlZFSN4koluLdueRWvp14swweG9DXoxldHlTjYtzGoo25qzEvwtUxas2jRPQ\n5CNqkLVsYoYzUzdQA3dSFqBBmnqaBhuqhriCXTpVIzxUz+Fl03aSPI9QTypW2/dz0qKNw3SvOPZR\nMqin8VLKRcs3O4Cuk0w/MDjt1NBtHY6O2IIHY1pxgFaETIRwMkjtVSUEk4570MlFW5bap6dKzWm8\n1tqH8aY+hp2FvGoGayNevVt7/ap4xzUvYjqTLtvLPcvJxSaVcyWsxTnFZlnT2t15xHmCtOBYwQy4\nB9q7cPO+jPPxFO2qLEj5HWo42+aus4HpoX4W4FTF+KlotbHII9SFuK0MUNZqiLUDE3UbqBBupwag\nBc1DefPbyD/ZND2KjujyPWlKzuPesRZjHJXms9lMuw3StjnmphKDSLTJ7OfE3JrpbO4GQc9qlnRA\n3LO82k5NbFvdADkjBoCSHyXIIIzgVQvdRigT7wzjgUzO1jHknlvG7qnp61etYFQDIpCZoqVijzXn\n3iC8EmsOuaCGb/heR/s0ijkVv6fbxy3QMg5xmsnuX0Ldzut3+UYTPWk+2GJSe+M1pFtamcldalmx\n1eO4XaThhWnC+TXqR2PHqL3maUJ4qRjxSEjj42qXdxVmaGs1MJoATfSbqBAG5p6mgAzTJTmNvpQU\ntzzHXY83D/U1zF5FhjgV5r3Pa6FMsV5HWnLe7RhqBRdmTwagN2d2K2rPU1C5LAnPrUs6Iysbdrq6\nf3gK0BrUKj/WClY05iM6xLOcQAj3NT29uznfKSzHuadzNu7NSBFjHNSm5VO9IRnajqoWMhTzXFtA\nbvUfMduSeg702Qz0rS7FbTToQFwzjJqaGTFyfK5PQViyzUuFmuIdgGABya5u/vTaN5cnUHFUmLoZ\nzyskwlgJweSK6zQdUEwVJeGr0aUrxPLxEfe0OrhPAqVjxWhznGRtUwatDK4jNxURbmkAm6jNABup\n6tQAFqhupNtu59qUnZFwV5JHnWsHdIx96w5lz15rzT2uhRmt85xWbcxMnUGmZlB0bdxmrNvFIcfM\n350mWjbs7YkDJY/jW5ZWW4jikWkdNp9mqYJFaJdEHHakUULu/VB1rLn1Ld/FgetMGYd/qWSQmSa0\n/AemS32pfa7piLeLkg9z6UmQtz0W7uQ2cZx0A9BVzR7cAea6j2rPqX0L99KRat5A6Dk1wOoKZ52a\nYfMORTYRLujiGWEq6/NWza2yKQVHNdOHerRy4laJo6TTnbbtb8KuM3Fdh5z3OJjbmpt3FaMxAtUZ\nagBN1GaQBzTwaAAms3VbjERUGsa07RsdeFpuUuY4jUjljWTKK4j02RE4IpJYFk6imQkVl0xWarsO\nmAEcUi0bNnZBR0rWtoguMCkUi21wI161mXuocEKaYXMS4u+pY/hVCSWSY4HT0pEmlouiSahdpEBl\nmOceleiwWcNjClvHgJH97Hc1EmVFFi3Czy7mwIl/WtJbjP7uLgd/apQ2VNVvtsBhiPzdK5S4nAuR\nnqOCaTGi9pcytPlU+XpmumtWII44rah8ZjiNIXRuWeNvvViQ/LXpJWPJbu7nCRvVkNxVsxBmqJmo\nEPiXca0YLMuOlJsuKuPlsSi5IrNuG8s4HWs5VEkbwoOTKsk+FJY4rC1K53k1xTk5O7PSpwVNWRzt\n4cms+WpKICtSLTETQj5q0YeBSGiys23pUguGxQMq3E59ayrm4x3yaAKiRtO2WPHcmhruKFxFajzZ\nScA44qRHoXhuMaLpxaUg6hcDLMf4F9KlhuDeXGASIl+8azZslYma68y48m1+7nFW5rtbRNhb5z1p\niMKbUg0zuW4A4rPgb7VdKXOMmpA7HRbMS7nUYiUda0lkQOBngVrS+JGdbWLRt2bAx5BqeQ/LXpnj\nPQ4GJ+ashuK0MhWaoWcA0AaOmASMK7jRNPWYBmHyiuepO2x10qfcv6vYxCzYqoGK4HVYVTJrmb5l\nc6oaM5TUJ8EgGsG4kLNUHT0M64OaqMMikSRsuKbnFMRLG3zVehOaGNE445NNlnVFpDMu6uie9Vo1\n8z5mOAOST2pDK91cNN+5tsrH3PrW54a06KxT7fdrlh/q1Pc+tJ6IUdZGvHPLezMcnBOWbsPap5r3\nylFtbdT1xUWNWzU0/Zbwlgfmx8zGsHWtRHmMqE59aAMyNifvHPc1f0gtPdqkY5JosJHeNci2tktY\neuPnNY+oXWZEVJNrZ9aun8SIq/CzodHuriIokhDIR1ronbKZr0o6o8ipoz//2Q==`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], + "mappings": "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AmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kB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K,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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", "names": [] } diff --git a/dist/human.node.js b/dist/human.node.js index e4ba8301..1fb95f85 100644 --- a/dist/human.node.js +++ b/dist/human.node.js @@ -5,14 +5,14 @@ author: ' */ -var Xt=Object.create,ze=Object.defineProperty,Ft=Object.getPrototypeOf,qt=Object.prototype.hasOwnProperty,Yt=Object.getOwnPropertyNames,Bt=Object.getOwnPropertyDescriptor;var Me=n=>ze(n,"__esModule",{value:!0});var n1=(n,e)=>()=>(e||(e={exports:{}},n(e.exports,e)),e.exports),U=(n,e)=>{for(var t in e)ze(n,t,{get:e[t],enumerable:!0})},Ct=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Yt(e))!qt.call(n,A)&&A!=="default"&&ze(n,A,{get:()=>e[A],enumerable:!(t=Bt(e,A))||t.enumerable});return n},N=n=>Ct(Me(ze(n!=null?Xt(Ft(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var l0=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)},m=(n,e,t)=>(l0(n,e,"read from private field"),t?t.call(n):e.get(n)),ne=(n,e,t,A)=>(l0(n,e,"write to private field"),A?A.call(n,t):e.set(n,t),t);var O=n1(r1=>{var Jt=Object.create,A1=Object.defineProperty,Kt=Object.getPrototypeOf,Ut=Object.prototype.hasOwnProperty,Dt=Object.getOwnPropertyNames,Gt=Object.getOwnPropertyDescriptor,f0=n=>A1(n,"__esModule",{value:!0}),m0=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Dt(e))!Ut.call(n,A)&&A!=="default"&&A1(n,A,{get:()=>e[A],enumerable:!(t=Gt(e,A))||t.enumerable});return n},Qt=n=>m0(f0(A1(n!=null?Jt(Kt(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);f0(r1);m0(r1,Qt(require("@tensorflow/tfjs-node")))});var N0=n1(S0=>{Me(S0);U(S0,{MediaPipeFaceMesh:()=>y1,load:()=>hn});var x1=N(O()),y1=class{constructor(e,t,A,r){this.facePipeline=new i1(e,t,A),this.config=r}async estimateFaces(e,t){let A=await this.facePipeline.predict(e,t),r=[];for(let c of A||[]){if(c.isDisposedInternal)continue;let _=c.coords?c.coords.arraySync():[],h=_.map(s=>[s[0]/e.shape[2],s[1]/e.shape[1],s[2]/this.facePipeline.meshSize]),o={};if(_&&_.length>0)for(let s of Object.keys(Q))o[s]=Q[s].map(w=>_[w]);let i=c.box?[Math.max(0,c.box.startPoint[0]),Math.max(0,c.box.startPoint[1]),Math.min(e.shape[1],c.box.endPoint[0])-c.box.startPoint[0],Math.min(e.shape[2],c.box.endPoint[1])-c.box.startPoint[1]]:0,y=c.box?[Math.max(0,c.box.startPoint[0]/e.shape[2]),Math.max(0,c.box.startPoint[1]/e.shape[1]),Math.min(e.shape[1],c.box.endPoint[0]-c.box.startPoint[0])/e.shape[2],Math.min(e.shape[2],c.box.endPoint[1]-c.box.startPoint[1])/e.shape[1]]:[];r.push({confidence:c.faceConfidence||c.boxConfidence||0,boxConfidence:c.boxConfidence,faceConfidence:c.faceConfidence,box:i,mesh:_,boxRaw:y,meshRaw:h,annotations:o,image:c.image?c.image.clone():null}),c.coords&&c.coords.dispose(),c.image&&c.image.dispose()}return r}},ye=[null,null,null];async function hn(n){ye=await Promise.all([!ye[0]&&n.face.enabled?g0(n):null,!ye[1]&&n.face.mesh.enabled?x1.loadGraphModel(n.face.mesh.modelPath,{fromTFHub:n.face.mesh.modelPath.includes("tfhub.dev")}):null,!ye[2]&&n.face.iris.enabled?x1.loadGraphModel(n.face.iris.modelPath,{fromTFHub:n.face.iris.modelPath.includes("tfhub.dev")}):null]);let e=new y1(ye[0],ye[1],ye[2],n);return n.face.mesh.enabled&&n.debug&&g(`load model: ${n.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),n.face.iris.enabled&&n.debug&&g(`load model: ${n.face.iris.modelPath.match(/\/(.*)\./)[1]}`),e}S0.triangulation=xe});var Ve=n1(O1=>{Me(O1);U(O1,{NUM_KEYPOINTS:()=>an,connectedPartIndices:()=>ln,partChannels:()=>fn,partIds:()=>k1,partNames:()=>yn,poseChain:()=>dn});var yn=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],an=O1.partNames.length,k1=O1.partNames.reduce((n,e,t)=>(n[e]=t,n),{}),wn=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],ln=wn.map(([n,e])=>[k1[n],k1[e]]),dn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],fn=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});Me(exports);U(exports,{Human:()=>i0,default:()=>i0});function g(...n){let e=new Date,t=`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;n&&console.log(t,"Human:",...n)}function d0(){let n,e;if(typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);t&&t[0]&&(n=t[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),e=navigator.userAgent.replace(t[0],""),n[1]&&(e=e.replace(t[1],"")),e=e.replace(/ /g," "))}else typeof process!="undefined"&&(n=`${process.platform} ${process.arch}`,e=`NodeJS ${process.version}`);return{platform:n,agent:e}}var o0=N(O());var q=N(O()),Y={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function u0(){if(!q.findBackend(Y.name)){g("backend registration:",Y.name);try{Y.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Y.width,Y.height):document.createElement("canvas")}catch(n){g("error: cannot create canvas:",n);return}try{Y.gl=Y.canvas.getContext("webgl2",Y.webGLattr)}catch(n){g("error: cannot get WebGL2 context:",n);return}try{q.setWebGLContext(2,Y.gl)}catch(n){g("error: cannot set WebGL2 context:",n);return}try{let n=new q.GPGPUContext(Y.gl);q.registerBackend(Y.name,()=>new q.MathBackendWebGL(n),Y.priority)}catch(n){g("error: cannot register WebGL backend:",n);return}try{q.getKernelsForBackend("webgl").forEach(e=>{let t={...e,backendName:Y.name};q.registerKernel(t)})}catch(n){g("error: cannot update WebGL backend registration:",n);return}try{q.ENV.set("WEBGL_VERSION",2)}catch(n){g("error: cannot set WebGL backend flags:",n);return}g("backend registered:",Y.name)}}var P=N(O()),p0=6;function $t(n){let e={strides:[n/16,n/8],anchors:[2,6]},t=[];for(let A=0;A({startEndTensor:n,startPoint:P.slice(n,[0,0],[-1,2]),endPoint:P.slice(n,[0,2],[-1,2])});function tn(n,e,t){let A=P.slice(n,[0,1],[-1,2]),r=P.add(A,e),c=P.slice(n,[0,3],[-1,2]),_=P.div(c,t),h=P.div(r,t),o=P.div(_,2),i=P.sub(h,o),y=P.add(h,o),s=P.mul(i,t),w=P.mul(y,t);return P.concat2d([s,w],1)}var b0=class{constructor(e,t){this.model=e,this.anchorsData=$t(e.inputs[0].shape[1]),this.anchors=P.tensor2d(this.anchorsData),this.inputSize=e.inputs[0].shape[2],this.config=t}async getBoundingBoxes(e){if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return null;let[t,A,r]=P.tidy(()=>{let w=e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),f=this.model.predict(w),d;if(Array.isArray(f)){let V=f.sort((a,p)=>a.size-p.size),B=P.concat([V[0],V[2]],2),G=P.concat([V[1],V[3]],2);d=P.concat([G,B],1).squeeze(0)}else d=f.squeeze();let x=tn(d,this.anchors,[this.inputSize,this.inputSize]),b=P.slice(d,[0,0],[-1,1]),Z=P.sigmoid(b).squeeze();return[d,x,Z]}),c=await P.image.nonMaxSuppressionAsync(A,r,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),_=c.arraySync();c.dispose();let o=_.map(s=>P.slice(A,[s,0],[1,-1])).map(s=>{let w=s.arraySync();return s.dispose(),w}),i=r.dataSync(),y=[];for(let s=0;sthis.config.face.detector.minConfidence){let d=en(o[s]),x=this.anchorsData[w],b=P.tidy(()=>P.slice(t,[w,p0-1],[1,-1]).squeeze().reshape([p0,-1]));y.push({box:d,landmarks:b,anchor:x,confidence:f})}}return t.dispose(),A.dispose(),r.dispose(),{boxes:y,scaleFactor:[e.shape[2]/this.inputSize,e.shape[1]/this.inputSize]}}};async function g0(n){let e=await P.loadGraphModel(n.face.detector.modelPath,{fromTFHub:n.face.detector.modelPath.includes("tfhub.dev")}),t=new b0(e,n);return n.debug&&g(`load model: ${n.face.detector.modelPath.match(/\/(.*)\./)[1]}`),t}var X=N(O());var T0=N(O());function P0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]];return{startPoint:t,endPoint:A}}function ue(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function we(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function le(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return T0.image.cropAndResize(e,c,[0],t)}function Ee(n,e=1.5){let t=we(n),A=ue(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}function Re(n){let e=we(n),t=ue(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}var Se=[[1,0,0],[0,1,0],[0,0,1]];function nn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function c1(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return nn(t)}function v0(n,e){return[[1,0,n],[0,1,e],[0,0,1]]}function ce(n,e){let t=0;for(let A=0;Ah1[n]),Dn=cn.map(n=>h1[n]),Gn=_n.map(n=>h1[n]);var o1=Q.leftEyeLower0,s1=Q.rightEyeLower0,de={leftBounds:[o1[0],o1[o1.length-1]],rightBounds:[s1[0],s1[s1.length-1]]},We={count:468,mouth:13,symmetryLine:[13,Q.midwayBetweenEyes[0]]},R0={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},fe={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function je(n,e,t,A){for(let r=0;r<_1.length;r++){let{key:c,indices:_}=_1[r],h=Q[`${t}${c}`];if(!A||A.includes(c))for(let o=0;o<_.length;o++){let i=_[o];n[h[o]]=[e[i][0],e[i][1],(e[i][2]+n[h[o]][2])/2]}}}var i1=class{constructor(e,t,A){var r,c;this.storedBoxes=[],this.boundingBoxDetector=e,this.meshDetector=t,this.irisModel=A,this.boxSize=((r=e==null?void 0:e.model)==null?void 0:r.inputs[0].shape[2])||0,this.meshSize=(t==null?void 0:t.inputs[0].shape[2])||((c=e==null?void 0:e.model)==null?void 0:c.inputs[0].shape[2]),this.irisSize=(A==null?void 0:A.inputs[0].shape[1])||0,this.irisEnlarge=2.3,this.skipped=0,this.detectedFaces=0}transformRawCoords(e,t,A,r){let c=ue({startPoint:t.startPoint,endPoint:t.endPoint}),_=e.map(s=>[c[0]/this.meshSize*(s[0]-this.meshSize/2),c[1]/this.meshSize*(s[1]-this.meshSize/2),s[2]]),h=A!==0?Ne(A,[0,0]):Se,o=A!==0?_.map(s=>[...E0(s,h),s[2]]):_,i=A!==0?M0(r):Se,y=[...we({startPoint:t.startPoint,endPoint:t.endPoint}),1];return o.map(s=>[s[0]+ce(y,i[0]),s[1]+ce(y,i[1]),s[2]])}getLeftToRightEyeDepthDifference(e){let t=e[de.leftBounds[0]][2],A=e[de.rightBounds[0]][2];return t-A}getEyeBox(e,t,A,r,c=!1){let _=Re(Ee(this.calculateLandmarksBoundingBox([e[A],e[r]]),this.irisEnlarge)),h=ue(_),o=X.image.cropAndResize(t,[[_.startPoint[1]/this.meshSize,_.startPoint[0]/this.meshSize,_.endPoint[1]/this.meshSize,_.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return c&&X.ENV.flags.IS_BROWSER&&(o=X.image.flipLeftRight(o)),{box:_,boxSize:h,crop:o}}getEyeCoords(e,t,A,r=!1){let c=[];for(let _=0;_{let i=_;return o===2?i=r:o===4&&(i=c),[h[0],h[1],i]})}async predict(e,t){let A=!1,r;if((this.skipped===0||this.skipped>t.face.detector.skipFrames||!t.face.mesh.enabled||!t.videoOptimized)&&(r=await this.boundingBoxDetector.getBoundingBoxes(e),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.boxes&&(!t.face.mesh.enabled||r.boxes.length!==this.detectedFaces&&this.detectedFaces!==t.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let _ of r.boxes)this.storedBoxes.push({startPoint:_.box.startPoint.dataSync(),endPoint:_.box.endPoint.dataSync(),landmarks:_.landmarks,confidence:_.confidence});this.storedBoxes.length>0&&(A=!0)}if(t.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),A){if(!r||!r.boxes||r.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let _=0;_{_.box.startPoint.dispose(),_.box.endPoint.dispose(),_.landmarks.dispose()});let c=X.tidy(()=>this.storedBoxes.map((_,h)=>{let o=_.confidence,i,y=0,s;if(t.face.detector.rotation&&t.face.mesh.enabled&&X.ENV.flags.IS_BROWSER){let[u,a]=_.landmarks.length>=We.count?We.symmetryLine:R0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],R=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.boxSize,this.boxSize]).div(255)}else{s=Se;let u=e.clone();t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.boxSize,this.boxSize]).div(255)}if(!t.face.mesh.enabled)return{coords:null,box:_,faceConfidence:null,boxConfidence:_.confidence,confidence:_.confidence,image:i};let[,w,f]=this.meshDetector.predict(i),d=w.dataSync()[0];if(d=We.count?We.symmetryLine:R0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],R=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),i=le({startPoint:_.startPoint,endPoint:_.endPoint},R,[this.meshSize,this.meshSize]).div(255)}let B={coords:V,box:_,faceConfidence:d,boxConfidence:o,image:i,rawCoords:b},G=Re(_);return this.storedBoxes[h]={...G,landmarks:Z,confidence:_.confidence,faceConfidence:d},B}));return c=c.filter(_=>_!==null),t.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(_=>_.faceConfidence>t.face.detector.minConfidence)),this.detectedFaces=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c,landmarks:e}}};var s0=N(N0());var w1={};U(w1,{load:()=>l1,predict:()=>d1});var ee=N(O());var a1={};function $(n,e){if(!e||!e.kernels)return;let t=5,A=e.kernels.filter(h=>h.kernelTimeMs>0).reduce((h,o)=>h+=o.kernelTimeMs,0),r=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.kernelTimeMs>0).sort((h,o)=>o.kernelTimeMs-h.kernelTimeMs),c=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.totalBytesSnapshot>0).sort((h,o)=>o.totalBytesSnapshot-h.totalBytesSnapshot);r.length>t&&(r.length=t),c.length>t&&(c.length=t);let _={newBytes:e.newBytes,newTensors:e.newTensors,peakBytes:e.peakBytes,numKernelOps:e.kernels.length,timeKernelOps:A,slowestKernelOps:r,largestKernelOps:c};a1[n]=_,g("Human profiler",n,_)}var _e,Oe={age:0},ke=Number.MAX_SAFE_INTEGER;async function l1(n){return _e||(_e=await ee.loadGraphModel(n.face.age.modelPath),n.debug&&g(`load model: ${n.face.age.modelPath.match(/\/(.*)\./)[1]}`)),_e}async function d1(n,e){return _e?ke0?(ke++,Oe):(e.videoOptimized?ke=0:ke=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=ee.image.resizeBilinear(n,[_e.inputs[0].shape[2],_e.inputs[0].shape[1]],!1),r=ee.mul(A,[255]);ee.dispose(A);let c,_={age:0};if(!e.profile)e.face.age.enabled&&(c=await _e.predict(r));else{let h=e.face.age.enabled?await ee.profile(()=>_e.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("age",h)}if(r.dispose(),c){let h=c.dataSync();_.age=Math.trunc(10*h[0])/10}c.dispose(),Oe=_,t(_)})):null}var f1={};U(f1,{load:()=>b1,predict:()=>g1});var I=N(O());var re,m1={gender:""},Ie=Number.MAX_SAFE_INTEGER,u1=!1,p1=[.2989,.587,.114];async function b1(n){return re||(re=await I.loadGraphModel(n.face.gender.modelPath),u1=re.inputs[0].shape[3]===1,n.debug&&g(`load model: ${n.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),re}async function g1(n,e){return re?Ie{let A=I.image.resizeBilinear(n,[re.inputs[0].shape[2],re.inputs[0].shape[1]],!1),r;u1?r=I.tidy(()=>{let[h,o,i]=I.split(A,3,3),y=I.mul(h,p1[0]),s=I.mul(o,p1[1]),w=I.mul(i,p1[2]);return I.addN([y,s,w]).sub(.5).mul(2)}):r=I.mul(A,[255]),I.dispose(A);let c,_={gender:"",confidence:0};if(!e.profile)e.face.gender.enabled&&(c=await re.predict(r));else{let h=e.face.gender.enabled?await I.profile(()=>re.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("gender",h)}if(r.dispose(),c){let h=c.dataSync();if(u1)(h[0]>e.face.gender.minConfidence||h[1]>e.face.gender.minConfidence)&&(_.gender=h[0]>h[1]?"female":"male",_.confidence=h[0]>h[1]?Math.trunc(100*h[0])/100:Math.trunc(100*h[1])/100);else{let o=Math.trunc(200*Math.abs(h[0]-.5))/100;o>e.face.gender.minConfidence&&(_.gender=h[0]<=.5?"female":"male",_.confidence=Math.min(.99,o))}}c.dispose(),m1=_,t(_)})):null}var T1={};U(T1,{load:()=>z1,predict:()=>M1});var L=N(O());var on=["angry","disgust","fear","happy","sad","surprise","neutral"],he,P1=[],Ze=Number.MAX_SAFE_INTEGER,v1=[.2989,.587,.114];async function z1(n){return he||(he=await L.loadGraphModel(n.face.emotion.modelPath),n.debug&&g(`load model: ${n.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),he}async function M1(n,e){return he?Ze0?(Ze++,P1):(e.videoOptimized?Ze=0:Ze=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=L.image.resizeBilinear(n,[he.inputs[0].shape[2],he.inputs[0].shape[1]],!1),[r,c,_]=L.split(A,3,3);A.dispose();let h=L.mul(r,v1[0]),o=L.mul(c,v1[1]),i=L.mul(_,v1[2]);r.dispose(),c.dispose(),_.dispose();let y=L.addN([h,o,i]);h.dispose(),o.dispose(),i.dispose();let s=L.tidy(()=>y.sub(.5).mul(2));y.dispose();let w=[];if(e.face.emotion.enabled){let f;if(e.profile){let d=await L.profile(()=>he.predict(s));f=d.result.dataSync(),d.result.dispose(),$("emotion",d)}else{let d=await he.predict(s);f=d.dataSync(),L.dispose(d)}for(let d=0;de.face.emotion.minConfidence&&w.push({score:Math.min(.99,Math.trunc(100*f[d])/100),emotion:on[d]});w.sort((d,x)=>x.score-d.score)}s.dispose(),P1=w,t(w)})):null}var S=N(O());var te;async function E1(n){return te||(te=await S.loadGraphModel(n.face.embedding.modelPath),n.debug&&g(`load model: ${n.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),te}function W0(n,e,t=2){if(!n||!e||(n==null?void 0:n.length)===0||(e==null?void 0:e.length)===0||(n==null?void 0:n.length)!==(e==null?void 0:e.length))return 0;let A=n.map((c,_)=>Math.abs(n[_]-e[_])**t).reduce((c,_)=>c+_,0)**(1/t);return Math.max(Math.trunc(1e3*(1-A))/1e3,0)}function R1(n){return S.tidy(()=>{let t=[[.05,.15,.85,.85]],A=n.image||n.tensor;if(!(A instanceof S.Tensor))return null;let r=A.shape.length===3?S.image.cropAndResize(S.expandDims(A,0),t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]):S.image.cropAndResize(A,t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]),c=[.2989,.587,.114],[_,h,o]=S.split(r,3,3),i=S.mul(_,c[0]),y=S.mul(h,c[1]),s=S.mul(o,c[2]),w=S.addN([i,y,s]),f=S.stack([w,w,w],3).squeeze(4),d=f.sub(f.min());return d.div(d.max())})}async function S1(n,e){return te?new Promise(async t=>{let A=[];if(e.face.embedding.enabled){let r=R1(n);if(!e.profile)A=S.tidy(()=>te.predict(r).reshape([128,2]).logSumExp(1).dataSync());else{let c=await S.profile(()=>te.predict({img_inputs:r}));A=[...c.result.dataSync()],c.result.dispose(),$("emotion",c)}r.dispose()}t(A)}):null}var F1={};U(F1,{PoseNet:()=>q1,load:()=>Y1});var D0=N(O());var j0=N(O());function sn(n){let[e,t,A,r]=n;return{offsets:e,heatmap:t,displacementFwd:A,displacementBwd:r}}var N1=class{constructor(e){this.model=e}predict(e){return j0.tidy(()=>{let A=e.toFloat().div(127.5).sub(1).expandDims(0),c=this.model.predict(A).map(h=>h.squeeze([0])),_=sn(c);return{heatmapScores:_.heatmap.sigmoid(),offsets:_.offsets,displacementFwd:_.displacementFwd,displacementBwd:_.displacementBwd}})}dispose(){this.model.dispose()}};function W1(n){return Math.floor(n/2)}var j1=class{constructor(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}enqueue(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)}dequeue(){let e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(e){for(;e>0&&this.less(W1(e),e);)this.exchange(e,W1(e)),e=W1(e)}sink(e){for(;2*e<=this.numberOfElements;){let t=2*e;if(te){o=!1;break}if(!o)break}return o}function O0(n,e,t){let[A,r,c]=t.shape,_=new j1(A*r*c,({score:h})=>h);for(let h=0;ht?t:n}function I0(n,e,t,A){let r=t-n,c=A-e;return r*r+c*c}function V1(n,e){return{x:n.x+e.x,y:n.y+e.y}}var J=N(O()),He=N(Ve());function Z0(n,e){let t=e.shape[0],A=new Float32Array(t);for(let r=0;rn.toTensor().mul(J.scalar(e,"int32")).toFloat().add(un(n,t)))}function pn(n,e){return J.tidy(()=>{let t=n.div(J.scalar(e,"int32"));return n.sub(t.mul(J.scalar(e,"int32")))})}function L0(n){let[e,t,A]=n.shape;return J.tidy(()=>{let c=n.reshape([e*t,A]).argMax(0),_=c.div(J.scalar(t,"int32")).expandDims(1),h=pn(c,t).expandDims(1);return J.concat([_,h],1)})}var H0=Ae.poseChain.map(([n,e])=>[Ae.partIds[n],Ae.partIds[e]]),L1=H0.map(([,n])=>n),X0=H0.map(([n])=>n),bn=16;function gn(n,e,t){let A=t.shape[2]/2;return{y:t.get(e.y,e.x,n),x:t.get(e.y,e.x,A+n)}}function H1(n,e,t,A){return{y:Z1(Math.round(n.y/e),0,t-1),x:Z1(Math.round(n.x/e),0,A-1)}}function F0(n,e,t,A,r,c,_,h=2){let[o,i]=A.shape,y=H1(e.position,c,o,i),s=gn(n,y,_),f=V1(e.position,s);for(let b=0;b=0;--w){let f=L1[w],d=X0[w];o[f]&&!o[d]&&(o[d]=F0(w,o[f],d,e,t,A,c))}for(let w=0;w(A+=d,{position:{y:y.get(x,0),x:y.get(x,1)},part:Ae.partNames[x],score:d})),f=w.filter(d=>d.score>t);return r.dispose(),i.dispose(),{keypoints:f,score:A/w.length}}var Tn=1,B0=16;function C0(n,e,{x:t,y:A},r){return n.some(({keypoints:c})=>{let _=c[r].position;return I0(A,t,_.y,_.x)<=e})}function Pn(n,e,t){return t.reduce((r,{position:c,score:_},h)=>(C0(n,e,c,h)||(r+=_),r),0)/t.length}function J0(n,e,t,A,r,c,_){let h=[],o=O0(_,Tn,n),i=r^2;for(;h.length_&&h.push({keypoints:w,score:f})}return h}async function K0(n){return Promise.all(n.map(e=>e.buffer()))}function vn(n,e,t){return{score:n.score,keypoints:n.keypoints.map(({score:A,part:r,position:c})=>({score:A,part:r,position:{x:Math.trunc(c.x*t),y:Math.trunc(c.y*e)}}))}}function U0(n,[e,t]){let A=n.squeeze(0),r=A.resizeBilinear([e,t]);return A.dispose(),r}function X1(n,[e,t],[A,r]){return n.map(_=>vn(_,e/A,t/r))}async function zn(n,e,t,A){return new Promise(async r=>{let c=await K0([e.heatmapScores,e.offsets,e.displacementFwd,e.displacementBwd]),_=c[0],h=c[1],o=c[2],i=c[3],y=await J0(_,h,o,i,t.body.nmsRadius,t.body.maxDetections,t.body.scoreThreshold),s=X1(y,[n.shape[1],n.shape[2]],[A,A]);r(s)})}async function Mn(n,e,t,A){return new Promise(async r=>{let c=await Y0(e.heatmapScores,e.offsets,t.body.scoreThreshold),_=X1([c],[n.shape[1],n.shape[2]],[A,A]);r(_)})}var q1=class{constructor(e){this.baseModel=e,this.inputSize=e.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(e,t){let A=U0(e,[this.inputSize,this.inputSize]),r=this.baseModel.predict(A,t),c=t.body.maxDetections<2?await Mn(e,r,t,this.inputSize):await zn(e,r,t,this.inputSize);return r.heatmapScores.dispose(),r.offsets.dispose(),r.displacementFwd.dispose(),r.displacementBwd.dispose(),A.dispose(),c}dispose(){this.baseModel.dispose()}};async function Y1(n){let e=await D0.loadGraphModel(n.body.modelPath),t=new N1(e);return n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`),new q1(t)}var U1={};U(U1,{HandPose:()=>Q1,load:()=>$1});var D1=N(O());var T=N(O());var G0=N(O());function Xe(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function pe(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function Q0(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return G0.image.cropAndResize(e,c,[0],t)}function $0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]],r=n.palmLandmarks.map(c=>[c[0]*e[0],c[1]*e[1]]);return{startPoint:t,endPoint:A,palmLandmarks:r,confidence:n.confidence}}function Fe(n,e=1.5){let t=pe(n),A=Xe(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}function qe(n){let e=pe(n),t=Xe(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}var B1=class{constructor(e,t,A){this.model=e,this.anchors=A.map(r=>[r.x_center,r.y_center]),this.anchorsTensor=T.tensor2d(this.anchors),this.inputSize=t,this.inputSizeTensor=T.tensor1d([t,t]),this.doubleInputSizeTensor=T.tensor1d([t*2,t*2])}normalizeBoxes(e){return T.tidy(()=>{let t=T.slice(e,[0,0],[-1,2]),A=T.slice(e,[0,2],[-1,2]),r=T.add(T.div(t,this.inputSizeTensor),this.anchorsTensor),c=T.div(A,this.doubleInputSizeTensor),_=T.mul(T.sub(r,c),this.inputSizeTensor),h=T.mul(T.add(r,c),this.inputSizeTensor);return T.concat2d([_,h],1)})}normalizeLandmarks(e,t){return T.tidy(()=>{let A=T.add(T.div(e.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return T.mul(A,this.inputSizeTensor)})}async getBoxes(e,t){let A=this.model.predict(e),r=A.squeeze();A.dispose();let c=T.tidy(()=>T.sigmoid(T.slice(r,[0,0],[-1,1])).squeeze()),_=c.dataSync(),h=T.slice(r,[0,1],[-1,4]),o=this.normalizeBoxes(h);h.dispose();let i=await T.image.nonMaxSuppressionAsync(o,_,t.hand.maxHands,t.hand.iouThreshold,t.hand.scoreThreshold),y=i.arraySync();c.dispose(),i.dispose();let s=[];for(let w of y)if(_[w]>=t.hand.minConfidence){let f=T.slice(o,[w,0],[1,-1]),d=T.slice(r,[w,5],[1,14]),x=T.tidy(()=>this.normalizeLandmarks(d,w).reshape([-1,2]));d.dispose(),s.push({box:f,palmLandmarks:x,confidence:_[w]})}return r.dispose(),o.dispose(),s}async estimateHandBounds(e,t){let A=e.shape[1],r=e.shape[2],c=T.tidy(()=>e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),_=await this.getBoxes(c,t);c.dispose();let h=[];if(!_||_.length===0)return h;for(let o of _){let i=o.box.dataSync(),y=i.slice(0,2),s=i.slice(2,4),w=o.palmLandmarks.arraySync();o.box.dispose(),o.palmLandmarks.dispose(),h.push($0({startPoint:y,endPoint:s,palmLandmarks:w,confidence:o.confidence},[r/this.inputSize,A/this.inputSize]))}return h}};var Ye=N(O());function En(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function et(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return En(t)}var tt=(n,e)=>[[1,0,n],[0,1,e],[0,0,1]];function oe(n,e){let t=0;for(let A=0;AJ1([...c,1],t)),r=this.calculateLandmarksBoundingBox(A);return Fe(qe(r),Sn)}getBoxForHandLandmarks(e){let t=this.calculateLandmarksBoundingBox(e),A=Fe(qe(t),At);A.palmLandmarks=[];for(let r=0;r[_[0]*(f[0]-this.inputSize/2),_[1]*(f[1]-this.inputSize/2),_[2]*f[2]]),o=C1(A,[0,0]),i=h.map(f=>[...J1(f,o),f[2]]),y=rt(r),s=[...pe(t),1],w=[oe(s,y[0]),oe(s,y[1])];return i.map(f=>[f[0]+w[0],f[1]+w[1],f[2]])}async estimateHands(e,t){let A=!1,r;(this.skipped===0||this.skipped>t.hand.skipFrames||!t.hand.landmarks||!t.videoOptimized)&&(r=await this.handDetector.estimateHandBounds(e,t),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.length>0&&(r.length!==this.detectedHands&&this.detectedHands!==t.hand.maxHands||!t.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...r],this.storedBoxes.length>0&&(A=!0));let c=[];t.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let _=0;_=t.hand.minConfidence){let B=Ye.reshape(Z,[-1,3]),G=B.arraySync();Z.dispose(),B.dispose();let u=this.transformRawCoords(G,f,o,w),a=this.getBoxForHandLandmarks(u);this.storedBoxes[_]=a;let p={landmarks:u,confidence:V,box:{topLeft:a.startPoint,bottomRight:a.endPoint}};c.push(p)}else this.storedBoxes[_]=null;Z.dispose()}else{let o=Fe(qe(h),At),i={confidence:h.confidence,box:{topLeft:o.startPoint,bottomRight:o.endPoint}};c.push(i)}}return this.storedBoxes=this.storedBoxes.filter(_=>_!==null),this.detectedHands=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c}}};var _t=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var G1={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},Q1=class{constructor(e){this.handPipeline=e}static getAnnotations(){return G1}async estimateHands(e,t){let A=await this.handPipeline.estimateHands(e,t);if(!A)return[];let r=[];for(let c of A){let _={};if(c.landmarks)for(let o of Object.keys(G1))_[o]=G1[o].map(i=>c.landmarks[i]);let h=c.box?[Math.max(0,c.box.topLeft[0]),Math.max(0,c.box.topLeft[1]),Math.min(e.shape[2],c.box.bottomRight[0])-c.box.topLeft[0],Math.min(e.shape[1],c.box.bottomRight[1])-c.box.topLeft[1]]:0;r.push({confidence:c.confidence,box:h,landmarks:c.landmarks,annotations:_})}return r}};async function $1(n){let[e,t]=await Promise.all([n.hand.enabled?D1.loadGraphModel(n.hand.detector.modelPath,{fromTFHub:n.hand.detector.modelPath.includes("tfhub.dev")}):null,n.hand.landmarks?D1.loadGraphModel(n.hand.skeleton.modelPath,{fromTFHub:n.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),A=new B1(e,e==null?void 0:e.inputs[0].shape[2],_t),r=new K1(A,t,t==null?void 0:t.inputs[0].shape[2]),c=new Q1(r);return n.hand.enabled&&n.debug&&g(`load model: ${n.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),n.hand.landmarks&&n.debug&&g(`load model: ${n.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),c}var e0={};U(e0,{load:()=>t0,predict:()=>n0});var se=N(O());var ht=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],ot=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var K;async function t0(n){return K||(K=await se.loadGraphModel(n.body.modelPath),K.width=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[2].size),K.height=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[1].size),n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`)),K}async function n0(n,e){if(!K||!e.body.enabled)return null;let t={width:n.shape[2],height:n.shape[1]},A=se.image.resizeBilinear(n,[K.width,K.height],!1),r=se.div(A,[255]);A.dispose();let c;if(e.profile){let i=await se.profile(()=>K.predict(r));c=i.result.find(y=>y.size===195||y.size===155).dataSync(),i.result.forEach(y=>y.dispose()),$("blazepose",i)}else{let i=await K.predict(r);c=i.find(y=>y.size===195||y.size===155).dataSync(),i.forEach(y=>y.dispose())}r.dispose();let _=[],h=c.length===195?ht:ot,o=5;for(let i=0;i{if(!n)return[];let e=[];for(let t=0;to.part==="leftWrist"),r=n[t].keypoints.find(o=>o.part==="rightWrist"),c=n[t].keypoints.find(o=>o.part==="nose");c&&A&&r&&A.position.yo.part==="leftShoulder"),h=n[t].keypoints.find(o=>o.part==="rightShoulder");_&&h&&e.push({body:t,gesture:`leaning ${_.position.y>h.position.y?"left":"right"}`})}return e},it=n=>{if(!n)return[];let e=[];for(let t=0;t0){let A=n[t].mesh[33][2]-n[t].mesh[263][2];Math.abs(A)<10?e.push({face:t,gesture:"facing camera"}):e.push({face:t,gesture:`facing ${A<0?"right":"left"}`}),Math.abs(n[t].mesh[374][1]-n[t].mesh[386][1])/Math.abs(n[t].mesh[443][1]-n[t].mesh[450][1])<.2&&e.push({face:t,gesture:"blink left eye"}),Math.abs(n[t].mesh[145][1]-n[t].mesh[159][1])/Math.abs(n[t].mesh[223][1]-n[t].mesh[230][1])<.2&&e.push({face:t,gesture:"blink right eye"});let _=Math.min(100,500*Math.abs(n[t].mesh[13][1]-n[t].mesh[14][1])/Math.abs(n[t].mesh[10][1]-n[t].mesh[152][1]));_>10&&e.push({face:t,gesture:`mouth ${Math.trunc(_)}% open`});let h=n[t].mesh[152][2];Math.abs(h)>10&&e.push({face:t,gesture:`head ${h<0?"up":"down"}`})}return e},xt=n=>{if(!n)return[];let e=[];for(let t=0;t{if(!n)return[];let e=[];for(let t=0;t0){let r=A.reduce((_,h)=>_.position[2]_.position[1](i[w]=0,s))},r=function(h,o){let i=n.createShader(o);if(n.shaderSource(i,h),n.compileShader(i),!n.getShaderParameter(i,n.COMPILE_STATUS))throw new Error("Filter: GL compile failed",n.getShaderInfoLog(i));return i};this.uniform={},this.attribute={};let c=r(e,n.VERTEX_SHADER),_=r(t,n.FRAGMENT_SHADER);if(this.id=n.createProgram(),n.attachShader(this.id,c),n.attachShader(this.id,_),n.linkProgram(this.id),!n.getProgramParameter(this.id,n.LINK_STATUS))throw new Error("Filter: GL link failed",n.getProgramInfoLog(this.id));n.useProgram(this.id),A(e,"attribute",this.attribute);for(let h in this.attribute)this.attribute[h]=n.getAttribLocation(this.id,h);A(e,"uniform",this.uniform),A(t,"uniform",this.uniform);for(let h in this.uniform)this.uniform[h]=n.getUniformLocation(this.id,h)}function at(n){n||(n={});let e=0,t=null,A=!1,r=-1,c=[null,null],_=[],h=-1,o=-1,i=null,y=null,s={},w=n.canvas||document.createElement("canvas"),f={},d={INTERMEDIATE:1},x=w.getContext("webgl");if(!x)throw new Error("Filter: getContext() failed");this.addFilter=function(u){let a=Array.prototype.slice.call(arguments,1),p=s[u];_.push({func:p,args:a})},this.reset=function(){_=[]};let b=function(u,a){if(!(u===h&&a===o)){if(w.width=u,h=u,w.height=a,o=a,!i){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=x.createBuffer(),x.bindBuffer(x.ARRAY_BUFFER,i),x.bufferData(x.ARRAY_BUFFER,p,x.STATIC_DRAW),x.pixelStorei(x.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}x.viewport(0,0,h,o),c=[null,null]}},Z=function(u,a){let p=x.createFramebuffer();x.bindFramebuffer(x.FRAMEBUFFER,p);let z=x.createRenderbuffer();x.bindRenderbuffer(x.RENDERBUFFER,z);let R=x.createTexture();return x.bindTexture(x.TEXTURE_2D,R),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,u,a,0,x.RGBA,x.UNSIGNED_BYTE,null),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_2D,R,0),x.bindTexture(x.TEXTURE_2D,null),x.bindFramebuffer(x.FRAMEBUFFER,null),{fbo:p,texture:R}},V=function(u){return c[u]=c[u]||Z(h,o),c[u]},B=function(u=null){var R,C;let a=null,p=null,z=!1;e===0?a=t:a=(R=V(r))==null?void 0:R.texture,e++,A&&!(u&d.INTERMEDIATE)?(p=null,z=e%2==0):(r=(r+1)%2,p=(C=V(r))==null?void 0:C.fbo),x.bindTexture(x.TEXTURE_2D,a),x.bindFramebuffer(x.FRAMEBUFFER,p),x.uniform1f(y.uniform.flipY,z?-1:1),x.drawArrays(x.TRIANGLES,0,6)};this.apply=function(u){if(b(u.width,u.height),e=0,t||(t=x.createTexture()),x.bindTexture(x.TEXTURE_2D,t),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.NEAREST),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.NEAREST),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,x.RGBA,x.UNSIGNED_BYTE,u),_.length===0)return B(),w;for(let a=0;a<_.length;a++){A=a===_.length-1;let p=_[a];p.func.apply(this,p.args||[])}return w};let G=function(u){if(f[u])return y=f[u],x.useProgram(y.id),y;let a={};a.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` +var Ft=Object.create,ze=Object.defineProperty,qt=Object.getPrototypeOf,Yt=Object.prototype.hasOwnProperty,Bt=Object.getOwnPropertyNames,Ct=Object.getOwnPropertyDescriptor;var Me=n=>ze(n,"__esModule",{value:!0});var n1=(n,e)=>()=>(e||(e={exports:{}},n(e.exports,e)),e.exports),U=(n,e)=>{for(var t in e)ze(n,t,{get:e[t],enumerable:!0})},Jt=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Bt(e))!Yt.call(n,A)&&A!=="default"&&ze(n,A,{get:()=>e[A],enumerable:!(t=Ct(e,A))||t.enumerable});return n},N=n=>Jt(Me(ze(n!=null?Ft(qt(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);var d0=(n,e,t)=>{if(!e.has(n))throw TypeError("Cannot "+t)},m=(n,e,t)=>(d0(n,e,"read from private field"),t?t.call(n):e.get(n)),ne=(n,e,t,A)=>(d0(n,e,"write to private field"),A?A.call(n,t):e.set(n,t),t);var O=n1(r1=>{var Kt=Object.create,A1=Object.defineProperty,Ut=Object.getPrototypeOf,Dt=Object.prototype.hasOwnProperty,Gt=Object.getOwnPropertyNames,Qt=Object.getOwnPropertyDescriptor,m0=n=>A1(n,"__esModule",{value:!0}),u0=(n,e,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of Gt(e))!Dt.call(n,A)&&A!=="default"&&A1(n,A,{get:()=>e[A],enumerable:!(t=Qt(e,A))||t.enumerable});return n},$t=n=>u0(m0(A1(n!=null?Kt(Ut(n)):{},"default",n&&n.__esModule&&"default"in n?{get:()=>n.default,enumerable:!0}:{value:n,enumerable:!0})),n);m0(r1);u0(r1,$t(require("@tensorflow/tfjs-node")))});var W0=n1(N0=>{Me(N0);U(N0,{MediaPipeFaceMesh:()=>y1,load:()=>on});var x1=N(O()),y1=class{constructor(e,t,A,r){this.facePipeline=new i1(e,t,A),this.config=r}async estimateFaces(e,t){let A=await this.facePipeline.predict(e,t),r=[];for(let c of A||[]){if(c.isDisposedInternal)continue;let _=c.coords?c.coords.arraySync():[],h=_.map(s=>[s[0]/e.shape[2],s[1]/e.shape[1],s[2]/this.facePipeline.meshSize]),o={};if(_&&_.length>0)for(let s of Object.keys(Q))o[s]=Q[s].map(w=>_[w]);let i=c.box?[Math.max(0,c.box.startPoint[0]),Math.max(0,c.box.startPoint[1]),Math.min(e.shape[1],c.box.endPoint[0])-c.box.startPoint[0],Math.min(e.shape[2],c.box.endPoint[1])-c.box.startPoint[1]]:0,y=c.box?[Math.max(0,c.box.startPoint[0]/e.shape[2]),Math.max(0,c.box.startPoint[1]/e.shape[1]),Math.min(e.shape[1],c.box.endPoint[0]-c.box.startPoint[0])/e.shape[2],Math.min(e.shape[2],c.box.endPoint[1]-c.box.startPoint[1])/e.shape[1]]:[];r.push({confidence:c.faceConfidence||c.boxConfidence||0,boxConfidence:c.boxConfidence,faceConfidence:c.faceConfidence,box:i,mesh:_,boxRaw:y,meshRaw:h,annotations:o,image:c.image?c.image.clone():null}),c.coords&&c.coords.dispose(),c.image&&c.image.dispose()}return r}},ye=[null,null,null];async function on(n){ye=await Promise.all([!ye[0]&&n.face.enabled?T0(n):null,!ye[1]&&n.face.mesh.enabled?x1.loadGraphModel(n.face.mesh.modelPath,{fromTFHub:n.face.mesh.modelPath.includes("tfhub.dev")}):null,!ye[2]&&n.face.iris.enabled?x1.loadGraphModel(n.face.iris.modelPath,{fromTFHub:n.face.iris.modelPath.includes("tfhub.dev")}):null]);let e=new y1(ye[0],ye[1],ye[2],n);return n.face.mesh.enabled&&n.debug&&g(`load model: ${n.face.mesh.modelPath.match(/\/(.*)\./)[1]}`),n.face.iris.enabled&&n.debug&&g(`load model: ${n.face.iris.modelPath.match(/\/(.*)\./)[1]}`),e}N0.triangulation=xe});var Ve=n1(k1=>{Me(k1);U(k1,{NUM_KEYPOINTS:()=>wn,connectedPartIndices:()=>dn,partChannels:()=>mn,partIds:()=>I1,partNames:()=>an,poseChain:()=>fn});var an=["nose","leftEye","rightEye","leftEar","rightEar","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle"],wn=k1.partNames.length,I1=k1.partNames.reduce((n,e,t)=>(n[e]=t,n),{}),ln=[["leftHip","leftShoulder"],["leftElbow","leftShoulder"],["leftElbow","leftWrist"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["rightHip","rightShoulder"],["rightElbow","rightShoulder"],["rightElbow","rightWrist"],["rightHip","rightKnee"],["rightKnee","rightAnkle"],["leftShoulder","rightShoulder"],["leftHip","rightHip"]],dn=ln.map(([n,e])=>[I1[n],I1[e]]),fn=[["nose","leftEye"],["leftEye","leftEar"],["nose","rightEye"],["rightEye","rightEar"],["nose","leftShoulder"],["leftShoulder","leftElbow"],["leftElbow","leftWrist"],["leftShoulder","leftHip"],["leftHip","leftKnee"],["leftKnee","leftAnkle"],["nose","rightShoulder"],["rightShoulder","rightElbow"],["rightElbow","rightWrist"],["rightShoulder","rightHip"],["rightHip","rightKnee"],["rightKnee","rightAnkle"]],mn=["left_face","right_face","right_upper_leg_front","right_lower_leg_back","right_upper_leg_back","left_lower_leg_front","left_upper_leg_front","left_upper_leg_back","left_lower_leg_back","right_feet","right_lower_leg_front","left_feet","torso_front","torso_back","right_upper_arm_front","right_upper_arm_back","right_lower_arm_back","left_lower_arm_front","left_upper_arm_front","left_upper_arm_back","left_lower_arm_back","right_hand","right_lower_arm_front","left_hand"]});Me(exports);U(exports,{Human:()=>x0,default:()=>x0});function g(...n){let e=new Date,t=`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`;n&&console.log(t,"Human:",...n)}function f0(){let n,e;if(typeof navigator!="undefined"){let t=navigator.userAgent.match(/\(([^()]+)\)/g);t&&t[0]&&(n=t[0].match(/\(([^()]+)\)/g)[0].replace(/\(|\)/g,""),e=navigator.userAgent.replace(t[0],""),n[1]&&(e=e.replace(t[1],"")),e=e.replace(/ /g," "))}else typeof process!="undefined"&&(n=`${process.platform} ${process.arch}`,e=`NodeJS ${process.version}`);return{platform:n,agent:e}}var s0=N(O());var q=N(O()),Y={name:"humangl",priority:99,canvas:null,gl:null,width:1024,height:1024,webGLattr:{alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!1,desynchronized:!0}};function p0(){if(!q.findBackend(Y.name)){g("backend registration:",Y.name);try{Y.canvas=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(Y.width,Y.height):document.createElement("canvas")}catch(n){g("error: cannot create canvas:",n);return}try{Y.gl=Y.canvas.getContext("webgl2",Y.webGLattr)}catch(n){g("error: cannot get WebGL2 context:",n);return}try{q.setWebGLContext(2,Y.gl)}catch(n){g("error: cannot set WebGL2 context:",n);return}try{let n=new q.GPGPUContext(Y.gl);q.registerBackend(Y.name,()=>new q.MathBackendWebGL(n),Y.priority)}catch(n){g("error: cannot register WebGL backend:",n);return}try{q.getKernelsForBackend("webgl").forEach(e=>{let t={...e,backendName:Y.name};q.registerKernel(t)})}catch(n){g("error: cannot update WebGL backend registration:",n);return}try{q.ENV.set("WEBGL_VERSION",2)}catch(n){g("error: cannot set WebGL backend flags:",n);return}g("backend registered:",Y.name)}}var P=N(O()),b0=6;function en(n){let e={strides:[n/16,n/8],anchors:[2,6]},t=[];for(let A=0;A({startEndTensor:n,startPoint:P.slice(n,[0,0],[-1,2]),endPoint:P.slice(n,[0,2],[-1,2])});function nn(n,e,t){let A=P.slice(n,[0,1],[-1,2]),r=P.add(A,e),c=P.slice(n,[0,3],[-1,2]),_=P.div(c,t),h=P.div(r,t),o=P.div(_,2),i=P.sub(h,o),y=P.add(h,o),s=P.mul(i,t),w=P.mul(y,t);return P.concat2d([s,w],1)}var g0=class{constructor(e,t){this.model=e,this.anchorsData=en(e.inputs[0].shape[1]),this.anchors=P.tensor2d(this.anchorsData),this.inputSize=e.inputs[0].shape[2],this.config=t}async getBoundingBoxes(e){if(!e||e.isDisposedInternal||e.shape.length!==4||e.shape[1]<1||e.shape[2]<1)return null;let[t,A,r]=P.tidy(()=>{let w=e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(.5),f=this.model.predict(w),d;if(Array.isArray(f)){let V=f.sort((a,p)=>a.size-p.size),B=P.concat([V[0],V[2]],2),G=P.concat([V[1],V[3]],2);d=P.concat([G,B],1).squeeze(0)}else d=f.squeeze();let x=nn(d,this.anchors,[this.inputSize,this.inputSize]),b=P.slice(d,[0,0],[-1,1]),Z=P.sigmoid(b).squeeze();return[d,x,Z]}),c=await P.image.nonMaxSuppressionAsync(A,r,this.config.face.detector.maxFaces,this.config.face.detector.iouThreshold,this.config.face.detector.scoreThreshold),_=c.arraySync();c.dispose();let o=_.map(s=>P.slice(A,[s,0],[1,-1])).map(s=>{let w=s.arraySync();return s.dispose(),w}),i=r.dataSync(),y=[];for(let s=0;sthis.config.face.detector.minConfidence){let d=tn(o[s]),x=this.anchorsData[w],b=P.tidy(()=>P.slice(t,[w,b0-1],[1,-1]).squeeze().reshape([b0,-1]));y.push({box:d,landmarks:b,anchor:x,confidence:f})}}return t.dispose(),A.dispose(),r.dispose(),{boxes:y,scaleFactor:[e.shape[2]/this.inputSize,e.shape[1]/this.inputSize]}}};async function T0(n){let e=await P.loadGraphModel(n.face.detector.modelPath,{fromTFHub:n.face.detector.modelPath.includes("tfhub.dev")}),t=new g0(e,n);return n.debug&&g(`load model: ${n.face.detector.modelPath.match(/\/(.*)\./)[1]}`),t}var X=N(O());var P0=N(O());function v0(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]];return{startPoint:t,endPoint:A}}function ue(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function we(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function le(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return P0.image.cropAndResize(e,c,[0],t)}function Ee(n,e=1.5){let t=we(n),A=ue(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}function Re(n){let e=we(n),t=ue(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,landmarks:n.landmarks}}var Se=[[1,0,0],[0,1,0],[0,0,1]];function rn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function c1(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return rn(t)}function z0(n,e){return[[1,0,n],[0,1,e],[0,0,1]]}function ce(n,e){let t=0;for(let A=0;Ah1[n]),Gn=_n.map(n=>h1[n]),Qn=hn.map(n=>h1[n]);var o1=Q.leftEyeLower0,s1=Q.rightEyeLower0,de={leftBounds:[o1[0],o1[o1.length-1]],rightBounds:[s1[0],s1[s1.length-1]]},We={count:468,mouth:13,symmetryLine:[13,Q.midwayBetweenEyes[0]]},S0={leftEye:0,rightEye:1,nose:2,mouth:3,leftEar:4,rightEar:5,symmetryLine:[3,2]},fe={upperCenter:3,lowerCenter:4,index:71,numCoordinates:76};function je(n,e,t,A){for(let r=0;r<_1.length;r++){let{key:c,indices:_}=_1[r],h=Q[`${t}${c}`];if(!A||A.includes(c))for(let o=0;o<_.length;o++){let i=_[o];n[h[o]]=[e[i][0],e[i][1],(e[i][2]+n[h[o]][2])/2]}}}var i1=class{constructor(e,t,A){var r,c;this.storedBoxes=[],this.boundingBoxDetector=e,this.meshDetector=t,this.irisModel=A,this.boxSize=((r=e==null?void 0:e.model)==null?void 0:r.inputs[0].shape[2])||0,this.meshSize=(t==null?void 0:t.inputs[0].shape[2])||((c=e==null?void 0:e.model)==null?void 0:c.inputs[0].shape[2]),this.irisSize=(A==null?void 0:A.inputs[0].shape[1])||0,this.irisEnlarge=2.3,this.skipped=0,this.detectedFaces=0}transformRawCoords(e,t,A,r){let c=ue({startPoint:t.startPoint,endPoint:t.endPoint}),_=e.map(s=>[c[0]/this.meshSize*(s[0]-this.meshSize/2),c[1]/this.meshSize*(s[1]-this.meshSize/2),s[2]]),h=A!==0?Ne(A,[0,0]):Se,o=A!==0?_.map(s=>[...R0(s,h),s[2]]):_,i=A!==0?E0(r):Se,y=[...we({startPoint:t.startPoint,endPoint:t.endPoint}),1];return o.map(s=>[s[0]+ce(y,i[0]),s[1]+ce(y,i[1]),s[2]])}getLeftToRightEyeDepthDifference(e){let t=e[de.leftBounds[0]][2],A=e[de.rightBounds[0]][2];return t-A}getEyeBox(e,t,A,r,c=!1){let _=Re(Ee(this.calculateLandmarksBoundingBox([e[A],e[r]]),this.irisEnlarge)),h=ue(_),o=X.image.cropAndResize(t,[[_.startPoint[1]/this.meshSize,_.startPoint[0]/this.meshSize,_.endPoint[1]/this.meshSize,_.endPoint[0]/this.meshSize]],[0],[this.irisSize,this.irisSize]);return c&&X.ENV.flags.IS_BROWSER&&(o=X.image.flipLeftRight(o)),{box:_,boxSize:h,crop:o}}getEyeCoords(e,t,A,r=!1){let c=[];for(let _=0;_{let i=_;return o===2?i=r:o===4&&(i=c),[h[0],h[1],i]})}async predict(e,t){let A=!1,r;if((this.skipped===0||this.skipped>t.face.detector.skipFrames||!t.face.mesh.enabled||!t.videoOptimized)&&(r=await this.boundingBoxDetector.getBoundingBoxes(e),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.boxes&&(!t.face.mesh.enabled||r.boxes.length!==this.detectedFaces&&this.detectedFaces!==t.face.detector.maxFaces)){this.storedBoxes=[],this.detectedFaces=0;for(let _ of r.boxes)this.storedBoxes.push({startPoint:_.box.startPoint.dataSync(),endPoint:_.box.endPoint.dataSync(),landmarks:_.landmarks,confidence:_.confidence});this.storedBoxes.length>0&&(A=!0)}if(t.face.detector.skipInitial&&this.detectedFaces===0&&(this.skipped=0),A){if(!r||!r.boxes||r.boxes.length===0)return this.storedBoxes=[],this.detectedFaces=0,null;for(let _=0;_{_.box.startPoint.dispose(),_.box.endPoint.dispose(),_.landmarks.dispose()});let c=X.tidy(()=>this.storedBoxes.map((_,h)=>{let o=_.confidence,i,y=0,s;if(t.face.detector.rotation&&t.face.mesh.enabled&&X.ENV.flags.IS_BROWSER){let[u,a]=_.landmarks.length>=We.count?We.symmetryLine:S0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],S=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.boxSize,this.boxSize]).div(255)}else{s=Se;let u=e.clone();t.face.mesh.enabled?i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.meshSize,this.meshSize]).div(255):i=le({startPoint:_.startPoint,endPoint:_.endPoint},u,[this.boxSize,this.boxSize]).div(255)}if(!t.face.mesh.enabled)return{coords:null,box:_,faceConfidence:null,boxConfidence:_.confidence,confidence:_.confidence,image:i};let[,w,f]=this.meshDetector.predict(i),d=w.dataSync()[0];if(d=We.count?We.symmetryLine:S0.symmetryLine;y=c1(_.landmarks[u],_.landmarks[a]);let p=we({startPoint:_.startPoint,endPoint:_.endPoint}),z=[p[0]/e.shape[2],p[1]/e.shape[1]],S=X.image.rotateWithOffset(e,y,0,z);s=Ne(-y,p),i=le({startPoint:_.startPoint,endPoint:_.endPoint},S,[this.meshSize,this.meshSize]).div(255)}let B={coords:V,box:_,faceConfidence:d,boxConfidence:o,image:i,rawCoords:b},G=Re(_);return this.storedBoxes[h]={...G,landmarks:Z,confidence:_.confidence,faceConfidence:d},B}));return c=c.filter(_=>_!==null),t.face.mesh.enabled&&(this.storedBoxes=this.storedBoxes.filter(_=>_.faceConfidence>t.face.detector.minConfidence)),this.detectedFaces=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c,landmarks:e}}};var i0=N(W0());var w1={};U(w1,{load:()=>l1,predict:()=>d1});var ee=N(O());var a1={};function $(n,e){if(!e||!e.kernels)return;let t=5,A=e.kernels.filter(h=>h.kernelTimeMs>0).reduce((h,o)=>h+=o.kernelTimeMs,0),r=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.kernelTimeMs>0).sort((h,o)=>o.kernelTimeMs-h.kernelTimeMs),c=e.kernels.map((h,o)=>(h.id=o,h)).filter(h=>h.totalBytesSnapshot>0).sort((h,o)=>o.totalBytesSnapshot-h.totalBytesSnapshot);r.length>t&&(r.length=t),c.length>t&&(c.length=t);let _={newBytes:e.newBytes,newTensors:e.newTensors,peakBytes:e.peakBytes,numKernelOps:e.kernels.length,timeKernelOps:A,slowestKernelOps:r,largestKernelOps:c};a1[n]=_,g("Human profiler",n,_)}var _e,Oe={age:0},ke=Number.MAX_SAFE_INTEGER;async function l1(n){return _e||(_e=await ee.loadGraphModel(n.face.age.modelPath),n.debug&&g(`load model: ${n.face.age.modelPath.match(/\/(.*)\./)[1]}`)),_e}async function d1(n,e){return _e?ke0?(ke++,Oe):(e.videoOptimized?ke=0:ke=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=ee.image.resizeBilinear(n,[_e.inputs[0].shape[2],_e.inputs[0].shape[1]],!1),r=ee.mul(A,[255]);ee.dispose(A);let c,_={age:0};if(!e.profile)e.face.age.enabled&&(c=await _e.predict(r));else{let h=e.face.age.enabled?await ee.profile(()=>_e.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("age",h)}if(r.dispose(),c){let h=c.dataSync();_.age=Math.trunc(10*h[0])/10}c.dispose(),Oe=_,t(_)})):null}var f1={};U(f1,{load:()=>b1,predict:()=>g1});var I=N(O());var re,m1={gender:""},Ie=Number.MAX_SAFE_INTEGER,u1=!1,p1=[.2989,.587,.114];async function b1(n){return re||(re=await I.loadGraphModel(n.face.gender.modelPath),u1=re.inputs[0].shape[3]===1,n.debug&&g(`load model: ${n.face.gender.modelPath.match(/\/(.*)\./)[1]}`)),re}async function g1(n,e){return re?Ie{let A=I.image.resizeBilinear(n,[re.inputs[0].shape[2],re.inputs[0].shape[1]],!1),r;u1?r=I.tidy(()=>{let[h,o,i]=I.split(A,3,3),y=I.mul(h,p1[0]),s=I.mul(o,p1[1]),w=I.mul(i,p1[2]);return I.addN([y,s,w]).sub(.5).mul(2)}):r=I.mul(A,[255]),I.dispose(A);let c,_={gender:"",confidence:0};if(!e.profile)e.face.gender.enabled&&(c=await re.predict(r));else{let h=e.face.gender.enabled?await I.profile(()=>re.predict(r)):{};c=h.result.clone(),h.result.dispose(),$("gender",h)}if(r.dispose(),c){let h=c.dataSync();if(u1)(h[0]>e.face.gender.minConfidence||h[1]>e.face.gender.minConfidence)&&(_.gender=h[0]>h[1]?"female":"male",_.confidence=h[0]>h[1]?Math.trunc(100*h[0])/100:Math.trunc(100*h[1])/100);else{let o=Math.trunc(200*Math.abs(h[0]-.5))/100;o>e.face.gender.minConfidence&&(_.gender=h[0]<=.5?"female":"male",_.confidence=Math.min(.99,o))}}c.dispose(),m1=_,t(_)})):null}var T1={};U(T1,{load:()=>z1,predict:()=>M1});var L=N(O());var sn=["angry","disgust","fear","happy","sad","surprise","neutral"],he,P1=[],Ze=Number.MAX_SAFE_INTEGER,v1=[.2989,.587,.114];async function z1(n){return he||(he=await L.loadGraphModel(n.face.emotion.modelPath),n.debug&&g(`load model: ${n.face.emotion.modelPath.match(/\/(.*)\./)[1]}`)),he}async function M1(n,e){return he?Ze0?(Ze++,P1):(e.videoOptimized?Ze=0:Ze=Number.MAX_SAFE_INTEGER,new Promise(async t=>{let A=L.image.resizeBilinear(n,[he.inputs[0].shape[2],he.inputs[0].shape[1]],!1),[r,c,_]=L.split(A,3,3);A.dispose();let h=L.mul(r,v1[0]),o=L.mul(c,v1[1]),i=L.mul(_,v1[2]);r.dispose(),c.dispose(),_.dispose();let y=L.addN([h,o,i]);h.dispose(),o.dispose(),i.dispose();let s=L.tidy(()=>y.sub(.5).mul(2));y.dispose();let w=[];if(e.face.emotion.enabled){let f;if(e.profile){let d=await L.profile(()=>he.predict(s));f=d.result.dataSync(),d.result.dispose(),$("emotion",d)}else{let d=await he.predict(s);f=d.dataSync(),L.dispose(d)}for(let d=0;de.face.emotion.minConfidence&&w.push({score:Math.min(.99,Math.trunc(100*f[d])/100),emotion:sn[d]});w.sort((d,x)=>x.score-d.score)}s.dispose(),P1=w,t(w)})):null}var E=N(O());var te;async function E1(n){return te||(te=await E.loadGraphModel(n.face.embedding.modelPath),n.debug&&g(`load model: ${n.face.embedding.modelPath.match(/\/(.*)\./)[1]}`)),te}function R1(n,e,t=2){if(!n||!e||(n==null?void 0:n.length)===0||(e==null?void 0:e.length)===0||(n==null?void 0:n.length)!==(e==null?void 0:e.length))return 0;let A=n.map((c,_)=>Math.abs(n[_]-e[_])**t).reduce((c,_)=>c+_,0)**(1/t);return Math.max(Math.trunc(1e3*(1-A))/1e3,0)}function j0(n,e,t=0){let A={simmilarity:0,name:"",source:"",embedding:[]};if(!n||!e||!Array.isArray(n)||!Array.isArray(e))return A;for(let r of e)if(r.embedding&&r.name){let c=R1(n,r.embedding);c>t&&c>A.simmilarity&&(A={...r,simmilarity:c})}return A}function S1(n){return E.tidy(()=>{let t=[[.05,.15,.85,.85]],A=n.image||n.tensor;if(!(A instanceof E.Tensor))return null;let r=A.shape.length===3?E.image.cropAndResize(E.expandDims(A,0),t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]):E.image.cropAndResize(A,t,[0],[te.inputs[0].shape[2],te.inputs[0].shape[1]]),c=[.2989,.587,.114],[_,h,o]=E.split(r,3,3),i=E.mul(_,c[0]),y=E.mul(h,c[1]),s=E.mul(o,c[2]),w=E.addN([i,y,s]),f=E.stack([w,w,w],3).squeeze(4),d=f.sub(f.min());return d.div(d.max())})}async function N1(n,e){return te?new Promise(async t=>{let A=[];if(e.face.embedding.enabled){let r=S1(n);if(!e.profile)A=E.tidy(()=>[...te.predict(r).reshape([128,2]).logSumExp(1).dataSync()]);else{let c=await E.profile(()=>te.predict({img_inputs:r}));A=[...c.result.dataSync()],c.result.dispose(),$("emotion",c)}E.dispose(r)}t(A)}):[]}var q1={};U(q1,{PoseNet:()=>Y1,load:()=>B1});var G0=N(O());var O0=N(O());function xn(n){let[e,t,A,r]=n;return{offsets:e,heatmap:t,displacementFwd:A,displacementBwd:r}}var W1=class{constructor(e){this.model=e}predict(e){return O0.tidy(()=>{let A=e.toFloat().div(127.5).sub(1).expandDims(0),c=this.model.predict(A).map(h=>h.squeeze([0])),_=xn(c);return{heatmapScores:_.heatmap.sigmoid(),offsets:_.offsets,displacementFwd:_.displacementFwd,displacementBwd:_.displacementBwd}})}dispose(){this.model.dispose()}};function j1(n){return Math.floor(n/2)}var O1=class{constructor(e,t){this.priorityQueue=new Array(e),this.numberOfElements=-1,this.getElementValue=t}enqueue(e){this.priorityQueue[++this.numberOfElements]=e,this.swim(this.numberOfElements)}dequeue(){let e=this.priorityQueue[0];return this.exchange(0,this.numberOfElements--),this.sink(0),this.priorityQueue[this.numberOfElements+1]=null,e}empty(){return this.numberOfElements===-1}size(){return this.numberOfElements+1}all(){return this.priorityQueue.slice(0,this.numberOfElements+1)}max(){return this.priorityQueue[0]}swim(e){for(;e>0&&this.less(j1(e),e);)this.exchange(e,j1(e)),e=j1(e)}sink(e){for(;2*e<=this.numberOfElements;){let t=2*e;if(te){o=!1;break}if(!o)break}return o}function k0(n,e,t){let[A,r,c]=t.shape,_=new O1(A*r*c,({score:h})=>h);for(let h=0;ht?t:n}function Z0(n,e,t,A){let r=t-n,c=A-e;return r*r+c*c}function L1(n,e){return{x:n.x+e.x,y:n.y+e.y}}var J=N(O()),He=N(Ve());function V0(n,e){let t=e.shape[0],A=new Float32Array(t);for(let r=0;rn.toTensor().mul(J.scalar(e,"int32")).toFloat().add(pn(n,t)))}function bn(n,e){return J.tidy(()=>{let t=n.div(J.scalar(e,"int32"));return n.sub(t.mul(J.scalar(e,"int32")))})}function H0(n){let[e,t,A]=n.shape;return J.tidy(()=>{let c=n.reshape([e*t,A]).argMax(0),_=c.div(J.scalar(t,"int32")).expandDims(1),h=bn(c,t).expandDims(1);return J.concat([_,h],1)})}var X0=Ae.poseChain.map(([n,e])=>[Ae.partIds[n],Ae.partIds[e]]),H1=X0.map(([,n])=>n),F0=X0.map(([n])=>n),gn=16;function Tn(n,e,t){let A=t.shape[2]/2;return{y:t.get(e.y,e.x,n),x:t.get(e.y,e.x,A+n)}}function X1(n,e,t,A){return{y:V1(Math.round(n.y/e),0,t-1),x:V1(Math.round(n.x/e),0,A-1)}}function q0(n,e,t,A,r,c,_,h=2){let[o,i]=A.shape,y=X1(e.position,c,o,i),s=Tn(n,y,_),f=L1(e.position,s);for(let b=0;b=0;--w){let f=H1[w],d=F0[w];o[f]&&!o[d]&&(o[d]=q0(w,o[f],d,e,t,A,c))}for(let w=0;w(A+=d,{position:{y:y.get(x,0),x:y.get(x,1)},part:Ae.partNames[x],score:d})),f=w.filter(d=>d.score>t);return r.dispose(),i.dispose(),{keypoints:f,score:A/w.length}}var Pn=1,C0=16;function J0(n,e,{x:t,y:A},r){return n.some(({keypoints:c})=>{let _=c[r].position;return Z0(A,t,_.y,_.x)<=e})}function vn(n,e,t){return t.reduce((r,{position:c,score:_},h)=>(J0(n,e,c,h)||(r+=_),r),0)/t.length}function K0(n,e,t,A,r,c,_){let h=[],o=k0(_,Pn,n),i=r^2;for(;h.length_&&h.push({keypoints:w,score:f})}return h}async function U0(n){return Promise.all(n.map(e=>e.buffer()))}function zn(n,e,t){return{score:n.score,keypoints:n.keypoints.map(({score:A,part:r,position:c})=>({score:A,part:r,position:{x:Math.trunc(c.x*t),y:Math.trunc(c.y*e)}}))}}function D0(n,[e,t]){let A=n.squeeze(0),r=A.resizeBilinear([e,t]);return A.dispose(),r}function F1(n,[e,t],[A,r]){return n.map(_=>zn(_,e/A,t/r))}async function Mn(n,e,t,A){return new Promise(async r=>{let c=await U0([e.heatmapScores,e.offsets,e.displacementFwd,e.displacementBwd]),_=c[0],h=c[1],o=c[2],i=c[3],y=await K0(_,h,o,i,t.body.nmsRadius,t.body.maxDetections,t.body.scoreThreshold),s=F1(y,[n.shape[1],n.shape[2]],[A,A]);r(s)})}async function En(n,e,t,A){return new Promise(async r=>{let c=await B0(e.heatmapScores,e.offsets,t.body.scoreThreshold),_=F1([c],[n.shape[1],n.shape[2]],[A,A]);r(_)})}var Y1=class{constructor(e){this.baseModel=e,this.inputSize=e.model.inputs[0].shape[1],this.inputSize<128&&(this.inputSize=257)}async estimatePoses(e,t){let A=D0(e,[this.inputSize,this.inputSize]),r=this.baseModel.predict(A,t),c=t.body.maxDetections<2?await En(e,r,t,this.inputSize):await Mn(e,r,t,this.inputSize);return r.heatmapScores.dispose(),r.offsets.dispose(),r.displacementFwd.dispose(),r.displacementBwd.dispose(),A.dispose(),c}dispose(){this.baseModel.dispose()}};async function B1(n){let e=await G0.loadGraphModel(n.body.modelPath),t=new W1(e);return n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`),new Y1(t)}var D1={};U(D1,{HandPose:()=>$1,load:()=>e0});var G1=N(O());var T=N(O());var Q0=N(O());function Xe(n){return[Math.abs(n.endPoint[0]-n.startPoint[0]),Math.abs(n.endPoint[1]-n.startPoint[1])]}function pe(n){return[n.startPoint[0]+(n.endPoint[0]-n.startPoint[0])/2,n.startPoint[1]+(n.endPoint[1]-n.startPoint[1])/2]}function $0(n,e,t){let A=e.shape[1],r=e.shape[2],c=[[n.startPoint[1]/A,n.startPoint[0]/r,n.endPoint[1]/A,n.endPoint[0]/r]];return Q0.image.cropAndResize(e,c,[0],t)}function et(n,e){let t=[n.startPoint[0]*e[0],n.startPoint[1]*e[1]],A=[n.endPoint[0]*e[0],n.endPoint[1]*e[1]],r=n.palmLandmarks.map(c=>[c[0]*e[0],c[1]*e[1]]);return{startPoint:t,endPoint:A,palmLandmarks:r,confidence:n.confidence}}function Fe(n,e=1.5){let t=pe(n),A=Xe(n),r=[e*A[0]/2,e*A[1]/2],c=[t[0]-r[0],t[1]-r[1]],_=[t[0]+r[0],t[1]+r[1]];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}function qe(n){let e=pe(n),t=Xe(n),r=Math.max(...t)/2,c=[e[0]-r,e[1]-r],_=[e[0]+r,e[1]+r];return{startPoint:c,endPoint:_,palmLandmarks:n.palmLandmarks}}var C1=class{constructor(e,t,A){this.model=e,this.anchors=A.map(r=>[r.x_center,r.y_center]),this.anchorsTensor=T.tensor2d(this.anchors),this.inputSize=t,this.inputSizeTensor=T.tensor1d([t,t]),this.doubleInputSizeTensor=T.tensor1d([t*2,t*2])}normalizeBoxes(e){return T.tidy(()=>{let t=T.slice(e,[0,0],[-1,2]),A=T.slice(e,[0,2],[-1,2]),r=T.add(T.div(t,this.inputSizeTensor),this.anchorsTensor),c=T.div(A,this.doubleInputSizeTensor),_=T.mul(T.sub(r,c),this.inputSizeTensor),h=T.mul(T.add(r,c),this.inputSizeTensor);return T.concat2d([_,h],1)})}normalizeLandmarks(e,t){return T.tidy(()=>{let A=T.add(T.div(e.reshape([-1,7,2]),this.inputSizeTensor),this.anchors[t]);return T.mul(A,this.inputSizeTensor)})}async getBoxes(e,t){let A=this.model.predict(e),r=A.squeeze();A.dispose();let c=T.tidy(()=>T.sigmoid(T.slice(r,[0,0],[-1,1])).squeeze()),_=c.dataSync(),h=T.slice(r,[0,1],[-1,4]),o=this.normalizeBoxes(h);h.dispose();let i=await T.image.nonMaxSuppressionAsync(o,_,t.hand.maxHands,t.hand.iouThreshold,t.hand.scoreThreshold),y=i.arraySync();c.dispose(),i.dispose();let s=[];for(let w of y)if(_[w]>=t.hand.minConfidence){let f=T.slice(o,[w,0],[1,-1]),d=T.slice(r,[w,5],[1,14]),x=T.tidy(()=>this.normalizeLandmarks(d,w).reshape([-1,2]));d.dispose(),s.push({box:f,palmLandmarks:x,confidence:_[w]})}return r.dispose(),o.dispose(),s}async estimateHandBounds(e,t){let A=e.shape[1],r=e.shape[2],c=T.tidy(()=>e.resizeBilinear([this.inputSize,this.inputSize]).div(127.5).sub(1)),_=await this.getBoxes(c,t);c.dispose();let h=[];if(!_||_.length===0)return h;for(let o of _){let i=o.box.dataSync(),y=i.slice(0,2),s=i.slice(2,4),w=o.palmLandmarks.arraySync();o.box.dispose(),o.palmLandmarks.dispose(),h.push(et({startPoint:y,endPoint:s,palmLandmarks:w,confidence:o.confidence},[r/this.inputSize,A/this.inputSize]))}return h}};var Ye=N(O());function Rn(n){return n-2*Math.PI*Math.floor((n+Math.PI)/(2*Math.PI))}function tt(n,e){let t=Math.PI/2-Math.atan2(-(e[1]-n[1]),e[0]-n[0]);return Rn(t)}var nt=(n,e)=>[[1,0,n],[0,1,e],[0,0,1]];function oe(n,e){let t=0;for(let A=0;AK1([...c,1],t)),r=this.calculateLandmarksBoundingBox(A);return Fe(qe(r),Nn)}getBoxForHandLandmarks(e){let t=this.calculateLandmarksBoundingBox(e),A=Fe(qe(t),ct);A.palmLandmarks=[];for(let r=0;r<_t.length;r++)A.palmLandmarks.push(e[_t[r]].slice(0,2));return A}transformRawCoords(e,t,A,r){let c=Xe(t),_=[c[0]/this.inputSize,c[1]/this.inputSize,(c[0]+c[1])/this.inputSize/2],h=e.map(f=>[_[0]*(f[0]-this.inputSize/2),_[1]*(f[1]-this.inputSize/2),_[2]*f[2]]),o=J1(A,[0,0]),i=h.map(f=>[...K1(f,o),f[2]]),y=At(r),s=[...pe(t),1],w=[oe(s,y[0]),oe(s,y[1])];return i.map(f=>[f[0]+w[0],f[1]+w[1],f[2]])}async estimateHands(e,t){let A=!1,r;(this.skipped===0||this.skipped>t.hand.skipFrames||!t.hand.landmarks||!t.videoOptimized)&&(r=await this.handDetector.estimateHandBounds(e,t),this.skipped=0),t.videoOptimized&&this.skipped++,r&&r.length>0&&(r.length!==this.detectedHands&&this.detectedHands!==t.hand.maxHands||!t.hand.landmarks)&&(this.detectedHands=0,this.storedBoxes=[...r],this.storedBoxes.length>0&&(A=!0));let c=[];t.hand.skipInitial&&this.detectedHands===0&&(this.skipped=0);for(let _=0;_=t.hand.minConfidence){let B=Ye.reshape(Z,[-1,3]),G=B.arraySync();Z.dispose(),B.dispose();let u=this.transformRawCoords(G,f,o,w),a=this.getBoxForHandLandmarks(u);this.storedBoxes[_]=a;let p={landmarks:u,confidence:V,box:{topLeft:a.startPoint,bottomRight:a.endPoint}};c.push(p)}else this.storedBoxes[_]=null;Z.dispose()}else{let o=Fe(qe(h),ct),i={confidence:h.confidence,box:{topLeft:o.startPoint,bottomRight:o.endPoint}};c.push(i)}}return this.storedBoxes=this.storedBoxes.filter(_=>_!==null),this.detectedHands=c.length,c}calculateLandmarksBoundingBox(e){let t=e.map(_=>_[0]),A=e.map(_=>_[1]),r=[Math.min(...t),Math.min(...A)],c=[Math.max(...t),Math.max(...A)];return{startPoint:r,endPoint:c}}};var ht=[{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.046875,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.078125,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.109375,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.140625,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.171875,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.203125,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.234375,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.265625,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.296875,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.328125,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.359375,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.390625,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.421875,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.453125,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.484375,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.515625,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.546875,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.578125,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.609375,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.640625,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.671875,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.703125,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.734375,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.765625,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.796875,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.828125,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.859375,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.890625,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.921875,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.953125,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.984375,y_center:.015625},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.046875,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.078125,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.109375,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.140625,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.171875,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.203125,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.234375,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.265625,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.296875,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.328125,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.359375,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.390625,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.421875,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.453125,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.484375,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.515625,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.546875,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.578125,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.609375,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.640625,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.671875,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.703125,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.734375,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.765625,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.796875,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.828125,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.859375,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.890625,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.921875,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.953125,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.984375,y_center:.046875},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.046875,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.078125,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.109375,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.140625,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.171875,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.203125,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.234375,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.265625,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.296875,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.328125,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.359375,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.390625,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.421875,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.453125,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.484375,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.515625,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.546875,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.578125,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.609375,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.640625,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.671875,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.703125,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.734375,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.765625,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.796875,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.828125,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.859375,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.890625,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.921875,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.953125,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.984375,y_center:.078125},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.046875,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.078125,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.109375,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.140625,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.171875,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.203125,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.234375,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.265625,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.296875,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.328125,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.359375,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.390625,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.421875,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.453125,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.484375,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.515625,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.546875,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.578125,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.609375,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.640625,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.671875,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.703125,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.734375,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.765625,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.796875,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.828125,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.859375,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.890625,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.921875,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.953125,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.984375,y_center:.109375},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.046875,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.078125,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.109375,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.140625,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.171875,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.203125,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.234375,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.265625,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.296875,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.328125,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.359375,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.390625,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.421875,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.453125,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.484375,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.515625,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.546875,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.578125,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.609375,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.640625,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.671875,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.703125,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.734375,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.765625,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.796875,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.828125,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.859375,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.890625,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.921875,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.953125,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.984375,y_center:.140625},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.046875,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.078125,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.109375,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.140625,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.171875,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.203125,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.234375,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.265625,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.296875,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.328125,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.359375,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.390625,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.421875,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.453125,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.484375,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.515625,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.546875,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.578125,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.609375,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.640625,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.671875,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.703125,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.734375,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.765625,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.796875,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.828125,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.859375,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.890625,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.921875,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.953125,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.984375,y_center:.171875},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.046875,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.078125,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.109375,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.140625,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.171875,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.203125,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.234375,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.265625,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.296875,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.328125,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.359375,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.390625,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.421875,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.453125,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.484375,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.515625,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.546875,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.578125,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.609375,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.640625,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.671875,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.703125,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.734375,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.765625,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.796875,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.828125,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.859375,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.890625,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.921875,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.953125,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.984375,y_center:.203125},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.046875,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.078125,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.109375,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.140625,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.171875,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.203125,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.234375,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.265625,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.296875,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.328125,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.359375,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.390625,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.421875,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.453125,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.484375,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.515625,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.546875,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.578125,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.609375,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.640625,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.671875,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.703125,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.734375,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.765625,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.796875,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.828125,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.859375,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.890625,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.921875,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.953125,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.984375,y_center:.234375},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.046875,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.078125,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.109375,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.140625,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.171875,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.203125,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.234375,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.265625,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.296875,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.328125,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.359375,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.390625,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.421875,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.453125,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.484375,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.515625,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.546875,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.578125,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.609375,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.640625,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.671875,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.703125,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.734375,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.765625,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.796875,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.828125,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.859375,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.890625,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.921875,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.953125,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.984375,y_center:.265625},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.046875,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.078125,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.109375,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.140625,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.171875,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.203125,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.234375,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.265625,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.296875,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.328125,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.359375,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.390625,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.421875,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.453125,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.484375,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.515625,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.546875,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.578125,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.609375,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.640625,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.671875,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.703125,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.734375,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.765625,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.796875,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.828125,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.859375,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.890625,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.921875,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.953125,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.984375,y_center:.296875},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.046875,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.078125,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.109375,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.140625,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.171875,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.203125,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.234375,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.265625,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.296875,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.328125,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.359375,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.390625,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.421875,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.453125,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.484375,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.515625,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.546875,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.578125,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.609375,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.640625,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.671875,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.703125,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.734375,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.765625,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.796875,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.828125,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.859375,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.890625,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.921875,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.953125,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.984375,y_center:.328125},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.046875,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.078125,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.109375,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.140625,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.171875,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.203125,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.234375,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.265625,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.296875,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.328125,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.359375,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.390625,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.421875,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.453125,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.484375,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.515625,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.546875,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.578125,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.609375,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.640625,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.671875,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.703125,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.734375,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.765625,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.796875,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.828125,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.859375,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.890625,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.921875,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.953125,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.984375,y_center:.359375},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.046875,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.078125,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.109375,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.140625,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.171875,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.203125,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.234375,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.265625,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.296875,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.328125,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.359375,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.390625,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.421875,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.453125,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.484375,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.515625,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.546875,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.578125,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.609375,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.640625,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.671875,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.703125,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.734375,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.765625,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.796875,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.828125,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.859375,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.890625,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.921875,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.953125,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.984375,y_center:.390625},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.046875,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.078125,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.109375,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.140625,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.171875,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.203125,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.234375,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.265625,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.296875,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.328125,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.359375,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.390625,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.421875,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.453125,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.484375,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.515625,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.546875,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.578125,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.609375,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.640625,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.671875,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.703125,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.734375,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.765625,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.796875,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.828125,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.859375,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.890625,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.921875,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.953125,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.984375,y_center:.421875},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.046875,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.078125,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.109375,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.140625,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.171875,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.203125,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.234375,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.265625,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.296875,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.328125,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.359375,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.390625,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.421875,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.453125,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.484375,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.515625,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.546875,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.578125,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.609375,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.640625,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.671875,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.703125,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.734375,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.765625,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.796875,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.828125,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.859375,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.890625,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.921875,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.953125,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.984375,y_center:.453125},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.046875,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.078125,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.109375,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.140625,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.171875,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.203125,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.234375,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.265625,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.296875,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.328125,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.359375,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.390625,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.421875,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.453125,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.484375,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.515625,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.546875,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.578125,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.609375,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.640625,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.671875,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.703125,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.734375,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.765625,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.796875,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.828125,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.859375,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.890625,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.921875,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.953125,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.984375,y_center:.484375},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.046875,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.078125,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.109375,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.140625,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.171875,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.203125,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.234375,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.265625,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.296875,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.328125,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.359375,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.390625,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.421875,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.453125,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.484375,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.515625,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.546875,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.578125,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.609375,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.640625,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.671875,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.703125,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.734375,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.765625,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.796875,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.828125,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.859375,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.890625,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.921875,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.953125,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.984375,y_center:.515625},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.046875,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.078125,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.109375,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.140625,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.171875,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.203125,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.234375,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.265625,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.296875,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.328125,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.359375,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.390625,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.421875,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.453125,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.484375,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.515625,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.546875,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.578125,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.609375,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.640625,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.671875,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.703125,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.734375,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.765625,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.796875,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.828125,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.859375,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.890625,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.921875,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.953125,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.984375,y_center:.546875},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.046875,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.078125,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.109375,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.140625,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.171875,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.203125,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.234375,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.265625,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.296875,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.328125,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.359375,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.390625,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.421875,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.453125,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.484375,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.515625,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.546875,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.578125,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.609375,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.640625,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.671875,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.703125,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.734375,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.765625,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.796875,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.828125,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.859375,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.890625,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.921875,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.953125,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.984375,y_center:.578125},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.046875,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.078125,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.109375,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.140625,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.171875,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.203125,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.234375,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.265625,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.296875,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.328125,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.359375,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.390625,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.421875,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.453125,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.484375,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.515625,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.546875,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.578125,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.609375,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.640625,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.671875,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.703125,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.734375,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.765625,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.796875,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.828125,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.859375,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.890625,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.921875,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.953125,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.984375,y_center:.609375},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.046875,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.078125,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.109375,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.140625,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.171875,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.203125,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.234375,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.265625,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.296875,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.328125,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.359375,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.390625,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.421875,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.453125,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.484375,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.515625,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.546875,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.578125,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.609375,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.640625,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.671875,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.703125,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.734375,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.765625,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.796875,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.828125,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.859375,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.890625,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.921875,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.953125,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.984375,y_center:.640625},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.046875,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.078125,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.109375,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.140625,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.171875,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.203125,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.234375,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.265625,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.296875,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.328125,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.359375,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.390625,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.421875,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.453125,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.484375,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.515625,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.546875,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.578125,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.609375,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.640625,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.671875,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.703125,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.734375,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.765625,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.796875,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.828125,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.859375,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.890625,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.921875,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.953125,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.984375,y_center:.671875},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.046875,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.078125,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.109375,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.140625,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.171875,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.203125,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.234375,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.265625,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.296875,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.328125,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.359375,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.390625,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.421875,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.453125,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.484375,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.515625,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.546875,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.578125,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.609375,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.640625,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.671875,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.703125,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.734375,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.765625,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.796875,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.828125,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.859375,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.890625,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.921875,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.953125,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.984375,y_center:.703125},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.046875,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.078125,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.109375,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.140625,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.171875,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.203125,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.234375,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.265625,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.296875,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.328125,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.359375,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.390625,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.421875,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.453125,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.484375,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.515625,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.546875,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.578125,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.609375,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.640625,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.671875,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.703125,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.734375,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.765625,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.796875,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.828125,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.859375,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.890625,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.921875,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.953125,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.984375,y_center:.734375},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.046875,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.078125,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.109375,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.140625,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.171875,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.203125,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.234375,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.265625,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.296875,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.328125,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.359375,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.390625,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.421875,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.453125,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.484375,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.515625,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.546875,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.578125,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.609375,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.640625,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.671875,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.703125,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.734375,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.765625,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.796875,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.828125,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.859375,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.890625,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.921875,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.953125,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.984375,y_center:.765625},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.046875,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.078125,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.109375,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.140625,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.171875,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.203125,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.234375,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.265625,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.296875,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.328125,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.359375,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.390625,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.421875,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.453125,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.484375,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.515625,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.546875,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.578125,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.609375,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.640625,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.671875,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.703125,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.734375,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.765625,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.796875,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.828125,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.859375,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.890625,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.921875,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.953125,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.984375,y_center:.796875},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.046875,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.078125,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.109375,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.140625,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.171875,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.203125,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.234375,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.265625,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.296875,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.328125,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.359375,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.390625,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.421875,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.453125,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.484375,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.515625,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.546875,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.578125,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.609375,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.640625,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.671875,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.703125,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.734375,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.765625,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.796875,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.828125,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.859375,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.890625,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.921875,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.953125,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.984375,y_center:.828125},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.046875,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.078125,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.109375,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.140625,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.171875,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.203125,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.234375,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.265625,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.296875,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.328125,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.359375,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.390625,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.421875,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.453125,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.484375,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.515625,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.546875,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.578125,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.609375,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.640625,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.671875,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.703125,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.734375,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.765625,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.796875,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.828125,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.859375,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.890625,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.921875,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.953125,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.984375,y_center:.859375},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.046875,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.078125,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.109375,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.140625,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.171875,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.203125,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.234375,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.265625,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.296875,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.328125,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.359375,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.390625,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.421875,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.453125,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.484375,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.515625,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.546875,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.578125,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.609375,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.640625,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.671875,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.703125,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.734375,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.765625,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.796875,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.828125,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.859375,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.890625,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.921875,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.953125,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.984375,y_center:.890625},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.046875,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.078125,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.109375,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.140625,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.171875,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.203125,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.234375,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.265625,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.296875,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.328125,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.359375,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.390625,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.421875,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.453125,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.484375,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.515625,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.546875,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.578125,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.609375,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.640625,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.671875,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.703125,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.734375,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.765625,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.796875,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.828125,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.859375,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.890625,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.921875,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.953125,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.984375,y_center:.921875},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.046875,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.078125,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.109375,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.140625,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.171875,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.203125,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.234375,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.265625,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.296875,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.328125,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.359375,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.390625,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.421875,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.453125,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.484375,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.515625,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.546875,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.578125,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.609375,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.640625,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.671875,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.703125,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.734375,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.765625,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.796875,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.828125,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.859375,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.890625,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.921875,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.953125,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.984375,y_center:.953125},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.015625,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.046875,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.078125,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.109375,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.140625,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.171875,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.203125,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.234375,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.265625,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.296875,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.328125,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.359375,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.390625,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.421875,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.453125,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.484375,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.515625,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.546875,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.578125,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.609375,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.640625,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.671875,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.703125,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.734375,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.765625,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.796875,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.828125,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.859375,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.890625,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.921875,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.953125,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.984375,y_center:.984375},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.09375,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.15625,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.21875,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.28125,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.34375,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.40625,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.46875,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.53125,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.59375,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.65625,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.71875,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.78125,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.84375,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.90625,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.96875,y_center:.03125},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.09375,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.15625,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.21875,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.28125,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.34375,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.40625,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.46875,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.53125,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.59375,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.65625,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.71875,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.78125,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.84375,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.90625,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.96875,y_center:.09375},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.09375,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.15625,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.21875,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.28125,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.34375,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.40625,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.46875,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.53125,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.59375,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.65625,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.71875,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.78125,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.84375,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.90625,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.96875,y_center:.15625},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.09375,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.15625,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.21875,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.28125,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.34375,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.40625,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.46875,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.53125,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.59375,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.65625,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.71875,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.78125,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.84375,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.90625,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.96875,y_center:.21875},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.09375,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.15625,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.21875,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.28125,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.34375,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.40625,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.46875,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.53125,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.59375,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.65625,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.71875,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.78125,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.84375,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.90625,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.96875,y_center:.28125},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.09375,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.15625,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.21875,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.28125,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.34375,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.40625,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.46875,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.53125,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.59375,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.65625,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.71875,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.78125,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.84375,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.90625,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.96875,y_center:.34375},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.09375,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.15625,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.21875,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.28125,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.34375,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.40625,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.46875,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.53125,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.59375,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.65625,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.71875,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.78125,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.84375,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.90625,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.96875,y_center:.40625},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.09375,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.15625,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.21875,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.28125,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.34375,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.40625,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.46875,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.53125,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.59375,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.65625,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.71875,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.78125,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.84375,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.90625,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.96875,y_center:.46875},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.09375,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.15625,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.21875,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.28125,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.34375,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.40625,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.46875,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.53125,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.59375,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.65625,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.71875,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.78125,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.84375,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.90625,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.96875,y_center:.53125},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.09375,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.15625,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.21875,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.28125,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.34375,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.40625,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.46875,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.53125,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.59375,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.65625,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.71875,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.78125,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.84375,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.90625,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.96875,y_center:.59375},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.09375,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.15625,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.21875,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.28125,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.34375,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.40625,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.46875,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.53125,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.59375,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.65625,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.71875,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.78125,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.84375,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.90625,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.96875,y_center:.65625},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.09375,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.15625,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.21875,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.28125,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.34375,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.40625,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.46875,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.53125,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.59375,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.65625,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.71875,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.78125,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.84375,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.90625,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.96875,y_center:.71875},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.09375,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.15625,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.21875,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.28125,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.34375,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.40625,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.46875,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.53125,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.59375,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.65625,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.71875,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.78125,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.84375,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.90625,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.96875,y_center:.78125},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.09375,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.15625,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.21875,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.28125,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.34375,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.40625,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.46875,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.53125,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.59375,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.65625,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.71875,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.78125,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.84375,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.90625,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.96875,y_center:.84375},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.09375,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.15625,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.21875,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.28125,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.34375,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.40625,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.46875,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.53125,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.59375,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.65625,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.71875,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.78125,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.84375,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.90625,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.96875,y_center:.90625},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.03125,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.09375,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.15625,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.21875,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.28125,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.34375,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.40625,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.46875,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.53125,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.59375,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.65625,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.71875,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.78125,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.84375,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.90625,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.96875,y_center:.96875},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.1875,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.3125,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.4375,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.5625,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.6875,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.8125,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.9375,y_center:.0625},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.1875,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.3125,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.4375,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.5625,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.6875,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.8125,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.9375,y_center:.1875},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.1875,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.3125,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.4375,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.5625,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.6875,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.8125,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.9375,y_center:.3125},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.1875,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.3125,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.4375,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.5625,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.6875,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.8125,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.9375,y_center:.4375},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.1875,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.3125,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.4375,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.5625,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.6875,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.8125,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.9375,y_center:.5625},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.1875,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.3125,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.4375,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.5625,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.6875,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.8125,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.9375,y_center:.6875},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.1875,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.3125,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.4375,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.5625,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.6875,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.8125,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.9375,y_center:.8125},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.0625,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.1875,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.3125,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.4375,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.5625,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.6875,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.8125,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375},{w:1,h:1,x_center:.9375,y_center:.9375}];var Q1={thumb:[1,2,3,4],indexFinger:[5,6,7,8],middleFinger:[9,10,11,12],ringFinger:[13,14,15,16],pinky:[17,18,19,20],palmBase:[0]},$1=class{constructor(e){this.handPipeline=e}static getAnnotations(){return Q1}async estimateHands(e,t){let A=await this.handPipeline.estimateHands(e,t);if(!A)return[];let r=[];for(let c of A){let _={};if(c.landmarks)for(let o of Object.keys(Q1))_[o]=Q1[o].map(i=>c.landmarks[i]);let h=c.box?[Math.max(0,c.box.topLeft[0]),Math.max(0,c.box.topLeft[1]),Math.min(e.shape[2],c.box.bottomRight[0])-c.box.topLeft[0],Math.min(e.shape[1],c.box.bottomRight[1])-c.box.topLeft[1]]:0;r.push({confidence:c.confidence,box:h,landmarks:c.landmarks,annotations:_})}return r}};async function e0(n){let[e,t]=await Promise.all([n.hand.enabled?G1.loadGraphModel(n.hand.detector.modelPath,{fromTFHub:n.hand.detector.modelPath.includes("tfhub.dev")}):null,n.hand.landmarks?G1.loadGraphModel(n.hand.skeleton.modelPath,{fromTFHub:n.hand.skeleton.modelPath.includes("tfhub.dev")}):null]),A=new C1(e,e==null?void 0:e.inputs[0].shape[2],ht),r=new U1(A,t,t==null?void 0:t.inputs[0].shape[2]),c=new $1(r);return n.hand.enabled&&n.debug&&g(`load model: ${n.hand.detector.modelPath.match(/\/(.*)\./)[1]}`),n.hand.landmarks&&n.debug&&g(`load model: ${n.hand.skeleton.modelPath.match(/\/(.*)\./)[1]}`),c}var t0={};U(t0,{load:()=>n0,predict:()=>r0});var se=N(O());var ot=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","leftWrist","rightWrist","leftPalm","rightPalm","leftIndex","rightIndex","leftPinky","rightPinky","leftHip","rightHip","leftKnee","rightKnee","leftAnkle","rightAnkle","leftHeel","rightHeel","leftFoot","rightFoot","midHip","forehead","leftThumb","leftHand","rightThumb","rightHand"],st=["nose","leftEyeInside","leftEye","leftEyeOutside","rightEyeInside","rightEye","rightEyeOutside","leftEar","rightEar","leftMouth","rightMouth","leftShoulder","rightShoulder","leftElbow","rightElbow","left:15","right:16","left:17","right:18","left:19","right:20","left:21","right:22","leftChest","rightChest","neck","forehead","left:27","right:28","left:29","right:30"];var K;async function n0(n){return K||(K=await se.loadGraphModel(n.body.modelPath),K.width=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[2].size),K.height=parseInt(K.signature.inputs["input_1:0"].tensorShape.dim[1].size),n.debug&&g(`load model: ${n.body.modelPath.match(/\/(.*)\./)[1]}`)),K}async function r0(n,e){if(!K||!e.body.enabled)return null;let t={width:n.shape[2],height:n.shape[1]},A=se.image.resizeBilinear(n,[K.width,K.height],!1),r=se.div(A,[255]);A.dispose();let c;if(e.profile){let i=await se.profile(()=>K.predict(r));c=i.result.find(y=>y.size===195||y.size===155).dataSync(),i.result.forEach(y=>y.dispose()),$("blazepose",i)}else{let i=await K.predict(r);c=i.find(y=>y.size===195||y.size===155).dataSync(),i.forEach(y=>y.dispose())}r.dispose();let _=[],h=c.length===195?ot:st,o=5;for(let i=0;i{if(!n)return[];let e=[];for(let t=0;to.part==="leftWrist"),r=n[t].keypoints.find(o=>o.part==="rightWrist"),c=n[t].keypoints.find(o=>o.part==="nose");c&&A&&r&&A.position.yo.part==="leftShoulder"),h=n[t].keypoints.find(o=>o.part==="rightShoulder");_&&h&&e.push({body:t,gesture:`leaning ${_.position.y>h.position.y?"left":"right"}`})}return e},xt=n=>{if(!n)return[];let e=[];for(let t=0;t0){let A=n[t].mesh[33][2]-n[t].mesh[263][2];Math.abs(A)<10?e.push({face:t,gesture:"facing camera"}):e.push({face:t,gesture:`facing ${A<0?"right":"left"}`}),Math.abs(n[t].mesh[374][1]-n[t].mesh[386][1])/Math.abs(n[t].mesh[443][1]-n[t].mesh[450][1])<.2&&e.push({face:t,gesture:"blink left eye"}),Math.abs(n[t].mesh[145][1]-n[t].mesh[159][1])/Math.abs(n[t].mesh[223][1]-n[t].mesh[230][1])<.2&&e.push({face:t,gesture:"blink right eye"});let _=Math.min(100,500*Math.abs(n[t].mesh[13][1]-n[t].mesh[14][1])/Math.abs(n[t].mesh[10][1]-n[t].mesh[152][1]));_>10&&e.push({face:t,gesture:`mouth ${Math.trunc(_)}% open`});let h=n[t].mesh[152][2];Math.abs(h)>10&&e.push({face:t,gesture:`head ${h<0?"up":"down"}`})}return e},yt=n=>{if(!n)return[];let e=[];for(let t=0;t{if(!n)return[];let e=[];for(let t=0;t0){let r=A.reduce((_,h)=>_.position[2]_.position[1](i[w]=0,s))},r=function(h,o){let i=n.createShader(o);if(n.shaderSource(i,h),n.compileShader(i),!n.getShaderParameter(i,n.COMPILE_STATUS))throw new Error("Filter: GL compile failed",n.getShaderInfoLog(i));return i};this.uniform={},this.attribute={};let c=r(e,n.VERTEX_SHADER),_=r(t,n.FRAGMENT_SHADER);if(this.id=n.createProgram(),n.attachShader(this.id,c),n.attachShader(this.id,_),n.linkProgram(this.id),!n.getProgramParameter(this.id,n.LINK_STATUS))throw new Error("Filter: GL link failed",n.getProgramInfoLog(this.id));n.useProgram(this.id),A(e,"attribute",this.attribute);for(let h in this.attribute)this.attribute[h]=n.getAttribLocation(this.id,h);A(e,"uniform",this.uniform),A(t,"uniform",this.uniform);for(let h in this.uniform)this.uniform[h]=n.getUniformLocation(this.id,h)}function wt(n){n||(n={});let e=0,t=null,A=!1,r=-1,c=[null,null],_=[],h=-1,o=-1,i=null,y=null,s={},w=n.canvas||document.createElement("canvas"),f={},d={INTERMEDIATE:1},x=w.getContext("webgl");if(!x)throw new Error("Filter: getContext() failed");this.addFilter=function(u){let a=Array.prototype.slice.call(arguments,1),p=s[u];_.push({func:p,args:a})},this.reset=function(){_=[]};let b=function(u,a){if(!(u===h&&a===o)){if(w.width=u,h=u,w.height=a,o=a,!i){let p=new Float32Array([-1,-1,0,1,1,-1,1,1,-1,1,0,0,-1,1,0,0,1,-1,1,1,1,1,1,0]);i=x.createBuffer(),x.bindBuffer(x.ARRAY_BUFFER,i),x.bufferData(x.ARRAY_BUFFER,p,x.STATIC_DRAW),x.pixelStorei(x.UNPACK_PREMULTIPLY_ALPHA_WEBGL,!0)}x.viewport(0,0,h,o),c=[null,null]}},Z=function(u,a){let p=x.createFramebuffer();x.bindFramebuffer(x.FRAMEBUFFER,p);let z=x.createRenderbuffer();x.bindRenderbuffer(x.RENDERBUFFER,z);let S=x.createTexture();return x.bindTexture(x.TEXTURE_2D,S),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,u,a,0,x.RGBA,x.UNSIGNED_BYTE,null),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.LINEAR),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.framebufferTexture2D(x.FRAMEBUFFER,x.COLOR_ATTACHMENT0,x.TEXTURE_2D,S,0),x.bindTexture(x.TEXTURE_2D,null),x.bindFramebuffer(x.FRAMEBUFFER,null),{fbo:p,texture:S}},V=function(u){return c[u]=c[u]||Z(h,o),c[u]},B=function(u=null){var S,C;let a=null,p=null,z=!1;e===0?a=t:a=(S=V(r))==null?void 0:S.texture,e++,A&&!(u&d.INTERMEDIATE)?(p=null,z=e%2==0):(r=(r+1)%2,p=(C=V(r))==null?void 0:C.fbo),x.bindTexture(x.TEXTURE_2D,a),x.bindFramebuffer(x.FRAMEBUFFER,p),x.uniform1f(y.uniform.flipY,z?-1:1),x.drawArrays(x.TRIANGLES,0,6)};this.apply=function(u){if(b(u.width,u.height),e=0,t||(t=x.createTexture()),x.bindTexture(x.TEXTURE_2D,t),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_S,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_WRAP_T,x.CLAMP_TO_EDGE),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MIN_FILTER,x.NEAREST),x.texParameteri(x.TEXTURE_2D,x.TEXTURE_MAG_FILTER,x.NEAREST),x.texImage2D(x.TEXTURE_2D,0,x.RGBA,x.RGBA,x.UNSIGNED_BYTE,u),_.length===0)return B(),w;for(let a=0;a<_.length;a++){A=a===_.length-1;let p=_[a];p.func.apply(this,p.args||[])}return w};let G=function(u){if(f[u])return y=f[u],x.useProgram(y.id),y;let a={};a.VERTEX_IDENTITY=["precision highp float;","attribute vec2 pos;","attribute vec2 uv;","varying vec2 vUv;","uniform float flipY;","void main(void) {","vUv = uv;","gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);","}"].join(` `),a.FRAGMENT_IDENTITY=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","void main(void) {","gl_FragColor = texture2D(texture, vUv);","}"].join(` -`),y=new jn(x,a.VERTEX_IDENTITY,u);let p=Float32Array.BYTES_PER_ELEMENT,z=4*p;return x.enableVertexAttribArray(y.attribute.pos),x.vertexAttribPointer(y.attribute.pos,2,x.FLOAT,!1,z,0*p),x.enableVertexAttribArray(y.attribute.uv),x.vertexAttribPointer(y.attribute.uv,2,x.FLOAT,!1,z,2*p),f[u]=y,y};s.colorMatrix=function(u){let a=new Float32Array(u);a[4]/=255,a[9]/=255,a[14]/=255,a[19]/=255;let p=a[18]===1&&a[3]===0&&a[8]===0&&a[13]===0&&a[15]===0&&a[16]===0&&a[17]===0&&a[19]===0?s.colorMatrix.SHADER.WITHOUT_ALPHA:s.colorMatrix.SHADER.WITH_ALPHA,z=G(p);x.uniform1fv(z.uniform.m,a),B()},s.colorMatrix.SHADER={},s.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` +`),y=new On(x,a.VERTEX_IDENTITY,u);let p=Float32Array.BYTES_PER_ELEMENT,z=4*p;return x.enableVertexAttribArray(y.attribute.pos),x.vertexAttribPointer(y.attribute.pos,2,x.FLOAT,!1,z,0*p),x.enableVertexAttribArray(y.attribute.uv),x.vertexAttribPointer(y.attribute.uv,2,x.FLOAT,!1,z,2*p),f[u]=y,y};s.colorMatrix=function(u){let a=new Float32Array(u);a[4]/=255,a[9]/=255,a[14]/=255,a[19]/=255;let p=a[18]===1&&a[3]===0&&a[8]===0&&a[13]===0&&a[15]===0&&a[16]===0&&a[17]===0&&a[19]===0?s.colorMatrix.SHADER.WITHOUT_ALPHA:s.colorMatrix.SHADER.WITH_ALPHA,z=G(p);x.uniform1fv(z.uniform.m,a),B()},s.colorMatrix.SHADER={},s.colorMatrix.SHADER.WITH_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];","gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];","}"].join(` `),s.colorMatrix.SHADER.WITHOUT_ALPHA=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform float m[20];","void main(void) {","vec4 c = texture2D(texture, vUv);","gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];","gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];","gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];","gl_FragColor.a = c.a;","}"].join(` -`),s.brightness=function(u){let a=(u||0)+1;s.colorMatrix([a,0,0,0,0,0,a,0,0,0,0,0,a,0,0,0,0,0,1,0])},s.saturation=function(u){let a=(u||0)*2/3+1,p=(a-1)*-.5;s.colorMatrix([a,p,p,0,0,p,a,p,0,0,p,p,a,0,0,0,0,0,1,0])},s.desaturate=function(){s.saturation(-1)},s.contrast=function(u){let a=(u||0)+1,p=-128*(a-1);s.colorMatrix([a,0,0,0,p,0,a,0,0,p,0,0,a,0,p,0,0,0,1,0])},s.negative=function(){s.contrast(-2)},s.hue=function(u){u=(u||0)/180*Math.PI;let a=Math.cos(u),p=Math.sin(u),z=.213,R=.715,C=.072;s.colorMatrix([z+a*(1-z)+p*-z,R+a*-R+p*-R,C+a*-C+p*(1-C),0,0,z+a*-z+p*.143,R+a*(1-R)+p*.14,C+a*-C+p*-.283,0,0,z+a*-z+p*-(1-z),R+a*-R+p*R,C+a*(1-C)+p*C,0,0,0,0,0,1,0])},s.desaturateLuminance=function(){s.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},s.sepia=function(){s.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},s.brownie=function(){s.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},s.vintagePinhole=function(){s.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},s.kodachrome=function(){s.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},s.technicolor=function(){s.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},s.polaroid=function(){s.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},s.shiftToBGR=function(){s.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},s.convolution=function(u){let a=new Float32Array(u),p=1/h,z=1/o,R=G(s.convolution.SHADER);x.uniform1fv(R.uniform.m,a),x.uniform2f(R.uniform.px,p,z),B()},s.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` +`),s.brightness=function(u){let a=(u||0)+1;s.colorMatrix([a,0,0,0,0,0,a,0,0,0,0,0,a,0,0,0,0,0,1,0])},s.saturation=function(u){let a=(u||0)*2/3+1,p=(a-1)*-.5;s.colorMatrix([a,p,p,0,0,p,a,p,0,0,p,p,a,0,0,0,0,0,1,0])},s.desaturate=function(){s.saturation(-1)},s.contrast=function(u){let a=(u||0)+1,p=-128*(a-1);s.colorMatrix([a,0,0,0,p,0,a,0,0,p,0,0,a,0,p,0,0,0,1,0])},s.negative=function(){s.contrast(-2)},s.hue=function(u){u=(u||0)/180*Math.PI;let a=Math.cos(u),p=Math.sin(u),z=.213,S=.715,C=.072;s.colorMatrix([z+a*(1-z)+p*-z,S+a*-S+p*-S,C+a*-C+p*(1-C),0,0,z+a*-z+p*.143,S+a*(1-S)+p*.14,C+a*-C+p*-.283,0,0,z+a*-z+p*-(1-z),S+a*-S+p*S,C+a*(1-C)+p*C,0,0,0,0,0,1,0])},s.desaturateLuminance=function(){s.colorMatrix([.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,.2764723,.929708,.0938197,0,-37.1,0,0,0,1,0])},s.sepia=function(){s.colorMatrix([.393,.7689999,.18899999,0,0,.349,.6859999,.16799999,0,0,.272,.5339999,.13099999,0,0,0,0,0,1,0])},s.brownie=function(){s.colorMatrix([.5997023498159715,.34553243048391263,-.2708298674538042,0,47.43192855600873,-.037703249837783157,.8609577587992641,.15059552388459913,0,-36.96841498319127,.24113635128153335,-.07441037908422492,.44972182064877153,0,-7.562075277591283,0,0,0,1,0])},s.vintagePinhole=function(){s.colorMatrix([.6279345635605994,.3202183420819367,-.03965408211312453,0,9.651285835294123,.02578397704808868,.6441188644374771,.03259127616149294,0,7.462829176470591,.0466055556782719,-.0851232987247891,.5241648018700465,0,5.159190588235296,0,0,0,1,0])},s.kodachrome=function(){s.colorMatrix([1.1285582396593525,-.3967382283601348,-.03992559172921793,0,63.72958762196502,-.16404339962244616,1.0835251566291304,-.05498805115633132,0,24.732407896706203,-.16786010706155763,-.5603416277695248,1.6014850761964943,0,35.62982807460946,0,0,0,1,0])},s.technicolor=function(){s.colorMatrix([1.9125277891456083,-.8545344976951645,-.09155508482755585,0,11.793603434377337,-.3087833385928097,1.7658908555458428,-.10601743074722245,0,-70.35205161461398,-.231103377548616,-.7501899197440212,1.847597816108189,0,30.950940869491138,0,0,0,1,0])},s.polaroid=function(){s.colorMatrix([1.438,-.062,-.062,0,0,-.122,1.378,-.122,0,0,-.016,-.016,1.483,0,0,0,0,0,1,0])},s.shiftToBGR=function(){s.colorMatrix([0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,0])},s.convolution=function(u){let a=new Float32Array(u),p=1/h,z=1/o,S=G(s.convolution.SHADER);x.uniform1fv(S.uniform.m,a),x.uniform2f(S.uniform.px,p,z),B()},s.convolution.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","uniform float m[9];","void main(void) {","vec4 c11 = texture2D(texture, vUv - px);","vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));","vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));","vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );","vec4 c22 = texture2D(texture, vUv);","vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );","vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );","vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );","vec4 c33 = texture2D(texture, vUv + px );","gl_FragColor = ","c11 * m[0] + c12 * m[1] + c22 * m[2] +","c21 * m[3] + c22 * m[4] + c23 * m[5] +","c31 * m[6] + c32 * m[7] + c33 * m[8];","gl_FragColor.a = c22.a;","}"].join(` `),s.detectEdges=function(){s.convolution.call(this,[0,1,0,1,-4,1,0,1,0])},s.sobelX=function(){s.convolution.call(this,[-1,0,1,-2,0,2,-1,0,1])},s.sobelY=function(){s.convolution.call(this,[-1,-2,-1,0,0,0,1,2,1])},s.sharpen=function(u){let a=u||1;s.convolution.call(this,[0,-1*a,0,-1*a,1+4*a,-1*a,0,-1*a,0])},s.emboss=function(u){let a=u||1;s.convolution.call(this,[-2*a,-1*a,0,-1*a,1,1*a,0,1*a,2*a])},s.blur=function(u){let a=u/7/h,p=u/7/o,z=G(s.blur.SHADER);x.uniform2f(z.uniform.px,0,p),B(d.INTERMEDIATE),x.uniform2f(z.uniform.px,a,0),B()},s.blur.SHADER=["precision highp float;","varying vec2 vUv;","uniform sampler2D texture;","uniform vec2 px;","void main(void) {","gl_FragColor = vec4(0.0);","gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;","gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv )*0.159576912161;","gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;","gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;","gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;","gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;","gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;","gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;","gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;","}"].join(` `),s.pixelate=function(u){let a=u/h,p=u/o,z=G(s.pixelate.SHADER);x.uniform2f(z.uniform.size,a,p),B()},s.pixelate.SHADER=["precision highp float;","varying vec2 vUv;","uniform vec2 size;","uniform sampler2D texture;","vec2 pixelate(vec2 coord, vec2 size) {","return floor( coord / size ) * size;","}","void main(void) {","gl_FragColor = vec4(0.0);","vec2 coord = pixelate(vUv, size);","gl_FragColor += texture2D(texture, coord);","}"].join(` -`)}var Be=2048,W=null,H=null,j=null;function r0(n,e){let t;if(n instanceof D.Tensor)t=D.clone(n);else{let r=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0,c=n.naturalHeight||n.videoHeight||n.height||n.shape&&n.shape[2]>0,_=r,h=c;if(_>Be&&(_=Be,h=_*c/r),h>Be&&(h=Be,_=h*r/c),e.filter.width>0?_=e.filter.width:e.filter.height>0&&(_=r*(e.filter.height/c)),e.filter.height>0?h=e.filter.height:e.filter.width>0&&(h=c*(e.filter.width/r)),!_||!h)return g("Human: invalid input",n),{tensor:null,canvas:null};(!W||W.width!==_||W.height!==h)&&(W=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas"),W.width!==_&&(W.width=_),W.height!==h&&(W.height=h));let o=W.getContext("2d");if(n instanceof ImageData?o.putImageData(n,0,0):o.drawImage(n,0,0,r,c,0,0,W.width,W.height),e.filter.enabled){if((!j||!H||W.width!==H.width||W.height!==H.height)&&(H=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(W.width,W.height):document.createElement("canvas"),H.width!==W.width&&(H.width=W.width),H.height!==W.height&&(H.height=W.height),j=D.ENV.flags.IS_BROWSER?new at({canvas:H}):null),!j)return{tensor:null,canvas:W};j.reset(),j.addFilter("brightness",e.filter.brightness),e.filter.contrast!==0&&j.addFilter("contrast",e.filter.contrast),e.filter.sharpness!==0&&j.addFilter("sharpen",e.filter.sharpness),e.filter.blur!==0&&j.addFilter("blur",e.filter.blur),e.filter.saturation!==0&&j.addFilter("saturation",e.filter.saturation),e.filter.hue!==0&&j.addFilter("hue",e.filter.hue),e.filter.negative&&j.addFilter("negative"),e.filter.sepia&&j.addFilter("sepia"),e.filter.vintage&&j.addFilter("brownie"),e.filter.sepia&&j.addFilter("sepia"),e.filter.kodachrome&&j.addFilter("kodachrome"),e.filter.technicolor&&j.addFilter("technicolor"),e.filter.polaroid&&j.addFilter("polaroid"),e.filter.pixelate!==0&&j.addFilter("pixelate",e.filter.pixelate),j.apply(W)}else H=W,j&&(j=null);let i;if(H.data){let s=[H.height,H.width,3];i=D.tensor3d(H.data,s,"int32")}else if(e.backend==="webgl"||H instanceof ImageData)i=D.browser.fromPixels(H);else{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas");s.width=_,s.height=h;let w=s.getContext("2d");w==null||w.drawImage(H,0,0);let f=w==null?void 0:w.getImageData(0,0,_,h);i=D.browser.fromPixels(f)}let y=i.toFloat();t=y.expandDims(0),i.dispose(),y.dispose()}let A=e.filter.return?H:null;return{tensor:t,canvas:A}}var E={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var Ce=` +`)}var Be=2048,W=null,H=null,j=null;function A0(n,e){let t;if(n instanceof D.Tensor)t=D.clone(n);else{let r=n.naturalWidth||n.videoWidth||n.width||n.shape&&n.shape[1]>0,c=n.naturalHeight||n.videoHeight||n.height||n.shape&&n.shape[2]>0,_=r,h=c;if(_>Be&&(_=Be,h=_*c/r),h>Be&&(h=Be,_=h*r/c),e.filter.width>0?_=e.filter.width:e.filter.height>0&&(_=r*(e.filter.height/c)),e.filter.height>0?h=e.filter.height:e.filter.width>0&&(h=c*(e.filter.width/r)),!_||!h)return g("Human: invalid input",n),{tensor:null,canvas:null};(!W||W.width!==_||W.height!==h)&&(W=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas"),W.width!==_&&(W.width=_),W.height!==h&&(W.height=h));let o=W.getContext("2d");if(n instanceof ImageData?o.putImageData(n,0,0):o.drawImage(n,0,0,r,c,0,0,W.width,W.height),e.filter.enabled){if((!j||!H||W.width!==H.width||W.height!==H.height)&&(H=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(W.width,W.height):document.createElement("canvas"),H.width!==W.width&&(H.width=W.width),H.height!==W.height&&(H.height=W.height),j=D.ENV.flags.IS_BROWSER?new wt({canvas:H}):null),!j)return{tensor:null,canvas:W};j.reset(),j.addFilter("brightness",e.filter.brightness),e.filter.contrast!==0&&j.addFilter("contrast",e.filter.contrast),e.filter.sharpness!==0&&j.addFilter("sharpen",e.filter.sharpness),e.filter.blur!==0&&j.addFilter("blur",e.filter.blur),e.filter.saturation!==0&&j.addFilter("saturation",e.filter.saturation),e.filter.hue!==0&&j.addFilter("hue",e.filter.hue),e.filter.negative&&j.addFilter("negative"),e.filter.sepia&&j.addFilter("sepia"),e.filter.vintage&&j.addFilter("brownie"),e.filter.sepia&&j.addFilter("sepia"),e.filter.kodachrome&&j.addFilter("kodachrome"),e.filter.technicolor&&j.addFilter("technicolor"),e.filter.polaroid&&j.addFilter("polaroid"),e.filter.pixelate!==0&&j.addFilter("pixelate",e.filter.pixelate),j.apply(W)}else H=W,j&&(j=null);let i;if(H.data){let s=[H.height,H.width,3];i=D.tensor3d(H.data,s,"int32")}else if(e.backend==="webgl"||H instanceof ImageData)i=D.browser.fromPixels(H);else{let s=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(_,h):document.createElement("canvas");s.width=_,s.height=h;let w=s.getContext("2d");w==null||w.drawImage(H,0,0);let f=w==null?void 0:w.getImageData(0,0,_,h);i=D.browser.fromPixels(f)}let y=i.toFloat();t=y.expandDims(0),i.dispose(),y.dispose()}let A=e.filter.return?H:null;return{tensor:t,canvas:A}}var R={backend:"webgl",wasmPath:"../assets/",debug:!0,async:!0,profile:!1,deallocate:!1,scoped:!1,videoOptimized:!0,warmup:"face",filter:{enabled:!0,width:0,height:0,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"../models/blazeface-back.json",rotation:!1,maxFaces:10,skipFrames:21,skipInitial:!1,minConfidence:.2,iouThreshold:.1,scoreThreshold:.2,return:!1},mesh:{enabled:!0,modelPath:"../models/facemesh.json"},iris:{enabled:!0,modelPath:"../models/iris.json"},age:{enabled:!0,modelPath:"../models/age.json",skipFrames:31},gender:{enabled:!0,minConfidence:.1,modelPath:"../models/gender.json",skipFrames:32},emotion:{enabled:!0,minConfidence:.1,skipFrames:33,modelPath:"../models/emotion.json"},embedding:{enabled:!1,modelPath:"../models/mobileface.json"}},body:{enabled:!0,modelPath:"../models/posenet.json",maxDetections:10,scoreThreshold:.3,nmsRadius:20},hand:{enabled:!0,rotation:!1,skipFrames:12,skipInitial:!1,minConfidence:.1,iouThreshold:.1,scoreThreshold:.5,maxHands:1,landmarks:!0,detector:{modelPath:"../models/handdetect.json"},skeleton:{modelPath:"../models/handskeleton.json"}}};var Ce=` /9j/4AAQSkZJRgABAQEAYABgAAD/4QBoRXhpZgAATU0AKgAAAAgABAEaAAUAAAABAAAAPgEbAAUA AAABAAAARgEoAAMAAAABAAIAAAExAAIAAAARAAAATgAAAAAAAABgAAAAAQAAAGAAAAABcGFpbnQu bmV0IDQuMi4xMwAA/9sAQwAGBAUGBQQGBgUGBwcGCAoQCgoJCQoUDg8MEBcUGBgXFBYWGh0lHxob @@ -731,5 +731,5 @@ AAAAAAJAAAAAAAAAAAAAABAJEAAAAAAAAAAAAAAAIEoBKAAAAAAAAAAAAAAABAlAAAAAAAIAAAAA BAkBAkBAkBAlACEgMZjdjbFW8bWrEx8YWANb6Fp+bfwab+vLDKMFK9qxH5L0bAr8OPRPKz2AY7J2 SbAjYZAI2E7AIEgIEgIEgMdkSy2NgY7MdlmyNoBXsxmFuyNgVTVjNV3KjlBRNTlXTVHKCrlIqt5T lBhEMohlFerLlBjEMohMVTEARDKCITsAk2AEgAAAkAAAAAAAAAAAAAAAAAAAAAAAASAAAAAAAAD/ -2Q==`;var A0={};U(A0,{author:()=>bt,browser:()=>ut,bugs:()=>gt,default:()=>On,description:()=>lt,devDependencies:()=>Rt,engines:()=>vt,homepage:()=>Tt,keywords:()=>Et,license:()=>Pt,main:()=>ft,module:()=>mt,name:()=>wt,repository:()=>zt,scripts:()=>Mt,sideEffects:()=>dt,types:()=>pt,version:()=>c0});var wt="@vladmandic/human",c0="1.1.4",lt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",dt=!1,ft="dist/human.node.js",mt="dist/human.esm.js",ut="dist/human.esm.js",pt="types/src/human.d.ts",bt="Vladimir Mandic ",gt={url:"https://github.com/vladmandic/human/issues"},Tt="https://vladmandic.github.io/human/demo/index.html",Pt="MIT",vt={node:">=12.0.0"},zt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Mt={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Et=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],Rt={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},On={name:wt,version:c0,description:lt,sideEffects:dt,main:ft,module:mt,browser:ut,types:pt,author:bt,bugs:gt,homepage:Tt,license:Pt,engines:vt,repository:zt,scripts:Mt,keywords:Et,devDependencies:Rt};var _0={};U(_0,{all:()=>In,body:()=>jt,canvas:()=>kn,drawOptions:()=>l,face:()=>Wt,gesture:()=>Nt,hand:()=>Ot});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function St(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function h0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){h0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function Wt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&St(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);h0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&h0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>E.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,St(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function kn(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function In(n,e){!e||!n||n instanceof HTMLCanvasElement&&(Wt(n,e.face),jt(n,e.body),Ot(n,e.hand),Nt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,i0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof o0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&u0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?S1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await S1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=o0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=o0,this.draw=_0,ne(this,De,A0),this.version=c0,this.config=be(E,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>r0(t,this.config),this.classes={facemesh:s0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?F1:e0,hand:U1},this.sysinfo=d0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?W0(e,t):0}enhance(e){return this.config.face.embedding.enabled?R1(e):null}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?s0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?$1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?Y1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?t0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await s0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await $1(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await Y1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await t0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=r0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?n0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await n0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...it(y),...st(o),...yt(i),...xt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); +2Q==`;var c0={};U(c0,{author:()=>gt,browser:()=>pt,bugs:()=>Tt,default:()=>kn,description:()=>dt,devDependencies:()=>St,engines:()=>zt,homepage:()=>Pt,keywords:()=>Rt,license:()=>vt,main:()=>mt,module:()=>ut,name:()=>lt,repository:()=>Mt,scripts:()=>Et,sideEffects:()=>ft,types:()=>bt,version:()=>_0});var lt="@vladmandic/human",_0="1.1.5",dt="Human: AI-powered 3D Face Detection, Face Embedding & Recognition, Body Pose Tracking, Hand & Finger Tracking, Iris Analysis, Age & Gender & Emotion Prediction & Gesture Recognition",ft=!1,mt="dist/human.node.js",ut="dist/human.esm.js",pt="dist/human.esm.js",bt="types/src/human.d.ts",gt="Vladimir Mandic ",Tt={url:"https://github.com/vladmandic/human/issues"},Pt="https://vladmandic.github.io/human/demo/index.html",vt="MIT",zt={node:">=12.0.0"},Mt={type:"git",url:"git+https://github.com/vladmandic/human.git"},Et={start:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught --no-deprecation demo/node.js",dev:"node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/serve.js",build:"rimraf dist/* types/* typedoc/* && node --trace-warnings --unhandled-rejections=strict --trace-uncaught server/build.js",lint:"eslint src server demo",test:"npm run lint && npm run start"},Rt=["tensorflowjs","face-detection","face-geometry","face-embedding","face-recognition","body-tracking","hand-tracking","iris-tracking","age-estimation","emotion-detection","gender-prediction","gesture-recognition","blazeface","blazepose"],St={"@microsoft/api-extractor":"^7.13.2","@tensorflow/tfjs":"^3.3.0","@tensorflow/tfjs-backend-cpu":"^3.3.0","@tensorflow/tfjs-backend-wasm":"^3.3.0","@tensorflow/tfjs-backend-webgl":"^3.3.0","@tensorflow/tfjs-converter":"^3.3.0","@tensorflow/tfjs-core":"^3.3.0","@tensorflow/tfjs-data":"^3.3.0","@tensorflow/tfjs-layers":"^3.3.0","@tensorflow/tfjs-node":"^3.3.0","@tensorflow/tfjs-node-gpu":"^3.3.0","@types/node":"^14.14.34","@typescript-eslint/eslint-plugin":"^4.17.0","@typescript-eslint/parser":"^4.17.0","@vladmandic/pilogger":"^0.2.14",chokidar:"^3.5.1",dayjs:"^1.10.4",esbuild:"^0.9.2",eslint:"^7.22.0","eslint-config-airbnb-base":"^14.2.1","eslint-plugin-import":"^2.22.1","eslint-plugin-json":"^2.1.2","eslint-plugin-node":"^11.1.0","eslint-plugin-promise":"^4.3.1",rimraf:"^3.0.2","simple-git":"^2.36.2",tslib:"^2.1.0",typedoc:"^0.20.32",typescript:"^4.2.3"},kn={name:lt,version:_0,description:dt,sideEffects:ft,main:mt,module:ut,browser:pt,types:bt,author:gt,bugs:Tt,homepage:Pt,license:vt,engines:zt,repository:Mt,scripts:Et,keywords:Rt,devDependencies:St};var h0={};U(h0,{all:()=>Zn,body:()=>Ot,canvas:()=>In,drawOptions:()=>l,face:()=>jt,gesture:()=>Wt,hand:()=>kt});var l={color:"rgba(173, 216, 230, 0.3)",labelColor:"rgba(173, 216, 230, 1)",shadowColor:"black",font:'small-caps 16px "Segoe UI"',lineHeight:20,lineWidth:6,pointSize:2,roundRect:28,drawPoints:!1,drawLabels:!0,drawBoxes:!0,drawPolygons:!0,fillPolygons:!1,useDepth:!0,useCurves:!1,bufferedOutput:!1};function Ke(n,e,t,A=null){n.fillStyle=l.useDepth&&A?`rgba(${127.5+2*(A||0)}, ${127.5-2*(A||0)}, 255, 0.3)`:l.color,n.beginPath(),n.arc(e,t,l.pointSize,0,2*Math.PI),n.fill()}function Nt(n,e,t,A,r){if(n.beginPath(),l.useCurves){let c=(e+e+A)/2,_=(t+t+r)/2;n.ellipse(c,_,A/2,r/2,0,0,2*Math.PI)}else n.lineWidth=l.lineWidth,n.moveTo(e+l.roundRect,t),n.lineTo(e+A-l.roundRect,t),n.quadraticCurveTo(e+A,t,e+A,t+l.roundRect),n.lineTo(e+A,t+r-l.roundRect),n.quadraticCurveTo(e+A,t+r,e+A-l.roundRect,t+r),n.lineTo(e+l.roundRect,t+r),n.quadraticCurveTo(e,t+r,e,t+r-l.roundRect),n.lineTo(e,t+l.roundRect),n.quadraticCurveTo(e,t,e+l.roundRect,t),n.closePath();n.stroke()}function o0(n,e=[]){if(!(e===void 0||e.length===0)){n.beginPath(),n.moveTo(e[0][0],e[0][1]);for(let t of e)n.strokeStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.fillStyle=l.useDepth&&t[2]?`rgba(${127.5+2*t[2]}, ${127.5-2*t[2]}, 255, 0.3)`:l.color,n.lineTo(t[0],parseInt(t[1]));n.stroke(),l.fillPolygons&&(n.closePath(),n.fill())}}function Ue(n,e=[]){if(!(e===void 0||e.length===0)){if(!l.useCurves||e.length<=2){o0(n,e);return}n.moveTo(e[0][0],e[0][1]);for(let t=0;t1&&_[1].length>0){let h=c[1]>0?`#${c[1]}`:"",o=`${c[0]} ${h}: ${_[1]}`;l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(o,8,2+A*l.lineHeight)),t.fillStyle=l.labelColor,t.fillText(o,6,0+A*l.lineHeight),A+=1}}}async function jt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t)for(let A of e){t.font=l.font,t.strokeStyle=l.color,t.fillStyle=l.color,l.drawBoxes&&Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]);let r=[];if(r.push(`face confidence: ${Math.trunc(100*A.confidence)}%`),A.genderConfidence&&r.push(`${A.gender||""} ${Math.trunc(100*A.genderConfidence)}% confident`),A.age&&r.push(`age: ${A.age||""}`),A.iris&&r.push(`iris distance: ${A.iris}`),A.emotion&&A.emotion.length>0){let c=A.emotion.map(_=>`${Math.trunc(100*_.score)}% ${_.emotion}`);r.push(c.join(" "))}A.angle&&A.angle.roll&&r.push(`roll: ${Math.trunc(100*A.angle.roll)/100} yaw:${Math.trunc(100*A.angle.yaw)/100} pitch:${Math.trunc(100*A.angle.pitch)/100}`),r.length===0&&r.push("face"),t.fillStyle=l.color;for(let c=r.length-1;c>=0;c--){let _=Math.max(A.box[0],0),h=c*l.lineHeight+A.box[1];l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText(r[c],_+5,h+16)),t.fillStyle=l.labelColor,t.fillText(r[c],_+4,h+15)}if(t.lineWidth=1,A.mesh){if(l.drawPoints)for(let c of A.mesh)Ke(t,c[0],c[1],c[2]);if(l.drawPolygons){t.lineWidth=1;for(let c=0;cA.mesh[h]);o0(t,_)}if(A.annotations&&A.annotations.leftEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.leftEyeIris[3][0]-A.annotations.leftEyeIris[1][0])/2,_=Math.abs(A.annotations.leftEyeIris[4][1]-A.annotations.leftEyeIris[2][1])/2;t.ellipse(A.annotations.leftEyeIris[0][0],A.annotations.leftEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}if(A.annotations&&A.annotations.rightEyeIris){t.strokeStyle=l.useDepth?"rgba(255, 200, 255, 0.3)":l.color,t.beginPath();let c=Math.abs(A.annotations.rightEyeIris[3][0]-A.annotations.rightEyeIris[1][0])/2,_=Math.abs(A.annotations.rightEyeIris[4][1]-A.annotations.rightEyeIris[2][1])/2;t.ellipse(A.annotations.rightEyeIris[0][0],A.annotations.rightEyeIris[0][1],c,_,0,0,2*Math.PI),t.stroke(),l.fillPolygons&&(t.fillStyle=l.useDepth?"rgba(255, 255, 200, 0.3)":l.color,t.fill())}}}}}var ie=[];async function Ot(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round";for(let A=0;A_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),c.length===5&&o0(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightHip"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightKnee"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightAnkle"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightHeel"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightFoot"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="leftShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="leftPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c),c.length=0,r=e[A].keypoints.find(_=>_.part==="rightShoulder"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightElbow"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightWrist"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),r=e[A].keypoints.find(_=>_.part==="rightPalm"),r&&r.score>R.body.scoreThreshold&&c.push([r.position.x,r.position.y]),Ue(t,c)}}}}async function kt(n,e){if(!e||!n||!(n instanceof HTMLCanvasElement))return;let t=n.getContext("2d");if(!!t){t.lineJoin="round",t.font=l.font;for(let A of e){if(l.drawBoxes&&(t.strokeStyle=l.color,t.fillStyle=l.color,Nt(t,A.box[0],A.box[1],A.box[2],A.box[3]),l.shadowColor&&l.shadowColor!==""&&(t.fillStyle=l.shadowColor,t.fillText("hand",A.box[0]+3,1+A.box[1]+l.lineHeight,A.box[2])),t.fillStyle=l.labelColor,t.fillText("hand",A.box[0]+2,0+A.box[1]+l.lineHeight,A.box[2]),t.stroke()),l.drawPoints&&A.landmarks&&A.landmarks.length>0)for(let r of A.landmarks)t.fillStyle=l.useDepth?`rgba(${127.5+2*r[2]}, ${127.5-2*r[2]}, 255, 0.5)`:l.color,Ke(t,r[0],r[1]);if(l.drawPolygons){let r=c=>{if(!!c)for(let _=0;_0?_-1:0][0],c[_>0?_-1:0][1]),t.lineTo(c[_][0],c[_][1]),t.stroke()};r(A.annotations.indexFinger),r(A.annotations.middleFinger),r(A.annotations.ringFinger),r(A.annotations.pinky),r(A.annotations.thumb)}}}}async function In(n,e){if(!n||!e||!(n instanceof HTMLCanvasElement)||!(e instanceof HTMLCanvasElement))return;let t=n.getContext("2d");t==null||t.drawImage(n,0,0)}async function Zn(n,e){!e||!n||n instanceof HTMLCanvasElement&&(jt(n,e.face),Ot(n,e.body),kt(n,e.hand),Wt(n,e.gesture))}var M=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function be(...n){let e=t=>t&&typeof t=="object";return n.reduce((t,A)=>(Object.keys(A||{}).forEach(r=>{let c=t[r],_=A[r];Array.isArray(c)&&Array.isArray(_)?t[r]=c.concat(..._):e(c)&&e(_)?t[r]=be(c,_):t[r]=_}),t),{})}var De,v,me,ge,Te,ae,k,Ge,Pe,Qe,ve,$e,e1,t1,x0=class{constructor(e={}){De.set(this,void 0);v.set(this,void 0);me.set(this,void 0);ge.set(this,void 0);Te.set(this,void 0);ae.set(this,void 0);k.set(this,(...e)=>{if(!m(this,ge))return;let t=this.tf.engine().state.numTensors,A=m(this,me);ne(this,me,t);let r=t-A;r!==0&&g(...e,r)});Ge.set(this,e=>{if(!m(this,Te))return null;if(!e)return"input is not defined";if(this.tf.ENV.flags.IS_NODE&&!(e instanceof s0.Tensor))return"input must be a tensor";try{this.tf.getBackend()}catch(t){return"backend not loaded"}return null});Pe.set(this,async(e=!1)=>{if(this.config.backend&&this.config.backend!==""&&e||this.tf.getBackend()!==this.config.backend){let t=M();if(this.state="backend",this.config.backend&&this.config.backend!==""){if(this.config.debug&&g("setting backend:",this.config.backend),this.config.backend==="wasm"){this.config.debug&&g("wasm path:",this.config.wasmPath),this.tf.setWasmPaths(this.config.wasmPath);let A=await this.tf.env().getAsync("WASM_HAS_SIMD_SUPPORT"),r=await this.tf.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT");this.config.debug&&g(`wasm execution: ${A?"SIMD":"no SIMD"} ${r?"multithreaded":"singlethreaded"}`),A||g("warning: wasm simd support is not enabled")}this.config.backend==="humangl"&&p0();try{await this.tf.setBackend(this.config.backend)}catch(A){g("error: cannot set backend:",this.config.backend,A)}}if(this.tf.enableProdMode(),this.tf.getBackend()==="webgl"){this.config.deallocate&&(g("changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:",this.config.deallocate),this.tf.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",this.config.deallocate?0:-1));let A=await this.tf.backend().getGPGPUContext().gl;this.config.debug&&g(`gl version:${A.getParameter(A.VERSION)} renderer:${A.getParameter(A.RENDERER)}`)}await this.tf.ready(),m(this,v).backend=Math.trunc(M()-t)}});Qe.set(this,e=>{if(!e||e.length<300)return{roll:null,yaw:null,pitch:null};let t=(c,_,h,o)=>Math.atan2(o-_,h-c),A=c=>Math.abs(c*180/Math.PI%360);return{roll:t(e[33][0],e[33][1],e[263][0],e[263][1]),yaw:t(e[33][0],e[33][2],e[263][0],e[263][2]),pitch:t(e[10][1],e[10][2],e[152][1],e[152][2])}});ve.set(this,async e=>{var i,y,s,w,f,d,x;let t,A,r,c,_,h=[];this.state="run:face",t=M();let o=await((i=this.models.face)==null?void 0:i.estimateFaces(e,this.config));if(m(this,v).face=Math.trunc(M()-t),!o)return[];for(let b of o){if(m(this,k).call(this,"Get Face"),!b.image||b.image.isDisposedInternal){g("Face object is disposed:",b.image);continue}let Z=m(this,Qe).call(this,b.mesh);m(this,k).call(this,"Start Age:"),this.config.async?A=this.config.face.age.enabled?d1(b.image,this.config):{}:(this.state="run:age",t=M(),A=this.config.face.age.enabled?await d1(b.image,this.config):{},m(this,v).age=Math.trunc(M()-t)),m(this,k).call(this,"Start Gender:"),this.config.async?r=this.config.face.gender.enabled?g1(b.image,this.config):{}:(this.state="run:gender",t=M(),r=this.config.face.gender.enabled?await g1(b.image,this.config):{},m(this,v).gender=Math.trunc(M()-t)),m(this,k).call(this,"Start Emotion:"),this.config.async?c=this.config.face.emotion.enabled?M1(b.image,this.config):{}:(this.state="run:emotion",t=M(),c=this.config.face.emotion.enabled?await M1(b.image,this.config):{},m(this,v).emotion=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),m(this,k).call(this,"Start Embedding:"),this.config.async?_=this.config.face.embedding.enabled?N1(b,this.config):[]:(this.state="run:embedding",t=M(),_=this.config.face.embedding.enabled?await N1(b,this.config):[],m(this,v).embedding=Math.trunc(M()-t)),m(this,k).call(this,"End Emotion:"),this.config.async&&([A,r,c,_]=await Promise.all([A,r,c,_])),m(this,k).call(this,"Finish Face:"),!this.config.face.iris.enabled&&((y=b==null?void 0:b.annotations)==null?void 0:y.leftEyeIris)&&((s=b==null?void 0:b.annotations)==null?void 0:s.rightEyeIris)&&(delete b.annotations.leftEyeIris,delete b.annotations.rightEyeIris);let V=((w=b.annotations)==null?void 0:w.leftEyeIris)&&((f=b.annotations)==null?void 0:f.rightEyeIris)?11.7*Math.max(Math.abs(b.annotations.leftEyeIris[3][0]-b.annotations.leftEyeIris[1][0]),Math.abs(b.annotations.rightEyeIris[4][1]-b.annotations.rightEyeIris[2][1])):0;h.push({...b,age:A.age,gender:r.gender,genderConfidence:r.confidence,emotion:c,embedding:_,iris:V!==0?Math.trunc(V)/100:0,angle:Z,tensor:this.config.face.detector.return?(d=b.image)==null?void 0:d.squeeze():null}),(x=b.image)==null||x.dispose(),m(this,k).call(this,"End Face")}return m(this,k).call(this,"End FaceMesh:"),this.config.async&&(m(this,v).face&&delete m(this,v).face,m(this,v).age&&delete m(this,v).age,m(this,v).gender&&delete m(this,v).gender,m(this,v).emotion&&delete m(this,v).emotion),h});$e.set(this,async()=>{let e=(r,c="application/octet-stream")=>fetch(`data:${c};base64,${r}`).then(_=>_.blob()),t,A;switch(this.config.warmup){case"face":t=await e(Ce);break;case"full":t=await e(Je);break;default:t=null}if(t){let r=await createImageBitmap(t);A=await this.detect(r,this.config),r.close()}return A});e1.set(this,async()=>new Promise(e=>{let t,A=0;switch(this.config.warmup){case"face":A=256,t="data:image/jpeg;base64,"+Ce;break;case"full":case"body":A=1200,t="data:image/jpeg;base64,"+Je;break;default:t=null}let r=new Image;r.onload=async()=>{let c=typeof OffscreenCanvas!="undefined"?new OffscreenCanvas(A,A):document.createElement("canvas");c.width=r.naturalWidth,c.height=r.naturalHeight;let _=c.getContext("2d");_==null||_.drawImage(r,0,0);let h=await this.detect(c,this.config);e(h)},t?r.src=t:e(null)}));t1.set(this,async()=>{let e=_=>Buffer.from(_,"base64"),t=this.config.warmup==="face"?e(Ce):e(Je),A=s0.node.decodeJpeg(t),r=A.expandDims(0);this.tf.dispose(A);let c=await this.detect(r,this.config);return this.tf.dispose(r),c});this.tf=s0,this.draw=h0,ne(this,De,c0),this.version=_0,this.config=be(R,e),this.state="idle",ne(this,me,0),ne(this,ge,!1),ne(this,Te,!1),ne(this,ae,!0),ne(this,v,{}),this.models={face:null,posenet:null,blazepose:null,handpose:null,iris:null,age:null,gender:null,emotion:null,embedding:null},this.image=t=>A0(t,this.config),this.classes={facemesh:i0,age:w1,gender:f1,emotion:T1,body:this.config.body.modelPath.includes("posenet")?q1:t0,hand:D1},this.sysinfo=f0()}profileData(){return this.config.profile?a1:{}}simmilarity(e,t){return this.config.face.embedding.enabled?R1(e,t):0}enhance(e){return S1(e)}match(e,t,A=0){return j0(e,t,A)}async load(e={}){this.state="load";let t=M();e&&(this.config=be(this.config,e)),m(this,ae)&&(this.config.debug&&g(`version: ${this.version}`),this.config.debug&&g(`tfjs version: ${this.tf.version_core}`),this.config.debug&&g("platform:",this.sysinfo.platform),this.config.debug&&g("agent:",this.sysinfo.agent),await m(this,Pe).call(this,!0),this.tf.ENV.flags.IS_BROWSER&&(this.config.debug&&g("configuration:",this.config),this.config.debug&&g("tf flags:",this.tf.ENV.flags))),this.config.async?[this.models.face,this.models.age,this.models.gender,this.models.emotion,this.models.embedding,this.models.handpose,this.models.posenet,this.models.blazepose]=await Promise.all([this.models.face||(this.config.face.enabled?i0.load(this.config):null),this.models.age||(this.config.face.enabled&&this.config.face.age.enabled?l1(this.config):null),this.models.gender||(this.config.face.enabled&&this.config.face.gender.enabled?b1(this.config):null),this.models.emotion||(this.config.face.enabled&&this.config.face.emotion.enabled?z1(this.config):null),this.models.embedding||(this.config.face.enabled&&this.config.face.embedding.enabled?E1(this.config):null),this.models.handpose||(this.config.hand.enabled?e0(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("posenet")?B1(this.config):null),this.models.posenet||(this.config.body.enabled&&this.config.body.modelPath.includes("blazepose")?n0(this.config):null)]):(this.config.face.enabled&&!this.models.face&&(this.models.face=await i0.load(this.config)),this.config.face.enabled&&this.config.face.age.enabled&&!this.models.age&&(this.models.age=await l1(this.config)),this.config.face.enabled&&this.config.face.gender.enabled&&!this.models.gender&&(this.models.gender=await b1(this.config)),this.config.face.enabled&&this.config.face.emotion.enabled&&!this.models.emotion&&(this.models.emotion=await z1(this.config)),this.config.face.enabled&&this.config.face.embedding.enabled&&!this.models.embedding&&(this.models.embedding=await E1(this.config)),this.config.hand.enabled&&!this.models.handpose&&(this.models.handpose=await e0(this.config)),this.config.body.enabled&&!this.models.posenet&&this.config.body.modelPath.includes("posenet")&&(this.models.posenet=await B1(this.config)),this.config.body.enabled&&!this.models.blazepose&&this.config.body.modelPath.includes("blazepose")&&(this.models.blazepose=await n0(this.config))),m(this,ae)&&(this.config.debug&&g("tf engine state:",this.tf.engine().state.numBytes,"bytes",this.tf.engine().state.numTensors,"tensors"),ne(this,ae,!1));let A=Math.trunc(M()-t);A>(m(this,v).load||0)&&(m(this,v).load=A)}async detect(e,t={}){return new Promise(async A=>{var w,f,d,x;this.state="config";let r;this.config=be(this.config,t),this.state="check";let c=m(this,Ge).call(this,e);c&&(g(c,e),A({error:c}));let _=M();await m(this,Pe).call(this),await this.load(),this.config.scoped&&this.tf.engine().startScope(),m(this,k).call(this,"Start Scope:"),r=M();let h=A0(e,this.config);if(!h||!h.tensor){g("could not convert input to tensor"),A({error:"could not convert input to tensor"});return}m(this,v).image=Math.trunc(M()-r),m(this,k).call(this,"Get Image:");let o,i,y;this.config.async?(y=this.config.face.enabled?m(this,ve).call(this,h.tensor):[],m(this,v).face&&delete m(this,v).face):(this.state="run:face",r=M(),y=this.config.face.enabled?await m(this,ve).call(this,h.tensor):[],m(this,v).face=Math.trunc(M()-r)),m(this,k).call(this,"Start Body:"),this.config.async?(this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?(w=this.models.posenet)==null?void 0:w.estimatePoses(h.tensor,this.config):[]:o=this.config.body.enabled?r0(h.tensor,this.config):[],m(this,v).body&&delete m(this,v).body):(this.state="run:body",r=M(),this.config.body.modelPath.includes("posenet")?o=this.config.body.enabled?await((f=this.models.posenet)==null?void 0:f.estimatePoses(h.tensor,this.config)):[]:o=this.config.body.enabled?await r0(h.tensor,this.config):[],m(this,v).body=Math.trunc(M()-r)),m(this,k).call(this,"End Body:"),m(this,k).call(this,"Start Hand:"),this.config.async?(i=this.config.hand.enabled?(d=this.models.handpose)==null?void 0:d.estimateHands(h.tensor,this.config):[],m(this,v).hand&&delete m(this,v).hand):(this.state="run:hand",r=M(),i=this.config.hand.enabled?await((x=this.models.handpose)==null?void 0:x.estimateHands(h.tensor,this.config)):[],m(this,v).hand=Math.trunc(M()-r)),m(this,k).call(this,"End Hand:"),this.config.async&&([y,o,i]=await Promise.all([y,o,i])),h.tensor.dispose(),this.config.scoped&&this.tf.engine().endScope(),m(this,k).call(this,"End Scope:");let s=[];this.config.gesture.enabled&&(r=M(),s=[...xt(y),...it(o),...at(i),...yt(y)],this.config.async?m(this,v).gesture&&delete m(this,v).gesture:m(this,v).gesture=Math.trunc(M()-r)),m(this,v).total=Math.trunc(M()-_),this.state="idle",A({face:y,body:o,hand:i,gesture:s,performance:m(this,v),canvas:h.canvas})})}async warmup(e={}){let t=M();e&&(this.config=be(this.config,e));let A=this.config.videoOptimized;this.config.videoOptimized=!1;let r;typeof createImageBitmap=="function"?r=await m(this,$e).call(this):typeof Image!="undefined"?r=await m(this,e1).call(this):r=await m(this,t1).call(this),this.config.videoOptimized=A;let c=M();return this.config.debug&&g("Warmup",this.config.warmup,Math.round(c-t),"ms",r),r}};De=new WeakMap,v=new WeakMap,me=new WeakMap,ge=new WeakMap,Te=new WeakMap,ae=new WeakMap,k=new WeakMap,Ge=new WeakMap,Pe=new WeakMap,Qe=new WeakMap,ve=new WeakMap,$e=new WeakMap,e1=new WeakMap,t1=new WeakMap;0&&(module.exports={Human}); //# sourceMappingURL=human.node.js.map diff --git a/dist/human.node.js.map b/dist/human.node.js.map index 443e8f82..2e3f70b4 100644 --- a/dist/human.node.js.map +++ b/dist/human.node.js.map @@ -1,7 +1,7 @@ { "version": 3, "sources": ["../src/tfjs/tf-node.ts", "../src/blazeface/facemesh.ts", "../src/posenet/keypoints.ts", "../src/human.ts", "../src/log.ts", "../src/sysinfo.ts", "../src/tfjs/backend.ts", "../src/blazeface/blazeface.ts", "../src/blazeface/facepipeline.ts", "../src/blazeface/box.ts", "../src/blazeface/util.ts", "../src/blazeface/coords.ts", "../src/age/age.ts", "../src/profile.ts", "../src/gender/gender.ts", "../src/emotion/emotion.ts", "../src/embedding/embedding.ts", "../src/posenet/posenet.ts", "../src/posenet/modelBase.ts", "../src/posenet/heapSort.ts", "../src/posenet/buildParts.ts", "../src/posenet/decodePose.ts", "../src/posenet/vectors.ts", "../src/posenet/decoders.ts", "../src/posenet/decodeMultiple.ts", "../src/posenet/util.ts", "../src/handpose/handpose.ts", "../src/handpose/handdetector.ts", "../src/handpose/box.ts", "../src/handpose/handpipeline.ts", "../src/handpose/util.ts", "../src/handpose/anchors.ts", "../src/blazepose/blazepose.ts", "../src/blazepose/annotations.ts", "../src/gesture/gesture.ts", "../src/image.ts", "../src/imagefx.js", "../config.ts", "../src/sample.ts", "../src/draw.ts"], - "sourcesContent": ["export * from '@tensorflow/tfjs-node';\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n enhance(input: Tensor): Tensor | null {\n if (this.config.face.embedding.enabled) return embedding.enhance(input);\n return null;\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2) {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function enhance(input) {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config) {\n if (!model) return null;\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return output;\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n image.dispose();\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], - "mappings": "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AmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kB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K,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,QLvviBd,GAAM,IAAmB,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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA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", + "sourcesContent": ["export * from '@tensorflow/tfjs-node';\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as blazeface from './blazeface';\nimport * as facepipeline from './facepipeline';\nimport * as coords from './coords';\n\nexport class MediaPipeFaceMesh {\n facePipeline: any;\n config: any;\n\n constructor(blazeFace, blazeMeshModel, irisModel, config) {\n this.facePipeline = new facepipeline.Pipeline(blazeFace, blazeMeshModel, irisModel);\n this.config = config;\n }\n\n async estimateFaces(input, config): Promise<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }[]> {\n const predictions = await this.facePipeline.predict(input, config);\n const results: Array<{ confidence, boxConfidence, faceConfidence, box, mesh, boxRaw, meshRaw, annotations, image }> = [];\n for (const prediction of (predictions || [])) {\n if (prediction.isDisposedInternal) continue; // guard against disposed tensors on long running operations such as pause in middle of processing\n const mesh = prediction.coords ? prediction.coords.arraySync() : [];\n const meshRaw = mesh.map((pt) => [\n pt[0] / input.shape[2],\n pt[1] / input.shape[1],\n pt[2] / this.facePipeline.meshSize,\n ]);\n const annotations = {};\n if (mesh && mesh.length > 0) {\n for (const key of Object.keys(coords.MESH_ANNOTATIONS)) annotations[key] = coords.MESH_ANNOTATIONS[key].map((index) => mesh[index]);\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0]),\n Math.max(0, prediction.box.startPoint[1]),\n Math.min(input.shape[1], prediction.box.endPoint[0]) - prediction.box.startPoint[0],\n Math.min(input.shape[2], prediction.box.endPoint[1]) - prediction.box.startPoint[1],\n ] : 0;\n const boxRaw = prediction.box ? [\n Math.max(0, prediction.box.startPoint[0] / input.shape[2]),\n Math.max(0, prediction.box.startPoint[1] / input.shape[1]),\n Math.min(input.shape[1], (prediction.box.endPoint[0]) - prediction.box.startPoint[0]) / input.shape[2],\n Math.min(input.shape[2], (prediction.box.endPoint[1]) - prediction.box.startPoint[1]) / input.shape[1],\n ] : [];\n results.push({\n confidence: prediction.faceConfidence || prediction.boxConfidence || 0,\n boxConfidence: prediction.boxConfidence,\n faceConfidence: prediction.faceConfidence,\n box,\n mesh,\n boxRaw,\n meshRaw,\n annotations,\n image: prediction.image ? prediction.image.clone() : null,\n });\n if (prediction.coords) prediction.coords.dispose();\n if (prediction.image) prediction.image.dispose();\n }\n return results;\n }\n}\n\nlet faceModels = [null, null, null];\nexport async function load(config) {\n // @ts-ignore\n faceModels = await Promise.all([\n (!faceModels[0] && config.face.enabled) ? blazeface.load(config) : null,\n (!faceModels[1] && config.face.mesh.enabled) ? tf.loadGraphModel(config.face.mesh.modelPath, { fromTFHub: config.face.mesh.modelPath.includes('tfhub.dev') }) : null,\n (!faceModels[2] && config.face.iris.enabled) ? tf.loadGraphModel(config.face.iris.modelPath, { fromTFHub: config.face.iris.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const faceMesh = new MediaPipeFaceMesh(faceModels[0], faceModels[1], faceModels[2], config);\n if (config.face.mesh.enabled && config.debug) log(`load model: ${config.face.mesh.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.face.iris.enabled && config.debug) log(`load model: ${config.face.iris.modelPath.match(/\\/(.*)\\./)[1]}`);\n return faceMesh;\n}\n\nexports.triangulation = coords.TRI468;\n", "export const partNames = [\n 'nose', 'leftEye', 'rightEye', 'leftEar', 'rightEar', 'leftShoulder',\n 'rightShoulder', 'leftElbow', 'rightElbow', 'leftWrist', 'rightWrist',\n 'leftHip', 'rightHip', 'leftKnee', 'rightKnee', 'leftAnkle', 'rightAnkle',\n];\n\nexport const NUM_KEYPOINTS = exports.partNames.length; // 17 keypoints\n\nexport const partIds = exports.partNames.reduce((result, jointName, i) => {\n result[jointName] = i;\n return result;\n}, {});\n\nconst connectedPartNames = [\n ['leftHip', 'leftShoulder'], ['leftElbow', 'leftShoulder'],\n ['leftElbow', 'leftWrist'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['rightHip', 'rightShoulder'],\n ['rightElbow', 'rightShoulder'], ['rightElbow', 'rightWrist'],\n ['rightHip', 'rightKnee'], ['rightKnee', 'rightAnkle'],\n ['leftShoulder', 'rightShoulder'], ['leftHip', 'rightHip'],\n];\nexport const connectedPartIndices = connectedPartNames.map(([jointNameA, jointNameB]) => ([partIds[jointNameA], partIds[jointNameB]]));\n\nexport const poseChain = [\n ['nose', 'leftEye'], ['leftEye', 'leftEar'], ['nose', 'rightEye'],\n ['rightEye', 'rightEar'], ['nose', 'leftShoulder'],\n ['leftShoulder', 'leftElbow'], ['leftElbow', 'leftWrist'],\n ['leftShoulder', 'leftHip'], ['leftHip', 'leftKnee'],\n ['leftKnee', 'leftAnkle'], ['nose', 'rightShoulder'],\n ['rightShoulder', 'rightElbow'], ['rightElbow', 'rightWrist'],\n ['rightShoulder', 'rightHip'], ['rightHip', 'rightKnee'],\n ['rightKnee', 'rightAnkle'],\n];\n\nexport const partChannels = [\n 'left_face',\n 'right_face',\n 'right_upper_leg_front',\n 'right_lower_leg_back',\n 'right_upper_leg_back',\n 'left_lower_leg_front',\n 'left_upper_leg_front',\n 'left_upper_leg_back',\n 'left_lower_leg_back',\n 'right_feet',\n 'right_lower_leg_front',\n 'left_feet',\n 'torso_front',\n 'torso_back',\n 'right_upper_arm_front',\n 'right_upper_arm_back',\n 'right_lower_arm_back',\n 'left_lower_arm_front',\n 'left_upper_arm_front',\n 'left_upper_arm_back',\n 'left_lower_arm_back',\n 'right_hand',\n 'right_lower_arm_front',\n 'left_hand',\n];\n", "import { log } from './log';\nimport * as sysinfo from './sysinfo';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as backend from './tfjs/backend';\nimport * as facemesh from './blazeface/facemesh';\nimport * as age from './age/age';\nimport * as gender from './gender/gender';\nimport * as emotion from './emotion/emotion';\nimport * as embedding from './embedding/embedding';\nimport * as posenet from './posenet/posenet';\nimport * as handpose from './handpose/handpose';\nimport * as blazepose from './blazepose/blazepose';\nimport * as gesture from './gesture/gesture';\nimport * as image from './image';\nimport * as profile from './profile';\nimport * as config from '../config';\nimport * as sample from './sample';\nimport * as app from '../package.json';\nimport * as draw from './draw';\n\n// helper function: gets elapsed time on both browser and nodejs\nconst now = () => {\n if (typeof performance !== 'undefined') return performance.now();\n return parseInt((Number(process.hrtime.bigint()) / 1000 / 1000).toString());\n};\n\ntype Tensor = {};\ntype Model = {};\nexport type Result = {\n face: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n }>,\n body: Array<{\n id: Number,\n part: String,\n position: { x: Number, y: Number, z: Number },\n score: Number,\n presence: Number }>,\n hand: Array<{\n confidence: Number,\n box: any,\n landmarks: any,\n annotations: any,\n }>,\n gesture: Array<{\n part: String,\n gesture: String,\n }>,\n performance: { any },\n canvas: OffscreenCanvas | HTMLCanvasElement,\n}\n\nexport type { default as Config } from '../config';\n\n// helper function: perform deep merge of multiple objects so it allows full inheriance with overrides\nfunction mergeDeep(...objects) {\n const isObject = (obj) => obj && typeof obj === 'object';\n return objects.reduce((prev, obj) => {\n Object.keys(obj || {}).forEach((key) => {\n const pVal = prev[key];\n const oVal = obj[key];\n if (Array.isArray(pVal) && Array.isArray(oVal)) prev[key] = pVal.concat(...oVal);\n else if (isObject(pVal) && isObject(oVal)) prev[key] = mergeDeep(pVal, oVal);\n else prev[key] = oVal;\n });\n return prev;\n }, {});\n}\n\nexport class Human {\n version: String;\n config: typeof config.default;\n state: String;\n image: { tensor: Tensor, canvas: OffscreenCanvas | HTMLCanvasElement };\n // classes\n tf: typeof tf;\n draw: { drawOptions?: typeof draw.drawOptions, gesture: Function, face: Function, body: Function, hand: Function, canvas: Function, all: Function };\n // models\n models: {\n face: facemesh.MediaPipeFaceMesh | null,\n posenet: posenet.PoseNet | null,\n blazepose: Model | null,\n handpose: handpose.HandPose | null,\n iris: Model | null,\n age: Model | null,\n gender: Model | null,\n emotion: Model | null,\n embedding: Model | null,\n };\n classes: {\n facemesh: typeof facemesh;\n age: typeof age;\n gender: typeof gender;\n emotion: typeof emotion;\n body: typeof posenet | typeof blazepose;\n hand: typeof handpose;\n };\n sysinfo: { platform: String, agent: String };\n #package: any;\n #perf: any;\n #numTensors: number;\n #analyzeMemoryLeaks: Boolean;\n #checkSanity: Boolean;\n #firstRun: Boolean;\n // definition end\n\n constructor(userConfig = {}) {\n this.tf = tf;\n this.draw = draw;\n this.#package = app;\n this.version = app.version;\n this.config = mergeDeep(config.default, userConfig);\n this.state = 'idle';\n this.#numTensors = 0;\n this.#analyzeMemoryLeaks = false;\n this.#checkSanity = false;\n this.#firstRun = true;\n this.#perf = {};\n // object that contains all initialized models\n this.models = {\n face: null,\n posenet: null,\n blazepose: null,\n handpose: null,\n iris: null,\n age: null,\n gender: null,\n emotion: null,\n embedding: null,\n };\n // export access to image processing\n // @ts-ignore\n this.image = (input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas) => image.process(input, this.config);\n // export raw access to underlying models\n this.classes = {\n facemesh,\n age,\n gender,\n emotion,\n body: this.config.body.modelPath.includes('posenet') ? posenet : blazepose,\n hand: handpose,\n };\n // include platform info\n this.sysinfo = sysinfo.info();\n }\n\n profileData(): { newBytes, newTensors, peakBytes, numKernelOps, timeKernelOps, slowestKernelOps, largestKernelOps } | {} {\n if (this.config.profile) return profile.data;\n return {};\n }\n\n // helper function: measure tensor leak\n /** @hidden */\n #analyze = (...msg) => {\n if (!this.#analyzeMemoryLeaks) return;\n const current = this.tf.engine().state.numTensors;\n const previous = this.#numTensors;\n this.#numTensors = current;\n const leaked = current - previous;\n if (leaked !== 0) log(...msg, leaked);\n }\n\n // quick sanity check on inputs\n /** @hidden */\n #sanity = (input): null | String => {\n if (!this.#checkSanity) return null;\n if (!input) return 'input is not defined';\n if (this.tf.ENV.flags.IS_NODE && !(input instanceof tf.Tensor)) return 'input must be a tensor';\n try {\n this.tf.getBackend();\n } catch {\n return 'backend not loaded';\n }\n return null;\n }\n\n simmilarity(embedding1: Array, embedding2: Array): Number {\n if (this.config.face.embedding.enabled) return embedding.simmilarity(embedding1, embedding2);\n return 0;\n }\n\n // eslint-disable-next-line class-methods-use-this\n enhance(input: Tensor): Tensor | null {\n return embedding.enhance(input);\n }\n\n // eslint-disable-next-line class-methods-use-this\n match(faceEmbedding: Array, db: Array<{ name: String, source: String | undefined, embedding: Array }>, threshold = 0): { name: String, source: String | undefined, simmilarity: Number, embedding: Array } {\n return embedding.match(faceEmbedding, db, threshold);\n }\n\n // preload models, not explicitly required as it's done automatically on first use\n async load(userConfig: Object = {}) {\n this.state = 'load';\n const timeStamp = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n\n if (this.#firstRun) {\n if (this.config.debug) log(`version: ${this.version}`);\n if (this.config.debug) log(`tfjs version: ${this.tf.version_core}`);\n if (this.config.debug) log('platform:', this.sysinfo.platform);\n if (this.config.debug) log('agent:', this.sysinfo.agent);\n\n await this.#checkBackend(true);\n if (this.tf.ENV.flags.IS_BROWSER) {\n if (this.config.debug) log('configuration:', this.config);\n if (this.config.debug) log('tf flags:', this.tf.ENV.flags);\n }\n }\n if (this.config.async) {\n [\n this.models.face,\n this.models.age,\n this.models.gender,\n this.models.emotion,\n this.models.embedding,\n this.models.handpose,\n this.models.posenet,\n this.models.blazepose,\n ] = await Promise.all([\n this.models.face || (this.config.face.enabled ? facemesh.load(this.config) : null),\n this.models.age || ((this.config.face.enabled && this.config.face.age.enabled) ? age.load(this.config) : null),\n this.models.gender || ((this.config.face.enabled && this.config.face.gender.enabled) ? gender.load(this.config) : null),\n this.models.emotion || ((this.config.face.enabled && this.config.face.emotion.enabled) ? emotion.load(this.config) : null),\n this.models.embedding || ((this.config.face.enabled && this.config.face.embedding.enabled) ? embedding.load(this.config) : null),\n this.models.handpose || (this.config.hand.enabled ? handpose.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('posenet') ? posenet.load(this.config) : null),\n this.models.posenet || (this.config.body.enabled && this.config.body.modelPath.includes('blazepose') ? blazepose.load(this.config) : null),\n ]);\n } else {\n if (this.config.face.enabled && !this.models.face) this.models.face = await facemesh.load(this.config);\n if (this.config.face.enabled && this.config.face.age.enabled && !this.models.age) this.models.age = await age.load(this.config);\n if (this.config.face.enabled && this.config.face.gender.enabled && !this.models.gender) this.models.gender = await gender.load(this.config);\n if (this.config.face.enabled && this.config.face.emotion.enabled && !this.models.emotion) this.models.emotion = await emotion.load(this.config);\n if (this.config.face.enabled && this.config.face.embedding.enabled && !this.models.embedding) this.models.embedding = await embedding.load(this.config);\n if (this.config.hand.enabled && !this.models.handpose) this.models.handpose = await handpose.load(this.config);\n if (this.config.body.enabled && !this.models.posenet && this.config.body.modelPath.includes('posenet')) this.models.posenet = await posenet.load(this.config);\n if (this.config.body.enabled && !this.models.blazepose && this.config.body.modelPath.includes('blazepose')) this.models.blazepose = await blazepose.load(this.config);\n }\n\n if (this.#firstRun) {\n if (this.config.debug) log('tf engine state:', this.tf.engine().state.numBytes, 'bytes', this.tf.engine().state.numTensors, 'tensors');\n this.#firstRun = false;\n }\n\n const current = Math.trunc(now() - timeStamp);\n if (current > (this.#perf.load || 0)) this.#perf.load = current;\n }\n\n // check if backend needs initialization if it changed\n /** @hidden */\n #checkBackend = async (force = false) => {\n if (this.config.backend && (this.config.backend !== '') && force || (this.tf.getBackend() !== this.config.backend)) {\n const timeStamp = now();\n this.state = 'backend';\n /* force backend reload\n if (this.config.backend in tf.engine().registry) {\n const backendFactory = tf.findBackendFactory(this.config.backend);\n tf.removeBackend(this.config.backend);\n tf.registerBackend(this.config.backend, backendFactory);\n } else {\n log('Backend not registred:', this.config.backend);\n }\n */\n\n if (this.config.backend && this.config.backend !== '') {\n if (this.config.debug) log('setting backend:', this.config.backend);\n\n if (this.config.backend === 'wasm') {\n if (this.config.debug) log('wasm path:', this.config.wasmPath);\n this.tf.setWasmPaths(this.config.wasmPath);\n const simd = await this.tf.env().getAsync('WASM_HAS_SIMD_SUPPORT');\n const mt = await this.tf.env().getAsync('WASM_HAS_MULTITHREAD_SUPPORT');\n if (this.config.debug) log(`wasm execution: ${simd ? 'SIMD' : 'no SIMD'} ${mt ? 'multithreaded' : 'singlethreaded'}`);\n if (!simd) log('warning: wasm simd support is not enabled');\n }\n\n if (this.config.backend === 'humangl') backend.register();\n try {\n await this.tf.setBackend(this.config.backend);\n } catch (err) {\n log('error: cannot set backend:', this.config.backend, err);\n }\n }\n this.tf.enableProdMode();\n /* debug mode is really too mcuh\n tf.enableDebugMode();\n */\n if (this.tf.getBackend() === 'webgl') {\n if (this.config.deallocate) {\n log('changing webgl: WEBGL_DELETE_TEXTURE_THRESHOLD:', this.config.deallocate);\n this.tf.ENV.set('WEBGL_DELETE_TEXTURE_THRESHOLD', this.config.deallocate ? 0 : -1);\n }\n // this.tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // this.tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n const gl = await this.tf.backend().getGPGPUContext().gl;\n if (this.config.debug) log(`gl version:${gl.getParameter(gl.VERSION)} renderer:${gl.getParameter(gl.RENDERER)}`);\n }\n await this.tf.ready();\n this.#perf.backend = Math.trunc(now() - timeStamp);\n }\n }\n\n /** @hidden */\n #calculateFaceAngle = (mesh): { roll: Number | null, yaw: Number | null, pitch: Number | null } => {\n if (!mesh || mesh.length < 300) return { roll: null, yaw: null, pitch: null };\n const radians = (a1, a2, b1, b2) => Math.atan2(b2 - a2, b1 - a1);\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars\n const degrees = (theta) => Math.abs(((theta * 180) / Math.PI) % 360);\n const angle = {\n // values are in radians in range of -pi/2 to pi/2 which is -90 to +90 degrees\n // value of 0 means center\n // roll is face lean left/right\n roll: radians(mesh[33][0], mesh[33][1], mesh[263][0], mesh[263][1]), // looking at x,y of outside corners of leftEye and rightEye\n // yaw is face turn left/right\n yaw: radians(mesh[33][0], mesh[33][2], mesh[263][0], mesh[263][2]), // looking at x,z of outside corners of leftEye and rightEye\n // pitch is face move up/down\n pitch: radians(mesh[10][1], mesh[10][2], mesh[152][1], mesh[152][2]), // looking at y,z of top and bottom points of the face\n };\n return angle;\n }\n\n /** @hidden */\n #detectFace = async (input): Promise => {\n // run facemesh, includes blazeface and iris\n // eslint-disable-next-line no-async-promise-executor\n let timeStamp;\n let ageRes;\n let genderRes;\n let emotionRes;\n let embeddingRes;\n const faceRes: Array<{\n confidence: Number,\n boxConfidence: Number,\n faceConfidence: Number,\n box: [Number, Number, Number, Number],\n mesh: Array<[Number, Number, Number]>\n meshRaw: Array<[Number, Number, Number]>\n boxRaw: [Number, Number, Number, Number],\n annotations: any,\n age: Number,\n gender: String,\n genderConfidence: Number,\n emotion: String,\n embedding: any,\n iris: Number,\n angle: { roll: Number | null, yaw: Number | null, pitch: Number | null },\n tensor: Tensor,\n }> = [];\n\n this.state = 'run:face';\n timeStamp = now();\n const faces = await this.models.face?.estimateFaces(input, this.config);\n this.#perf.face = Math.trunc(now() - timeStamp);\n if (!faces) return [];\n for (const face of faces) {\n this.#analyze('Get Face');\n\n // is something went wrong, skip the face\n if (!face.image || face.image.isDisposedInternal) {\n log('Face object is disposed:', face.image);\n continue;\n }\n\n const angle = this.#calculateFaceAngle(face.mesh);\n\n // run age, inherits face from blazeface\n this.#analyze('Start Age:');\n if (this.config.async) {\n ageRes = this.config.face.age.enabled ? age.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:age';\n timeStamp = now();\n ageRes = this.config.face.age.enabled ? await age.predict(face.image, this.config) : {};\n this.#perf.age = Math.trunc(now() - timeStamp);\n }\n\n // run gender, inherits face from blazeface\n this.#analyze('Start Gender:');\n if (this.config.async) {\n genderRes = this.config.face.gender.enabled ? gender.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:gender';\n timeStamp = now();\n genderRes = this.config.face.gender.enabled ? await gender.predict(face.image, this.config) : {};\n this.#perf.gender = Math.trunc(now() - timeStamp);\n }\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Emotion:');\n if (this.config.async) {\n emotionRes = this.config.face.emotion.enabled ? emotion.predict(face.image, this.config) : {};\n } else {\n this.state = 'run:emotion';\n timeStamp = now();\n emotionRes = this.config.face.emotion.enabled ? await emotion.predict(face.image, this.config) : {};\n this.#perf.emotion = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // run emotion, inherits face from blazeface\n this.#analyze('Start Embedding:');\n if (this.config.async) {\n embeddingRes = this.config.face.embedding.enabled ? embedding.predict(face, this.config) : [];\n } else {\n this.state = 'run:embedding';\n timeStamp = now();\n embeddingRes = this.config.face.embedding.enabled ? await embedding.predict(face, this.config) : [];\n this.#perf.embedding = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Emotion:');\n\n // if async wait for results\n if (this.config.async) {\n [ageRes, genderRes, emotionRes, embeddingRes] = await Promise.all([ageRes, genderRes, emotionRes, embeddingRes]);\n }\n\n this.#analyze('Finish Face:');\n\n // calculate iris distance\n // iris: array[ center, left, top, right, bottom]\n if (!this.config.face.iris.enabled && face?.annotations?.leftEyeIris && face?.annotations?.rightEyeIris) {\n delete face.annotations.leftEyeIris;\n delete face.annotations.rightEyeIris;\n }\n const irisSize = (face.annotations?.leftEyeIris && face.annotations?.rightEyeIris)\n /* average human iris size is 11.7mm */\n ? 11.7 * Math.max(Math.abs(face.annotations.leftEyeIris[3][0] - face.annotations.leftEyeIris[1][0]), Math.abs(face.annotations.rightEyeIris[4][1] - face.annotations.rightEyeIris[2][1]))\n : 0;\n\n // combine results\n faceRes.push({\n ...face,\n age: ageRes.age,\n gender: genderRes.gender,\n genderConfidence: genderRes.confidence,\n emotion: emotionRes,\n embedding: embeddingRes,\n iris: (irisSize !== 0) ? Math.trunc(irisSize) / 100 : 0,\n angle,\n tensor: this.config.face.detector.return ? face.image?.squeeze() : null,\n });\n // dispose original face tensor\n face.image?.dispose();\n\n this.#analyze('End Face');\n }\n this.#analyze('End FaceMesh:');\n if (this.config.async) {\n if (this.#perf.face) delete this.#perf.face;\n if (this.#perf.age) delete this.#perf.age;\n if (this.#perf.gender) delete this.#perf.gender;\n if (this.#perf.emotion) delete this.#perf.emotion;\n }\n return faceRes;\n }\n\n // main detect function\n async detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig: Object = {}): Promise {\n // detection happens inside a promise\n return new Promise(async (resolve) => {\n this.state = 'config';\n let timeStamp;\n\n // update configuration\n this.config = mergeDeep(this.config, userConfig);\n\n // sanity checks\n this.state = 'check';\n const error = this.#sanity(input);\n if (error) {\n log(error, input);\n resolve({ error });\n }\n\n const timeStart = now();\n\n // configure backend\n await this.#checkBackend();\n\n // load models if enabled\n await this.load();\n\n if (this.config.scoped) this.tf.engine().startScope();\n this.#analyze('Start Scope:');\n\n timeStamp = now();\n const process = image.process(input, this.config);\n if (!process || !process.tensor) {\n log('could not convert input to tensor');\n resolve({ error: 'could not convert input to tensor' });\n return;\n }\n this.#perf.image = Math.trunc(now() - timeStamp);\n this.#analyze('Get Image:');\n\n // prepare where to store model results\n let bodyRes;\n let handRes;\n let faceRes;\n\n // run face detection followed by all models that rely on face bounding box: face mesh, age, gender, emotion\n if (this.config.async) {\n faceRes = this.config.face.enabled ? this.#detectFace(process.tensor) : [];\n if (this.#perf.face) delete this.#perf.face;\n } else {\n this.state = 'run:face';\n timeStamp = now();\n faceRes = this.config.face.enabled ? await this.#detectFace(process.tensor) : [];\n this.#perf.face = Math.trunc(now() - timeStamp);\n }\n\n // run body: can be posenet or blazepose\n this.#analyze('Start Body:');\n if (this.config.async) {\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? blazepose.predict(process.tensor, this.config) : [];\n if (this.#perf.body) delete this.#perf.body;\n } else {\n this.state = 'run:body';\n timeStamp = now();\n if (this.config.body.modelPath.includes('posenet')) bodyRes = this.config.body.enabled ? await this.models.posenet?.estimatePoses(process.tensor, this.config) : [];\n else bodyRes = this.config.body.enabled ? await blazepose.predict(process.tensor, this.config) : [];\n this.#perf.body = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Body:');\n\n // run handpose\n this.#analyze('Start Hand:');\n if (this.config.async) {\n handRes = this.config.hand.enabled ? this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n if (this.#perf.hand) delete this.#perf.hand;\n } else {\n this.state = 'run:hand';\n timeStamp = now();\n handRes = this.config.hand.enabled ? await this.models.handpose?.estimateHands(process.tensor, this.config) : [];\n this.#perf.hand = Math.trunc(now() - timeStamp);\n }\n this.#analyze('End Hand:');\n\n // if async wait for results\n if (this.config.async) {\n [faceRes, bodyRes, handRes] = await Promise.all([faceRes, bodyRes, handRes]);\n }\n process.tensor.dispose();\n\n if (this.config.scoped) this.tf.engine().endScope();\n this.#analyze('End Scope:');\n\n let gestureRes = [];\n if (this.config.gesture.enabled) {\n timeStamp = now();\n // @ts-ignore\n gestureRes = [...gesture.face(faceRes), ...gesture.body(bodyRes), ...gesture.hand(handRes), ...gesture.iris(faceRes)];\n if (!this.config.async) this.#perf.gesture = Math.trunc(now() - timeStamp);\n else if (this.#perf.gesture) delete this.#perf.gesture;\n }\n\n this.#perf.total = Math.trunc(now() - timeStart);\n this.state = 'idle';\n resolve({ face: faceRes, body: bodyRes, hand: handRes, gesture: gestureRes, performance: this.#perf, canvas: process.canvas });\n });\n }\n\n /** @hidden */\n #warmupBitmap = async () => {\n const b64toBlob = (base64, type = 'application/octet-stream') => fetch(`data:${type};base64,${base64}`).then((res) => res.blob());\n let blob;\n let res;\n switch (this.config.warmup) {\n case 'face': blob = await b64toBlob(sample.face); break;\n case 'full': blob = await b64toBlob(sample.body); break;\n default: blob = null;\n }\n if (blob) {\n const bitmap = await createImageBitmap(blob);\n res = await this.detect(bitmap, this.config);\n bitmap.close();\n }\n return res;\n }\n\n /** @hidden */\n #warmupCanvas = async () => new Promise((resolve) => {\n let src;\n let size = 0;\n switch (this.config.warmup) {\n case 'face':\n size = 256;\n src = 'data:image/jpeg;base64,' + sample.face;\n break;\n case 'full':\n case 'body':\n size = 1200;\n src = 'data:image/jpeg;base64,' + sample.body;\n break;\n default:\n src = null;\n }\n // src = encodeURI('../assets/human-sample-upper.jpg');\n const img = new Image();\n img.onload = async () => {\n const canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(size, size) : document.createElement('canvas');\n canvas.width = img.naturalWidth;\n canvas.height = img.naturalHeight;\n const ctx = canvas.getContext('2d');\n ctx?.drawImage(img, 0, 0);\n // const data = ctx?.getImageData(0, 0, canvas.height, canvas.width);\n const res = await this.detect(canvas, this.config);\n resolve(res);\n };\n if (src) img.src = src;\n else resolve(null);\n });\n\n /** @hidden */\n #warmupNode = async () => {\n const atob = (str) => Buffer.from(str, 'base64');\n const img = this.config.warmup === 'face' ? atob(sample.face) : atob(sample.body);\n // @ts-ignore\n const data = tf.node.decodeJpeg(img); // tf.node is only defined when compiling for nodejs\n const expanded = data.expandDims(0);\n this.tf.dispose(data);\n // log('Input:', expanded);\n const res = await this.detect(expanded, this.config);\n this.tf.dispose(expanded);\n return res;\n }\n\n async warmup(userConfig: Object = {}): Promise {\n const t0 = now();\n if (userConfig) this.config = mergeDeep(this.config, userConfig);\n const video = this.config.videoOptimized;\n this.config.videoOptimized = false;\n let res;\n if (typeof createImageBitmap === 'function') res = await this.#warmupBitmap();\n else if (typeof Image !== 'undefined') res = await this.#warmupCanvas();\n else res = await this.#warmupNode();\n this.config.videoOptimized = video;\n const t1 = now();\n if (this.config.debug) log('Warmup', this.config.warmup, Math.round(t1 - t0), 'ms', res);\n return res;\n }\n}\n\nexport { Human as default };\n", "// helper function: wrapper around console output\nexport function log(...msg) {\n const dt = new Date();\n const ts = `${dt.getHours().toString().padStart(2, '0')}:${dt.getMinutes().toString().padStart(2, '0')}:${dt.getSeconds().toString().padStart(2, '0')}.${dt.getMilliseconds().toString().padStart(3, '0')}`;\n // eslint-disable-next-line no-console\n if (msg) console.log(ts, 'Human:', ...msg);\n}\n", "export function info() {\n let platform;\n let agent;\n if (typeof navigator !== 'undefined') {\n const raw = navigator.userAgent.match(/\\(([^()]+)\\)/g);\n if (raw && raw[0]) {\n // @ts-ignore\n platform = raw[0].match(/\\(([^()]+)\\)/g)[0].replace(/\\(|\\)/g, '');\n agent = navigator.userAgent.replace(raw[0], '');\n if (platform[1]) agent = agent.replace(raw[1], '');\n agent = agent.replace(/ /g, ' ');\n }\n } else if (typeof process !== 'undefined') {\n platform = `${process.platform} ${process.arch}`;\n agent = `NodeJS ${process.version}`;\n }\n return { platform, agent };\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nexport const config = {\n name: 'humangl',\n priority: 99,\n canvas: null,\n gl: null,\n width: 1024,\n height: 1024,\n webGLattr: { // https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2\n alpha: false,\n antialias: false,\n premultipliedAlpha: false,\n preserveDrawingBuffer: false,\n depth: false,\n stencil: false,\n failIfMajorPerformanceCaveat: false,\n desynchronized: true,\n },\n};\n\nexport function register() {\n if (!tf.findBackend(config.name)) {\n log('backend registration:', config.name);\n try {\n // @ts-ignore\n config.canvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(config.width, config.height) : document.createElement('canvas');\n } catch (err) {\n log('error: cannot create canvas:', err);\n return;\n }\n try {\n // @ts-ignore\n config.gl = config.canvas.getContext('webgl2', config.webGLattr);\n } catch (err) {\n log('error: cannot get WebGL2 context:', err);\n return;\n }\n try {\n tf.setWebGLContext(2, config.gl);\n } catch (err) {\n log('error: cannot set WebGL2 context:', err);\n return;\n }\n try {\n const ctx = new tf.GPGPUContext(config.gl);\n tf.registerBackend(config.name, () => new tf.MathBackendWebGL(ctx), config.priority);\n } catch (err) {\n log('error: cannot register WebGL backend:', err);\n return;\n }\n try {\n const kernels = tf.getKernelsForBackend('webgl');\n kernels.forEach((kernelConfig) => {\n const newKernelConfig = { ...kernelConfig, backendName: config.name };\n tf.registerKernel(newKernelConfig);\n });\n } catch (err) {\n log('error: cannot update WebGL backend registration:', err);\n return;\n }\n try {\n tf.ENV.set('WEBGL_VERSION', 2);\n // @ts-ignore\n // tf.ENV.set('WEBGL_MAX_TEXTURE_SIZE', config.gl.getParameter(config.gl.MAX_TEXTURE_SIZE));\n // tf.ENV.set('WEBGL_FORCE_F16_TEXTURES', true);\n // tf.ENV.set('WEBGL_PACK_DEPTHWISECONV', true);\n } catch (err) {\n log('error: cannot set WebGL backend flags:', err);\n return;\n }\n log('backend registered:', config.name);\n }\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\n\nconst NUM_LANDMARKS = 6;\n\nfunction generateAnchors(inputSize) {\n const spec = { strides: [inputSize / 16, inputSize / 8], anchors: [2, 6] };\n const anchors: Array<[number, number]> = [];\n for (let i = 0; i < spec.strides.length; i++) {\n const stride = spec.strides[i];\n const gridRows = Math.floor((inputSize + stride - 1) / stride);\n const gridCols = Math.floor((inputSize + stride - 1) / stride);\n const anchorsNum = spec.anchors[i];\n for (let gridY = 0; gridY < gridRows; gridY++) {\n const anchorY = stride * (gridY + 0.5);\n for (let gridX = 0; gridX < gridCols; gridX++) {\n const anchorX = stride * (gridX + 0.5);\n for (let n = 0; n < anchorsNum; n++) {\n anchors.push([anchorX, anchorY]);\n }\n }\n }\n }\n return anchors;\n}\n\nexport const disposeBox = (box) => {\n box.startEndTensor.dispose();\n box.startPoint.dispose();\n box.endPoint.dispose();\n};\n\nconst createBox = (startEndTensor) => ({\n startEndTensor,\n startPoint: tf.slice(startEndTensor, [0, 0], [-1, 2]),\n endPoint: tf.slice(startEndTensor, [0, 2], [-1, 2]),\n});\n\nfunction decodeBounds(boxOutputs, anchors, inputSize) {\n const boxStarts = tf.slice(boxOutputs, [0, 1], [-1, 2]);\n const centers = tf.add(boxStarts, anchors);\n const boxSizes = tf.slice(boxOutputs, [0, 3], [-1, 2]);\n const boxSizesNormalized = tf.div(boxSizes, inputSize);\n const centersNormalized = tf.div(centers, inputSize);\n const halfBoxSize = tf.div(boxSizesNormalized, 2);\n const starts = tf.sub(centersNormalized, halfBoxSize);\n const ends = tf.add(centersNormalized, halfBoxSize);\n const startNormalized = tf.mul(starts, inputSize);\n const endNormalized = tf.mul(ends, inputSize);\n const concatAxis = 1;\n return tf.concat2d([startNormalized, endNormalized], concatAxis);\n}\n\nexport class BlazeFaceModel {\n model: any;\n anchorsData: any;\n anchors: any;\n inputSize: number;\n config: any;\n\n constructor(model, config) {\n this.model = model;\n this.anchorsData = generateAnchors(model.inputs[0].shape[1]);\n this.anchors = tf.tensor2d(this.anchorsData);\n this.inputSize = model.inputs[0].shape[2];\n this.config = config;\n }\n\n async getBoundingBoxes(inputImage) {\n // sanity check on input\n if ((!inputImage) || (inputImage.isDisposedInternal) || (inputImage.shape.length !== 4) || (inputImage.shape[1] < 1) || (inputImage.shape[2] < 1)) return null;\n const [batch, boxes, scores] = tf.tidy(() => {\n const resizedImage = inputImage.resizeBilinear([this.inputSize, this.inputSize]);\n // const normalizedImage = tf.mul(tf.sub(resizedImage.div(255), 0.5), 2);\n const normalizedImage = resizedImage.div(127.5).sub(0.5);\n const batchedPrediction = this.model.predict(normalizedImage);\n let batchOut;\n // are we using tfhub or pinto converted model?\n if (Array.isArray(batchedPrediction)) {\n const sorted = batchedPrediction.sort((a, b) => a.size - b.size);\n const concat384 = tf.concat([sorted[0], sorted[2]], 2); // dim: 384, 1 + 16\n const concat512 = tf.concat([sorted[1], sorted[3]], 2); // dim: 512, 1 + 16\n const concat = tf.concat([concat512, concat384], 1);\n batchOut = concat.squeeze(0);\n } else {\n batchOut = batchedPrediction.squeeze(); // when using tfhub model\n }\n const boxesOut = decodeBounds(batchOut, this.anchors, [this.inputSize, this.inputSize]);\n const logits = tf.slice(batchOut, [0, 0], [-1, 1]);\n const scoresOut = tf.sigmoid(logits).squeeze();\n return [batchOut, boxesOut, scoresOut];\n });\n const boxIndicesTensor = await tf.image.nonMaxSuppressionAsync(boxes, scores, this.config.face.detector.maxFaces, this.config.face.detector.iouThreshold, this.config.face.detector.scoreThreshold);\n const boxIndices = boxIndicesTensor.arraySync();\n boxIndicesTensor.dispose();\n const boundingBoxesMap = boxIndices.map((boxIndex) => tf.slice(boxes, [boxIndex, 0], [1, -1]));\n const boundingBoxes = boundingBoxesMap.map((boundingBox) => {\n const vals = boundingBox.arraySync();\n boundingBox.dispose();\n return vals;\n });\n\n const scoresVal = scores.dataSync();\n const annotatedBoxes: Array<{ box: any, landmarks: any, anchor: any, confidence: number }> = [];\n for (let i = 0; i < boundingBoxes.length; i++) {\n const boxIndex = boxIndices[i];\n const confidence = scoresVal[boxIndex];\n if (confidence > this.config.face.detector.minConfidence) {\n const box = createBox(boundingBoxes[i]);\n const anchor = this.anchorsData[boxIndex];\n const landmarks = tf.tidy(() => tf.slice(batch, [boxIndex, NUM_LANDMARKS - 1], [1, -1]).squeeze().reshape([NUM_LANDMARKS, -1]));\n annotatedBoxes.push({ box, landmarks, anchor, confidence });\n }\n }\n batch.dispose();\n boxes.dispose();\n scores.dispose();\n return {\n boxes: annotatedBoxes,\n scaleFactor: [inputImage.shape[2] / this.inputSize, inputImage.shape[1] / this.inputSize],\n };\n }\n}\n\nexport async function load(config) {\n const blazeface = await tf.loadGraphModel(config.face.detector.modelPath, { fromTFHub: config.face.detector.modelPath.includes('tfhub.dev') });\n const model = new BlazeFaceModel(blazeface, config);\n if (config.debug) log(`load model: ${config.face.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n return model;\n}\n", "/* eslint-disable class-methods-use-this */\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as bounding from './box';\nimport * as util from './util';\nimport * as coords from './coords';\n\nconst leftOutline = coords.MESH_ANNOTATIONS['leftEyeLower0'];\nconst rightOutline = coords.MESH_ANNOTATIONS['rightEyeLower0'];\n\nconst eyeLandmarks = {\n leftBounds: [leftOutline[0], leftOutline[leftOutline.length - 1]],\n rightBounds: [rightOutline[0], rightOutline[rightOutline.length - 1]],\n};\n\nconst meshLandmarks = {\n count: 468,\n mouth: 13,\n symmetryLine: [13, coords.MESH_ANNOTATIONS['midwayBetweenEyes'][0]],\n};\n\nconst blazeFaceLandmarks = {\n leftEye: 0,\n rightEye: 1,\n nose: 2,\n mouth: 3,\n leftEar: 4,\n rightEar: 5,\n symmetryLine: [3, 2],\n};\n\nconst irisLandmarks = {\n upperCenter: 3,\n lowerCenter: 4,\n index: 71,\n numCoordinates: 76,\n};\n\n// Replace the raw coordinates returned by facemesh with refined iris model coordinates\n// Update the z coordinate to be an average of the original and the new.\nfunction replaceRawCoordinates(rawCoords, newCoords, prefix, keys) {\n for (let i = 0; i < coords.MESH_TO_IRIS_INDICES_MAP.length; i++) {\n const { key, indices } = coords.MESH_TO_IRIS_INDICES_MAP[i];\n const originalIndices = coords.MESH_ANNOTATIONS[`${prefix}${key}`];\n // @ts-ignore\n if (!keys || keys.includes(key)) {\n for (let j = 0; j < indices.length; j++) {\n const index = indices[j];\n rawCoords[originalIndices[j]] = [\n newCoords[index][0], newCoords[index][1],\n (newCoords[index][2] + rawCoords[originalIndices[j]][2]) / 2,\n ];\n }\n }\n }\n}\n// The Pipeline coordinates between the bounding box and skeleton models.\nexport class Pipeline {\n storedBoxes: any;\n boundingBoxDetector: any;\n meshDetector: any;\n irisModel: any;\n boxSize: number;\n meshSize: number;\n irisSize: number;\n irisEnlarge: number;\n skipped: number;\n detectedFaces: number;\n\n constructor(boundingBoxDetector, meshDetector, irisModel) {\n // An array of facial bounding boxes.\n this.storedBoxes = [];\n this.boundingBoxDetector = boundingBoxDetector;\n this.meshDetector = meshDetector;\n this.irisModel = irisModel;\n this.boxSize = boundingBoxDetector?.model?.inputs[0].shape[2] || 0;\n this.meshSize = meshDetector?.inputs[0].shape[2] || boundingBoxDetector?.model?.inputs[0].shape[2];\n this.irisSize = irisModel?.inputs[0].shape[1] || 0;\n this.irisEnlarge = 2.3;\n this.skipped = 0;\n this.detectedFaces = 0;\n }\n\n transformRawCoords(rawCoords, box, angle, rotationMatrix) {\n const boxSize = bounding.getBoxSize({ startPoint: box.startPoint, endPoint: box.endPoint });\n const coordsScaled = rawCoords.map((coord) => ([\n boxSize[0] / this.meshSize * (coord[0] - this.meshSize / 2),\n boxSize[1] / this.meshSize * (coord[1] - this.meshSize / 2),\n coord[2],\n ]));\n const coordsRotationMatrix = (angle !== 0) ? util.buildRotationMatrix(angle, [0, 0]) : util.IDENTITY_MATRIX;\n const coordsRotated = (angle !== 0) ? coordsScaled.map((coord) => ([...util.rotatePoint(coord, coordsRotationMatrix), coord[2]])) : coordsScaled;\n const inverseRotationMatrix = (angle !== 0) ? util.invertTransformMatrix(rotationMatrix) : util.IDENTITY_MATRIX;\n const boxCenter = [...bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint }), 1];\n return coordsRotated.map((coord) => ([\n coord[0] + util.dot(boxCenter, inverseRotationMatrix[0]),\n coord[1] + util.dot(boxCenter, inverseRotationMatrix[1]),\n coord[2],\n ]));\n }\n\n getLeftToRightEyeDepthDifference(rawCoords) {\n const leftEyeZ = rawCoords[eyeLandmarks.leftBounds[0]][2];\n const rightEyeZ = rawCoords[eyeLandmarks.rightBounds[0]][2];\n return leftEyeZ - rightEyeZ;\n }\n\n // Returns a box describing a cropped region around the eye fit for passing to the iris model.\n getEyeBox(rawCoords, face, eyeInnerCornerIndex, eyeOuterCornerIndex, flip = false) {\n const box = bounding.squarifyBox(bounding.enlargeBox(this.calculateLandmarksBoundingBox([rawCoords[eyeInnerCornerIndex], rawCoords[eyeOuterCornerIndex]]), this.irisEnlarge));\n const boxSize = bounding.getBoxSize(box);\n let crop = tf.image.cropAndResize(face, [[\n box.startPoint[1] / this.meshSize,\n box.startPoint[0] / this.meshSize, box.endPoint[1] / this.meshSize,\n box.endPoint[0] / this.meshSize,\n ]], [0], [this.irisSize, this.irisSize]);\n if (flip && tf.ENV.flags.IS_BROWSER) {\n crop = tf.image.flipLeftRight(crop); // flipLeftRight is not defined for tfjs-node\n }\n return { box, boxSize, crop };\n }\n\n // Given a cropped image of an eye, returns the coordinates of the contours surrounding the eye and the iris.\n getEyeCoords(eyeData, eyeBox, eyeBoxSize, flip = false) {\n const eyeRawCoords: Array = [];\n for (let i = 0; i < irisLandmarks.numCoordinates; i++) {\n const x = eyeData[i * 3];\n const y = eyeData[i * 3 + 1];\n const z = eyeData[i * 3 + 2];\n eyeRawCoords.push([\n (flip ? (1 - (x / this.irisSize)) : (x / this.irisSize)) * eyeBoxSize[0] + eyeBox.startPoint[0],\n (y / this.irisSize) * eyeBoxSize[1] + eyeBox.startPoint[1], z,\n ]);\n }\n return { rawCoords: eyeRawCoords, iris: eyeRawCoords.slice(irisLandmarks.index) };\n }\n\n // The z-coordinates returned for the iris are unreliable, so we take the z values from the surrounding keypoints.\n getAdjustedIrisCoords(rawCoords, irisCoords, direction) {\n const upperCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeUpper0`][irisLandmarks.upperCenter]][2];\n const lowerCenterZ = rawCoords[coords.MESH_ANNOTATIONS[`${direction}EyeLower0`][irisLandmarks.lowerCenter]][2];\n const averageZ = (upperCenterZ + lowerCenterZ) / 2;\n // Iris indices: 0: center | 1: right | 2: above | 3: left | 4: below\n return irisCoords.map((coord, i) => {\n let z = averageZ;\n if (i === 2) {\n z = upperCenterZ;\n } else if (i === 4) {\n z = lowerCenterZ;\n }\n return [coord[0], coord[1], z];\n });\n }\n\n async predict(input, config) {\n let useFreshBox = false;\n // run new detector every skipFrames unless we only want box to start with\n let detector;\n if ((this.skipped === 0) || (this.skipped > config.face.detector.skipFrames) || !config.face.mesh.enabled || !config.videoOptimized) {\n detector = await this.boundingBoxDetector.getBoundingBoxes(input);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (detector && detector.boxes && (!config.face.mesh.enabled || (detector.boxes.length !== this.detectedFaces) && (this.detectedFaces !== config.face.detector.maxFaces))) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n for (const possible of detector.boxes) {\n this.storedBoxes.push({ startPoint: possible.box.startPoint.dataSync(), endPoint: possible.box.endPoint.dataSync(), landmarks: possible.landmarks, confidence: possible.confidence });\n }\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n\n if (config.face.detector.skipInitial && this.detectedFaces === 0) this.skipped = 0;\n\n if (useFreshBox) {\n if (!detector || !detector.boxes || (detector.boxes.length === 0)) {\n this.storedBoxes = [];\n this.detectedFaces = 0;\n return null;\n }\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const scaledBox = bounding.scaleBoxCoordinates({ startPoint: this.storedBoxes[i].startPoint, endPoint: this.storedBoxes[i].endPoint }, detector.scaleFactor);\n const enlargedBox = bounding.enlargeBox(scaledBox);\n const squarifiedBox = bounding.squarifyBox(enlargedBox);\n const landmarks = this.storedBoxes[i].landmarks.arraySync();\n const confidence = this.storedBoxes[i].confidence;\n this.storedBoxes[i] = { ...squarifiedBox, confidence, landmarks };\n }\n }\n if (detector && detector.boxes) {\n detector.boxes.forEach((prediction) => {\n prediction.box.startPoint.dispose();\n prediction.box.endPoint.dispose();\n prediction.landmarks.dispose();\n });\n }\n\n let results = tf.tidy(() => this.storedBoxes.map((box, i) => {\n const boxConfidence = box.confidence;\n\n // The facial bounding box landmarks could come either from blazeface (if we are using a fresh box), or from the mesh model (if we are reusing an old box).\n let face;\n let angle = 0;\n let rotationMatrix;\n\n if (config.face.detector.rotation && config.face.mesh.enabled && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.boxSize, this.boxSize]).div(255);\n } else {\n rotationMatrix = util.IDENTITY_MATRIX;\n const clonedImage = input.clone();\n if (config.face.mesh.enabled) face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.meshSize, this.meshSize]).div(255);\n else face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, clonedImage, [this.boxSize, this.boxSize]).div(255);\n }\n\n // if we're not going to produce mesh, don't spend time with further processing\n if (!config.face.mesh.enabled) {\n const prediction = {\n coords: null,\n box,\n faceConfidence: null,\n boxConfidence: box.confidence,\n confidence: box.confidence,\n image: face,\n };\n return prediction;\n }\n\n const [, confidence, contourCoords] = this.meshDetector.predict(face); // The first returned tensor represents facial contours which are already included in the coordinates.\n const faceConfidence = confidence.dataSync()[0];\n if (faceConfidence < config.face.detector.minConfidence) return null; // if below confidence just exit\n const coordsReshaped = tf.reshape(contourCoords, [-1, 3]);\n let rawCoords = coordsReshaped.arraySync();\n\n if (config.face.iris.enabled) {\n const { box: leftEyeBox, boxSize: leftEyeBoxSize, crop: leftEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.leftBounds[0], eyeLandmarks.leftBounds[1], true);\n const { box: rightEyeBox, boxSize: rightEyeBoxSize, crop: rightEyeCrop } = this.getEyeBox(rawCoords, face, eyeLandmarks.rightBounds[0], eyeLandmarks.rightBounds[1]);\n const eyePredictions = this.irisModel.predict(tf.concat([leftEyeCrop, rightEyeCrop]));\n const eyePredictionsData = eyePredictions.dataSync();\n const leftEyeData = eyePredictionsData.slice(0, irisLandmarks.numCoordinates * 3);\n const { rawCoords: leftEyeRawCoords, iris: leftIrisRawCoords } = this.getEyeCoords(leftEyeData, leftEyeBox, leftEyeBoxSize, true);\n const rightEyeData = eyePredictionsData.slice(irisLandmarks.numCoordinates * 3);\n const { rawCoords: rightEyeRawCoords, iris: rightIrisRawCoords } = this.getEyeCoords(rightEyeData, rightEyeBox, rightEyeBoxSize);\n const leftToRightEyeDepthDifference = this.getLeftToRightEyeDepthDifference(rawCoords);\n if (Math.abs(leftToRightEyeDepthDifference) < 30) { // User is looking straight ahead.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', null);\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', null);\n // If the user is looking to the left or to the right, the iris coordinates tend to diverge too much from the mesh coordinates for them to be merged\n // So we only update a single contour line above and below the eye.\n } else if (leftToRightEyeDepthDifference < 1) { // User is looking towards the right.\n replaceRawCoordinates(rawCoords, leftEyeRawCoords, 'left', ['EyeUpper0', 'EyeLower0']);\n } else { // User is looking towards the left.\n replaceRawCoordinates(rawCoords, rightEyeRawCoords, 'right', ['EyeUpper0', 'EyeLower0']);\n }\n const adjustedLeftIrisCoords = this.getAdjustedIrisCoords(rawCoords, leftIrisRawCoords, 'left');\n const adjustedRightIrisCoords = this.getAdjustedIrisCoords(rawCoords, rightIrisRawCoords, 'right');\n rawCoords = rawCoords.concat(adjustedLeftIrisCoords).concat(adjustedRightIrisCoords);\n }\n\n // override box from detection with one calculated from mesh\n const transformedCoordsData = this.transformRawCoords(rawCoords, box, angle, rotationMatrix);\n box = bounding.enlargeBox(this.calculateLandmarksBoundingBox(transformedCoordsData), 1.5); // redefine box with mesh calculated one\n const transformedCoords = tf.tensor2d(transformedCoordsData);\n\n // do rotation one more time with mesh keypoints if we want to return perfect image\n if (config.face.detector.rotation && config.face.mesh.enabled && config.face.detector.return && tf.ENV.flags.IS_BROWSER) {\n const [indexOfMouth, indexOfForehead] = (box.landmarks.length >= meshLandmarks.count) ? meshLandmarks.symmetryLine : blazeFaceLandmarks.symmetryLine;\n angle = util.computeRotation(box.landmarks[indexOfMouth], box.landmarks[indexOfForehead]);\n const faceCenter = bounding.getBoxCenter({ startPoint: box.startPoint, endPoint: box.endPoint });\n const faceCenterNormalized = [faceCenter[0] / input.shape[2], faceCenter[1] / input.shape[1]];\n const rotatedImage = tf.image.rotateWithOffset(input, angle, 0, faceCenterNormalized); // rotateWithOffset is not defined for tfjs-node\n rotationMatrix = util.buildRotationMatrix(-angle, faceCenter);\n face = bounding.cutBoxFromImageAndResize({ startPoint: box.startPoint, endPoint: box.endPoint }, rotatedImage, [this.meshSize, this.meshSize]).div(255);\n }\n\n const prediction = {\n coords: transformedCoords,\n box,\n faceConfidence,\n boxConfidence,\n image: face,\n rawCoords,\n };\n\n // updated stored cache values\n const squarifiedLandmarksBox = bounding.squarifyBox(box);\n this.storedBoxes[i] = { ...squarifiedLandmarksBox, landmarks: transformedCoordsData, confidence: box.confidence, faceConfidence };\n\n return prediction;\n }));\n\n results = results.filter((a) => a !== null);\n // remove cache entries for detected boxes on low confidence\n if (config.face.mesh.enabled) this.storedBoxes = this.storedBoxes.filter((a) => a.faceConfidence > config.face.detector.minConfidence);\n this.detectedFaces = results.length;\n\n return results;\n }\n\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint, landmarks };\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n return { startPoint, endPoint };\n}\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, landmarks: box.landmarks };\n}\n", "export const IDENTITY_MATRIX = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];\n/**\n * Normalizes the provided angle to the range -pi to pi.\n * @param angle The angle in radians to be normalized.\n */\nexport function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\n/**\n * Computes the angle of rotation between two anchor points.\n * @param point1 First anchor point\n * @param point2 Second anchor point\n */\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport function radToDegrees(rad) {\n return rad * 180 / Math.PI;\n}\n\nexport function buildTranslationMatrix(x, y) {\n return [[1, 0, x], [0, 1, y], [0, 0, 1]];\n}\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n\nexport function xyDistanceBetweenPoints(a, b) {\n return Math.sqrt(((a[0] - b[0]) ** 2) + ((a[1] - b[1]) ** 2));\n}\n", "export const MESH_ANNOTATIONS = {\n silhouette: [\n 10, 338, 297, 332, 284, 251, 389, 356, 454, 323, 361, 288,\n 397, 365, 379, 378, 400, 377, 152, 148, 176, 149, 150, 136,\n 172, 58, 132, 93, 234, 127, 162, 21, 54, 103, 67, 109,\n ],\n lipsUpperOuter: [61, 185, 40, 39, 37, 0, 267, 269, 270, 409, 291],\n lipsLowerOuter: [146, 91, 181, 84, 17, 314, 405, 321, 375, 291],\n lipsUpperInner: [78, 191, 80, 81, 82, 13, 312, 311, 310, 415, 308],\n lipsLowerInner: [78, 95, 88, 178, 87, 14, 317, 402, 318, 324, 308],\n rightEyeUpper0: [246, 161, 160, 159, 158, 157, 173],\n rightEyeLower0: [33, 7, 163, 144, 145, 153, 154, 155, 133],\n rightEyeUpper1: [247, 30, 29, 27, 28, 56, 190],\n rightEyeLower1: [130, 25, 110, 24, 23, 22, 26, 112, 243],\n rightEyeUpper2: [113, 225, 224, 223, 222, 221, 189],\n rightEyeLower2: [226, 31, 228, 229, 230, 231, 232, 233, 244],\n rightEyeLower3: [143, 111, 117, 118, 119, 120, 121, 128, 245],\n rightEyebrowUpper: [156, 70, 63, 105, 66, 107, 55, 193],\n rightEyebrowLower: [35, 124, 46, 53, 52, 65],\n rightEyeIris: [473, 474, 475, 476, 477],\n leftEyeUpper0: [466, 388, 387, 386, 385, 384, 398],\n leftEyeLower0: [263, 249, 390, 373, 374, 380, 381, 382, 362],\n leftEyeUpper1: [467, 260, 259, 257, 258, 286, 414],\n leftEyeLower1: [359, 255, 339, 254, 253, 252, 256, 341, 463],\n leftEyeUpper2: [342, 445, 444, 443, 442, 441, 413],\n leftEyeLower2: [446, 261, 448, 449, 450, 451, 452, 453, 464],\n leftEyeLower3: [372, 340, 346, 347, 348, 349, 350, 357, 465],\n leftEyebrowUpper: [383, 300, 293, 334, 296, 336, 285, 417],\n leftEyebrowLower: [265, 353, 276, 283, 282, 295],\n leftEyeIris: [468, 469, 470, 471, 472],\n midwayBetweenEyes: [168],\n noseTip: [1],\n noseBottom: [2],\n noseRightCorner: [98],\n noseLeftCorner: [327],\n rightCheek: [205],\n leftCheek: [425],\n};\n\nexport const MESH_TO_IRIS_INDICES_MAP = [ // A mapping from facemesh model keypoints to iris model keypoints.\n { key: 'EyeUpper0', indices: [9, 10, 11, 12, 13, 14, 15] },\n { key: 'EyeUpper1', indices: [25, 26, 27, 28, 29, 30, 31] },\n { key: 'EyeUpper2', indices: [41, 42, 43, 44, 45, 46, 47] },\n { key: 'EyeLower0', indices: [0, 1, 2, 3, 4, 5, 6, 7, 8] },\n { key: 'EyeLower1', indices: [16, 17, 18, 19, 20, 21, 22, 23, 24] },\n { key: 'EyeLower2', indices: [32, 33, 34, 35, 36, 37, 38, 39, 40] },\n { key: 'EyeLower3', indices: [54, 55, 56, 57, 58, 59, 60, 61, 62] },\n // { key: 'EyebrowUpper', indices: [63, 64, 65, 66, 67, 68, 69, 70] },\n // { key: 'EyebrowLower', indices: [48, 49, 50, 51, 52, 53] },\n];\n\nexport const UV468 = [\n [0.499976992607117, 0.652534008026123],\n [0.500025987625122, 0.547487020492554],\n [0.499974012374878, 0.602371990680695],\n [0.482113003730774, 0.471979022026062],\n [0.500150978565216, 0.527155995368958],\n [0.499909996986389, 0.498252987861633],\n [0.499523013830185, 0.40106201171875],\n [0.289712011814117, 0.380764007568359],\n [0.499954998493195, 0.312398016452789],\n [0.499987006187439, 0.269918978214264],\n [0.500023007392883, 0.107050001621246],\n [0.500023007392883, 0.666234016418457],\n [0.5000159740448, 0.679224014282227],\n [0.500023007392883, 0.692348003387451],\n [0.499976992607117, 0.695277988910675],\n [0.499976992607117, 0.70593398809433],\n [0.499976992607117, 0.719385027885437],\n [0.499976992607117, 0.737019002437592],\n [0.499967992305756, 0.781370997428894],\n [0.499816000461578, 0.562981009483337],\n [0.473773002624512, 0.573909997940063],\n [0.104906998574734, 0.254140973091125],\n [0.365929991006851, 0.409575998783112],\n [0.338757991790771, 0.41302502155304],\n [0.311120003461838, 0.409460008144379],\n [0.274657994508743, 0.389131009578705],\n [0.393361985683441, 0.403706014156342],\n [0.345234006643295, 0.344011008739471],\n [0.370094001293182, 0.346076011657715],\n [0.319321990013123, 0.347265005111694],\n [0.297903001308441, 0.353591024875641],\n [0.24779200553894, 0.410809993743896],\n [0.396889001131058, 0.842755019664764],\n [0.280097991228104, 0.375599980354309],\n [0.106310002505779, 0.399955987930298],\n [0.2099249958992, 0.391353011131287],\n [0.355807989835739, 0.534406006336212],\n [0.471751004457474, 0.65040397644043],\n [0.474155008792877, 0.680191993713379],\n [0.439785003662109, 0.657229006290436],\n [0.414617002010345, 0.66654098033905],\n [0.450374007225037, 0.680860996246338],\n [0.428770989179611, 0.682690978050232],\n [0.374971002340317, 0.727805018424988],\n [0.486716985702515, 0.547628998756409],\n [0.485300987958908, 0.527395009994507],\n [0.257764995098114, 0.314490020275116],\n [0.401223003864288, 0.455172002315521],\n [0.429818987846375, 0.548614978790283],\n [0.421351999044418, 0.533740997314453],\n [0.276895999908447, 0.532056987285614],\n [0.483370006084442, 0.499586999416351],\n [0.33721199631691, 0.282882988452911],\n [0.296391993761063, 0.293242990970612],\n [0.169294998049736, 0.193813979625702],\n [0.447580009698868, 0.302609980106354],\n [0.392390012741089, 0.353887975215912],\n [0.354490011930466, 0.696784019470215],\n [0.067304998636246, 0.730105042457581],\n [0.442739009857178, 0.572826027870178],\n [0.457098007202148, 0.584792017936707],\n [0.381974011659622, 0.694710969924927],\n [0.392388999462128, 0.694203019142151],\n [0.277076005935669, 0.271932005882263],\n [0.422551989555359, 0.563233017921448],\n [0.385919004678726, 0.281364023685455],\n [0.383103013038635, 0.255840003490448],\n [0.331431001424789, 0.119714021682739],\n [0.229923993349075, 0.232002973556519],\n [0.364500999450684, 0.189113974571228],\n [0.229622006416321, 0.299540996551514],\n [0.173287004232407, 0.278747975826263],\n [0.472878992557526, 0.666198015213013],\n [0.446828007698059, 0.668527007102966],\n [0.422762006521225, 0.673889994621277],\n [0.445307999849319, 0.580065965652466],\n [0.388103008270264, 0.693961024284363],\n [0.403039008378983, 0.706539988517761],\n [0.403629004955292, 0.693953037261963],\n [0.460041999816895, 0.557139039039612],\n [0.431158006191254, 0.692366003990173],\n [0.452181994915009, 0.692366003990173],\n [0.475387006998062, 0.692366003990173],\n [0.465828001499176, 0.779190003871918],\n [0.472328990697861, 0.736225962638855],\n [0.473087012767792, 0.717857003211975],\n [0.473122000694275, 0.704625964164734],\n [0.473033010959625, 0.695277988910675],\n [0.427942007780075, 0.695277988910675],\n [0.426479011774063, 0.703539967536926],\n [0.423162013292313, 0.711845993995667],\n [0.4183090031147, 0.720062971115112],\n [0.390094995498657, 0.639572978019714],\n [0.013953999616206, 0.560034036636353],\n [0.499913990497589, 0.58014702796936],\n [0.413199990987778, 0.69539999961853],\n [0.409626007080078, 0.701822996139526],\n [0.468080013990402, 0.601534962654114],\n [0.422728985548019, 0.585985004901886],\n [0.463079988956451, 0.593783974647522],\n [0.37211999297142, 0.47341400384903],\n [0.334562003612518, 0.496073007583618],\n [0.411671012639999, 0.546965003013611],\n [0.242175996303558, 0.14767599105835],\n [0.290776997804642, 0.201445996761322],\n [0.327338010072708, 0.256527006626129],\n [0.399509996175766, 0.748921036720276],\n [0.441727995872498, 0.261676013469696],\n [0.429764986038208, 0.187834024429321],\n [0.412198007106781, 0.108901023864746],\n [0.288955003023148, 0.398952007293701],\n [0.218936994671822, 0.435410976409912],\n [0.41278201341629, 0.398970007896423],\n [0.257135003805161, 0.355440020561218],\n [0.427684992551804, 0.437960982322693],\n [0.448339998722076, 0.536936044692993],\n [0.178560003638268, 0.45755398273468],\n [0.247308000922203, 0.457193970680237],\n [0.286267012357712, 0.467674970626831],\n [0.332827985286713, 0.460712015628815],\n [0.368755996227264, 0.447206974029541],\n [0.398963987827301, 0.432654976844788],\n [0.476410001516342, 0.405806005001068],\n [0.189241006970406, 0.523923993110657],\n [0.228962004184723, 0.348950982093811],\n [0.490725994110107, 0.562400996685028],\n [0.404670000076294, 0.485132992267609],\n [0.019469000399113, 0.401564002037048],\n [0.426243007183075, 0.420431017875671],\n [0.396993011236191, 0.548797011375427],\n [0.266469985246658, 0.376977026462555],\n [0.439121007919312, 0.51895797252655],\n [0.032313998788595, 0.644356966018677],\n [0.419054001569748, 0.387154996395111],\n [0.462783008813858, 0.505746960639954],\n [0.238978996872902, 0.779744982719421],\n [0.198220998048782, 0.831938028335571],\n [0.107550002634525, 0.540755033493042],\n [0.183610007166862, 0.740257024765015],\n [0.134409993886948, 0.333683013916016],\n [0.385764002799988, 0.883153975009918],\n [0.490967005491257, 0.579378008842468],\n [0.382384985685349, 0.508572995662689],\n [0.174399003386497, 0.397670984268188],\n [0.318785011768341, 0.39623498916626],\n [0.343364000320435, 0.400596976280212],\n [0.396100014448166, 0.710216999053955],\n [0.187885001301765, 0.588537991046906],\n [0.430987000465393, 0.944064974784851],\n [0.318993002176285, 0.898285031318665],\n [0.266247987747192, 0.869701027870178],\n [0.500023007392883, 0.190576016902924],\n [0.499976992607117, 0.954452991485596],\n [0.366169989109039, 0.398822009563446],\n [0.393207013607025, 0.39553701877594],\n [0.410373002290726, 0.391080021858215],\n [0.194993004202843, 0.342101991176605],\n [0.388664990663528, 0.362284004688263],\n [0.365961998701096, 0.355970978736877],\n [0.343364000320435, 0.355356991291046],\n [0.318785011768341, 0.35834002494812],\n [0.301414996385574, 0.363156020641327],\n [0.058132998645306, 0.319076001644135],\n [0.301414996385574, 0.387449026107788],\n [0.499987989664078, 0.618434011936188],\n [0.415838003158569, 0.624195992946625],\n [0.445681989192963, 0.566076993942261],\n [0.465844005346298, 0.620640993118286],\n [0.49992299079895, 0.351523995399475],\n [0.288718998432159, 0.819945991039276],\n [0.335278987884521, 0.852819979190826],\n [0.440512001514435, 0.902418971061707],\n [0.128294005990028, 0.791940987110138],\n [0.408771991729736, 0.373893976211548],\n [0.455606997013092, 0.451801002025604],\n [0.499877005815506, 0.908990025520325],\n [0.375436991453171, 0.924192011356354],\n [0.11421000212431, 0.615022003650665],\n [0.448662012815475, 0.695277988910675],\n [0.4480200111866, 0.704632043838501],\n [0.447111994028091, 0.715808033943176],\n [0.444831997156143, 0.730794012546539],\n [0.430011987686157, 0.766808986663818],\n [0.406787008047104, 0.685672998428345],\n [0.400738000869751, 0.681069016456604],\n [0.392399996519089, 0.677703022956848],\n [0.367855995893478, 0.663918972015381],\n [0.247923001646996, 0.601333022117615],\n [0.452769994735718, 0.420849978923798],\n [0.43639200925827, 0.359887003898621],\n [0.416164010763168, 0.368713974952698],\n [0.413385987281799, 0.692366003990173],\n [0.228018000721931, 0.683571994304657],\n [0.468268007040024, 0.352671027183533],\n [0.411361992359161, 0.804327011108398],\n [0.499989002943039, 0.469825029373169],\n [0.479153990745544, 0.442654013633728],\n [0.499974012374878, 0.439637005329132],\n [0.432112008333206, 0.493588984012604],\n [0.499886006116867, 0.866917014122009],\n [0.49991300702095, 0.821729004383087],\n [0.456548988819122, 0.819200992584229],\n [0.344549000263214, 0.745438992977142],\n [0.37890899181366, 0.574010014533997],\n [0.374292999505997, 0.780184984207153],\n [0.319687992334366, 0.570737957954407],\n [0.357154995203018, 0.604269981384277],\n [0.295284003019333, 0.621580958366394],\n [0.447750002145767, 0.862477004528046],\n [0.410986006259918, 0.508723020553589],\n [0.31395098567009, 0.775308012962341],\n [0.354128003120422, 0.812552988529205],\n [0.324548006057739, 0.703992962837219],\n [0.189096003770828, 0.646299958229065],\n [0.279776990413666, 0.71465802192688],\n [0.1338230073452, 0.682700991630554],\n [0.336768001317978, 0.644733011722565],\n [0.429883986711502, 0.466521978378296],\n [0.455527991056442, 0.548622965812683],\n [0.437114000320435, 0.558896005153656],\n [0.467287987470627, 0.529924988746643],\n [0.414712011814117, 0.335219979286194],\n [0.37704598903656, 0.322777986526489],\n [0.344107985496521, 0.320150971412659],\n [0.312875986099243, 0.32233202457428],\n [0.283526003360748, 0.333190023899078],\n [0.241245999932289, 0.382785975933075],\n [0.102986000478268, 0.468762993812561],\n [0.267612010240555, 0.424560010433197],\n [0.297879010438919, 0.433175981044769],\n [0.333433985710144, 0.433878004550934],\n [0.366427004337311, 0.426115989685059],\n [0.396012008190155, 0.416696012020111],\n [0.420121014118195, 0.41022801399231],\n [0.007561000064015, 0.480777025222778],\n [0.432949006557465, 0.569517970085144],\n [0.458638995885849, 0.479089021682739],\n [0.473466008901596, 0.545744001865387],\n [0.476087987422943, 0.563830018043518],\n [0.468472003936768, 0.555056989192963],\n [0.433990985155106, 0.582361996173859],\n [0.483518004417419, 0.562983989715576],\n [0.482482999563217, 0.57784903049469],\n [0.42645001411438, 0.389798998832703],\n [0.438998997211456, 0.39649498462677],\n [0.450067013502121, 0.400434017181396],\n [0.289712011814117, 0.368252992630005],\n [0.276670008897781, 0.363372981548309],\n [0.517862021923065, 0.471948027610779],\n [0.710287988185883, 0.380764007568359],\n [0.526226997375488, 0.573909997940063],\n [0.895093023777008, 0.254140973091125],\n [0.634069979190826, 0.409575998783112],\n [0.661242008209229, 0.41302502155304],\n [0.688880026340485, 0.409460008144379],\n [0.725341975688934, 0.389131009578705],\n [0.606630027294159, 0.40370500087738],\n [0.654766023159027, 0.344011008739471],\n [0.629905998706818, 0.346076011657715],\n [0.680678009986877, 0.347265005111694],\n [0.702096998691559, 0.353591024875641],\n [0.75221198797226, 0.410804986953735],\n [0.602918028831482, 0.842862963676453],\n [0.719901978969574, 0.375599980354309],\n [0.893692970275879, 0.399959981441498],\n [0.790081977844238, 0.391354024410248],\n [0.643998026847839, 0.534487962722778],\n [0.528249025344849, 0.65040397644043],\n [0.525849997997284, 0.680191040039062],\n [0.560214996337891, 0.657229006290436],\n [0.585384011268616, 0.66654098033905],\n [0.549625992774963, 0.680860996246338],\n [0.57122802734375, 0.682691991329193],\n [0.624852001667023, 0.72809898853302],\n [0.513050019741058, 0.547281980514526],\n [0.51509702205658, 0.527251958847046],\n [0.742246985435486, 0.314507007598877],\n [0.598631024360657, 0.454979002475739],\n [0.570338010787964, 0.548575043678284],\n [0.578631997108459, 0.533622980117798],\n [0.723087012767792, 0.532054007053375],\n [0.516445994377136, 0.499638974666595],\n [0.662801027297974, 0.282917976379395],\n [0.70362401008606, 0.293271005153656],\n [0.830704987049103, 0.193813979625702],\n [0.552385985851288, 0.302568018436432],\n [0.607609987258911, 0.353887975215912],\n [0.645429015159607, 0.696707010269165],\n [0.932694971561432, 0.730105042457581],\n [0.557260990142822, 0.572826027870178],\n [0.542901992797852, 0.584792017936707],\n [0.6180260181427, 0.694710969924927],\n [0.607590973377228, 0.694203019142151],\n [0.722943007946014, 0.271963000297546],\n [0.577413976192474, 0.563166975975037],\n [0.614082992076874, 0.281386971473694],\n [0.616907000541687, 0.255886018276215],\n [0.668509006500244, 0.119913995265961],\n [0.770092010498047, 0.232020974159241],\n [0.635536015033722, 0.189248979091644],\n [0.77039098739624, 0.299556016921997],\n [0.826722025871277, 0.278755009174347],\n [0.527121007442474, 0.666198015213013],\n [0.553171992301941, 0.668527007102966],\n [0.577238023281097, 0.673889994621277],\n [0.554691970348358, 0.580065965652466],\n [0.611896991729736, 0.693961024284363],\n [0.59696102142334, 0.706539988517761],\n [0.596370995044708, 0.693953037261963],\n [0.539958000183105, 0.557139039039612],\n [0.568841993808746, 0.692366003990173],\n [0.547818005084991, 0.692366003990173],\n [0.52461302280426, 0.692366003990173],\n [0.534089982509613, 0.779141008853912],\n [0.527670979499817, 0.736225962638855],\n [0.526912987232208, 0.717857003211975],\n [0.526877999305725, 0.704625964164734],\n [0.526966989040375, 0.695277988910675],\n [0.572058022022247, 0.695277988910675],\n [0.573521018028259, 0.703539967536926],\n [0.57683801651001, 0.711845993995667],\n [0.581691026687622, 0.720062971115112],\n [0.609944999217987, 0.639909982681274],\n [0.986046016216278, 0.560034036636353],\n [0.5867999792099, 0.69539999961853],\n [0.590372025966644, 0.701822996139526],\n [0.531915009021759, 0.601536989212036],\n [0.577268004417419, 0.585934996604919],\n [0.536915004253387, 0.593786001205444],\n [0.627542972564697, 0.473352015018463],\n [0.665585994720459, 0.495950996875763],\n [0.588353991508484, 0.546862006187439],\n [0.757824003696442, 0.14767599105835],\n [0.709249973297119, 0.201507985591888],\n [0.672684013843536, 0.256581008434296],\n [0.600408971309662, 0.74900496006012],\n [0.55826598405838, 0.261672019958496],\n [0.570303976535797, 0.187870979309082],\n [0.588165998458862, 0.109044015407562],\n [0.711045026779175, 0.398952007293701],\n [0.781069993972778, 0.435405015945435],\n [0.587247014045715, 0.398931980133057],\n [0.742869973182678, 0.355445981025696],\n [0.572156012058258, 0.437651991844177],\n [0.55186802148819, 0.536570012569427],\n [0.821442008018494, 0.457556009292603],\n [0.752701997756958, 0.457181990146637],\n [0.71375697851181, 0.467626988887787],\n [0.66711300611496, 0.460672974586487],\n [0.631101012229919, 0.447153985500336],\n [0.6008620262146, 0.432473003864288],\n [0.523481011390686, 0.405627012252808],\n [0.810747981071472, 0.523926019668579],\n [0.771045982837677, 0.348959028720856],\n [0.509127020835876, 0.562718033790588],\n [0.595292985439301, 0.485023975372314],\n [0.980530977249146, 0.401564002037048],\n [0.573499977588654, 0.420000016689301],\n [0.602994978427887, 0.548687994480133],\n [0.733529984951019, 0.376977026462555],\n [0.560611009597778, 0.519016981124878],\n [0.967685997486115, 0.644356966018677],\n [0.580985009670258, 0.387160003185272],\n [0.537728011608124, 0.505385041236877],\n [0.760966002941132, 0.779752969741821],\n [0.801778972148895, 0.831938028335571],\n [0.892440974712372, 0.54076099395752],\n [0.816350996494293, 0.740260004997253],\n [0.865594983100891, 0.333687007427216],\n [0.614073991775513, 0.883246004581451],\n [0.508952975273132, 0.579437971115112],\n [0.617941975593567, 0.508316040039062],\n [0.825608015060425, 0.397674977779388],\n [0.681214988231659, 0.39623498916626],\n [0.656635999679565, 0.400596976280212],\n [0.603900015354156, 0.710216999053955],\n [0.81208598613739, 0.588539004325867],\n [0.56801301240921, 0.944564998149872],\n [0.681007981300354, 0.898285031318665],\n [0.733752012252808, 0.869701027870178],\n [0.633830010890961, 0.398822009563446],\n [0.606792986392975, 0.39553701877594],\n [0.589659988880157, 0.391062021255493],\n [0.805015981197357, 0.342108011245728],\n [0.611334979534149, 0.362284004688263],\n [0.634037971496582, 0.355970978736877],\n [0.656635999679565, 0.355356991291046],\n [0.681214988231659, 0.35834002494812],\n [0.698584973812103, 0.363156020641327],\n [0.941866993904114, 0.319076001644135],\n [0.698584973812103, 0.387449026107788],\n [0.584177017211914, 0.624107003211975],\n [0.554318010807037, 0.566076993942261],\n [0.534153997898102, 0.62064003944397],\n [0.711217999458313, 0.819975018501282],\n [0.664629995822906, 0.852871000766754],\n [0.559099972248077, 0.902631998062134],\n [0.871706008911133, 0.791940987110138],\n [0.591234028339386, 0.373893976211548],\n [0.544341027736664, 0.451583981513977],\n [0.624562978744507, 0.924192011356354],\n [0.88577002286911, 0.615028977394104],\n [0.551338016986847, 0.695277988910675],\n [0.551980018615723, 0.704632043838501],\n [0.552887976169586, 0.715808033943176],\n [0.555167973041534, 0.730794012546539],\n [0.569944024085999, 0.767035007476807],\n [0.593203008174896, 0.685675978660583],\n [0.599261999130249, 0.681069016456604],\n [0.607599973678589, 0.677703022956848],\n [0.631937980651855, 0.663500010967255],\n [0.752032995223999, 0.601315021514893],\n [0.547226011753082, 0.420395016670227],\n [0.563543975353241, 0.359827995300293],\n [0.583841025829315, 0.368713974952698],\n [0.586614012718201, 0.692366003990173],\n [0.771915018558502, 0.683578014373779],\n [0.531597018241882, 0.352482974529266],\n [0.588370978832245, 0.804440975189209],\n [0.52079701423645, 0.442565023899078],\n [0.567984998226166, 0.493479013442993],\n [0.543282985687256, 0.819254994392395],\n [0.655317008495331, 0.745514988899231],\n [0.621008992195129, 0.574018001556396],\n [0.625559985637665, 0.78031200170517],\n [0.680198013782501, 0.570719003677368],\n [0.64276397228241, 0.604337990283966],\n [0.704662978649139, 0.621529996395111],\n [0.552012026309967, 0.862591981887817],\n [0.589071989059448, 0.508637011051178],\n [0.685944974422455, 0.775357007980347],\n [0.645735025405884, 0.812640011310577],\n [0.675342977046967, 0.703978002071381],\n [0.810858011245728, 0.646304965019226],\n [0.72012197971344, 0.714666962623596],\n [0.866151988506317, 0.682704985141754],\n [0.663187026977539, 0.644596993923187],\n [0.570082008838654, 0.466325998306274],\n [0.544561982154846, 0.548375964164734],\n [0.562758982181549, 0.558784961700439],\n [0.531987011432648, 0.530140042304993],\n [0.585271000862122, 0.335177004337311],\n [0.622952997684479, 0.32277899980545],\n [0.655896008014679, 0.320163011550903],\n [0.687132000923157, 0.322345972061157],\n [0.716481983661652, 0.333200991153717],\n [0.758756995201111, 0.382786989212036],\n [0.897013008594513, 0.468769013881683],\n [0.732392013072968, 0.424547016620636],\n [0.70211398601532, 0.433162987232208],\n [0.66652500629425, 0.433866024017334],\n [0.633504986763, 0.426087975502014],\n [0.603875994682312, 0.416586995124817],\n [0.579657971858978, 0.409945011138916],\n [0.992439985275269, 0.480777025222778],\n [0.567192018032074, 0.569419980049133],\n [0.54136598110199, 0.478899002075195],\n [0.526564002037048, 0.546118021011353],\n [0.523913025856018, 0.563830018043518],\n [0.531529009342194, 0.555056989192963],\n [0.566035985946655, 0.582329034805298],\n [0.51631098985672, 0.563053965568542],\n [0.5174720287323, 0.577877044677734],\n [0.573594987392426, 0.389806985855103],\n [0.560697972774506, 0.395331978797913],\n [0.549755990505219, 0.399751007556915],\n [0.710287988185883, 0.368252992630005],\n [0.723330020904541, 0.363372981548309],\n];\n\nexport const TRI468 = [\n 127, 34, 139, 11, 0, 37, 232, 231, 120, 72, 37, 39, 128, 121, 47, 232, 121, 128, 104, 69, 67, 175, 171, 148, 157, 154, 155, 118, 50, 101, 73, 39, 40, 9,\n 151, 108, 48, 115, 131, 194, 204, 211, 74, 40, 185, 80, 42, 183, 40, 92, 186, 230, 229, 118, 202, 212, 214, 83, 18, 17, 76, 61, 146, 160, 29, 30, 56,\n 157, 173, 106, 204, 194, 135, 214, 192, 203, 165, 98, 21, 71, 68, 51, 45, 4, 144, 24, 23, 77, 146, 91, 205, 50, 187, 201, 200, 18, 91, 106, 182, 90, 91,\n 181, 85, 84, 17, 206, 203, 36, 148, 171, 140, 92, 40, 39, 193, 189, 244, 159, 158, 28, 247, 246, 161, 236, 3, 196, 54, 68, 104, 193, 168, 8, 117,\n 228, 31, 189, 193, 55, 98, 97, 99, 126, 47, 100, 166, 79, 218, 155, 154, 26, 209, 49, 131, 135, 136, 150, 47, 126, 217, 223, 52, 53, 45, 51, 134, 211,\n 170, 140, 67, 69, 108, 43, 106, 91, 230, 119, 120, 226, 130, 247, 63, 53, 52, 238, 20, 242, 46, 70, 156, 78, 62, 96, 46, 53, 63, 143, 34, 227, 173,\n 155, 133, 123, 117, 111, 44, 125, 19, 236, 134, 51, 216, 206, 205, 154, 153, 22, 39, 37, 167, 200, 201, 208, 36, 142, 100, 57, 212, 202, 20, 60, 99, 28,\n 158, 157, 35, 226, 113, 160, 159, 27, 204, 202, 210, 113, 225, 46, 43, 202, 204, 62, 76, 77, 137, 123, 116, 41, 38, 72, 203, 129, 142, 64, 98, 240, 49,\n 102, 64, 41, 73, 74, 212, 216, 207, 42, 74, 184, 169, 170, 211, 170, 149, 176, 105, 66, 69, 122, 6, 168, 123, 147, 187, 96, 77, 90, 65, 55, 107, 89,\n 90, 180, 101, 100, 120, 63, 105, 104, 93, 137, 227, 15, 86, 85, 129, 102, 49, 14, 87, 86, 55, 8, 9, 100, 47, 121, 145, 23, 22, 88, 89, 179, 6, 122,\n 196, 88, 95, 96, 138, 172, 136, 215, 58, 172, 115, 48, 219, 42, 80, 81, 195, 3, 51, 43, 146, 61, 171, 175, 199, 81, 82, 38, 53, 46, 225, 144, 163, 110,\n 246, 33, 7, 52, 65, 66, 229, 228, 117, 34, 127, 234, 107, 108, 69, 109, 108, 151, 48, 64, 235, 62, 78, 191, 129, 209, 126, 111, 35, 143, 163, 161, 246,\n 117, 123, 50, 222, 65, 52, 19, 125, 141, 221, 55, 65, 3, 195, 197, 25, 7, 33, 220, 237, 44, 70, 71, 139, 122, 193, 245, 247, 130, 33, 71, 21, 162,\n 153, 158, 159, 170, 169, 150, 188, 174, 196, 216, 186, 92, 144, 160, 161, 2, 97, 167, 141, 125, 241, 164, 167, 37, 72, 38, 12, 145, 159, 160, 38, 82, 13,\n 63, 68, 71, 226, 35, 111, 158, 153, 154, 101, 50, 205, 206, 92, 165, 209, 198, 217, 165, 167, 97, 220, 115, 218, 133, 112, 243, 239, 238, 241, 214,\n 135, 169, 190, 173, 133, 171, 208, 32, 125, 44, 237, 86, 87, 178, 85, 86, 179, 84, 85, 180, 83, 84, 181, 201, 83, 182, 137, 93, 132, 76, 62, 183, 61,\n 76, 184, 57, 61, 185, 212, 57, 186, 214, 207, 187, 34, 143, 156, 79, 239, 237, 123, 137, 177, 44, 1, 4, 201, 194, 32, 64, 102, 129, 213, 215, 138, 59,\n 166, 219, 242, 99, 97, 2, 94, 141, 75, 59, 235, 24, 110, 228, 25, 130, 226, 23, 24, 229, 22, 23, 230, 26, 22, 231, 112, 26, 232, 189, 190, 243, 221, 56,\n 190, 28, 56, 221, 27, 28, 222, 29, 27, 223, 30, 29, 224, 247, 30, 225, 238, 79, 20, 166, 59, 75, 60, 75, 240, 147, 177, 215, 20, 79, 166, 187, 147, 213,\n 112, 233, 244, 233, 128, 245, 128, 114, 188, 114, 217, 174, 131, 115, 220, 217, 198, 236, 198, 131, 134, 177, 132, 58, 143, 35, 124, 110, 163, 7, 228,\n 110, 25, 356, 389, 368, 11, 302, 267, 452, 350, 349, 302, 303, 269, 357, 343, 277, 452, 453, 357, 333, 332, 297, 175, 152, 377, 384, 398, 382, 347,\n 348, 330, 303, 304, 270, 9, 336, 337, 278, 279, 360, 418, 262, 431, 304, 408, 409, 310, 415, 407, 270, 409, 410, 450, 348, 347, 422, 430, 434, 313,\n 314, 17, 306, 307, 375, 387, 388, 260, 286, 414, 398, 335, 406, 418, 364, 367, 416, 423, 358, 327, 251, 284, 298, 281, 5, 4, 373, 374, 253, 307, 320,\n 321, 425, 427, 411, 421, 313, 18, 321, 405, 406, 320, 404, 405, 315, 16, 17, 426, 425, 266, 377, 400, 369, 322, 391, 269, 417, 465, 464, 386, 257, 258,\n 466, 260, 388, 456, 399, 419, 284, 332, 333, 417, 285, 8, 346, 340, 261, 413, 441, 285, 327, 460, 328, 355, 371, 329, 392, 439, 438, 382, 341, 256,\n 429, 420, 360, 364, 394, 379, 277, 343, 437, 443, 444, 283, 275, 440, 363, 431, 262, 369, 297, 338, 337, 273, 375, 321, 450, 451, 349, 446, 342, 467,\n 293, 334, 282, 458, 461, 462, 276, 353, 383, 308, 324, 325, 276, 300, 293, 372, 345, 447, 382, 398, 362, 352, 345, 340, 274, 1, 19, 456, 248, 281, 436,\n 427, 425, 381, 256, 252, 269, 391, 393, 200, 199, 428, 266, 330, 329, 287, 273, 422, 250, 462, 328, 258, 286, 384, 265, 353, 342, 387, 259, 257, 424,\n 431, 430, 342, 353, 276, 273, 335, 424, 292, 325, 307, 366, 447, 345, 271, 303, 302, 423, 266, 371, 294, 455, 460, 279, 278, 294, 271, 272, 304, 432,\n 434, 427, 272, 407, 408, 394, 430, 431, 395, 369, 400, 334, 333, 299, 351, 417, 168, 352, 280, 411, 325, 319, 320, 295, 296, 336, 319, 403, 404, 330,\n 348, 349, 293, 298, 333, 323, 454, 447, 15, 16, 315, 358, 429, 279, 14, 15, 316, 285, 336, 9, 329, 349, 350, 374, 380, 252, 318, 402, 403, 6, 197, 419,\n 318, 319, 325, 367, 364, 365, 435, 367, 397, 344, 438, 439, 272, 271, 311, 195, 5, 281, 273, 287, 291, 396, 428, 199, 311, 271, 268, 283, 444, 445,\n 373, 254, 339, 263, 466, 249, 282, 334, 296, 449, 347, 346, 264, 447, 454, 336, 296, 299, 338, 10, 151, 278, 439, 455, 292, 407, 415, 358, 371, 355,\n 340, 345, 372, 390, 249, 466, 346, 347, 280, 442, 443, 282, 19, 94, 370, 441, 442, 295, 248, 419, 197, 263, 255, 359, 440, 275, 274, 300, 383, 368,\n 351, 412, 465, 263, 467, 466, 301, 368, 389, 380, 374, 386, 395, 378, 379, 412, 351, 419, 436, 426, 322, 373, 390, 388, 2, 164, 393, 370, 462, 461,\n 164, 0, 267, 302, 11, 12, 374, 373, 387, 268, 12, 13, 293, 300, 301, 446, 261, 340, 385, 384, 381, 330, 266, 425, 426, 423, 391, 429, 355, 437, 391,\n 327, 326, 440, 457, 438, 341, 382, 362, 459, 457, 461, 434, 430, 394, 414, 463, 362, 396, 369, 262, 354, 461, 457, 316, 403, 402, 315, 404, 403, 314,\n 405, 404, 313, 406, 405, 421, 418, 406, 366, 401, 361, 306, 408, 407, 291, 409, 408, 287, 410, 409, 432, 436, 410, 434, 416, 411, 264, 368, 383, 309,\n 438, 457, 352, 376, 401, 274, 275, 4, 421, 428, 262, 294, 327, 358, 433, 416, 367, 289, 455, 439, 462, 370, 326, 2, 326, 370, 305, 460, 455, 254,\n 449, 448, 255, 261, 446, 253, 450, 449, 252, 451, 450, 256, 452, 451, 341, 453, 452, 413, 464, 463, 441, 413, 414, 258, 442, 441, 257, 443, 442, 259,\n 444, 443, 260, 445, 444, 467, 342, 445, 459, 458, 250, 289, 392, 290, 290, 328, 460, 376, 433, 435, 250, 290, 392, 411, 416, 433, 341, 463, 464, 453,\n 464, 465, 357, 465, 412, 343, 412, 399, 360, 363, 440, 437, 399, 456, 420, 456, 363, 401, 435, 288, 372, 383, 353, 339, 255, 249, 448, 261, 255, 133,\n 243, 190, 133, 155, 112, 33, 246, 247, 33, 130, 25, 398, 384, 286, 362, 398, 414, 362, 463, 341, 263, 359, 467, 263, 249, 255, 466, 467, 260, 75, 60,\n 166, 238, 239, 79, 162, 127, 139, 72, 11, 37, 121, 232, 120, 73, 72, 39, 114, 128, 47, 233, 232, 128, 103, 104, 67, 152, 175, 148, 173, 157, 155,\n 119, 118, 101, 74, 73, 40, 107, 9, 108, 49, 48, 131, 32, 194, 211, 184, 74, 185, 191, 80, 183, 185, 40, 186, 119, 230, 118, 210, 202, 214, 84, 83, 17,\n 77, 76, 146, 161, 160, 30, 190, 56, 173, 182, 106, 194, 138, 135, 192, 129, 203, 98, 54, 21, 68, 5, 51, 4, 145, 144, 23, 90, 77, 91, 207, 205, 187, 83,\n 201, 18, 181, 91, 182, 180, 90, 181, 16, 85, 17, 205, 206, 36, 176, 148, 140, 165, 92, 39, 245, 193, 244, 27, 159, 28, 30, 247, 161, 174, 236, 196,\n 103, 54, 104, 55, 193, 8, 111, 117, 31, 221, 189, 55, 240, 98, 99, 142, 126, 100, 219, 166, 218, 112, 155, 26, 198, 209, 131, 169, 135, 150, 114, 47,\n 217, 224, 223, 53, 220, 45, 134, 32, 211, 140, 109, 67, 108, 146, 43, 91, 231, 230, 120, 113, 226, 247, 105, 63, 52, 241, 238, 242, 124, 46, 156, 95,\n 78, 96, 70, 46, 63, 116, 143, 227, 116, 123, 111, 1, 44, 19, 3, 236, 51, 207, 216, 205, 26, 154, 22, 165, 39, 167, 199, 200, 208, 101, 36, 100, 43,\n 57, 202, 242, 20, 99, 56, 28, 157, 124, 35, 113, 29, 160, 27, 211, 204, 210, 124, 113, 46, 106, 43, 204, 96, 62, 77, 227, 137, 116, 73, 41, 72, 36, 203,\n 142, 235, 64, 240, 48, 49, 64, 42, 41, 74, 214, 212, 207, 183, 42, 184, 210, 169, 211, 140, 170, 176, 104, 105, 69, 193, 122, 168, 50, 123, 187, 89, 96,\n 90, 66, 65, 107, 179, 89, 180, 119, 101, 120, 68, 63, 104, 234, 93, 227, 16, 15, 85, 209, 129, 49, 15, 14, 86, 107, 55, 9, 120, 100, 121, 153, 145, 22,\n 178, 88, 179, 197, 6, 196, 89, 88, 96, 135, 138, 136, 138, 215, 172, 218, 115, 219, 41, 42, 81, 5, 195, 51, 57, 43, 61, 208, 171, 199, 41, 81, 38,\n 224, 53, 225, 24, 144, 110, 105, 52, 66, 118, 229, 117, 227, 34, 234, 66, 107, 69, 10, 109, 151, 219, 48, 235, 183, 62, 191, 142, 129, 126, 116, 111,\n 143, 7, 163, 246, 118, 117, 50, 223, 222, 52, 94, 19, 141, 222, 221, 65, 196, 3, 197, 45, 220, 44, 156, 70, 139, 188, 122, 245, 139, 71, 162, 145,\n 153, 159, 149, 170, 150, 122, 188, 196, 206, 216, 92, 163, 144, 161, 164, 2, 167, 242, 141, 241, 0, 164, 37, 11, 72, 12, 144, 145, 160, 12, 38, 13, 70,\n 63, 71, 31, 226, 111, 157, 158, 154, 36, 101, 205, 203, 206, 165, 126, 209, 217, 98, 165, 97, 237, 220, 218, 237, 239, 241, 210, 214, 169, 140, 171, 32,\n 241, 125, 237, 179, 86, 178, 180, 85, 179, 181, 84, 180, 182, 83, 181, 194, 201, 182, 177, 137, 132, 184, 76, 183, 185, 61, 184, 186, 57, 185, 216, 212,\n 186, 192, 214, 187, 139, 34, 156, 218, 79, 237, 147, 123, 177, 45, 44, 4, 208, 201, 32, 98, 64, 129, 192, 213, 138, 235, 59, 219, 141, 242, 97, 97, 2,\n 141, 240, 75, 235, 229, 24, 228, 31, 25, 226, 230, 23, 229, 231, 22, 230, 232, 26, 231, 233, 112, 232, 244, 189, 243, 189, 221, 190, 222, 28, 221,\n 223, 27, 222, 224, 29, 223, 225, 30, 224, 113, 247, 225, 99, 60, 240, 213, 147, 215, 60, 20, 166, 192, 187, 213, 243, 112, 244, 244, 233, 245, 245,\n 128, 188, 188, 114, 174, 134, 131, 220, 174, 217, 236, 236, 198, 134, 215, 177, 58, 156, 143, 124, 25, 110, 7, 31, 228, 25, 264, 356, 368, 0, 11, 267,\n 451, 452, 349, 267, 302, 269, 350, 357, 277, 350, 452, 357, 299, 333, 297, 396, 175, 377, 381, 384, 382, 280, 347, 330, 269, 303, 270, 151, 9, 337,\n 344, 278, 360, 424, 418, 431, 270, 304, 409, 272, 310, 407, 322, 270, 410, 449, 450, 347, 432, 422, 434, 18, 313, 17, 291, 306, 375, 259, 387, 260,\n 424, 335, 418, 434, 364, 416, 391, 423, 327, 301, 251, 298, 275, 281, 4, 254, 373, 253, 375, 307, 321, 280, 425, 411, 200, 421, 18, 335, 321, 406,\n 321, 320, 405, 314, 315, 17, 423, 426, 266, 396, 377, 369, 270, 322, 269, 413, 417, 464, 385, 386, 258, 248, 456, 419, 298, 284, 333, 168, 417, 8,\n 448, 346, 261, 417, 413, 285, 326, 327, 328, 277, 355, 329, 309, 392, 438, 381, 382, 256, 279, 429, 360, 365, 364, 379, 355, 277, 437, 282, 443, 283,\n 281, 275, 363, 395, 431, 369, 299, 297, 337, 335, 273, 321, 348, 450, 349, 359, 446, 467, 283, 293, 282, 250, 458, 462, 300, 276, 383, 292, 308, 325,\n 283, 276, 293, 264, 372, 447, 346, 352, 340, 354, 274, 19, 363, 456, 281, 426, 436, 425, 380, 381, 252, 267, 269, 393, 421, 200, 428, 371, 266, 329,\n 432, 287, 422, 290, 250, 328, 385, 258, 384, 446, 265, 342, 386, 387, 257, 422, 424, 430, 445, 342, 276, 422, 273, 424, 306, 292, 307, 352, 366, 345,\n 268, 271, 302, 358, 423, 371, 327, 294, 460, 331, 279, 294, 303, 271, 304, 436, 432, 427, 304, 272, 408, 395, 394, 431, 378, 395, 400, 296, 334, 299,\n 6, 351, 168, 376, 352, 411, 307, 325, 320, 285, 295, 336, 320, 319, 404, 329, 330, 349, 334, 293, 333, 366, 323, 447, 316, 15, 315, 331, 358, 279,\n 317, 14, 316, 8, 285, 9, 277, 329, 350, 253, 374, 252, 319, 318, 403, 351, 6, 419, 324, 318, 325, 397, 367, 365, 288, 435, 397, 278, 344, 439, 310,\n 272, 311, 248, 195, 281, 375, 273, 291, 175, 396, 199, 312, 311, 268, 276, 283, 445, 390, 373, 339, 295, 282, 296, 448, 449, 346, 356, 264, 454, 337,\n 336, 299, 337, 338, 151, 294, 278, 455, 308, 292, 415, 429, 358, 355, 265, 340, 372, 388, 390, 466, 352, 346, 280, 295, 442, 282, 354, 19, 370, 285,\n 441, 295, 195, 248, 197, 457, 440, 274, 301, 300, 368, 417, 351, 465, 251, 301, 389, 385, 380, 386, 394, 395, 379, 399, 412, 419, 410, 436, 322, 387,\n 373, 388, 326, 2, 393, 354, 370, 461, 393, 164, 267, 268, 302, 12, 386, 374, 387, 312, 268, 13, 298, 293, 301, 265, 446, 340, 380, 385, 381, 280, 330,\n 425, 322, 426, 391, 420, 429, 437, 393, 391, 326, 344, 440, 438, 458, 459, 461, 364, 434, 394, 428, 396, 262, 274, 354, 457, 317, 316, 402, 316, 315,\n 403, 315, 314, 404, 314, 313, 405, 313, 421, 406, 323, 366, 361, 292, 306, 407, 306, 291, 408, 291, 287, 409, 287, 432, 410, 427, 434, 411, 372, 264,\n 383, 459, 309, 457, 366, 352, 401, 1, 274, 4, 418, 421, 262, 331, 294, 358, 435, 433, 367, 392, 289, 439, 328, 462, 326, 94, 2, 370, 289, 305, 455, 339,\n 254, 448, 359, 255, 446, 254, 253, 449, 253, 252, 450, 252, 256, 451, 256, 341, 452, 414, 413, 463, 286, 441, 414, 286, 258, 441, 258, 257, 442, 257,\n 259, 443, 259, 260, 444, 260, 467, 445, 309, 459, 250, 305, 289, 290, 305, 290, 460, 401, 376, 435, 309, 250, 392, 376, 411, 433, 453, 341, 464, 357,\n 453, 465, 343, 357, 412, 437, 343, 399, 344, 360, 440, 420, 437, 456, 360, 420, 363, 361, 401, 288, 265, 372, 353, 390, 339, 249, 339, 448, 255];\n\nexport const TRI68 = [0, 1, 36, 0, 36, 17, 1, 2, 41, 1, 41, 36, 2, 3, 31, 2, 31, 41, 3, 4, 48, 3, 48, 31, 4, 5, 48, 5, 6, 48, 6, 7, 59, 6, 59, 48, 7, 8, 58, 7, 58, 59,\n 8, 9, 56, 8, 56, 57, 8, 57, 58, 9, 10, 55, 9, 55, 56, 10, 11, 54, 10, 54, 55, 11, 12, 54, 12, 13, 54, 13, 14, 35, 13, 35, 54, 14, 15, 46, 14, 46, 35, 15, 16,\n 45, 15, 45, 46, 16, 26, 45, 17, 36, 18, 18, 37, 19, 18, 36, 37, 19, 38, 20, 19, 37, 38, 20, 39, 21, 20, 38, 39, 21, 39, 27, 22, 42, 23, 22, 27, 42, 23, 43, 24,\n 23, 42, 43, 24, 44, 25, 24, 43, 44, 25, 45, 26, 25, 44, 45, 27, 39, 28, 27, 28, 42, 28, 39, 29, 28, 29, 42, 29, 31, 30, 29, 30, 35, 29, 40, 31, 29, 35, 47, 29,\n 39, 40, 29, 47, 42, 30, 31, 32, 30, 32, 33, 30, 33, 34, 30, 34, 35, 31, 50, 32, 31, 40, 41, 31, 48, 49, 31, 49, 50, 32, 51, 33, 32, 50, 51, 33, 51, 34, 34, 52,\n 35, 34, 51, 52, 35, 46, 47, 35, 52, 53, 35, 53, 54, 36, 41, 37, 37, 40, 38, 37, 41, 40, 38, 40, 39, 42, 47, 43, 43, 47, 44, 44, 46, 45, 44, 47, 46, 48, 60, 49,\n 48, 59, 60, 49, 61, 50, 49, 60, 61, 50, 62, 51, 50, 61, 62, 51, 62, 52, 52, 63, 53, 52, 62, 63, 53, 64, 54, 53, 63, 64, 54, 64, 55, 55, 65, 56, 55, 64, 65, 56,\n 66, 57, 56, 65, 66, 57, 66, 58, 58, 67, 59, 58, 66, 67, 59, 67, 60, 60, 67, 61, 61, 66, 62, 61, 67, 66, 62, 66, 63, 63, 65, 64, 63, 66, 65, 21, 27, 22];\n\nexport const TRI33 = [\n /* eyes */ 0, 8, 7, 7, 8, 1, 2, 10, 9, 9, 10, 3,\n /* brows */ 17, 0, 18, 18, 0, 7, 18, 7, 19, 19, 7, 1, 19, 1, 11, 19, 11, 20, 21, 3, 22, 21, 9, 3, 20, 9, 21, 20, 2, 9, 20, 11, 2,\n /* 4head */ 23, 17, 18, 25, 21, 22, 24, 19, 20, 24, 18, 19, 24, 20, 21, 24, 23, 18, 24, 21, 25,\n /* nose */ 11, 12, 4, 11, 4, 13, 1, 12, 11, 11, 13, 2, 12, 14, 4, 4, 14, 13,\n /* up-lip */ 14, 5, 15, 14, 15, 6, 12, 5, 14, 14, 6, 13,\n /* cheeks */ 8, 12, 1, 2, 13, 10, 8, 26, 12, 10, 13, 27, 26, 5, 12, 13, 6, 27, 0, 26, 8, 10, 27, 3,\n /* chin */ 5, 32, 16, 16, 32, 6, 5, 30, 32, 6, 32, 31,\n /* cont */ 26, 30, 5, 27, 6, 31, 0, 28, 26, 3, 27, 29, 17, 28, 0, 3, 29, 22, 23, 28, 17, 22, 29, 25, 28, 30, 26, 27, 31, 29,\n];\n\nexport const TRI7 = [0, 4, 1, 2, 4, 3, 4, 5, 6];\n\nexport const VTX68 = [\n /* cont */ 127, 234, 132, 58, 172, 150, 149, 148, 152, 377, 378, 379, 397, 288, 361, 454, 356,\n /* brows */ 70, 63, 105, 66, 107, 336, 296, 334, 293, 300,\n /* nose */ 168, 6, 195, 4, 98, 97, 2, 326, 327,\n /* eyes */ 33, 160, 158, 133, 153, 144, 362, 385, 387, 263, 373, 380,\n /* lip */ 57, 40, 37, 0, 267, 270, 287, 321, 314, 17, 84, 91,\n /* mouth */ 78, 81, 13, 311, 308, 402, 14, 178,\n];\n\nexport const VTX33 = [33, 133, 362, 263, 1, 62, 308, 159, 145, 386, 374, 6, 102, 331, 2, 13, 14, 70, 105, 107, 336, 334, 300, 54, 10, 284, 50, 280, 234, 454, 58, 288, 152];\n\nexport const VTX7 = [33, 133, 362, 263, 1, 78, 308];\n\nexport const UV68 = VTX68.map((x) => UV468[x]);\n\nexport const UV33 = VTX33.map((x) => UV468[x]);\n\nexport const UV7 = VTX7.map((x) => UV468[x]);\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { age: 0 };\nlet skipped = Number.MAX_SAFE_INTEGER;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.age.modelPath);\n if (config.debug) log(`load model: ${config.face.age.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.age.skipFrames) && config.videoOptimized && last.age && (last.age > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const enhance = tf.mul(resize, [255.0]);\n tf.dispose(resize);\n\n let ageT;\n const obj = { age: 0 };\n\n if (!config.profile) {\n if (config.face.age.enabled) ageT = await model.predict(enhance);\n } else {\n const profileAge = config.face.age.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n ageT = profileAge.result.clone();\n profileAge.result.dispose();\n profile.run('age', profileAge);\n }\n enhance.dispose();\n\n if (ageT) {\n const data = ageT.dataSync();\n obj.age = Math.trunc(10 * data[0]) / 10;\n }\n ageT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from './log';\n\nexport const data = {};\n\nexport function run(name: string, raw: any) {\n if (!raw || !raw.kernels) return;\n const maxResults = 5;\n const time = raw.kernels\n .filter((a) => a.kernelTimeMs > 0)\n .reduce((a, b) => a += b.kernelTimeMs, 0);\n const slowest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.kernelTimeMs > 0)\n .sort((a, b) => b.kernelTimeMs - a.kernelTimeMs);\n const largest = raw.kernels\n .map((a, i) => { a.id = i; return a; })\n .filter((a) => a.totalBytesSnapshot > 0)\n .sort((a, b) => b.totalBytesSnapshot - a.totalBytesSnapshot);\n if (slowest.length > maxResults) slowest.length = maxResults;\n if (largest.length > maxResults) largest.length = maxResults;\n const res = { newBytes: raw.newBytes, newTensors: raw.newTensors, peakBytes: raw.peakBytes, numKernelOps: raw.kernels.length, timeKernelOps: time, slowestKernelOps: slowest, largestKernelOps: largest };\n data[name] = res;\n log('Human profiler', name, res);\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nlet model;\nlet last = { gender: '' };\nlet skipped = Number.MAX_SAFE_INTEGER;\nlet alternative = false;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.gender.modelPath);\n alternative = model.inputs[0].shape[3] === 1;\n if (config.debug) log(`load model: ${config.face.gender.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.gender.skipFrames) && config.videoOptimized && last.gender !== '') {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n let enhance;\n if (alternative) {\n enhance = tf.tidy(() => {\n const [red, green, blue] = tf.split(resize, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const normalize = grayscale.sub(0.5).mul(2); // range grayscale:-1..1\n return normalize;\n });\n } else {\n enhance = tf.mul(resize, [255.0]); // range RGB:0..255\n }\n tf.dispose(resize);\n\n let genderT;\n const obj = { gender: '', confidence: 0 };\n\n if (!config.profile) {\n if (config.face.gender.enabled) genderT = await model.predict(enhance);\n } else {\n const profileGender = config.face.gender.enabled ? await tf.profile(() => model.predict(enhance)) : {};\n genderT = profileGender.result.clone();\n profileGender.result.dispose();\n profile.run('gender', profileGender);\n }\n enhance.dispose();\n\n if (genderT) {\n const data = genderT.dataSync();\n if (alternative) {\n // returns two values 0..1, bigger one is prediction\n if (data[0] > config.face.gender.minConfidence || data[1] > config.face.gender.minConfidence) {\n obj.gender = data[0] > data[1] ? 'female' : 'male';\n obj.confidence = data[0] > data[1] ? (Math.trunc(100 * data[0]) / 100) : (Math.trunc(100 * data[1]) / 100);\n }\n } else {\n // returns one value 0..1, .5 is prediction threshold\n const confidence = Math.trunc(200 * Math.abs((data[0] - 0.5))) / 100;\n if (confidence > config.face.gender.minConfidence) {\n obj.gender = data[0] <= 0.5 ? 'female' : 'male';\n obj.confidence = Math.min(0.99, confidence);\n }\n }\n }\n genderT.dispose();\n\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\nconst annotations = ['angry', 'disgust', 'fear', 'happy', 'sad', 'surprise', 'neutral'];\nlet model;\nlet last: Array<{ score: number, emotion: string }> = [];\nlet skipped = Number.MAX_SAFE_INTEGER;\n\n// tuning values\nconst rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.emotion.modelPath);\n if (config.debug) log(`load model: ${config.face.emotion.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if ((skipped < config.face.emotion.skipFrames) && config.videoOptimized && (last.length > 0)) {\n skipped++;\n return last;\n }\n if (config.videoOptimized) skipped = 0;\n else skipped = Number.MAX_SAFE_INTEGER;\n return new Promise(async (resolve) => {\n const resize = tf.image.resizeBilinear(image, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false);\n const [red, green, blue] = tf.split(resize, 3, 3);\n resize.dispose();\n // weighted rgb to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n red.dispose();\n green.dispose();\n blue.dispose();\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n redNorm.dispose();\n greenNorm.dispose();\n blueNorm.dispose();\n const normalize = tf.tidy(() => grayscale.sub(0.5).mul(2));\n grayscale.dispose();\n const obj: Array<{ score: number, emotion: string }> = [];\n if (config.face.emotion.enabled) {\n let data;\n if (!config.profile) {\n const emotionT = await model.predict(normalize); // result is already in range 0..1, no need for additional activation\n data = emotionT.dataSync();\n tf.dispose(emotionT);\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n data = profileData.result.dataSync();\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n for (let i = 0; i < data.length; i++) {\n if (data[i] > config.face.emotion.minConfidence) obj.push({ score: Math.min(0.99, Math.trunc(100 * data[i]) / 100), emotion: annotations[i] });\n }\n obj.sort((a, b) => b.score - a.score);\n }\n normalize.dispose();\n last = obj;\n resolve(obj);\n });\n}\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\n\ntype Tensor = {};\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.face.embedding.modelPath);\n if (config.debug) log(`load model: ${config.face.embedding.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport function simmilarity(embedding1, embedding2, order = 2): Number {\n if (!embedding1 || !embedding2) return 0;\n if (embedding1?.length === 0 || embedding2?.length === 0) return 0;\n if (embedding1?.length !== embedding2?.length) return 0;\n // general minkowski distance, euclidean distance is limited case where order is 2\n const distance = embedding1\n .map((val, i) => (Math.abs(embedding1[i] - embedding2[i]) ** order)) // distance squared\n .reduce((sum, now) => (sum + now), 0) // sum all distances\n ** (1 / order); // get root of\n const res = Math.max(Math.trunc(1000 * (1 - distance)) / 1000, 0);\n return res;\n}\n\nexport function match(embedding: Array, db: Array, threshold = 0) {\n let best = { simmilarity: 0, name: '', source: '', embedding: [] };\n if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best;\n for (const f of db) {\n if (f.embedding && f.name) {\n const perc = simmilarity(embedding, f.embedding);\n if (perc > threshold && perc > best.simmilarity) best = { ...f, simmilarity: perc };\n }\n }\n return best;\n}\n\nexport function enhance(input): Tensor {\n const image = tf.tidy(() => {\n // input received from detector is already normalized to 0..1\n // input is also assumed to be straightened\n // const data = tf.image.resizeBilinear(input, [model.inputs[0].shape[2], model.inputs[0].shape[1]], false); // just resize to fit the embedding model\n // do a tight crop of image and resize it to fit the model\n const box = [[0.05, 0.15, 0.85, 0.85]]; // empyrical values for top, left, bottom, right\n const tensor = input.image || input.tensor;\n if (!(tensor instanceof tf.Tensor)) return null;\n const crop = (tensor.shape.length === 3)\n ? tf.image.cropAndResize(tf.expandDims(tensor, 0), box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]) // add batch dimension if missing\n : tf.image.cropAndResize(tensor, box, [0], [model.inputs[0].shape[2], model.inputs[0].shape[1]]);\n\n // convert to black&white to avoid colorization impact\n const rgb = [0.2989, 0.5870, 0.1140]; // factors for red/green/blue colors when converting to grayscale: https://www.mathworks.com/help/matlab/ref/rgb2gray.html\n const [red, green, blue] = tf.split(crop, 3, 3);\n const redNorm = tf.mul(red, rgb[0]);\n const greenNorm = tf.mul(green, rgb[1]);\n const blueNorm = tf.mul(blue, rgb[2]);\n const grayscale = tf.addN([redNorm, greenNorm, blueNorm]);\n const merge = tf.stack([grayscale, grayscale, grayscale], 3).squeeze(4);\n\n /*\n // optional increase image contrast\n // or do it per-channel so mean is done on each channel\n // or do it based on histogram\n const mean = merge.mean();\n const factor = 5;\n const contrast = merge.sub(mean).mul(factor).add(mean);\n */\n\n // normalize brightness from 0..1\n const darken = merge.sub(merge.min());\n const lighten = darken.div(darken.max());\n\n return lighten;\n });\n return image;\n}\n\nexport async function predict(input, config): Promise {\n if (!model) return [];\n return new Promise(async (resolve) => {\n // let data: Array<[]> = [];\n let data: Array = [];\n if (config.face.embedding.enabled) {\n const image = enhance(input);\n if (!config.profile) {\n data = tf.tidy(() => {\n /*\n // if needed convert from NHWC to NCHW\n const nchw = image.transpose([3, 0, 1, 2]);\n */\n\n const res = model.predict(image);\n\n /*\n // optionally do it twice with flipped image and average results\n const res1 = model.predict(image);\n const flipped = tf.image.flipLeftRight(image);\n const res2 = model.predict(flipped);\n const merge = tf.stack([res1, res2], 2).squeeze();\n const res = reshape.logSumExp(1);\n */\n\n /*\n // optional normalize outputs with l2 normalization\n const scaled = tf.tidy(() => {\n const l2 = res.norm('euclidean');\n const scale = res.div(l2);\n return scale;\n });\n */\n\n // optional reduce feature vector complexity\n const reshape = res.reshape([128, 2]); // split 256 vectors into 128 x 2\n const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it\n\n const output: Array = reduce.dataSync();\n return [...output]; // convert typed array to simple array\n });\n } else {\n const profileData = await tf.profile(() => model.predict({ img_inputs: image }));\n data = [...profileData.result.dataSync()];\n profileData.result.dispose();\n profile.run('emotion', profileData);\n }\n tf.dispose(image);\n }\n resolve(data);\n });\n}\n\n/*\ngit clone https://github.com/becauseofAI/MobileFace\ncd MobileFace/MobileFace_Identification\nmmconvert --srcFramework mxnet --inputWeight MobileFace_Identification_V3-0000.params --inputNetwork MobileFace_Identification_V3-symbol.json --inputShape 3,112,112 --dstFramework tensorflow --outputModel saved\nsaved_model_cli show --dir saved/\ntensorflowjs_converter --input_format tf_saved_model --output_format tfjs_graph_model --saved_model_tags train saved/ graph/\n~/dev/detector/signature.js graph/\n2021-03-12 08:25:12 DATA: created on: 2021-03-12T13:17:11.960Z\n2021-03-12 08:25:12 INFO: graph model: /home/vlado/dev/face/MobileFace/MobileFace_Identification/graph/model.json\n2021-03-12 08:25:12 INFO: size: { unreliable: true, numTensors: 75, numDataBuffers: 75, numBytes: 2183192 }\n2021-03-12 08:25:12 INFO: model inputs based on signature\n2021-03-12 08:25:12 INFO: model outputs based on signature\n2021-03-12 08:25:12 DATA: inputs: [ { name: 'data:0', dtype: 'DT_FLOAT', shape: [ -1, 112, 112, 3, [length]: 4 ] }, [length]: 1 ]\n2021-03-12 08:25:12 DATA: outputs: [ { id: 0, name: 'batchnorm0/add_1:0', dytpe: 'DT_FLOAT', shape: [ -1, 256, [length]: 2 ] }, [length]: 1 ]\n*/\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as modelBase from './modelBase';\nimport * as decodeMultiple from './decodeMultiple';\nimport * as decodePose from './decodePose';\nimport * as util from './util';\n\nasync function estimateMultiple(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const allTensorBuffers = await util.toTensorBuffers3D([res.heatmapScores, res.offsets, res.displacementFwd, res.displacementBwd]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const displacementsFwdBuffer = allTensorBuffers[2];\n const displacementsBwdBuffer = allTensorBuffers[3];\n const poses = await decodeMultiple.decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, config.body.nmsRadius, config.body.maxDetections, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses(poses, [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nasync function estimateSingle(input, res, config, inputSize) {\n return new Promise(async (resolve) => {\n const pose = await decodePose.decodeSinglePose(res.heatmapScores, res.offsets, config.body.scoreThreshold);\n const scaled = util.scaleAndFlipPoses([pose], [input.shape[1], input.shape[2]], [inputSize, inputSize]);\n resolve(scaled);\n });\n}\n\nexport class PoseNet {\n baseModel: any;\n inputSize: number\n constructor(model) {\n this.baseModel = model;\n this.inputSize = model.model.inputs[0].shape[1];\n if (this.inputSize < 128) this.inputSize = 257;\n }\n\n async estimatePoses(input, config) {\n const resized = util.resizeTo(input, [this.inputSize, this.inputSize]);\n const res = this.baseModel.predict(resized, config);\n\n const poses = (config.body.maxDetections < 2)\n ? await estimateSingle(input, res, config, this.inputSize)\n : await estimateMultiple(input, res, config, this.inputSize);\n\n res.heatmapScores.dispose();\n res.offsets.dispose();\n res.displacementFwd.dispose();\n res.displacementBwd.dispose();\n resized.dispose();\n\n return poses;\n }\n\n dispose() {\n this.baseModel.dispose();\n }\n}\n\nexport async function load(config) {\n const model = await tf.loadGraphModel(config.body.modelPath);\n const mobilenet = new modelBase.BaseModel(model);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n return new PoseNet(mobilenet);\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nfunction nameOutputResultsMobileNet(results) {\n const [offsets, heatmap, displacementFwd, displacementBwd] = results;\n return { offsets, heatmap, displacementFwd, displacementBwd };\n}\n\nexport class BaseModel {\n model: any;\n constructor(model) {\n this.model = model;\n }\n\n predict(input) {\n return tf.tidy(() => {\n const asFloat = input.toFloat().div(127.5).sub(1.0);\n const asBatch = asFloat.expandDims(0);\n const results = this.model.predict(asBatch);\n const results3d = results.map((y) => y.squeeze([0]));\n const namedResults = nameOutputResultsMobileNet(results3d);\n return {\n heatmapScores: namedResults.heatmap.sigmoid(),\n offsets: namedResults.offsets,\n displacementFwd: namedResults.displacementFwd,\n displacementBwd: namedResults.displacementBwd,\n };\n });\n }\n\n dispose() {\n this.model.dispose();\n }\n}\n", "// algorithm based on Coursera Lecture from Algorithms, Part 1: https://www.coursera.org/learn/algorithms-part1/lecture/ZjoSM/heapsort\nfunction half(k) {\n return Math.floor(k / 2);\n}\nexport class MaxHeap {\n priorityQueue: any;\n numberOfElements: number;\n getElementValue: any;\n\n constructor(maxSize, getElementValue) {\n this.priorityQueue = new Array(maxSize);\n this.numberOfElements = -1;\n this.getElementValue = getElementValue;\n }\n\n enqueue(x) {\n this.priorityQueue[++this.numberOfElements] = x;\n this.swim(this.numberOfElements);\n }\n\n dequeue() {\n const max = this.priorityQueue[0];\n this.exchange(0, this.numberOfElements--);\n this.sink(0);\n this.priorityQueue[this.numberOfElements + 1] = null;\n return max;\n }\n\n empty() {\n return this.numberOfElements === -1;\n }\n\n size() {\n return this.numberOfElements + 1;\n }\n\n all() {\n return this.priorityQueue.slice(0, this.numberOfElements + 1);\n }\n\n max() {\n return this.priorityQueue[0];\n }\n\n swim(k) {\n while (k > 0 && this.less(half(k), k)) {\n this.exchange(k, half(k));\n k = half(k);\n }\n }\n\n sink(k) {\n while (2 * k <= this.numberOfElements) {\n let j = 2 * k;\n if (j < this.numberOfElements && this.less(j, j + 1)) j++;\n if (!this.less(k, j)) break;\n this.exchange(k, j);\n k = j;\n }\n }\n\n getValueAt(i) {\n return this.getElementValue(this.priorityQueue[i]);\n }\n\n less(i, j) {\n return this.getValueAt(i) < this.getValueAt(j);\n }\n\n exchange(i, j) {\n const t = this.priorityQueue[i];\n this.priorityQueue[i] = this.priorityQueue[j];\n this.priorityQueue[j] = t;\n }\n}\n", "import * as heapSort from './heapSort';\n\nfunction scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores) {\n const [height, width] = scores.shape;\n let localMaximum = true;\n const yStart = Math.max(heatmapY - localMaximumRadius, 0);\n const yEnd = Math.min(heatmapY + localMaximumRadius + 1, height);\n for (let yCurrent = yStart; yCurrent < yEnd; ++yCurrent) {\n const xStart = Math.max(heatmapX - localMaximumRadius, 0);\n const xEnd = Math.min(heatmapX + localMaximumRadius + 1, width);\n for (let xCurrent = xStart; xCurrent < xEnd; ++xCurrent) {\n if (scores.get(yCurrent, xCurrent, keypointId) > score) {\n localMaximum = false;\n break;\n }\n }\n if (!localMaximum) break;\n }\n return localMaximum;\n}\n\nexport function buildPartWithScoreQueue(scoreThreshold, localMaximumRadius, scores) {\n const [height, width, numKeypoints] = scores.shape;\n const queue = new heapSort.MaxHeap(height * width * numKeypoints, ({ score }) => score);\n for (let heatmapY = 0; heatmapY < height; ++heatmapY) {\n for (let heatmapX = 0; heatmapX < width; ++heatmapX) {\n for (let keypointId = 0; keypointId < numKeypoints; ++keypointId) {\n const score = scores.get(heatmapY, heatmapX, keypointId);\n // Only consider parts with score greater or equal to threshold as root candidates.\n if (score < scoreThreshold) continue;\n // Only consider keypoints whose score is maximum in a local window.\n if (scoreIsMaximumInLocalWindow(keypointId, score, heatmapY, heatmapX, localMaximumRadius, scores)) {\n queue.enqueue({ score, part: { heatmapY, heatmapX, id: keypointId } });\n }\n }\n }\n }\n return queue;\n}\n", "import * as keypoints from './keypoints';\nimport * as vectors from './vectors';\nimport * as decoders from './decoders';\n\nconst parentChildrenTuples = keypoints.poseChain.map(([parentJoinName, childJoinName]) => ([keypoints.partIds[parentJoinName], keypoints.partIds[childJoinName]]));\nconst parentToChildEdges = parentChildrenTuples.map(([, childJointId]) => childJointId);\nconst childToParentEdges = parentChildrenTuples.map(([parentJointId]) => parentJointId);\n\nconst defaultOutputStride = 16;\n\nfunction getDisplacement(edgeId, point, displacements) {\n const numEdges = displacements.shape[2] / 2;\n return {\n y: displacements.get(point.y, point.x, edgeId),\n x: displacements.get(point.y, point.x, numEdges + edgeId),\n };\n}\n\nfunction getStridedIndexNearPoint(point, outputStride, height, width) {\n return {\n y: vectors.clamp(Math.round(point.y / outputStride), 0, height - 1),\n x: vectors.clamp(Math.round(point.x / outputStride), 0, width - 1),\n };\n}\n\nfunction traverseToTargetKeypoint(edgeId, sourceKeypoint, targetKeypointId, scoresBuffer, offsets, outputStride, displacements, offsetRefineStep = 2) {\n const [height, width] = scoresBuffer.shape;\n // Nearest neighbor interpolation for the source->target displacements.\n const sourceKeypointIndices = getStridedIndexNearPoint(sourceKeypoint.position, outputStride, height, width);\n const displacement = getDisplacement(edgeId, sourceKeypointIndices, displacements);\n const displacedPoint = vectors.addVectors(sourceKeypoint.position, displacement);\n let targetKeypoint = displacedPoint;\n for (let i = 0; i < offsetRefineStep; i++) {\n const targetKeypointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const offsetPoint = vectors.getOffsetPoint(targetKeypointIndices.y, targetKeypointIndices.x, targetKeypointId, offsets);\n targetKeypoint = vectors.addVectors({\n x: targetKeypointIndices.x * outputStride,\n y: targetKeypointIndices.y * outputStride,\n }, { x: offsetPoint.x, y: offsetPoint.y });\n }\n const targetKeyPointIndices = getStridedIndexNearPoint(targetKeypoint, outputStride, height, width);\n const score = scoresBuffer.get(targetKeyPointIndices.y, targetKeyPointIndices.x, targetKeypointId);\n return { position: targetKeypoint, part: keypoints.partNames[targetKeypointId], score };\n}\n\nexport function decodePose(root, scores, offsets, outputStride, displacementsFwd, displacementsBwd) {\n const numParts = scores.shape[2];\n const numEdges = parentToChildEdges.length;\n const instanceKeypoints = new Array(numParts);\n // Start a new detection instance at the position of the root.\n const { part: rootPart, score: rootScore } = root;\n const rootPoint = vectors.getImageCoords(rootPart, outputStride, offsets);\n instanceKeypoints[rootPart.id] = {\n score: rootScore,\n part: keypoints.partNames[rootPart.id],\n position: rootPoint,\n };\n // Decode the part positions upwards in the tree, following the backward displacements.\n for (let edge = numEdges - 1; edge >= 0; --edge) {\n const sourceKeypointId = parentToChildEdges[edge];\n const targetKeypointId = childToParentEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsBwd);\n }\n }\n // Decode the part positions downwards in the tree, following the forward displacements.\n for (let edge = 0; edge < numEdges; ++edge) {\n const sourceKeypointId = childToParentEdges[edge];\n const targetKeypointId = parentToChildEdges[edge];\n if (instanceKeypoints[sourceKeypointId] && !instanceKeypoints[targetKeypointId]) {\n instanceKeypoints[targetKeypointId] = traverseToTargetKeypoint(edge, instanceKeypoints[sourceKeypointId], targetKeypointId, scores, offsets, outputStride, displacementsFwd);\n }\n }\n return instanceKeypoints;\n}\n\nexport async function decodeSinglePose(heatmapScores, offsets, minScore) {\n let totalScore = 0.0;\n const heatmapValues = decoders.argmax2d(heatmapScores);\n const allTensorBuffers = await Promise.all([heatmapScores.buffer(), offsets.buffer(), heatmapValues.buffer()]);\n const scoresBuffer = allTensorBuffers[0];\n const offsetsBuffer = allTensorBuffers[1];\n const heatmapValuesBuffer = allTensorBuffers[2];\n const offsetPoints = decoders.getOffsetPoints(heatmapValuesBuffer, defaultOutputStride, offsetsBuffer);\n const offsetPointsBuffer = await offsetPoints.buffer();\n const keypointConfidence = Array.from(decoders.getPointsConfidence(scoresBuffer, heatmapValuesBuffer));\n const instanceKeypoints = keypointConfidence.map((score, i) => {\n totalScore += score;\n return {\n position: {\n y: offsetPointsBuffer.get(i, 0),\n x: offsetPointsBuffer.get(i, 1),\n },\n part: keypoints.partNames[i],\n score,\n };\n });\n const filteredKeypoints = instanceKeypoints.filter((kpt) => kpt.score > minScore);\n heatmapValues.dispose();\n offsetPoints.dispose();\n return { keypoints: filteredKeypoints, score: totalScore / instanceKeypoints.length };\n}\n", "import * as kpt from './keypoints';\n\nexport function getOffsetPoint(y, x, keypoint, offsets) {\n return {\n y: offsets.get(y, x, keypoint),\n x: offsets.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getImageCoords(part, outputStride, offsets) {\n const { heatmapY, heatmapX, id: keypoint } = part;\n const { y, x } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsets);\n return {\n x: part.heatmapX * outputStride + x,\n y: part.heatmapY * outputStride + y,\n };\n}\n\nexport function fillArray(element, size) {\n const result = new Array(size);\n for (let i = 0; i < size; i++) {\n result[i] = element;\n }\n return result;\n}\n\nexport function clamp(a, min, max) {\n if (a < min) return min;\n if (a > max) return max;\n return a;\n}\n\nexport function squaredDistance(y1, x1, y2, x2) {\n const dy = y2 - y1;\n const dx = x2 - x1;\n return dy * dy + dx * dx;\n}\n\nexport function addVectors(a, b) {\n return { x: a.x + b.x, y: a.y + b.y };\n}\n\nexport function clampVector(a, min, max) {\n return { y: clamp(a.y, min, max), x: clamp(a.x, min, max) };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as kpt from './keypoints';\n\nexport function getPointsConfidence(heatmapScores, heatMapCoords) {\n const numKeypoints = heatMapCoords.shape[0];\n const result = new Float32Array(numKeypoints);\n for (let keypoint = 0; keypoint < numKeypoints; keypoint++) {\n const y = heatMapCoords.get(keypoint, 0);\n const x = heatMapCoords.get(keypoint, 1);\n result[keypoint] = heatmapScores.get(y, x, keypoint);\n }\n return result;\n}\n\nfunction getOffsetPoint(y, x, keypoint, offsetsBuffer) {\n return {\n y: offsetsBuffer.get(y, x, keypoint),\n x: offsetsBuffer.get(y, x, keypoint + kpt.NUM_KEYPOINTS),\n };\n}\n\nexport function getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer) {\n const result: Array = [];\n for (let keypoint = 0; keypoint < kpt.NUM_KEYPOINTS; keypoint++) {\n const heatmapY = heatMapCoordsBuffer.get(keypoint, 0).valueOf();\n const heatmapX = heatMapCoordsBuffer.get(keypoint, 1).valueOf();\n const { x, y } = getOffsetPoint(heatmapY, heatmapX, keypoint, offsetsBuffer);\n result.push(y);\n result.push(x);\n }\n return tf.tensor2d(result, [kpt.NUM_KEYPOINTS, 2]);\n}\n\nexport function getOffsetPoints(heatMapCoordsBuffer, outputStride, offsetsBuffer) {\n return tf.tidy(() => heatMapCoordsBuffer.toTensor().mul(tf.scalar(outputStride, 'int32')).toFloat().add(getOffsetVectors(heatMapCoordsBuffer, offsetsBuffer)));\n}\n\nfunction mod(a, b) {\n return tf.tidy(() => {\n const floored = a.div(tf.scalar(b, 'int32'));\n return a.sub(floored.mul(tf.scalar(b, 'int32')));\n });\n}\n\nexport function argmax2d(inputs) {\n const [height, width, depth] = inputs.shape;\n return tf.tidy(() => {\n const reshaped = inputs.reshape([height * width, depth]);\n const coords = reshaped.argMax(0);\n const yCoords = coords.div(tf.scalar(width, 'int32')).expandDims(1);\n const xCoords = mod(coords, width).expandDims(1);\n return tf.concat([yCoords, xCoords], 1);\n });\n}\n", "import * as buildParts from './buildParts';\nimport * as decodePose from './decodePose';\nimport * as vectors from './vectors';\n\nconst kLocalMaximumRadius = 1;\nconst defaultOutputStride = 16;\n\nfunction withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, { x, y }, keypointId) {\n return poses.some(({ keypoints }) => {\n const correspondingKeypoint = keypoints[keypointId].position;\n return vectors.squaredDistance(y, x, correspondingKeypoint.y, correspondingKeypoint.x) <= squaredNmsRadius;\n });\n}\n\nfunction getInstanceScore(existingPoses, squaredNmsRadius, instanceKeypoints) {\n const notOverlappedKeypointScores = instanceKeypoints.reduce((result, { position, score }, keypointId) => {\n if (!withinNmsRadiusOfCorrespondingPoint(existingPoses, squaredNmsRadius, position, keypointId)) result += score;\n return result;\n }, 0.0);\n return notOverlappedKeypointScores / instanceKeypoints.length;\n}\n\nexport function decodeMultiplePoses(scoresBuffer, offsetsBuffer, displacementsFwdBuffer, displacementsBwdBuffer, nmsRadius, maxDetections, scoreThreshold) {\n const poses: Array<{ keypoints: any, score: number }> = [];\n const queue = buildParts.buildPartWithScoreQueue(scoreThreshold, kLocalMaximumRadius, scoresBuffer);\n const squaredNmsRadius = nmsRadius ^ 2;\n // Generate at most maxDetections object instances per image in decreasing root part score order.\n while (poses.length < maxDetections && !queue.empty()) {\n // The top element in the queue is the next root candidate.\n const root = queue.dequeue();\n // Part-based non-maximum suppression: We reject a root candidate if it is within a disk of `nmsRadius` pixels from the corresponding part of a previously detected instance.\n const rootImageCoords = vectors.getImageCoords(root.part, defaultOutputStride, offsetsBuffer);\n if (withinNmsRadiusOfCorrespondingPoint(poses, squaredNmsRadius, rootImageCoords, root.part.id)) continue;\n // Else start a new detection instance at the position of the root.\n const keypoints = decodePose.decodePose(root, scoresBuffer, offsetsBuffer, defaultOutputStride, displacementsFwdBuffer, displacementsBwdBuffer);\n const score = getInstanceScore(poses, squaredNmsRadius, keypoints);\n if (score > scoreThreshold) poses.push({ keypoints, score });\n }\n return poses;\n}\n", "import * as kpt from './keypoints';\n\nexport function eitherPointDoesntMeetConfidence(a, b, minConfidence) {\n return (a < minConfidence || b < minConfidence);\n}\n\nexport function getAdjacentKeyPoints(keypoints, minConfidence) {\n return kpt.connectedPartIndices.reduce((result, [leftJoint, rightJoint]) => {\n if (eitherPointDoesntMeetConfidence(keypoints[leftJoint].score, keypoints[rightJoint].score, minConfidence)) {\n return result;\n }\n result.push([keypoints[leftJoint], keypoints[rightJoint]]);\n return result;\n }, []);\n}\n\nconst { NEGATIVE_INFINITY, POSITIVE_INFINITY } = Number;\nexport function getBoundingBox(keypoints) {\n return keypoints.reduce(({ maxX, maxY, minX, minY }, { position: { x, y } }) => ({\n maxX: Math.max(maxX, x),\n maxY: Math.max(maxY, y),\n minX: Math.min(minX, x),\n minY: Math.min(minY, y),\n }), {\n maxX: NEGATIVE_INFINITY,\n maxY: NEGATIVE_INFINITY,\n minX: POSITIVE_INFINITY,\n minY: POSITIVE_INFINITY,\n });\n}\n\nexport function getBoundingBoxPoints(keypoints) {\n const { minX, minY, maxX, maxY } = getBoundingBox(keypoints);\n return [{ x: minX, y: minY }, { x: maxX, y: minY }, { x: maxX, y: maxY }, { x: minX, y: maxY }];\n}\n\nexport async function toTensorBuffers3D(tensors) {\n return Promise.all(tensors.map((tensor) => tensor.buffer()));\n}\n\nexport function scalePose(pose, scaleY, scaleX) {\n return {\n score: pose.score,\n keypoints: pose.keypoints.map(({ score, part, position }) => ({\n score,\n part,\n position: { x: Math.trunc(position.x * scaleX), y: Math.trunc(position.y * scaleY) },\n })),\n };\n}\n\nexport function resizeTo(image, [targetH, targetW]) {\n const input = image.squeeze(0);\n const resized = input.resizeBilinear([targetH, targetW]);\n input.dispose();\n return resized;\n}\n\nexport function scaleAndFlipPoses(poses, [height, width], [inputResolutionHeight, inputResolutionWidth]) {\n const scaledPoses = poses.map((pose) => scalePose(pose, height / inputResolutionHeight, width / inputResolutionWidth));\n return scaledPoses;\n}\n", "// https://storage.googleapis.com/tfjs-models/demos/handpose/index.html\n\nimport { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as handdetector from './handdetector';\nimport * as handpipeline from './handpipeline';\nimport * as anchors from './anchors';\n\nconst MESH_ANNOTATIONS = {\n thumb: [1, 2, 3, 4],\n indexFinger: [5, 6, 7, 8],\n middleFinger: [9, 10, 11, 12],\n ringFinger: [13, 14, 15, 16],\n pinky: [17, 18, 19, 20],\n palmBase: [0],\n};\n\nexport class HandPose {\n handPipeline: any;\n\n constructor(handPipeline) {\n this.handPipeline = handPipeline;\n }\n\n static getAnnotations() {\n return MESH_ANNOTATIONS;\n }\n\n async estimateHands(input, config) {\n const predictions = await this.handPipeline.estimateHands(input, config);\n if (!predictions) return [];\n const hands: Array<{ confidence: number, box: any, landmarks: any, annotations: any }> = [];\n for (const prediction of predictions) {\n const annotations = {};\n if (prediction.landmarks) {\n for (const key of Object.keys(MESH_ANNOTATIONS)) {\n annotations[key] = MESH_ANNOTATIONS[key].map((index) => prediction.landmarks[index]);\n }\n }\n const box = prediction.box ? [\n Math.max(0, prediction.box.topLeft[0]),\n Math.max(0, prediction.box.topLeft[1]),\n Math.min(input.shape[2], prediction.box.bottomRight[0]) - prediction.box.topLeft[0],\n Math.min(input.shape[1], prediction.box.bottomRight[1]) - prediction.box.topLeft[1],\n ] : 0;\n hands.push({ confidence: prediction.confidence, box, landmarks: prediction.landmarks, annotations });\n }\n return hands;\n }\n}\n\nexport async function load(config) {\n const [handDetectorModel, handPoseModel] = await Promise.all([\n config.hand.enabled ? tf.loadGraphModel(config.hand.detector.modelPath, { fromTFHub: config.hand.detector.modelPath.includes('tfhub.dev') }) : null,\n config.hand.landmarks ? tf.loadGraphModel(config.hand.skeleton.modelPath, { fromTFHub: config.hand.skeleton.modelPath.includes('tfhub.dev') }) : null,\n ]);\n const handDetector = new handdetector.HandDetector(handDetectorModel, handDetectorModel?.inputs[0].shape[2], anchors.anchors);\n const handPipeline = new handpipeline.HandPipeline(handDetector, handPoseModel, handPoseModel?.inputs[0].shape[2]);\n const handPose = new HandPose(handPipeline);\n if (config.hand.enabled && config.debug) log(`load model: ${config.hand.detector.modelPath.match(/\\/(.*)\\./)[1]}`);\n if (config.hand.landmarks && config.debug) log(`load model: ${config.hand.skeleton.modelPath.match(/\\/(.*)\\./)[1]}`);\n return handPose;\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\n\nexport class HandDetector {\n model: any;\n anchors: any;\n anchorsTensor: any;\n inputSize: number;\n inputSizeTensor: any;\n doubleInputSizeTensor: any;\n\n constructor(model, inputSize, anchorsAnnotated) {\n this.model = model;\n this.anchors = anchorsAnnotated.map((anchor) => [anchor.x_center, anchor.y_center]);\n this.anchorsTensor = tf.tensor2d(this.anchors);\n this.inputSize = inputSize;\n this.inputSizeTensor = tf.tensor1d([inputSize, inputSize]);\n this.doubleInputSizeTensor = tf.tensor1d([inputSize * 2, inputSize * 2]);\n }\n\n normalizeBoxes(boxes) {\n return tf.tidy(() => {\n const boxOffsets = tf.slice(boxes, [0, 0], [-1, 2]);\n const boxSizes = tf.slice(boxes, [0, 2], [-1, 2]);\n const boxCenterPoints = tf.add(tf.div(boxOffsets, this.inputSizeTensor), this.anchorsTensor);\n const halfBoxSizes = tf.div(boxSizes, this.doubleInputSizeTensor);\n const startPoints = tf.mul(tf.sub(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n const endPoints = tf.mul(tf.add(boxCenterPoints, halfBoxSizes), this.inputSizeTensor);\n return tf.concat2d([startPoints, endPoints], 1);\n });\n }\n\n normalizeLandmarks(rawPalmLandmarks, index) {\n return tf.tidy(() => {\n const landmarks = tf.add(tf.div(rawPalmLandmarks.reshape([-1, 7, 2]), this.inputSizeTensor), this.anchors[index]);\n return tf.mul(landmarks, this.inputSizeTensor);\n });\n }\n\n async getBoxes(input, config) {\n const batched = this.model.predict(input);\n const predictions = batched.squeeze();\n batched.dispose();\n const scoresT = tf.tidy(() => tf.sigmoid(tf.slice(predictions, [0, 0], [-1, 1])).squeeze());\n const scores = scoresT.dataSync();\n const rawBoxes = tf.slice(predictions, [0, 1], [-1, 4]);\n const boxes = this.normalizeBoxes(rawBoxes);\n rawBoxes.dispose();\n const filteredT = await tf.image.nonMaxSuppressionAsync(boxes, scores, config.hand.maxHands, config.hand.iouThreshold, config.hand.scoreThreshold);\n const filtered = filteredT.arraySync();\n\n scoresT.dispose();\n filteredT.dispose();\n const hands: Array<{ box: any, palmLandmarks: any, confidence: number }> = [];\n for (const index of filtered) {\n if (scores[index] >= config.hand.minConfidence) {\n const matchingBox = tf.slice(boxes, [index, 0], [1, -1]);\n const rawPalmLandmarks = tf.slice(predictions, [index, 5], [1, 14]);\n const palmLandmarks = tf.tidy(() => this.normalizeLandmarks(rawPalmLandmarks, index).reshape([-1, 2]));\n rawPalmLandmarks.dispose();\n hands.push({ box: matchingBox, palmLandmarks, confidence: scores[index] });\n }\n }\n predictions.dispose();\n boxes.dispose();\n return hands;\n }\n\n async estimateHandBounds(input, config) {\n const inputHeight = input.shape[1];\n const inputWidth = input.shape[2];\n const image = tf.tidy(() => input.resizeBilinear([this.inputSize, this.inputSize]).div(127.5).sub(1));\n const predictions = await this.getBoxes(image, config);\n image.dispose();\n const hands: Array<{}> = [];\n if (!predictions || predictions.length === 0) return hands;\n for (const prediction of predictions) {\n const boxes = prediction.box.dataSync();\n const startPoint = boxes.slice(0, 2);\n const endPoint = boxes.slice(2, 4);\n const palmLandmarks = prediction.palmLandmarks.arraySync();\n prediction.box.dispose();\n prediction.palmLandmarks.dispose();\n hands.push(box.scaleBoxCoordinates({ startPoint, endPoint, palmLandmarks, confidence: prediction.confidence }, [inputWidth / this.inputSize, inputHeight / this.inputSize]));\n }\n return hands;\n }\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\n\nexport function getBoxSize(box) {\n return [\n Math.abs(box.endPoint[0] - box.startPoint[0]),\n Math.abs(box.endPoint[1] - box.startPoint[1]),\n ];\n}\n\nexport function getBoxCenter(box) {\n return [\n box.startPoint[0] + (box.endPoint[0] - box.startPoint[0]) / 2,\n box.startPoint[1] + (box.endPoint[1] - box.startPoint[1]) / 2,\n ];\n}\n\nexport function cutBoxFromImageAndResize(box, image, cropSize) {\n const h = image.shape[1];\n const w = image.shape[2];\n const boxes = [[\n box.startPoint[1] / h,\n box.startPoint[0] / w,\n box.endPoint[1] / h,\n box.endPoint[0] / w,\n ]];\n return tf.image.cropAndResize(image, boxes, [0], cropSize);\n}\n\nexport function scaleBoxCoordinates(box, factor) {\n const startPoint = [box.startPoint[0] * factor[0], box.startPoint[1] * factor[1]];\n const endPoint = [box.endPoint[0] * factor[0], box.endPoint[1] * factor[1]];\n const palmLandmarks = box.palmLandmarks.map((coord) => {\n const scaledCoord = [coord[0] * factor[0], coord[1] * factor[1]];\n return scaledCoord;\n });\n return { startPoint, endPoint, palmLandmarks, confidence: box.confidence };\n}\n\nexport function enlargeBox(box, factor = 1.5) {\n const center = getBoxCenter(box);\n const size = getBoxSize(box);\n const newHalfSize = [factor * size[0] / 2, factor * size[1] / 2];\n const startPoint = [center[0] - newHalfSize[0], center[1] - newHalfSize[1]];\n const endPoint = [center[0] + newHalfSize[0], center[1] + newHalfSize[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function squarifyBox(box) {\n const centers = getBoxCenter(box);\n const size = getBoxSize(box);\n const maxEdge = Math.max(...size);\n const halfSize = maxEdge / 2;\n const startPoint = [centers[0] - halfSize, centers[1] - halfSize];\n const endPoint = [centers[0] + halfSize, centers[1] + halfSize];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n\nexport function shiftBox(box, shiftFactor) {\n const boxSize = [\n box.endPoint[0] - box.startPoint[0],\n box.endPoint[1] - box.startPoint[1],\n ];\n const shiftVector = [boxSize[0] * shiftFactor[0], boxSize[1] * shiftFactor[1]];\n const startPoint = [box.startPoint[0] + shiftVector[0], box.startPoint[1] + shiftVector[1]];\n const endPoint = [box.endPoint[0] + shiftVector[0], box.endPoint[1] + shiftVector[1]];\n return { startPoint, endPoint, palmLandmarks: box.palmLandmarks };\n}\n", "import * as tf from '../../dist/tfjs.esm.js';\nimport * as box from './box';\nimport * as util from './util';\n\n// const PALM_BOX_SHIFT_VECTOR = [0, -0.4];\nconst PALM_BOX_ENLARGE_FACTOR = 5; // default 3\n// const HAND_BOX_SHIFT_VECTOR = [0, -0.1]; // move detected hand box by x,y to ease landmark detection\nconst HAND_BOX_ENLARGE_FACTOR = 1.65; // default 1.65\nconst PALM_LANDMARK_IDS = [0, 5, 9, 13, 17, 1, 2];\nconst PALM_LANDMARKS_INDEX_OF_PALM_BASE = 0;\nconst PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE = 2;\n\nexport class HandPipeline {\n handDetector: any;\n landmarkDetector: any;\n inputSize: number;\n storedBoxes: any;\n skipped: number;\n detectedHands: number;\n\n constructor(handDetector, landmarkDetector, inputSize) {\n this.handDetector = handDetector;\n this.landmarkDetector = landmarkDetector;\n this.inputSize = inputSize;\n this.storedBoxes = [];\n this.skipped = 0;\n this.detectedHands = 0;\n }\n\n getBoxForPalmLandmarks(palmLandmarks, rotationMatrix) {\n const rotatedPalmLandmarks = palmLandmarks.map((coord) => util.rotatePoint([...coord, 1], rotationMatrix));\n const boxAroundPalm = this.calculateLandmarksBoundingBox(rotatedPalmLandmarks);\n // return box.enlargeBox(box.squarifyBox(box.shiftBox(boxAroundPalm, PALM_BOX_SHIFT_VECTOR)), PALM_BOX_ENLARGE_FACTOR);\n return box.enlargeBox(box.squarifyBox(boxAroundPalm), PALM_BOX_ENLARGE_FACTOR);\n }\n\n getBoxForHandLandmarks(landmarks) {\n const boundingBox = this.calculateLandmarksBoundingBox(landmarks);\n // const boxAroundHand = box.enlargeBox(box.squarifyBox(box.shiftBox(boundingBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const boxAroundHand = box.enlargeBox(box.squarifyBox(boundingBox), HAND_BOX_ENLARGE_FACTOR);\n boxAroundHand.palmLandmarks = [];\n for (let i = 0; i < PALM_LANDMARK_IDS.length; i++) {\n boxAroundHand.palmLandmarks.push(landmarks[PALM_LANDMARK_IDS[i]].slice(0, 2));\n }\n return boxAroundHand;\n }\n\n transformRawCoords(rawCoords, box2, angle, rotationMatrix) {\n const boxSize = box.getBoxSize(box2);\n const scaleFactor = [boxSize[0] / this.inputSize, boxSize[1] / this.inputSize, (boxSize[0] + boxSize[1]) / this.inputSize / 2];\n const coordsScaled = rawCoords.map((coord) => [\n scaleFactor[0] * (coord[0] - this.inputSize / 2),\n scaleFactor[1] * (coord[1] - this.inputSize / 2),\n scaleFactor[2] * coord[2],\n ]);\n const coordsRotationMatrix = util.buildRotationMatrix(angle, [0, 0]);\n const coordsRotated = coordsScaled.map((coord) => {\n const rotated = util.rotatePoint(coord, coordsRotationMatrix);\n return [...rotated, coord[2]];\n });\n const inverseRotationMatrix = util.invertTransformMatrix(rotationMatrix);\n const boxCenter = [...box.getBoxCenter(box2), 1];\n const originalBoxCenter = [\n util.dot(boxCenter, inverseRotationMatrix[0]),\n util.dot(boxCenter, inverseRotationMatrix[1]),\n ];\n return coordsRotated.map((coord) => [\n coord[0] + originalBoxCenter[0],\n coord[1] + originalBoxCenter[1],\n coord[2],\n ]);\n }\n\n async estimateHands(image, config) {\n let useFreshBox = false;\n\n // run new detector every skipFrames unless we only want box to start with\n let boxes;\n if ((this.skipped === 0) || (this.skipped > config.hand.skipFrames) || !config.hand.landmarks || !config.videoOptimized) {\n boxes = await this.handDetector.estimateHandBounds(image, config);\n this.skipped = 0;\n }\n if (config.videoOptimized) this.skipped++;\n\n // if detector result count doesn't match current working set, use it to reset current working set\n if (boxes && (boxes.length > 0) && ((boxes.length !== this.detectedHands) && (this.detectedHands !== config.hand.maxHands) || !config.hand.landmarks)) {\n this.detectedHands = 0;\n this.storedBoxes = [...boxes];\n // for (const possible of boxes) this.storedBoxes.push(possible);\n if (this.storedBoxes.length > 0) useFreshBox = true;\n }\n const hands: Array<{}> = [];\n\n if (config.hand.skipInitial && this.detectedHands === 0) this.skipped = 0;\n\n // go through working set of boxes\n for (let i = 0; i < this.storedBoxes.length; i++) {\n const currentBox = this.storedBoxes[i];\n if (!currentBox) continue;\n if (config.hand.landmarks) {\n const angle = config.hand.rotation ? util.computeRotation(currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_PALM_BASE], currentBox.palmLandmarks[PALM_LANDMARKS_INDEX_OF_MIDDLE_FINGER_BASE]) : 0;\n const palmCenter = box.getBoxCenter(currentBox);\n const palmCenterNormalized = [palmCenter[0] / image.shape[2], palmCenter[1] / image.shape[1]];\n const rotatedImage = config.hand.rotation ? tf.image.rotateWithOffset(image, angle, 0, palmCenterNormalized) : image.clone();\n const rotationMatrix = util.buildRotationMatrix(-angle, palmCenter);\n const newBox = useFreshBox ? this.getBoxForPalmLandmarks(currentBox.palmLandmarks, rotationMatrix) : currentBox;\n const croppedInput = box.cutBoxFromImageAndResize(newBox, rotatedImage, [this.inputSize, this.inputSize]);\n const handImage = croppedInput.div(255);\n croppedInput.dispose();\n rotatedImage.dispose();\n const [confidenceT, keypoints] = await this.landmarkDetector.predict(handImage);\n handImage.dispose();\n const confidence = confidenceT.dataSync()[0];\n confidenceT.dispose();\n if (confidence >= config.hand.minConfidence) {\n const keypointsReshaped = tf.reshape(keypoints, [-1, 3]);\n const rawCoords = keypointsReshaped.arraySync();\n keypoints.dispose();\n keypointsReshaped.dispose();\n const coords = this.transformRawCoords(rawCoords, newBox, angle, rotationMatrix);\n const nextBoundingBox = this.getBoxForHandLandmarks(coords);\n this.storedBoxes[i] = nextBoundingBox;\n const result = {\n landmarks: coords,\n confidence,\n box: { topLeft: nextBoundingBox.startPoint, bottomRight: nextBoundingBox.endPoint },\n };\n hands.push(result);\n } else {\n this.storedBoxes[i] = null;\n }\n keypoints.dispose();\n } else {\n // const enlarged = box.enlargeBox(box.squarifyBox(box.shiftBox(currentBox, HAND_BOX_SHIFT_VECTOR)), HAND_BOX_ENLARGE_FACTOR);\n const enlarged = box.enlargeBox(box.squarifyBox(currentBox), HAND_BOX_ENLARGE_FACTOR);\n const result = {\n confidence: currentBox.confidence,\n box: { topLeft: enlarged.startPoint, bottomRight: enlarged.endPoint },\n };\n hands.push(result);\n }\n }\n this.storedBoxes = this.storedBoxes.filter((a) => a !== null);\n this.detectedHands = hands.length;\n return hands;\n }\n\n // eslint-disable-next-line class-methods-use-this\n calculateLandmarksBoundingBox(landmarks) {\n const xs = landmarks.map((d) => d[0]);\n const ys = landmarks.map((d) => d[1]);\n const startPoint = [Math.min(...xs), Math.min(...ys)];\n const endPoint = [Math.max(...xs), Math.max(...ys)];\n return { startPoint, endPoint };\n }\n}\n", "export function normalizeRadians(angle) {\n return angle - 2 * Math.PI * Math.floor((angle + Math.PI) / (2 * Math.PI));\n}\n\nexport function computeRotation(point1, point2) {\n const radians = Math.PI / 2 - Math.atan2(-(point2[1] - point1[1]), point2[0] - point1[0]);\n return normalizeRadians(radians);\n}\n\nexport const buildTranslationMatrix = (x, y) => [[1, 0, x], [0, 1, y], [0, 0, 1]];\n\nexport function dot(v1, v2) {\n let product = 0;\n for (let i = 0; i < v1.length; i++) {\n product += v1[i] * v2[i];\n }\n return product;\n}\n\nexport function getColumnFrom2DArr(arr, columnIndex) {\n const column: Array = [];\n for (let i = 0; i < arr.length; i++) {\n column.push(arr[i][columnIndex]);\n }\n return column;\n}\n\nexport function multiplyTransformMatrices(mat1, mat2) {\n const product: Array = [];\n const size = mat1.length;\n for (let row = 0; row < size; row++) {\n product.push([]);\n for (let col = 0; col < size; col++) {\n product[row].push(dot(mat1[row], getColumnFrom2DArr(mat2, col)));\n }\n }\n return product;\n}\n\nexport function buildRotationMatrix(rotation, center) {\n const cosA = Math.cos(rotation);\n const sinA = Math.sin(rotation);\n const rotationMatrix = [[cosA, -sinA, 0], [sinA, cosA, 0], [0, 0, 1]];\n const translationMatrix = buildTranslationMatrix(center[0], center[1]);\n const translationTimesRotation = multiplyTransformMatrices(translationMatrix, rotationMatrix);\n const negativeTranslationMatrix = buildTranslationMatrix(-center[0], -center[1]);\n return multiplyTransformMatrices(translationTimesRotation, negativeTranslationMatrix);\n}\n\nexport function invertTransformMatrix(matrix) {\n const rotationComponent = [[matrix[0][0], matrix[1][0]], [matrix[0][1], matrix[1][1]]];\n const translationComponent = [matrix[0][2], matrix[1][2]];\n const invertedTranslation = [\n -dot(rotationComponent[0], translationComponent),\n -dot(rotationComponent[1], translationComponent),\n ];\n return [\n rotationComponent[0].concat(invertedTranslation[0]),\n rotationComponent[1].concat(invertedTranslation[1]),\n [0, 0, 1],\n ];\n}\n\nexport function rotatePoint(homogeneousCoordinate, rotationMatrix) {\n return [\n dot(homogeneousCoordinate, rotationMatrix[0]),\n dot(homogeneousCoordinate, rotationMatrix[1]),\n ];\n}\n", "export const anchors = [\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.015625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.046875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.078125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.109375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.140625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.171875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.203125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.234375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.265625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.296875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.328125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.359375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.390625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.421875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.453125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.484375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.515625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.546875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.578125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.609375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.640625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.671875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.703125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.734375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.765625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.796875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.828125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.859375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.890625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.921875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.953125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.015625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.046875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.078125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.109375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.140625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.171875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.203125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.234375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.265625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.296875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.328125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.359375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.390625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.421875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.453125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.484375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.515625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.546875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.578125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.609375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.640625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.671875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.703125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.734375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.765625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.796875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.828125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.859375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.890625,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.921875,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.953125,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.984375,\n y_center: 0.984375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.03125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.09375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.15625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.21875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.28125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.34375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.40625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.46875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.53125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.59375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.65625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.71875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.78125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.84375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.90625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.03125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.09375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.15625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.21875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.28125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.34375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.40625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.46875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.53125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.59375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.65625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.71875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.78125,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.84375,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.90625,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.96875,\n y_center: 0.96875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.0625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.1875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.3125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.4375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.5625,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.6875,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.8125,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.0625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.1875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.3125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.4375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.5625,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.6875,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.8125,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n {\n w: 1,\n h: 1,\n x_center: 0.9375,\n y_center: 0.9375,\n },\n];\n", "import { log } from '../log';\nimport * as tf from '../../dist/tfjs.esm.js';\nimport * as profile from '../profile';\nimport * as annotations from './annotations';\n\nlet model;\n\nexport async function load(config) {\n if (!model) {\n model = await tf.loadGraphModel(config.body.modelPath);\n model.width = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[2].size);\n model.height = parseInt(model.signature.inputs['input_1:0'].tensorShape.dim[1].size);\n if (config.debug) log(`load model: ${config.body.modelPath.match(/\\/(.*)\\./)[1]}`);\n }\n return model;\n}\n\nexport async function predict(image, config) {\n if (!model) return null;\n if (!config.body.enabled) return null;\n const imgSize = { width: image.shape[2], height: image.shape[1] };\n const resize = tf.image.resizeBilinear(image, [model.width, model.height], false);\n const normalize = tf.div(resize, [255.0]);\n resize.dispose();\n let points;\n if (!config.profile) { // run through profiler or just execute\n const resT = await model.predict(normalize);\n // const segmentationT = resT.find((t) => (t.size === 16384))?.squeeze();\n // const segmentation = segmentationT.arraySync(); // array 128 x 128\n // segmentationT.dispose();\n points = resT.find((t) => (t.size === 195 || t.size === 155)).dataSync(); // order of output tensors may change between models, full has 195 and upper has 155 items\n resT.forEach((t) => t.dispose());\n } else {\n const profileData = await tf.profile(() => model.predict(normalize));\n points = profileData.result.find((t) => (t.size === 195 || t.size === 155)).dataSync();\n profileData.result.forEach((t) => t.dispose());\n profile.run('blazepose', profileData);\n }\n normalize.dispose();\n const keypoints: Array<{ id, part, position: { x, y, z }, score, presence }> = [];\n const labels = points.length === 195 ? annotations.full : annotations.upper; // full model has 39 keypoints, upper has 31 keypoints\n const depth = 5; // each points has x,y,z,visibility,presence\n for (let i = 0; i < points.length / depth; i++) {\n keypoints.push({\n id: i,\n part: labels[i],\n position: {\n x: Math.trunc(imgSize.width * points[depth * i + 0] / 255), // return normalized x value istead of 0..255\n y: Math.trunc(imgSize.height * points[depth * i + 1] / 255), // return normalized y value istead of 0..255\n z: Math.trunc(points[depth * i + 2]) + 0, // fix negative zero\n },\n score: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 3])))) / 100, // reverse sigmoid value\n presence: (100 - Math.trunc(100 / (1 + Math.exp(points[depth * i + 4])))) / 100, // reverse sigmoid value\n });\n }\n return [{ keypoints }];\n}\n", "export const full = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'leftWrist',\n 'rightWrist',\n 'leftPalm',\n 'rightPalm',\n 'leftIndex',\n 'rightIndex',\n 'leftPinky',\n 'rightPinky',\n 'leftHip',\n 'rightHip',\n 'leftKnee',\n 'rightKnee',\n 'leftAnkle',\n 'rightAnkle',\n 'leftHeel',\n 'rightHeel',\n 'leftFoot',\n 'rightFoot',\n 'midHip',\n 'forehead',\n 'leftThumb',\n 'leftHand',\n 'rightThumb',\n 'rightHand',\n];\n\nexport const upper = [\n 'nose',\n 'leftEyeInside',\n 'leftEye',\n 'leftEyeOutside',\n 'rightEyeInside',\n 'rightEye',\n 'rightEyeOutside',\n 'leftEar',\n 'rightEar',\n 'leftMouth',\n 'rightMouth',\n 'leftShoulder',\n 'rightShoulder',\n 'leftElbow',\n 'rightElbow',\n 'left:15',\n 'right:16',\n 'left:17',\n 'right:18',\n 'left:19',\n 'right:20',\n 'left:21',\n 'right:22',\n 'leftChest',\n 'rightChest',\n 'neck',\n 'forehead',\n 'left:27',\n 'right:28',\n 'left:29',\n 'right:30',\n];\n", "export const body = (res) => {\n if (!res) return [];\n const gestures: Array<{ body: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n // raising hands\n const leftWrist = res[i].keypoints.find((a) => (a.part === 'leftWrist'));\n const rightWrist = res[i].keypoints.find((a) => (a.part === 'rightWrist'));\n const nose = res[i].keypoints.find((a) => (a.part === 'nose'));\n if (nose && leftWrist && rightWrist && (leftWrist.position.y < nose.position.y) && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'i give up' });\n else if (nose && leftWrist && (leftWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise left hand' });\n else if (nose && rightWrist && (rightWrist.position.y < nose.position.y)) gestures.push({ body: i, gesture: 'raise right hand' });\n\n // leaning\n const leftShoulder = res[i].keypoints.find((a) => (a.part === 'leftShoulder'));\n const rightShoulder = res[i].keypoints.find((a) => (a.part === 'rightShoulder'));\n if (leftShoulder && rightShoulder) gestures.push({ body: i, gesture: `leaning ${(leftShoulder.position.y > rightShoulder.position.y) ? 'left' : 'right'}` });\n }\n return gestures;\n};\n\nexport const face = (res) => {\n if (!res) return [];\n const gestures: Array<{ face: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (res[i].mesh && res[i].mesh.length > 0) {\n const eyeFacing = res[i].mesh[33][2] - res[i].mesh[263][2];\n if (Math.abs(eyeFacing) < 10) gestures.push({ face: i, gesture: 'facing camera' });\n else gestures.push({ face: i, gesture: `facing ${eyeFacing < 0 ? 'right' : 'left'}` });\n const openLeft = Math.abs(res[i].mesh[374][1] - res[i].mesh[386][1]) / Math.abs(res[i].mesh[443][1] - res[i].mesh[450][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openLeft < 0.2) gestures.push({ face: i, gesture: 'blink left eye' });\n const openRight = Math.abs(res[i].mesh[145][1] - res[i].mesh[159][1]) / Math.abs(res[i].mesh[223][1] - res[i].mesh[230][1]); // center of eye inner lid y coord div center of wider eye border y coord\n if (openRight < 0.2) gestures.push({ face: i, gesture: 'blink right eye' });\n const mouthOpen = Math.min(100, 500 * Math.abs(res[i].mesh[13][1] - res[i].mesh[14][1]) / Math.abs(res[i].mesh[10][1] - res[i].mesh[152][1]));\n if (mouthOpen > 10) gestures.push({ face: i, gesture: `mouth ${Math.trunc(mouthOpen)}% open` });\n const chinDepth = res[i].mesh[152][2];\n if (Math.abs(chinDepth) > 10) gestures.push({ face: i, gesture: `head ${chinDepth < 0 ? 'up' : 'down'}` });\n }\n }\n return gestures;\n};\n\nexport const iris = (res) => {\n if (!res) return [];\n const gestures: Array<{ iris: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n if (!res[i].annotations || !res[i].annotations.leftEyeIris || !res[i].annotations.rightEyeIris) continue;\n const sizeXLeft = res[i].annotations.leftEyeIris[3][0] - res[i].annotations.leftEyeIris[1][0];\n const sizeYLeft = res[i].annotations.leftEyeIris[4][1] - res[i].annotations.leftEyeIris[2][1];\n const areaLeft = Math.abs(sizeXLeft * sizeYLeft);\n\n const sizeXRight = res[i].annotations.rightEyeIris[3][0] - res[i].annotations.rightEyeIris[1][0];\n const sizeYRight = res[i].annotations.rightEyeIris[4][1] - res[i].annotations.rightEyeIris[2][1];\n const areaRight = Math.abs(sizeXRight * sizeYRight);\n\n const difference = Math.abs(areaLeft - areaRight) / Math.max(areaLeft, areaRight);\n if (difference < 0.25) gestures.push({ iris: i, gesture: 'looking at camera' });\n }\n return gestures;\n};\n\nexport const hand = (res) => {\n if (!res) return [];\n const gestures: Array<{ hand: number, gesture: string }> = [];\n for (let i = 0; i < res.length; i++) {\n const fingers: Array<{ name: string, position: number }> = [];\n for (const [finger, pos] of Object.entries(res[i]['annotations'])) {\n // @ts-ignore\n if (finger !== 'palmBase') fingers.push({ name: finger.toLowerCase(), position: pos[0] }); // get tip of each finger\n }\n if (fingers && fingers.length > 0) {\n const closest = fingers.reduce((best, a) => (best.position[2] < a.position[2] ? best : a));\n const highest = fingers.reduce((best, a) => (best.position[1] < a.position[1] ? best : a));\n gestures.push({ hand: i, gesture: `${closest.name} forward ${highest.name} up` });\n }\n }\n return gestures;\n};\n", "// @ts-nocheck\n\nimport { log } from './log';\nimport * as tf from '../dist/tfjs.esm.js';\nimport * as fxImage from './imagefx';\n\nconst maxSize = 2048;\n// internal temp canvases\nlet inCanvas = null;\nlet outCanvas = null;\n// instance of fximage\nlet fx = null;\n\n// process input image and return tensor\n// input can be tensor, imagedata, htmlimageelement, htmlvideoelement\n// input is resized and run through imagefx filter\nexport function process(input, config): { tensor: tf.Tensor, canvas: OffscreenCanvas | HTMLCanvasElement } {\n let tensor;\n if (input instanceof tf.Tensor) {\n tensor = tf.clone(input);\n } else {\n const originalWidth = input.naturalWidth || input.videoWidth || input.width || (input.shape && (input.shape[1] > 0));\n const originalHeight = input.naturalHeight || input.videoHeight || input.height || (input.shape && (input.shape[2] > 0));\n let targetWidth = originalWidth;\n let targetHeight = originalHeight;\n if (targetWidth > maxSize) {\n targetWidth = maxSize;\n targetHeight = targetWidth * originalHeight / originalWidth;\n }\n if (targetHeight > maxSize) {\n targetHeight = maxSize;\n targetWidth = targetHeight * originalWidth / originalHeight;\n }\n if (config.filter.width > 0) targetWidth = config.filter.width;\n else if (config.filter.height > 0) targetWidth = originalWidth * (config.filter.height / originalHeight);\n if (config.filter.height > 0) targetHeight = config.filter.height;\n else if (config.filter.width > 0) targetHeight = originalHeight * (config.filter.width / originalWidth);\n if (!targetWidth || !targetHeight) {\n log('Human: invalid input', input);\n return { tensor: null, canvas: null };\n }\n if (!inCanvas || (inCanvas.width !== targetWidth) || (inCanvas.height !== targetHeight)) {\n inCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n if (inCanvas.width !== targetWidth) inCanvas.width = targetWidth;\n if (inCanvas.height !== targetHeight) inCanvas.height = targetHeight;\n }\n const ctx = inCanvas.getContext('2d');\n if (input instanceof ImageData) ctx.putImageData(input, 0, 0);\n else ctx.drawImage(input, 0, 0, originalWidth, originalHeight, 0, 0, inCanvas.width, inCanvas.height);\n if (config.filter.enabled) {\n if (!fx || !outCanvas || (inCanvas.width !== outCanvas.width) || (inCanvas.height !== outCanvas.height)) {\n outCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(inCanvas.width, inCanvas.height) : document.createElement('canvas');\n if (outCanvas.width !== inCanvas.width) outCanvas.width = inCanvas.width;\n if (outCanvas.height !== inCanvas.height) outCanvas.height = inCanvas.height;\n // log('created FX filter');\n fx = tf.ENV.flags.IS_BROWSER ? new fxImage.GLImageFilter({ canvas: outCanvas }) : null; // && (typeof document !== 'undefined')\n }\n if (!fx) return { tensor: null, canvas: inCanvas };\n fx.reset();\n fx.addFilter('brightness', config.filter.brightness); // must have at least one filter enabled\n if (config.filter.contrast !== 0) fx.addFilter('contrast', config.filter.contrast);\n if (config.filter.sharpness !== 0) fx.addFilter('sharpen', config.filter.sharpness);\n if (config.filter.blur !== 0) fx.addFilter('blur', config.filter.blur);\n if (config.filter.saturation !== 0) fx.addFilter('saturation', config.filter.saturation);\n if (config.filter.hue !== 0) fx.addFilter('hue', config.filter.hue);\n if (config.filter.negative) fx.addFilter('negative');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.vintage) fx.addFilter('brownie');\n if (config.filter.sepia) fx.addFilter('sepia');\n if (config.filter.kodachrome) fx.addFilter('kodachrome');\n if (config.filter.technicolor) fx.addFilter('technicolor');\n if (config.filter.polaroid) fx.addFilter('polaroid');\n if (config.filter.pixelate !== 0) fx.addFilter('pixelate', config.filter.pixelate);\n fx.apply(inCanvas);\n // read pixel data\n /*\n const gl = outCanvas.getContext('webgl');\n if (gl) {\n const glBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 4);\n const pixBuffer = new Uint8Array(outCanvas.width * outCanvas.height * 3);\n gl.readPixels(0, 0, outCanvas.width, outCanvas.height, gl.RGBA, gl.UNSIGNED_BYTE, glBuffer);\n // gl returns rbga while we only need rgb, so discarding alpha channel\n // gl returns starting point as lower left, so need to invert vertical\n let i = 0;\n for (let y = outCanvas.height - 1; y >= 0; y--) {\n for (let x = 0; x < outCanvas.width; x++) {\n const index = (x + y * outCanvas.width) * 4;\n pixBuffer[i++] = glBuffer[index + 0];\n pixBuffer[i++] = glBuffer[index + 1];\n pixBuffer[i++] = glBuffer[index + 2];\n }\n }\n outCanvas.data = pixBuffer;\n }\n */\n } else {\n outCanvas = inCanvas;\n if (fx) fx = null;\n }\n let pixels;\n if (outCanvas.data) {\n const shape = [outCanvas.height, outCanvas.width, 3];\n pixels = tf.tensor3d(outCanvas.data, shape, 'int32');\n } else if ((config.backend === 'webgl') || (outCanvas instanceof ImageData)) {\n // tf kernel-optimized method to get imagedata, also if input is imagedata, just use it\n pixels = tf.browser.fromPixels(outCanvas);\n } else {\n // cpu and wasm kernel does not implement efficient fromPixels method nor we can use canvas as-is, so we do a silly one more canvas\n const tempCanvas = (typeof OffscreenCanvas !== 'undefined') ? new OffscreenCanvas(targetWidth, targetHeight) : document.createElement('canvas');\n tempCanvas.width = targetWidth;\n tempCanvas.height = targetHeight;\n const tempCtx = tempCanvas.getContext('2d');\n tempCtx?.drawImage(outCanvas, 0, 0);\n const data = tempCtx?.getImageData(0, 0, targetWidth, targetHeight);\n pixels = tf.browser.fromPixels(data);\n }\n const casted = pixels.toFloat();\n tensor = casted.expandDims(0);\n pixels.dispose();\n casted.dispose();\n }\n const canvas = config.filter.return ? outCanvas : null;\n return { tensor, canvas };\n}\n", "/*\nWebGLImageFilter - MIT Licensed\n2013, Dominic Szablewski - phoboslab.org\n\n*/\n\nfunction GLProgram(gl, vertexSource, fragmentSource) {\n const _collect = function (source, prefix, collection) {\n const r = new RegExp('\\\\b' + prefix + ' \\\\w+ (\\\\w+)', 'ig');\n source.replace(r, (match, name) => {\n collection[name] = 0;\n return match;\n });\n };\n\n const _compile = function (source, type) {\n const shader = gl.createShader(type);\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL compile failed', gl.getShaderInfoLog(shader));\n }\n return shader;\n };\n\n this.uniform = {};\n this.attribute = {};\n const _vsh = _compile(vertexSource, gl.VERTEX_SHADER);\n const _fsh = _compile(fragmentSource, gl.FRAGMENT_SHADER);\n this.id = gl.createProgram();\n gl.attachShader(this.id, _vsh);\n gl.attachShader(this.id, _fsh);\n gl.linkProgram(this.id);\n\n if (!gl.getProgramParameter(this.id, gl.LINK_STATUS)) {\n // @ts-ignore\n throw new Error('Filter: GL link failed', gl.getProgramInfoLog(this.id));\n }\n\n gl.useProgram(this.id);\n // Collect attributes\n _collect(vertexSource, 'attribute', this.attribute);\n for (const a in this.attribute) this.attribute[a] = gl.getAttribLocation(this.id, a);\n // Collect uniforms\n _collect(vertexSource, 'uniform', this.uniform);\n _collect(fragmentSource, 'uniform', this.uniform);\n for (const u in this.uniform) this.uniform[u] = gl.getUniformLocation(this.id, u);\n}\n\n// export const GLImageFilter = function (params) {\nexport function GLImageFilter(params) {\n if (!params) params = { };\n let _drawCount = 0;\n let _sourceTexture = null;\n let _lastInChain = false;\n let _currentFramebufferIndex = -1;\n let _tempFramebuffers = [null, null];\n let _filterChain = [];\n let _width = -1;\n let _height = -1;\n let _vertexBuffer = null;\n let _currentProgram = null;\n const _filter = {};\n const _canvas = params.canvas || document.createElement('canvas');\n // key is the shader program source, value is the compiled program\n const _shaderProgramCache = { };\n const DRAW = { INTERMEDIATE: 1 };\n const gl = _canvas.getContext('webgl');\n if (!gl) throw new Error('Filter: getContext() failed');\n\n this.addFilter = function (name) {\n // eslint-disable-next-line prefer-rest-params\n const args = Array.prototype.slice.call(arguments, 1);\n const filter = _filter[name];\n _filterChain.push({ func: filter, args });\n };\n\n this.reset = function () {\n _filterChain = [];\n };\n\n const _resize = function (width, height) {\n // Same width/height? Nothing to do here\n if (width === _width && height === _height) { return; }\n _canvas.width = width;\n _width = width;\n _canvas.height = height;\n _height = height;\n // Create the context if we don't have it yet\n if (!_vertexBuffer) {\n // Create the vertex buffer for the two triangles [x, y, u, v] * 6\n const vertices = new Float32Array([\n -1, -1, 0, 1, 1, -1, 1, 1, -1, 1, 0, 0,\n -1, 1, 0, 0, 1, -1, 1, 1, 1, 1, 1, 0,\n ]);\n // eslint-disable-next-line no-unused-expressions\n (_vertexBuffer = gl.createBuffer(), gl.bindBuffer(gl.ARRAY_BUFFER, _vertexBuffer));\n gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW);\n gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, true);\n }\n gl.viewport(0, 0, _width, _height);\n // Delete old temp framebuffers\n _tempFramebuffers = [null, null];\n };\n\n const _createFramebufferTexture = function (width, height) {\n const fbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, fbo);\n const renderbuffer = gl.createRenderbuffer();\n gl.bindRenderbuffer(gl.RENDERBUFFER, renderbuffer);\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, texture, 0);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n return { fbo, texture };\n };\n\n const _getTempFramebuffer = function (index) {\n // @ts-ignore\n _tempFramebuffers[index] = _tempFramebuffers[index] || _createFramebufferTexture(_width, _height);\n return _tempFramebuffers[index];\n };\n\n const _draw = function (flags = null) {\n let source = null;\n let target = null;\n let flipY = false;\n // Set up the source\n if (_drawCount === 0) {\n // First draw call - use the source texture\n source = _sourceTexture;\n } else {\n // All following draw calls use the temp buffer last drawn to\n // @ts-ignore\n source = _getTempFramebuffer(_currentFramebufferIndex)?.texture;\n }\n _drawCount++;\n // Set up the target\n if (_lastInChain && !(flags & DRAW.INTERMEDIATE)) {\n // Last filter in our chain - draw directly to the WebGL Canvas. We may\n // also have to flip the image vertically now\n target = null;\n flipY = _drawCount % 2 === 0;\n } else {\n // Intermediate draw call - get a temp buffer to draw to\n _currentFramebufferIndex = (_currentFramebufferIndex + 1) % 2;\n // @ts-ignore\n target = _getTempFramebuffer(_currentFramebufferIndex)?.fbo;\n }\n // Bind the source and target and draw the two triangles\n gl.bindTexture(gl.TEXTURE_2D, source);\n gl.bindFramebuffer(gl.FRAMEBUFFER, target);\n gl.uniform1f(_currentProgram.uniform.flipY, (flipY ? -1 : 1));\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n };\n\n this.apply = function (image) {\n _resize(image.width, image.height);\n _drawCount = 0;\n // Create the texture for the input image if we haven't yet\n if (!_sourceTexture) _sourceTexture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, _sourceTexture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);\n // No filters? Just draw\n if (_filterChain.length === 0) {\n // const program = _compileShader(SHADER.FRAGMENT_IDENTITY);\n _draw();\n return _canvas;\n }\n for (let i = 0; i < _filterChain.length; i++) {\n _lastInChain = (i === _filterChain.length - 1);\n const f = _filterChain[i];\n f.func.apply(this, f.args || []);\n }\n return _canvas;\n };\n\n const _compileShader = function (fragmentSource) {\n if (_shaderProgramCache[fragmentSource]) {\n _currentProgram = _shaderProgramCache[fragmentSource];\n gl.useProgram(_currentProgram.id);\n return _currentProgram;\n }\n // Compile shaders\n const SHADER = {};\n SHADER.VERTEX_IDENTITY = [\n 'precision highp float;',\n 'attribute vec2 pos;',\n 'attribute vec2 uv;',\n 'varying vec2 vUv;',\n 'uniform float flipY;',\n 'void main(void) {',\n 'vUv = uv;',\n 'gl_Position = vec4(pos.x, pos.y*flipY, 0.0, 1.);',\n '}',\n ].join('\\n');\n SHADER.FRAGMENT_IDENTITY = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'void main(void) {',\n 'gl_FragColor = texture2D(texture, vUv);',\n '}',\n ].join('\\n');\n _currentProgram = new GLProgram(gl, SHADER.VERTEX_IDENTITY, fragmentSource);\n const floatSize = Float32Array.BYTES_PER_ELEMENT;\n const vertSize = 4 * floatSize;\n gl.enableVertexAttribArray(_currentProgram.attribute.pos);\n gl.vertexAttribPointer(_currentProgram.attribute.pos, 2, gl.FLOAT, false, vertSize, 0 * floatSize);\n gl.enableVertexAttribArray(_currentProgram.attribute.uv);\n gl.vertexAttribPointer(_currentProgram.attribute.uv, 2, gl.FLOAT, false, vertSize, 2 * floatSize);\n _shaderProgramCache[fragmentSource] = _currentProgram;\n return _currentProgram;\n };\n\n // -------------------------------------------------------------------------\n // Color Matrix Filter\n _filter.colorMatrix = function (matrix) {\n // Create a Float32 Array and normalize the offset component to 0-1\n const m = new Float32Array(matrix);\n m[4] /= 255;\n m[9] /= 255;\n m[14] /= 255;\n m[19] /= 255;\n // Can we ignore the alpha value? Makes things a bit faster.\n const shader = (m[18] === 1 && m[3] === 0 && m[8] === 0 && m[13] === 0 && m[15] === 0 && m[16] === 0 && m[17] === 0 && m[19] === 0)\n ? _filter.colorMatrix.SHADER.WITHOUT_ALPHA\n : _filter.colorMatrix.SHADER.WITH_ALPHA;\n const program = _compileShader(shader);\n gl.uniform1fv(program.uniform.m, m);\n _draw();\n };\n _filter.colorMatrix.SHADER = {};\n _filter.colorMatrix.SHADER.WITH_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[3] * c.a + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[8] * c.a + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[13] * c.a + m[14];',\n 'gl_FragColor.a = m[15] * c.r + m[16] * c.g + m[17] * c.b + m[18] * c.a + m[19];',\n '}',\n ].join('\\n');\n _filter.colorMatrix.SHADER.WITHOUT_ALPHA = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform float m[20];',\n 'void main(void) {',\n 'vec4 c = texture2D(texture, vUv);',\n 'gl_FragColor.r = m[0] * c.r + m[1] * c.g + m[2] * c.b + m[4];',\n 'gl_FragColor.g = m[5] * c.r + m[6] * c.g + m[7] * c.b + m[9];',\n 'gl_FragColor.b = m[10] * c.r + m[11] * c.g + m[12] * c.b + m[14];',\n 'gl_FragColor.a = c.a;',\n '}',\n ].join('\\n');\n\n _filter.brightness = function (brightness) {\n const b = (brightness || 0) + 1;\n _filter.colorMatrix([\n b, 0, 0, 0, 0,\n 0, b, 0, 0, 0,\n 0, 0, b, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.saturation = function (amount) {\n const x = (amount || 0) * 2 / 3 + 1;\n const y = ((x - 1) * -0.5);\n _filter.colorMatrix([\n x, y, y, 0, 0,\n y, x, y, 0, 0,\n y, y, x, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturate = function () {\n _filter.saturation(-1);\n };\n\n _filter.contrast = function (amount) {\n const v = (amount || 0) + 1;\n const o = -128 * (v - 1);\n\n _filter.colorMatrix([\n v, 0, 0, 0, o,\n 0, v, 0, 0, o,\n 0, 0, v, 0, o,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.negative = function () {\n _filter.contrast(-2);\n };\n\n _filter.hue = function (rotation) {\n rotation = (rotation || 0) / 180 * Math.PI;\n const cos = Math.cos(rotation);\n const sin = Math.sin(rotation);\n const lumR = 0.213;\n const lumG = 0.715;\n const lumB = 0.072;\n\n _filter.colorMatrix([\n lumR + cos * (1 - lumR) + sin * (-lumR), lumG + cos * (-lumG) + sin * (-lumG), lumB + cos * (-lumB) + sin * (1 - lumB), 0, 0,\n lumR + cos * (-lumR) + sin * (0.143), lumG + cos * (1 - lumG) + sin * (0.140), lumB + cos * (-lumB) + sin * (-0.283), 0, 0,\n lumR + cos * (-lumR) + sin * (-(1 - lumR)), lumG + cos * (-lumG) + sin * (lumG), lumB + cos * (1 - lumB) + sin * (lumB), 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.desaturateLuminance = function () {\n _filter.colorMatrix([\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0.2764723, 0.9297080, 0.0938197, 0, -37.1,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.sepia = function () {\n _filter.colorMatrix([\n 0.393, 0.7689999, 0.18899999, 0, 0,\n 0.349, 0.6859999, 0.16799999, 0, 0,\n 0.272, 0.5339999, 0.13099999, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.brownie = function () {\n _filter.colorMatrix([\n 0.5997023498159715, 0.34553243048391263, -0.2708298674538042, 0, 47.43192855600873,\n -0.037703249837783157, 0.8609577587992641, 0.15059552388459913, 0, -36.96841498319127,\n 0.24113635128153335, -0.07441037908422492, 0.44972182064877153, 0, -7.562075277591283,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.vintagePinhole = function () {\n _filter.colorMatrix([\n 0.6279345635605994, 0.3202183420819367, -0.03965408211312453, 0, 9.651285835294123,\n 0.02578397704808868, 0.6441188644374771, 0.03259127616149294, 0, 7.462829176470591,\n 0.0466055556782719, -0.0851232987247891, 0.5241648018700465, 0, 5.159190588235296,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.kodachrome = function () {\n _filter.colorMatrix([\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.technicolor = function () {\n _filter.colorMatrix([\n 1.9125277891456083, -0.8545344976951645, -0.09155508482755585, 0, 11.793603434377337,\n -0.3087833385928097, 1.7658908555458428, -0.10601743074722245, 0, -70.35205161461398,\n -0.231103377548616, -0.7501899197440212, 1.847597816108189, 0, 30.950940869491138,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.polaroid = function () {\n _filter.colorMatrix([\n 1.438, -0.062, -0.062, 0, 0,\n -0.122, 1.378, -0.122, 0, 0,\n -0.016, -0.016, 1.483, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n _filter.shiftToBGR = function () {\n _filter.colorMatrix([\n 0, 0, 1, 0, 0,\n 0, 1, 0, 0, 0,\n 1, 0, 0, 0, 0,\n 0, 0, 0, 1, 0,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Convolution Filter\n _filter.convolution = function (matrix) {\n const m = new Float32Array(matrix);\n const pixelSizeX = 1 / _width;\n const pixelSizeY = 1 / _height;\n const program = _compileShader(_filter.convolution.SHADER);\n gl.uniform1fv(program.uniform.m, m);\n gl.uniform2f(program.uniform.px, pixelSizeX, pixelSizeY);\n _draw();\n };\n\n _filter.convolution.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'uniform float m[9];',\n 'void main(void) {',\n 'vec4 c11 = texture2D(texture, vUv - px);', // top left\n 'vec4 c12 = texture2D(texture, vec2(vUv.x, vUv.y - px.y));', // top center\n 'vec4 c13 = texture2D(texture, vec2(vUv.x + px.x, vUv.y - px.y));', // top right\n 'vec4 c21 = texture2D(texture, vec2(vUv.x - px.x, vUv.y) );', // mid left\n 'vec4 c22 = texture2D(texture, vUv);', // mid center\n 'vec4 c23 = texture2D(texture, vec2(vUv.x + px.x, vUv.y) );', // mid right\n 'vec4 c31 = texture2D(texture, vec2(vUv.x - px.x, vUv.y + px.y) );', // bottom left\n 'vec4 c32 = texture2D(texture, vec2(vUv.x, vUv.y + px.y) );', // bottom center\n 'vec4 c33 = texture2D(texture, vUv + px );', // bottom right\n 'gl_FragColor = ',\n 'c11 * m[0] + c12 * m[1] + c22 * m[2] +',\n 'c21 * m[3] + c22 * m[4] + c23 * m[5] +',\n 'c31 * m[6] + c32 * m[7] + c33 * m[8];',\n 'gl_FragColor.a = c22.a;',\n '}',\n ].join('\\n');\n\n _filter.detectEdges = function () {\n _filter.convolution.call(this, [\n 0, 1, 0,\n 1, -4, 1,\n 0, 1, 0,\n ]);\n };\n\n _filter.sobelX = function () {\n _filter.convolution.call(this, [\n -1, 0, 1,\n -2, 0, 2,\n -1, 0, 1,\n ]);\n };\n\n _filter.sobelY = function () {\n _filter.convolution.call(this, [\n -1, -2, -1,\n 0, 0, 0,\n 1, 2, 1,\n ]);\n };\n\n _filter.sharpen = function (amount) {\n const a = amount || 1;\n _filter.convolution.call(this, [\n 0, -1 * a, 0,\n -1 * a, 1 + 4 * a, -1 * a,\n 0, -1 * a, 0,\n ]);\n };\n\n _filter.emboss = function (size) {\n const s = size || 1;\n _filter.convolution.call(this, [\n -2 * s, -1 * s, 0,\n -1 * s, 1, 1 * s,\n 0, 1 * s, 2 * s,\n ]);\n };\n\n // -------------------------------------------------------------------------\n // Blur Filter\n _filter.blur = function (size) {\n const blurSizeX = (size / 7) / _width;\n const blurSizeY = (size / 7) / _height;\n const program = _compileShader(_filter.blur.SHADER);\n // Vertical\n gl.uniform2f(program.uniform.px, 0, blurSizeY);\n _draw(DRAW.INTERMEDIATE);\n // Horizontal\n gl.uniform2f(program.uniform.px, blurSizeX, 0);\n _draw();\n };\n\n _filter.blur.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform sampler2D texture;',\n 'uniform vec2 px;',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-7.0*px.x, -7.0*px.y))*0.0044299121055113265;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-6.0*px.x, -6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-5.0*px.x, -5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-4.0*px.x, -4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-3.0*px.x, -3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-2.0*px.x, -2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2(-1.0*px.x, -1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv )*0.159576912161;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 1.0*px.x, 1.0*px.y))*0.147308056121;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 2.0*px.x, 2.0*px.y))*0.115876621105;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 3.0*px.x, 3.0*px.y))*0.0776744219933;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 4.0*px.x, 4.0*px.y))*0.0443683338718;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 5.0*px.x, 5.0*px.y))*0.0215963866053;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 6.0*px.x, 6.0*px.y))*0.00895781211794;',\n 'gl_FragColor += texture2D(texture, vUv + vec2( 7.0*px.x, 7.0*px.y))*0.0044299121055113265;',\n '}',\n ].join('\\n');\n\n // -------------------------------------------------------------------------\n // Pixelate Filter\n _filter.pixelate = function (size) {\n const blurSizeX = (size) / _width;\n const blurSizeY = (size) / _height;\n const program = _compileShader(_filter.pixelate.SHADER);\n // Horizontal\n gl.uniform2f(program.uniform.size, blurSizeX, blurSizeY);\n _draw();\n };\n\n _filter.pixelate.SHADER = [\n 'precision highp float;',\n 'varying vec2 vUv;',\n 'uniform vec2 size;',\n 'uniform sampler2D texture;',\n 'vec2 pixelate(vec2 coord, vec2 size) {',\n 'return floor( coord / size ) * size;',\n '}',\n 'void main(void) {',\n 'gl_FragColor = vec4(0.0);',\n 'vec2 coord = pixelate(vUv, size);',\n 'gl_FragColor += texture2D(texture, coord);',\n '}',\n ].join('\\n');\n}\n", "/* eslint-disable indent */\n/* eslint-disable no-multi-spaces */\n\nexport default {\n backend: 'webgl', // select tfjs backend to use\n // can be 'webgl', 'wasm', 'cpu', or 'humangl' which is a custom version of webgl\n // leave as empty string to continue using default backend\n // when backend is set outside of Human library\n wasmPath: '../assets/', // path for wasm binaries\n // only used for backend: wasm\n debug: true, // print additional status messages to console\n async: true, // execute enabled models in parallel\n // this disables per-model performance data but\n // slightly increases performance\n // cannot be used if profiling is enabled\n profile: false, // enable tfjs profiling\n // this has significant performance impact\n // only enable for debugging purposes\n // currently only implemented for age,gender,emotion models\n deallocate: false, // aggresively deallocate gpu memory after each usage\n // only valid for webgl backend and only during first call\n // cannot be changed unless library is reloaded\n // this has significant performance impact\n // only enable on low-memory devices\n scoped: false, // enable scoped runs\n // some models *may* have memory leaks,\n // this wrapps everything in a local scope at a cost of performance\n // typically not needed\n videoOptimized: true, // perform additional optimizations when input is video,\n // must be disabled for images\n // basically this skips object box boundary detection for every n frames\n // while maintaining in-box detection since objects cannot move that fast\n warmup: 'face', // what to use for human.warmup(), can be 'none', 'face', 'full'\n // warmup pre-initializes all models for faster inference but can take\n // significant time on startup\n filter: {\n enabled: true, // enable image pre-processing filters\n width: 0, // resize input width\n height: 0, // resize input height\n // if both width and height are set to 0, there is no resizing\n // if just one is set, second one is scaled automatically\n // if both are set, values are used as-is\n return: true, // return processed canvas imagedata in result\n brightness: 0, // range: -1 (darken) to 1 (lighten)\n contrast: 0, // range: -1 (reduce contrast) to 1 (increase contrast)\n sharpness: 0, // range: 0 (no sharpening) to 1 (maximum sharpening)\n blur: 0, // range: 0 (no blur) to N (blur radius in pixels)\n saturation: 0, // range: -1 (reduce saturation) to 1 (increase saturation)\n hue: 0, // range: 0 (no change) to 360 (hue rotation in degrees)\n negative: false, // image negative\n sepia: false, // image sepia colors\n vintage: false, // image vintage colors\n kodachrome: false, // image kodachrome colors\n technicolor: false, // image technicolor colors\n polaroid: false, // image polaroid camera effect\n pixelate: 0, // range: 0 (no pixelate) to N (number of pixels to pixelate)\n },\n\n gesture: {\n enabled: true, // enable simple gesture recognition\n },\n\n face: {\n enabled: true, // controls if specified modul is enabled\n // face.enabled is required for all face models:\n // detector, mesh, iris, age, gender, emotion\n // (note: module is not loaded until it is required)\n detector: {\n modelPath: '../models/blazeface-back.json',\n rotation: false, // use best-guess rotated face image or just box with rotation as-is\n // false means higher performance, but incorrect mesh mapping if face angle is above 20 degrees\n // this parameter is not valid in nodejs\n maxFaces: 10, // maximum number of faces detected in the input\n // should be set to the minimum number for performance\n skipFrames: 21, // how many frames to go without re-running the face bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated face analysis as the head probably hasn't moved much\n // in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.2, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much in\n // non-maximum suppression (0.1 means drop if overlap 10%)\n scoreThreshold: 0.2, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression,\n // this is applied on detection objects only and before minConfidence\n return: false, // return extracted face as tensor\n },\n\n mesh: {\n enabled: true,\n modelPath: '../models/facemesh.json',\n },\n\n iris: {\n enabled: true,\n modelPath: '../models/iris.json',\n },\n\n age: {\n enabled: true,\n modelPath: '../models/age.json',\n skipFrames: 31, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n gender: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n modelPath: '../models/gender.json',\n skipFrames: 32, // how many frames to go without re-running the detector\n // only used for video inputs\n },\n\n emotion: {\n enabled: true,\n minConfidence: 0.1, // threshold for discarding a prediction\n skipFrames: 33, // how many frames to go without re-running the detector\n modelPath: '../models/emotion.json',\n },\n\n embedding: {\n enabled: false, // to improve accuracy of face embedding extraction it is\n // highly recommended to enable detector.rotation and mesh.enabled\n modelPath: '../models/mobileface.json',\n },\n },\n\n body: {\n enabled: true,\n modelPath: '../models/posenet.json', // can be 'posenet' or 'blazepose'\n maxDetections: 10, // maximum number of people detected in the input\n // should be set to the minimum number for performance\n // only valid for posenet as blazepose only detects single pose\n scoreThreshold: 0.3, // threshold for deciding when to remove boxes based on score\n // in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n nmsRadius: 20, // radius for deciding points are too close in non-maximum suppression\n // only valid for posenet as blazepose only detects single pose\n },\n\n hand: {\n enabled: true,\n rotation: false, // use best-guess rotated hand image or just box with rotation as-is\n // false means higher performance, but incorrect finger mapping if hand is inverted\n skipFrames: 12, // how many frames to go without re-running the hand bounding box detector\n // only used for video inputs\n // e.g., if model is running st 25 FPS, we can re-use existing bounding\n // box for updated hand skeleton analysis as the hand probably\n // hasn't moved much in short time (10 * 1/25 = 0.25 sec)\n skipInitial: false, // if previous detection resulted in no faces detected,\n // should skipFrames be reset immediately\n minConfidence: 0.1, // threshold for discarding a prediction\n iouThreshold: 0.1, // threshold for deciding whether boxes overlap too much\n // in non-maximum suppression\n scoreThreshold: 0.5, // threshold for deciding when to remove boxes based on\n // score in non-maximum suppression\n maxHands: 1, // maximum number of hands detected in the input\n // should be set to the minimum number for performance\n landmarks: true, // detect hand landmarks or just hand boundary box\n detector: {\n modelPath: '../models/handdetect.json',\n },\n skeleton: {\n modelPath: '../models/handskeleton.json',\n },\n },\n};\n", "// data:image/jpeg;base64,\nexport const face = `\n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`;\n\n// data:image/jpeg;base64,\nexport const body = `\n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\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAa2p1UYo5adbz+xbxMlvqJ1OqjDHLXree0ejmzNrWm953tPmTPWbWneZ7yoy5YhjrXXTjH8s75N\nmtkyxt0VZM2/m175N1V03yTKubMLXVXybeYLLX2VXy7eam+b0bOg4VquJW+rry4/O9uyZOq3UjVm\n9r25axMzPaIdvhns1kzbZddM0p5Y47z8/R2+HcF03Doi1a8+Xzvbv+TotJnjDXkt+K8ODHp8cY8N\nIpSO0RCwF2YAAAAAAAAACvUZYw6fJkntWN3k8dfHz2vLucdz8mkjFE9bz1+UOZosX1UzPm0nqI/W\nMYo9FlcPNklfFGeH/NshLGun+Cz6PtHZtVZWlRLS+jxPkRpIn7rdoupHTdA5s6SI+7H6Mfo+32Y2\n+To3neSIiZ7A0IjPXpXLePlMotGW3272t85datKzHZjbTVnsDj+FG/2Y/RlGP4R+jo20u7H6N1Ql\no+H8I/REY957R+jpfReiK6eOYHLtj2tttH6KrY/6Y/R2c+kjeJiFVtLG24hxpw7/AHY/RRkw9O37\nO99Hrt1YX0tfOBLjcGp4XF8c+u8fs9c4dcVcGemSI61nd3IneN1orQAAAAAAAAAAAAABFqxes1tE\nTE9JiUgPKcX4RbRXnNgiZwWnrH4XPi28PdXpW9JraImsxtMS8pxXhF9DecuGJtgmf+1TWW2N/la1\nL7N7T5e3Vy6W3hsYcvLbqzbO9jvvCzvDR0+XeO7crO6FmGSvRThy/RtVXJ92elvk2rRvDUzU7pl4\nizsd2J3jeBpcNz+Lg5LT7+Pp+Xk3W7js5eAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs0NTrN96Yp6edkW8Wzm6+LNTq4pvTHO9vOfRoWtt\n1mes95YWvs1s2fZldddOczLPLn2ju0MmebT3YZc2/mpm3qqllN1drsbZIhr3yzvtHf4AsvlYYseb\nV5Yx4KTe0+UQ6nDvZ3UazbJqd8OKeu33peq0eh0+hxcmnxxWPOfOfm0mP+steT/ji8N9mKY9suum\nL37+HHaPm9DSlaVitKxWsdohI0Y22gAgAAAAAAAAAABXnyRhw3yT92Nwef4xm8bVzET0rPJH5d12\n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\nAOZE/OsPS29nuH27YrV+VpeV9pdPXhOtw49NG9Mld55+vXcTPd42I47qo7xSfyWV9oM8d8VJ/VxM\nd8l46xWF9cV7en6o/qLfxp2I9ob+eCv/AHMo9op89P8A/wBORGmyT5R+qfo2X8P7n9Q/jTsx7RR5\n6ef+4/8AuHftg/8A6cWcOSO9J/WEbWr3pY7Efzp2Lcfv5YK/9zWy8d1E/ZpSv5Oba1/+Hb9lc+LP\nbFt87I7E/wAabWbiurvEx4nL/pjZzc2bJkn372t85ZXx55/BX85lucC0vPxnTxlnnjm32mOiZqUu\nLJ2p4TwnVavNWaYbRTfre0bQ99pcH0bT0xb78vmtiIiNojaErMwAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAHnfarF7umzRHaZrLjYrdIen9ocPi8JyTt1xzF4eUw23rCm3R4r6bMy\nwt6kdTaWLdjswmNoZontsCm0K5XWjopnuDC0dGpqG5bs08/daKV672MjbSaif6oh6Z5f2LtvptRX\n0tEvUN3Jfo8f7cYve0eX4zV7B5z20xc/C8eSPuZIRficfXlcPaG7ino08HWIbePpLF2NuiyOyrHK\n3fZFSwuovHVfaVF4QK5YWTM9UT0EKry6Ps1Tn4zjn8NZn9nOtLseydObiWW34cf918fWfk+PYANn\nKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq1WKM+ly4p+/WYeBxTNd6zG0xO0\nvobw3FcP0bi2em20Tbmj5Srr418V9sa2Z7qKyzi07MXUylhaU7yjqhLCeiq3ddaFNxFYW7NLNG8t\nzya+WO6Va9J7FW66mvwidnrXiPY3Ny8RyUn71Jj9Ht3RPjk19HK9pMHj8D1ER3rHN+jqqtTjjNps\nuOe16zAifXzfTz7kNyndpYazS9qT0mszDdoxrsi6m8LazMq6zDOsq1ZEyrt1WWlXaUCqyq0rbKbi\nFdp6PReyFd8uqv8ACsfy83aXrPZHHto89/xX2/SP/dpj6y8vx6EBq5gAAAAAAAAAAAAAAAAAAAAA\n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\nNO67NbkhzNVnmInqzaOZrL93JyZeV0M1++7S02jvxDWxhxx033tPpC8Z6rrezWjmZyazJG2/u03h\n2vFibTHoqvamiwVwY+nLGzV0+SZ1Mx8G0/45tOhzJ5lXMc3UVXRdlF1HP+iYsDPLPPy49/tz1+Te\npSIr0ho6ak5Ms5J8o2q6NImOrHV7XX488ypzTtHXo0s9t6zG7c1G1qz6ubeZiZ3UatXJG3yauSO7\ncvMTEx5tPLb3prPRMVr0HB8vicNxf0+7+kt+LOJwTJyY/Bnz3tH93X36N58cWvq6LSyiyndMSlC7\nmZcymLJiwLosmJVRLKLAtiU7q4lMSCzc3YxJuDMRuAlKAEgAAAlAkAAAAAABKAEgAAAAAJAAAAAA\nAAAAAAAEgAAAAAAAAAAAAAkAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAhIAAACAAAASgAAAAAAEAAAA\nhGzJAImGMwzQDDZjNVuyNgUTVhNGxysZqDVmiu1G5NN2M4waM0+DCaN2cbGcQNGaMZq3JxMJxA1J\nqx2bU4kU09slorWNwa20z02RXHbJbl26QvtFovbHWkxEdJt5y2MOHlr2U1W3jx+1hiw8vSO63lmI\nXRTaEWmtY6snRHO1VpmJ+DjavpSZl2s8b7y4HFcnh0n0gha5ebJN55KRM2mdoiPN6fh+kpwXh0Wy\nRHj5Otp/s5Ps1p62y31+em9aTMYt/OfVfxTiPjZ52naI7fBrI5t66xz5+a1rW7yx0eSL6iZjtEOX\nqNbSletom3lENjh2fbHzbbWt3iVozruc+5ztWubf4M4ybpQ2Oboyrva0Vjza8WdDR4OkXt3n9ldX\nkaePP9VtYqctYhdvt5oivTeCZ2YOxXk6ubqMfV0b9mrljfqlFcq88k7z2U5axeItDa1OPessuC8P\nya7XRWYnwqdbT/ZMilvIu4dpslNdixXja8Y5tt85djZdbDWnGOesRtXFtuw6T27No5Kx2OrKYQlC\nExKJgBnEpiyvdlEgsizKLKollFgWxLKJVRLKJBbEp3VxLKJBnuMWQJEbpBIAAAJAAAABIAAAAAAA\nlAJAAAAAAAAAAAAAASAAAAAAAAAAAAAJAAAABAJABAlAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAA\nAAABAJQAAAAgAABAAI2EoBGyJhkgGPKxmqxAKpownHC+YRMdN5BrTj67R3bOn01o7p01Iv71u89o\n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\n2Q==`;\n", "import config from '../config';\nimport { TRI468 as triangulation } from './blazeface/coords';\n\nexport const drawOptions = {\n color: 'rgba(173, 216, 230, 0.3)', // 'lightblue' with light alpha channel\n labelColor: 'rgba(173, 216, 230, 1)', // 'lightblue' with dark alpha channel\n shadowColor: 'black',\n font: 'small-caps 16px \"Segoe UI\"',\n lineHeight: 20,\n lineWidth: 6,\n pointSize: 2,\n roundRect: 28,\n drawPoints: false,\n drawLabels: true,\n drawBoxes: true,\n drawPolygons: true,\n fillPolygons: false,\n useDepth: true,\n useCurves: false,\n bufferedOutput: false,\n};\n\nfunction point(ctx, x, y, z = null) {\n ctx.fillStyle = drawOptions.useDepth && z ? `rgba(${127.5 + (2 * (z || 0))}, ${127.5 - (2 * (z || 0))}, 255, 0.3)` : drawOptions.color;\n ctx.beginPath();\n ctx.arc(x, y, drawOptions.pointSize, 0, 2 * Math.PI);\n ctx.fill();\n}\n\nfunction rect(ctx, x, y, width, height) {\n ctx.beginPath();\n if (drawOptions.useCurves) {\n const cx = (x + x + width) / 2;\n const cy = (y + y + height) / 2;\n ctx.ellipse(cx, cy, width / 2, height / 2, 0, 0, 2 * Math.PI);\n } else {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.moveTo(x + drawOptions.roundRect, y);\n ctx.lineTo(x + width - drawOptions.roundRect, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + drawOptions.roundRect);\n ctx.lineTo(x + width, y + height - drawOptions.roundRect);\n ctx.quadraticCurveTo(x + width, y + height, x + width - drawOptions.roundRect, y + height);\n ctx.lineTo(x + drawOptions.roundRect, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - drawOptions.roundRect);\n ctx.lineTo(x, y + drawOptions.roundRect);\n ctx.quadraticCurveTo(x, y, x + drawOptions.roundRect, y);\n ctx.closePath();\n }\n ctx.stroke();\n}\n\nfunction lines(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n ctx.beginPath();\n ctx.moveTo(points[0][0], points[0][1]);\n for (const pt of points) {\n ctx.strokeStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.fillStyle = drawOptions.useDepth && pt[2] ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.3)` : drawOptions.color;\n ctx.lineTo(pt[0], parseInt(pt[1]));\n }\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nfunction curves(ctx, points: number[] = []) {\n if (points === undefined || points.length === 0) return;\n if (!drawOptions.useCurves || points.length <= 2) {\n lines(ctx, points);\n return;\n }\n ctx.moveTo(points[0][0], points[0][1]);\n for (let i = 0; i < points.length - 2; i++) {\n const xc = (points[i][0] + points[i + 1][0]) / 2;\n const yc = (points[i][1] + points[i + 1][1]) / 2;\n ctx.quadraticCurveTo(points[i][0], points[i][1], xc, yc);\n }\n ctx.quadraticCurveTo(points[points.length - 2][0], points[points.length - 2][1], points[points.length - 1][0], points[points.length - 1][1]);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.closePath();\n ctx.fill();\n }\n}\n\nexport async function gesture(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.font = drawOptions.font;\n ctx.fillStyle = drawOptions.color;\n let i = 1;\n for (let j = 0; j < result.length; j++) {\n let where:any[] = [];\n let what:any[] = [];\n [where, what] = Object.entries(result[j]);\n if ((what.length > 1) && (what[1].length > 0)) {\n const person = where[1] > 0 ? `#${where[1]}` : '';\n const label = `${where[0]} ${person}: ${what[1]}`;\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(label, 8, 2 + (i * drawOptions.lineHeight));\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(label, 6, 0 + (i * drawOptions.lineHeight));\n i += 1;\n }\n }\n}\n\nexport async function face(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n for (const f of result) {\n ctx.font = drawOptions.font;\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n if (drawOptions.drawBoxes) {\n rect(ctx, f.box[0], f.box[1], f.box[2], f.box[3]);\n // rect(ctx, inCanvas.width * f.boxRaw[0], inCanvas.height * f.boxRaw[1], inCanvas.width * f.boxRaw[2], inCanvas.height * f.boxRaw[3]);\n }\n // silly hack since fillText does not suport new line\n const labels:string[] = [];\n labels.push(`face confidence: ${Math.trunc(100 * f.confidence)}%`);\n if (f.genderConfidence) labels.push(`${f.gender || ''} ${Math.trunc(100 * f.genderConfidence)}% confident`);\n // if (f.genderConfidence) labels.push(f.gender);\n if (f.age) labels.push(`age: ${f.age || ''}`);\n if (f.iris) labels.push(`iris distance: ${f.iris}`);\n if (f.emotion && f.emotion.length > 0) {\n const emotion = f.emotion.map((a) => `${Math.trunc(100 * a.score)}% ${a.emotion}`);\n labels.push(emotion.join(' '));\n }\n if (f.angle && f.angle.roll) labels.push(`roll: ${Math.trunc(100 * f.angle.roll) / 100} yaw:${Math.trunc(100 * f.angle.yaw) / 100} pitch:${Math.trunc(100 * f.angle.pitch) / 100}`);\n if (labels.length === 0) labels.push('face');\n ctx.fillStyle = drawOptions.color;\n for (let i = labels.length - 1; i >= 0; i--) {\n const x = Math.max(f.box[0], 0);\n const y = i * drawOptions.lineHeight + f.box[1];\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText(labels[i], x + 5, y + 16);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText(labels[i], x + 4, y + 15);\n }\n ctx.lineWidth = 1;\n if (f.mesh) {\n if (drawOptions.drawPoints) {\n for (const pt of f.mesh) point(ctx, pt[0], pt[1], pt[2]);\n // for (const pt of f.meshRaw) point(ctx, pt[0] * inCanvas.offsetWidth, pt[1] * inCanvas.offsetHeight, pt[2]);\n }\n if (drawOptions.drawPolygons) {\n ctx.lineWidth = 1;\n for (let i = 0; i < triangulation.length / 3; i++) {\n const points = [\n triangulation[i * 3 + 0],\n triangulation[i * 3 + 1],\n triangulation[i * 3 + 2],\n ].map((index) => f.mesh[index]);\n lines(ctx, points);\n }\n // iris: array[center, left, top, right, bottom]\n if (f.annotations && f.annotations.leftEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.leftEyeIris[3][0] - f.annotations.leftEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.leftEyeIris[4][1] - f.annotations.leftEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.leftEyeIris[0][0], f.annotations.leftEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n if (f.annotations && f.annotations.rightEyeIris) {\n ctx.strokeStyle = drawOptions.useDepth ? 'rgba(255, 200, 255, 0.3)' : drawOptions.color;\n ctx.beginPath();\n const sizeX = Math.abs(f.annotations.rightEyeIris[3][0] - f.annotations.rightEyeIris[1][0]) / 2;\n const sizeY = Math.abs(f.annotations.rightEyeIris[4][1] - f.annotations.rightEyeIris[2][1]) / 2;\n ctx.ellipse(f.annotations.rightEyeIris[0][0], f.annotations.rightEyeIris[0][1], sizeX, sizeY, 0, 0, 2 * Math.PI);\n ctx.stroke();\n if (drawOptions.fillPolygons) {\n ctx.fillStyle = drawOptions.useDepth ? 'rgba(255, 255, 200, 0.3)' : drawOptions.color;\n ctx.fill();\n }\n }\n }\n }\n }\n}\n\nconst lastDrawnPose:any[] = [];\nexport async function body(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n for (let i = 0; i < result.length; i++) {\n // result[i].keypoints = result[i].keypoints.filter((a) => a.score > 0.5);\n if (!lastDrawnPose[i] && drawOptions.bufferedOutput) lastDrawnPose[i] = { ...result[i] };\n ctx.strokeStyle = drawOptions.color;\n ctx.lineWidth = drawOptions.lineWidth;\n if (drawOptions.drawPoints) {\n for (let pt = 0; pt < result[i].keypoints.length; pt++) {\n ctx.fillStyle = drawOptions.useDepth && result[i].keypoints[pt].position.z ? `rgba(${127.5 + (2 * result[i].keypoints[pt].position.z)}, ${127.5 - (2 * result[i].keypoints[pt].position.z)}, 255, 0.5)` : drawOptions.color;\n if (drawOptions.bufferedOutput) {\n lastDrawnPose[i].keypoints[pt][0] = (lastDrawnPose[i].keypoints[pt][0] + result[i].keypoints[pt].position.x) / 2;\n lastDrawnPose[i].keypoints[pt][1] = (lastDrawnPose[i].keypoints[pt][1] + result[i].keypoints[pt].position.y) / 2;\n point(ctx, lastDrawnPose[i].keypoints[pt][0], lastDrawnPose[i].keypoints[pt][1]);\n } else {\n point(ctx, result[i].keypoints[pt].position.x, result[i].keypoints[pt].position.y);\n }\n }\n }\n if (drawOptions.drawLabels) {\n ctx.font = drawOptions.font;\n for (const pt of result[i].keypoints) {\n ctx.fillStyle = drawOptions.useDepth && pt.position.z ? `rgba(${127.5 + (2 * pt.position.z)}, ${127.5 - (2 * pt.position.z)}, 255, 0.5)` : drawOptions.color;\n ctx.fillText(`${pt.part}`, pt.position.x + 4, pt.position.y + 4);\n }\n }\n if (drawOptions.drawPolygons) {\n let part;\n const points: any[] = [];\n // torso\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n if (points.length === 5) lines(ctx, points); // only draw if we have complete torso\n // leg left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // leg right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightHip');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightKnee');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightAnkle');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightHeel');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightFoot');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm left\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'leftShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'leftPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // arm right\n points.length = 0;\n part = result[i].keypoints.find((a) => a.part === 'rightShoulder');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightElbow');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightWrist');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n part = result[i].keypoints.find((a) => a.part === 'rightPalm');\n if (part && part.score > config.body.scoreThreshold) points.push([part.position.x, part.position.y]);\n curves(ctx, points);\n // draw all\n }\n }\n}\n\nexport async function hand(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n const ctx = inCanvas.getContext('2d');\n if (!ctx) return;\n ctx.lineJoin = 'round';\n ctx.font = drawOptions.font;\n for (const h of result) {\n if (drawOptions.drawBoxes) {\n ctx.strokeStyle = drawOptions.color;\n ctx.fillStyle = drawOptions.color;\n rect(ctx, h.box[0], h.box[1], h.box[2], h.box[3]);\n if (drawOptions.shadowColor && drawOptions.shadowColor !== '') {\n ctx.fillStyle = drawOptions.shadowColor;\n ctx.fillText('hand', h.box[0] + 3, 1 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n }\n ctx.fillStyle = drawOptions.labelColor;\n ctx.fillText('hand', h.box[0] + 2, 0 + h.box[1] + drawOptions.lineHeight, h.box[2]);\n ctx.stroke();\n }\n if (drawOptions.drawPoints) {\n if (h.landmarks && h.landmarks.length > 0) {\n for (const pt of h.landmarks) {\n ctx.fillStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * pt[2])}, ${127.5 - (2 * pt[2])}, 255, 0.5)` : drawOptions.color;\n point(ctx, pt[0], pt[1]);\n }\n }\n }\n if (drawOptions.drawPolygons) {\n const addPart = (part) => {\n if (!part) return;\n for (let i = 0; i < part.length; i++) {\n ctx.lineWidth = drawOptions.lineWidth;\n ctx.beginPath();\n ctx.strokeStyle = drawOptions.useDepth ? `rgba(${127.5 + (2 * part[i][2])}, ${127.5 - (2 * part[i][2])}, 255, 0.5)` : drawOptions.color;\n ctx.moveTo(part[i > 0 ? i - 1 : 0][0], part[i > 0 ? i - 1 : 0][1]);\n ctx.lineTo(part[i][0], part[i][1]);\n ctx.stroke();\n }\n };\n addPart(h.annotations.indexFinger);\n addPart(h.annotations.middleFinger);\n addPart(h.annotations.ringFinger);\n addPart(h.annotations.pinky);\n addPart(h.annotations.thumb);\n // addPart(hand.annotations.palmBase);\n }\n }\n}\n\nexport async function canvas(inCanvas, outCanvas) {\n if (!inCanvas || !outCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement) || !(outCanvas instanceof HTMLCanvasElement)) return;\n const outCtx = inCanvas.getContext('2d');\n outCtx?.drawImage(inCanvas, 0, 0);\n}\n\nexport async function all(inCanvas, result) {\n if (!result || !inCanvas) return;\n if (!(inCanvas instanceof HTMLCanvasElement)) return;\n face(inCanvas, result.face);\n body(inCanvas, result.body);\n hand(inCanvas, result.hand);\n gesture(inCanvas, result.gesture);\n}\n"], + "mappings": "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AmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,iBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,iBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,eAAiB,kBAClB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,gBAAkB,kBACnB,CAAC,gBAAkB,kBACnB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,iBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kBACpB,CAAC,iBAAmB,kB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K,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GACrJ,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GACpJ,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,GACjJ,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EAAG,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,EAAG,IAC/I,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,GAAI,EAAG,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,EAAG,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GACtJ,GAAI,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,GAClJ,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACnJ,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,IAClJ,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,IAAK,IAAK,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IACnJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,EAAG,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC7I,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,EAAG,IAAK,GAAI,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GACnJ,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,EAAG,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAClJ,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAClJ,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,GAAI,GAAI,EAAG,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAChJ,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IACpJ,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GACrJ,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,GACpJ,IAAK,GAAI,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAC/I,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,IAAK,GAAI,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,GAAI,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,GAAI,GACpJ,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GACrJ,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,EAAG,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,GAAI,EACpJ,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAC9I,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,GAAI,IAAK,EAAG,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,EAAG,GAAI,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAC9I,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC9I,IAAK,GAAI,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC/I,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAChJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAAI,EAAG,IAAK,IAAK,IAAK,IAAK,IACpJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjJ,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,QACV,SAAU,SAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,OACV,SAAU,QAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,EAAG,EACH,EAAG,EACH,SAAU,MACV,SAAU,OAEZ,CACE,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AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kEA0JP,GAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA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", "names": [] } diff --git a/src/embedding/embedding.ts b/src/embedding/embedding.ts index 8c0fd112..713e69cd 100644 --- a/src/embedding/embedding.ts +++ b/src/embedding/embedding.ts @@ -2,6 +2,7 @@ import { log } from '../log'; import * as tf from '../../dist/tfjs.esm.js'; import * as profile from '../profile'; +type Tensor = {}; let model; export async function load(config) { @@ -12,7 +13,7 @@ export async function load(config) { return model; } -export function simmilarity(embedding1, embedding2, order = 2) { +export function simmilarity(embedding1, embedding2, order = 2): Number { if (!embedding1 || !embedding2) return 0; if (embedding1?.length === 0 || embedding2?.length === 0) return 0; if (embedding1?.length !== embedding2?.length) return 0; @@ -25,7 +26,19 @@ export function simmilarity(embedding1, embedding2, order = 2) { return res; } -export function enhance(input) { +export function match(embedding: Array, db: Array, threshold = 0) { + let best = { simmilarity: 0, name: '', source: '', embedding: [] }; + if (!embedding || !db || !Array.isArray(embedding) || !Array.isArray(db)) return best; + for (const f of db) { + if (f.embedding && f.name) { + const perc = simmilarity(embedding, f.embedding); + if (perc > threshold && perc > best.simmilarity) best = { ...f, simmilarity: perc }; + } + } + return best; +} + +export function enhance(input): Tensor { const image = tf.tidy(() => { // input received from detector is already normalized to 0..1 // input is also assumed to be straightened @@ -65,8 +78,8 @@ export function enhance(input) { return image; } -export async function predict(input, config) { - if (!model) return null; +export async function predict(input, config): Promise { + if (!model) return []; return new Promise(async (resolve) => { // let data: Array<[]> = []; let data: Array = []; @@ -104,7 +117,7 @@ export async function predict(input, config) { const reduce = reshape.logSumExp(1); // reduce 2nd dimension by calculating logSumExp on it const output: Array = reduce.dataSync(); - return output; + return [...output]; // convert typed array to simple array }); } else { const profileData = await tf.profile(() => model.predict({ img_inputs: image })); @@ -112,7 +125,7 @@ export async function predict(input, config) { profileData.result.dispose(); profile.run('emotion', profileData); } - image.dispose(); + tf.dispose(image); } resolve(data); }); diff --git a/src/human.ts b/src/human.ts index 613e100a..e6004bb3 100644 --- a/src/human.ts +++ b/src/human.ts @@ -193,9 +193,14 @@ export class Human { return 0; } + // eslint-disable-next-line class-methods-use-this enhance(input: Tensor): Tensor | null { - if (this.config.face.embedding.enabled) return embedding.enhance(input); - return null; + return embedding.enhance(input); + } + + // eslint-disable-next-line class-methods-use-this + match(faceEmbedding: Array, db: Array<{ name: String, source: String | undefined, embedding: Array }>, threshold = 0): { name: String, source: String | undefined, simmilarity: Number, embedding: Array } { + return embedding.match(faceEmbedding, db, threshold); } // preload models, not explicitly required as it's done automatically on first use diff --git a/tsconfig.json b/tsconfig.json index 8bedda4f..3b8ac267 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -30,11 +30,11 @@ "disableSources": true, "gitRevision": "main", "hideGenerator": "true", - "theme": "default", "readme": "none", "out": "typedoc", "entryPoints": "src/human.ts", "logLevel": "Error", - "logger": "none" + "logger": "none", + "theme": "wiki/theme/" } } diff --git a/typedoc/assets/icons.png b/typedoc/assets/icons.png new file mode 100644 index 0000000000000000000000000000000000000000..3836d5fe46e48bbe186116855aae879c23935327 GIT binary patch literal 9615 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 NZmR35l_G4O{0}dcmS_L~ literal 0 HcmV?d00001 diff --git a/typedoc/assets/icons@2x.png b/typedoc/assets/icons@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..5a209e2f6d7f915cc9cb6fe7a4264c8be4db87b0 GIT binary patch literal 28144 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 li > :first-child, .tsd-panel > :first-child, .col > :first-child, .col-11 > :first-child, .col-10 > :first-child, .col-9 > :first-child, .col-8 > :first-child, .col-7 > :first-child, .col-6 > :first-child, .col-5 > :first-child, .col-4 > :first-child, .col-3 > :first-child, .col-2 > :first-child, .col-1 > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child, +.tsd-panel > :first-child > :first-child, +.col > :first-child > :first-child, +.col-11 > :first-child > :first-child, +.col-10 > :first-child > :first-child, +.col-9 > :first-child > :first-child, +.col-8 > :first-child > :first-child, +.col-7 > :first-child > :first-child, +.col-6 > :first-child > :first-child, +.col-5 > :first-child > :first-child, +.col-4 > :first-child > :first-child, +.col-3 > :first-child > :first-child, +.col-2 > :first-child > :first-child, +.col-1 > :first-child > :first-child, +ul.tsd-descriptions > li > :first-child > :first-child > :first-child, +.tsd-panel > :first-child > :first-child > :first-child, +.col > :first-child > :first-child > :first-child, +.col-11 > :first-child > :first-child > :first-child, +.col-10 > :first-child > :first-child > :first-child, +.col-9 > :first-child > :first-child > :first-child, +.col-8 > :first-child > :first-child > :first-child, +.col-7 > :first-child > :first-child > :first-child, +.col-6 > :first-child > :first-child > :first-child, +.col-5 > :first-child > :first-child > :first-child, +.col-4 > :first-child > :first-child > :first-child, +.col-3 > :first-child > :first-child > :first-child, +.col-2 > :first-child > :first-child > :first-child, +.col-1 > :first-child > :first-child > :first-child { + margin-top: 0; +} +ul.tsd-descriptions > li > :last-child, .tsd-panel > :last-child, .col > :last-child, .col-11 > :last-child, .col-10 > :last-child, .col-9 > :last-child, .col-8 > :last-child, .col-7 > :last-child, .col-6 > :last-child, .col-5 > :last-child, .col-4 > :last-child, .col-3 > :last-child, .col-2 > :last-child, .col-1 > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child, +.tsd-panel > :last-child > :last-child, +.col > :last-child > :last-child, +.col-11 > :last-child > :last-child, +.col-10 > :last-child > :last-child, +.col-9 > :last-child > :last-child, +.col-8 > :last-child > :last-child, +.col-7 > :last-child > :last-child, +.col-6 > :last-child > :last-child, +.col-5 > :last-child > :last-child, +.col-4 > :last-child > :last-child, +.col-3 > :last-child > :last-child, +.col-2 > :last-child > :last-child, +.col-1 > :last-child > :last-child, +ul.tsd-descriptions > li > :last-child > :last-child > :last-child, +.tsd-panel > :last-child > :last-child > :last-child, +.col > :last-child > :last-child > :last-child, +.col-11 > :last-child > :last-child > :last-child, +.col-10 > :last-child > :last-child > :last-child, +.col-9 > :last-child > :last-child > :last-child, +.col-8 > :last-child > :last-child > :last-child, +.col-7 > :last-child > :last-child > :last-child, +.col-6 > :last-child > :last-child > :last-child, +.col-5 > :last-child > :last-child > :last-child, +.col-4 > :last-child > :last-child > :last-child, +.col-3 > :last-child > :last-child > :last-child, +.col-2 > :last-child > :last-child > :last-child, +.col-1 > :last-child > :last-child > :last-child { + margin-bottom: 0; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 0 40px; +} +@media (max-width: 640px) { + .container { + padding: 0 20px; + } +} + +.container-main { + padding-bottom: 200px; +} + +.row { + display: flex; + position: relative; + margin: 0 -10px; +} +.row:after { + visibility: hidden; + display: block; + content: ""; + clear: both; + height: 0; +} + +.col, .col-11, .col-10, .col-9, .col-8, .col-7, .col-6, .col-5, .col-4, .col-3, .col-2, .col-1 { + box-sizing: border-box; + float: left; + padding: 0 10px; +} + +.col-1 { + width: 8.3333333333%; +} + +.offset-1 { + margin-left: 8.3333333333%; +} + +.col-2 { + width: 16.6666666667%; +} + +.offset-2 { + margin-left: 16.6666666667%; +} + +.col-3 { + width: 25%; +} + +.offset-3 { + margin-left: 25%; +} + +.col-4 { + width: 33.3333333333%; +} + +.offset-4 { + margin-left: 33.3333333333%; +} + +.col-5 { + width: 41.6666666667%; +} + +.offset-5 { + margin-left: 41.6666666667%; +} + +.col-6 { + width: 50%; +} + +.offset-6 { + margin-left: 50%; +} + +.col-7 { + width: 58.3333333333%; +} + +.offset-7 { + margin-left: 58.3333333333%; +} + +.col-8 { + width: 66.6666666667%; +} + +.offset-8 { + margin-left: 66.6666666667%; +} + +.col-9 { + width: 75%; +} + +.offset-9 { + margin-left: 75%; +} + +.col-10 { + width: 83.3333333333%; +} + +.offset-10 { + margin-left: 83.3333333333%; +} + +.col-11 { + width: 91.6666666667%; +} + +.offset-11 { + margin-left: 91.6666666667%; +} + +.tsd-kind-icon { + display: block; + position: relative; + padding-left: 20px; + text-indent: -20px; +} +.tsd-kind-icon:before { + content: ""; + display: inline-block; + vertical-align: middle; + width: 17px; + height: 17px; + margin: 0 3px 2px 0; + background-image: url(icons.png); +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-kind-icon:before { + background-image: url(icons@2x.png); + background-size: 238px 204px; + } +} + +.tsd-signature.tsd-kind-icon:before { + background-position: 0 -153px; +} + +.tsd-kind-object-literal > .tsd-kind-icon:before { + background-position: 0px -17px; +} +.tsd-kind-object-literal.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -17px; +} +.tsd-kind-object-literal.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -17px; +} + +.tsd-kind-class > .tsd-kind-icon:before { + background-position: 0px -34px; +} +.tsd-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -34px; +} +.tsd-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -34px; +} + +.tsd-kind-class.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -51px; +} +.tsd-kind-class.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -51px; +} +.tsd-kind-class.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -51px; +} + +.tsd-kind-interface > .tsd-kind-icon:before { + background-position: 0px -68px; +} +.tsd-kind-interface.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -68px; +} +.tsd-kind-interface.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -68px; +} + +.tsd-kind-interface.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -85px; +} +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -85px; +} +.tsd-kind-interface.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -85px; +} + +.tsd-kind-namespace > .tsd-kind-icon:before { + background-position: 0px -102px; +} +.tsd-kind-namespace.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; +} +.tsd-kind-namespace.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; +} + +.tsd-kind-module > .tsd-kind-icon:before { + background-position: 0px -102px; +} +.tsd-kind-module.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -102px; +} +.tsd-kind-module.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -102px; +} + +.tsd-kind-enum > .tsd-kind-icon:before { + background-position: 0px -119px; +} +.tsd-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -119px; +} +.tsd-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -119px; +} + +.tsd-kind-enum-member > .tsd-kind-icon:before { + background-position: 0px -136px; +} +.tsd-kind-enum-member.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -136px; +} +.tsd-kind-enum-member.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -136px; +} + +.tsd-kind-signature > .tsd-kind-icon:before { + background-position: 0px -153px; +} +.tsd-kind-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -153px; +} +.tsd-kind-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -153px; +} + +.tsd-kind-type-alias > .tsd-kind-icon:before { + background-position: 0px -170px; +} +.tsd-kind-type-alias.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -170px; +} +.tsd-kind-type-alias.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -170px; +} + +.tsd-kind-type-alias.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: 0px -187px; +} +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -17px -187px; +} +.tsd-kind-type-alias.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -34px -187px; +} + +.tsd-kind-variable > .tsd-kind-icon:before { + background-position: -136px -0px; +} +.tsd-kind-variable.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; +} +.tsd-kind-variable.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -0px; +} +.tsd-kind-variable.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-variable.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; +} +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -0px; +} +.tsd-kind-variable.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-variable.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; +} +.tsd-kind-variable.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -0px; +} + +.tsd-kind-property > .tsd-kind-icon:before { + background-position: -136px -0px; +} +.tsd-kind-property.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -0px; +} +.tsd-kind-property.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-property.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -0px; +} +.tsd-kind-property.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-property.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -0px; +} +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -0px; +} +.tsd-kind-property.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -0px; +} +.tsd-kind-property.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -0px; +} +.tsd-kind-property.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -0px; +} + +.tsd-kind-get-signature > .tsd-kind-icon:before { + background-position: -136px -17px; +} +.tsd-kind-get-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -17px; +} +.tsd-kind-get-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -17px; +} +.tsd-kind-get-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -17px; +} + +.tsd-kind-set-signature > .tsd-kind-icon:before { + background-position: -136px -34px; +} +.tsd-kind-set-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -34px; +} +.tsd-kind-set-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -34px; +} +.tsd-kind-set-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -34px; +} + +.tsd-kind-accessor > .tsd-kind-icon:before { + background-position: -136px -51px; +} +.tsd-kind-accessor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -51px; +} +.tsd-kind-accessor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -51px; +} +.tsd-kind-accessor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -51px; +} + +.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -68px; +} +.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; +} +.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; +} +.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; +} +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; +} +.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; +} +.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; +} + +.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -68px; +} +.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; +} +.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; +} +.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; +} +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; +} +.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; +} +.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; +} + +.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -68px; +} +.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -68px; +} +.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -68px; +} +.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -68px; +} + +.tsd-kind-function.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -85px; +} +.tsd-kind-function.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -85px; +} + +.tsd-kind-method.tsd-has-type-parameter > .tsd-kind-icon:before { + background-position: -136px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -85px; +} +.tsd-kind-method.tsd-has-type-parameter.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -85px; +} + +.tsd-kind-constructor > .tsd-kind-icon:before { + background-position: -136px -102px; +} +.tsd-kind-constructor.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; +} +.tsd-kind-constructor.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -102px; +} +.tsd-kind-constructor.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -102px; +} + +.tsd-kind-constructor-signature > .tsd-kind-icon:before { + background-position: -136px -102px; +} +.tsd-kind-constructor-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -102px; +} +.tsd-kind-constructor-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -102px; +} +.tsd-kind-constructor-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -102px; +} + +.tsd-kind-index-signature > .tsd-kind-icon:before { + background-position: -136px -119px; +} +.tsd-kind-index-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -119px; +} +.tsd-kind-index-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -119px; +} +.tsd-kind-index-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -119px; +} + +.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -136px; +} +.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -136px; +} +.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; +} +.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -136px; +} +.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; +} +.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -136px; +} +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -136px; +} +.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -136px; +} +.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -136px; +} +.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -136px; +} + +.tsd-is-static > .tsd-kind-icon:before { + background-position: -136px -153px; +} +.tsd-is-static.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -153px; +} +.tsd-is-static.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; +} +.tsd-is-static.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -153px; +} +.tsd-is-static.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; +} +.tsd-is-static.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -153px; +} +.tsd-is-static.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -153px; +} +.tsd-is-static.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -153px; +} +.tsd-is-static.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -153px; +} +.tsd-is-static.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -153px; +} + +.tsd-is-static.tsd-kind-function > .tsd-kind-icon:before { + background-position: -136px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; +} +.tsd-is-static.tsd-kind-function.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; +} + +.tsd-is-static.tsd-kind-method > .tsd-kind-icon:before { + background-position: -136px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; +} +.tsd-is-static.tsd-kind-method.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; +} + +.tsd-is-static.tsd-kind-call-signature > .tsd-kind-icon:before { + background-position: -136px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -170px; +} +.tsd-is-static.tsd-kind-call-signature.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -170px; +} + +.tsd-is-static.tsd-kind-event > .tsd-kind-icon:before { + background-position: -136px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-is-protected > .tsd-kind-icon:before { + background-position: -153px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class > .tsd-kind-icon:before { + background-position: -51px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -68px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected > .tsd-kind-icon:before { + background-position: -85px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-protected.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -102px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-class.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum > .tsd-kind-icon:before { + background-position: -170px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-protected > .tsd-kind-icon:before { + background-position: -187px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-enum.tsd-is-private > .tsd-kind-icon:before { + background-position: -119px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface > .tsd-kind-icon:before { + background-position: -204px -187px; +} +.tsd-is-static.tsd-kind-event.tsd-parent-kind-interface.tsd-is-inherited > .tsd-kind-icon:before { + background-position: -221px -187px; +} + +@keyframes fade-in { + from { + opacity: 0; + } + to { + opacity: 1; + } +} +@keyframes fade-out { + from { + opacity: 1; + visibility: visible; + } + to { + opacity: 0; + } +} +@keyframes fade-in-delayed { + 0% { + opacity: 0; + } + 33% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes fade-out-delayed { + 0% { + opacity: 1; + visibility: visible; + } + 66% { + opacity: 0; + } + 100% { + opacity: 0; + } +} +@keyframes shift-to-left { + from { + transform: translate(0, 0); + } + to { + transform: translate(-25%, 0); + } +} +@keyframes unshift-to-left { + from { + transform: translate(-25%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-in-from-right { + from { + transform: translate(100%, 0); + } + to { + transform: translate(0, 0); + } +} +@keyframes pop-out-to-right { + from { + transform: translate(0, 0); + visibility: visible; + } + to { + transform: translate(100%, 0); + } +} +body { + background: var(--color-background); + font-family: 'Lato', 'Segoe UI'; + font-size: 16px; + color: var(--color-text); +} + +a { + color: var(--color-link); + text-decoration: none; +} +a:hover { + text-decoration: underline; +} + +code, pre { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + padding: 0.2em; + margin: 0; + font-size: 14px; + background-color: var(--color-code-background); +} + +pre { + padding: 10px; +} +pre code { + padding: 0; + font-size: 100%; + background-color: transparent; +} + +blockquote { + margin: 1em 0; + padding-left: 1em; + border-left: 4px solid gray; +} + +.tsd-typography { + line-height: 1.333em; +} +.tsd-typography ul { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-typography h4, .tsd-typography .tsd-index-panel h3, .tsd-index-panel .tsd-typography h3, .tsd-typography h5, .tsd-typography h6 { + font-size: 1em; + margin: 0; +} +.tsd-typography h5, .tsd-typography h6 { + font-weight: normal; +} +.tsd-typography p, .tsd-typography ul, .tsd-typography ol { + margin: 1em 0; +} + +@media (min-width: 901px) and (max-width: 1024px) { + html.default .col-content { + width: 72%; + } + html.default .col-menu { + width: 28%; + } + html.default .tsd-navigation { + padding-left: 10px; + } +} +@media (max-width: 900px) { + html.default .col-content { + float: none; + width: 100%; + } + html.default .col-menu { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + z-index: 1024; + top: 0 !important; + bottom: 0 !important; + left: auto !important; + right: 0 !important; + width: 100%; + padding: 20px 20px 0 0; + max-width: 450px; + visibility: hidden; + background-color: var(--color-panel); + transform: translate(100%, 0); + } + html.default .col-menu > *:last-child { + padding-bottom: 20px; + } + html.default .overlay { + content: ""; + display: block; + position: fixed; + z-index: 1023; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: rgba(0, 0, 0, 0.75); + visibility: hidden; + } + html.default.to-has-menu .overlay { + animation: fade-in 0.4s; + } + html.default.to-has-menu header, +html.default.to-has-menu footer, +html.default.to-has-menu .col-content { + animation: shift-to-left 0.4s; + } + html.default.to-has-menu .col-menu { + animation: pop-in-from-right 0.4s; + } + html.default.from-has-menu .overlay { + animation: fade-out 0.4s; + } + html.default.from-has-menu header, +html.default.from-has-menu footer, +html.default.from-has-menu .col-content { + animation: unshift-to-left 0.4s; + } + html.default.from-has-menu .col-menu { + animation: pop-out-to-right 0.4s; + } + html.default.has-menu body { + overflow: hidden; + } + html.default.has-menu .overlay { + visibility: visible; + } + html.default.has-menu header, +html.default.has-menu footer, +html.default.has-menu .col-content { + transform: translate(-25%, 0); + } + html.default.has-menu .col-menu { + visibility: visible; + transform: translate(0, 0); + } +} + +.tsd-page-title { + padding: 70px 0 20px 0; + margin: 0 0 40px 0; + background: var(--color-panel); + box-shadow: 0 0 5px rgba(0, 0, 0, 0.35); +} +.tsd-page-title h1 { + margin: 0; +} + +.tsd-breadcrumb { + margin: 0; + padding: 0; + color: var(--color-text-aside); +} +.tsd-breadcrumb a { + color: var(--color-text-aside); + text-decoration: none; +} +.tsd-breadcrumb a:hover { + text-decoration: underline; +} +.tsd-breadcrumb li { + display: inline; +} +.tsd-breadcrumb li:after { + content: " / "; +} + +html.minimal .container { + margin: 0; +} +html.minimal .container-main { + padding-top: 50px; + padding-bottom: 0; +} +html.minimal .content-wrap { + padding-left: 300px; +} +html.minimal .tsd-navigation { + position: fixed !important; + overflow: auto; + -webkit-overflow-scrolling: touch; + box-sizing: border-box; + z-index: 1; + left: 0; + top: 40px; + bottom: 0; + width: 300px; + padding: 20px; + margin: 0; +} +html.minimal .tsd-member .tsd-member { + margin-left: 0; +} +html.minimal .tsd-page-toolbar { + position: fixed; + z-index: 2; +} +html.minimal #tsd-filter .tsd-filter-group { + right: 0; + transform: none; +} +html.minimal footer { + background-color: transparent; +} +html.minimal footer .container { + padding: 0; +} +html.minimal .tsd-generator { + padding: 0; +} +@media (max-width: 900px) { + html.minimal .tsd-navigation { + display: none; + } + html.minimal .content-wrap { + padding-left: 0; + } +} + +dl.tsd-comment-tags { + overflow: hidden; +} +dl.tsd-comment-tags dt { + float: left; + padding: 1px 5px; + margin: 0 10px 0 0; + border-radius: 4px; + border: 1px solid var(--color-comment-tag); + color: var(--color-comment-tag); + font-size: 0.8em; + font-weight: normal; +} +dl.tsd-comment-tags dd { + margin: 0 0 10px 0; +} +dl.tsd-comment-tags dd:before, dl.tsd-comment-tags dd:after { + display: table; + content: " "; +} +dl.tsd-comment-tags dd pre, dl.tsd-comment-tags dd:after { + clear: both; +} +dl.tsd-comment-tags p { + margin: 0; +} + +.tsd-panel.tsd-comment .lead { + font-size: 1.1em; + line-height: 1.333em; + margin-bottom: 2em; +} +.tsd-panel.tsd-comment .lead:last-child { + margin-bottom: 0; +} + +.toggle-protected .tsd-is-private { + display: none; +} + +.toggle-public .tsd-is-private, +.toggle-public .tsd-is-protected, +.toggle-public .tsd-is-private-protected { + display: none; +} + +.toggle-inherited .tsd-is-inherited { + display: none; +} + +.toggle-externals .tsd-is-external { + display: none; +} + +#tsd-filter { + position: relative; + display: inline-block; + height: 40px; + vertical-align: bottom; +} +.no-filter #tsd-filter { + display: none; +} +#tsd-filter .tsd-filter-group { + display: inline-block; + height: 40px; + vertical-align: bottom; + white-space: nowrap; +} +#tsd-filter input { + display: none; +} +@media (max-width: 900px) { + #tsd-filter .tsd-filter-group { + display: block; + position: absolute; + top: 40px; + right: 20px; + height: auto; + background-color: var(--color-panel); + visibility: hidden; + transform: translate(50%, 0); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + } + .has-options #tsd-filter .tsd-filter-group { + visibility: visible; + } + .to-has-options #tsd-filter .tsd-filter-group { + animation: fade-in 0.2s; + } + .from-has-options #tsd-filter .tsd-filter-group { + animation: fade-out 0.2s; + } + #tsd-filter label, +#tsd-filter .tsd-select { + display: block; + padding-right: 20px; + } +} + +footer { + border-top: 1px solid var(--color-panel-divider); + background-color: var(--color-panel); +} +footer.with-border-bottom { + border-bottom: 1px solid var(--color-panel-divider); +} +footer .tsd-legend-group { + font-size: 0; +} +footer .tsd-legend { + display: inline-block; + width: 25%; + padding: 0; + font-size: 16px; + list-style: none; + line-height: 1.333em; + vertical-align: top; +} +@media (max-width: 900px) { + footer .tsd-legend { + width: 50%; + } +} + +.tsd-hierarchy { + list-style: square; + padding: 0 0 0 20px; + margin: 0; +} +.tsd-hierarchy .target { + font-weight: bold; +} + +.tsd-index-panel .tsd-index-content { + margin-bottom: -30px !important; +} +.tsd-index-panel .tsd-index-section { + margin-bottom: 30px !important; +} +.tsd-index-panel h3 { + margin: 0 -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid var(--color-panel-divider); +} +.tsd-index-panel ul.tsd-index-list { + -webkit-column-count: 3; + -moz-column-count: 3; + -ms-column-count: 3; + -o-column-count: 3; + column-count: 3; + -webkit-column-gap: 20px; + -moz-column-gap: 20px; + -ms-column-gap: 20px; + -o-column-gap: 20px; + column-gap: 20px; + padding: 0; + list-style: none; + line-height: 1.333em; +} +@media (max-width: 900px) { + .tsd-index-panel ul.tsd-index-list { + -webkit-column-count: 1; + -moz-column-count: 1; + -ms-column-count: 1; + -o-column-count: 1; + column-count: 1; + } +} +@media (min-width: 901px) and (max-width: 1024px) { + .tsd-index-panel ul.tsd-index-list { + -webkit-column-count: 2; + -moz-column-count: 2; + -ms-column-count: 2; + -o-column-count: 2; + column-count: 2; + } +} +.tsd-index-panel ul.tsd-index-list li { + -webkit-page-break-inside: avoid; + -moz-page-break-inside: avoid; + -ms-page-break-inside: avoid; + -o-page-break-inside: avoid; + page-break-inside: avoid; +} +.tsd-index-panel a, +.tsd-index-panel .tsd-parent-kind-module a { + color: var(--color-ts); +} +.tsd-index-panel .tsd-parent-kind-interface a { + color: var(--color-ts-interface); +} +.tsd-index-panel .tsd-parent-kind-enum a { + color: var(--color-ts-enum); +} +.tsd-index-panel .tsd-parent-kind-class a { + color: var(--color-ts-class); +} +.tsd-index-panel .tsd-kind-module a { + color: var(--color-ts); +} +.tsd-index-panel .tsd-kind-interface a { + color: var(--color-ts-interface); +} +.tsd-index-panel .tsd-kind-enum a { + color: var(--color-ts-enum); +} +.tsd-index-panel .tsd-kind-class a { + color: var(--color-ts-class); +} +.tsd-index-panel .tsd-is-private a { + color: var(--color-ts-private); +} + +.tsd-flag { + display: inline-block; + padding: 1px 5px; + border-radius: 4px; + color: var(--color-comment-tag-text); + background-color: var(--color-comment-tag); + text-indent: 0; + font-size: 14px; + font-weight: normal; +} + +.tsd-anchor { + position: absolute; + top: -100px; +} + +.tsd-member { + position: relative; +} +.tsd-member .tsd-anchor + h3 { + margin-top: 0; + margin-bottom: 0; + border-bottom: none; +} +.tsd-member a[data-tsd-kind] { + color: var(--color-ts); +} +.tsd-member a[data-tsd-kind=Interface] { + color: var(--color-ts-interface); +} +.tsd-member a[data-tsd-kind=Enum] { + color: var(--color-ts-enum); +} +.tsd-member a[data-tsd-kind=Class] { + color: var(--color-ts-class); +} +.tsd-member a[data-tsd-kind=Private] { + color: var(--color-ts-private); +} + +.tsd-navigation { + margin: 0 0 0 40px; +} +.tsd-navigation a { + display: block; + padding-top: 2px; + padding-bottom: 2px; + border-left: 2px solid transparent; + color: var(--color-text); + text-decoration: none; + transition: border-left-color 0.1s; +} +.tsd-navigation a:hover { + text-decoration: underline; +} +.tsd-navigation ul { + margin: 0; + padding: 0; + list-style: none; +} +.tsd-navigation li { + padding: 0; +} + +.tsd-navigation.primary { + padding-bottom: 40px; +} +.tsd-navigation.primary a { + display: block; + padding-top: 6px; + padding-bottom: 6px; +} +.tsd-navigation.primary ul li a { + padding-left: 5px; +} +.tsd-navigation.primary ul li li a { + padding-left: 25px; +} +.tsd-navigation.primary ul li li li a { + padding-left: 45px; +} +.tsd-navigation.primary ul li li li li a { + padding-left: 65px; +} +.tsd-navigation.primary ul li li li li li a { + padding-left: 85px; +} +.tsd-navigation.primary ul li li li li li li a { + padding-left: 105px; +} +.tsd-navigation.primary > ul { + border-bottom: 1px solid var(--color-panel-divider); +} +.tsd-navigation.primary li { + border-top: 1px solid var(--color-panel-divider); +} +.tsd-navigation.primary li.current > a { + font-weight: bold; +} +.tsd-navigation.primary li.label span { + display: block; + padding: 20px 0 6px 5px; + color: var(--color-menu-label); +} +.tsd-navigation.primary li.globals + li > span, .tsd-navigation.primary li.globals + li > a { + padding-top: 20px; +} + +.tsd-navigation.secondary { + max-height: calc(100vh - 1rem - 40px); + overflow: auto; + position: -webkit-sticky; + position: sticky; + top: calc(.5rem + 40px); + transition: 0.3s; +} +.tsd-navigation.secondary.tsd-navigation--toolbar-hide { + max-height: calc(100vh - 1rem); + top: 0.5rem; +} +.tsd-navigation.secondary ul { + transition: opacity 0.2s; +} +.tsd-navigation.secondary ul li a { + padding-left: 25px; +} +.tsd-navigation.secondary ul li li a { + padding-left: 45px; +} +.tsd-navigation.secondary ul li li li a { + padding-left: 65px; +} +.tsd-navigation.secondary ul li li li li a { + padding-left: 85px; +} +.tsd-navigation.secondary ul li li li li li a { + padding-left: 105px; +} +.tsd-navigation.secondary ul li li li li li li a { + padding-left: 125px; +} +.tsd-navigation.secondary ul.current a { + border-left-color: var(--color-panel-divider); +} +.tsd-navigation.secondary li.focus > a, +.tsd-navigation.secondary ul.current li.focus > a { + border-left-color: var(--color-menu-divider-focus); +} +.tsd-navigation.secondary li.current { + margin-top: 20px; + margin-bottom: 20px; + border-left-color: var(--color-panel-divider); +} +.tsd-navigation.secondary li.current > a { + font-weight: bold; +} + +@media (min-width: 901px) { + .menu-sticky-wrap { + position: static; + } +} + +.tsd-panel { + margin: 20px 0; + padding: 20px; + background-color: var(--color-panel); + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +.tsd-panel:empty { + display: none; +} +.tsd-panel > h1, .tsd-panel > h2, .tsd-panel > h3 { + margin: 1.5em -20px 10px -20px; + padding: 0 20px 10px 20px; + border-bottom: 1px solid var(--color-panel-divider); +} +.tsd-panel > h1.tsd-before-signature, .tsd-panel > h2.tsd-before-signature, .tsd-panel > h3.tsd-before-signature { + margin-bottom: 0; + border-bottom: 0; +} +.tsd-panel table { + display: block; + width: 100%; + overflow: auto; + margin-top: 10px; + word-break: normal; + word-break: keep-all; +} +.tsd-panel table th { + font-weight: bold; +} +.tsd-panel table th, .tsd-panel table td { + padding: 6px 13px; + border: 1px solid #ddd; +} +.tsd-panel table tr { + background-color: #fff; + border-top: 1px solid #ccc; +} +.tsd-panel table tr:nth-child(2n) { + background-color: #f8f8f8; +} + +.tsd-panel-group { + margin: 60px 0; +} +.tsd-panel-group > h1, .tsd-panel-group > h2, .tsd-panel-group > h3 { + padding-left: 20px; + padding-right: 20px; +} + +#tsd-search { + transition: background-color 0.2s; +} +#tsd-search .title { + position: relative; + z-index: 2; +} +#tsd-search .field { + position: absolute; + left: 0; + top: 0; + right: 40px; + height: 40px; +} +#tsd-search .field input { + box-sizing: border-box; + position: relative; + top: -50px; + z-index: 1; + width: 100%; + padding: 0 10px; + opacity: 0; + outline: 0; + border: 0; + background: transparent; + color: var(--color-text); +} +#tsd-search .field label { + position: absolute; + overflow: hidden; + right: -40px; +} +#tsd-search .field input, +#tsd-search .title { + transition: opacity 0.2s; +} +#tsd-search .results { + position: absolute; + visibility: hidden; + top: 40px; + width: 100%; + margin: 0; + padding: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); +} +#tsd-search .results li { + padding: 0 10px; + background-color: var(--color-background); +} +#tsd-search .results li:nth-child(even) { + background-color: var(--color-panel); +} +#tsd-search .results li.state { + display: none; +} +#tsd-search .results li.current, +#tsd-search .results li:hover { + background-color: var(--color-panel-divider); +} +#tsd-search .results a { + display: block; +} +#tsd-search .results a:before { + top: 10px; +} +#tsd-search .results span.parent { + color: var(--color-text-aside); + font-weight: normal; +} +#tsd-search.has-focus { + background-color: var(--color-panel-divider); +} +#tsd-search.has-focus .field input { + top: 0; + opacity: 1; +} +#tsd-search.has-focus .title { + z-index: 0; + opacity: 0; +} +#tsd-search.has-focus .results { + visibility: visible; +} +#tsd-search.loading .results li.state.loading { + display: block; +} +#tsd-search.failure .results li.state.failure { + display: block; +} + +.tsd-signature { + margin: 0 0 1em 0; + padding: 10px; + border: 1px solid var(--color-panel-divider); + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; + font-size: 14px; + overflow-x: auto; +} +.tsd-signature.tsd-kind-icon { + padding-left: 30px; +} +.tsd-signature.tsd-kind-icon:before { + top: 10px; + left: 10px; +} +.tsd-panel > .tsd-signature { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; +} +.tsd-panel > .tsd-signature.tsd-kind-icon { + padding-left: 40px; +} +.tsd-panel > .tsd-signature.tsd-kind-icon:before { + left: 20px; +} + +.tsd-signature-symbol { + color: var(--color-text-aside); + font-weight: normal; +} + +.tsd-signature-type { + font-style: italic; + font-weight: normal; +} + +.tsd-signatures { + padding: 0; + margin: 0 0 1em 0; + border: 1px solid var(--color-panel-divider); +} +.tsd-signatures .tsd-signature { + margin: 0; + border-width: 1px 0 0 0; + transition: background-color 0.1s; +} +.tsd-signatures .tsd-signature:first-child { + border-top-width: 0; +} +.tsd-signatures .tsd-signature.current { + background-color: var(--color-panel-divider); +} +.tsd-signatures.active > .tsd-signature { + cursor: pointer; +} +.tsd-panel > .tsd-signatures { + margin-left: -20px; + margin-right: -20px; + border-width: 1px 0; +} +.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon { + padding-left: 40px; +} +.tsd-panel > .tsd-signatures .tsd-signature.tsd-kind-icon:before { + left: 20px; +} +.tsd-panel > a.anchor + .tsd-signatures { + border-top-width: 0; + margin-top: -20px; +} + +ul.tsd-descriptions { + position: relative; + overflow: hidden; + padding: 0; + list-style: none; +} +ul.tsd-descriptions.active > .tsd-description { + display: none; +} +ul.tsd-descriptions.active > .tsd-description.current { + display: block; +} +ul.tsd-descriptions.active > .tsd-description.fade-in { + animation: fade-in-delayed 0.3s; +} +ul.tsd-descriptions.active > .tsd-description.fade-out { + animation: fade-out-delayed 0.3s; + position: absolute; + display: block; + top: 0; + left: 0; + right: 0; + opacity: 0; + visibility: hidden; +} +ul.tsd-descriptions h4, ul.tsd-descriptions .tsd-index-panel h3, .tsd-index-panel ul.tsd-descriptions h3 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} + +ul.tsd-parameters, +ul.tsd-type-parameters { + list-style: square; + margin: 0; + padding-left: 20px; +} +ul.tsd-parameters > li.tsd-parameter-signature, +ul.tsd-type-parameters > li.tsd-parameter-signature { + list-style: none; + margin-left: -20px; +} +ul.tsd-parameters h5, +ul.tsd-type-parameters h5 { + font-size: 16px; + margin: 1em 0 0.5em 0; +} +ul.tsd-parameters .tsd-comment, +ul.tsd-type-parameters .tsd-comment { + margin-top: -0.5em; +} + +.tsd-sources { + font-size: 14px; + color: var(--color-text-aside); + margin: 0 0 1em 0; +} +.tsd-sources a { + color: var(--color-text-aside); + text-decoration: underline; +} +.tsd-sources ul, .tsd-sources p { + margin: 0 !important; +} +.tsd-sources ul { + list-style: none; + padding: 0; +} + +.tsd-page-toolbar { + position: fixed; + z-index: 1; + top: 0; + left: 0; + width: 100%; + height: 40px; + color: var(--color-toolbar-text); + background: var(--color-toolbar); + border-bottom: 1px solid var(--color-panel-divider); + transition: transform 0.3s linear; + visibility: hidden; +} +.tsd-page-toolbar a { + color: var(--color-toolbar-text); + text-decoration: none; +} +.tsd-page-toolbar a.title { + font-weight: bold; +} +.tsd-page-toolbar a.title:hover { + text-decoration: underline; +} +.tsd-page-toolbar .table-wrap { + display: table; + width: 100%; + height: 40px; +} +.tsd-page-toolbar .table-cell { + display: table-cell; + position: relative; + white-space: nowrap; + line-height: 40px; +} +.tsd-page-toolbar .table-cell:first-child { + width: 100%; +} + +.tsd-page-toolbar--hide { + transform: translateY(-100%); +} + +.tsd-select .tsd-select-list li:before, .tsd-select .tsd-select-label:before, .tsd-widget:before { + content: ""; + display: inline-block; + width: 40px; + height: 40px; + margin: 0 -8px 0 0; + background-image: url(widgets.png); + background-repeat: no-repeat; + text-indent: -1024px; + vertical-align: bottom; +} +@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + .tsd-select .tsd-select-list li:before, .tsd-select .tsd-select-label:before, .tsd-widget:before { + background-image: url(widgets@2x.png); + background-size: 320px 40px; + } +} + +.tsd-widget { + display: inline-block; + overflow: hidden; + opacity: 0.6; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; + visibility: hidden; +} +.tsd-widget:hover { + opacity: 0.8; +} +.tsd-widget.active { + opacity: 1; + background-color: var(--color-panel-divider); +} +.tsd-widget.no-caption { + width: 40px; +} +.tsd-widget.no-caption:before { + margin: 0; +} +.tsd-widget.search:before { + background-position: 0 0; +} +.tsd-widget.menu:before { + background-position: -40px 0; +} +.tsd-widget.options:before { + background-position: -80px 0; +} +.tsd-widget.options, .tsd-widget.menu { + display: none; +} +@media (max-width: 900px) { + .tsd-widget.options, .tsd-widget.menu { + display: inline-block; + } +} +input[type=checkbox] + .tsd-widget:before { + background-position: -120px 0; +} +input[type=checkbox]:checked + .tsd-widget:before { + background-position: -160px 0; +} + +.tsd-select { + position: relative; + display: inline-block; + height: 40px; + transition: opacity 0.1s, background-color 0.2s; + vertical-align: bottom; + cursor: pointer; + visibility: hidden; +} +.tsd-select .tsd-select-label { + opacity: 0.6; + transition: opacity 0.2s; +} +.tsd-select .tsd-select-label:before { + background-position: -240px 0; +} +.tsd-select.active .tsd-select-label { + opacity: 0.8; +} +.tsd-select.active .tsd-select-list { + visibility: visible; + opacity: 1; + transition-delay: 0s; +} +.tsd-select .tsd-select-list { + position: absolute; + visibility: hidden; + top: 40px; + left: 0; + margin: 0; + padding: 0; + opacity: 0; + list-style: none; + box-shadow: 0 0 4px rgba(0, 0, 0, 0.25); + transition: visibility 0s 0.2s, opacity 0.2s; +} +.tsd-select .tsd-select-list li { + padding: 0 20px 0 0; + background-color: var(--color-background); +} +.tsd-select .tsd-select-list li:before { + background-position: 40px 0; +} +.tsd-select .tsd-select-list li:nth-child(even) { + background-color: var(--color-panel); +} +.tsd-select .tsd-select-list li:hover { + background-color: var(--color-panel-divider); +} +.tsd-select .tsd-select-list li.selected:before { + background-position: -200px 0; +} +@media (max-width: 900px) { + .tsd-select .tsd-select-list { + top: 0; + left: auto; + right: 100%; + margin-right: -5px; + } + .tsd-select .tsd-select-label:before { + background-position: -280px 0; + } +} + +img { + max-width: 100%; +} diff --git a/typedoc/assets/typedoc.js b/typedoc/assets/typedoc.js new file mode 100644 index 00000000..dc257a86 --- /dev/null +++ b/typedoc/assets/typedoc.js @@ -0,0 +1,248 @@ +/* + * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). + * This devtool is not neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../node_modules/lunr/lunr.js": +/*!************************************!*\ + !*** ../node_modules/lunr/lunr.js ***! + \************************************/ +/***/ ((module, exports, __webpack_require__) => { + +eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.9\"\n/*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function () {\n return this\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (true) {\n // AMD. Register as an anonymous module.\n !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__))\n } else {}\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n\n\n//# sourceURL=webpack:///../node_modules/lunr/lunr.js?"); + +/***/ }), + +/***/ "./default/assets/css/main.sass": +/*!**************************************!*\ + !*** ./default/assets/css/main.sass ***! + \**************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n// extracted by mini-css-extract-plugin\n\n\n//# sourceURL=webpack:///./default/assets/css/main.sass?"); + +/***/ }), + +/***/ "./default/assets/js/src/bootstrap.ts": +/*!********************************************!*\ + !*** ./default/assets/js/src/bootstrap.ts ***! + \********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _typedoc_Application__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./typedoc/Application */ \"./default/assets/js/src/typedoc/Application.ts\");\n/* harmony import */ var _typedoc_components_MenuHighlight__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./typedoc/components/MenuHighlight */ \"./default/assets/js/src/typedoc/components/MenuHighlight.ts\");\n/* harmony import */ var _typedoc_components_Search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./typedoc/components/Search */ \"./default/assets/js/src/typedoc/components/Search.ts\");\n/* harmony import */ var _typedoc_components_Signature__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./typedoc/components/Signature */ \"./default/assets/js/src/typedoc/components/Signature.ts\");\n/* harmony import */ var _typedoc_components_Toggle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./typedoc/components/Toggle */ \"./default/assets/js/src/typedoc/components/Toggle.ts\");\n/* harmony import */ var _typedoc_components_Filter__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./typedoc/components/Filter */ \"./default/assets/js/src/typedoc/components/Filter.ts\");\n/* harmony import */ var _css_main_sass__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../css/main.sass */ \"./default/assets/css/main.sass\");\n\n\n\n\n\n\n\n(0,_typedoc_components_Search__WEBPACK_IMPORTED_MODULE_2__.initSearch)();\n(0,_typedoc_Application__WEBPACK_IMPORTED_MODULE_0__.registerComponent)(_typedoc_components_MenuHighlight__WEBPACK_IMPORTED_MODULE_1__.MenuHighlight, \".menu-highlight\");\n(0,_typedoc_Application__WEBPACK_IMPORTED_MODULE_0__.registerComponent)(_typedoc_components_Signature__WEBPACK_IMPORTED_MODULE_3__.Signature, \".tsd-signatures\");\n(0,_typedoc_Application__WEBPACK_IMPORTED_MODULE_0__.registerComponent)(_typedoc_components_Toggle__WEBPACK_IMPORTED_MODULE_4__.Toggle, \"a[data-toggle]\");\nif (_typedoc_components_Filter__WEBPACK_IMPORTED_MODULE_5__.Filter.isSupported()) {\n (0,_typedoc_Application__WEBPACK_IMPORTED_MODULE_0__.registerComponent)(_typedoc_components_Filter__WEBPACK_IMPORTED_MODULE_5__.Filter, \"#tsd-filter\");\n}\nelse {\n document.documentElement.classList.add(\"no-filter\");\n}\nvar app = new _typedoc_Application__WEBPACK_IMPORTED_MODULE_0__.Application();\nObject.defineProperty(window, \"app\", { value: app });\n\n\n//# sourceURL=webpack:///./default/assets/js/src/bootstrap.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/Application.ts": +/*!******************************************************!*\ + !*** ./default/assets/js/src/typedoc/Application.ts ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"registerComponent\": () => /* binding */ registerComponent,\n/* harmony export */ \"Application\": () => /* binding */ Application\n/* harmony export */ });\n/**\n * List of all known components.\n */\nvar components = [];\n/**\n * Register a new component.\n */\nfunction registerComponent(constructor, selector) {\n components.push({\n selector: selector,\n constructor: constructor,\n });\n}\n/**\n * TypeDoc application class.\n */\nvar Application = /** @class */ (function () {\n /**\n * Create a new Application instance.\n */\n function Application() {\n this.createComponents(document.body);\n }\n /**\n * Create all components beneath the given jQuery element.\n */\n Application.prototype.createComponents = function (context) {\n components.forEach(function (c) {\n context.querySelectorAll(c.selector).forEach(function (el) {\n if (!el.dataset.hasInstance) {\n new c.constructor({ el: el });\n el.dataset.hasInstance = String(true);\n }\n });\n });\n };\n return Application;\n}());\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/Application.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/Component.ts": +/*!****************************************************!*\ + !*** ./default/assets/js/src/typedoc/Component.ts ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Component\": () => /* binding */ Component\n/* harmony export */ });\n/**\n * TypeDoc component class.\n */\nvar Component = /** @class */ (function () {\n function Component(options) {\n this.el = options.el;\n }\n return Component;\n}());\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/Component.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/EventTarget.ts": +/*!******************************************************!*\ + !*** ./default/assets/js/src/typedoc/EventTarget.ts ***! + \******************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"EventTarget\": () => /* binding */ EventTarget\n/* harmony export */ });\n/**\n * TypeDoc event target class.\n */\nvar EventTarget = /** @class */ (function () {\n function EventTarget() {\n this.listeners = {};\n }\n EventTarget.prototype.addEventListener = function (type, callback) {\n if (!(type in this.listeners)) {\n this.listeners[type] = [];\n }\n this.listeners[type].push(callback);\n };\n EventTarget.prototype.removeEventListener = function (type, callback) {\n if (!(type in this.listeners)) {\n return;\n }\n var stack = this.listeners[type];\n for (var i = 0, l = stack.length; i < l; i++) {\n if (stack[i] === callback) {\n stack.splice(i, 1);\n return;\n }\n }\n };\n EventTarget.prototype.dispatchEvent = function (event) {\n if (!(event.type in this.listeners)) {\n return true;\n }\n var stack = this.listeners[event.type].slice();\n for (var i = 0, l = stack.length; i < l; i++) {\n stack[i].call(this, event);\n }\n return !event.defaultPrevented;\n };\n return EventTarget;\n}());\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/EventTarget.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/components/Filter.ts": +/*!************************************************************!*\ + !*** ./default/assets/js/src/typedoc/components/Filter.ts ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Filter\": () => /* binding */ Filter\n/* harmony export */ });\n/* harmony import */ var _Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Component */ \"./default/assets/js/src/typedoc/Component.ts\");\n/* harmony import */ var _utils_pointer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/pointer */ \"./default/assets/js/src/typedoc/utils/pointer.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\nvar FilterItem = /** @class */ (function () {\n function FilterItem(key, value) {\n this.key = key;\n this.value = value;\n this.defaultValue = value;\n this.initialize();\n if (window.localStorage[this.key]) {\n this.setValue(this.fromLocalStorage(window.localStorage[this.key]));\n }\n }\n FilterItem.prototype.initialize = function () { };\n FilterItem.prototype.setValue = function (value) {\n if (this.value == value)\n return;\n var oldValue = this.value;\n this.value = value;\n window.localStorage[this.key] = this.toLocalStorage(value);\n this.handleValueChange(oldValue, value);\n };\n return FilterItem;\n}());\nvar FilterItemCheckbox = /** @class */ (function (_super) {\n __extends(FilterItemCheckbox, _super);\n function FilterItemCheckbox() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterItemCheckbox.prototype.initialize = function () {\n var _this = this;\n var checkbox = document.querySelector(\"#tsd-filter-\" + this.key);\n if (!checkbox)\n return;\n this.checkbox = checkbox;\n this.checkbox.addEventListener(\"change\", function () {\n _this.setValue(_this.checkbox.checked);\n });\n };\n FilterItemCheckbox.prototype.handleValueChange = function (oldValue, newValue) {\n if (!this.checkbox)\n return;\n this.checkbox.checked = this.value;\n document.documentElement.classList.toggle(\"toggle-\" + this.key, this.value != this.defaultValue);\n };\n FilterItemCheckbox.prototype.fromLocalStorage = function (value) {\n return value == \"true\";\n };\n FilterItemCheckbox.prototype.toLocalStorage = function (value) {\n return value ? \"true\" : \"false\";\n };\n return FilterItemCheckbox;\n}(FilterItem));\nvar FilterItemSelect = /** @class */ (function (_super) {\n __extends(FilterItemSelect, _super);\n function FilterItemSelect() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterItemSelect.prototype.initialize = function () {\n var _this = this;\n document.documentElement.classList.add(\"toggle-\" + this.key + this.value);\n var select = document.querySelector(\"#tsd-filter-\" + this.key);\n if (!select)\n return;\n this.select = select;\n var onActivate = function () {\n _this.select.classList.add(\"active\");\n };\n var onDeactivate = function () {\n _this.select.classList.remove(\"active\");\n };\n this.select.addEventListener(_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.pointerDown, onActivate);\n this.select.addEventListener(\"mouseover\", onActivate);\n this.select.addEventListener(\"mouseleave\", onDeactivate);\n this.select.querySelectorAll(\"li\").forEach(function (el) {\n el.addEventListener(_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.pointerUp, function (e) {\n select.classList.remove(\"active\");\n _this.setValue(e.target.dataset.value || \"\");\n });\n });\n document.addEventListener(_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.pointerDown, function (e) {\n if (_this.select.contains(e.target))\n return;\n _this.select.classList.remove(\"active\");\n });\n };\n FilterItemSelect.prototype.handleValueChange = function (oldValue, newValue) {\n this.select.querySelectorAll(\"li.selected\").forEach(function (el) {\n el.classList.remove(\"selected\");\n });\n var selected = this.select.querySelector('li[data-value=\"' + newValue + '\"]');\n var label = this.select.querySelector(\".tsd-select-label\");\n if (selected && label) {\n selected.classList.add(\"selected\");\n label.textContent = selected.textContent;\n }\n document.documentElement.classList.remove(\"toggle-\" + oldValue);\n document.documentElement.classList.add(\"toggle-\" + newValue);\n };\n FilterItemSelect.prototype.fromLocalStorage = function (value) {\n return value;\n };\n FilterItemSelect.prototype.toLocalStorage = function (value) {\n return value;\n };\n return FilterItemSelect;\n}(FilterItem));\nvar Filter = /** @class */ (function (_super) {\n __extends(Filter, _super);\n function Filter(options) {\n var _this = _super.call(this, options) || this;\n _this.optionVisibility = new FilterItemSelect(\"visibility\", \"private\");\n _this.optionInherited = new FilterItemCheckbox(\"inherited\", true);\n _this.optionExternals = new FilterItemCheckbox(\"externals\", true);\n return _this;\n }\n Filter.isSupported = function () {\n try {\n return typeof window.localStorage != \"undefined\";\n }\n catch (e) {\n return false;\n }\n };\n return Filter;\n}(_Component__WEBPACK_IMPORTED_MODULE_0__.Component));\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/components/Filter.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/components/MenuHighlight.ts": +/*!*******************************************************************!*\ + !*** ./default/assets/js/src/typedoc/components/MenuHighlight.ts ***! + \*******************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"MenuHighlight\": () => /* binding */ MenuHighlight\n/* harmony export */ });\n/* harmony import */ var _Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Component */ \"./default/assets/js/src/typedoc/Component.ts\");\n/* harmony import */ var _services_Viewport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/Viewport */ \"./default/assets/js/src/typedoc/services/Viewport.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * Manages the sticky state of the navigation and moves the highlight\n * to the current navigation item.\n */\nvar MenuHighlight = /** @class */ (function (_super) {\n __extends(MenuHighlight, _super);\n /**\n * Create a new MenuHighlight instance.\n *\n * @param options Backbone view constructor options.\n */\n function MenuHighlight(options) {\n var _this = _super.call(this, options) || this;\n /**\n * List of all discovered anchors.\n */\n _this.anchors = [];\n /**\n * Index of the currently highlighted anchor.\n */\n _this.index = -1;\n _services_Viewport__WEBPACK_IMPORTED_MODULE_1__.Viewport.instance.addEventListener(\"resize\", function () { return _this.onResize(); });\n _services_Viewport__WEBPACK_IMPORTED_MODULE_1__.Viewport.instance.addEventListener(\"scroll\", function (e) { return _this.onScroll(e); });\n _this.createAnchors();\n return _this;\n }\n /**\n * Find all anchors on the current page.\n */\n MenuHighlight.prototype.createAnchors = function () {\n var _this = this;\n var base = window.location.href;\n if (base.indexOf(\"#\") != -1) {\n base = base.substr(0, base.indexOf(\"#\"));\n }\n this.el.querySelectorAll(\"a\").forEach(function (el) {\n var href = el.href;\n if (href.indexOf(\"#\") == -1)\n return;\n if (href.substr(0, base.length) != base)\n return;\n var hash = href.substr(href.indexOf(\"#\") + 1);\n var anchor = document.querySelector(\"a.tsd-anchor[name=\" + hash + \"]\");\n var link = el.parentNode;\n if (!anchor || !link)\n return;\n _this.anchors.push({\n link: link,\n anchor: anchor,\n position: 0,\n });\n });\n this.onResize();\n };\n /**\n * Triggered after the viewport was resized.\n */\n MenuHighlight.prototype.onResize = function () {\n var anchor;\n for (var index = 0, count = this.anchors.length; index < count; index++) {\n anchor = this.anchors[index];\n var rect = anchor.anchor.getBoundingClientRect();\n anchor.position = rect.top + document.body.scrollTop;\n }\n this.anchors.sort(function (a, b) {\n return a.position - b.position;\n });\n var event = new CustomEvent(\"scroll\", {\n detail: {\n scrollTop: _services_Viewport__WEBPACK_IMPORTED_MODULE_1__.Viewport.instance.scrollTop,\n },\n });\n this.onScroll(event);\n };\n /**\n * Triggered after the viewport was scrolled.\n *\n * @param event The custom event with the current vertical scroll position.\n */\n MenuHighlight.prototype.onScroll = function (event) {\n var scrollTop = event.detail.scrollTop + 5;\n var anchors = this.anchors;\n var count = anchors.length - 1;\n var index = this.index;\n while (index > -1 && anchors[index].position > scrollTop) {\n index -= 1;\n }\n while (index < count && anchors[index + 1].position < scrollTop) {\n index += 1;\n }\n if (this.index != index) {\n if (this.index > -1)\n this.anchors[this.index].link.classList.remove(\"focus\");\n this.index = index;\n if (this.index > -1)\n this.anchors[this.index].link.classList.add(\"focus\");\n }\n };\n return MenuHighlight;\n}(_Component__WEBPACK_IMPORTED_MODULE_0__.Component));\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/components/MenuHighlight.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/components/Search.ts": +/*!************************************************************!*\ + !*** ./default/assets/js/src/typedoc/components/Search.ts ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"initSearch\": () => /* binding */ initSearch\n/* harmony export */ });\n/* harmony import */ var _utils_debounce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/debounce */ \"./default/assets/js/src/typedoc/utils/debounce.ts\");\n/* harmony import */ var lunr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lunr */ \"../node_modules/lunr/lunr.js\");\n/* harmony import */ var lunr__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(lunr__WEBPACK_IMPORTED_MODULE_1__);\n\n\nfunction initSearch() {\n var searchEl = document.getElementById(\"tsd-search\");\n if (!searchEl)\n return;\n var searchScript = document.getElementById(\"search-script\");\n searchEl.classList.add(\"loading\");\n if (searchScript) {\n searchScript.addEventListener(\"error\", function () {\n searchEl.classList.remove(\"loading\");\n searchEl.classList.add(\"failure\");\n });\n searchScript.addEventListener(\"load\", function () {\n searchEl.classList.remove(\"loading\");\n searchEl.classList.add(\"ready\");\n });\n if (window.searchData) {\n searchEl.classList.remove(\"loading\");\n }\n }\n var field = document.querySelector(\"#tsd-search-field\");\n var results = document.querySelector(\".results\");\n if (!field || !results) {\n throw new Error(\"The input field or the result list wrapper was not found\");\n }\n var resultClicked = false;\n results.addEventListener(\"mousedown\", function () { return (resultClicked = true); });\n results.addEventListener(\"mouseup\", function () {\n resultClicked = false;\n searchEl.classList.remove(\"has-focus\");\n });\n field.addEventListener(\"focus\", function () { return searchEl.classList.add(\"has-focus\"); });\n field.addEventListener(\"blur\", function () {\n if (!resultClicked) {\n resultClicked = false;\n searchEl.classList.remove(\"has-focus\");\n }\n });\n var state = {\n base: searchEl.dataset.base + \"/\",\n };\n bindEvents(searchEl, results, field, state);\n}\nfunction bindEvents(searchEl, results, field, state) {\n field.addEventListener(\"input\", (0,_utils_debounce__WEBPACK_IMPORTED_MODULE_0__.debounce)(function () {\n updateResults(searchEl, results, field, state);\n }, 200));\n var preventPress = false;\n field.addEventListener(\"keydown\", function (e) {\n preventPress = true;\n if (e.key == \"Enter\") {\n gotoCurrentResult(results, field);\n }\n else if (e.key == \"Escape\") {\n field.blur();\n }\n else if (e.key == \"ArrowUp\") {\n setCurrentResult(results, -1);\n }\n else if (e.key === \"ArrowDown\") {\n setCurrentResult(results, 1);\n }\n else {\n preventPress = false;\n }\n });\n field.addEventListener(\"keypress\", function (e) {\n if (preventPress)\n e.preventDefault();\n });\n /**\n * Start searching by pressing slash.\n */\n document.body.addEventListener(\"keydown\", function (e) {\n if (e.altKey || e.ctrlKey || e.metaKey)\n return;\n if (!field.matches(\":focus\") && e.key === \"/\") {\n field.focus();\n e.preventDefault();\n }\n });\n}\nfunction checkIndex(state, searchEl) {\n if (state.index)\n return;\n if (window.searchData) {\n searchEl.classList.remove(\"loading\");\n searchEl.classList.add(\"ready\");\n state.data = window.searchData;\n state.index = lunr__WEBPACK_IMPORTED_MODULE_1__.Index.load(window.searchData.index);\n }\n}\nfunction updateResults(searchEl, results, query, state) {\n checkIndex(state, searchEl);\n // Don't clear results if loading state is not ready,\n // because loading or error message can be removed.\n if (!state.index || !state.data)\n return;\n results.textContent = \"\";\n var searchText = query.value.trim();\n // Perform a wildcard search\n var res = state.index.search(\"*\" + searchText + \"*\");\n for (var i = 0, c = Math.min(10, res.length); i < c; i++) {\n var row = state.data.rows[Number(res[i].ref)];\n // Bold the matched part of the query in the search results\n var name_1 = boldMatches(row.name, searchText);\n if (row.parent) {\n name_1 = \"\" + boldMatches(row.parent, searchText) + \".\" + name_1;\n }\n var item = document.createElement(\"li\");\n item.classList.value = row.classes;\n var anchor = document.createElement(\"a\");\n anchor.href = state.base + row.url;\n anchor.classList.add(\"tsd-kind-icon\");\n anchor.innerHTML = name_1;\n item.append(anchor);\n results.appendChild(item);\n }\n}\n/**\n * Move the highlight within the result set.\n */\nfunction setCurrentResult(results, dir) {\n var current = results.querySelector(\".current\");\n if (!current) {\n current = results.querySelector(dir == 1 ? \"li:first-child\" : \"li:last-child\");\n if (current) {\n current.classList.add(\"current\");\n }\n }\n else {\n var rel = dir == 1\n ? current.nextElementSibling\n : current.previousElementSibling;\n if (rel) {\n current.classList.remove(\"current\");\n rel.classList.add(\"current\");\n }\n }\n}\n/**\n * Navigate to the highlighted result.\n */\nfunction gotoCurrentResult(results, field) {\n var current = results.querySelector(\".current\");\n if (!current) {\n current = results.querySelector(\"li:first-child\");\n }\n if (current) {\n var link = current.querySelector(\"a\");\n if (link) {\n window.location.href = link.href;\n }\n field.blur();\n }\n}\nfunction boldMatches(text, search) {\n if (search === \"\") {\n return text;\n }\n var lowerText = text.toLocaleLowerCase();\n var lowerSearch = search.toLocaleLowerCase();\n var parts = [];\n var lastIndex = 0;\n var index = lowerText.indexOf(lowerSearch);\n while (index != -1) {\n parts.push(escapeHtml(text.substring(lastIndex, index)), \"\" + escapeHtml(text.substring(index, index + lowerSearch.length)) + \"\");\n lastIndex = index + lowerSearch.length;\n index = lowerText.indexOf(lowerSearch, lastIndex);\n }\n parts.push(escapeHtml(text.substring(lastIndex)));\n return parts.join(\"\");\n}\nvar SPECIAL_HTML = {\n \"&\": \"&\",\n \"<\": \"<\",\n \">\": \">\",\n \"'\": \"'\",\n '\"': \""\",\n};\nfunction escapeHtml(text) {\n return text.replace(/[&<>\"'\"]/g, function (match) { return SPECIAL_HTML[match]; });\n}\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/components/Search.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/components/Signature.ts": +/*!***************************************************************!*\ + !*** ./default/assets/js/src/typedoc/components/Signature.ts ***! + \***************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Signature\": () => /* binding */ Signature\n/* harmony export */ });\n/* harmony import */ var _Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Component */ \"./default/assets/js/src/typedoc/Component.ts\");\n/* harmony import */ var _services_Viewport__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/Viewport */ \"./default/assets/js/src/typedoc/services/Viewport.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * Holds a signature and its description.\n */\nvar SignatureGroup = /** @class */ (function () {\n /**\n * Create a new SignatureGroup instance.\n *\n * @param signature The target signature.\n * @param description The description for the signature.\n */\n function SignatureGroup(signature, description) {\n this.signature = signature;\n this.description = description;\n }\n /**\n * Add the given class to all elements of the group.\n *\n * @param className The class name to add.\n */\n SignatureGroup.prototype.addClass = function (className) {\n this.signature.classList.add(className);\n this.description.classList.add(className);\n return this;\n };\n /**\n * Remove the given class from all elements of the group.\n *\n * @param className The class name to remove.\n */\n SignatureGroup.prototype.removeClass = function (className) {\n this.signature.classList.remove(className);\n this.description.classList.remove(className);\n return this;\n };\n return SignatureGroup;\n}());\n/**\n * Controls the tab like behaviour of methods and functions with multiple signatures.\n */\nvar Signature = /** @class */ (function (_super) {\n __extends(Signature, _super);\n /**\n * Create a new Signature instance.\n *\n * @param options Backbone view constructor options.\n */\n function Signature(options) {\n var _this = _super.call(this, options) || this;\n /**\n * List of found signature groups.\n */\n _this.groups = [];\n /**\n * The index of the currently displayed signature.\n */\n _this.index = -1;\n _this.createGroups();\n if (_this.container) {\n _this.el.classList.add(\"active\");\n Array.from(_this.el.children).forEach(function (signature) {\n signature.addEventListener(\"touchstart\", function (event) {\n return _this.onClick(event);\n });\n signature.addEventListener(\"click\", function (event) {\n return _this.onClick(event);\n });\n });\n _this.container.classList.add(\"active\");\n _this.setIndex(0);\n }\n return _this;\n }\n /**\n * Set the index of the active signature.\n *\n * @param index The index of the signature to activate.\n */\n Signature.prototype.setIndex = function (index) {\n if (index < 0)\n index = 0;\n if (index > this.groups.length - 1)\n index = this.groups.length - 1;\n if (this.index == index)\n return;\n var to = this.groups[index];\n if (this.index > -1) {\n var from_1 = this.groups[this.index];\n from_1.removeClass(\"current\").addClass(\"fade-out\");\n to.addClass(\"current\");\n to.addClass(\"fade-in\");\n _services_Viewport__WEBPACK_IMPORTED_MODULE_1__.Viewport.instance.triggerResize();\n setTimeout(function () {\n from_1.removeClass(\"fade-out\");\n to.removeClass(\"fade-in\");\n }, 300);\n }\n else {\n to.addClass(\"current\");\n _services_Viewport__WEBPACK_IMPORTED_MODULE_1__.Viewport.instance.triggerResize();\n }\n this.index = index;\n };\n /**\n * Find all signature/description groups.\n */\n Signature.prototype.createGroups = function () {\n var signatures = this.el.children;\n if (signatures.length < 2)\n return;\n this.container = this.el.nextElementSibling;\n var descriptions = this.container.children;\n this.groups = [];\n for (var index = 0; index < signatures.length; index++) {\n this.groups.push(new SignatureGroup(signatures[index], descriptions[index]));\n }\n };\n /**\n * Triggered when the user clicks onto a signature header.\n *\n * @param e The related event object.\n */\n Signature.prototype.onClick = function (e) {\n var _this = this;\n this.groups.forEach(function (group, index) {\n if (group.signature === e.currentTarget) {\n _this.setIndex(index);\n }\n });\n };\n return Signature;\n}(_Component__WEBPACK_IMPORTED_MODULE_0__.Component));\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/components/Signature.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/components/Toggle.ts": +/*!************************************************************!*\ + !*** ./default/assets/js/src/typedoc/components/Toggle.ts ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Toggle\": () => /* binding */ Toggle\n/* harmony export */ });\n/* harmony import */ var _Component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Component */ \"./default/assets/js/src/typedoc/Component.ts\");\n/* harmony import */ var _utils_pointer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/pointer */ \"./default/assets/js/src/typedoc/utils/pointer.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\nvar Toggle = /** @class */ (function (_super) {\n __extends(Toggle, _super);\n function Toggle(options) {\n var _this = _super.call(this, options) || this;\n _this.className = _this.el.dataset.toggle || \"\";\n _this.el.addEventListener(_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.pointerUp, function (e) { return _this.onPointerUp(e); });\n _this.el.addEventListener(\"click\", function (e) { return e.preventDefault(); });\n document.addEventListener(_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.pointerDown, function (e) {\n return _this.onDocumentPointerDown(e);\n });\n document.addEventListener(_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.pointerUp, function (e) {\n return _this.onDocumentPointerUp(e);\n });\n return _this;\n }\n Toggle.prototype.setActive = function (value) {\n if (this.active == value)\n return;\n this.active = value;\n document.documentElement.classList.toggle(\"has-\" + this.className, value);\n this.el.classList.toggle(\"active\", value);\n var transition = (this.active ? \"to-has-\" : \"from-has-\") + this.className;\n document.documentElement.classList.add(transition);\n setTimeout(function () { return document.documentElement.classList.remove(transition); }, 500);\n };\n Toggle.prototype.onPointerUp = function (event) {\n if (_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.hasPointerMoved)\n return;\n this.setActive(true);\n event.preventDefault();\n };\n Toggle.prototype.onDocumentPointerDown = function (e) {\n if (this.active) {\n if (e.target.closest(\".col-menu, .tsd-filter-group\")) {\n return;\n }\n this.setActive(false);\n }\n };\n Toggle.prototype.onDocumentPointerUp = function (e) {\n var _this = this;\n if (_utils_pointer__WEBPACK_IMPORTED_MODULE_1__.hasPointerMoved)\n return;\n if (this.active) {\n if (e.target.closest(\".col-menu\")) {\n var link = e.target.closest(\"a\");\n if (link) {\n var href = window.location.href;\n if (href.indexOf(\"#\") != -1) {\n href = href.substr(0, href.indexOf(\"#\"));\n }\n if (link.href.substr(0, href.length) == href) {\n setTimeout(function () { return _this.setActive(false); }, 250);\n }\n }\n }\n }\n };\n return Toggle;\n}(_Component__WEBPACK_IMPORTED_MODULE_0__.Component));\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/components/Toggle.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/services/Viewport.ts": +/*!************************************************************!*\ + !*** ./default/assets/js/src/typedoc/services/Viewport.ts ***! + \************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Viewport\": () => /* binding */ Viewport\n/* harmony export */ });\n/* harmony import */ var _EventTarget__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../EventTarget */ \"./default/assets/js/src/typedoc/EventTarget.ts\");\n/* harmony import */ var _utils_trottle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/trottle */ \"./default/assets/js/src/typedoc/utils/trottle.ts\");\nvar __extends = (undefined && undefined.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n\n\n/**\n * A global service that monitors the window size and scroll position.\n */\nvar Viewport = /** @class */ (function (_super) {\n __extends(Viewport, _super);\n /**\n * Create new Viewport instance.\n */\n function Viewport() {\n var _this = _super.call(this) || this;\n /**\n * The current scroll position.\n */\n _this.scrollTop = 0;\n /**\n * The previous scrollTop.\n */\n _this.lastY = 0;\n /**\n * The width of the window.\n */\n _this.width = 0;\n /**\n * The height of the window.\n */\n _this.height = 0;\n /**\n * Boolean indicating whether the toolbar is shown.\n */\n _this.showToolbar = true;\n _this.toolbar = (document.querySelector(\".tsd-page-toolbar\"));\n _this.secondaryNav = (document.querySelector(\".tsd-navigation.secondary\"));\n window.addEventListener(\"scroll\", (0,_utils_trottle__WEBPACK_IMPORTED_MODULE_1__.throttle)(function () { return _this.onScroll(); }, 10));\n window.addEventListener(\"resize\", (0,_utils_trottle__WEBPACK_IMPORTED_MODULE_1__.throttle)(function () { return _this.onResize(); }, 10));\n _this.onResize();\n _this.onScroll();\n return _this;\n }\n /**\n * Trigger a resize event.\n */\n Viewport.prototype.triggerResize = function () {\n var event = new CustomEvent(\"resize\", {\n detail: {\n width: this.width,\n height: this.height,\n },\n });\n this.dispatchEvent(event);\n };\n /**\n * Triggered when the size of the window has changed.\n */\n Viewport.prototype.onResize = function () {\n this.width = window.innerWidth || 0;\n this.height = window.innerHeight || 0;\n var event = new CustomEvent(\"resize\", {\n detail: {\n width: this.width,\n height: this.height,\n },\n });\n this.dispatchEvent(event);\n };\n /**\n * Triggered when the user scrolled the viewport.\n */\n Viewport.prototype.onScroll = function () {\n this.scrollTop = window.scrollY || 0;\n var event = new CustomEvent(\"scroll\", {\n detail: {\n scrollTop: this.scrollTop,\n },\n });\n this.dispatchEvent(event);\n this.hideShowToolbar();\n };\n /**\n * Handle hiding/showing of the toolbar.\n */\n Viewport.prototype.hideShowToolbar = function () {\n var isShown = this.showToolbar;\n this.showToolbar = this.lastY >= this.scrollTop || this.scrollTop <= 0;\n if (isShown !== this.showToolbar) {\n this.toolbar.classList.toggle(\"tsd-page-toolbar--hide\");\n this.secondaryNav.classList.toggle(\"tsd-navigation--toolbar-hide\");\n }\n this.lastY = this.scrollTop;\n };\n Viewport.instance = new Viewport();\n return Viewport;\n}(_EventTarget__WEBPACK_IMPORTED_MODULE_0__.EventTarget));\n\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/services/Viewport.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/utils/debounce.ts": +/*!*********************************************************!*\ + !*** ./default/assets/js/src/typedoc/utils/debounce.ts ***! + \*********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"debounce\": () => /* binding */ debounce\n/* harmony export */ });\nvar debounce = function (fn, wait) {\n if (wait === void 0) { wait = 100; }\n var timeout;\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n clearTimeout(timeout);\n timeout = setTimeout(function () { return fn(args); }, wait);\n };\n};\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/utils/debounce.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/utils/pointer.ts": +/*!********************************************************!*\ + !*** ./default/assets/js/src/typedoc/utils/pointer.ts ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"pointerDown\": () => /* binding */ pointerDown,\n/* harmony export */ \"pointerMove\": () => /* binding */ pointerMove,\n/* harmony export */ \"pointerUp\": () => /* binding */ pointerUp,\n/* harmony export */ \"pointerDownPosition\": () => /* binding */ pointerDownPosition,\n/* harmony export */ \"preventNextClick\": () => /* binding */ preventNextClick,\n/* harmony export */ \"isPointerDown\": () => /* binding */ isPointerDown,\n/* harmony export */ \"isPointerTouch\": () => /* binding */ isPointerTouch,\n/* harmony export */ \"hasPointerMoved\": () => /* binding */ hasPointerMoved,\n/* harmony export */ \"isMobile\": () => /* binding */ isMobile\n/* harmony export */ });\n/**\n * Event name of the pointer down event.\n */\nvar pointerDown = \"mousedown\";\n/**\n * Event name of the pointer move event.\n */\nvar pointerMove = \"mousemove\";\n/**\n * Event name of the pointer up event.\n */\nvar pointerUp = \"mouseup\";\n/**\n * Position the pointer was pressed at.\n */\nvar pointerDownPosition = { x: 0, y: 0 };\n/**\n * Should the next click on the document be supressed?\n */\nvar preventNextClick = false;\n/**\n * Is the pointer down?\n */\nvar isPointerDown = false;\n/**\n * Is the pointer a touch point?\n */\nvar isPointerTouch = false;\n/**\n * Did the pointer move since the last down event?\n */\nvar hasPointerMoved = false;\n/**\n * Is the user agent a mobile agent?\n */\nvar isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\ndocument.documentElement.classList.add(isMobile ? \"is-mobile\" : \"not-mobile\");\nif (isMobile && \"ontouchstart\" in document.documentElement) {\n isPointerTouch = true;\n pointerDown = \"touchstart\";\n pointerMove = \"touchmove\";\n pointerUp = \"touchend\";\n}\ndocument.addEventListener(pointerDown, function (e) {\n isPointerDown = true;\n hasPointerMoved = false;\n var t = pointerDown == \"touchstart\"\n ? e.targetTouches[0]\n : e;\n pointerDownPosition.y = t.pageY || 0;\n pointerDownPosition.x = t.pageX || 0;\n});\ndocument.addEventListener(pointerMove, function (e) {\n if (!isPointerDown)\n return;\n if (!hasPointerMoved) {\n var t = pointerDown == \"touchstart\"\n ? e.targetTouches[0]\n : e;\n var x = pointerDownPosition.x - (t.pageX || 0);\n var y = pointerDownPosition.y - (t.pageY || 0);\n hasPointerMoved = Math.sqrt(x * x + y * y) > 10;\n }\n});\ndocument.addEventListener(pointerUp, function () {\n isPointerDown = false;\n});\ndocument.addEventListener(\"click\", function (e) {\n if (preventNextClick) {\n e.preventDefault();\n e.stopImmediatePropagation();\n preventNextClick = false;\n }\n});\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/utils/pointer.ts?"); + +/***/ }), + +/***/ "./default/assets/js/src/typedoc/utils/trottle.ts": +/*!********************************************************!*\ + !*** ./default/assets/js/src/typedoc/utils/trottle.ts ***! + \********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"throttle\": () => /* binding */ throttle\n/* harmony export */ });\nvar throttle = function (fn, wait) {\n if (wait === void 0) { wait = 100; }\n var time = Date.now();\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (time + wait - Date.now() < 0) {\n fn.apply(void 0, args);\n time = Date.now();\n }\n };\n};\n\n\n//# sourceURL=webpack:///./default/assets/js/src/typedoc/utils/trottle.ts?"); + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ if(__webpack_module_cache__[moduleId]) { +/******/ return __webpack_module_cache__[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => module['default'] : +/******/ () => module; +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +/******/ // startup +/******/ // Load entry module +/******/ __webpack_require__("./default/assets/js/src/bootstrap.ts"); +/******/ // This entry module used 'exports' so it can't be inlined +/******/ })() +; \ No newline at end of file diff --git a/typedoc/assets/widgets.png b/typedoc/assets/widgets.png new file mode 100644 index 0000000000000000000000000000000000000000..c7380532ac1b45400620011c37c4dcb7aec27a4c GIT binary patch literal 480 zcmeAS@N?(olHy`uVBq!ia0y~yU~~YoH8@y+q^jrZML>b&o-U3d6^w6h1+IPUz|;DW zIZ;96kdsD>Qv^q=09&hp0GpEni<1IR%gvP3v%OR9*{MuRTKWHZyIbuBt)Ci`cU_&% z1T+i^Y)o{%281-<3TpPAUTzw5v;RY=>1rvxmPl96#kYc9hX!6V^nB|ad#(S+)}?8C zr_H+lT3B#So$T=?$(w3-{rbQ4R<@nsf$}$hwSO)A$8&`(j+wQf=Jwhb0`CvhR5DCf z^OgI)KQemrUFPH+UynC$Y~QHG%DbTVh-Skz{enNU)cV_hPu~{TD7TPZl>0&K>iuE| z7AYn$7)Jrb9GE&SfQW4q&G*@N|4cHI`VakFa5-C!ov&XD)J(qp$rJJ*9e z-sHv}#g*T7Cv048d1v~BEAzM5FztAse#q78WWC^BUCzQ U&wLp6h6BX&boFyt=akR{0G%$)mH+?% literal 0 HcmV?d00001 diff --git a/typedoc/assets/widgets@2x.png b/typedoc/assets/widgets@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4bbbd57272f3b28f47527d4951ad10f950b8ad43 GIT binary patch literal 855 zcmeAS@N?(olHy`uVBq!ia0y~yU}^xe12~w0Jcmn z@(X6T|9^jgLcx21{)7exgY)a>N6m2F0<`Rqr;B4q1>>88jUdw-7W`c)zLE*mq8W2H z-<&Jl_Hco5BuC5n@AbF5GD82~-e8-v=#zCyUX0F-o}8pPfAv`!GN$ff+TL<~@kgt} z62eO?_|&+>xBmM$@p|z`tIKEdpPf8%qI>4r7@jn<=eta*{3~?g(zz{Ke9zc-G^gr? z-7foa?LcS!hmbwzru}ICvbWLlW8;+l-}!^=c32!^nV`+`C*;0-*Y%l94pC;Cb3GXz zzSf%a!{gVr{Y_lVuUj+a)*Ca+!-Hu%xmP&&X-2CuANY8^i{D7Kg6qzP zXz_ps9+lN8ESH{K4`yu&b~I>N9xGlE&;2u*b?+Go!AhN?m-bxlLvtC#MzDF2kFzfHJ1W7ybqdefSqVhbOykd*Yi%EDuhs z4wF{ft^bv2+DDnKb8gj1FuvcV`M}luS>lO<^)8x>y1#R;a=-ZKwWTQQb)ioBbi;zh zD!f5V)8581to1LL7c9!l^PSC$NBPYif!_vAZhmL4)v4U)4UsrLYiH_9rmQDd?)(e5 z^pcH>qvBg*i0dus2r*mp4;zKvu=P#s-ti;2obl`NjjwoYd>e(oo#j_uyRb<7Pv^If zzZ|mGHmV)8^tbO%^>eqMw(@7(&3g{jEp-Najo7V75xI_ZHK*FA`elF{r5}E*d7+j_R literal 0 HcmV?d00001 diff --git a/typedoc/classes/human.html b/typedoc/classes/human.html index 542e0217..d0e89d5a 100644 --- a/typedoc/classes/human.html +++ b/typedoc/classes/human.html @@ -6,8 +6,7 @@ Human | @vladmandic/human - - +
@@ -101,6 +100,7 @@
  • detect
  • enhance
  • load
  • +
  • match
  • profileData
  • simmilarity
  • warmup
  • @@ -703,6 +703,46 @@ +
    + +

    match

    +
      +
    • match(faceEmbedding: Number[], db: { embedding: Number[]; name: String; source: undefined | String }[], threshold?: number): { embedding: Number[]; name: String; simmilarity: Number; source: undefined | String }
    • +
    +
      +
    • + +

      Parameters

      +
        +
      • +
        faceEmbedding: Number[]
        +
      • +
      • +
        db: { embedding: Number[]; name: String; source: undefined | String }[]
        +
      • +
      • +
        threshold: number = 0
        +
      • +
      +

      Returns { embedding: Number[]; name: String; simmilarity: Number; source: undefined | String }

      +
        +
      • +
        embedding: Number[]
        +
      • +
      • +
        name: String
        +
      • +
      • +
        simmilarity: Number
        +
      • +
      • +
        source: undefined | String
        +
      • +
      +
    • +
    +

    profileData

    @@ -819,6 +859,9 @@
  • load
  • +
  • + match +
  • profileData
  • @@ -856,6 +899,6 @@
    - + \ No newline at end of file diff --git a/typedoc/index.html b/typedoc/index.html index abbf136f..12612ae1 100644 --- a/typedoc/index.html +++ b/typedoc/index.html @@ -6,8 +6,7 @@ @vladmandic/human - - +
    @@ -468,6 +467,6 @@
    - + \ No newline at end of file diff --git a/types/src/embedding/embedding.d.ts b/types/src/embedding/embedding.d.ts index d6ca2f96..1ae61509 100644 --- a/types/src/embedding/embedding.d.ts +++ b/types/src/embedding/embedding.d.ts @@ -1,4 +1,12 @@ +declare type Tensor = {}; export declare function load(config: any): Promise; -export declare function simmilarity(embedding1: any, embedding2: any, order?: number): number; -export declare function enhance(input: any): any; -export declare function predict(input: any, config: any): Promise; +export declare function simmilarity(embedding1: any, embedding2: any, order?: number): Number; +export declare function match(embedding: Array, db: Array, threshold?: number): { + simmilarity: number; + name: string; + source: string; + embedding: never[]; +}; +export declare function enhance(input: any): Tensor; +export declare function predict(input: any, config: any): Promise; +export {}; diff --git a/types/src/human.d.ts b/types/src/human.d.ts index ce9f40e8..fb56feaa 100644 --- a/types/src/human.d.ts +++ b/types/src/human.d.ts @@ -113,6 +113,16 @@ export declare class Human { } | {}; simmilarity(embedding1: Array, embedding2: Array): Number; enhance(input: Tensor): Tensor | null; + match(faceEmbedding: Array, db: Array<{ + name: String; + source: String | undefined; + embedding: Array; + }>, threshold?: number): { + name: String; + source: String | undefined; + simmilarity: Number; + embedding: Array; + }; load(userConfig?: Object): Promise; detect(input: Tensor | ImageData | HTMLCanvasElement | HTMLVideoElement | OffscreenCanvas, userConfig?: Object): Promise